home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / basaid50 / basicai1.bas next >
Encoding:
BASIC Source File  |  1991-05-15  |  38.4 KB  |  1,517 lines

  1. 10 GOTO 280
  2. 20 GOTO 15160 ' LAST STATEMENT NUMBER IN THE PROGRAM
  3. 30 '
  4. 40 'BASICAID (V1.0)  ----------- MAY 3 ,1983..12PM EST
  5. 50 '
  6. 60 '
  7. 70 '
  8. 80 'BY JAMES MORGAN
  9. 90 '   1749 AMERICANA BLVD 23-G
  10. 100 '   ORLANDO FLA. 32809
  11. 110 '
  12. 120 '*********************************************************************
  13. 130 '  A LIMITED LICENSE IS GRANTED TO ALL USERS OF THIS PROGRAM
  14. 140 ' TO MAKE COPIES OF THIS PROGRAM AND DISTRIBUTE THEM TO OTHERS
  15. 150 ' ON THE FOLLOWING CONDITIONS:
  16. 160 '        1. THE LIMITED LICENSE NOTICE , AUTHOR INFO. AND
  17. 170 '          COPYRIGHT MESSAGES ARE NOT REMOVED OR ALTERED.
  18. 180 '
  19. 190 '        2. NO FEE IS TO BE CHARGED FOR COPYING OR DISTRIBUTING
  20. 200 '          THE PROGRAM WITHOUT AN EXPRESSED WRITTEN AGREEMENT
  21. 210 '          WITH JAMES MORGAN OR HIS REPRESENTATIVES.
  22. 220 '
  23. 230 '                Copyright (c) 1983 by JAMES P MORGAN
  24. 240 '*********************************************************************
  25. 250 '
  26. 260 '
  27. 270 '
  28. 280 CLOSE
  29. 290 CLEAR
  30. 300 ON ERROR GOTO 0
  31. 310 SCREEN 0,0,0
  32. 320 WIDTH 80
  33. 330 COLOR 7,0
  34. 340 KEY OFF
  35. 350 OPTION BASE 1
  36. 360 DEFINT A-Z
  37. 370 TRUE=-1
  38. 380 FALSE= NOT TRUE
  39. 390 EJECT=FALSE
  40. 400 B$=""
  41. 410 D$=""
  42. 420 C$=""
  43. 430 P$=""
  44. 440 SP$=""
  45. 450 SB$=""
  46. 460 S=0
  47. 470 I=0
  48. 480 J=0
  49. 490 K=0
  50. 500 L=0
  51. 510 E=0
  52. 520 I1=0
  53. 530 S1=0
  54. 540 SL=0
  55. 550 REM1$="REM "
  56. 560 IF1$="IF "
  57. 570 DATA1$="DATA "
  58. 580 APOST$=CHR$(39)
  59. 590 BLANK$=CHR$(32)
  60. 600 QUOTE$=CHR$(34)
  61. 610 COLON$=":"
  62. 620 VER$="I"         ' CHANGE TO "C" IF PROGRAM COMPILED
  63. 630 CR$=CHR$(13)
  64. 640 DIM EQ$(21)
  65. 650 EQ$(1)="BAD FILE NUMBER"
  66. 660 EQ$(2)="FILE NOT FOUND"
  67. 670 EQ$(3)="BAD FILE MODE"
  68. 680 EQ$(4)="FILE ALREADY OPEN"
  69. 690 EQ$(6)="DEVICE I/O ERROR"
  70. 700 EQ$(7)="FILE ALREADY EXISTS"
  71. 710 EQ$(10)="DISK FULL"
  72. 720 EQ$(11)="END OF FILE"
  73. 730 EQ$(12)="BAD RECORD NUMBER"
  74. 740 EQ$(13)="BAD FILE NAME"
  75. 750 EQ$(16)="TOO MANY FILES"
  76. 760 EQ$(19)="DISK WRITE PROTECTED"
  77. 770 EQ$(20)="DISK NOT READY"
  78. 780 EQ$(21)="DISK MEDIA ERROR"
  79. 790 DIM ERRMSG$(6)
  80. 800 ERRMSG$(1)="INVALID OR MISSING LINE NUMBER OR BINARY FILE USED AS INPUT"
  81. 810 ERRMSG$(2)="LINE NUMBER WITH NO BASIC STATEMENT"
  82. 820 ERRMSG$(3)="INPUT PROGRAM CONTAINS A BLANK LINE OR ONE WAS GENERATED"
  83. 830 ERRMSG$(4)="LITERAL STRING BOUND IN QUOTES MISSING TERMINATING QUOTE"
  84. 840 ERRMSG$(5)="CURRENT LINE NUMBER NOT GREATER THAN PREVIOUS LINE NUMBER"
  85. 850 ERRMSG$(6)="LINE NUMBER TABLE IS FULL, TOO MANY LOGIC BRANCH REFERENCES"
  86. 860 FREECNT=0
  87. 870 BEEPCNT=3
  88. 880 BEEPLOOP=600
  89. 890 LPRNT=FALSE
  90. 900 GOSUB 10600                  'TOGGLE CAPSLOCK ON
  91. 910 GOSUB 9040                     'WHAT KIND OF VIDEO ADAPTER
  92. 920 GOSUB 9190                     'REQUEST RUNTIME OPTIONS
  93. 930 DIM D$(2)
  94. 940 D$(1)="A:"
  95. 950 D$(2)="B:"
  96. 960 START$=""
  97. 970 FINISH$=""
  98. 980 S=1
  99. 990 ROWLINES=10
  100. 1000 PAGESIZE=50
  101. 1010 FREELMT=2
  102. 1020 LINECNT=0
  103. 1030 PRVLNUM=-32768!
  104. 1040 '
  105. 1050 IF RUNTYPE < 3 GOTO 1180
  106. 1060 IF RUNTYPE>4 GOTO 1180
  107. 1070 READ RESCNT
  108. 1080 DIM RESWRD$(RESCNT)           ' RESWRD$(153)    FIXED IF COMPILED
  109. 1090 DIM WORDFLAG(RESCNT)          ' WORDFLAG(153)   FIXED IF COMPILED
  110. 1100 FOR I=1 TO RESCNT
  111. 1110 READ RESWRD$(I),WORDFLAG(I)
  112. 1120 NEXT
  113. 1130 '
  114. 1140 DNMCNT=100
  115. 1150 IF RUNTYPE=4 THEN DNMCNT=RESCNT
  116. 1160 DIM DATANAME$(DNMCNT)       ' DATANAME$(100) FIXED IF COMPILED
  117. 1170 '
  118. 1180 IF RUNTYPE < 2 GOTO 1290
  119. 1190 NUMLINES=1
  120. 1200 DIMLINE=100
  121. 1210 IF RUNTYPE=4 THEN DIMLINE=RESCNT
  122. 1220 YCNT=50
  123. 1230 IF ACTUAL.RUNTYPE=5 THEN YCNT=5
  124. 1240 DIM LINENOS(DIMLINE,YCNT)       ' LINENOS(100,50) FIXED IF COMPILED
  125. 1250 FOR X=1 TO DIMLINE
  126. 1260 LINENOS(X,1)=-32768!
  127. 1270 NEXT
  128. 1280 '
  129. 1290 CLS
  130. 1300 ON ERROR GOTO 0
  131. 1310 LOCATE 2,1,1
  132. 1320 PRINT "ENTER THE BASIC PROGRAM NAME TO BE PROCESSED"
  133. 1330 PRINT
  134. 1340 GOSUB 9660                  'FLUSH ALL KEYBOARD BUFFERS
  135. 1350 INPUT "PROGRAM NAME : ",BASPGM$
  136. 1360 IF LEN(BASPGM$) < 1 GOTO 1290
  137. 1370 IF LEN(BASPGM$) > 8 GOTO 1290
  138. 1380 LOCATE 5,1,0
  139. 1390 FOR I = 1 TO 24 - CSRLIN
  140. 1400 PRINT STRING$(79," ")
  141. 1410 NEXT
  142. 1420 LOCATE 6,1,1
  143. 1430 BEEP
  144. 1440 PRINT "WHAT DRIVE IS THE FILE ON, A OR B, (PRESS ENTER FOR DEFAULT DRIVE)"
  145. 1450 PRINT
  146. 1460 PRINT "DRIVE : ";
  147. 1470 GOSUB 9660
  148. 1480 DRIVE$=INKEY$
  149. 1490 IF DRIVE$=""  GOTO 1480
  150. 1500 IF DRIVE$=CR$ THEN DRIVE$="":GOTO 1620
  151. 1510 IF LEN(DRIVE$) > 1 GOTO 1380
  152. 1520 IF DRIVE$=CHR$(27) GOTO 13450
  153. 1530 PRINT DRIVE$;
  154. 1540 IF DRIVE$="A" GOTO 1580
  155. 1550 IF DRIVE$="B" GOTO 1610
  156. 1560 GOTO 1380
  157. 1570 '
  158. 1580 DRIVE$=D$(1)
  159. 1590 GOTO 1620
  160. 1600 '
  161. 1610 DRIVE$=D$(2)
  162. 1620 DSN$=DRIVE$+BASPGM$+".BAS"
  163. 1630 ON ERROR GOTO 4450
  164. 1640 PRINT
  165. 1650 FILES DSN$
  166. 1660 ON ERROR GOTO 0
  167. 1670 OPEN DSN$ FOR INPUT AS 1
  168. 1680 IF RUNTYPE <>1 GOTO 1730
  169. 1690 OUTFILE$="TEMPFILE.BAS"
  170. 1700 REASON$="EXPANDING PROGRAM"
  171. 1710 GOSUB 10100
  172. 1720 '
  173. 1730 START$=TIME$
  174. 1740 LOCATE 25,1,0
  175. 1750 PRINT "PROCESSING LINE NUMBER =             ";
  176. 1760 '
  177. 1770 IF EOF(1) GOTO 4870
  178. 1780 GOSUB 1920            ' READ INPUT BASIC PROGRAM
  179. 1790 FREECNT=FREECNT + 1
  180. 1800 IF FREECNT > FREELMT THEN FREECNT=0:FREE!=FRE("")
  181. 1810 L=LEN(B$)
  182. 1820 GOSUB 4070            ' FIND END OF THE BASIC INPUT LINE
  183. 1830 E=BEND
  184. 1840 GOSUB 2950            ' ISOLATE LINE NUMBER AND FIND FIRST STATEMENT
  185. 1850 IF BEGIN=0 GOTO 1770
  186. 1860 GOSUB 8980            ' PRINT LINE NUMBER CURRENTLY PROCESSING
  187. 1870 GOSUB 2190            ' SEPARATE LINE INTO ONE OR MORE STATEMENTS
  188. 1880 GOTO 1770
  189. 1890 '
  190. 1900 ' READ THE BASIC PROGRAM TO BE EXPANDED/COMPRESSED/XREFERENCED
  191. 1910 '
  192. 1920 ON ERROR GOTO 1990
  193. 1930 LINE INPUT#1,B$
  194. 1940 ON ERROR GOTO 0
  195. 1950 RETURN
  196. 1960 '
  197. 1970 ' ERROR HANDLING ROUTINE ON THE INPUT (BASIC PROGRAM)
  198. 1980 '
  199. 1990 ROW=CSRLIN
  200. 2000 COLUMN=POS(0)
  201. 2010 GOSUB 4600            'DETERMINE TYPE OF FILE ERROR
  202. 2020 RESUME 2030
  203. 2030 ON ERROR GOTO 0
  204. 2040 LOCATE 24,1,1
  205. 2050 COLOR 15
  206. 2060 PRINT "READ ON BASIC PROGRAM FAILED. ";M$
  207. 2070 M$=" "
  208. 2080 PRINT "CORRECT PROBLEM AND PRESS ANY KEY TO CONTINUE";
  209. 2090 GOSUB 9660
  210. 2100 KEYIN$=INKEY$
  211. 2110 IF LEN(KEYIN$)=0 GOTO 2100
  212. 2120 IF KEYIN$=CHR$(27) GOTO 13450
  213. 2130 COLOR 7
  214. 2140 LOCATE ROW,COLUMN,0
  215. 2150 GOTO 1920
  216. 2160 '
  217. 2170 '  SEPARATE BASIC STATEMENTS INTO ONE OR MORE STATEMENTS
  218. 2180 '
  219. 2190 S=BEGIN
  220. 2200 FOR I=S TO E
  221. 2210 C$=MID$(B$,I,1)
  222. 2220 IF C$=QUOTE$ GOTO 4340         ' START OF NON-NUMERIC CHAR. STRING FOUND
  223. 2230 IF C$=APOST$ GOTO 2760         ' TERMINATING REMARK ON THE LINE
  224. 2240 IF C$<>COLON$ GOTO 2640
  225. 2250 '
  226. 2260 ' A ":" WAS FOUND INDICATING THAT THERE ARE MULTIPLE STATEMENTS ON THIS LINE
  227. 2270 '
  228. 2280 IF I-S < 1 GOTO 2460         ' THROW AWAY ":" THAT ARE NEXT TO EACH OTHER
  229. 2290 P$=MID$(B$,S,I-S)
  230. 2300 IF RUNTYPE = 1 GOTO 2330
  231. 2310 GOSUB 5590            'ISOLATE DATA NAMES AND LINE NUMBERS
  232. 2320 IF RUNTYPE <> 1 GOTO 2370
  233. 2330 P$=CURLNUM$+" "+P$
  234. 2340 IF LPRNT THEN LPRINT P$
  235. 2350 GOSUB 3720              'WRITE A NEW BASIC LINE
  236. 2360 LINENO=LINENO + 1
  237. 2370 GOSUB 8980
  238. 2380 CURLNUM$=STR$(LINENO + 32767)
  239. 2390 ITSLEN=LEN(CURLNUM$)
  240. 2400 ITSLEN=ITSLEN - 1
  241. 2410 CURLNUM$=RIGHT$(CURLNUM$,ITSLEN)
  242. 2420 PRVLNUM=LINENO
  243. 2430 '
  244. 2440 ' THE ":" WAS FOUND, NOW SCAN FOR FIRST NON.BLANK CHAR.
  245. 2450 '
  246. 2460 S=I+1
  247. 2470 IF E-S < 1 GOTO 2740         'WE ARE THRU WITH THIS LINE
  248. 2480 C$=MID$(B$,S,1)
  249. 2490 IF C$<=BLANK$ THEN I=S:GOTO 2460
  250. 2500 '
  251. 2510 ' CHECK IF "REM" OR "IF" STATEMENT IMBEDDED ON THIS LINE
  252. 2520 '
  253. 2530 IF (C$<>"I") AND (C$<>"R") GOTO 2200
  254. 2540 IF C$<>"I" GOTO 2600
  255. 2550 C$=MID$(B$,S,3)
  256. 2560 GOSUB 2790
  257. 2570 IF C$=IF1$ GOTO 2760
  258. 2580 GOTO 2200
  259. 2590 '
  260. 2600 C$=MID$(B$,S,4)
  261. 2610 GOSUB 3770
  262. 2620 IF C$=REM1$ GOTO 2760
  263. 2630 GOTO 2200
  264. 2640 NEXT I
  265. 2650 '
  266. 2660 P$=MID$(B$,S,I-S)
  267. 2670 IF RUNTYPE = 1 GOTO 2700
  268. 2680 GOSUB 5590            'ISOLATE DATA NAMES AND LINE NUMBERS
  269. 2690 IF RUNTYPE <> 1 GOTO 2730
  270. 2700 P$=CURLNUM$+" "+P$
  271. 2710 IF LPRNT THEN LPRINT P$
  272. 2720 GOSUB 3720            ' WRITE THE NEW BASIC LINE
  273. 2730 GOSUB 8980
  274. 2740 RETURN
  275. 2750 '
  276. 2760 I=E+1
  277. 2770 GOTO 2660
  278. 2780 '
  279. 2790 IF LEN(C$)<2 THEN RETURN
  280. 2800 IF MID$(C$,1,2)<>"IF" THEN RETURN
  281. 2810 IF LEN(C$)<3 THEN RETURN
  282. 2820 IF MID$(C$,3,1)=" " THEN RETURN
  283. 2830 IF MID$(C$,3,1)="." THEN RETURN
  284. 2840 IF ASC(MID$(C$,3,1))<48 GOTO 2890
  285. 2850 IF ASC(MID$(C$,3,1))>90 GOTO 2890
  286. 2860 IF (ASC(MID$(C$,3,1))>57) AND (ASC(MID$(C$,3,1))<65) GOTO 2890
  287. 2870 RETURN
  288. 2880 '
  289. 2890 C$="IF "
  290. 2900 RETURN
  291. 2910 '
  292. 2920 '  ISOLATE LINE NUMBER AND FIND START OF BASIC STATEMENT(S)
  293. 2930 '
  294. 2940 ' FIND THE FIRST NON-BLANK CHAR.
  295. 2950 BEGIN=0
  296. 2960 CURLNUM$=""
  297. 2970 FOR I = 1 TO E
  298. 2980 C$=MID$(B$,I,1)
  299. 2990 IF C$>BLANK$ GOTO 3010
  300. 3000 NEXT I
  301. 3010 S=I
  302. 3020 P$=""
  303. 3030 '
  304. 3040 ' SCAN UNTIL FIRST NON-NUMERIC CHAR (BUILDING LINE NUMBER)
  305. 3050 '
  306. 3060 FOR I = S TO E
  307. 3070 C$=MID$(B$,I,1)
  308. 3080 IF C$<"0" GOTO 3130
  309. 3090 IF C$>"9" GOTO 3130
  310. 3100 P$=P$ + C$
  311. 3110 NEXT I
  312. 3120 ' DO WE HAVE A INVALID LINE NUMBER
  313. 3130 IF I=E THEN ERRNO=1:GOTO 4260
  314. 3140 IF LEN(P$)<1 THEN ERRNO=1:GOTO 4260
  315. 3150 IF LEN(P$)>5 THEN ERRNO=1:GOTO 4260
  316. 3160 CURLNUM$=P$
  317. 3170 CURLINE!=VAL(CURLNUM$)
  318. 3180 LINENO=CURLINE! - 32767
  319. 3190 IF RUNTYPE <> 1 GOTO 3210
  320. 3200 IF LINENO <= PRVLNUM THEN ERRNO=5:GOTO 4260
  321. 3210 PRVLNUM=LINENO
  322. 3220 '
  323. 3230 ' SCAN UNTIL WE FIND THE FIRST NON-BLANK CHAR (FIND FIRST BASIC STATEMENT)
  324. 3240 '
  325. 3250 S=I
  326. 3260 FOR I=S TO E
  327. 3270 C$=MID$(B$,I,1)
  328. 3280 IF C$>BLANK$ GOTO 3310
  329. 3290 NEXT I
  330. 3300 IF I=E THEN ERRNO=2:GOTO 4260
  331. 3310 BEGIN=I
  332. 3320 IF C$=COLON$ GOTO 3550         ' REMOVE ALL LEADING ":"
  333. 3330 IF C$=APOST$ GOTO 3580         ' THIS MUST BE A COMMENT STATEMENT
  334. 3340 '
  335. 3350 ' CHECK IF THE LINE BEGINS AS A "REM" OR "DATA" OR "IF" STATEMENT
  336. 3360 '
  337. 3370 IF (C$<>"R") AND (C$<>"D") AND (C$<>"I") THEN RETURN
  338. 3380 IF C$<>"R" GOTO 3440
  339. 3390 C$=MID$(B$,I,4)
  340. 3400 GOSUB 3770
  341. 3410 IF C$=REM1$  GOTO 3580
  342. 3420 RETURN
  343. 3430 '
  344. 3440 IF C$<>"I" GOTO 3500
  345. 3450 C$=MID$(B$,I,3)
  346. 3460 GOSUB 2790
  347. 3470 IF C$=IF1$ GOTO 3580
  348. 3480 RETURN
  349. 3490 '
  350. 3500 C$=MID$(B$,I,5)
  351. 3510 GOSUB 3910
  352. 3520 IF C$=DATA1$ GOTO 3580
  353. 3530 RETURN
  354. 3540 '
  355. 3550 MID$(B$,I,1)=BLANK$
  356. 3560 GOTO 3250
  357. 3570 '
  358. 3580 BEGIN=0
  359. 3590 S=I
  360. 3600 P$=MID$(B$,S)
  361. 3610 IF RUNTYPE = 1 GOTO 3640
  362. 3620 GOSUB 5590            'ISOLATE DATA NAMES AND LINE NUMBERS
  363. 3630 IF RUNTYPE <> 1 GOTO 3670
  364. 3640 P$=CURLNUM$+" "+P$
  365. 3650 IF LPRNT THEN LPRINT P$
  366. 3660 GOSUB 3720             ' CREATE (WRITE) THE NEW BASIC LINE
  367. 3670 GOSUB 8980
  368. 3680 RETURN
  369. 3690 '
  370. 3700 ' CREATE (WRITE) THE NEW BASIC LINE(S)
  371. 3710 '
  372. 3720 ON ERROR GOTO 4670
  373. 3730 PRINT#2,P$
  374. 3740 ON ERROR GOTO 0
  375. 3750 RETURN
  376. 3760 '
  377. 3770 IF LEN(C$)<3 THEN RETURN
  378. 3780 GOSUB 4190
  379. 3790 IF MID$(C$,1,3)<>"REM" THEN RETURN
  380. 3800 IF LEN(C$)=3 GOTO 3880
  381. 3810 IF MID$(C$,4,1)=" " THEN RETURN
  382. 3820 IF MID$(C$,4,1)="." THEN RETURN
  383. 3830 IF ASC(MID$(C$,4,1))<48 GOTO 3880
  384. 3840 IF ASC(MID$(C$,4,1))>90 GOTO 3880
  385. 3850 IF (ASC(MID$(C$,4,1))>57) AND (ASC(MID$(C$,4,1))<65) GOTO 3880
  386. 3860 RETURN
  387. 3870 '
  388. 3880 C$="REM "
  389. 3890 RETURN
  390. 3900 '
  391. 3910 IF LEN(C$)<4 THEN RETURN
  392. 3920 GOSUB 4190
  393. 3930 IF MID$(C$,1,4)<>"DATA" THEN RETURN
  394. 3940 IF LEN(C$)=4 GOTO 4020
  395. 3950 IF MID$(C$,5,1)=" " THEN RETURN
  396. 3960 IF MID$(C$,5,1)="." THEN RETURN
  397. 3970 IF ASC(MID$(C$,5,1))<48 GOTO 4020
  398. 3980 IF ASC(MID$(C$,5,1))>90 GOTO 4020
  399. 3990 IF (ASC(MID$(C$,5,1))>57) AND (ASC(MID$(C$,5,1))<65) GOTO 4020
  400. 4000 RETURN
  401. 4010 '
  402. 4020 C$="DATA "
  403. 4030 RETURN
  404. 4040 '
  405. 4050 '  FIND TRUE END OF A STATEMENT LINE
  406. 4060 '
  407. 4070 GOSUB 13000                    'CHECK FOR DOUBLE QUOTES, ALSO COMPRESS INPUT LINE
  408. 4080 FOR I=L TO 1 STEP -1             ' START AT END OF THE LINE
  409. 4090 C$=MID$(B$,I,1)
  410. 4100 IF C$<>BLANK$ GOTO 4120
  411. 4110 NEXT I
  412. 4120 IF I=1 THEN ERRNO=3:GOTO 4260
  413. 4130 IF I=L GOTO 4150
  414. 4140 B$=MID$(B$,1,I)
  415. 4150 L=LEN(B$)
  416. 4160 BEND=I
  417. 4170 RETURN
  418. 4180 '
  419. 4190 FOR J=1 TO LEN(C$)
  420. 4200 MID$(C$,J,1)=CHR$(ASC(MID$(C$,J,1)) AND 95)
  421. 4210 NEXT
  422. 4220 RETURN
  423. 4230 '
  424. 4240 ' ALMOST ALL ERRORS DETECTED WHILE SCANNING PROGRAM SHOULD COME TO HERE
  425. 4250 '
  426. 4260 PRINT
  427. 4270 PRINT "error - check logic or data"
  428. 4280 PRINT
  429. 4290 PRINT ERRMSG$(ERRNO)
  430. 4300 GOTO 13450
  431. 4310 '
  432. 4320 '  SCAN OVER STRING LITERALS BOUND IN QUOTES
  433. 4330 '
  434. 4340 K=I+1
  435. 4350 FOR J=K TO E
  436. 4360 C$=MID$(B$,J,1)
  437. 4370 IF C$=QUOTE$ GOTO 4420
  438. 4380 NEXT J
  439. 4390 PRINT:PRINT "PROGRAM TRAP REACHED"
  440. 4400 STOP
  441. 4410 END
  442. 4420 I=J
  443. 4430 GOTO 2640
  444. 4440 '
  445. 4450 PRINT
  446. 4460 PRINT "** ERROR ";ERR;" ACCESSING ";DSN$
  447. 4470 IF ERR=53 THEN PRINT DSN$;" NOT ON DISKETTE"
  448. 4480 RESUME 4490
  449. 4490 ON ERROR GOTO 0
  450. 4500 PRINT
  451. 4510 PRINT "PRESS ANY KEY TO CONTINUE"
  452. 4520 GOSUB 9660
  453. 4530 KEYIN$=INKEY$
  454. 4540 IF KEYIN$=""  GOTO 4530
  455. 4550 IF KEYIN$=CHR$(27) GOTO 13450
  456. 4560 GOTO 1290
  457. 4570 '
  458. 4580 ' WHAT TYPE OF BASIC ERROR WAS FOUND, MOSTLY CONCERNED WITH FILE ERRORS
  459. 4590 '
  460. 4600 IF ERR<52 THEN M$="":GOTO 4620
  461. 4610 M$=EQ$(ERR-51)
  462. 4620 IF M$="" THEN M$="BASIC ERROR "+STR$(ERR)
  463. 4630 RETURN
  464. 4640 '
  465. 4650 ' ERROR HANDLING ROUTINES FOR THE OUTPUT BASIC PROGRAM
  466. 4660 '
  467. 4670 ROW=CSRLIN
  468. 4680 COLUMN=POS(0)
  469. 4690 GOSUB 4600
  470. 4700 RESUME 4710
  471. 4710 ON ERROR GOTO 0
  472. 4720 LOCATE 24,1,1
  473. 4730 COLOR 15
  474. 4740 PRINT "EXPANDED PROGRAM WRITE FAILED. ";M$
  475. 4750 M$=" "
  476. 4760 PRINT "CORRECT PROBLEM AND PRESS ANY KEY TO CONTINUE";
  477. 4770 GOSUB 9660
  478. 4780 KEYIN$=INKEY$
  479. 4790 IF LEN(KEYIN$)=0 GOTO 4780
  480. 4800 IF KEYIN$=CHR$(27) GOTO 13450
  481. 4810 COLOR 7
  482. 4820 LOCATE ROW,COLUMN,0
  483. 4830 GOTO 3720
  484. 4840 '
  485. 4850 '  END-OF-FILE ROUTINES
  486. 4860 '
  487. 4870 CLS
  488. 4880 IF RUNTYPE <> 2 GOTO 5030
  489. 4890 GOSUB 7860             ' SORT THE LINE NUMBER REFERENCES
  490. 4900 IF ACTUAL.RUNTYPE=5 GOTO 5100
  491. 4910 GOSUB 8170             ' PRINT HEADINGS FOR LINE NUMBER REFERENCES
  492. 4920 FOR X=1 TO DIMLINE
  493. 4930 IF LINENOS(X,1)=-32768! GOTO 4950
  494. 4940 GOSUB 5280                     ' PRINT LINE NUMBER REFERENCES
  495. 4950 NEXT
  496. 4960 FOR I=1 TO 2
  497. 4970 LPRINT
  498. 4980 NEXT
  499. 4990 LPRINT "NOTE: LINE NUMBER APPLIES TO ANY line-number REFERENCED BY A :"
  500. 5000 LPRINT
  501. 5010 LPRINT "     GOTO, GOSUB, RESUME, RESTORE, THEN, ELSE OR ERL STATEMENT"
  502. 5020 LPRINT
  503. 5030 IF RUNTYPE < 3 GOTO 5100
  504. 5040 GOSUB 8500              ' SORT THE DATA NAME TABLE
  505. 5050 GOSUB 8810              ' PRINT THE LISTING HEADINGS
  506. 5060 FOR X=1 TO DIMLINE
  507. 5070 IF DATANAME$(X)="" GOTO 5090
  508. 5080 GOSUB 5280              ' PRINT THE LINE NUMBER REFERENCES
  509. 5090 NEXT
  510. 5100 PRINT
  511. 5110 FINISH$=TIME$
  512. 5120 PRINT "PROGRAM START  TIME = ";START$
  513. 5130 PRINT "PROGRAM FINISH TIME = ";FINISH$
  514. 5140 PRINT DSN$;" SUCCESSFULLY PROCESSED..."
  515. 5150 PRINT
  516. 5160 IF ACTUAL.RUNTYPE=5 GOTO 10700
  517. 5170 GOSUB 5200              'RESET PRINTER
  518. 5180 GOTO 13450
  519. 5190 '
  520. 5200 IF NOT EJECT GOTO 5230
  521. 5210 LPRINT CHR$(18) + CHR$(12)
  522. 5220 WIDTH "LPT1:",80
  523. 5230 RETURN
  524. 5240 '
  525. 5250 '
  526. 5260 '  PRINT LINE NUMBER REFERENCES
  527. 5270 '
  528. 5280 TOCNT=LINENOS(X,2)
  529. 5290 FROMLINE=LINENOS(X,3)
  530. 5300 TABPOS=3
  531. 5310 IF RUNTYPE=2 GOTO 5340
  532. 5320 IF LINECNT > PAGESIZE THEN GOSUB 8810
  533. 5330 GOTO 5350
  534. 5340 IF LINECNT > PAGESIZE THEN GOSUB 8170
  535. 5350 LPRINT
  536. 5360 IF RUNTYPE = 2 GOTO 5400
  537. 5370 LPRINT DATANAME$(X)
  538. 5380 LINECNT=LINECNT + 1
  539. 5390 GOTO 5420
  540. 5400 CURLINE!=LINENOS(X,1) + 32767
  541. 5410 LPRINT CURLINE!;
  542. 5420 TABPOS=20
  543. 5430 L=1
  544. 5440 FOR I=1 TO ROWLINES
  545. 5450 CURLINE!=LINENOS(FROMLINE,L+3) + 32767
  546. 5460 LPRINT TAB(TABPOS) CURLINE!;
  547. 5470 L=L + 1
  548. 5480 IF L > TOCNT GOTO 5510
  549. 5490 TABPOS=TABPOS + 8
  550. 5500 NEXT I
  551. 5510 TABPOS=20
  552. 5520 LPRINT
  553. 5530 LINECNT=LINECNT + 2
  554. 5540 IF L <= TOCNT GOTO 5440
  555. 5550 RETURN
  556. 5560 '
  557. 5570 ' ISOLATE DATANAMES/RESERVED WORDS AND LINE NUMBERS
  558. 5580 '
  559. 5590 SP$=P$
  560. 5600 SL=LEN(SP$)
  561. 5610 IF MID$(SP$,1,1) = APOST$ GOTO 5830
  562. 5620 GOSUB 5910
  563. 5630 IF MID$(SP$,1,4) = REM1$ GOTO 5830
  564. 5640 GOSUB 6050
  565. 5650 IF MID$(SP$,1,5)=DATA1$ GOTO 5870
  566. 5660 GOSUB 6210                     'REMOVE STRING LITERALS
  567. 5670 FOR I1 = 1 TO SL
  568. 5680 V=ASC(MID$(SP$,I1,1))
  569. 5690 IF V = 46 GOTO 5780       ' "."
  570. 5700 IF V = 38 GOTO 5780       ' "&"
  571. 5710 IF V < 48 GOTO 5770       ' "0"
  572. 5720 IF V > 90 GOTO 5770       ' "Z"
  573. 5730 IF V > 64 GOTO 5780       ' "@"
  574. 5740 IF V > 57 GOTO 5770       ' "9"
  575. 5750 GOTO 5780
  576. 5760 '
  577. 5770 MID$(SP$,I1,1)=BLANK$
  578. 5780 NEXT I1
  579. 5790 GOSUB 6450
  580. 5800 GOSUB 6530
  581. 5810 RETURN
  582. 5820 '
  583. 5830 SP$="REM"
  584. 5840 SL=LEN(SP$)
  585. 5850 GOTO 5800
  586. 5860 '
  587. 5870 SP$="DATA"
  588. 5880 SL=LEN(SP$)
  589. 5890 GOTO 5800
  590. 5900 '
  591. 5910 IF LEN(SP$)<3 THEN RETURN
  592. 5920 IF MID$(SP$,1,3)<>"REM" THEN RETURN
  593. 5930 IF LEN(SP$)=3 GOTO 6010
  594. 5940 IF MID$(SP$,4,1)=" " THEN RETURN
  595. 5950 IF MID$(SP$,4,1)="." THEN RETURN
  596. 5960 IF ASC(MID$(SP$,4,1))<48 GOTO 6010
  597. 5970 IF ASC(MID$(SP$,4,1))>90 GOTO 6010
  598. 5980 IF (ASC(MID$(SP$,4,1))>57) AND (ASC(MID$(SP$,4,1))<65) GOTO 6010
  599. 5990 RETURN
  600. 6000 '
  601. 6010 SP$="REM "
  602. 6020 SL=LEN(SP$)
  603. 6030 RETURN
  604. 6040 '
  605. 6050 IF LEN(SP$)<4 THEN RETURN
  606. 6060 IF MID$(SP$,1,4)<>"DATA" THEN RETURN
  607. 6070 IF LEN(SP$)=4 GOTO 6150
  608. 6080 IF MID$(SP$,5,1)=" " THEN RETURN
  609. 6090 IF MID$(SP$,5,1)="." THEN RETURN
  610. 6100 IF ASC(MID$(SP$,5,1))<48 GOTO 6150
  611. 6110 IF ASC(MID$(SP$,5,1))>90 GOTO 6150
  612. 6120 IF (ASC(MID$(SP$,5,1))>57) AND (ASC(MID$(SP$,5,1))<65) GOTO 6150
  613. 6130 RETURN
  614. 6140 '
  615. 6150 SP$="DATA "
  616. 6160 SL=LEN(SP$)
  617. 6170 RETURN
  618. 6180 '
  619. 6190 '  REMOVE STRING LITERALS BOUND IN QUOTES AND COMMENTS
  620. 6200 '
  621. 6210 S1=1
  622. 6220 FOR I1=S1 TO SL
  623. 6230 C$=MID$(SP$,I1,1)
  624. 6240 IF C$=QUOTE$ GOTO 6290
  625. 6250 IF C$=APOST$ GOTO 6410
  626. 6260 NEXT I1
  627. 6270 GOTO 6450
  628. 6280 '
  629. 6290 MID$(SP$,I1,1)=BLANK$
  630. 6300 FOR I1=I1 TO SL
  631. 6310 C$=MID$(SP$,I1,1)
  632. 6320 IF C$=QUOTE$ GOTO 6370
  633. 6330 MID$(SP$,I1,1)=BLANK$
  634. 6340 NEXT I1
  635. 6350 GOTO 6450
  636. 6360 '
  637. 6370 MID$(SP$,I1,1)=BLANK$
  638. 6380 S1=I1
  639. 6390 GOTO 6220
  640. 6400 '
  641. 6410 MID$(SP$,I1,1)=BLANK$
  642. 6420 SP$=MID$(SP$,1,I1)
  643. 6430 SL=LEN(SP$)
  644. 6440 '
  645. 6450 FOR I1=SL TO 1 STEP -1
  646. 6460 C$=MID$(SP$,I1,1)
  647. 6470 IF C$ <> BLANK$ GOTO 6490
  648. 6480 NEXT I1
  649. 6490 SP$=MID$(SP$,1,I1)
  650. 6500 SL=LEN(SP$)
  651. 6510 RETURN
  652. 6520 '
  653. 6530 S1=1
  654. 6540 GOSUB 7010                     'GET A WORD
  655. 6550 IF C$="" GOTO 6630
  656. 6560 IF C$< "A" GOTO 6540
  657. 6570 IF RUNTYPE = 2 GOTO 6870
  658. 6580 GOSUB 6670                     'BINARY SEARCH OF RESERVED WORD TABLE
  659. 6590 IF FOUND=1 GOTO 6870
  660. 6600 IF RUNTYPE <> 3 GOTO 6540
  661. 6610 GOSUB 7400                     'ADD DATANAMES/LINENOS TO THEIR TABLES
  662. 6620 GOTO 6540
  663. 6630 RETURN
  664. 6640 '
  665. 6650 '  BINARY SEARCH OF RESERVED WORD TABLE
  666. 6660 '
  667. 6670 FOUND=0
  668. 6680 LOW!=1
  669. 6690 HIGH!=RESCNT
  670. 6700 HALF=FIX((HIGH!/2) + .5)
  671. 6710 NOW=HALF
  672. 6720 IF C$=RESWRD$(NOW) GOTO 6840
  673. 6730 IF C$ < RESWRD$(NOW) GOTO 6810
  674. 6740 LOW!=NOW + 1
  675. 6750 IF LOW! > HIGH! GOTO 6850
  676. 6760 IF HIGH! < LOW! GOTO 6850
  677. 6770 NUW=FIX((HIGH!-LOW!)/2! + .5)
  678. 6780 NOW=NUW+LOW!
  679. 6790 GOTO 6720
  680. 6800 '
  681. 6810 HIGH!=NOW - 1
  682. 6820 GOTO 6750
  683. 6830 '
  684. 6840 FOUND=1
  685. 6850 RETURN
  686. 6860 '
  687. 6870 IF C$="GOTO" GOTO 7260
  688. 6880 IF C$="GOSUB" GOTO 7260
  689. 6890 IF C$="RESUME" GOTO 7140
  690. 6900 IF C$="THEN" GOTO 7140
  691. 6910 IF C$="ELSE" GOTO 7140
  692. 6920 IF C$="ERL" GOTO 7140
  693. 6930 IF C$="RESTORE" GOTO 7140
  694. 6940 IF RUNTYPE <> 4 GOTO 6540
  695. 6950 IF WORDFLAG(NOW) = 0 GOTO 6540
  696. 6960 GOSUB 7400
  697. 6970 GOTO 6540
  698. 6980 '
  699. 6990 '  GET A WORD
  700. 7000 '
  701. 7010 C$=""
  702. 7020 FOR I1 = S1 TO SL
  703. 7030 C$=MID$(SP$,I1,1)
  704. 7040 IF C$<>BLANK$ GOTO 7060
  705. 7050 NEXT I1
  706. 7060 C$=""
  707. 7070 FOR I1=I1 TO SL
  708. 7080 IF MID$(SP$,I1,1)=BLANK$ GOTO 7110
  709. 7090 C$=C$+MID$(SP$,I1,1)
  710. 7100 NEXT I1
  711. 7110 S1=I1
  712. 7120 RETURN
  713. 7130 '
  714. 7140 IF RUNTYPE <> 4 GOTO 7170
  715. 7150 IF WORDFLAG(NOW) = 0 GOTO 7170
  716. 7160 GOSUB 7400
  717. 7170 S1=I1
  718. 7180 IF RUNTYPE <> 2 GOTO 6540
  719. 7190 GOSUB 7010
  720. 7200 IF C$="" GOTO 7240
  721. 7210 IF ASC(C$) > 64 GOTO 6570
  722. 7220 GOSUB 7400
  723. 7230 GOTO 6540
  724. 7240 RETURN
  725. 7250 '
  726. 7260 IF RUNTYPE <> 4 GOTO 7290
  727. 7270 IF WORDFLAG(NOW) = 0 GOTO 7290
  728. 7280 GOSUB 7400
  729. 7290 S1=I1
  730. 7300 IF RUNTYPE <> 2 GOTO 6540
  731. 7310 GOSUB 7010
  732. 7320 IF C$="" GOTO 7360
  733. 7330 IF ASC(C$) > 64 GOTO 6570
  734. 7340 GOSUB 7400
  735. 7350 GOTO 7310
  736. 7360 RETURN
  737. 7370 '
  738. 7380 '  ADD DATENAMES AND/OR LINE NUMBERS TO THEIR RESPECTIVE TABLES
  739. 7390 '
  740. 7400 IF RUNTYPE <> 4 GOTO 7470
  741. 7410 X=NOW
  742. 7420 DATANAME$(X)=C$
  743. 7430 NUMLINES=RESCNT
  744. 7440 LINETO=X
  745. 7450 GOTO 7680
  746. 7460 '
  747. 7470 IF RUNTYPE <> 2 GOTO 7580
  748. 7480 LINETO=VAL(C$) - 32767
  749. 7490 FOR X=1 TO DIMLINE
  750. 7500 IF LINENOS(X,1)=LINETO GOTO 7560
  751. 7510 IF LINENOS(X,1) = -32768! GOTO 7550
  752. 7520 NEXT X
  753. 7530 GOTO 7810
  754. 7540 '
  755. 7550 NUMLINES=X
  756. 7560 GOTO 7680
  757. 7570 '
  758. 7580 IF RUNTYPE <> 3 GOTO 4260
  759. 7590 FOR X=1 TO DNMCNT
  760. 7600 IF DATANAME$(X) = "" GOTO 7650
  761. 7610 IF DATANAME$(X) = C$ GOTO 7670
  762. 7620 NEXT X
  763. 7630 GOTO 7810
  764. 7640 '
  765. 7650 DATANAME$(X) = C$
  766. 7660 NUMLINES=X
  767. 7670 LINETO=X
  768. 7680 LINENOS(X,1)=LINETO
  769. 7690 LINENOS(X,3)=X
  770. 7700 Z=LINENOS(X,2)
  771. 7710 Y=1
  772. 7720 IF Z=0 GOTO 7770
  773. 7730 IF Z=1 AND ACTUAL.RUNTYPE=5 GOTO 7790
  774. 7740 FOR Y=1 TO Z
  775. 7750 IF LINENOS(X,Y + 3)=LINENO GOTO 7790
  776. 7760 NEXT Y
  777. 7770 LINENOS(X,Y + 3)=LINENO
  778. 7780 LINENOS(X,2)=LINENOS(X,2) + 1
  779. 7790 RETURN
  780. 7800 '
  781. 7810 ERRNO=6
  782. 7820 GOTO 4260
  783. 7830 '
  784. 7840 '  SORT LINE NUMBER TABLE
  785. 7850 '
  786. 7860 PRINT "START - LINE NUMBER TABLE SORT : ";TIME$
  787. 7870 GOSUB 9120
  788. 7880 ROW=CSRLIN
  789. 7890 COLUMN=POS(0)
  790. 7900 LOCATE 25,1,0
  791. 7910 PRINT STRING$(79," ");
  792. 7920 LOCATE 25,1,0
  793. 7930 PRINT "** SORTING";
  794. 7940 FOR X=1 TO NUMLINES - 1
  795. 7950 FOR Y=X+1 TO NUMLINES
  796. 7960 IF LINENOS(X,1) < LINENOS(Y,1) GOTO 8000
  797. 7970 SWAP LINENOS(X,1),LINENOS(Y,1)
  798. 7980 SWAP LINENOS(X,2),LINENOS(Y,2)
  799. 7990 SWAP LINENOS(X,3),LINENOS(Y,3)
  800. 8000 NEXT
  801. 8010 LOCATE 25,1,0
  802. 8020 PRINT "          ";
  803. 8030 LOCATE 25,1,0
  804. 8040 PRINT "** SORTING";
  805. 8050 NEXT
  806. 8060 LOCATE 25,1,0
  807. 8070 PRINT STRING$(79," ");
  808. 8080 LOCATE ROW,COLUMN,1
  809. 8090 PRINT
  810. 8100 PRINT "FINISH- LINE NUMBER TABLE SORT : ";TIME$
  811. 8110 GOSUB 9120
  812. 8120 PRINT
  813. 8130 RETURN
  814. 8140 '
  815. 8150 '  PRINT HEADINGS FOR LINE NUMBER CROSS REFERENCE
  816. 8160 '
  817. 8170 ON ERROR GOTO 8310
  818. 8180 LPRINT CHR$(13)+CHR$(12)
  819. 8190 LPRINT "PROGRAM : ";DSN$ TAB(75) DATE$;" @ ";TIME$
  820. 8200 LPRINT
  821. 8210 LPRINT TAB(35) "LINE NUMBER CROSS-REFERENCE"
  822. 8220 LPRINT
  823. 8230 LPRINT " LINE"
  824. 8240 LPRINT "NUMBER                -------REFERENCES------REFERENCES------REFERENCES------REFERENCES------"
  825. 8250 ON ERROR GOTO 0
  826. 8260 LINECNT=8
  827. 8270 RETURN
  828. 8280 '
  829. 8290 '  ERROR HANDLING ROUTINE FOR THE PRINTER
  830. 8300 '
  831. 8310 IF ERR=24 THEN RESUME
  832. 8320 IF ERR<>27 THEN 8440
  833. 8330 CLS
  834. 8340 PRINT CHR$(7)+CHR$(7)
  835. 8350 PRINT
  836. 8360 PRINT "PRINTER NOT READY OR OUT OF PAPER"
  837. 8370 PRINT "READY THE PRINTER, AND PRESS ANY KEY TO CONTINUE"
  838. 8380 GOSUB 9660
  839. 8390 KEYIN$=INKEY$
  840. 8400 IF KEYIN$=""  GOTO 8390
  841. 8410 IF KEYIN$=CHR$(27) GOTO 13450
  842. 8420 RESUME
  843. 8430 '
  844. 8440 PRINT
  845. 8450 PRINT "BASIC ERROR : ";ERR;" AT LINE NO. : ";ERL
  846. 8460 GOTO 13450
  847. 8470 '
  848. 8480 '  SORT DATANAME TABLE
  849. 8490 '
  850. 8500 IF RUNTYPE = 4 GOTO 8770
  851. 8510 PRINT "START - DATA NAME TABLE SORT : ";TIME$
  852. 8520 GOSUB 9120
  853. 8530 ROW=CSRLIN
  854. 8540 COLUMN=POS(0)
  855. 8550 LOCATE 25,1,0
  856. 8560 PRINT STRING$(79," ");
  857. 8570 LOCATE 25,1,0
  858. 8580 PRINT "** SORTING";
  859. 8590 FOR X=1 TO NUMLINES - 1
  860. 8600 FOR Y=X+1 TO NUMLINES
  861. 8610 IF DATANAME$(X)<DATANAME$(Y) GOTO 8660
  862. 8620 SWAP DATANAME$(X),DATANAME$(Y)
  863. 8630 SWAP LINENOS(X,1),LINENOS(Y,1)
  864. 8640 SWAP LINENOS(X,2),LINENOS(Y,2)
  865. 8650 SWAP LINENOS(X,3),LINENOS(Y,3)
  866. 8660 NEXT
  867. 8670 LOCATE 25,1,0
  868. 8680 PRINT "          ";
  869. 8690 LOCATE 25,1,0
  870. 8700 PRINT "** SORTING";
  871. 8710 NEXT
  872. 8720 LOCATE 25,1,0
  873. 8730 PRINT STRING$(79," ");
  874. 8740 LOCATE ROW,COLUMN,1
  875. 8750 PRINT "FINISH- DATA NAME TABLE SORT : ";TIME$
  876. 8760 GOSUB 9120
  877. 8770 RETURN
  878. 8780 '
  879. 8790 '   PRINT HEADINGS FOR THE DATANAME CROSS REFERENCE
  880. 8800 '
  881. 8810 ON ERROR GOTO 8310
  882. 8820 LPRINT CHR$(13)+CHR$(12)
  883. 8830 LPRINT "PROGRAM : ";DSN$ TAB(75) DATE$;" @ ";TIME$
  884. 8840 LPRINT
  885. 8850 IF RUNTYPE=3 THEN LPRINT TAB(35) "DATA NAME CROSS-REFERENCE"
  886. 8860 IF RUNTYPE=4 THEN LPRINT TAB(30) "RESERVED WORD CROSS-REFERENCE"
  887. 8870 LPRINT
  888. 8880 IF RUNTYPE=3 THEN LPRINT " DATA"
  889. 8890 IF RUNTYPE=4 THEN LPRINT " RESERVED"
  890. 8900 IF RUNTYPE=3 THEN LPRINT " NAME                 ------REFERENCES------REFERENCES------REFERENCES------REFERENCES------"
  891. 8910 IF RUNTYPE=4 THEN LPRINT "   WORD               ------REFERENCES------REFERENCES------REFERENCES------REFERENCES------"
  892. 8920 ON ERROR GOTO 0
  893. 8930 LINECNT=8
  894. 8940 RETURN
  895. 8950 '
  896. 8960 '  PRINT THE LINE NUMBER THAT IS CURRENTLY PROCESSING
  897. 8970 '
  898. 8980 LOCATE 25,29,0
  899. 8990 PRINT CURLNUM$;
  900. 9000 RETURN
  901. 9010 '
  902. 9020 '  SEE WHAT KIND OF ADAPTER IS ON THIS SYSTEM
  903. 9030 '
  904. 9040 DEF SEG=0
  905. 9050 IBMMONO=0
  906. 9060 IF (PEEK(&H410) AND &H30) = &H30 THEN IBMMONO=1
  907. 9070 CURSOR.STOP=7
  908. 9080 IF IBMMONO=1 THEN CURSOR.STOP=13
  909. 9090 LOCATE ,,,0,CURSOR.STOP
  910. 9100 RETURN
  911. 9110 '
  912. 9120 FOR BEEP1=1 TO BEEPCNT
  913. 9130 BEEP
  914. 9140 FOR BEEP2=1 TO BEEPLOOP
  915. 9150 NEXT BEEP2
  916. 9160 NEXT BEEP1
  917. 9170 RETURN
  918. 9180 '
  919. 9190 COLOR 0,7
  920. 9200 CLS
  921. 9210 PRINT "                       ******************************"
  922. 9220 PRINT "                       *   BASIC PROGRAM PROCESSOR  *"
  923. 9230 PRINT "                       ******************************"
  924. 9240 PRINT
  925. 9250 PRINT
  926. 9260 PRINT "                 OPTION          DESCRIPTION"
  927. 9270 PRINT "                 ------     ---------------------------"
  928. 9280 PRINT
  929. 9290 PRINT "                   1        EXPAND BASIC PROGRAM"
  930. 9300 PRINT "                   2        LINE NUMBER CROSS REFERENCE"
  931. 9310 PRINT "                   3        DATA NAME CROSS REFERENCE"
  932. 9320 PRINT "                   4        RESERVED WORD CROSS REFERENCE"
  933. 9330 PRINT "                   5        COMPRESS BASIC PROGRAM"
  934. 9340 PRINT "                   9        EXIT PROGRAM"
  935. 9350 PRINT
  936. 9360 PRINT
  937. 9370 COLOR 31,0
  938. 9380 ROW=CSRLIN
  939. 9390 COLUMN=POS(0)
  940. 9400 GOSUB 9630
  941. 9410 GOSUB 9120
  942. 9420 GOSUB 9660
  943. 9430 KEYIN$=INKEY$
  944. 9440 IF KEYIN$="" GOTO 9430
  945. 9450 IF LEN(KEYIN$) <> 1 THEN BEEP:GOTO 9190
  946. 9460 COLOR 15,0
  947. 9470 PRINT KEYIN$
  948. 9480 IF VAL(KEYIN$) < 1 THEN BEEP:GOTO 9190
  949. 9490 IF VAL(KEYIN$)=9 THEN COLOR 7,0:CLS:GOTO 13450
  950. 9500 IF VAL(KEYIN$) > 5 THEN BEEP:GOTO 9190
  951. 9510 RUNTYPE=VAL(KEYIN$)
  952. 9520 ACTUAL.RUNTYPE=RUNTYPE
  953. 9530 IF ACTUAL.RUNTYPE=1 THEN GOSUB 9790
  954. 9540 IF ACTUAL.RUNTYPE=5 THEN GOSUB 9790
  955. 9550 IF LPRNT THEN GOSUB 9730: GOTO 9580
  956. 9560 IF ACTUAL.RUNTYPE=1 OR ACTUAL.RUNTYPE=5 GOTO 9580
  957. 9570 GOSUB 9730
  958. 9580 IF RUNTYPE=5 THEN RUNTYPE=2
  959. 9590 ON ERROR GOTO 0
  960. 9600 COLOR 7,0
  961. 9610 RETURN
  962. 9620 '
  963. 9630 PRINT "           SELECT AND ENTER OPTION     ";
  964. 9640 RETURN
  965. 9650 '
  966. 9660 DEF SEG=0
  967. 9670 POKE 1050,PEEK(1052)        ' FLUSH SYSTEM KEYBOARD BUFFER
  968. 9680 DEF SEG
  969. 9690 IF VER$="C" THEN RETURN
  970. 9700 POKE 106,0            ' FLUSH BASIC INTERNAL KEYBOARD BUFFER
  971. 9710 RETURN
  972. 9720 '
  973. 9730 ON ERROR GOTO 8310
  974. 9740 WIDTH "LPT1:",132
  975. 9750 LPRINT CHR$(15)
  976. 9760 EJECT=TRUE
  977. 9770 RETURN
  978. 9780 '
  979. 9790 PRINT
  980. 9800 PRINT
  981. 9810 SROW=ROW
  982. 9820 SCOLUMN=COLUMN
  983. 9830 ROW=CSRLIN
  984. 9840 COLUMN=POS(0)
  985. 9850 LOCATE SROW,SCOLUMN
  986. 9860 COLOR 15,0
  987. 9870 GOSUB 9630
  988. 9880 COLOR 0,7
  989. 9890 LOCATE ROW,COLUMN,0
  990. 9900 PRINT STRING$(79," ");
  991. 9910 LOCATE ROW,COLUMN,1
  992. 9920 COLOR 31,0
  993. 9930 PRINT "DO YOU WANT ";
  994. 9940 IF ACTUAL.RUNTYPE=1 THEN PRINT "AN EXPANDED ";
  995. 9950 IF ACTUAL.RUNTYPE=5 THEN PRINT "A COMPRESSED ";
  996. 9960 PRINT "PROGRAM LISTING ALSO? (Y OR N) > ";
  997. 9970 GOSUB 9660
  998. 9980 ANS$=INKEY$
  999. 9990 IF ANS$="" GOTO 9980
  1000. 10000 IF LEN(ANS$)<>1 THEN BEEP:GOTO 9980
  1001. 10010 IF ANS$=CHR$(27) GOTO 13450
  1002. 10020 COLOR 8,0
  1003. 10030 PRINT ANS$;
  1004. 10040 COLOR 0,7
  1005. 10050 IF ANS$="N" THEN RETURN
  1006. 10060 IF ANS$<>"Y" THEN BEEP:GOTO 9890
  1007. 10070 LPRNT=TRUE
  1008. 10080 RETURN
  1009. 10090 '
  1010. 10100 ROW=CSRLIN
  1011. 10110 COLUMN=POS(0)
  1012. 10120 LOCATE ROW,COLUMN,0
  1013. 10130 FOR I=1 TO 24 - ROW
  1014. 10140 PRINT STRING$(79," ")
  1015. 10150 NEXT
  1016. 10160 OUTDRIVE$=""
  1017. 10170 LOCATE ROW,COLUMN,1
  1018. 10180 BEEP
  1019. 10190 PRINT "CREATING OUTPUT FILE : "+OUTFILE$+" WHILE "+REASON$
  1020. 10200 PRINT
  1021. 10210 PRINT "WHAT DRIVE IS THE FILE TO BE ON (A OR B OR ENTER FOR DEFAULT)"
  1022. 10220 PRINT "DRIVE : ";
  1023. 10230 GOSUB 9660
  1024. 10240 OUTDRIVE$=INKEY$
  1025. 10250 IF OUTDRIVE$="" GOTO 10240
  1026. 10260 IF OUTDRIVE$=CHR$(27) GOTO 13450
  1027. 10270 IF LEN(OUTDRIVE$)<>1 THEN BEEP:GOTO 10240
  1028. 10280 IF OUTDRIVE$=CR$ THEN OUTDRIVE$="":GOTO 10340
  1029. 10290 PRINT OUTDRIVE$;
  1030. 10300 IF OUTDRIVE$="A" GOTO 10340
  1031. 10310 IF OUTDRIVE$="B" GOTO 10340
  1032. 10320 GOTO 10120
  1033. 10330 '
  1034. 10340 ON ERROR GOTO 10390
  1035. 10350 OPEN OUTDRIVE$+":"+OUTFILE$ FOR OUTPUT AS #2
  1036. 10360 ON ERROR GOTO 0
  1037. 10370 RETURN
  1038. 10380 '
  1039. 10390 ROW=CSRLIN
  1040. 10400 COLUMN=POS(0)
  1041. 10410 GOSUB 4600
  1042. 10420 RESUME 10430
  1043. 10430 ON ERROR GOTO 0
  1044. 10440 LOCATE 24,1,1
  1045. 10450 COLOR 15
  1046. 10460 PRINT REASON$;" FILE OPEN ON ";OUTFILE$;" FAILED. ";M$
  1047. 10470 M$=" "
  1048. 10480 PRINT "CORRECT PROBLEM AND PRESS ANY KEY TO CONTINUE";
  1049. 10490 GOSUB 9660
  1050. 10500 KEYIN$=INKEY$
  1051. 10510 IF KEYIN$="" GOTO 10500
  1052. 10520 IF KEYIN$=CHR$(27) GOTO 13450
  1053. 10530 CLS
  1054. 10540 LOCATE ROW,COLUMN,0
  1055. 10550 GOTO 10120
  1056. 10560 '
  1057. 10570 '
  1058. 10580 ' SET CAPSLOCK ON
  1059. 10590 '
  1060. 10600 DEF SEG=&H40
  1061. 10610 POKE &H17,PEEK(&H17) OR 64
  1062. 10620 DEF SEG
  1063. 10630 RETURN
  1064. 10640 '
  1065. 10650 '*************************************************************************
  1066. 10660 '*                                                                       *
  1067. 10670 '*               LOGIC TO COMPRESS A BASIC PROGRAM                       *
  1068. 10680 '*                                                                       *
  1069. 10690 '*************************************************************************
  1070. 10700 FREECNT=0
  1071. 10710 FREE!=FRE("")
  1072. 10720 S$=""
  1073. 10730 X=1
  1074. 10740 ON ERROR GOTO 0
  1075. 10750 CLOSE
  1076. 10760 OPEN DSN$ FOR INPUT AS 1
  1077. 10770 OUTFILE$="TEMPCOMP.BAS"
  1078. 10780 REASON$="COMPRESSING PROGRAM"
  1079. 10790 GOSUB 10100
  1080. 10800 START$=TIME$
  1081. 10810 LOCATE 25,1,0
  1082. 10820 PRINT "PROCESSING LINE NUMBER =                ";
  1083. 10830 IF EOF(1) GOTO 12640
  1084. 10840 FREECNT=FREECNT + 1
  1085. 10850 IF FREECNT > FREELMT THEN FREECNT=0:FREE!=FRE("")
  1086. 10860 GOSUB 1920
  1087. 10870 GOSUB 13000
  1088. 10880 L=LEN(B$)
  1089. 10890 GOSUB 4070
  1090. 10900 E=BEND
  1091. 10910 GOSUB 10960
  1092. 10920 GOTO 11350
  1093. 10930 '
  1094. 10940 '  ISOLATE LINE NUMBER AND FIND START OF BASIC STATEMENT(S)
  1095. 10950 '
  1096. 10960 CURLNUM$=""
  1097. 10970 FOR I = 1 TO E
  1098. 10980 C$=MID$(B$,I,1)
  1099. 10990 IF C$>BLANK$ GOTO 11010
  1100. 11000 NEXT I
  1101. 11010 S=I
  1102. 11020 P$=""
  1103. 11030 FOR I = S TO E
  1104. 11040 C$=MID$(B$,I,1)
  1105. 11050 IF C$<"0" GOTO 11090
  1106. 11060 IF C$>"9" GOTO 11090
  1107. 11070 P$=P$ + C$
  1108. 11080 NEXT I
  1109. 11090 IF I=E THEN ERRNO=1:GOTO 4260
  1110. 11100 IF LEN(P$)<1 THEN ERRN0=1:GOTO 4260
  1111. 11110 IF LEN(P$)>5 THEN ERRNO=1:GOTO 4260
  1112. 11120 CURLNUM$=P$
  1113. 11130 LOCATE 25,29,0
  1114. 11140 PRINT CURLNUM$;
  1115. 11150 CURLINE!=VAL(CURLNUM$)
  1116. 11160 LINENO=(CURLINE! - 32767)
  1117. 11170 S=I
  1118. 11180 GOSUB 11280
  1119. 11190 FOR I=S TO E
  1120. 11200 C$=MID$(B$,I,1)
  1121. 11210 IF C$>BLANK$ GOTO 11240
  1122. 11220 NEXT I
  1123. 11230 IF I=E THEN ERRNO=2:GOTO 4260
  1124. 11240 S=I
  1125. 11250 P$=MID$(B$,S)
  1126. 11260 RETURN
  1127. 11270 '
  1128. 11280 EQUAL.LINENOS=FALSE
  1129. 11290 FOR X=X TO NUMLINES
  1130. 11300 IF LINENO=LINENOS(X,1) THEN EQUAL.LINENOS=TRUE:RETURN
  1131. 11310 IF LINENO<LINENOS(X,1) THEN RETURN
  1132. 11320 NEXT X
  1133. 11330 RETURN
  1134. 11340 '
  1135. 11350 ADD=FALSE
  1136. 11360 REMPOS=0
  1137. 11370 IFPOS=0
  1138. 11380 IF EQUAL.LINENOS GOTO 12710
  1139. 11390 ADD=TRUE
  1140. 11400 IF MID$(P$,1,1) = "'" GOTO 10830
  1141. 11410 IF MID$(P$,1,3) = "REM" GOTO 11530
  1142. 11420 IF MID$(P$,1,4) = "DATA" GOTO 11610
  1143. 11430 GOSUB 12020
  1144. 11440 IF ADD=FALSE THEN GOSUB 11730
  1145. 11450 IF S$="" THEN S$=CURLNUM$+" "+P$:GOTO 11500
  1146. 11460 IF LEN(S$)>253 THEN ADD=FALSE:GOTO 11440
  1147. 11470 TOTAL.LEN=LEN(S$)+LEN(P$) + 1
  1148. 11480 IF TOTAL.LEN > 253 THEN ADD=FALSE:GOTO 11440
  1149. 11490 S$=S$+":"+P$
  1150. 11500 IF IFPOS <> 0 THEN GOSUB 11730
  1151. 11510 GOTO 10830
  1152. 11520 '
  1153. 11530 IF LEN(P$)<4 GOTO 10830
  1154. 11540 IF MID$(P$,4,1)=" " GOTO 10830
  1155. 11550 IF MID$(P$,4,1)="." GOTO 11430
  1156. 11560 IF ASC(MID$(P$,4,1))<48 GOTO 10830
  1157. 11570 IF ASC(MID$(P$,4,1))>90 GOTO 10830
  1158. 11580 IF (ASC(MID$(P$,4,1))>57) AND (ASC(MID$(P$,4,1))<65) GOTO 10830
  1159. 11590 GOTO 11430
  1160. 11600 '
  1161. 11610 IF LEN(P$)<5 GOTO 10830
  1162. 11620 IF MID$(P$,5,1)=" " GOTO 11690
  1163. 11630 IF MID$(P$,5,1)="." GOTO 11430
  1164. 11640 IF ASC(MID$(P$,5,1))<48 GOTO 11690
  1165. 11650 IF ASC(MID$(P$,5,1))>90 GOTO 11690
  1166. 11660 IF (ASC(MID$(P$,5,1))>57) AND (ASC(MID$(P$,5,1))<65) GOTO 11690
  1167. 11670 GOTO 11430
  1168. 11680 '
  1169. 11690 IFPOS=1
  1170. 11700 ADD=FALSE
  1171. 11710 GOTO 11440
  1172. 11720 '
  1173. 11730 IF S$="" THEN RETURN
  1174. 11740 GOSUB 11780
  1175. 11750 S$=""
  1176. 11760 RETURN
  1177. 11770 '
  1178. 11780 ON ERROR GOTO 11840
  1179. 11790 PRINT#2,S$
  1180. 11800 ON ERROR GOTO 0
  1181. 11810 IF LPRNT THEN LPRINT S$
  1182. 11820 RETURN
  1183. 11830 '
  1184. 11840 ROW=CSRLIN
  1185. 11850 COLUMN=POS(0)
  1186. 11860 GOSUB 4600
  1187. 11870 RESUME 11880
  1188. 11880 ON ERROR GOTO 0
  1189. 11890 LOCATE 24,1,1
  1190. 11900 COLOR 15
  1191. 11910 PRINT "COMPRESSED PROGRAM WRITE FAILED. ";M$
  1192. 11920 M$=" "
  1193. 11930 PRINT "CORRECT PROBLEM AND PRESS ANY KEY TO CONTINUE"
  1194. 11940 GOSUB 9660
  1195. 11950 KEYIN$=INKEY$
  1196. 11960 IF KEYIN$="" GOTO 11950
  1197. 11970 IF KEYIN$=CHR$(27) GOTO 13450
  1198. 11980 COLOR 7
  1199. 11990 LOCATE ROW,COLUMN,0
  1200. 12000 GOTO 11780
  1201. 12010 '
  1202. 12020 I=1
  1203. 12030 H$=P$
  1204. 12040 FOR I=I TO LEN(P$)
  1205. 12050 IF MID$(P$,I,1)=QUOTE$ GOTO 12100
  1206. 12060 IF MID$(P$,I,1)=APOST$ GOTO 12200
  1207. 12070 NEXT I
  1208. 12080 GOTO 12310
  1209. 12090 '
  1210. 12100 MID$(H$,I,1)=BLANK$
  1211. 12110 I=I + 1
  1212. 12120 FOR I=I TO LEN(P$)
  1213. 12130 MID$(H$,I,1)=BLANK$
  1214. 12140 IF MID$(P$,I,1)=QUOTE$ THEN I=I + 1:GOTO 12040
  1215. 12150 NEXT I
  1216. 12160 PRINT:PRINT "PROGRAM TRAP REACHED"
  1217. 12170 STOP
  1218. 12180 END
  1219. 12190 '
  1220. 12200 P$=MID$(P$,1,I - 1)
  1221. 12210 L=LEN(P$)
  1222. 12220 FOR I=L TO 1 STEP -1
  1223. 12230 IF MID$(P$,I,1)<>BLANK$ GOTO 12280
  1224. 12240 NEXT I
  1225. 12250 ERRNO=3
  1226. 12260 GOTO 4260
  1227. 12270 '
  1228. 12280 P$=MID$(P$,1,I)
  1229. 12290 H$=MID$(H$,1,I)
  1230. 12300 L=LEN(P$)
  1231. 12310 GOSUB 12370
  1232. 12320 IFPOS=INSTR(1,H$,"IF ")
  1233. 12330 REMPOS=INSTR(1,H$,"REM ")
  1234. 12340 IF REMPOS<>0 THEN GOSUB 12500
  1235. 12350 RETURN
  1236. 12360 '
  1237. 12370 FOR I=1 TO LEN(H$)
  1238. 12380 V=ASC(MID$(H$,I,1))
  1239. 12390 IF V=46 GOTO 12440
  1240. 12400 IF V<48 GOTO 12470
  1241. 12410 IF V>90 GOTO 12470
  1242. 12420 IF V>64 GOTO 12440
  1243. 12430 IF V>57 GOTO 12470
  1244. 12440 NEXT I
  1245. 12450 RETURN
  1246. 12460 '
  1247. 12470 MID$(H$,I,1)=BLANK$
  1248. 12480 GOTO 12440
  1249. 12490 '
  1250. 12500 P$=MID$(P$,1,REMPOS - 1)
  1251. 12510 H$=MID$(H$,1,REMPOS - 1)
  1252. 12520 L=LEN(P$)
  1253. 12530 FOR I=L TO 1 STEP -1
  1254. 12540 IF MID$(P$,I,1)<>BLANK$ THEN 12590
  1255. 12550 NEXT I
  1256. 12560 ERRNO=3
  1257. 12570 GOTO 4260
  1258. 12580 '
  1259. 12590 P$=MID$(P$,1,I)
  1260. 12600 H$=MID$(H$,1,I)
  1261. 12610 L=LEN(P$)
  1262. 12620 RETURN
  1263. 12630 '
  1264. 12640 GOSUB 11730
  1265. 12650 FINISH$=TIME$
  1266. 12660 PRINT
  1267. 12670 PRINT "COMPRESS PROCESSING FINISHED AT : ";FINISH$
  1268. 12680 PRINT "COMPRESS PROCESSING STARTED  AT : ";START$
  1269. 12690 GOTO 13450
  1270. 12700 '
  1271. 12710 IF MID$(P$,1,1)="'" THEN IFPOS=1:GOTO 11440
  1272. 12720 IF MID$(P$,1,3)="REM" GOTO 12760
  1273. 12730 IF MID$(P$,1,4)="DATA" GOTO 12880
  1274. 12740 GOTO 11430
  1275. 12750 '
  1276. 12760 IF LEN(P$)<4 GOTO 12840
  1277. 12770 IF MID$(P$,4,1)="." GOTO 11430
  1278. 12780 IF MID$(P$,4,1)=" " GOTO 12840
  1279. 12790 IF ASC(MID$(P$,4,1))<48 GOTO 12840
  1280. 12800 IF ASC(MID$(P$,4,1))>90 GOTO 12840
  1281. 12810 IF (ASC(MID$(P$,4,1))>57) AND (ASC(MID$(P$,4,1))<65) GOTO 12840
  1282. 12820 GOTO 11430
  1283. 12830 '
  1284. 12840 ADD=FALSE
  1285. 12850 IFPOS=1
  1286. 12860 GOTO 11440
  1287. 12870 '
  1288. 12880 IF LEN(P$)<5 GOTO 12960
  1289. 12890 IF MID$(P$,5,1)="." GOTO 11430
  1290. 12900 IF MID$(P$,5,1)=" " GOTO 12960
  1291. 12910 IF ASC(MID$(P$,5,1))<48 GOTO 12960
  1292. 12920 IF ASC(MID$(P$,5,1))>90 GOTO 12960
  1293. 12930 IF (ASC(MID$(P$,5,1))>57) AND (ASC(MID$(P$,5,1))<65) GOTO 12960
  1294. 12940 GOTO 11430
  1295. 12950 '
  1296. 12960 ADD=FALSE
  1297. 12970 IFPOS=1
  1298. 12980 GOTO 11440
  1299. 12990 '
  1300. 13000 I=1
  1301. 13010 FOR I=I TO LEN(B$)
  1302. 13020 C$=MID$(B$,I,1)
  1303. 13030 IF C$=APOST$ THEN RETURN
  1304. 13040 IF C$=QUOTE$ GOTO 13230
  1305. 13050 IF I>1 THEN IF C$=":" AND MID$(B$,I-1,1)=":" THEN MID$(B$,I,1)=BLANK$
  1306. 13060 IF C$<BLANK$ THEN MID$(B$,I,1)=BLANK$
  1307. 13070 IF C$>CHR$(122) THEN MID$(B$,I,1)=BLANK$
  1308. 13080 IF C$=BLANK$ GOTO 13310
  1309. 13090 IF C$>CHR$(96) THEN MID$(B$,I,1)=CHR$(ASC(C$) AND 95)
  1310. 13100 IF (C$<>"D") AND (C$<>"R") GOTO 13200
  1311. 13110 IF C$<>"R" GOTO 13170
  1312. 13120 C$=MID$(B$,I,4)
  1313. 13130 GOSUB 3770
  1314. 13140 IF C$=REM1$ THEN RETURN
  1315. 13150 GOTO 13200
  1316. 13160 '
  1317. 13170 C$=MID$(B$,I,5)
  1318. 13180 GOSUB 3910
  1319. 13190 IF C$=DATA1$ THEN RETURN
  1320. 13200 NEXT I
  1321. 13210 RETURN
  1322. 13220 '
  1323. 13230 FOR I=I+1 TO LEN(B$)
  1324. 13240 IF MID$(B$,I,1)=QUOTE$ THEN I=I+1:GOTO 13010
  1325. 13250 NEXT I
  1326. 13260 IF LEN(B$)>253 THEN ERRNO=5:GOTO 4260
  1327. 13270 B$=B$+QUOTE$
  1328. 13280 L=LEN(B$)
  1329. 13290 RETURN
  1330. 13300 '
  1331. 13310 IF I>=LEN(B$) THEN RETURN
  1332. 13320 SB$=MID$(B$,1,I)
  1333. 13330 FOR J=I+1 TO LEN(B$)
  1334. 13340 IF MID$(B$,J,1)<>BLANK$ GOTO 13360
  1335. 13350 NEXT J
  1336. 13360 C$=MID$(SB$,LEN(SB$)-1,1)
  1337. 13370 IF INSTR("=:,(<>*/\;^",C$)<>0 THEN SB$=LEFT$(SB$,LEN(SB$)-1)
  1338. 13380 C$=MID$(B$,J,1)
  1339. 13390 IF RIGHT$(SB$,1)= BLANK$ THEN IF INSTR("=:,)<>*/\^;",C$)<>0 THEN SB$=LEFT$(SB$,LEN(SB$)-1)
  1340. 13400 I=LEN(SB$)+1
  1341. 13410 SB$=SB$+MID$(B$,J)
  1342. 13420 B$=SB$
  1343. 13430 GOTO 13010
  1344. 13440 '
  1345. 13450 ON ERROR GOTO 0
  1346. 13460 CLOSE
  1347. 13470 PRINT
  1348. 13480 BEEP
  1349. 13490 KEYIN$=""
  1350. 13500 PRINT "PRESS ENTER TO EXIT PROGRAM"
  1351. 13510 GOSUB 9660
  1352. 13520 KEYIN$=INKEY$
  1353. 13530 IF KEYIN$="" GOTO 13520
  1354. 13540 IF LEN(KEYIN$)<>1 GOTO 13520
  1355. 13550 IF KEYIN$<>CR$ GOTO 13520
  1356. 13560 CLEAR
  1357. 13570 COLOR 7,0
  1358. 13580 CLS
  1359. 13590 END
  1360. 13600 GOTO 13450
  1361. 13610 '
  1362. 13620 DATA 153
  1363. 13630 DATA "ABS",2
  1364. 13640 DATA "AND",1
  1365. 13650 DATA "ASC",3
  1366. 13660 DATA "ATN",2
  1367. 13670 DATA "AUTO",9
  1368. 13680 DATA "BEEP",1
  1369. 13690 DATA "BLOAD",9
  1370. 13700 DATA "BSAVE",9
  1371. 13710 DATA "CALL",4
  1372. 13720 DATA "CDBL",1
  1373. 13730 DATA "CHAIN",4
  1374. 13740 DATA "CHR",3
  1375. 13750 DATA "CINT",1
  1376. 13760 DATA "CIRCLE",1
  1377. 13770 DATA "CLEAR",1
  1378. 13780 DATA "CLOSE",1
  1379. 13790 DATA "CLS",1
  1380. 13800 DATA "COLOR",1
  1381. 13810 DATA "COM",1
  1382. 13820 DATA "COMMON",4
  1383. 13830 DATA "CONT",9
  1384. 13840 DATA "COS",2
  1385. 13850 DATA "CSNG",1
  1386. 13860 DATA "CSRLIN",1
  1387. 13870 DATA "CVD",1
  1388. 13880 DATA "CVI",1
  1389. 13890 DATA "CVS",1
  1390. 13900 DATA "DATA",0
  1391. 13910 DATA "DATE",1
  1392. 13920 DATA "DEF",1
  1393. 13930 DATA "DEFDBL",1
  1394. 13940 DATA "DEFINT",1
  1395. 13950 DATA "DEFSNG",1
  1396. 13960 DATA "DEFSTR",1
  1397. 13970 DATA "DELETE",9
  1398. 13980 DATA "DIM",1
  1399. 13990 DATA "DRAW",1
  1400. 14000 DATA "EDIT",9
  1401. 14010 DATA "ELSE",0
  1402. 14020 DATA "END",1
  1403. 14030 DATA "EOF",1
  1404. 14040 DATA "EQV",1
  1405. 14050 DATA "ERASE",1
  1406. 14060 DATA "ERL",1
  1407. 14070 DATA "ERR",1
  1408. 14080 DATA "ERROR",1
  1409. 14090 DATA "EXP",2
  1410. 14100 DATA "FIELD",1
  1411. 14110 DATA "FILES",9
  1412. 14120 DATA "FIX",1
  1413. 14130 DATA "FOR",4
  1414. 14140 DATA "FRE",1
  1415. 14150 DATA "GET",1
  1416. 14160 DATA "GOSUB",4
  1417. 14170 DATA "GOTO",4
  1418. 14180 DATA "HEX",3
  1419. 14190 DATA "IF",1
  1420. 14200 DATA "IMP",1
  1421. 14210 DATA "INKEY",1
  1422. 14220 DATA "INP",1
  1423. 14230 DATA "INPUT",1
  1424. 14240 DATA "INSTR",4
  1425. 14250 DATA "INT",2
  1426. 14260 DATA "KEY",1
  1427. 14270 DATA "KILL",9
  1428. 14280 DATA "LEFT",3
  1429. 14290 DATA "LEN",3
  1430. 14300 DATA "LET",0
  1431. 14310 DATA "LINE",1
  1432. 14320 DATA "LIST",9
  1433. 14330 DATA "LLIST",9
  1434. 14340 DATA "LOAD",9
  1435. 14350 DATA "LOC",1
  1436. 14360 DATA "LOCATE",1
  1437. 14370 DATA "LOF",1
  1438. 14380 DATA "LOG",2
  1439. 14390 DATA "LPOS",1
  1440. 14400 DATA "LPRINT",1
  1441. 14410 DATA "LSET",1
  1442. 14420 DATA "MERGE",9
  1443. 14430 DATA "MID",3
  1444. 14440 DATA "MKD",3
  1445. 14450 DATA "MKI",3
  1446. 14460 DATA "MKS",3
  1447. 14470 DATA "MOD",2
  1448. 14480 DATA "MOTOR",1
  1449. 14490 DATA "NAME",9
  1450. 14500 DATA "NEW",9
  1451. 14510 DATA "NEXT",4
  1452. 14520 DATA "NOT",0
  1453. 14530 DATA "OCT",3
  1454. 14540 DATA "OFF",1
  1455. 14550 DATA "ON",0
  1456. 14560 DATA "OPEN",1
  1457. 14570 DATA "OPTION",1
  1458. 14580 DATA "OR",0
  1459. 14590 DATA "OUT",1
  1460. 14600 DATA "PAINT",1
  1461. 14610 DATA "PEEK",1
  1462. 14620 DATA "PEN",1
  1463. 14630 DATA "PLAY",1
  1464. 14640 DATA "POINT",1
  1465. 14650 DATA "POKE",1
  1466. 14660 DATA "POS",1
  1467. 14670 DATA "PRESET",1
  1468. 14680 DATA "PRINT",1
  1469. 14690 DATA "PSET",1
  1470. 14700 DATA "PUT",1
  1471. 14710 DATA "RANDOMIZE",2
  1472. 14720 DATA "READ",1
  1473. 14730 DATA "REM",1
  1474. 14740 DATA "RENUM",9
  1475. 14750 DATA "RESET",1
  1476. 14760 DATA "RESTORE",1
  1477. 14770 DATA "RESUME",4
  1478. 14780 DATA "RETURN",4
  1479. 14790 DATA "RIGHT",3
  1480. 14800 DATA "RND",2
  1481. 14810 DATA "RSET",1
  1482. 14820 DATA "RUN",1
  1483. 14830 DATA "SAVE",9
  1484. 14840 DATA "SCREEN",1
  1485. 14850 DATA "SGN",2
  1486. 14860 DATA "SIN",2
  1487. 14870 DATA "SOUND",1
  1488. 14880 DATA "SPACE",3
  1489. 14890 DATA "SPC",3
  1490. 14900 DATA "SQR",2
  1491. 14910 DATA "STEP",0
  1492. 14920 DATA "STICK",1
  1493. 14930 DATA "STOP",1
  1494. 14940 DATA "STR",3
  1495. 14950 DATA "STRIG",1
  1496. 14960 DATA "STRING",1
  1497. 14970 DATA "SWAP",1
  1498. 14980 DATA "SYSTEM",9
  1499. 14990 DATA "TAB",0
  1500. 15000 DATA "TAN",2
  1501. 15010 DATA "THEN",0
  1502. 15020 DATA "TIME",1
  1503. 15030 DATA "TO",0
  1504. 15040 DATA "TROFF",1
  1505. 15050 DATA "TRON",1
  1506. 15060 DATA "USING",1
  1507. 15070 DATA "USR",4
  1508. 15080 DATA "VAL",3
  1509. 15090 DATA "VARPTR",1
  1510. 15100 DATA "WAIT",1
  1511. 15110 DATA "WEND",1
  1512. 15120 DATA "WHILE",1
  1513. 15130 DATA "WIDTH",1
  1514. 15140 DATA "WRITE",1
  1515. 15150 DATA "XOR",0
  1516. 15160 END
  1517.