'=========================================================================== ' Subject: RETURNS KEY(S) PRESSED Date: Unknown Date ' Author: Peter Norton Code: QB, PDS ' Origin: Advanced BASIC Book Packet: KEYBOARD.ABC '=========================================================================== ' Returns the key(s) pressed ' Useful to find value of combined keys ' ie. CTRL+UP = CHR$(0)+CHR$(141) ' CTRL+DOWN = CHR$(0)+CHR$(145) DECLARE FUNCTION InKeyNoEcho$ () TYPE RegType ax AS INTEGER bx AS INTEGER cx AS INTEGER dx AS INTEGER bp AS INTEGER si AS INTEGER di AS INTEGER flags AS INTEGER END TYPE DECLARE SUB INTERRUPT (IntNo AS INTEGER, InRegs AS RegType, OutRegs AS RegType) PRINT "Type a character: " DO TheKey$ = InKeyNoEcho$ LOOP WHILE TheKey$ = "" PRINT "That character was: ", TheKey$ END FUNCTION InKeyNoEcho$ DIM InRegs AS RegType, OutRegs AS RegType InRegs.ax = &H600 InRegs.dx = &HFF CALL INTERRUPT(&H21, InRegs, OutRegs) REM No character ready if zero flag set IF (OutRegs.flags AND 2 ^ 6) THEN InKeyNoEcho$ = "" ELSE IF (OutRegs.ax AND &HFF) <> 0 THEN InKeyNoEcho$ = CHR$(OutRegs.ax AND &HFF) ELSE 'Need one more call InRegs.ax = &H600 InRegs.dx = &HFF CALL INTERRUPT(&H21, InRegs, OutRegs) InKeyNoEcho$ = CHR$(0) + CHR$(OutRegs.ax AND &HFF) END IF END IF END FUNCTION