DEFINITION MODULE HARDWARE;
VAR fire:BOOLEAN;jsbyte:BITSET;
    direction:SHORTCARD;
PROCEDURE JOYSTICK(n:SHORTCARD):BOOLEAN;
PROCEDURE In(P:CARDINAL):SHORTCARD;
PROCEDURE Out(P:CARDINAL;X:SHORTCARD);
PROCEDURE KEYSCAN;
PROCEDURE LOCK;
PROCEDURE UNLOCK;
PROCEDURE SETINTR(IP:PROC);
PROCEDURE IM1;
PROCEDURE WAITINT;
PROCEDURE EI;
PROCEDURE DI;
PROCEDURE TESTRES(B:BOOLEAN):BOOLEAN;
END HARDWARE.
IMPLEMENTATION MODULE HARDWARE;
PROCEDURE In(P:CARDINAL):SHORTCARD;
HEX 44 4D ED 78 C9 END In;
PROCEDURE Out(P:CARDINAL;X:SHORTCARD);
HEX E1 3B F1 C1 C5 3B ED 79 E9 END Out;
PROCEDURE KEYSCAN;
HEX FF C9 END KEYSCAN;
 
VAR ICOUNT:CARDINAL;
    IVSTO:PROC;
VAR [0BCFFH] IVECTOR:PROC;

PROCEDURE SETINTR(IP:PROC);HEX
ED 56 22 (@IVECTOR) ED 5E FB C9 END SETINTR;

 
PROCEDURE IDUM;HEX
E5 2A (@ICOUNT) 23 22 (@ICOUNT) E1 C9 END IDUM;
 
PROCEDURE LOCK;
BEGIN
ICOUNT:=0;IVSTO:=IVECTOR;IVECTOR:=IDUM
END LOCK;
 
PROCEDURE UNLOCK;HEX
2A (@IVSTO) 22 (@IVECTOR) EB 2A (@ICOUNT) 7C B5 C8 2B 22 (@ICOUNT)
   21 (@IDUM) 22 (@IVECTOR) EB CD 2C 16 18 E6 END UNLOCK;
 
PROCEDURE TESTRES(B:BOOLEAN):BOOLEAN;
HEX CB 3E C9 END TESTRES;
 
PROCEDURE EI;HEX FB C9 END EI;
PROCEDURE DI;HEX F3 C9 END DI;
PROCEDURE IM1;HEX ED 56 C9 END IM1;
PROCEDURE WAITINT;HEX FB 76 C9 END WAITINT;
 
PROCEDURE JOYSTICK(n:SHORTCARD):BOOLEAN;HEX
CB 1F 28 1D 30 0C DB FE 1F 1F CB 11 C6 80 06 04
18 08 3E F7 DB FE 06 05 2F 1F CB 11 10 FB 79 18
25 30 06 3E EF DB FE 18 1C 3E EF DB FE 0F 0F E6
07 0F 30 02 CB D7 47 3E 7F DB FE 0F CB 10 3E F7
DB FE E6 10 B0 2F E6 1F 32 (@jsbyte) 47 E6 01 32 (@fire)
   78 1F 47 E6 03 FE 02 38 03 C0 3E FF 4F 78 E6
0C 79 28 0A E8 CB 50 28 07 2F C6 05 18 02 87 C8
E6 07 32 (@direction) 37 C9 END JOYSTICK;
 
END HARDWARE.
