home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib30b.dsk / GARDEN.PLANNER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  27KB  |  404 lines

  1. 10  REM  **********************
  2. 20  REM  *   GARDEN.PLANNER   *
  3. 30  REM  * BY  MARK R. CRAVEN *
  4. 40  REM  * COPYRIGHT (C) 1987 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  HOME :D$ =  CHR$(4)
  9. 90  ONERR  GOTO 3880
  10. 100  PRINT D$"UNLOCK PG.GUIDE": PRINT D$"UNLOCK PG.NAMES": PRINT D$"UNLOCK VEG.SHAPES": PRINT D$"UNLOCK TEXT.SHAPES": PRINT D$"UNLOCK CURSOR.BAR.4": PRINT 
  11. 110  POKE 216,0: REM NO ONERR
  12. 120  IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: VTAB 10: HTAB 10: PRINT "LOADING PROGRAM FILES": PRINT : PRINT D$"RUN GARDEN.PLANNER"
  13. 130  HIMEM: 38400: DIM VG$(16),VG%(16),T%(8,16),EC%(16),EX$(4),PG$(45)
  14. 140  SCALE= 1: ROT= 0: HCOLOR= 3:AD = 974:EM = 975: POKE 230,32:TABLE = 233:AS = 16:VG = 20:KD =  -16384:KB =  -16368:CUR = 768: CALL 62450: HOME 
  15. 150  VTAB 10: HTAB 10: PRINT "READING PROGRAM DATA"
  16. 160 M$(1) = "VEGETABLE GARDEN PLANNER":M$(2) = "GRAPHIC/DISK UTILITIES":M$(3) = "CONFIGURE SYSTEM":M$(4) = "QUIT PROGRAM"
  17. 170 D$ =  CHR$(4):OP$ = "OPEN ":CL$ = "CLOSE ":RD$ = "READ ":WR$ = "WRITE ":U$ = "UNLOCK ":BL$ = "BLOAD ":BS$ = "BSAVE ":VF$ = "VERIFY ":AD$ = ",A$2000":LE$ = ",L$2000"
  18. 180  FOR I = 1 TO 39:L$ = L$ +"=": NEXT 
  19. 190 EX$(1) = "SEED, SETS, PLANTS, ETC.":EX$(2) = "FERTILIZER, TILLING, ETC.":EX$(3) = "INSECTICIDES, PESTICIDES, HERBICIDES":EX$(4) = "WATERING, HARVESTING"
  20. 200  HOME : VTAB 10: HTAB 10: PRINT "LOADING PG.NAMES"
  21. 210 F$ = "PG.NAMES"
  22. 220  PRINT D$OP$F$
  23. 230  PRINT D$RD$F$
  24. 240  FOR I = 1 TO 45: INPUT PG$(I): NEXT 
  25. 250  FOR I = 1 TO 16: INPUT VG$(I),N$:VG%(I) =  VAL(N$): NEXT 
  26. 260  PRINT D$CL$
  27. 270  DEF  FN V(V) = 19 +17 *(V -1): REM GRAPHICS POS'NING FN
  28. 280  REM  LOAD BINARY FILES
  29. 290  ONERR  GOTO 4010
  30. 300  HOME : VTAB 10: HTAB 10: PRINT "LOADING BINARY FILES": PRINT 
  31. 310  PRINT D$BL$"CURSOR.BAR.4,A$300": REM 768
  32. 320  PRINT : PRINT D$BL$"TEXT.SHAPES,A$1000": REM 4096
  33. 330  PRINT : PRINT D$BL$"VEG.SHAPES,A$1400": REM 5120
  34. 340  POKE 232,0: POKE TABLE,AS: REM TEXT.SHAPES ADDRESS ($1000)
  35. 350  GOSUB 640
  36. 360  REM  CONFIGURE
  37. 370 F$ = "GP.CONFIG"
  38. 380  POKE EM,1
  39. 390  ONERR  GOTO 3990
  40. 400  PRINT : PRINT D$"VERIFY "F$
  41. 410  PRINT D$OP$F$
  42. 420  PRINT D$RD$F$
  43. 430  INPUT PT: INPUT SL: INPUT GP: INPUT GP$: INPUT CL: INPUT SD: INPUT SD$
  44. 440  PRINT D$CL$
  45. 450  POKE 216,0: REM NO ONERR
  46. 460  POKE EM,0: GOTO 1080
  47. 470  REM   SUBROUTINES
  48. 480  VTAB 20: PRINT L$;: VTAB 21: HTAB 1: INVERSE : PRINT "<-";: NORMAL : PRINT " ";: INVERSE : PRINT "->";: NORMAL : PRINT " TO SELECT ...<";: INVERSE : PRINT "RETURN";: NORMAL : PRINT "> TO EXECUTE": PRINT "   UP OR DOWN ARROW KEYS MAY BE USED"
  49. 490  PRINT "    <ESC> RETURNS TO PREVIOUS MENU"
  50. 500  VTAB 24: PRINT L$;: RETURN 
  51. 510  VTAB 3: HTAB 1: PRINT "PRINTER     ": RETURN 
  52. 520  VTAB 3: HTAB 9: PRINT "IN SLOT #";SL: RETURN 
  53. 530  VTAB 3: HTAB 1: PRINT "NO PRINTER        ": RETURN : REM 8 SPACES
  54. 540  VTAB 3: HTAB 21: PRINT "WITH GRAPHICS DUMP": RETURN 
  55. 550  VTAB 3: HTAB 21: PRINT "  NO GRAPHICS DUMP": RETURN 
  56. 560  VTAB 5: HTAB 21: PRINT "WITH TEXT DUMP";: CALL  -868: RETURN 
  57. 570  VTAB 5: HTAB 21: PRINT "  NO TEXT DUMP";: CALL  -868: RETURN 
  58. 580  VTAB 5: HTAB 21: CALL  -868: RETURN 
  59. 590  VTAB 5: HTAB 1: PRINT "COLOR MONITOR     ": RETURN 
  60. 600  VTAB 5: HTAB 1: PRINT "MONOCHROME MONITOR": RETURN 
  61. 610 S$ = "": FOR I = 1 TO  LEN(X$): IF  ASC( MID$ (X$,I,1)) <32  THEN S$ = S$ +"^" + CHR$( ASC( MID$ (X$,I,1)) +64): NEXT : GOTO 630
  62. 620 S$ = S$ + MID$ (GP$,I,1): NEXT 
  63. 630  RETURN 
  64. 640 NS =  PEEK( PEEK(TABLE) *256): RETURN : REM # OF SHAPES
  65. 650  HCOLOR= 0: FOR B =  FN V(R) -8 TO  FN V(R) +8: HPLOT R1 +19,B TO R2 +17,B: NEXT : HCOLOR= 3: RETURN 
  66. 660  DRAW S AT A +3,C +2: RETURN : REM DRAW VEG
  67. 670  XDRAW S AT A +3,C +2: RETURN : REM XDRAW VEG
  68. 680  POKE 35,24: HOME : POKE  -16301,0: VTAB 22: PRINT "SHAPE REPRESENTS ";: INVERSE : PRINT VG$(S): NORMAL 
  69. 690  HTAB 1: VTAB 24: PRINT "PRESS <RETURN> TO CONTINUE..";
  70. 700  POKE KB,0: GET X$: POKE  -16302,0: RETURN 
  71. 710 R = R -1 +8 *(R = 1): RETURN : REM UP ROW
  72. 720 R = R +1 -8 *(R = 8): RETURN : REM DOWN ONE
  73. 730 ER = 0: IF X$ = ""  THEN  RETURN 
  74. 740  IF  VAL(X$) <0  THEN ER = 1: RETURN 
  75. 750  IF  LEN(X$) >5  THEN ER = 1: RETURN 
  76. 760  FOR K = 1 TO  LEN(X$): IF  ASC( MID$ (X$,K,1)) <46  OR  ASC( MID$ (X$,K,1)) >57  OR  ASC( MID$ (X$,K,1)) = 47  THEN ER = 1:K =  LEN(X$): NEXT : RETURN 
  77. 770  NEXT : RETURN 
  78. 780  FOR B = 1 TO  LEN(X$): DRAW  ASC( MID$ (X$,B,1)) -31 AT H +6 *B,V: NEXT : RETURN 
  79. 790  FOR I = 1 TO 8: DRAW I AT 1,I *16 +17: NEXT : FOR I = 9 TO NS: DRAW I AT 142,16 *(I -8) +17: NEXT : RETURN 
  80. 800  HCOLOR= 3 +2 *CL: FOR I = 0 TO 18: DRAW 2 AT I *14,10: DRAW 2 AT I *14,165: NEXT : HCOLOR= 3: RETURN 
  81. 810  REM FIX DECIMALS
  82. 820 ER = 0: IF  VAL(X$) <.01  AND  VAL(X$) > = 0  THEN X$ = "0.00": RETURN : REM CHECK DEC. FLAG
  83. 830  FOR J = 1 TO  LEN(X$): IF  MID$ (X$,J,1) = "."  THEN ER = 1:X$ = X$ +"00":X$ =  LEFT$(X$,J +2):J =  LEN(X$): NEXT : RETURN 
  84. 840  NEXT : IF ER = 1  THEN ER = 0: RETURN 
  85. 850 X$ = X$ +".00": RETURN 
  86. 860  IF  LEFT$(X$,1) = " "  THEN X$ =  RIGHT$(X$, LEN(X$) -1): GOTO 860
  87. 870  RETURN 
  88. 880  FOR J = I TO I +39:A =  PEEK(J):A = A +(A <32) *192:A = A +(A <64) *128:A = A +(A <96) *64:A = A +(A <128) *64:A = A +(A <160) *64: PRINT  CHR$(A);
  89. 890  IF  PEEK(KD) = 155  THEN J = I +39: NEXT : POP : GOTO 1050: REM STOP PRINTING
  90. 900  NEXT J: PRINT  CHR$(13);
  91. 910  RETURN 
  92. 920  VTAB 22: PRINT L$: PRINT : VTAB 23: PRINT  TAB( 6)"PRESS <RETURN> TO CONTINUE...";: IF PT  THEN  PRINT : PRINT  TAB( 7)"PRESS 'P' TO PRINT SCREEN";
  93. 930  RETURN 
  94. 940  VTAB 24: PRINT "     <ESC> TO EXIT ROUTINE TO MENU";: RETURN 
  95. 950  FOR I = 1 TO 16:EC%(I) = 0: NEXT : RETURN : REM ZERO FOOTAGES
  96. 960 ER =  PEEK(222): TEXT : HOME : POKE 216,0: RETURN : REM NO ONERR
  97. 970 LINE = ( PEEK(4) +1)/2: RETURN 
  98. 980  PRINT  CHR$(4)"OPEN PG.GUIDE,L60": PRINT  CHR$(4)"READ PG.GUIDE,R";I
  99. 990  INPUT DP$,DS$,DR$,GM$,ST$,MT$: PRINT D$"CLOSE": RETURN 
  100. 1000  PRINT D$"PR#";SL: PRINT SD$: GOTO 1050
  101. 1010  PRINT D$"PR#";SL: PRINT  CHR$(9)"80N"
  102. 1020  FOR I = 1024 TO 1920  STEP 128: GOSUB 880: NEXT I
  103. 1030  FOR I = 1064 TO 1960  STEP 128: GOSUB 880: NEXT I
  104. 1040  FOR I = 1104 TO 1616 -384 *(NR <6)  STEP 128: GOSUB 880: NEXT I
  105. 1050  PRINT : PRINT D$"PR#0": RETURN 
  106. 1060  INVERSE : VTAB 15: HTAB 3: PRINT "   THIS OPTION WILL DESTROY ANY    ": HTAB 3: PRINT "          EXISTING LAYOUT          ": NORMAL : RETURN : REM  3/4/10/10 SPACES
  107. 1070  REM MAIN MENU
  108. 1080  TEXT : HOME : PRINT  TAB( 5)"THE GARDEN PLANNER - MAIN MENU": PRINT : PRINT "  COPYRIGHT 1987 BY MICROSPARC, INC.": PRINT L$
  109. 1090  VTAB 8: HTAB 8: PRINT M$(1): VTAB 10: HTAB 9: PRINT M$(2): VTAB 12: HTAB 12: PRINT M$(3): VTAB 14: HTAB 14: PRINT M$(4)
  110. 1100  GOSUB 480
  111. 1110  CALL CUR,8,18,7,32
  112. 1120  GOSUB 970: POKE AD,LINE
  113. 1130  ON LINE GOTO 1220,2630,3750,1150
  114. 1140  GOTO 1080
  115. 1150  TEXT : HOME : VTAB 10: HTAB 5: PRINT "QUIT PROGRAM? (Y/N) ";: POKE KB,0: GET X$: IF X$ = "Y"  OR X$ =  CHR$(121)  THEN 1170
  116. 1160  GOTO 1080
  117. 1170  TEXT : HOME : END 
  118. 1180  HOME : CALL 62450: HGR : POKE 49234,0: POKE TABLE,AS:V = 5: GOSUB 780: POKE TABLE,ST: GOSUB 640: GOSUB 800: GOSUB 790: POKE TABLE,AS: GOSUB 640: RETURN 
  119. 1190  POKE TABLE,AS:X$ = "PRESS <RETURN> TO CONTINUE....":V = 188:H = 10: GOSUB 780: PRINT  CHR$(7): POKE KB,0: GET X$: HOME : TEXT 
  120. 1200  RETURN 
  121. 1210  REM PLAN GARDEN
  122. 1220  TEXT : HOME : VTAB 1: HTAB 9: PRINT M$( PEEK(AD)): PRINT : PRINT L$: GOSUB 480
  123. 1230  VTAB 8: HTAB 13: PRINT "GARDEN  LAYOUT": VTAB 10: PRINT  TAB( 13)"PLANTING GUIDE": VTAB 12: PRINT  TAB( 8)"VIEW SHAPES/DESCRIPTIONS": VTAB 14: PRINT  TAB( 12)"GARDEN ECONOMICS"
  124. 1240  CALL CUR,8,14,7,32
  125. 1250  GOSUB 970
  126. 1260  ON LINE GOTO 1810,1370,1280,3130
  127. 1270  GOTO 1080: REM MAIN MENU (ESC)
  128. 1280  IF LN <6  THEN 1320
  129. 1290  HOME : VTAB 10: PRINT "YOU HAVE AN ACTIVE LAYOUT IN PROGRESS.": PRINT : PRINT "VIEWING THE VEGETABLE GRAPHICS": PRINT "WILL DESTROY THE EXISTING LAYOUT.": PRINT : PRINT "DO YOU WISH TO CONTINUE ANYWAY? N";: HTAB 33
  130. 1300  POKE KB,0: GET Z$: IF Z$ = "Y"  OR Z$ =  CHR$(121)  THEN LN = 0: GOTO 1320
  131. 1310  GOTO 1220
  132. 1320 LN = 0:X$ = "VEGETABLE GRAPHICS":H = 80:ST = VG: GOSUB 1180
  133. 1330  FOR J = 1 TO 8:X$ = VG$(J):H = 10:V = 16 *J +25: GOSUB 780: NEXT : FOR J = 9 TO 16:X$ = VG$(J):H = 150:V = 16 *(J -8) +25: GOSUB 780: NEXT 
  134. 1340  GOSUB 1190
  135. 1350  GOTO 1220
  136. 1360  REM  PLANTING GUIDE
  137. 1370  TEXT : HOME : PRINT  TAB( 13)"PLANTING GUIDE": PRINT L$: PRINT 
  138. 1380  VTAB 8: PRINT  TAB( 8)"DISPLAY SINGLE VEGETABLE": IF PT = 1  THEN  PRINT : PRINT  TAB( 6)"PRINT ENTIRE PLANTING GUIDE"
  139. 1390  GOSUB 480: REM PROMPTS
  140. 1400  CALL CUR,8,12,5,34
  141. 1410  GOSUB 970
  142. 1420  ON LINE +(LINE = 2  AND PT = 0) GOTO 1440,1550
  143. 1430  GOTO 1220
  144. 1440  TEXT : HOME : HTAB 12: PRINT "SELECT VEGETABLE": PRINT L$: PRINT 
  145. 1450  GOSUB 480:J = 1: POKE 34,2: POKE 35,19: REM SET WINDOW
  146. 1460  PRINT : VTAB 3: FOR I = J TO J +14: PRINT  TAB( 20 - LEN(PG$(I))/2)PG$(I): NEXT : HTAB 12: PRINT "SEE MORE CHOICES": CALL CUR,3,18,8,32
  147. 1470 LINE =  PEEK(4): IF LINE < >16  THEN 1500
  148. 1480 J = J +15: IF J = 46  THEN J = 1
  149. 1490  HOME : GOTO 1460
  150. 1500  IF LINE = 0  THEN 1370
  151. 1510 R = LINE +J -1: REM FILE RECORD #
  152. 1520 I = R: GOSUB 980: REM READ RECORD
  153. 1530  GOTO 1700: REM SINGLE RECORD
  154. 1540  REM PRINT WHOLE GUIDE
  155. 1550  HOME : VTAB 10: PRINT  TAB( 5)"PRESS <ESC> TO STOP PRINTING": PRINT : PRINT  CHR$(4)"PR#";SL: PRINT  CHR$(9)"80N": REM TURN ON PRINTER
  156. 1560  PRINT  SPC( 28)"VEGETABLE PLANTING GUIDE"
  157. 1570  PRINT L$L$"=="
  158. 1580  PRINT  SPC( 30)"DISTANCE     DISTANCE    DAYS TO" SPC( 9)"DAYS TO"
  159. 1590  PRINT  SPC( 20)"DEPTH TO   BETWEEN      BETWEEN    GERMI-   SOIL   MATURITY": REM SPACES = 3,6,4,2,3
  160. 1600  PRINT  SPC( 22)"PLANT    PLANTS        ROWS       TION    TEMP.*": REM SPACES = 4,8,7,3
  161. 1610  PRINT "   VEGETABLE          SEEDS   (INCHES)     (INCHES)": REM SPACES=3,10,3,5
  162. 1620  PRINT L$L$"=="
  163. 1630  FOR I = 1 TO 45: GOSUB 980: REM READ RECORD
  164. 1640  IF  PEEK(KD) = 155  THEN 1690: REM ESC OUT
  165. 1650  PRINT PG$(I) SPC( 20 - LEN(PG$(I)))DP$ SPC( 10 - LEN(DP$))DS$ SPC( 13 - LEN(DS$))DR$ SPC( 12 - LEN(DR$))GM$ SPC( 10 - LEN(GM$))ST$ SPC( 7 - LEN(ST$))MT$
  166. 1660  NEXT 
  167. 1670  PRINT L$L$"=="
  168. 1680  PRINT "   *  1=NEEDS COOL SOIL": PRINT "      2=TOLERATES COOL SOIL": PRINT "      3=NEEDS WARM SOIL": REM SPACES=3,2,6,6
  169. 1690  PRINT : PRINT D$"PR#0": GOTO 1370
  170. 1700  TEXT : HOME : PRINT  TAB( 13)"PLANTING GUIDE": HTAB 20 - LEN(PG$(I))/2: PRINT PG$(I): PRINT L$
  171. 1710  VTAB 4: HTAB 1: PRINT "   PLANTING   DISTANCE   DISTANCE": PRINT "     DEPTH     BETWEEN    BETWEEN": PRINT "     (IN.)     PLANTS      ROWS": REM SPACES=3,3,3,5,5,4,5,5,6
  172. 1720  PRINT L$
  173. 1730  HTAB 8 - LEN(DP$)/2: PRINT DP$;: HTAB 19 - LEN(DS$)/2: PRINT DS$;: HTAB 31 - LEN(DR$)/2: PRINT DR$
  174. 1740  VTAB 12: HTAB 1: PRINT L$: PRINT "   # OF DAYS    1=COOL SOIL      DAYS": PRINT "       TO       2=COOL OK         TO": PRINT "  GERMINATION   3=WARM SOIL    MATURITY": REM SPACES=3,4,6,7,7,9,2,3,4
  175. 1750  PRINT L$
  176. 1760  HTAB 8 - LEN(GM$)/2: PRINT GM$;: HTAB 23: PRINT ST$;: HTAB 35 - LEN(MT$)/2: PRINT MT$
  177. 1770  GOSUB 920: GOSUB 700: REM PROMPTS
  178. 1780  IF PT = 1  AND (X$ = "P"  OR X$ =  CHR$(112))  THEN  VTAB 20: HTAB 1: CALL  -958: PRINT L$: VTAB 22: PRINT : ON SD GOSUB 1000: ON SD GOTO 1370: VTAB 23: PRINT  TAB( 8)"PRESS <ESC> TO CANCEL PRINT": GOSUB 1010: REM SCREEN DUMP
  179. 1790  GOTO 1440: REM RESELECT VEGGIE
  180. 1800  REM   GRAPHIC LAYOUT
  181. 1810  HOME : HTAB 14: PRINT "GARDEN LAYOUT": PRINT L$
  182. 1820  IF LN <6  THEN 1870: REM  NO LAYOUT
  183. 1830  GOSUB 480: VTAB 10: HTAB 12: PRINT "START NEW LAYOUT": VTAB 12: HTAB 9: PRINT "WORK ON CURRENT LAYOUT"
  184. 1840  CALL CUR,10,12,6,33: GOSUB 970: ON LINE GOTO 1870,1860
  185. 1850  GOTO 1220
  186. 1860  POKE  -16297,0: POKE  -16304,0: POKE  -16301,0: GOTO 2070
  187. 1870  VTAB 4: PRINT "THIS LAYOUT ASSUMES A RECTANGULAR,": PRINT "SQUARE, OR NEARLY RECTANGULAR GARDEN.": CALL  -958: GOSUB 1060
  188. 1880  VTAB 22: HTAB 1: PRINT L$: VTAB 23: HTAB 1: PRINT "<RETURN> TO CONTINUE..ANY OTHER TO QUIT";: GET X$: IF X$ < > CHR$(13)  THEN 1220
  189. 1890  GOSUB 950
  190. 1900  VTAB 4: HTAB 1: CALL  -958: VTAB 5: HTAB 1: PRINT "ENTER THE LONGEST DIMENSION (LENGTH)": VTAB 21: PRINT L$: PRINT  TAB( 11)"RANGE = 6-100 FT.": PRINT  TAB( 5)"<RETURN> WITHOUT ENTRY EXITS"
  191. 1910  VTAB 7: PRINT " LENGTH (IN FEET) = ";: INPUT "";LN$: IF LN$ = ""  OR LN$ =  CHR$(27)  THEN 1220
  192. 1920  IF  VAL(LN$) >100  OR  VAL(LN$) <6  THEN  PRINT  CHR$(7): VTAB 7: HTAB 19: CALL  -958: GOTO 1900
  193. 1930  CALL  -958
  194. 1940 LN =  INT( VAL(LN$)):L1 = LN
  195. 1950  IF LN/10 < > INT(LN/10)  THEN LN = LN +1: GOTO 1950: REM MAKE MULTIPLE OF 10
  196. 1960 F1 = LN/10:F2 = 2 +2 *(F1 = 2) +3 *(F1 = 3) +2 *(F1 = 4) +3 *(F1 = 5) +8 *(F1 >5):SC = 10 *F1/F2: REM SCALE X-AXIS
  197. 1970  CALL 62450: HOME : POKE  -16300,0: POKE  -16301,0: POKE  -16297,0: POKE  -16304,0: REM GRAPHICS PG1
  198. 1980 ST = 16: GOSUB 640:X$ = "GARDEN PLANNER":H = (((260 *L1)/LN) -19)/2 -3 * LEN(X$) +19:V = 4: GOSUB 780:V = 5: GOSUB 780
  199. 1990  HPLOT 19,10 TO 19 +(260 *L1)/LN,10 TO 19 +(260 *L1)/LN,147 TO 19,147 TO 19,10
  200. 2000 X$ = "FT.":H = 10:V = 155: GOSUB 780
  201. 2010  FOR I = 19 TO 19 +(260 *L1)/LN  STEP 260/SC: HPLOT I,147 TO I,150: NEXT 
  202. 2020  FOR J = 1 TO (L1/F2) -(L1 = LN):X$ =  STR$(J *F2):H = 19 +J *(260/SC) -9 +3 *( LEN(X$) = 1):V = 155: GOSUB 780: NEXT 
  203. 2030  FOR I = 19 TO 147  STEP 17: HPLOT 13,I TO 19,I: NEXT 
  204. 2040  FOR I = 1 TO 8:X$ =  STR$(I):H = 1:V =  FN V(I): GOSUB 780: NEXT 
  205. 2050 R = 1: FOR I = 1 TO 16:EC%(I) = 0: NEXT : REM START AT ROW #1,ZERO ECONOMICS COUNTER
  206. 2060  FOR I = 1 TO 16:T%(R,I) = 0: NEXT : REM ASCII SHAPES,ZERO TEMP. ECONOMICS COUNTER
  207. 2070  POKE TABLE,AS: GOSUB 640
  208. 2080  HOME : VTAB 22: PRINT " SELECT ROW TO PLANT -- USE <- -> KEYS": VTAB 23: PRINT " <RETURN> TO ACCEPT  -- <ESC> TO QUIT": POKE 35,21: HOME 
  209. 2090  DRAW R +17 AT 7, FN V(R): IF  PEEK(KD) >128  THEN  POKE KB,0: GOTO 2110
  210. 2100  XDRAW R +17 AT 7, FN V(R): GOTO 2090
  211. 2110  IF  PEEK(KD) = 27  THEN  HOME : TEXT : GOTO 1220: REM <ESC>
  212. 2120  IF  PEEK(KD) = 13  THEN 2210: REM ROW IS CHOSEN AND=R
  213. 2130  IF  PEEK(KD) < >8  AND  PEEK(KD) < >11  THEN 2150
  214. 2140  GOSUB 710: GOTO 2090: REM UP
  215. 2150  IF  PEEK(KD) < >10  AND  PEEK(KD) < >21  THEN 2180: REM DOWN
  216. 2160  GOSUB 720: GOTO 2090: REM DOWN ONE
  217. 2170  GOTO 2090
  218. 2180  PRINT  CHR$(7): GOTO 2090
  219. 2190  IF LN <6  THEN  TEXT : HOME : VTAB 10: HTAB 10: PRINT "NO LAYOUT IN PROGRESS!": GOSUB 690: GOTO 1220
  220. 2200  POKE  -16301,0: POKE  -16304,0: POKE  -16300,0: HOME : GOTO 2070
  221. 2210  POKE 35,24: HOME : VTAB 22: PRINT " SELECT CHOICE :     PLANT ROW "R: VTAB 23: PRINT " USE ARROW KEYS" TAB( 18)"  RE-SELECT ROW": PRINT "<RETURN> ACCEPTS   <ESC>=RE-SELECT";: CALL CUR,22,23,19,35:LINE =  PEEK(4)
  222. 2220  ON LINE GOTO 2240
  223. 2230  HOME : GOTO 2070
  224. 2240  FOR I = 1 TO 16: IF T%(R,I) >0  THEN I = 16: NEXT : GOTO 2260
  225. 2250  NEXT : GOTO 2280
  226. 2260  FOR I = 1 TO 16: IF T%(R,I) >0  THEN EC%(I) = EC%(I) -T%(R,I):T%(R,I) = 0: NEXT : GOTO 2280
  227. 2270  NEXT 
  228. 2280 RW = 0:R1 = 1:R2 = (260 *L1)/LN: GOSUB 650: REM ERASE ROW FOR PLANTING & ZERO PLANTED LENGTH
  229. 2290  HOME : POKE TABLE,AS: GOSUB 640: REM ASCII SHAPES
  230. 2300  POKE  -16302,0: REM FULL GRAPHICS
  231. 2310 X$ = "-SELECT GRAPHIC-":V = 164:H = 1: GOSUB 780:X$ = "USE  ARROW  KEYS":V = 172: GOSUB 780:X$ = "<RETURN> ACCEPTS":V = 180: GOSUB 780:X$ = "<ESC>=ROW SELECT":V = 188: GOSUB 780
  232. 2320 X$ = "'?' FOR HELP":V = 176:H = 160: GOSUB 780
  233. 2330 A = 132:B = A +16:C = 167:D = C +20
  234. 2340  HPLOT A,C TO B,C TO B,D TO A,D TO A,C: HPLOT A -1,C -1 TO B +1,C -1 TO B +1,D +1 TO A -1,D +1 TO A -1,C -1: REM DRAW SHAPE BOX
  235. 2350  POKE TABLE,VG: GOSUB 640: REM VEG SHAPES
  236. 2360 S = 1: GOSUB 660: REM FIRST SHAPE
  237. 2370  POKE KB,0: GET X$: IF X$ =  CHR$(27)  THEN  GOSUB 670: HOME : POKE  -16301,0: GOTO 2070
  238. 2380  IF X$ =  CHR$(11)  OR X$ =  CHR$(8)  OR X$ =  CHR$(21)  OR X$ =  CHR$(10)  THEN  GOSUB 670: REM ARROWS
  239. 2390  IF X$ =  CHR$(63)  THEN  GOSUB 680: GOTO 2370: REM HELP (?)
  240. 2400  IF X$ < > CHR$(8)  AND X$ < > CHR$(11)  THEN 2420
  241. 2410 S = S -1 +16 *(S = 1): GOTO 2440: REM DOWN ONE OR WRAP AROUND
  242. 2420  IF X$ < > CHR$(21)  AND X$ < > CHR$(10)  THEN 2450
  243. 2430 S = S +1 -16 *(S = 16): REM UP ONE OR WRAP
  244. 2440  GOSUB 660: GOTO 2370: REM DRAW & GET ANOTHER
  245. 2450  IF X$ < > CHR$(13)  THEN  PRINT  CHR$(7): GOTO 2370
  246. 2460  POKE 35,24: HOME : POKE  -16301,0: VTAB 24: PRINT "PRESS <RETURN> TO EXIT WITHOUT ENTRY";: HTAB 1
  247. 2470  VTAB 22: PRINT "PLANT HOW MANY FEET? (0-"L1 -RW") ";: INPUT "";X$: IF X$ = ""  THEN  POKE  -16302,0: GOTO 2370
  248. 2480  IF  VAL(X$) < = 0  THEN  PRINT  CHR$(7);: GOTO 2460: REM NOT NUMBERS
  249. 2490  IF  VAL(X$) >L1 -RW  THEN  HOME : VTAB 22: PRINT  CHR$(7);: PRINT "ENTRY LONGER THAN GARDEN ROW!": VTAB 24: PRINT "PRESS <RETURN> TO CONTINUE..";: POKE KB,0: GET X$: GOTO 2460
  250. 2500  HOME :R1 = RW:RW = RW + INT( VAL(X$)):R2 = RW:T%(R,S) = T%(R,S) + INT( VAL(X$)): REM ADD NEW LENGTH OF ROW
  251. 2510  FOR I = (260 *R1)/LN TO (260 *R2)/LN  STEP VG%(S): IF I >260 *R2/LN -12  THEN  NEXT : GOTO 2530
  252. 2520  DRAW S AT I +19, FN V(R) -8: NEXT 
  253. 2530 R3 = R1:R4 = R2:R1 = (260 *RW)/LN:R2 = (260 *L1)/LN: REM ERASE TO END OF ROW
  254. 2540  IF R2 = R1  THEN 2560: REM END OF ROW
  255. 2550  GOSUB 650
  256. 2560 R1 = R3:R2 = R4: REM RESTORE ROW PARMS
  257. 2570  IF L1 -RW >0  THEN RW = R2: POKE  -16302,0: GOSUB 2590: GOTO 2370: REM MORE ROW TO FILL
  258. 2580  GOSUB 670: GOSUB 2590: GOSUB 720: GOTO 2070: REM ADD ROW TOTALS AND RESELECT ROW
  259. 2590 EC%(S) = EC%(S) +T%(R,S): RETURN 
  260. 2600  REM 
  261. 2610  REM DISK/GRAPHICS UTILITIES
  262. 2620  REM 
  263. 2630  TEXT : HOME : PRINT  TAB( 9)"GRAPHIC/DISK UTILITIES": PRINT L$: PRINT 
  264. 2640  POKE EM,2
  265. 2650  ONERR  GOTO 3770
  266. 2660  VTAB 6: PRINT  TAB( 11)" VIEW GARDEN LAYOUT ": PRINT : PRINT  TAB( 11)" SAVE GARDEN LAYOUT "
  267. 2670  PRINT : PRINT  TAB( 11)" LOAD GARDEN LAYOUT "
  268. 2680  PRINT : PRINT  TAB( 12)"SELECT DISK DRIVE"
  269. 2690  IF (GP = 1  AND GP$ < >"")  THEN  PRINT : PRINT  TAB( 11)"PRINT GARDEN LAYOUT "
  270. 2700  GOSUB 480
  271. 2710  CALL CUR,6,17,10,30
  272. 2720  GOSUB 970
  273. 2730 S% = LINE: REM LOAD FILE FLAG
  274. 2740  ON LINE +(LINE = 6  AND GP = 0) GOTO 2760,2810,2990,2770,3070,3110
  275. 2750  GOTO 1080: REM MAIN MENU
  276. 2760  HOME : POKE  -16297,0: POKE  -16301,0: POKE  -16300,0: POKE  -16304,0: GOSUB 690: GOTO 2630: REM SEE GRAPHIC
  277. 2770  HOME : PRINT  TAB( 12)"SELECT DISK DRIVE": PRINT L$: GOSUB 480: VTAB 6: HTAB 13: PRINT "ACTIVE DRIVE=";: INVERSE : PRINT  PEEK(43624): NORMAL 
  278. 2780  VTAB 11: HTAB 16: PRINT "DRIVE #1": PRINT : HTAB 16: PRINT "DRIVE #2"
  279. 2790  CALL CUR,11,13,15,24: GOSUB 970: IF LINE <1  THEN 2630: REM <ESC>
  280. 2800  POKE 43624,LINE:F$ = "": GOTO 2630: REM NEW DRIVE/NULL FILE NAME
  281. 2810  HOME : HTAB 11: PRINT  TAB( 10)"SAVE GARDEN LAYOUT": PRINT L$: PRINT : GOSUB 480
  282. 2820  VTAB 9: HTAB 12: PRINT "ENTER LAYOUT NAME": PRINT : HTAB 17: PRINT "CATALOG"
  283. 2830  CALL CUR,9,12,11,29
  284. 2840  GOSUB 970: ON LINE GOTO 2860,2940
  285. 2850  GOTO 2630: REM  <ESC>
  286. 2860  VTAB 3: CALL  -958: VTAB 23: PRINT "<RETURN> WITHOUT ENTRY EXITS ROUTINE";
  287. 2870 X$ = "": VTAB 10: HTAB 11: PRINT "ENTER LAYOUT NAME": PRINT  TAB( 6)"(10 CHARACTERS MAX + '.LO')": VTAB 12: FOR I = 1 TO 10:X$ = X$ + CHR$(95): NEXT 
  288. 2880  PRINT : PRINT "NAME -> ";X$: VTAB 13: HTAB 9: INPUT "";N$: IF  LEN(N$) >10 +4 *(S% = 3) +4 *( RIGHT$(N$,4) = ".LO"  AND S% = 2)  THEN  PRINT  CHR$(7);: GOTO 2860
  289. 2890  IF N$ = ""  THEN 2630
  290. 2900  IF  ASC(N$) <65  OR  ASC(N$) >90  THEN  PRINT  CHR$(7): GOTO 2870
  291. 2910  IF S% = 3  THEN S% = 0: GOTO 3000
  292. 2920  VTAB 15: IF  RIGHT$(N$,3) < >".LO"  THEN N$ = N$ +".LO"
  293. 2930 X$ = N$: PRINT "FILE NAME=";X$: PRINT : PRINT D$BS$X$AD$LE$: GOTO 2630: REM SAVE LAYOUT
  294. 2940  HOME : PRINT D$"CATALOG": PRINT : PRINT : CALL  -958: GOSUB 690
  295. 2950  IF S% = 2  THEN 2810
  296. 2960  IF S% = 3  THEN 2990
  297. 2970  GOTO 2810
  298. 2980  HOME : GOTO 2630
  299. 2990  HOME : HTAB 11: PRINT "LOAD LAYOUT FILE": PRINT L$: GOSUB 480: GOSUB 1060: GOSUB 950: GOTO 2820
  300. 3000  VTAB 15: PRINT :X$ = N$: IF  RIGHT$(X$,3) < >".LO"  THEN X$ = X$ +".LO"
  301. 3010  PRINT "FILE NAME=";X$: PRINT : PRINT D$BL$X$AD$:S = 0:R = 0: GOTO 2630: REM LOAD FILE,ZERO FLAGS
  302. 3020  VTAB 20: INVERSE : PRINT "DISK ERROR OR BAD FILE NAME-TRY AGAIN": NORMAL : GOSUB 690: POKE 216,0: GOTO 2810
  303. 3030  HOME : TEXT : IF LN <6  THEN  VTAB 10: HTAB 10: PRINT "NO LAYOUT IN PROGRESS!": GOSUB 690: GOTO 2630
  304. 3040  IF R >0  AND S >0  THEN 1220
  305. 3050  PRINT : VTAB 10: PRINT "NO GARDEN BEING PLANTED!": GOSUB 690: GOTO 2630
  306. 3060  REM PRINT GRAPHICS
  307. 3070  IF GP = 0  THEN 1080: REM MAIN MENU
  308. 3080  HOME : VTAB 10: PRINT  TAB( 5)"BE SURE PRINTER IS ON.."
  309. 3090  VTAB 24: PRINT "<ESC>= STOP PRINTER  <RETURN>= CONTINUE";: GOSUB 700: IF X$ =  CHR$(27)  THEN 2630
  310. 3100  HOME : HCOLOR= 0: FOR I = 161 TO 191: HPLOT 0,I TO 279,I: NEXT : HCOLOR= 3: PRINT : PRINT D$"PR#";SL: PRINT GP$: PRINT : HOME : PRINT D$"PR#0": GOTO 2630
  311. 3110  GOTO 1080: REM MAIN MENU
  312. 3120  REM   GARDEN ECONOMICS
  313. 3130 U = 0:U$ = "":P = 0:P$ = "":T = 0:LB = 0:LB$ = "":T$ = "": FOR I = 1 TO 4:S$(I) = "": NEXT : HOME : FOR I = 1 TO 16: IF EC%(I) < >0  THEN I = 16: NEXT : GOTO 3160: REM AT LEAST ONE ENTRY
  314. 3140  NEXT 
  315. 3150  VTAB 10: PRINT "NOTHING PLANTED-NO ESTIMATE POSSIBLE": GOSUB 690: GOTO 1220
  316. 3160  HOME : VTAB 22: PRINT L$: HTAB 1: VTAB 23: PRINT "  <RETURN> FOR NO ENTRY OR TO ADVANCE": GOSUB 940: POKE 35,21: HOME 
  317. 3170  FOR I = 1 TO 16: IF EC%(I) = 0  THEN  NEXT : GOTO 3440
  318. 3180  POKE 35,20: HOME : POKE 35,22
  319. 3190  VTAB 5: HTAB 1: INVERSE : PRINT EC%(I);: NORMAL : PRINT " FT. OF "VG$(I)" PLANTED"
  320. 3200  VTAB 12: PRINT "E.G. 5 ONIONS/FT @ .10/ONION": PRINT "OR  2 LBS TOMATOES/FT @ .29/LB":U$ = ""
  321. 3210  HTAB 1: VTAB 10: PRINT "EST. UNITS/FT = ";:
  322. 3220  GET X$: PRINT X$;: IF X$ =  CHR$(27)  THEN 1220
  323. 3230  IF X$ =  CHR$(8)  AND  LEN(U$) <2  THEN  POKE KB,0:U$ = "": PRINT  CHR$(7);: GOTO 3210
  324. 3240  IF X$ =  CHR$(8)  THEN U$ =  LEFT$(U$, LEN(U$) -1): PRINT " "; CHR$(8);: GOTO 3220
  325. 3250  IF X$ =  CHR$(13)  AND U$ = ""  THEN U = 0: GOTO 3390
  326. 3260  IF X$ =  CHR$(13)  THEN 3280
  327. 3270 U$ = U$ +X$: GOTO 3220
  328. 3280 X$ = U$: GOSUB 730:U$ = X$: IF ER  THEN ER = 0: PRINT  CHR$(7): GOTO 3180: REM ERROR IN INPUT
  329. 3290 U =  VAL(U$): REM TOTAL UNITS
  330. 3300  HTAB 1: VTAB 18: PRINT  TAB( 5)"ENTER DECIMAL NUMBERS ONLY *"
  331. 3310  VTAB 16: CALL  -868: HTAB 1: PRINT "EST. RETAIL COST PER UNIT = ";:P$ = ""
  332. 3320  GET X$: PRINT X$;: IF X$ =  CHR$(27)  THEN 1220
  333. 3330  IF X$ =  CHR$(8)  AND  LEN(P$) <2  THEN  POKE KB,0:P$ = "": PRINT  CHR$(7);: GOTO 3310
  334. 3340  IF X$ =  CHR$(8)  THEN P$ =  LEFT$(P$, LEN(P$) -1): PRINT " "; CHR$(8);: GOTO 3320
  335. 3350  IF X$ =  CHR$(13)  AND P$ = ""  THEN P = 0: GOTO 3390
  336. 3360  IF X$ =  CHR$(13)  THEN 3380
  337. 3370 P$ = P$ +X$: GOTO 3320
  338. 3380 X$ = P$: GOSUB 730:P$ = X$: IF ER  THEN ER = 0: PRINT  CHR$(7): GOTO 3300
  339. 3390 P =  VAL(P$):T = EC%(I) *U *P +T:T =  INT(100 *T +.5)/100 +.001:T$ =  LEFT$( STR$(T), LEN( STR$(T)) -1)
  340. 3400  IF T <.01  THEN T$ = "0.00"
  341. 3410 X$ = T$: GOSUB 820:T$ = X$
  342. 3420  VTAB 21: HTAB 7: PRINT " RETAIL VALUE=$";T$;: CALL  -868
  343. 3430  NEXT 
  344. 3440  POKE 35,20: HOME 
  345. 3450  FOR I = 1 TO 4: REM GARDEN EXPENSES
  346. 3460  VTAB 3: HTAB 1: CALL  -868: HTAB 12: PRINT "GARDEN ASSETS = $";: HTAB 33 -(T = 0) -(T =  >1) -(T =  >10) -(T =  >100) -(T =  >1000)
  347. 3470  IF  VAL(T$) <.01  THEN T$ = "0.00"
  348. 3480  PRINT T$
  349. 3490  VTAB 8: HTAB 1: CALL  -958: HTAB 1: PRINT "INPUT COST OF :"
  350. 3500  PRINT : INVERSE : PRINT EX$(I): NORMAL 
  351. 3510  PRINT : PRINT  TAB( 16)"$ ";: FOR K = 1 TO 6: PRINT  CHR$(95);: NEXT : HTAB 18: GET X$: PRINT X$;: IF X$ =  CHR$(27)  THEN S = 0:S$ = "": GOTO 1220
  352. 3520  IF X$ =  CHR$(13)  THEN  NEXT : GOTO 3590
  353. 3530  INPUT "";S$(I):S$(I) = X$ +S$(I)
  354. 3540 X$ = S$(I): GOSUB 730: IF ER  THEN ER = 0: PRINT  CHR$(7):S$(I) = "": GOTO 3490
  355. 3550 LB =  VAL(S$(I)) + VAL(LB$):LB =  INT(100 *LB +.5)/100 +.001:LB$ =  STR$(LB)
  356. 3560 X$ = LB$: GOSUB 820:LB$ = X$
  357. 3570  IF  VAL(LB$) <.01  THEN LB$ = "0.00"
  358. 3580  VTAB 4: HTAB 1: CALL  -868: HTAB 12: PRINT "EXPENSES      = $";: HTAB 33 -(LB = 0) -(LB =  >1) -(LB =  >10) -(LB =  >100) -(LB =  >1000): PRINT LB$;: CALL  -868: NEXT : REM 6 SPCS
  359. 3590  POKE 35,24: VTAB 7: CALL  -958
  360. 3600 NT =  VAL(T$) - VAL(LB$):NT =  INT(100 *NT +.5)/100 +.001 -(NT <0) *.002:NT$ =  STR$(NT):X$ = NT$: GOSUB 820:NT$ = X$
  361. 3610  IF NT <0  THEN 3630
  362. 3620  IF  VAL(NT$) <.01  AND  VAL(NT$) =  >0  THEN NT$ = "0.00"
  363. 3630  VTAB 5: HTAB 29: FOR I = 1 TO 8: PRINT  CHR$(95);: NEXT : VTAB 6: HTAB 15: PRINT "GARDEN NET = $ ";: HTAB 33 -2 *(NT <0) -(NT < -10) -(NT < -100) -(NT = 0) -(NT =  >1) -(NT > = 10) -(NT > = 100) -(NT > = 1000): PRINT NT$;: CALL  -958
  364. 3640  PRINT : VTAB 10: PRINT EX$(1): VTAB 12: PRINT EX$(2): VTAB 14: PRINT "INSECTICIDES, ETC.": VTAB 16: PRINT EX$(4)
  365. 3650  FOR I = 1 TO 4:X$ = S$(I): GOSUB 820:S$(I) = X$: VTAB 8 +2 *I
  366. 3660  HTAB 28: PRINT "$";
  367. 3670  HTAB 33 -( VAL(S$(I)) = 0) -( VAL(S$(I)) =  >1) -( VAL(S$(I)) > = 10) -( VAL(S$(I)) > = 100) -( VAL(S$(I)) > = 1000): PRINT S$(I): NEXT 
  368. 3680  GOSUB 920
  369. 3690  GOSUB 700: IF PT = 1  AND (X$ = "P"  OR X$ =  CHR$(112))  THEN  VTAB 18: HTAB 1: CALL  -958: PRINT L$: PRINT : ON SD GOTO 3710: VTAB 23: PRINT  TAB( 8)"PRESS <ESC> TO CANCEL PRINT": GOTO 3730: REM TYPE OF SCREEN PRINT
  370. 3700  GOTO 1220: REM NO PRINT-BACK TO PLANNER MENU
  371. 3710  IF SD = 1  THEN  VTAB 17: CALL  -958: PRINT : GOSUB 1000: GOTO 3740
  372. 3720  REM GENERIC SCREEN DUMP
  373. 3730  GOSUB 1010
  374. 3740  TEXT : HOME : GOSUB 690: GOTO 1220: REM PLANNER MENU
  375. 3750  HOME : VTAB 12: PRINT "<RETURN> TO RUN CONFIGURE": PRINT : PRINT "<ESC> FOR MAIN MENU";: GET Z$: PRINT : ON Z$ =  CHR$(27) GOTO 1080: PRINT D$"RUN CONFIGURE"
  376. 3760  REM ERROR TRAP
  377. 3770  GOSUB 960: REM NO ONERR
  378. 3780  IF ER = 6  THEN X$ = "GRAPHIC NOT ON THIS DISK":Y$ = "CHECK NAME OR SELECT OTHER DISK": GOTO 3830
  379. 3790  IF ER = 4  THEN X$ = "DISK WRITE PROTECTED":Y$ = "REMOVE WRITE-PROTECT TAB": GOTO 3830
  380. 3800  IF ER = 8  THEN X$ = "DISK I/O PROBLEM":Y$ = "CHECK DRIVE DOOR OR DISK POSITION":F$ = "": GOTO 3830
  381. 3810  IF ER = 9  THEN X$ = "THIS DISK IS FULL":Y$ = "INSERT OTHER DISK OR CHANGE DRIVES": GOTO 3830
  382. 3820  VTAB 10: PRINT " ERROR #"; PEEK(222)" IN LINE "; PEEK(219) *256 + PEEK(218): PRINT : PRINT "TAKE APPROPRIATE ACTION ": GOTO 3850
  383. 3830  PRINT  TAB( 10)"*** DISK ERROR ***": PRINT L$
  384. 3840  VTAB 6: INVERSE : PRINT "PROBLEM:": NORMAL : PRINT : PRINT X$: VTAB 13: INVERSE : PRINT "POSSIBLE SOLUTION:": NORMAL : PRINT : PRINT Y$
  385. 3850  GOSUB 690
  386. 3860  HOME :I =  PEEK(EM): POKE EM,0: ON I GOTO 3980,2630,390,3750
  387. 3870  GOTO 1080: REM MAIN MENU
  388. 3880  GOSUB 960: IF ER < >6  THEN 3790
  389. 3890  VTAB 5: HTAB 1: PRINT "THESE FILES MUST BE ON THE DISK:": VTAB 8: HTAB 1: PRINT "PG.GUIDE, PG.NAMES, CURSOR.BAR.4": PRINT " TEXT.SHAPES & VEG.SHAPES": VTAB 11: PRINT "NOT ALL WERE FOUND."
  390. 3900  VTAB 19: PRINT "PRESS <RETURN> TO QUIT PROGRAM.";: POKE KB,0: GET X$: PRINT : END 
  391. 3910  HOME : GOTO 3890
  392. 3920  REM NO CONFIG. FILE
  393. 3930  ONERR  GOTO 4030
  394. 3940  HOME : VTAB 12: HTAB 1: PRINT "NO GP.CONFIG FILE FOUND": PRINT "<RETURN> TO RUN CONFIGURE": PRINT : PRINT "<ESC> TO QUIT";: GET Z$: PRINT : IF Z$ < > CHR$(27)  THEN  PRINT D$"RUN CONFIGURE"
  395. 3950  END 
  396. 3960  GOTO 3760: REM OTHER ERROR
  397. 3970  REM ONERR FROM DISK/GRAPHICS AREA
  398. 3980  PRINT : GOTO 370: REM RE- CONFIG
  399. 3990 ER =  PEEK(222): IF ER = 6  THEN 3930
  400. 4000  GOTO 3770
  401. 4010  POKE EM,3:ER =  PEEK(222): IF ER = 6  THEN  TEXT : HOME : VTAB 10: PRINT "FILE NOT FOUND ON DISK": PRINT : PRINT "FATAL ERROR--CANNOT CONTINUE": END 
  402. 4020  GOTO 3770: REM OTHER ERROR
  403. 4030 ER =  PEEK(222): IF ER = 6  THEN  HOME : VTAB 12: PRINT "CONFIGURE NOT ON THIS DISK": PRINT : PRINT "RETURN TO TRY AGAIN, <ESC> TO QUIT";: GET Z$: PRINT : ON Z$ =  CHR$(27) GOTO 3950: PRINT D$"RUN CONFIGURE"
  404. 4040  GOTO 3770