310 FOR Y = 0 TO 3: FOR J = 0 TO 1: FOR K = 0 TO 7: POKE D +C,B:C = C +1: NEXT :B = B +128: NEXT :B = B -256: NEXT : RETURN
320 :
330 REM SET UP SHAPE TABLE
340 :
350 FOR K = 0 TO 29: READ X: POKE (768 +K),X: NEXT : POKE 232,0: POKE 233,3: CALL BL
360 DATA 4,0,10,0,20,0,26,0,28,0,186,45,21,31,31,78,54,54,54,0,186,45,30,54,54,0,50,0,4,0
370 :
380 REM LOAD PICTURE FILE
390 :
400 CF = 1: HOME : TEXT : VTAB 5: PRINT "ENTER NAME OF PICTURE TO BE LOADED"R$R$"INPUT '?' TO CATALOG DISK"R$R$"PRESS <RTN> TO START NEW PICTURE"R$R$R$"PICTURE FILNAME: ";:VS = 12:FF = 1: GOSUB 2780
520 ROT= RN: HCOLOR= 3: XDRAW SH AT X,Y: GOSUB 3030: XDRAW SH AT X,Y: HCOLOR= CC: IF PEEK(49249) = >128 THEN 1000
530 IF PEEK(49250) = >128 THEN 1140
540 GOSUB 3040: IF A$ = "A" THEN 1220
550 IF A$ = "B" THEN FOR K = 1 TO 100: NEXT : HCOLOR= 3: XDRAW SH AT X,Y: FOR K = 1 TO 100: NEXT : XDRAW SH AT X,Y: GOTO 520
560 IF A$ = "C" THEN ON CC = 7 GOTO 800:CC = CC +1: GOTO 500
570 IF A$ = "D" THEN HPLOT X,Y: GOTO 520
580 IF A$ = "E" THEN HCOLOR= 0: HPLOT X,Y: GOTO 520
590 IF A$ = "F" THEN SX = X:SY = Y:RS = RN:SS = SH: GOTO 520
600 IF A$ = "H" THEN 860
610 IF A$ = "J" THEN 1080
620 IF A$ = "L" THEN GOSUB 2980: ON YN GOTO 400: GOTO 2370
630 IF A$ = "M" THEN GOSUB 1290: GOTO 520
640 IF A$ = "N" THEN GOSUB 2980: ON YN GOTO 450: GOTO 2370
650 IF A$ = "P" THEN 1420
660 IF A$ = "Q" THEN 2430
670 IF A$ = "R" THEN ON RN = 48 GOTO 810:RN = RN +16: GOTO 520
680 IF A$ = "S" THEN 2290
690 IF A$ = "T" THEN 1350
700 IF A$ = "V" THEN A = 0: GOTO 1620
710 IF A$ = "W" THEN 1910
720 IF A$ = "X" THEN A = 1: GOTO 1620
730 IF A$ = "Z" THEN ON SH = 3 GOTO 820:SH = SH +1: GOTO 520
740 IF A$ = H$ THEN ON X = 0 GOTO 790:X = X -1: GOTO 510
750 IF A$ = U$ THEN ON X = 279 GOTO 790:X = X +1: GOTO 510
760 IF A$ = J$ THEN ON Y = 159 GOTO 790:Y = Y +1: GOTO 510
770 IF A$ = K$ THEN ON Y = 0 GOTO 790:Y = Y -1: GOTO 510
780 K = (A$ = CHR$(18)) +2 *(A$ = CHR$(12)) +3 *(A$ = CHR$(2)) +4 *(A$ = CHR$(20)) +5 *(A$ = CHR$(16)): ON K GOTO 1000,1010,1020,1030,2110
790 CALL BL: GOTO 520
800 CC = 0: GOTO 500
810 RN = 0: GOTO 520
820 SH = 1: GOTO 520
830 :
840 REM HELP SCREEN
850 :
860 TEXT : HOME : PRINT " CURSOR MOVEMENT/COMMANDS"R$R$"ARROW KEYS - MOVE CURSOR BY ONE DOT"R$"FOLLOWING KEYS MOVE CURSOR BY 20 DOTS"R$" OPEN APPLE ARROW - DIRECTION OF ARROW";
870 PRINT " OR <CTRL>-L,<CTRL>-R - LEFT OR RIGHT"R$" OR <CTRL>-B,<CTRL>-T - DOWN OR UP"R$"J - JUMP CURSOR TO X,Y INPUT"R$"CLOSED APPLE ARROW KEYS -"R$" ROTATE CURSOR TO DIRECTION OF ARROW"
880 PRINT "R - ROTATE CURSOR 90~ CLOCKWISE"R$"B - BLINK CURSOR"R$"Z - CHANGE SIZE OF CURSOR"R$R$" PROGRAM OPTIONS/COMMANDS"R$R$"<CTRL>-P - DUMPS CURR SCREEN TO PRINTER"
890 PRINT "L - LOAD A DIFFERENT PICTURE"R$"N - START A NEW PICTURE"R$"S - SAVE THE CURRENT PICTURE"R$"Q - QUIT THE PROGRAM"
900 PRINT R$"PRESS <ESC> TO EXIT HELP MENUS": GOSUB 2990: ON A$ = E$ GOTO 2370: HOME : PRINT " DRAWING OPTIONS/COMMANDS"R$R$"D - DRAW DOT AT CURSOR POINT"R$R$"E - ERASE DOT AT CURSOR POINT"
910 PRINT : PRINT "F - REGISTERS STARTING POINT (FROM)"R$R$"M - DISPLAYS LENGTH OF LINE (MEASURE)"R$R$"T - DRAW/ERASE LINE (TO)"R$R$"P - ENTER PAINT LINE MODE"R$" <ESC> KEY - EXITS MODE"
920 PRINT " ARROW KEYS - DRAW LINE AT 90~ ANGLE"R$" FOLLOWING KEYS DRAW 45~ ANGLE LINE"R$" (,) - UP & LEFT, UP & RIGHT"R$" <,> - DOWN & LEFT, DOWN & RIGHT"
930 PRINT " D/E - SWITCH BETWEEN DRAW & ERASE"R$" F/M - AS DESCRIBED ABOVE"R$R$"PRESS <ESC> TO EXIT HELP MENUS": GOSUB 2990: ON A$ = E$ GOTO 2370: HOME : PRINT " DRAWING OPTIONS/COMMANDS, CONT'D"
940 PRINT R$"A - CHANGE SCALE OF PICTURE"R$R$"C - CHANGE COLOR"R$R$"V - ENTER MOVE SECTION MODE"R$" <ESC> KEY - EXITS MODE"R$" ARROW KEYS - MOVE SECTION BY 1 DOT"
950 PRINT R$"W - ENTER TEXT MODE"R$" <ESC> KEY - EXITS MODE"R$" <CTRL>-X - SWITCHES NORMAL/GRAPHICS"R$" ARROW KEYS - MOVE DOT CURSOR"R$" TEXT KEYS - ENTER TEXT ABOVE CURSOR"
960 PRINT R$"X - ENTER EXPAND SECTION MODE"R$" <ESC> KEY - EXITS MODE"R$" R - EXPANDS TO RIGHT"R$" D - EXPANDS DOWN": GOSUB 2990: GOTO 2370
970 :
980 REM OPEN APPLE-ARROWS
990 :
1000 IF A$ = U$ OR A$ = CHR$(18) THEN ON X >259 GOTO 790:X = X +20: GOTO 510
1010 IF A$ = H$ OR A$ = CHR$(12) THEN ON X <20 GOTO 790:X = X -20: GOTO 510
1020 IF A$ = J$ OR A$ = CHR$(2) THEN ON Y >139 GOTO 790:Y = Y +20: GOTO 510
1030 IF A$ = K$ OR A$ = CHR$(20) THEN ON Y <20 GOTO 790:Y = Y -20: GOTO 510
1040 GOTO 790
1050 :
1060 REM JUMP CURSOR
1070 :
1080 HOME : VTAB 23: INPUT "COLUMN LOCATION - X -? ";X: INPUT "ROW LOCATION - Y -? ";Y
1090 IF X <0 OR X >279 OR Y <0 OR Y >159 THEN CALL BL: GOTO 1080
1100 GOTO 500
1110 :
1120 REM CLOSED APPLE-MACROS
1130 :
1140 IF A$ = H$ THEN RN = 48: GOTO 520
1150 IF A$ = U$ THEN RN = 16: GOTO 520
1160 IF A$ = J$ THEN RN = 32: GOTO 520
1170 IF A$ = K$ THEN RN = 0: GOTO 520
1180 GOTO 790
1190 :
1200 REM CHANGE SCALE FACTOR
1210 :
1220 HTAB 1: VTAB 24: CALL -868: HTAB 10: INPUT "SCALE FACTOR?: ";A$: IF LEN(A$) >3 THEN A$ = LEFT$(A$,3)
1230 IF VAL(A$) <.1 THEN SL = .1: GOTO 500
1240 IF VAL(A$) >240 THEN SL = 240: GOTO 500
1250 SL = VAL(A$): GOTO 500
1260 :
1270 REM MEASURE LINE LENGTH
1280 :
1290 EX = X:EY = Y:A = SL *((EX -SX) ^2 +(EY -SY) ^2) ^.5:B = INT(A/12):C = A -B *12: IF LEFT$( RIGHT$( STR$(C),4),1) = "E" THEN A$ = "0": GOTO 1310
1450 GOSUB 3030: IF A$ = E$ THEN X = XS:Y = YS: XDRAW SH AT X,Y: GOTO 500
1460 IF A$ = H$ THEN ON X = 0 GOTO 1580:X = X -1: HPLOT X,Y: GOTO 1440
1470 IF A$ = U$ THEN ON X = 279 GOTO 1580:X = X +1: HPLOT X,Y: GOTO 1440
1480 IF A$ = J$ THEN ON Y = 159 GOTO 1580:Y = Y +1: HPLOT X,Y: GOTO 1440
1490 IF A$ = K$ THEN ON Y = 0 GOTO 1580:Y = Y -1: HPLOT X,Y: GOTO 1440
1500 IF A$ = "(" OR A$ = "9" THEN ON X = 0 OR Y = 0 GOTO 1580:X = X -1:Y = Y -1: HPLOT X,Y: GOTO 1440
1510 IF A$ = ")" OR A$ = "0" THEN ON X = 279 OR Y = 0 GOTO 1580:X = X +1:Y = Y -1: HPLOT X,Y: GOTO 1440
1520 IF A$ = "<" OR A$ = "," THEN ON X = 0 OR Y = 159 GOTO 1580:X = X -1:Y = Y +1: HPLOT X,Y: GOTO 1440
1530 IF A$ = ">" OR A$ = "." THEN ON X = 279 OR Y = 159 GOTO 1580:X = X +1:Y = Y +1: HPLOT X,Y: GOTO 1440
1540 GOSUB 3040: IF A$ = "D" THEN HCOLOR= CC: HPLOT X,Y: GOTO 1440
1550 IF A$ = "E" THEN HCOLOR= 0: HPLOT X,Y: GOTO 1440
1560 IF A$ = "F" THEN SX = X:SY = Y: GOTO 1440
1570 IF A$ = "M" THEN GOSUB 1290: GOTO 1440
1580 CALL BL: GOTO 1440
1590 :
1600 REM MOVE/EXPAND SECTION MODE
1610 :
1620 EX = X:EY = Y: IF EX <SX OR EY >SY OR (EX = SX AND EY = SY) THEN CALL BL: GOTO 500
1630 HCOLOR= 3: XDRAW SH AT X,Y: ROT= RS: XDRAW SS AT SX,SY: ROT= 0: ON A GOTO 1760: HOME : VTAB 21: PRINT SPC( 14)"MOVE SECTION"R$"<ESC> EXITS MODE"R$R$"USE ARROWS TO MOVE SECTION L,R,U,D: ";
1640 GET A$: IF A$ = E$ THEN 1870
1650 IF A$ = H$ THEN ON SX = 0 GOTO 1690:A = SX:B = EX:C = 1:D = -1: GOTO 1700
1660 IF A$ = U$ THEN ON EX = 279 GOTO 1690:A = EX:B = SX:C = -1:D = 1: GOTO 1700
1670 IF A$ = K$ THEN ON EY = 0 GOTO 1690:A = EY:B = SY:C = 1:D = -1: GOTO 1730
1680 IF A$ = J$ THEN IF SY <159 THEN A = SY:B = EY:C = -1:D = 1: GOTO 1730
1690 CALL BL: GOTO 1640
1700 FOR J = EY TO SY: FOR K = A TO B STEP C: XDRAW 4 AT K,J: IF PEEK(234) THEN XDRAW 4 AT K,J: GOTO 1720
1710 HPLOT K +D,J
1720 NEXT K,J: GOTO 1640
1730 FOR J = SX TO EX: FOR K = A TO B STEP C: XDRAW 4 AT J,K: IF PEEK(234) THEN XDRAW 4 AT J,K: GOTO 1750
1740 HPLOT J,K +D
1750 NEXT K,J: GOTO 1640
1760 HOME : VTAB 21: PRINT SPC( 13)"EXPAND SECTION"R$"<ESC> EXITS MODE"R$R$"EXPAND RIGHT OR DOWN (R/D)?: ";
1770 GET A$: IF A$ = E$ THEN 1870
1780 GOSUB 3040: IF A$ = "R" THEN ON (2 *EX -SX) >278 GOTO 1800: GOTO 1840
1790 IF A$ = "D" THEN IF (2 *SY -EY) < = 158 THEN 1810
1800 CALL BL: GOTO 1770
1810 FOR J = SX TO EX: FOR K = SY TO EY STEP -1: XDRAW 4 AT J,K: IF PEEK(234) THEN XDRAW 4 AT J,K: GOTO 1830
1820 HPLOT J,2 *K -EY: HPLOT J,2 *K -EY +1
1830 NEXT K,J: GOTO 1870
1840 FOR J = EY TO SY: FOR K = EX TO SX STEP -1: XDRAW 4 AT K,J: IF PEEK(234) THEN XDRAW 4 AT K,J: GOTO 1860
1850 HPLOT 2 *K -SX,J: HPLOT 2 *K -SX +1,J
1860 NEXT K,J
1870 ROT= RN: XDRAW SH AT X,Y:RN = RS: ROT= RN:SH = SS:X = SX:Y = SY: XDRAW SH AT X,Y: GOTO 500
2030 IF YY <7 OR A$ < CHR$(32) THEN CALL BL: GOTO 1940
2040 A = ( ASC(A$) -32) *8:YY = YY -7: FOR K = 0 TO 7: POKE (( PEEK(2304 +YY) *256) + PEEK(2496 +YY) +XX), PEEK(TB *256 +A +K):YY = YY +1: NEXT : IF XX <39 THEN XX = XX +1: GOTO 2070
2050 IF YY <153 THEN XX = 0:YY = YY +7: GOTO 1940
2060 CALL BL
2070 YY = YY -1: GOTO 1940
2080 :
2090 REM SCREEN DUMP
2100 :
2110 HOME : VTAB 21: PRINT "PRINTER READY?"R$"PRESS <RTN> TO CONTINUE ";: GET A$: IF A$ = E$ THEN 500
2120 HOME : VTAB 22: PRINT "DO YOU WANT TO PRINT 2 COLUMNS (Y/N)? ";: POKE 8,0: POKE 9,0: GOSUB 3000: IF YN THEN POKE 8,1
2130 HOME : VTAB 22: PRINT "LARGE OR SMALL CHARACTERS (L/S)? ";
2140 GET A$: GOSUB 3040: IF A$ = "L" THEN ON YN GOTO 2170: GOTO 2210
2150 IF A$ < >"S" THEN CALL BL: GOTO 2140
2160 POKE 9,1: IF YN = 0 THEN 2210
2170 HOME : VTAB 21: PRINT "ENTER NAME OF PICTURE FOR SECOND COLUMN"R$"INPUT '?' TO CATALOG DISK"R$"PICTURE FILENAME: ";:CF = 2:VS = 23:FF = 1: GOSUB 2780: IF P$ = E$ OR P$ = "" THEN 2110
2180 IF P$ = "?" THEN 2480
2190 LK = 3: ONERR GOTO 3090
2200 PRINT D$"BLOAD"P$",A$4000"
2210 PRINT D$"PR#1"
2220 PRINT I$"L D"I$"K"I$"Z"
2230 IF PF = 0 THEN PRINT E$"A" CHR$(7): GOTO 2250
2240 PRINT E$"n"E$"T14"E$">": REM 9CPI,DIST BTWN LNS,LEFT TO RIGHT ONLY
2250 CALL 4608: PRINT D$"PR#0": GOTO 500
2260 :
2270 REM SAVE CURRENT PICTURE
2280 :
2290 HOME : VTAB 21: PRINT "INPUT '?' TO CATALOG DISK"R$"PRESS <ESC> TO CANCEL SAVE"R$"PICTURE FILENAME: ";:CF = 3:VS = 23:FF = 1: GOSUB 2780: IF P$ = "?" THEN 2480
2300 IF P$ = E$ OR P$ = "" THEN 2370
2310 ONERR GOTO 2350
2320 PRINT D$"VERIFY"P$: HOME : VTAB 21: PRINT "FILE: ("P$") ALREADY EXISTS"R$R$"DO YOU WANT TO REPLACE"R$"THE EXISTING FILE: (Y/N)? ";: GOSUB 3000: IF YN = 0 THEN 2290
2330 LK = 4: ONERR GOTO 3090
2340 PRINT D$"DELETE"P$
2350 LK = 4: ONERR GOTO 3090
2360 PRINT D$"BSAVE"P$",A$2000,L8192"
2370 POKE -16304,1: GOTO 500
2380 POKE -16304,1: GOTO 2170
2390 POKE -16304,1: GOTO 2290
2400 :
2410 REM QUIT?
2420 :
2430 HOME : TEXT : VTAB 10: PRINT "ARE YOU SURE YOU WANT TO QUIT (Y/N)? ";: GOSUB 3000: IF YN = 0 THEN 2370
2440 POKE 103,1: POKE 104,8: POKE 2048,0: HOME : END
2450 :
2460 REM CHANGE PREFIX/SLOT/DRIVE
2470 :
2480 TEXT : HOME : VTAB 10: ON PD GOTO 2490: PRINT "DO YOU WANT TO CHANGE"R$R$"THE SLOT OR DRIVE (Y/N)? ";: GOTO 2500
2490 PRINT "DO YOU WANT TO CHANGE"R$R$"THE PREFIX/SLOT/DRIVE (Y/N)? ";
2500 GOSUB 3000: IF YN = 0 THEN 2730
2510 HOME : PRINT "THE CURRENT SETTINGS ARE:"R$: IF PD = 1 THEN PRINT "PREFIX= "PR$: GOTO 2530
2520 PRINT "SLOT= "ST" DRIVE= "DR
2530 PRINT R$"PRESS THE NUMBER OF THE ITEM YOU WANT"R$R$"TO CHANGE, OR <ESC> TO CANCEL CHANGE"R$R$: HTAB 10: PRINT "1. DRIVE"R$: HTAB 10: PRINT "2. SLOT": IF PD = 0 THEN 2550
2540 PRINT : HTAB 10: PRINT "3. PREFIX"
2550 PRINT R$: HTAB 10: PRINT "YOUR CHOICE? ";
2560 GET A$: IF A$ = E$ THEN 2730
2570 ON VAL(A$) GOTO 2590,2670: IF A$ = "3" AND PD = 1 THEN 2700
2580 CALL BL: GOTO 2560
2590 HOME
2600 VTAB 14: PRINT "WHICH DRIVE? (1/2) ";
2610 GET A$: IF A$ = "1" OR A$ = "2" THEN PRINT A$:DR = VAL(A$): GOTO 2630
2680 GET A$: IF A$ = > CHR$(51 -PD) AND A$ < = CHR$(54 +PD) THEN PRINT A$:ST = VAL(A$): GOTO 2600
2690 CALL BL: GOTO 2680
2700 HOME : VTAB 6: PRINT "BE SURE YOUR PREFIX"R$R$"BEGINS WITH A /": VTAB 11: PRINT "ENTER NEW PREFIX: ";:VS = 11:FF = 0: GOSUB 2780: IF P$ = E$ THEN 2480
2790 VTAB VT: HTAB HT: PRINT " ": VTAB VT: HTAB HT: GET A$: IF A$ = R$ THEN RETURN
2800 IF (A$ = CHR$(8) OR A$ = CHR$(127)) AND K < >1 THEN GOSUB 2930: GOTO 2790
2810 IF A$ = E$ AND K = 1 THEN P$ = E$: RETURN
2820 IF A$ = "?" AND K = 1 THEN P$ = A$: RETURN
2830 IF A$ = E$ THEN VTAB VS: HTAB 19: CALL -958: GOTO 2780
2840 IF K = 65 OR (K = 16 AND FF = 1) THEN 2890
2850 GOSUB 3040: IF (A$ < = "A" OR A$ > = "Z") AND K = 1 AND FF = 1 THEN 2890
2860 IF A$ < >"/" AND K = 1 AND FF = 0 THEN 2890
2870 IF A$ = "." OR (A$ = "/" AND FF = 0) THEN 2900
2880 IF (A$ > = "A" AND A$ < = "Z") OR (A$ > = "0" AND A$ < = "9") THEN 2900
2890 CALL BL: GOTO 2790
2900 PRINT A$:P$ = P$ +A$: GOSUB 2910: GOTO 2790
2910 K = K +1: IF HT = 40 THEN HT = 1:VT = VT +1: RETURN
2920 HT = HT +1: RETURN
2930 K = K -1: IF K = 1 THEN P$ = "": GOTO 2950
2940 P$ = LEFT$(P$,K -1)
2950 IF HT = 1 THEN HT = 40:VT = VT -1: RETURN
2960 HT = HT -1: RETURN
2970 :
2980 TEXT : HOME : VTAB 8: PRINT "YOU ARE ABOUT TO ERASE"R$R$"THE CURRENT PICTURE."R$R$R$"ARE YOU SURE YOU"R$R$"WANT TO DO THIS? (Y/N) ";: GOSUB 3000: RETURN
2990 HTAB 1: VTAB 24: PRINT "PRESS <RTN> TO CONTINUE: ";: GET A$: RETURN
3000 GET A$: GOSUB 3040: IF A$ = "N" THEN YN = 0: RETURN