home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / ASM / GRDBDL17.ZIP / INOUT.ASM < prev    next >
Encoding:
Assembly Source File  |  1998-10-26  |  1.6 KB  |  128 lines

  1. ;
  2. ; GRDP
  3. ;
  4. ; Copyright(c) LADsoft
  5. ;
  6. ; David Lindauer, camille@bluegrass.net
  7. ;
  8. ;
  9. ; INOUT.ASM
  10. ;
  11. ; Function: Handle I,O commands
  12. ;
  13.     ;MASM MODE
  14.     .MODEL SMALL
  15.     .386
  16.  
  17.  
  18. include  eprints.inc 
  19. include  einput.inc 
  20. include  emtrap.inc 
  21. include  ebreaks.inc 
  22.  
  23.     PUBLIC doin,doout
  24.  
  25.     .CODE
  26. ;
  27. ; get the size
  28. ;
  29. iosize    proc
  30.     sub    cx,cx
  31.     lodsb
  32.     cmp    al,13
  33.     jz    szerr
  34.     cmp    al,'b'
  35.     jz    gotsize
  36.     inc    cx
  37.     cmp    al,'w'
  38.     jz    gotsize
  39.     inc    cx
  40.     cmp    al,'d'
  41.     jz    gotsize
  42.     dec    si
  43.     sub    cx,cx
  44. gotsize:
  45.     shl    cx,1
  46.     clc
  47.     ret
  48. szerr:
  49.     dec    si
  50.     stc
  51.     ret
  52. iosize endp
  53. ;
  54. ; Read from a port
  55. ;
  56. doin    PROC    
  57.     call    iosize
  58.     jc    inerr
  59.     Call    WadeSpace    ; Wade till address
  60.     jz    inerr
  61.     call    ReadNumber
  62.     jc    inerr
  63.     mov    edx,eax
  64.     call    WadeSpace
  65.     jnz    inerr
  66.     mov    bx,cx
  67.     jmp    word ptr [bx+intab]
  68. intab    dw    offset inbyte, offset inword, offset indword
  69. inbyte:
  70.     call    crlf
  71.     in    al,dx
  72.           call    printbyte    ; Print data
  73.     clc
  74.     ret
  75. inword:
  76.     call    crlf
  77.     in    ax,dx
  78.           call    printword    ; Print data
  79.     clc
  80.     ret
  81. indword:
  82.     call    crlf
  83.     in    eax,dx
  84.           call    printdword    ; Print data
  85.     clc
  86.     ret
  87. inerr:
  88.     stc
  89.     ret
  90. doin    ENDP
  91. ;
  92. ; Write to a port
  93. ;
  94. doout    PROC
  95.     call    iosize
  96.     jc    outerr
  97.     Call    WadeSpace    ; Wade till address
  98.     jz    outerr
  99.     call    ReadNumber
  100.     jc    outerr
  101.     mov    dx,ax
  102.     call    WadeSpace
  103.     jz    outerr
  104.     call    ReadNumber
  105.     jc    outerr
  106.     mov    ebx,eax
  107.     call    WadeSpace
  108.     jnz    outerr
  109.     mov    eax,ebx
  110.     mov    bx,cx
  111.     jmp    [bx + outtab]
  112. outtab    dw    offset outbyte,offset outword, offset outdword
  113. outbyte:
  114.     out    dx,al
  115.     clc
  116.     ret
  117. outword:
  118.     out    dx,ax
  119.     clc
  120.     ret
  121. outdword:
  122.     out    dx,eax
  123.     clc
  124.     ret
  125. outerr:
  126.     ret
  127. doout    ENDP
  128. end