'=========================================================================== ' Subject: SOUND BLASTER OSCILLISCOPE Date: 04-14-96 (14:48) ' Author: Andrew Jones Code: QB, QBasic, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: SOUND.ABC '=========================================================================== 'And here's my sound blaster oscilliscope. DEFINT A-Z CLS COLOR 9 PRINT "NanoSoft Osci-Trip" COLOR 15 PRINT "Sound Blaster routines by Gary Maddox, obtained from SB-Digest Issue #5" PRINT BPORT = &H210 XPORT = &H216 WPORT = &H21C RPORT = &H21A APORT = &H21E READY = &HAA DO OUT XPORT, 1 FOR t = 0 TO 10 ll! = TIMER DO LOOP WHILE ll! = TIMER NEXT OUT XPORT, 0 loopctr = 0 DO byte = INP(RPORT) loopctr = loopctr + 1 IF byte = &HAA THEN EXIT DO IF loopctr > 100 THEN EXIT DO LOOP IF byte <> &HAA THEN BPORT = BPORT + &H10 XPORT = XPORT + &H10 WPORT = WPORT + &H10 RPORT = RPORT + &H10 APORT = APORT + &H10 END IF IF byte = &HAA THEN EXIT DO IF RPORT = &H270 THEN EXIT DO LOOP IF BPORT = &H270 THEN PRINT "Sound Blaster Not Found!" STOP ELSE PRINT "Sound Blaster Installed at Port:"; HEX$(BPORT) END IF PRINT "Press a key, press escape to quit." DO LOOP UNTIL LEN(INKEY$) SCREEN 13 ext = FALSE FOR t = 0 TO 199 LINE (0, t)-(319, t), t NEXT FOR x = 0 TO 319 STEP 40 FOR y = 0 TO 199 STEP 40 FOR v = 0 TO 20 CIRCLE (x + 20, y + 20), v, 200 - (v + y) CIRCLE (x + 21, y + 20), v, 200 - (v + y) NEXT NEXT NEXT DO OUT &H3C8, 1 FOR t = 1 TO 200 STEP 10 OUT WPORT, &H20 byte = INP(RPORT) FOR x = 0 TO 10 OUT &H3C9, byte + (x * 6) OUT &H3C9, (byte + (x * 6)) \ 2 OUT &H3C9, (byte + (x * 6)) \ 4 NEXT NEXT IF INKEY$ = CHR$(27) THEN ext = 1 'lastbyte = byte LOOP UNTIL ext SCREEN 0 WIDTH 80 CLS PRINT "Bye." END