home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol021 / inport.src < prev    next >
Encoding:
Text File  |  1984-04-29  |  960 b   |  37 lines

  1. ;ROUTINE TO DO DIRECT I/O FROM A PORT
  2. ;EXTERNAL MODULE FOR PASCAL/Z VERS 3.0
  3. ;
  4. ;DEFINE THE FOLLOWING TYPE IN YOUR PROGRAM:
  5. ;
  6. ;    TYPE    BYTE = 0..255;
  7. ;
  8. ;CALL AS:
  9. ;
  10. ;    PROCEDURE INPORT(PORT : BYTE; VAR VALUE : BYTE); EXTERNAL;
  11. ;
  12. PORT:    EQU    11    ;---LOW BYTE OF PORT NUMBER
  13. HADDR:    EQU    10    ;---HIGH BYTE OF INPUT VALUE ADDR
  14. LADDR:    EQU     9    ;---LOW BYTE OF INPUT VALUE ADDR
  15. LENGTH: EQU     8    ;---LENGTH OF CALL-BY-REF INTEGER
  16.  
  17.     NAME    INPORT
  18.  
  19.     ENTRY    INPORT        ;---FOR LINKER
  20.  
  21. INPORT:
  22.     ENTR    D,2,0        ;---NO LOCAL STORAGE
  23.     MOV    C,PORT(IX)    ;---C := INPUT PORT
  24.     INP    B        ;---INPUT THE VALUE FROM THE PORT
  25.     MOV    H,HADDR(IX)    ;---GET HIGH BYTE OF ADDRESS
  26.     MOV    L,LADDR(IX)    ;---GET LOW BYTE OF ADDRESS
  27.     MOV    A,LENGTH(IX)    ;---GET SIZE
  28.     CPI    2        ;---CHECK FOR 2 BYTE INTEGER
  29.     JRNZ    NOPE        ;---NO, 1 BYTE INTEGER
  30.     MVI    M,0        ;---YES, CLEAR HIGH BYTE
  31.     DCX    H        ;---POINT TO LOW BYTE
  32. NOPE:    MOV    M,B        ;---STORE LOW (ONLY) BYTE
  33.     EXIT    D,4        ;---DONE, 4 BYTES OF PARAMETERS
  34. ;
  35. ;
  36. ;
  37.