home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CASM.ARJ / PORT.ASM < prev    next >
Assembly Source File  |  1988-01-24  |  2KB  |  90 lines

  1. ;_ port.asm   Sun Jan 24 1988   Modified by: Walter Bright */
  2. ; Copyright (C) 1985-1988 by Northwest Software
  3. ; All Rights Reserved
  4. ; Joe Huffman 10/28/85
  5. ; I/O port functions for Datalight 'c' compiler.
  6.  
  7.         include macros.asm
  8.  
  9.         begcode    port
  10.  
  11. ;;;;;;;;;;;;;;;;;;;;;;;;;
  12. ; Read from I/O port.
  13. ; Use:
  14. ;    int inp(portnumber)
  15. ;    unsigned portnumber;
  16. ; Returns:
  17. ;    byte read from I/O port with high byte cleared
  18.  
  19.     c_public inp
  20. func    inp
  21.     push    BP
  22.     mov    BP,SP
  23.         mov     DX,P[BP]        ; The port number.
  24.         in      AL,DX
  25.         xor     AH,AH           ; Clear the upper byte.
  26.     pop    BP
  27.         ret
  28. c_endp    inp
  29.  
  30. ;;;;;;;;;;;;;;;;;;;;;;;;;
  31. ; Read from I/O port.
  32. ; Use:
  33. ;    int inpw(portnumber)
  34. ;    unsigned portnumber;
  35. ; Returns:
  36. ;    word read from I/O port
  37.  
  38.     c_public inpw
  39. func    inpw
  40.     push    BP
  41.     mov    BP,SP
  42.         mov     DX,P[BP]    ; The port number.
  43.         in      AX,DX           ; Done.
  44.     pop    BP
  45.         ret
  46. c_endp    inpw
  47.  
  48. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  49. ; Output byte to I/O port.
  50. ; Use:
  51. ;    int outp(portnumber,byte)
  52. ;    unsigned portnumber,byte;
  53. ; Returns:
  54. ;    byte
  55.  
  56.     c_public outp
  57. func    outp 
  58.     push    BP
  59.     mov    BP,SP
  60.         mov     AX,P+2[BP]
  61.         mov     DX,P[BP]
  62.         out     DX,AL
  63.     pop    BP
  64.         ret
  65. c_endp    outp
  66.  
  67. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  68. ; Output word to I/O port.
  69. ; Use:
  70. ;    int outpw(portnumber,word)
  71. ;    unsigned portnumber,word;
  72. ; Returns:
  73. ;    byte
  74.  
  75.     c_public outpw
  76. func    outpw
  77.     push    BP
  78.     mov    BP,SP
  79.         mov     AX,P+2[BP]
  80.         mov     DX,P[BP]
  81.         out     DX,AX
  82.     pop    BP
  83.         ret
  84. c_endp    outpw
  85.  
  86.     endcode    port
  87.  
  88.         end
  89.  
  90.