home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1996 May
/
PCW596.iso
/
polskie
/
eduk
/
genfast
/
genfast.lzh
/
DEMO_05.PAK
/
CARDDRV.SY_
next >
Wrap
Text File
|
1996-02-08
|
2KB
|
113 lines
; Odczyt warto₧ci z przykÆadowej karty pomiarowej do zmiennej %B
; oraz realizacja tablicy 5001 elementów typu WORD (2 bajty)
; dla EasyGEN (czyli w konwencji jæzyka Pascal: array[0..5000] of word)
; (C) 1995 RangelSoft Robert Grzegorzewski
; Uwaga ogólna !
; Rozmiar segmentu danych, na który wskazuje rejestr DS, wynosi 10 KB.
; WywoÆanie:
; w %A - indeks tablicy (0..5000) lub numer kanaÆu karty (1..16)
; w %B - warto₧ì do zapisu/odczytu z tablicy (0..65535) lub z karty (0..255)
; w %C - rodzaj operacji:
; 0 - odczyt danych z karty (do zmiennej %B)
; 1 - zapis do tablicy
; 2 - odczyt z tablicy
; 3 - zerowanie tablicy
; w %D - ile ma byì odczytywanych kanaÆów (nawet je₧li chcemy pobraì
; dane tylko z jednego kanaÆu, to musimy odczytaì wszystkie,
; w zaleºno₧ci od ustawionych parametrów inicjalizacji)
push es
push ax
push cx
push dx
cmp cx,=0
je karta
cmp cx,=1
jne et1
; zapis do tablicy
shl ax,=1
mov bp,ax
mov ds:[bp],bx
jmp return
et1:
cmp cx,=2
jne et2
; odczyt z tablicy
shl ax,=1
mov bp,ax
mov bx,ds:[bp]
jmp return
et2:
cmp cx,=3
jne return
; zerowanie tablicy
push di
mov cx,=10002
push ds
pop es
xor di,di
xor al,al
pushf
cld
rep stos(b)
popf
pop di
jmp return
; obsluga karty pomiarowej
zapamietaj:
xor ah,ah
mov es,ax
jmp dalej
karta:
cli
mov cx,dx
mov bp,dx
sub bp,ax
inc bp
wracaj:
push cx
mov dx,=$02B8
mov al,=255
out dx,al
et3:
mov dx,=$02BA
in al,dx
cmp al,=253
jne et3
mov dx,=$02B8
in al,dx
mov cx,=1000
etrep:
nop
loop etrep
pop cx
cmp cx,bp
je zapamietaj
dalej:
loop wracaj
mov bx,es
sti
return:
pop dx
pop cx
pop ax
pop es
ret (F)