'----------------------------------------------------------------------------- ' Sample1.BAS ' ' Sample program demonstrating register level access ' of input data. ' ' Last modified: 06/29/95. ' Compiled under Quick BASIC v4.5 '----------------------------------------------------------------------------- DECLARE FUNCTION AskForBaseAddress () DECLARE FUNCTION AskForPortNumber (PND$) DECLARE FUNCTION AskForOutputValue (OVD$) REM Intro CLS DONE = 0 d1 = 0: d2 = 0: d3 = 0 REM Intro PRINT "Sample 2 " PRINT PRINT "Demonstration program for writing output." PRINT "Program writes to any of the 8-bit output channels" PRINT REM Main BaseA = AskForBaseAddress PND1$ = "0" OVD1$ = "0" WHILE DONE = 0 PortN = AskForPortNumber(PND1$) OutputV = AskForOutputValue(OVD1$) REM Execution PRINT PRINT "Writing value "; HEX$(OutputV); " to port "; PortN OUT BaseA + PortN, OutputV REM Quit PRINT PRINT "Enter 'Q' to quit, any other key to write another value." WHILE Q$ = "" Q$ = INKEY$ WEND 'Quit loop IF Q$ = "Q" OR Q$ = "q" THEN DONE = 1 IF Q$ <> "Q" OR Q$ <> "q" THEN d2 = 0: d3 = 0: Q$ = "" WEND 'DONE loop FUNCTION AskForBaseAddress PRINT "Please enter the Base Address (100-3F8) for your card (in hex) or press" PRINT "ENTER for 300." WHILE d1 = 0 LOCATE 8, 1: PRINT "> " LOCATE 8, 2: LINE INPUT BA$ IF BA$ = "" THEN BA$ = "300": LOCATE 8, 2: PRINT "300" BA$ = "&H" + BA$ BA = VAL(BA$) BA2$ = "&H" + HEX$(BA) IF BA$ = BA2$ AND BA >= &H100 AND BA <= &H3F8 THEN d1 = 1 WEND AskForBaseAddress = BA END FUNCTION FUNCTION AskForOutputValue (OVD$) PRINT PRINT "Please enter the Output Value (0-FF) in hex or press ENTER for "; OVD$; " " WHILE d3 = 0 LOCATE 14, 1: PRINT "> " LOCATE 14, 2: LINE INPUT OV$ IF OV$ = "" THEN OV$ = OVD$: LOCATE 14, 2: PRINT OVD$ OV1$ = "&H" + OV$ OV = VAL(OV1$) OV2$ = "&H" + HEX$(OV) IF OV1$ = OV2$ AND OV >= &H0 AND OV <= &HFF THEN d3 = 1 WEND OVD$ = OV$ 'setting default AskForOutputValue = OV END FUNCTION FUNCTION AskForPortNumber (PND$) LOCATE 9, 1: PRINT PRINT "Please enter the Port Number (0-5) or press ENTER for "; PND$ WHILE d2 = 0 LOCATE 11, 1: PRINT "> " LOCATE 11, 2: LINE INPUT PN$ IF PN$ = "" THEN PN$ = PND$: LOCATE 11, 2: PRINT PND$ PN = VAL(PN$) PN2$ = HEX$(PN) IF (PN$ = PN2$) AND (PN >= 0) AND (PN <= 5) THEN d2 = 1 WEND PND$ = PN$ 'setting default AskForPortNumber = PN END FUNCTION