10 PRINT "visual 500 TEST" 100 PRINT "CMNDS:cLs Quit gDm gIm Clr Blk Wht Hit Opn ouTput cUrsor diGcom (1 letter)"; 110 INPUT A$ 120 A$ = SEG$(A$,1%,1%) 130 A = POS("LQDICBWHOTUG",A$,1%) 140 IF A>0 GOTO 200 150 PRINT CHR$(7%) 160 GOTO 100 200 ON A GOSUB 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,11000,12000 210 GOTO 100 1000 CALL VISCLS 1005 PRINT "[CLOSED]" 1010 RETURN 2000 GOTO 32767 3000 CALL VISGDM 3001 MODE% = 0% 3005 PRINT "[GRAPHICS OUTPUT MODE] :: -'VE VALUES TO EXIT" 3010 INPUT "X,Y",X%,Y% 3015 IF X%<0% OR Y%<0% THEN RETURN 3020 HX% = X%/32% 3030 HY% = Y%/32% 3040 LX% = X%-32%*HX% 3050 LY% = Y%-32%*HY% 3060 CALL VISOUT (CHR$(HY%+32%)+CHR$(LY%+96%)+CHR$(HX%+32%)+CHR$(LX%+64%)) 3070 GOTO 3010 4000 CALL VISGIM 4010 PRINT "[GRAPHICS INPUT MODE]" 4015 MODE% = 1% 4020 RETURN 5000 CALL VISCLR 5010 PRINT "[CLEARED]" 5020 RETURN 6000 CALL VISBLK 6010 PRINT "[BLACKLINES]" 6020 RETURN 7000 CALL VISWHT 7010 PRINT "[WHITELINES]" 7020 RETURN 8000 INPUT "How long to wait for hit",WAIT% 8010 INPUT "How many chars. to accept from hit",NO% 8020 CALL VISHIT (S$, NO%, WAIT%) 8030 L% = LEN(S$) 8040 IF L% > 0% THEN 8200 8050 PRINT "NO CHARS FROM HIT"+CHR$(7) 8060 RETURN 8200 PRINT "Char #","Char Value" 8210 FOR I%=1% TO L% 8220 C$ = SEG$(S$,I%,I%) 8230 PRINT I%,ASCII(C$) 8240 NEXT I% 8245 IF MODE% = 1% & THEN X% = (ASCII(SEG$(S$,2,2))-32)*32+(ASCII(SEG$(S$,3,3))-32)& \ Y% = (ASCII(SEG$(S$,4,4))-32)*32+(ASCII(SEG$(S$,5,5))-32)& \ PRINT "X%=";X%,"Y%=";Y% & \ MODE% = 0% 8250 RETURN 9000 CALL VISOPN 9010 PRINT "[OPENED]" 9020 RETURN 10000 INPUT "STRING to ouTput:";S$ 10010 CALL VISOUT (S$) 10020 RETURN 11000 PRINT "[CURSOR DRAWING MODE]" 11010 WAIT% = 0% 11020 NO% = 7% 11025 CALL VISGIM 11030 CALL VISHIT (S$, NO%, WAIT%) 11040 L% = LEN(S$) 11050 IF L% < NO% & THEN PRINT "PROBLEMS - NOT ENOUGH CHARS. RETURNED" + CHR$(7) & \ RETURN 11055 MOVE.DRAW% = 0% 11060 WHILE SEG$(S$,1,1) <> "E" 11064 PREV.X% = X% 11065 PREV.Y% = Y% 11070 X% = (ASCII(SEG$(S$,2,2))-32)*32+(ASCII(SEG$(S$,3,3))-32) 11080 Y% = (ASCII(SEG$(S$,4,4))-32)*32+(ASCII(SEG$(S$,5,5))-32) 11090 PRINT "X%=";X%,"Y%=";Y% 11100 IF SEG$(S$,1,1) = "M" & THEN DO% = FN.MOVE%(X%,Y%) & ELSE IF SEG$(S$,1,1) = "D" & THEN DO% = FN.DRAW%(X%,Y%) & ELSE IF SEG$(S$,1,1) = "W" & THEN DO% = FN.WHITE.LINES% & ELSE IF SEG$(S$,1,1) = "B" & THEN DO% = FN.BLACK.LINES% & ELSE IF SEG$(S$,1,1) = "E" & THEN RETURN & ELSE PRINT "UNKNOWN COMMAND"+CHR$(7) 11105 ! 11110 CALL VISGIM 11120 CALL VISHIT (S$, NO%, WAIT%) 11130 L% = LEN(S$) 11140 IF L% < NO% & THEN PRINT "PROBLEMS - NOT ENOUGH CHARS. RETURNED" + CHR$(7) & \ RETURN 11145 ! 11150 NEXT 11160 RETURN 11170 DEF FN.MOVE%(X%,Y%) 11180 CALL VISGDM 11190 HX% = X%/32% 11200 HY% = Y%/32% 11210 LX% = X%-32%*HX% 11220 LY% = Y%-32%*HY% 11230 CALL VISOUT (CHR$(HY%+32%)+CHR$(LY%+96%)+CHR$(HX%+32%)+CHR$(LX%+64%)) 11240 MOVE.DRAW% = 1% 11250 FNEND 11260 DEF FN.DRAW%(X%,Y%) 11270 IF MOVE.DRAW% = 0% & THEN DO% = FN.MOVE%(X%,Y%) & ELSE DO% = FN.MOVE%(PREV.X%, PREV.Y%) & \ HX% = X%/32% & \ HY% = Y%/32% & \ LX% = X%-32%*HX% & \ LY% = Y%-32%*HY% & \ CALL VISOUT (CHR$(HY%+32%)+CHR$(LY%+96%)+CHR$(HX%+32%)+CHR$(LX%+64%)) 11280 FNEND 11290 DEF FN.BLACK.LINES% 11300 CALL VISBLK 11310 PRINT "[BLACKLINES]" 11315 MOVE.DRAW% = 0% 11320 FNEND 11330 DEF FN.WHITE.LINES% 11340 CALL VISWHT 11350 PRINT "[WHITELINES]" 11355 MOVE.DRAW% = 0% 11360 FNEND 12000 ! digitizer command 12010 PRINT "MENU: tream idth

oint" 12020 INPUT option$ 12030 option$ = SEG$(option$,1%,1%) 12040 option = POS("SWP",option$,1%) 12050 IF option > 0 GOTO 12080 12060 PRINT CHR$(7%) 12070 GOTO 12010 12080 ON A GOSUB 12100,12200,12300 12090 GOTO 12010 12095 ! 12100 CALL DIGOUT("K") 12105 PRINT "DIGITIZER: STREAM MODE" 12110 RETURN 12120 ! 12200 INPUT "Width: ";width% 12205 PRINT "DIGITIZER: Width: ";NUM1$(Width%) 12210 CALL DIGOUT("W"+NUM1$(width)) 12220 RETURN 12230 ! 12300 CALL DIGOUT("P") 12305 PRINT "DIGITIZER: POINT MODE" 12310 RETURN 32767 END