di2536l2.txt ;*************************************************************************************************** ; LISTING 2 - DISPLAY PROGRAM FOR SAMPLED WAVEFORMS ; ; "Use a PC to record four-channel waveforms," EDN, May 25, 2000, pg 116 ; ; http://www.ednmag.com/ednmag/reg/2000/052500/designideas.htm#11di3 ;*************************************************************************************************** KEY 20, CHR$(0) + CHR$(72): ON KEY(20) GOSUB UpLine KEY 21, CHR$(0) + CHR$(80): ON KEY(21) GOSUB DownLine KEY 15, CHR$(0) + CHR$(73): ON KEY(15) GOSUB UpPage KEY 16, CHR$(0) + CHR$(81): ON KEY(16) GOSUB DownPage KEY 22, CHR$(0) + CHR$(75): ON KEY(22) GOSUB Left KEY 23, CHR$(0) + CHR$(77): ON KEY(23) GOSUB Right KEY 17, CHR$(0) + CHR$(1): ON KEY(17) GOSUB Finish SCREEN 12 DIM chr AS STRING * 1 DIM prv(3) AS INTEGER DIM ptr AS LONG OPEN "samsig.dat" FOR BINARY AS #1 GET #1, 1, chr: lo% = ASC(chr) MOD 16 FOR k% = 0 TO 3 prv(k%) = lo% MOD 2: lo% = lo% \ 2 NEXT k% d% = 12: dd% = 16: fl% = 0: ptr = 0 KEY(17) ON WHILE fl% = 0 KEY(15) ON: KEY(16) ON: KEY(20) ON KEY(21) ON: KEY(22) ON: KEY(23) ON LOCATE 1, 36: PRINT ptr FOR i% = 0 TO 255: FOR j% = 0 TO 128: NEXT j% NEXT i% KEY(15) STOP: KEY(16) STOP: KEY(20) STOP KEY(21) STOP: KEY(22) STOP: KEY(23) STOP FOR i% = 0 TO 4 y% = i% * 96 + 32 FOR j% = 1 TO 320 GET #1, ptr + j% + i% * 320, chr lo% = ASC(chr) MOD 16: hi% = ASC(chr) \ 16 x% = 2 * j% FOR k% = 0 TO 3 IF prv(k%) <> lo% MOD 2 THEN LINE (x%, y% + k% * dd%)-(x%, y% + k% * dd% + d%) ELSE IF (lo% MOD 2) THEN PSET (x%, y% + k% * dd%) ELSE PSET (x%, y% + k% * dd% + d%) END IF END IF prv(k%) = lo% MOD 2: lo% = lo% \ 2 NEXT k% x% = x% + 1 FOR k% = 0 TO 3 IF prv(k%) <> hi% MOD 2 THEN LINE (x%, y% + k% * dd%)-(x%, y% + k% * dd% + d%) ELSE IF (hi% MOD 2) THEN PSET (x%, y% + k% * dd%) ELSE PSET (x%, y% + k% * dd% + d%) END IF END IF prv(k%) = hi% MOD 2: hi% = hi% \ 2 NEXT k% NEXT j% NEXT i% WEND KEY(15) OFF: KEY(16) OFF: KEY(20) OFF KEY(21) OFF: KEY(22) OFF: KEY(23) OFF CLOSE #1 END UpLine: IF ptr < 61120 THEN CLS 1: ptr = ptr + 320 END IF RETURN Left: IF ptr < 61440 THEN CLS 1: ptr = ptr + 1 END IF RETURN UpPage: IF ptr < 59840 THEN CLS 1: ptr = ptr + 1600 END IF RETURN DownLine: IF ptr >= 320 THEN CLS 1: ptr = ptr - 320 END IF RETURN Right: IF ptr >= 1 THEN CLS 1: ptr = ptr - 1 END IF RETURN DownPage: IF ptr >= 1600 THEN CLS 1: ptr = ptr - 1600 END IF RETURN Finish: fl% = 1 RETURN