home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / bc_sf / sf-place.bas < prev    next >
Encoding:
BASIC Source File  |  1987-05-02  |  28.2 KB  |  793 lines

  1. 1 REM Filename:   SF-PLACE
  2. 2     K$="Copyright Frederick G. Volking 1986"
  3. 3     K$="6891 gnikloV .G kcirederF thgirypoC"
  4. 100     KEY OFF : CLS : GOSUB 16000
  5. 110     DIM SCR$(23)
  6. 120     DIM ENTEST$(9) : GOSUB 41000
  7. 130     REPL$=CHR$(254) : REPL1$=CHR$(220) : REPL2$=CHR$(219)
  8. 160     DIM VARDIC$(99),VARTYP%(99),VARLEN%(99),VARMSK%(99)
  9. 170     DIM VARVAR$(99),VARROW%(99),VARCOL%(99)
  10. 180     MAXVARS%=99
  11. 190     DIM WIN%(1,23,80) : GOSUB 45000
  12. 1000 REM start
  13. 1010    GOSUB 42200 :REM get system info
  14. 1020    GOSUB 42330 :REM get data file information
  15. 1030    TCFILE$=BCFILE$
  16. 1040    GOSUB 42250 :REM test PIC file for existance
  17. 1045    CLS : GOSUB 20000 :REM show screen
  18. 1050    IF TCFILE$<>BCFILE$ THEN GOSUB 22000 : GOTO 1075
  19. 1055    GOSUB 43000
  20. 1060    GOSUB 20000 :REM show screen
  21. 1070    GOSUB 20100 :REM show varbs
  22. 1075    REM jump for default acceptance
  23. 1080        IF CX%<1 THEN CX%=1
  24. 1090        IF CY%<1 THEN CY%=1
  25. 1100    GOSUB 20060
  26. 10000 REM cycle & recycle character collection
  27. 10050   LOCATE CX%,CY%,1,0,7
  28. 10100   K$=INKEY$ : IF K$="" THEN GOTO 10100
  29. 10150   IF INSTR(ENTEST$(3),K$)>0 THEN GOTO 10800
  30. 10200   IF LEN(K$)=1 THEN K%=INT((INSTR(37,ENTEST$(0),K$)+1)/2) : GOTO 10300
  31. 10250   K%=INT((INSTR(ENTEST$(0),K$)+1)/2)
  32. 10300   ON K% GOTO 10510,15000,15100,10310,15200,10310,17000,15300,10310,13000,11000,11100,11200,11300,11400,11500,11700,11600,11900,12000,12100,15400,11800
  33. 10310   SOUND 50,3
  34. 10320   GOTO 10000
  35. 10510   HELP%=361  : GOSUB 45100 : GOTO 10000 :REM F1
  36. 10800 REM character good process
  37. 10803    IF K$=CHR$(34) THEN SOUND 50,3 : GOTO 10000
  38. 10805    IF CLR%=1 THEN COLOR CLR0%
  39. 10810    PRINT K$;
  40. 10830    SCR$(CX%)=LEFT$(SCR$(CX%),(CY%-1))+K$+RIGHT$(SCR$(CX%),(80-CY%))
  41. 10840    GOTO 11300
  42. 11000 REM up
  43. 11010   CX%=CX%-1
  44. 11020   IF CX%<1 THEN CX%=23
  45. 11030   GOTO 10000
  46. 11100 REM down
  47. 11110   CX%=CX%+1
  48. 11120   IF CX%>23 THEN CX%=1
  49. 11130   GOTO 10000
  50. 11200 REM left
  51. 11210   CY%=CY%-1
  52. 11220   IF CY%<1 THEN CY%=80
  53. 11230   GOTO 10000
  54. 11300 REM right
  55. 11310   CY%=CY%+1
  56. 11320   IF CY%>80 THEN CY%=1
  57. 11330   GOTO 10000
  58. 11400 REM home
  59. 11410   CY%=1
  60. 11420   GOTO 10000
  61. 11500 REM end
  62. 11505   CY%=1
  63. 11510   FOR T%=80 TO 1 STEP (-1)
  64. 11520      IF MID$(SCR$(CX%),T%,1)=" " THEN GOTO 11550
  65. 11530      CY%=T%
  66. 11540      T%=1
  67. 11550      NEXT
  68. 11560      GOTO 10000
  69. 11600 REM delete
  70. 11610    SCR$(CX%)=LEFT$(SCR$(CX%),(CY%-1))+RIGHT$(SCR$(CX%),(80-CY%))+" "
  71. 11620    LOCATE CX%,1
  72. 11625    IF CLR%=1 THEN COLOR CLR0%
  73. 11630    PRINT SCR$(CX%);
  74. 11640    GOTO 10000
  75. 11700 REM insert
  76. 11710    SCR$(CX%)=LEFT$(LEFT$(SCR$(CX%),(CY%-1))+" "+RIGHT$(SCR$(CX%),(81-CY%)),80)
  77. 11720    LOCATE CX%,1
  78. 11725    IF CLR%=1 THEN COLOR CLR0%
  79. 11730    PRINT SCR$(CX%);
  80. 11740    GOTO 10000
  81. 11800 REM backspace
  82. 11810    CY%=CY%-1
  83. 11820    IF CY%<1 THEN CY%=80
  84. 11830    SCR$(CX%)=LEFT$(SCR$(CX%),(CY%-1))+RIGHT$(SCR$(CX%),(80-CY%))+" "
  85. 11840    LOCATE CX%,1
  86. 11845    IF CLR%=1 THEN COLOR CLR0%
  87. 11850    PRINT SCR$(CX%);
  88. 11860    GOTO 10000
  89. 11900 REM tab
  90. 11910    CY%=INT((CY%+10)/10)*10
  91. 11920    IF CY%>80 THEN CY%=1
  92. 11930    GOTO 10000
  93. 12000 REM Shift-tab
  94. 12010    IF CY%=1 THEN CY%=80
  95. 12020    CY%=(INT((CY%-1)/10))*10
  96. 12030    IF CY%=0 THEN CY%=1
  97. 12040    GOTO 10000
  98. 12100 REM carriage return
  99. 12110    CX%=CX%+1
  100. 12120    IF CX%>23 THEN CX%=1
  101. 12130    CY%=1
  102. 12140    FOR T%=1 TO 80
  103. 12150       IF MID$(SCR$(CX%-1),T%,1)=" " THEN GOTO 12180
  104. 12160       CY%=T%
  105. 12170       T%=80
  106. 12180       NEXT
  107. 12190    GOTO 10000
  108. 13000 REM variable display
  109. 13010    GOSUB 20400
  110. 13020   REM branch in for new active variable
  111. 13030    GOSUB 13400
  112. 13050    VX%=VARROW%(CV%) : IF VX%<1 THEN VX%=23: VARROW%(CV%)=VX%
  113. 13060    VY%=VARCOL%(CV%) : IF VY%<1 THEN VY%=79-VARLEN%(CV%) : VARCOL%(CV%)=VY%
  114. 13070    VL%=VARLEN%(CV%)
  115. 13090    REM cycle & recycle key get
  116. 13095      K$=""
  117. 13097      IF VY%+VL%>81 THEN RP$=CHR$(175) ELSE RP$=REPL1$
  118. 13100      FOR T%=0 TO (VL%-1)
  119. 13101         IF CLR%=1 THEN COLOR CLR7%
  120. 13102         LOCATE 24,78 : PRINT USING "##"; CV%;
  121. 13105         IF K$>"" OR VY%+T%>80 THEN T%=(VL%-1) : GOTO 13160
  122. 13110         LOCATE VX%,(VY%+T%)
  123. 13113         IF CLR%=1 THEN COLOR CLR0%
  124. 13115         PRINT RP$;
  125. 13120         K$=INKEY$
  126. 13130         IF CLR%=1 THEN COLOR CLR7%
  127. 13160         LOCATE 24,78 : PRINT CHR$(219)+CHR$(219);
  128. 13170         NEXT
  129. 13200      LOCATE VX%,VY%,0,0,0
  130. 13210      IF CLR%=1 THEN COLOR CLR0%
  131. 13220      PRINT MID$(SCR$(VX%),VY%,VL%);
  132. 13230      IF K$="" THEN GOTO 13090
  133. 13235   REM branch in for new variable
  134. 13240      IF INSTR("0123456789",K$)>0 THEN GOTO 13600
  135. 13250      IF LEN(K$)=1 THEN K%=INT((INSTR(37,ENTEST$(0),K$)+1)/2) : GOTO 13290
  136. 13260      K%=INT((INSTR(ENTEST$(0),K$)+1)/2)
  137. 13270   REM branch in for test of code input direction
  138. 13290      ON K% GOTO 13301,13300,13800,13300,13300,13300,13300,13300,13309,13300,14000,14100,14200,14300,14400,14500,13300,13300,14600,14700,14800,14900
  139. 13300      SOUND 50,3 : GOTO 13090
  140. 13301    HELP%=382 : GOSUB 45100 : GOTO 13090 :REM F1
  141. 13309    GOSUB 20100 : GOTO 13090 :REM F9
  142. 13400  REM display a variable on the command line
  143. 13431    LOCATE 24,15
  144. 13432         IF CLR%=1 THEN COLOR CLR3%
  145. 13433    PRINT "Code:";
  146. 13434         IF CLR%=1 THEN COLOR CLR7%
  147. 13435    PRINT RIGHT$(STR$(CV%),2);
  148. 13436         IF CLR%=1 THEN COLOR CLR3%
  149. 13437    PRINT " Row:";
  150. 13438         IF CLR%=1 THEN COLOR CLR7%
  151. 13440    PRINT RIGHT$(STR$(VARROW%(CV%)),2);
  152. 13441         IF CLR%=1 THEN COLOR CLR3%
  153. 13442    PRINT " Col:";
  154. 13443         IF CLR%=1 THEN COLOR CLR7%
  155. 13444    PRINT RIGHT$(STR$(VARCOL%(CV%)),2);
  156. 13445         IF CLR%=1 THEN COLOR CLR3%
  157. 13446    PRINT " Len:";
  158. 13447         IF CLR%=1 THEN COLOR CLR7%
  159. 13448    PRINT RIGHT$(STR$(VARLEN%(CV%)),2);
  160. 13449         IF CLR%=1 THEN COLOR CLR3%
  161. 13450    PRINT " Name:";
  162. 13451         IF CLR%=1 THEN COLOR CLR7%
  163. 13452    PRINT LEFT$(VARDIC$(CV%)+SPACE$(20),20);
  164. 13453         IF CLR%=1 THEN COLOR CLR3%
  165. 13454    PRINT "   Code:  ";
  166. 13520       RETURN
  167. 13600 REM process incomming new numerical character
  168. 13602    HELP%=488
  169. 13604    LOCATE VARROW%(CV%), VARCOL%(CV%),0
  170. 13606    IF CLR%=1 THEN COLOR CLR6%
  171. 13608    PRINT LEFT$(REPL$+RIGHT$(STR$(CV%),(LEN(STR$(CV%))-1))+(STRING$(VARLEN%(CV%),REPL$)),VARLEN%(CV%));
  172. 13610    ENCHAR$=K$
  173. 13620    ENROW%=24
  174. 13630    ENCOL%=78
  175. 13640    ENLEN%=2
  176. 13650    ENTEST%=4
  177. 13660    ENKIND%=0
  178. 13670    ENDFLT$=RIGHT$(STR$(CV%),2)
  179. 13682    LOCATE ENROW%,ENCOL%,0,0,7
  180. 13683    IF CLR%=1 THEN COLOR CLR0%
  181. 13684    IF ENKIND%=0 THEN PRINT (LEFT$(ENDFLT$+STRING$(ENLEN%,249),ENLEN%)); ELSE PRINT (RIGHT$(STRING$(ENLEN%,249)+STR$(VAL(ENDFLT$)),ENLEN%));
  182. 13686    ENPASS%=0
  183. 13688    ENRETURN$=""
  184. 13689    LOCATE ENROW%,(ENCOL%+ENPASS%),1,0,7
  185. 13690    GOSUB 40180 :REM collect remainder of
  186. 13700    IF ENPASS%=0 AND ENWAY%>0 THEN K$=ENCHAR$ : GOTO 13235
  187. 13705    IF ENPASS%=0 THEN GOTO 13090
  188. 13710    CV%=VAL(ENRETURN$)
  189. 13720    IF CV%<0 THEN CV%=0
  190. 13730    IF CV%>TOPVAR% THEN CV%=TOPVAR%
  191. 13740    IF ENWAY%>0 THEN K$=ENCHAR$ : GOTO 13235
  192. 13750    GOTO 13020
  193. 13800 REM set current variable at current position
  194. 13805    IF VY%+VARLEN%(CV%)>81 THEN GOTO 13900
  195. 13810    VARROW%(CV%)=VX%
  196. 13820    VARCOL%(CV%)=VY%
  197. 13830    GOSUB 13400
  198. 13840    LOCATE VARROW%(CV%), VARCOL%(CV%),0
  199. 13845    IF CLR%=1 THEN COLOR CLR6%
  200. 13850    PRINT LEFT$(REPL$+RIGHT$(STR$(CV%),(LEN(STR$(CV%))-1))+(STRING$(VARLEN%(CV%),REPL$)),VARLEN%(CV%));
  201. 13860    K$=""
  202. 13870    GOTO 13600
  203. 13900 REM error - attempt to set variable off screen
  204. 13910    MSG$="ERROR: Variable set off screen. <CR>:" : HELP%=402
  205. 13920    GOSUB 39000
  206. 13930    GOSUB 13400
  207. 13940    GOTO 13090
  208. 14000 REM up
  209. 14010   VX%=VX%-1
  210. 14020   IF VX%<1 THEN VX%=23
  211. 14030   GOTO 13090
  212. 14100 REM down
  213. 14110   VX%=VX%+1
  214. 14120   IF VX%>23 THEN VX%=1
  215. 14130   GOTO 13090
  216. 14200 REM left
  217. 14210   VY%=VY%-1
  218. 14220   IF VY%<1 THEN VY%=80
  219. 14230   GOTO 13090
  220. 14300 REM right
  221. 14310   VY%=VY%+1
  222. 14320   IF VY%>80 THEN VY%=1
  223. 14330   GOTO 13090
  224. 14400 REM home
  225. 14410   VY%=1
  226. 14420   GOTO 13090
  227. 14500 REM end
  228. 14505   VY%=1
  229. 14510   FOR T%=80 TO 1 STEP (-1)
  230. 14520      IF MID$(SCR$(VX%),T%,1)=" " THEN GOTO 14550
  231. 14530      VY%=T%
  232. 14540      T%=1
  233. 14550      NEXT
  234. 14560      GOTO 13090
  235. 14600 REM tab
  236. 14610    VY%=INT((VY%+10)/10)*10
  237. 14620    IF VY%>80 THEN VY%=1
  238. 14630    GOTO 13090
  239. 14700 REM Shift-tab
  240. 14710    IF VY%=1 THEN VY%=80
  241. 14720    VY%=(INT((VY%-1)/10))*10
  242. 14730    IF VY%=0 THEN VY%=1
  243. 14740    GOTO 13090
  244. 14800 REM carriage return
  245. 14810    VX%=VX%+1
  246. 14820    IF VX%>23 THEN VX%=1
  247. 14840    FOR T%=1 TO 80
  248. 14850       IF MID$(SCR$(VX%-1),T%,1)=" " THEN GOTO 14880
  249. 14860       VY%=T%
  250. 14870       T%=80
  251. 14880       NEXT
  252. 14890    GOTO 13090
  253. 14900 REM repair command line and return
  254. 14910    GOSUB 20000
  255. 14930    LOCATE VARROW%(CV%), VARCOL%(CV%),0
  256. 14935    IF CLR%=1 THEN COLOR CLR6%
  257. 14940    PRINT LEFT$(REPL$+RIGHT$(STR$(CV%),(LEN(STR$(CV%))-1))+(STRING$(VARLEN%(CV%),REPL$)),VARLEN%(CV%));
  258. 14950    CX%=VX% : CY%=VY%
  259. 14960    GOTO 10000
  260. 15000 REM f2= generate
  261. 15010     MSG$="Generate Code? Y/N:" : HELP%=410 : GOSUB 39000
  262. 15015     GOSUB 20000
  263. 15020     IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 10000
  264. 15030     GOSUB 16000
  265. 15040     GOSUB 42470 :REM put away data
  266. 15050     GOSUB 44000 :REM put away screen
  267. 15060     CLOSE : CLEAR : CLS : GOSUB 16000 : CHAIN "SF-DRAFT"
  268. 15100 REM return to data item editing
  269. 15110     MSG$="Edit Data Items? Y/N:" : HELP%=423 : GOSUB 39000
  270. 15115     GOSUB 20000
  271. 15120     IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 10000
  272. 15130     GOSUB 16000
  273. 15140     GOSUB 42470 :REM put away data
  274. 15150     GOSUB 44000 :REM put away screen
  275. 15160     CLOSE : CLEAR : CLS : GOSUB 16000 : CHAIN "SF-FACTS"
  276. 15200 REM save?
  277. 15210     MSG$="Save Screen? Y/N:" : HELP%=429 : GOSUB 39000
  278. 15215     GOSUB 20000
  279. 15220     IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 10000
  280. 15240     GOSUB 42470 :REM put away data
  281. 15250     GOSUB 44000 :REM put away screen
  282. 15260     GOTO 10000
  283. 15300 REM clear?
  284. 15310     MSG$="Clear all Variable Placements? Y/N:" : HELP%=439 : GOSUB 39000
  285. 15320     IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 15340
  286. 15330     GOSUB 21100 : GOSUB 20100
  287. 15340     REM clear screen?
  288. 15350        MSG$="Clear Screen? Y/N:" : HELP%=456 : GOSUB 39000
  289. 15355        GOSUB 20000
  290. 15360        IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 10000
  291. 15370        GOSUB 21000 : GOSUB 20100
  292. 15380     GOSUB 20060
  293. 15390     GOTO 10000
  294. 15400 REM escape to operating system
  295. 15410     MSG$="Save Information before exit? Y/N:" : HELP%=471 : GOSUB 39000
  296. 15420     IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 15450
  297. 15430     GOSUB 42470
  298. 15440     GOSUB 44000
  299. 15450     REM exit?
  300. 15460        MSG$="Exit? Y/N:" : HELP%=478 : GOSUB 39000
  301. 15465        GOSUB 20060
  302. 15470        IF ENWAY%>0 OR ENRETURN$="n" OR ENRETURN$="N" THEN GOTO 10000
  303. 15480        GOTO 65000
  304. 16000 REM clear and print working
  305. 16020    IF CLR%=1 THEN COLOR CLR0%
  306. 16030    LOCATE  9,30 : PRINT "┌──────────────┐";
  307. 16040    LOCATE 10,30 : PRINT "│ working .... │";
  308. 16050    LOCATE 11,30 : PRINT "└──────────────┘";
  309. 16060    RETURN
  310. 17000 REM graphic characters
  311. 17010    LOCATE 25,1 : PRINT SPACE$(79); : LOCATE 25,1
  312. 17015    IF CLR%=1 THEN COLOR CLR3%
  313. 17020    PRINT "Use <NumLock> to alternate between cursor control and graphic characters <ESC>";
  314. 17030    LOCATE 24,1 : PRINT SPACE$(79); : LOCATE 24,1
  315. 17032    IF CLR%=1 THEN COLOR CLR3%
  316. 17034       PRINT "   1 ";
  317. 17036    IF CLR%=1 THEN COLOR CLR4%
  318. 17038       PRINT CHR$(192);" ";
  319. 17040    IF CLR%=1 THEN COLOR CLR3%
  320. 17042       PRINT "   2 ";
  321. 17044    IF CLR%=1 THEN COLOR CLR4%
  322. 17046       PRINT CHR$(193);" ";
  323. 17048    IF CLR%=1 THEN COLOR CLR3%
  324. 17050       PRINT "   3 ";
  325. 17052    IF CLR%=1 THEN COLOR CLR4%
  326. 17054       PRINT CHR$(217);" ";
  327. 17056    IF CLR%=1 THEN COLOR CLR3%
  328. 17058       PRINT "   4 ";
  329. 17060    IF CLR%=1 THEN COLOR CLR4%
  330. 17062       PRINT CHR$(195);" ";
  331. 17064    IF CLR%=1 THEN COLOR CLR3%
  332. 17066       PRINT "   5 ";
  333. 17068    IF CLR%=1 THEN COLOR CLR4%
  334. 17070       PRINT CHR$(197);" ";
  335. 17072    IF CLR%=1 THEN COLOR CLR3%
  336. 17074       PRINT "   6 ";
  337. 17076    IF CLR%=1 THEN COLOR CLR4%
  338. 17078       PRINT CHR$(180);" ";
  339. 17080    IF CLR%=1 THEN COLOR CLR3%
  340. 17082       PRINT "   7 ";
  341. 17084    IF CLR%=1 THEN COLOR CLR4%
  342. 17086       PRINT CHR$(218);" ";
  343. 17088    IF CLR%=1 THEN COLOR CLR3%
  344. 17090       PRINT "   8 ";
  345. 17092    IF CLR%=1 THEN COLOR CLR4%
  346. 17094       PRINT CHR$(194);" ";
  347. 17096    IF CLR%=1 THEN COLOR CLR3%
  348. 17098       PRINT "   9 ";
  349. 17100    IF CLR%=1 THEN COLOR CLR4%
  350. 17102       PRINT CHR$(191);" ";
  351. 17104    IF CLR%=1 THEN COLOR CLR3%
  352. 17106       PRINT "   + ";
  353. 17108    IF CLR%=1 THEN COLOR CLR4%
  354. 17110       PRINT CHR$(179);" ";
  355. 17112    IF CLR%=1 THEN COLOR CLR3%
  356. 17114       PRINT "   - ";
  357. 17116    IF CLR%=1 THEN COLOR CLR4%
  358. 17118       PRINT CHR$(196);" ";
  359. 17200  REM cycle and recycle character collection
  360. 17210    LOCATE CX%,CY%,1,0,7
  361. 17220    K$=INKEY$ : IF K$="" THEN GOTO 17220
  362. 17225    IF K$=" " THEN GOTO 17500
  363. 17230    IF INSTR("123456789+-",K$)>0 THEN GOTO 17300
  364. 17240    IF LEN(K$)=1 THEN K%=INT((INSTR(37,ENTEST$(0),K$)+1)/2) : GOTO 17260
  365. 17250    K%=INT((INSTR(ENTEST$(0),K$)+1)/2)
  366. 17260    REM branch on key
  367. 17270      ON K% GOTO 17292,17280,17280,17280,17280,17280,17280,17280,17280,17280,18000,18100,18200,18300,18400,18500,18700,18600,18900,19000,19100,19200,18800
  368. 17280      SOUND 50,3
  369. 17290      GOTO 17200
  370. 17292    HELP%=494  : GOSUB 45100 : GOTO 17200 :REM F1
  371. 17300 REM good character process
  372. 17310    K%=INSTR("123456789+-",K$)
  373. 17320    ON K% GOTO   17340,17350,17360,17370,17380,17390,17400,17410,17420,17430,17440
  374. 17340    K$=CHR$(192) : GOTO 17500
  375. 17350    K$=CHR$(193) : GOTO 17500
  376. 17360    K$=CHR$(217) : GOTO 17500
  377. 17370    K$=CHR$(195) : GOTO 17500
  378. 17380    K$=CHR$(197) : GOTO 17500
  379. 17390    K$=CHR$(180) : GOTO 17500
  380. 17400    K$=CHR$(218) : GOTO 17500
  381. 17410    K$=CHR$(194) : GOTO 17500
  382. 17420    K$=CHR$(191) : GOTO 17500
  383. 17430    K$=CHR$(179) : GOTO 17500
  384. 17440    K$=CHR$(196) : GOTO 17500
  385. 17500    REM recombine branches
  386. 17505       IF CLR%=1 THEN COLOR CLR0%
  387. 17510       PRINT K$;
  388. 17520       SCR$(CX%)=LEFT$(SCR$(CX%),(CY%-1))+K$+RIGHT$(SCR$(CX%),(80-CY%))
  389. 17530       IF K$=CHR$(179) THEN GOTO 18100 ELSE GOTO 18300
  390. 18000 REM up
  391. 18010   CX%=CX%-1
  392. 18020   IF CX%<1 THEN CX%=23
  393. 18030   GOTO 17200
  394. 18100 REM down
  395. 18110   CX%=CX%+1
  396. 18120   IF CX%>23 THEN CX%=1
  397. 18130   GOTO 17200
  398. 18200 REM left
  399. 18210   CY%=CY%-1
  400. 18220   IF CY%<1 THEN CY%=80
  401. 18230   GOTO 17200
  402. 18300 REM right
  403. 18310   CY%=CY%+1
  404. 18320   IF CY%>80 THEN CY%=1
  405. 18330   GOTO 17200
  406. 18400 REM home
  407. 18410   CY%=1
  408. 18420   GOTO 17200
  409. 18500 REM end
  410. 18505   CY%=1
  411. 18510   FOR T%=80 TO 1 STEP (-1)
  412. 18520      IF MID$(SCR$(CX%),T%,1)=" " THEN GOTO 18550
  413. 18530      CY%=T%
  414. 18540      T%=1
  415. 18550      NEXT
  416. 18560      GOTO 17200
  417. 18600 REM delete
  418. 18610    SCR$(CX%)=LEFT$(SCR$(CX%),(CY%-1))+RIGHT$(SCR$(CX%),(80-CY%))+" "
  419. 18620    LOCATE CX%,1
  420. 18625    IF CLR%=1 THEN COLOR CLR0%
  421. 18630    PRINT SCR$(CX%);
  422. 18640    GOTO 17200
  423. 18700 REM insert
  424. 18710    SCR$(CX%)=LEFT$(LEFT$(SCR$(CX%),(CY%-1))+" "+RIGHT$(SCR$(CX%),(81-CY%)),80)
  425. 18720    LOCATE CX%,1
  426. 18725    IF CLR%=1 THEN COLOR CLR0%
  427. 18730    PRINT SCR$(CX%);
  428. 18740    GOTO 17200
  429. 18800 REM backspace
  430. 18810    CY%=CY%-1
  431. 18820    IF CY%<1 THEN CY%=80
  432. 18830    SCR$(CX%)=LEFT$(SCR$(CX%),(CY%-1))+RIGHT$(SCR$(CX%),(80-CY%))+" "
  433. 18840    LOCATE CX%,1
  434. 18845    IF CLR%=1 THEN COLOR CLR0%
  435. 18850    PRINT SCR$(CX%);
  436. 18860    GOTO 17200
  437. 18900 REM tab
  438. 18910    CY%=INT((CY%+10)/10)*10
  439. 18920    IF CY%>80 THEN CY%=1
  440. 18930    GOTO 17200
  441. 19000 REM Shift-tab
  442. 19010    IF CY%=1 THEN CY%=80
  443. 19020    CY%=(INT((CY%-1)/10))*10
  444. 19030    IF CY%=0 THEN CY%=1
  445. 19040    GOTO 17200
  446. 19100 REM carriage return
  447. 19110    CX%=CX%+1
  448. 19120    IF CX%>23 THEN CX%=1
  449. 19130    CY%=1
  450. 19140    FOR T%=1 TO 80
  451. 19150       IF MID$(SCR$(CX%-1),T%,1)=" " THEN GOTO 19180
  452. 19160       CY%=T%
  453. 19170       T%=80
  454. 19180       NEXT
  455. 19190    GOTO 17200
  456. 19200 REM escape
  457. 19210    GOSUB 20000
  458. 19220    GOTO 10000
  459. 20000 REM display main screen
  460. 20010   LOCATE 25,1 : PRINT SPACE$(79); : LOCATE 25,1
  461. 20011 IF CLR%=1 THEN COLOR CLR4%
  462. 20012   PRINT "<F1>";
  463. 20013 IF CLR%=1 THEN COLOR CLR3%
  464. 20014   PRINT "Help ";
  465. 20015 IF CLR%=1 THEN COLOR CLR4%
  466. 20016   PRINT "<F2>";
  467. 20017 IF CLR%=1 THEN COLOR CLR3%
  468. 20018   PRINT "Generate ";
  469. 20019 IF CLR%=1 THEN COLOR CLR4%
  470. 20020   PRINT "<F3>";
  471. 20021 IF CLR%=1 THEN COLOR CLR3%
  472. 20022   PRINT "Data ";
  473. 20023 IF CLR%=1 THEN COLOR CLR4%
  474. 20024   PRINT "<F5>";
  475. 20025 IF CLR%=1 THEN COLOR CLR3%
  476. 20026   PRINT "Save ";
  477. 20027 IF CLR%=1 THEN COLOR CLR4%
  478. 20028   PRINT "<F7>";
  479. 20029 IF CLR%=1 THEN COLOR CLR3%
  480. 20030   PRINT "Graphic ";
  481. 20031 IF CLR%=1 THEN COLOR CLR4%
  482. 20032   PRINT "<F8>";
  483. 20033 IF CLR%=1 THEN COLOR CLR3%
  484. 20034   PRINT "Clear ";
  485. 20035 IF CLR%=1 THEN COLOR CLR4%
  486. 20036   PRINT "<F10>";
  487. 20037 IF CLR%=1 THEN COLOR CLR3%
  488. 20038   PRINT "Varbs ";
  489. 20039 IF CLR%=1 THEN COLOR CLR4%
  490. 20040   PRINT "<ESC>";;
  491. 20041 IF CLR%=1 THEN COLOR CLR4%
  492. 20042   LOCATE 24,1 : PRINT "File:";
  493. 20043 IF CLR%=1 THEN COLOR CLR3%
  494. 20044   PRINT BCFILE$+SPACE$(8-LEN(BCFILE$));
  495. 20045 IF CLR%=1 THEN COLOR CLR4%
  496. 20046   PRINT "│";
  497. 20047   GOSUB 20060
  498. 20050   RETURN
  499. 20060   REM show temp command line
  500. 20070      LOCATE 24,15
  501. 20075      IF CLR%=1 THEN COLOR CLR4%
  502. 20080      PRINT " <";CHR$(24);"><";CHR$(25);"><";CHR$(26);"><";CHR$(27);"> <INS> <DEL> <BkSp> <tab/TAB> <Home> <End> <CR>     ";
  503. 20090      RETURN
  504. 20100 REM display screen
  505. 20105   IF CLR%=1 THEN COLOR CLR0%
  506. 20110   FOR T%=1 TO 23
  507. 20120      LOCATE T%,1,0,0,0
  508. 20130      PRINT LEFT$(SCR$(T%),80);
  509. 20140      NEXT
  510. 20145   IF CLR%=1 THEN COLOR CLR6%
  511. 20250   FOR T%=0 TO TOPVAR%
  512. 20260      IF VARROW%(T%)<1 OR VARCOL%(T%)<1 THEN GOTO 20290
  513. 20270      LOCATE VARROW%(T%), VARCOL%(T%),0
  514. 20280      PRINT LEFT$(REPL$+RIGHT$(STR$(T%),(LEN(STR$(T%))-1))+(STRING$(VARLEN%(T%),REPL$)),VARLEN%(T%));
  515. 20290      NEXT
  516. 20300   RETURN
  517. 20400 REM display variable command menu
  518. 20410   LOCATE 25,1 : PRINT SPACE$(79); : LOCATE 25,1
  519. 20411 IF CLR%=1 THEN COLOR CLR4%
  520. 20412   PRINT "<F1>";
  521. 20413 IF CLR%=1 THEN COLOR CLR3%
  522. 20414   PRINT "Help ";
  523. 20415 IF CLR%=1 THEN COLOR CLR4%
  524. 20416   PRINT "<";CHR$(24);"><";CHR$(25);"><";CHR$(26);"><";CHR$(27);"> <tab/TAB> <Home> <End> <CR> <F3>";
  525. 20417 IF CLR%=1 THEN COLOR CLR3%
  526. 20418   PRINT "Set ";
  527. 20419 IF CLR%=1 THEN COLOR CLR4%
  528. 20420   PRINT "<F9>";
  529. 20421 IF CLR%=1 THEN COLOR CLR3%
  530. 20422   PRINT "Redisplay ";
  531. 20423 IF CLR%=1 THEN COLOR CLR4%
  532. 20424   PRINT "<ESC>";
  533. 20430   RETURN
  534. 21000 REM erase all screen variables
  535. 21010   FOR T%=0 TO 23
  536. 21020      SCR$(T%)=SPACE$(80)
  537. 21030      NEXT
  538. 21040   RETURN
  539. 21100 REM erase all variable sets
  540. 21110   FOR T%=0 TO TOPVAR%
  541. 21120      VARROW%(T%)=0
  542. 21130      VARCOL%(T%)=0
  543. 21140      NEXT
  544. 21150   RETURN
  545. 22000 REM check if defaults wanted
  546. 22005   IF TOPVAR%>36 THEN GOTO 24000
  547. 22010   MSG$="New Screen ..... Check Default Settings? Y/N:" : HELP%=333
  548. 22020   GOSUB 39000
  549. 22030   IF ENWAY%=20 OR ENRETURN$="N" OR ENRETURN$="n" THEN GOTO 21000
  550. 22040   IF ENRETURN$<>"Y" AND ENRETURN$<>"y" THEN GOTO 22000
  551. 22050   MAXDICLEN%=0
  552. 22055   GOSUB 21000
  553. 22060   FOR T%=0 TO TOPVAR%
  554. 22070      IF LEN(VARDIC$(T%))>MAXDICLEN% THEN MAXDICLEN%=LEN(VARDIC$(T%))
  555. 22080      NEXT
  556. 22090   FOR T%=0 TO TOPVAR%
  557. 22095      IF VARROW%(T%)>0 AND VARCOL%(T%)>0 THEN GOTO 22210
  558. 22100      X%=T%+1
  559. 22110      IF X%<24 THEN GOTO 22170
  560. 22120         X%=X%-23
  561. 22130         VARROW%(T%)=X%
  562. 22140         VARCOL%(T%)=41+MAXDICLEN%
  563. 22150         MID$(SCR$(X%),41,LEN(VARDIC$(T%)))=VARDIC$(T%)
  564. 22160         GOTO 22210
  565. 22170         REM default right column
  566. 22180              VARROW%(T%)=X%
  567. 22190              VARCOL%(T%)=(MAXDICLEN%+1)
  568. 22200              MID$(SCR$(X%),1,LEN(VARDIC$(T%)))=VARDIC$(T%)
  569. 22210      NEXT
  570. 22220      GOSUB 20100
  571. 22230      MSG$="Accept default setting? Y/N:" : HELP%=346
  572. 22240      GOSUB 39000
  573. 22250      IF ENRETURN$="y" OR ENRETURN$="Y" THEN RETURN
  574. 22260      GOSUB 42330 :REM re-retrieve old settings
  575. 22270      GOSUB 21000 :REM erase screen variables
  576. 22280      GOSUB 20100 :REM display variables
  577. 22290      RETURN
  578. 24000 REM too many varbs for default settings
  579. 24010    MSG$="New Screen: Too many data items for Default <ANY KEY>:"
  580. 24020    GOSUB 39100
  581. 24030    K$=INKEY$ : IF K$="" THEN GOTO 24030
  582. 24040    GOTO 21000
  583. 39000 REM display message & collect response
  584. 39020    GOSUB 39100
  585. 39030    ENSTAT$="24790170" : ENDFLT$=""
  586. 39040    GOSUB 40000
  587. 39050    MSG$=""
  588. 39100 REM display message in message area
  589. 39165    IF CLR%=1 THEN COLOR CLR7%
  590. 39170    LOCATE 24,15 : PRINT SPACE$(65);
  591. 39180    LOCATE 24,(79-(LEN(MSG$))) : PRINT MSG$;
  592. 39190    IF CLR%=1 THEN COLOR CLR0%
  593. 39200    RETURN
  594. 40000 REM enput routine begins
  595. 40010    ENROW% =VAL(MID$(ENSTAT$,1,2))
  596. 40020    ENCOL% =VAL(MID$(ENSTAT$,3,2))
  597. 40030    ENLEN% =VAL(MID$(ENSTAT$,5,2))
  598. 40040    ENTEST%=VAL(MID$(ENSTAT$,7,1))
  599. 40050    ENKIND%=VAL(MID$(ENSTAT$,8,1))
  600. 40100 REM start & restart
  601. 40110    LOCATE ENROW%,ENCOL%,0,0,7
  602. 40120    IF ENKIND%=0 THEN PRINT (LEFT$(ENDFLT$+STRING$(ENLEN%,249),ENLEN%)); ELSE PRINT (RIGHT$(STRING$(ENLEN%,249)+STR$(VAL(ENDFLT$)),ENLEN%));
  603. 40130    ENPASS%=0
  604. 40140    ENRETURN$=""
  605. 40150 REM cycle & recycle character collection
  606. 40160    LOCATE ENROW%,(ENCOL%+ENPASS%),1,0,7
  607. 40170    ENCHAR$=INKEY$
  608. 40180 REM branch in for automatic start
  609. 40185    IF ENCHAR$="" THEN GOTO 40170 :REM recycle
  610. 40190    IF INSTR(ENTEST$(ENTEST%),ENCHAR$)>0 THEN GOTO 40240 :REM good char
  611. 40200    IF LEN(ENCHAR$)=1 THEN EN%=INT((INSTR(41,ENTEST$(0),ENCHAR$)+1)/2) : GOTO 40220
  612. 40210    EN%=INT((INSTR(ENTEST$(0),ENCHAR$)+1)/2)
  613. 40220    ON EN% GOTO 40510,40520,40530,40540,40550,40560,40570,40580,40590,40600,40610,40620,40630,40640,40650,40660,40670,40680,40690,40700,40710,40720,40730
  614. 40230    SOUND 50,3 : GOTO 40150 :REM recycle
  615. 40240    REM valid character - process
  616. 40250       IF ENPASS%>0 THEN GOTO 40280 :REM no field erase
  617. 40260       PRINT STRING$(ENLEN%,249);
  618. 40270       LOCATE ENROW%,ENCOL%,1,0,7
  619. 40280    REM skip field erase
  620. 40285       IF ENPASS%=ENLEN% THEN ENWAY%=0 : GOTO 40150 :REM exit routine
  621. 40290       ENPASS%=ENPASS%+1
  622. 40300       PRINT ENCHAR$;
  623. 40310       ENRETURN$=ENRETURN$+ENCHAR$
  624. 40330       GOTO 40150 :REM recycle
  625. 40500 REM branch control for special key pressed
  626. 40510    GOSUB 45100 : GOTO 40150:REM F1
  627. 40520    ENWAY%=11 : GOTO 40800 :REM F2
  628. 40530    ENWAY%=12 : GOTO 40800 :REM F3
  629. 40540    ENWAY%=13 : GOTO 40800 :REM F4
  630. 40550    ENWAY%=14 : GOTO 40800 :REM F5
  631. 40560    ENWAY%=15 : GOTO 40800 :REM F6
  632. 40570    ENWAY%=16 : GOTO 40800 :REM F7
  633. 40580    ENWAY%=17 : GOTO 40800 :REM F8
  634. 40590    ENWAY%=18 : GOTO 40800 :REM F9
  635. 40600    ENWAY%=19 : GOTO 40800 :REM F10
  636. 40610    ENWAY%=3  : GOTO 40800 :REM up
  637. 40620    ENWAY%=4  : GOTO 40800 :REM down
  638. 40630    ENWAY%=1  : GOTO 40800 :REM left
  639. 40640    ENWAY%=2  : GOTO 40800 :REM rght
  640. 40650    ENWAY%=5  : GOTO 40800 :REM home
  641. 40660    ENWAY%=6  : GOTO 40800 :REM end
  642. 40670    ENWAY%=7  : GOTO 40800 :REM ins
  643. 40680    ENWAY%=8  : GOTO 40800 :REM del
  644. 40690    ENWAY%=9  : GOTO 40800 :REM tab
  645. 40700    ENWAY%=10 : GOTO 40800 :REM TAB
  646. 40710    ENWAY%=0  : GOTO 40800 :REM CR
  647. 40720    ENWAY%=20 : GOTO 40800 :REM ESC
  648. 40730    REM backspace character pressed:REM BkSp
  649. 40740       IF ENPASS%<2 THEN GOTO 40100:REM start/restart
  650. 40750       ENPASS%=ENPASS%-1
  651. 40760       LOCATE ENROW%,ENCOL%+ENPASS%,0,0,7
  652. 40770       PRINT CHR$(249);
  653. 40780       ENRETURN$=LEFT$(ENRETURN$,ENPASS%)
  654. 40790       GOTO 40150:REM recycle
  655. 40800 REM field exit - finish subroutine
  656. 40810    IF ENPASS%<1 THEN ENRETURN$=ENDFLT$
  657. 40820    IF ENKIND%=1 THEN ENRETURN$=RIGHT$(SPACE$(ENLEN%)+STR$(VAL(ENRETURN$)),ENLEN%)
  658. 40830    LOCATE ENROW%,ENCOL%,0,0,7
  659. 40840    IF ENRETURN$>"" THEN PRINT LEFT$(ENRETURN$+SPACE$(ENLEN%),ENLEN%); ELSE PRINT STRING$(ENLEN%,REPL$);
  660. 40850    RETURN
  661. 41000 REM establish test strings required by enput routine
  662. 41010    FOR C%=1 TO 10
  663. 41020       KEY C%,"" :REM f1-f10
  664. 41030       ENTEST$(0)=ENTEST$(0)+CHR$(0)+CHR$(58+C%) :REM 1 - 10
  665. 41040       NEXT
  666. 41050    ENTEST$(0)=ENTEST$(0)+CHR$(0)+CHR$(72)+CHR$(0)+CHR$(80)+CHR$(0)+CHR$(75)
  667. 41060    ENTEST$(0)=ENTEST$(0)+CHR$(0)+CHR$(77)+CHR$(0)+CHR$(71)+CHR$(0)+CHR$(79)+CHR$(0)+CHR$(82)
  668. 41070    ENTEST$(0)=ENTEST$(0)+CHR$(0)+CHR$(83)+CHR$(0)+CHR$( 9)+CHR$(0)+CHR$(15)
  669. 41080    ENTEST$(0)=ENTEST$(0)+CHR$(13)+CHR$(0)+CHR$(27)+CHR$(0)+CHR$( 8)
  670. 41090    ENTEST$(1)="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "
  671. 41100    ENTEST$(2)=ENTEST$(1)+"abcdefghijklmnopqrstuvwxyz.,-"
  672. 41110    ENTEST$(3)=ENTEST$(2)+"!@#$%^&*()_=+~[{]};:'<>/?\|"+CHR$(34)
  673. 41120    ENTEST$(4)="0123456789"
  674. 41130    ENTEST$(5)=ENTEST$(4)+".-"
  675. 41140    ENTEST$(6)=CHR$(0)
  676. 41150    ENTEST$(7)="yYnN"
  677. 41160    ENTEST$(8)="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  678. 41170    ENTEST$(9)="12345"
  679. 41180 RETURN
  680. 42200    REM get system information
  681. 42202    OPEN "i", #2, "SF-CARRY.DAT"
  682. 42204    INPUT #2, BCFILE$,K$
  683. 42206    INPUT #2, CLR%   ,K$
  684. 42208    INPUT #2, CLR0%  ,K$
  685. 42210    INPUT #2, CLR1%  ,K$
  686. 42212    INPUT #2, CLR2%  ,K$
  687. 42214    INPUT #2, CLR3%  ,K$
  688. 42216    INPUT #2, CLR4%  ,K$
  689. 42218    INPUT #2, CLR5%  ,K$
  690. 42220    INPUT #2, CLR6%  ,K$
  691. 42222    INPUT #2, CLR7%  ,K$
  692. 42224    INPUT #2, CLR8%  ,K$
  693. 42226    INPUT #2, CLR9%  ,K$
  694. 42228    CLOSE #2
  695. 42240    RETURN
  696. 42250 REM test data file for existance
  697. 42260    IF TCFILE$<="        " THEN GOTO 42310
  698. 42270    OPEN "r", #2, TCFILE$+".PIC",1
  699. 42280    L%=LOF(2)
  700. 42290    CLOSE #2
  701. 42300    IF L%>0 THEN RETURN
  702. 42305       KILL TCFILE$+".PIC"
  703. 42310       TCFILE$=""
  704. 42320       RETURN
  705. 42330 REM file exists - retrieve data
  706. 42340    OPEN "i", #2, BCFILE$+".DIC"
  707. 42350    INPUT #2, BCFILE$
  708. 42360    FOR T%=0 TO MAXVARS%
  709. 42370       INPUT #2, VARDIC$(T%),VARTYP%(T%),VARLEN%(T%),VARMSK%(T%),VARVAR$(T%),VARROW%(T%),VARCOL%(T%)
  710. 42380       NEXT
  711. 42390    INPUT #2, CV%,VO%,TOPVAR%
  712. 42400    CLOSE #2
  713. 42410    RETURN
  714. 42470 REM put away data
  715. 42480    OPEN "o", #2, BCFILE$+".DIC"
  716. 42490    WRITE #2, BCFILE$
  717. 42500    FOR T%=0 TO MAXVARS%
  718. 42510       WRITE #2, VARDIC$(T%),VARTYP%(T%),VARLEN%(T%),VARMSK%(T%),VARVAR$(T%),VARROW%(T%),VARCOL%(T%)
  719. 42520       NEXT
  720. 42530    WRITE #2, CV%,VO%,TOPVAR%
  721. 42540    CLOSE #2
  722. 42550    RETURN
  723. 43000 REM open and retrieve PICture info
  724. 43010    OPEN "i", #2, BCFILE$+".PIC"
  725. 43020    FOR T%=1 TO 23
  726. 43030       INPUT #2, SCR$(T%)
  727. 43035       SCR$(T%)=LEFT$(SCR$(T%)+SPACE$(80),80)
  728. 43040       NEXT
  729. 43050    IF EOF(2)=(-1) THEN GOTO 43070
  730. 43060    INPUT #2, CX%,CY%
  731. 43070    CLOSE #2
  732. 43080    RETURN
  733. 44000 REM save PICture info
  734. 44010    OPEN "o", #2, BCFILE$+".PIC"
  735. 44020    FOR T%=1 TO 23
  736. 44025       SCR$(T%)=LEFT$(SCR$(T%)+SPACE$(80),80)
  737. 44030       WRITE #2, SCR$(T%)
  738. 44040       NEXT
  739. 44050    WRITE #2, CX%,CY%
  740. 44060    CLOSE #2
  741. 44070    RETURN
  742. 45000 REM open help file
  743. 45010   OPEN "r",#1,"SF-TUTOR.DAT",72
  744. 45020   FIELD #1,70 AS HLP$,2 AS HLP1$
  745. 45030   RETURN
  746. 45100 REM help requested
  747. 45105    LOCATE 1,1,1,0,0 : HELP1%=HELP%
  748. 45110    IF CLR%=1 THEN COLOR CLR8%
  749. 45120    GET #1,HELP1%
  750. 45130    HELP$=HLP$
  751. 45140    WW%=INSTR(HELP$,"@")+3
  752. 45150    FOR W%=1 TO WW%
  753. 45160       WIN%(0,1,W%)=SCREEN(1,W%)
  754. 45170       IF CLR%=1 THEN WIN%(1,1,W%)=((SCREEN(1,W%,1)) MOD 16)
  755. 45180       NEXT
  756. 45190    LOCATE 1,1,1,0,0 : PRINT STRING$(WW%,220);
  757. 45200    WX%=1
  758. 45210    WHILE LEFT$(HELP$,1)<>"^"
  759. 45220       WX%=WX%+1
  760. 45230       FOR W%=1 TO WW%
  761. 45240          WIN%(0,WX%,W%)=SCREEN(WX%,W%)
  762. 45250          IF CLR%=1 THEN WIN%(1,WX%,W%)=((SCREEN(WX%,W%,1)) MOD 16)
  763. 45260          NEXT
  764. 45270       LOCATE WX%,1,1,0,0
  765. 45280       PRINT CHR$(221)+" "+LEFT$(HELP$,WW%-4)+" "+CHR$(222);
  766. 45290       HELP1%=HELP1%+1
  767. 45300       GET #1,HELP1%
  768. 45310       HELP$=HLP$
  769. 45320       WEND
  770. 45330    WX%=WX%+1
  771. 45350    FOR W%=1 TO WW%
  772. 45360       WIN%(0,WX%,W%)=SCREEN(WX%,W%)
  773. 45370       IF CLR%=1 THEN WIN%(1,WX%,W%)=((SCREEN(WX%,W%,1)) MOD 16)
  774. 45380       NEXT
  775. 45390    LOCATE WX%,1 : PRINT RIGHT$(STRING$(WW%,223)+" <ESC>"+CHR$(223),WW%);
  776. 45400    LOCATE WX%,WW%-6,1,0,7
  777. 45410    K$=INKEY$ : IF K$<>CHR$(27) THEN GOTO 45410
  778. 45420    FOR W1%=1 TO WW%
  779. 45430       FOR W%=1 TO WX%
  780. 45440          LOCATE W%,W1%,1,0,0
  781. 45450          IF CLR%=1 THEN COLOR WIN%(1,W%,W1%)
  782. 45460          PRINT CHR$(WIN%(0,W%,W1%));
  783. 45470          NEXT
  784. 45480       NEXT
  785. 45490    IF CLR%=1 THEN COLOR CLR0%
  786. 45500    LOCATE 1,1,1,0,7
  787. 45510    RETURN
  788. 65000 REM exit
  789. 65015    CLS
  790. 65040    CLOSE : END
  791. 65501     K$="Copyright Frederick G. Volking 1986"
  792. 65502     K$="6891 gnikloV .G kcirederF thgirypoC"
  793.