' Svjatoslav Agejenko 2003.03 ' light pen test DECLARE SUB miniscan (x1%, y1%, xn%, yn%) DECLARE SUB getxy (x%, y%) DECLARE SUB scan (x%, y%) DECLARE SUB start () DEFINT A-Z DIM SHARED prt, prt2 DIM SHARED wai, wai2 DIM SHARED mins, minl wai = 4000 wai2 = 5000 mins = 20 minl = 8 DIM SHARED px(1 TO 500) DIM SHARED py(1 TO 500) DIM SHARED mitup mitup = 1 start x = 160 y = 100 px(1) = x py(1) = y 1 getxy x, y REM CIRCLE (x, y), 30, 14 IF (px(mitup) <> x) OR py(mitup) <> y THEN mitup = mitup + 1 px(mitup) = x py(mitup) = y FOR a = 1 TO mitup - 1 LINE (px(a), py(a))-(px(a + 1), py(a + 1)), 15 NEXT a GOTO 1 SUB getxy (x, y) miniscan x + (mins / 4), y + (mins / 4), xn, yn IF xn <> -1 THEN x = xn IF yn <> -1 THEN y = yn LOCATE 1, 1 PRINT SPACE$(40) LOCATE 1, 1 PRINT x, y END SUB SUB miniscan (x1, y1, xn, yn) cd = INP(prt2) xn = -1 yn = -1 LINE (x1 - mins, y1 - mins)-(x1 + mins, y1 + mins), 0, BF FOR x = x1 - mins TO x1 + mins LINE (x, y1 - mins)-(x, y1 + mins), 15 LINE (x - minl, y1 - mins)-(x - minl, y1 + mins), 0 FOR a = 0 TO wai2 NEXT a c = INP(prt2) IF c <> cd THEN xn = x: GOTO 4 NEXT x 4 LINE (x1 - mins, y1 - mins)-(x1 + mins, y1 + mins), 0, BF FOR y = y1 - mins TO y1 + mins LINE (x1 - mins, y)-(x1 + mins, y), 15 LINE (x1 - mins, y - minl)-(x1 + mins, y - minl), 0 FOR a = 0 TO wai2 NEXT a c = INP(prt2) IF c <> cd THEN yn = y: GOTO 5 NEXT y 5 LINE (x1 - mins, y1 - mins)-(x1 + mins, y1 + mins), 0, BF IF xn < -1 THEN xn = -1 IF yn < -1 THEN yn = -1 END SUB SUB start CLS SCREEN 13 prt = &H378 prt2 = &H379 OUT prt, 255 END SUB