10 ' 20 ' 30 ' PROGRAM: Key Word Fix 40 ' DATE WRITTEN: July 4, 1982 50 ' VERSION: 1.0 60 ' AUTHOR: Timothy D. Winslow 70 ' 80 ' This program is written in microsoft basic for the 90 ' Heathkit H-89 computer. It takes a file that is messed up 100 ' by having the key words e.g. 'PRINT' being mashed next to a 110 ' variable, statement, etc. and puts a space afterwards, if it 120 ' doesn't already have one. 130 ' 140 ' It's a long process, the program isn't in good 150 ' order, and it's not full proof. It also does words in quotes. 160 ' I'm only human. 170 ' 180 ' This program may error out depending on the amount of 190 ' RAM 'Random Access Memory' you have. If it does, lower the 200 ' Level of Z$ by a couple of hundred. 210 ' 220 ' This program isn't looking at these key words: 230 ' 'INPUT', 'ERROR', 'FOR', 'GOTO', 'XOR', 'NOR', and 'LPRINT'. 240 ' The reasons are 'INPUT' is done with 'PUT', 'ERROR', 'FOR', 'XOR', 250 ' and 'NOR are done with 'OR', 'GOTO' is done with 'TO' and 'LPRINT' 260 ' is done with 'PRINT'. This is done so the program works a little 270 ' faster and to save array space. 280 ' 290 ' This program is public domain softward. Please treat 300 ' as such. I made it to help people not to sit and work putting 310 ' spaces in there program. This program make take long, but it 320 ' works. 330 ' 340 ' 350 CLEAR 360 ON ERROR GOTO 980 370 E$=CHR$(27)+"E":PRINT E$; 380 PRINT "DO YOU NEED INSTUCTIONS (Y/N/Q=QUIT): "; 390 Y$=INKEY$:IF Y$="" THEN 390 400 IF Y$="Q" OR Y$="q" THEN 1010 410 IF Y$="Y" OR Y$="y" THEN GOSUB 1030 ELSE 420 420 IF Y$="N" OR Y$="n" THEN 430 ELSE 380 430 PRINT E$; 440 DIM Z$(5000),Q(27),A$(27) 450 FOR X=1 TO 27 460 READ A$(X),Q(X) 470 NEXT X 480 INPUT "FILENAME TO BE WORKED FROM";N$ 490 IF LEN(N$)>12 THEN PRINT "INVALID FILENAME":GOTO 480 500 IF LEN(N$)<1 THEN PRINT "INVALID FILENAME":GOTO 480 510 FOR X=1 TO 9 520 IF MID$(N$,X,4)=".BAS" THEN 590 530 NEXT 540 FOR X=1 TO 9 550 IF MID$(N$,X,1)="." THEN PRINT "INVALID FILENAME":GOTO 480 560 NEXT X 570 IF LEN(N$)>8 THEN PRINT "INVALID FILENAME":GOTO 480 580 N$=N$+".BAS" 590 INPUT "FILENAME TO BE OUTPUTED";O$ 600 IF LEN(O$)>12 OR LEN(O$)<1 THEN PRINT "INVALID FILENAME":GOTO 590 610 FOR X=1 TO 9 620 IF MID$(O$,X,4)=".BAS" THEN 690 630 NEXT X 640 FOR X=1 TO 9 650 IF MID$(O$,X,1)="." THEN PRINT "INVALID FILENAME":GOTO 590 660 NEXT X 670 IF LEN(O$)>8 THEN PRINT "INVALID FILENAME":GOTO 590 680 O$=O$+".BAS" 690 OPEN "I",1,N$ 700 OPEN "O",2,O$ 710 FOR X=1 TO 1300 720 LINE INPUT #1,Z$(X) 730 PRINT E$; 740 IF POS(0) THEN PRINT:PRINT Z$(X) 750 A=LEN(Z$(X)) 760 P=0 770 PRINT "WORKING ON . . ."; 780 FOR M=1 TO 27 790 IF POS(0)>75 THEN PRINT 800 PRINT LEFT$(A$(M),Q(M)-1);", "; 810 FOR Z=1 TO A+P 820 IF MID$(Z$(X),Z,Q(M)-1)=LEFT$(A$(M),Q(M)-1) THEN 880 830 NEXT Z 840 NEXT M 850 PRINT #2,Z$(X) 860 NEXT X 870 GOTO 1010 880 IF MID$(Z$(X),Z,Q(M))=A$(M)THEN GOTO 830 890 FOR W=1 TO 500:NEXT W:Z$(X)=LEFT$(Z$(X),Z-1)+A$(M)+MID$(Z$(X),Z+(Q(M)-1),A) 900 PRINT E$; 910 IF POS(0) THEN PRINT:PRINT Z$(X) 920 PRINT"WORKING ON . . ."; 930 GOTO 780 940 DATA "AND ",4,"CALL ",5,"CLEAR ",6,"DATA ",5,"DEF ",4,"DIM ",4,"ELSE ",5 950 DATA "GET ",4,"GOSUB ",6,"IF ",3,"LET ",4,"LINE ",5,"NEXT ",5,"ON ",3 960 DATA "OR ",3,"OUT ",4,"PRINT ",6,"POKE ",5,"PUT ",4,"READ ",5,"REM ",4 970 DATA "RESUME ",7,"RETURN ",7,"STEP ",5,"THEN ",5,"TO ",3,"WHILE ",6 980 IF ERR=62 THEN RESUME 1010 990 IF ERR=53 THEN PRINT "Filename not found.....Please retry.":RESUME 480 1000 RESUME 1020 1010 PRINT E$:CLOSE:CLEAR:END 1020 PRINT E$;:PRINT ERR;"AT";ERL:CLOSE:CLEAR:END 1030 ' INSTRUCTIONS 1040 Y$="N" 1050 PRINT E$ 1060 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 1070 PRINT" This program is to fix key words in a Ascii 1080 PRINT" program. It will find a key word and put a space after it, 1090 PRINT" If it needs one. 1100 PRINT 1110 PRINT" This program takes a lone time because it checks 1120 PRINT" every letter in every line with all the key words. 1130 PRINT 1140 PRINT 1150 PRINT:PRINT "Press enter..."; 1160 I$=INKEY$:IF I$<> CHR$(13) THEN 1160 1170 RETURN