home *** CD-ROM | disk | FTP | other *** search
- ;ROUTINE TO DO DIRECT I/O FROM A PORT
- ;EXTERNAL MODULE FOR PASCAL/Z VERS 3.0
- ;
- ;DEFINE THE FOLLOWING TYPE IN YOUR PROGRAM:
- ;
- ; TYPE BYTE = 0..255;
- ;
- ;CALL AS:
- ;
- ; PROCEDURE INPORT(PORT : BYTE; VAR VALUE : BYTE); EXTERNAL;
- ;
- PORT: EQU 11 ;---LOW BYTE OF PORT NUMBER
- HADDR: EQU 10 ;---HIGH BYTE OF INPUT VALUE ADDR
- LADDR: EQU 9 ;---LOW BYTE OF INPUT VALUE ADDR
- LENGTH: EQU 8 ;---LENGTH OF CALL-BY-REF INTEGER
-
- NAME INPORT
-
- ENTRY INPORT ;---FOR LINKER
-
- INPORT:
- ENTR D,2,0 ;---NO LOCAL STORAGE
- MOV C,PORT(IX) ;---C := INPUT PORT
- INP B ;---INPUT THE VALUE FROM THE PORT
- MOV H,HADDR(IX) ;---GET HIGH BYTE OF ADDRESS
- MOV L,LADDR(IX) ;---GET LOW BYTE OF ADDRESS
- MOV A,LENGTH(IX) ;---GET SIZE
- CPI 2 ;---CHECK FOR 2 BYTE INTEGER
- JRNZ NOPE ;---NO, 1 BYTE INTEGER
- MVI M,0 ;---YES, CLEAR HIGH BYTE
- DCX H ;---POINT TO LOW BYTE
- NOPE: MOV M,B ;---STORE LOW (ONLY) BYTE
- EXIT D,4 ;---DONE, 4 BYTES OF PARAMETERS
- ;
- ;
- ;
-