10 X=Y=Z=BACK=CHAR: GOSUB 20000 100 GOSUB 11000 200 GOSUB 2000: IF Z<0 THEN GOSUB 12000 590 IF MICRO THEN 700 600 IF Z#2 THEN 200 610 POKE 0,0: POKE 1,X: POKE 2,Y+1: POKE 3,128: CALL PLOT:BACK= PEEK (3) 620 IF BACK AND BACK#5 THEN 200 650 IF SAFE AND NOT BACK THEN 200 660 POKE 2,Y: POKE 3,128: CALL PLOT: IF PEEK (3)#BACK THEN 200 670 IF BACK AND EVEN=5 AND ODD=5 THEN 200 690 POKE 4,EVEN: POKE 5,ODD: CALL FILL: GOTO 200 700 POKE 0,X: POKE 1,Y: CALL SCOPE: IF Z#2 THEN 200 730 POKE 0,0: POKE 1,X: POKE 2,Y: POKE 4,EVEN: POKE 5,ODD: CALL DITHER: GOTO 200 1000 TEXT : CALL -936 1010 VTAB 12: INPUT "READ PICTURE: ",A$ 1020 IF LEN(A$) THEN PRINT D$;"BLOAD ";A$;", A$2000" 1050 GOTO 11070 2000 IF NOT FREEZE THEN X= PDL (0)-58 2010 IF X<1 THEN X=1 2020 IF X>138 THEN X=138 2050 Z=0: IF PEEK (-16384)>127 THEN Z=-3 2060 IF PEEK (-16287)>127 OR PEEK (-16286)>127 THEN Z=2+4* SGN (Z) 2100 IF NOT FREEZE THEN Y= PDL (1)-32 2110 IF Y<1 THEN Y=1 2120 IF Y>190 THEN Y=190 2150 IF MICRO THEN RETURN 2200 POKE 0,0: POKE 1,X: POKE 2,Y: CALL CROSS 2500 RETURN 11000 REM SET PROPER SCREEN MODE 11050 POKE -25254,240: POKE -25253,105 11070 POKE -16302,0: POKE -16304,0 11080 IF MICRO THEN CALL INIT 11090 IF NOT MICRO THEN POKE -16297,0 11100 RETURN 12000 REM KEY WAS HIT 12300 CHAR= PEEK (-16384): POKE -16368,0 12400 POKE 0,0:Z=-Z 12500 IF CHAR# ASC( "Z") THEN 12600 12550 FREEZE=1-FREEZE: RETURN 12600 IF CHAR# ASC( "I") THEN 12700 12650 Y=Y-1: RETURN 12700 IF CHAR# ASC( "J") AND CHAR#136 THEN 12800 12750 X=X-1: RETURN 12800 IF CHAR# ASC( "K") AND CHAR#149 THEN 12900 12850 X=X+1: RETURN 12900 IF CHAR# ASC( "M") THEN 13000 12950 Y=Y+1: RETURN 13000 C=-1 13010 IF CHAR= ASC( "D") THEN C=0 13020 IF CHAR= ASC( "V") THEN C=1 13025 IF CHAR= ASC( "P") THEN C=1 13030 IF CHAR= ASC( "G") THEN C=2 13040 IF CHAR= ASC( "B") THEN C=3 13050 IF CHAR= ASC( "O") THEN C=4 13060 IF CHAR= ASC( "L") THEN C=5 13070 IF CHAR= ASC( "W") THEN C=5 13100 IF C<0 THEN 13200 13150 EVEN=ODD:ODD=C: RETURN 13200 IF CHAR# ASC( "N") THEN 13400 13300 CALL INVERT: RETURN 13400 IF CHAR# ASC( "X")-64 THEN 13600 13500 CALL CLEAN: RETURN 13600 IF CHAR# ASC( " ") THEN 14000 13650 MICRO=1-MICRO: IF MICRO THEN 13800 13700 POKE -16297,0: RETURN 13800 CALL INIT: RETURN 14000 IF CHAR# ASC( "R")-64 THEN 15000 14500 GOSUB 1000 14900 GOTO 11070 15000 IF CHAR# ASC( "W")-64 THEN 16000 15200 TEXT : CALL -936 15300 VTAB 12: INPUT "WRITE PICTURE: ",A$ 15400 IF LEN(A$) THEN PRINT D$;"BSAVE ";A$;", A$2000, L$1FF8" 15900 GOTO 11070 16000 IF CHAR# ASC( "N")-64 THEN 16500 16100 SAFE=1: RETURN 16500 IF CHAR# ASC( "F")-64 THEN 17000 16600 SAFE=0: RETURN 17000 IF CHAR# ASC( D$) THEN 18000 17150 TEXT : CALL -936: VTAB 10 17200 PRINT : PRINT : INPUT "DOS: ",A$ 17250 IF LEN(A$)=0 THEN 11070 17300 PRINT D$;A$ 17400 GOTO 17200 18000 REM MORE KEYS CAN BE ADDED HERE 19000 IF CHAR#155 THEN RETURN 19100 TEXT : CALL -936 19510 VTAB 11: TAB 7: PRINT "HIT 'RETURN' TO TERMINATE" 19520 VTAB 13: TAB 6: PRINT "HIT ANY OTHER KEY TO RESUME" 19530 IF PEEK (-16384)<128 THEN 19530 19540 POKE -16368,0 19600 IF PEEK (-16384)#13 THEN 11070 19700 CALL -936: VTAB 12: TAB 4: PRINT "THANK YOU FOR USING MICRO-PAINTER" 19800 POKE -25254,227: POKE -25253,227 19900 VTAB 23: POP : END 20000 DIM A$(40):D$="" 20030 EVEN=0:ODD=0:MICRO=0:SAFE=1:FREEZE=0 20035 FILL=6*4096+2048:CROSS=FILL-256 20040 DITHER=FILL+256:PLOT=DITHER+3 20045 SCOPE=DITHER+256:INIT=SCOPE+3 20050 CLEAN=SCOPE+512+192:INVERT=CLEAN+256 20060 TEXT : CALL -936: VTAB 10 20065 TAB 11: PRINT "*** MICRO-PAINTER ***" 20070 PRINT : TAB 18: PRINT "- BY -" 20075 PRINT : TAB 16: PRINT "BOB BISHOP" 20100 PRINT D$;"BLOAD PAINT" 20150 PRINT D$;"BLOAD CURSOR" 20200 IF PEEK (-16287)<128 AND PEEK (-16286)<128 THEN 20300 20210 CALL -936: VTAB 12: TAB 4 20220 PRINT "PLEASE CONNECT YOUR GAME PADDLES" 20230 IF PEEK (-16287)>127 OR PEEK (-16286)>127 THEN 20230 20250 CALL -936: VTAB 12: TAB 15 20260 PRINT "THANK YOU!" 20270 FOR K=1 TO 500: NEXT K 20300 POKE -25254,240: POKE -25253,105 20310 POKE -16368,0: GOTO 1000 32000 FOR XYZ=1 TO 250: NEXT XYZ: GOTO 11070 32767 REM WRITTEN BY: BOB BISHOP