'===========================================================================
' Subject: READING GAME PORT INPUTS           Date: 10-01-97 (19:34)       
'  Author: David Rose                         Code: PB                     
'  Origin: drose@awav.net                   Packet: PB.ABC
'===========================================================================
'Code by David Rose. drose@awav.net

'I wrote this for simple data acquisition back when
'I was writing code with PoweBasic.

 %AX=1:%BX=2:%CX=3:%DX=4  'Equates

 COLOR 14,9:CLS
 LOCATE 2,2:PRINT"Esc to EXIT"
 LOCATE 2,28:PRINT"Reading Game Port Inputs"


 DO
    REG %AX,&H8400   'Load 84h in AH
    REG %DX,&H0000   'Load 00h in DL

    CALL INTERRUPT &H15

    AL% = REG(%AX) AND &HFF 'Return AL

    LOCATE  8,6:PRINT"#1 Digital Input ÄÄ"+chr$(26)
    LOCATE  9,6:PRINT"#2 Digital Input ÄÄ"+chr$(26)
    LOCATE 10,6:PRINT"#3 Digital Input ÄÄ"+chr$(26)
    LOCATE 11,6:PRINT"#4 Digital Input ÄÄ"+chr$(26)


 IF BIT(AL%,4) THEN LOCATE  8,28:PRINT"Open  "ELSE LOCATE  8,28:PRINT"Closed"
 IF BIT(AL%,5) THEN LOCATE  9,28:PRINT"Open  "ELSE LOCATE  9,28:PRINT"Closed"
 IF BIT(AL%,6) THEN LOCATE 10,28:PRINT"Open  "ELSE LOCATE 10,28:PRINT"Closed"
 IF BIT(AL%,7) THEN LOCATE 11,28:PRINT"Open  "ELSE LOCATE 11,28:PRINT"Closed"

    REG %AX,&H8400   'Load 84h in AH
    REG %DX,&H0001   'Load 01h in DL

    CALL INTERRUPT &H15

    AX%=REG(%AX)\10
    BX%=REG(%BX)\10
    CX%=REG(%CX)\10
    DX%=REG(%DX)\10

    LOCATE 14,6:PRINT "#1  Analog Input ÄÄ"+chr$(26)" "AX%
    LOCATE 15,6:PRINT "#2  Analog Input ÄÄ"+chr$(26)" "BX%
    LOCATE 16,6:PRINT "#3  Analog Input ÄÄ"+chr$(26)" "CX%
    LOCATE 17,6:PRINT "#4  Analog Input ÄÄ"+chr$(26)" "DX%

 LOOP UNTIL INKEY$=CHR$(27)
