home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 May / PCW596.iso / polskie / eduk / genfast / demo_05.pak / CARDDRV.SY_ next >
Text File  |  1996-02-08  |  2KB  |  113 lines

  1. ; Odczyt warto₧ci z przykÆadowej karty pomiarowej do zmiennej %B
  2. ; oraz realizacja tablicy 5001 elementów typu WORD (2 bajty)
  3. ; dla EasyGEN (czyli w konwencji jæzyka Pascal: array[0..5000] of word)
  4.  
  5. ; (C) 1995 RangelSoft  Robert Grzegorzewski
  6.  
  7. ; Uwaga ogólna !
  8. ; Rozmiar segmentu danych, na który wskazuje rejestr DS, wynosi 10 KB.
  9.  
  10. ; WywoÆanie:
  11. ; w %A - indeks tablicy (0..5000) lub numer kanaÆu karty (1..16)
  12. ; w %B - warto₧ì do zapisu/odczytu z tablicy (0..65535) lub z karty (0..255)
  13. ; w %C - rodzaj operacji:
  14. ;          0 - odczyt danych z karty (do zmiennej %B)
  15. ;          1 - zapis do tablicy
  16. ;          2 - odczyt z tablicy
  17. ;          3 - zerowanie tablicy
  18. ; w %D - ile ma byì odczytywanych kanaÆów (nawet je₧li chcemy pobraì
  19. ;        dane tylko z jednego kanaÆu, to musimy odczytaì wszystkie,
  20. ;        w zaleºno₧ci od ustawionych parametrów inicjalizacji)
  21.  
  22.  
  23.         push es
  24.         push ax
  25.         push cx
  26.         push dx
  27.  
  28.         cmp cx,=0
  29.         je karta
  30.         cmp cx,=1
  31.         jne et1
  32.  
  33. ; zapis do tablicy
  34.         shl ax,=1
  35.         mov bp,ax
  36.         mov ds:[bp],bx
  37.         jmp return
  38. et1:
  39.         cmp cx,=2
  40.         jne et2
  41.  
  42. ; odczyt z tablicy
  43.         shl ax,=1
  44.         mov bp,ax
  45.         mov bx,ds:[bp]
  46.         jmp return
  47. et2:
  48.         cmp cx,=3
  49.         jne return
  50.  
  51. ; zerowanie tablicy
  52.         push di
  53.         mov cx,=10002
  54.         push ds
  55.         pop es
  56.         xor di,di
  57.         xor al,al
  58.         pushf
  59.         cld
  60.         rep stos(b)
  61.         popf
  62.         pop di
  63.         jmp return
  64.  
  65. ; obsluga karty pomiarowej
  66.  
  67. zapamietaj:
  68.         xor ah,ah
  69.         mov es,ax
  70.         jmp dalej
  71.  
  72. karta:
  73.         cli
  74.  
  75.         mov cx,dx
  76.         mov bp,dx
  77.         sub bp,ax
  78.         inc bp
  79.  
  80. wracaj:
  81.         push cx
  82.  
  83.         mov dx,=$02B8
  84.         mov al,=255
  85.         out dx,al
  86. et3:
  87.         mov dx,=$02BA
  88.         in al,dx
  89.         cmp al,=253
  90.         jne et3
  91.         mov dx,=$02B8
  92.         in al,dx
  93.  
  94.         mov cx,=1000
  95. etrep:
  96.         nop
  97.         loop etrep
  98.  
  99.         pop cx
  100.         cmp cx,bp
  101.         je zapamietaj
  102. dalej:
  103.         loop wracaj
  104.  
  105.         mov bx,es
  106.         sti
  107. return:
  108.         pop dx
  109.         pop cx
  110.         pop ax
  111.         pop es
  112.  
  113.         ret (F)