home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / BASIC / KEYWRDFX.BAS < prev    next >
BASIC Source File  |  2000-06-30  |  4KB  |  118 lines

  1. 10 '
  2. 20 '
  3. 30 '    PROGRAM:       Key Word Fix
  4. 40 '    DATE WRITTEN:  July 4, 1982
  5. 50 '    VERSION:       1.0
  6. 60 '    AUTHOR:        Timothy D. Winslow
  7. 70 '
  8. 80 '            This program is written in microsoft basic for the
  9. 90 '    Heathkit H-89 computer.  It takes a file that is messed up
  10. 100 '   by having the key words e.g. 'PRINT' being mashed next to a
  11. 110 '   variable,  statement, etc. and puts a space afterwards, if it
  12. 120 '   doesn't already have one.
  13. 130 '
  14. 140 '           It's a long process, the program isn't in good
  15. 150 '   order, and it's not full proof.  It also does words in quotes.
  16. 160 '   I'm only human.
  17. 170 '
  18. 180 '           This program may error out depending on the amount of
  19. 190 '   RAM 'Random Access Memory' you have.  If it does, lower the
  20. 200 '   Level of Z$ by a couple of hundred.
  21. 210 '
  22. 220 '           This program isn't looking at these key words:
  23. 230 '   'INPUT', 'ERROR', 'FOR', 'GOTO', 'XOR', 'NOR', and 'LPRINT'.
  24. 240 '   The reasons are 'INPUT' is done with 'PUT', 'ERROR', 'FOR', 'XOR',
  25. 250 '   and 'NOR are done with 'OR', 'GOTO' is done with 'TO' and 'LPRINT'
  26. 260 '   is done with 'PRINT'.  This is done so the program works a little
  27. 270 '   faster and to save array space.
  28. 280 '
  29. 290 '           This program is public domain softward.  Please treat
  30. 300 '   as such.  I made it to help people not to sit and work putting
  31. 310 '   spaces in there program.  This program make take long, but it
  32. 320 '   works.
  33. 330 '
  34. 340 '
  35. 350 CLEAR
  36. 360 ON ERROR GOTO 980
  37. 370 E$=CHR$(27)+"E":PRINT E$;
  38. 380 PRINT "DO YOU NEED INSTUCTIONS (Y/N/Q=QUIT): ";
  39. 390 Y$=INKEY$:IF Y$="" THEN 390
  40. 400 IF Y$="Q" OR Y$="q" THEN 1010
  41. 410 IF Y$="Y" OR Y$="y" THEN GOSUB 1030 ELSE 420
  42. 420 IF Y$="N" OR Y$="n" THEN 430 ELSE 380
  43. 430 PRINT E$;
  44. 440 DIM Z$(5000),Q(27),A$(27)
  45. 450 FOR X=1 TO 27
  46. 460 READ A$(X),Q(X)
  47. 470 NEXT X
  48. 480 INPUT "FILENAME TO BE WORKED FROM";N$
  49. 490 IF LEN(N$)>12 THEN PRINT "INVALID FILENAME":GOTO 480
  50. 500 IF LEN(N$)<1 THEN PRINT "INVALID FILENAME":GOTO 480
  51. 510 FOR X=1 TO 9
  52. 520 IF MID$(N$,X,4)=".BAS" THEN 590
  53. 530 NEXT
  54. 540 FOR X=1 TO 9
  55. 550 IF MID$(N$,X,1)="." THEN PRINT "INVALID FILENAME":GOTO 480
  56. 560 NEXT X
  57. 570 IF LEN(N$)>8 THEN PRINT "INVALID FILENAME":GOTO 480
  58. 580 N$=N$+".BAS"
  59. 590 INPUT "FILENAME TO BE OUTPUTED";O$
  60. 600 IF LEN(O$)>12 OR LEN(O$)<1 THEN PRINT "INVALID FILENAME":GOTO 590
  61. 610 FOR X=1 TO 9
  62. 620 IF MID$(O$,X,4)=".BAS" THEN 690
  63. 630 NEXT X
  64. 640 FOR X=1 TO 9
  65. 650 IF MID$(O$,X,1)="." THEN PRINT "INVALID FILENAME":GOTO 590
  66. 660 NEXT X
  67. 670 IF LEN(O$)>8 THEN PRINT "INVALID FILENAME":GOTO 590
  68. 680 O$=O$+".BAS"
  69. 690 OPEN "I",1,N$
  70. 700 OPEN "O",2,O$
  71. 710 FOR X=1 TO 1300
  72. 720 LINE INPUT #1,Z$(X)
  73. 730 PRINT E$;
  74. 740 IF POS(0) THEN PRINT:PRINT Z$(X)
  75. 750 A=LEN(Z$(X))
  76. 760 P=0
  77. 770 PRINT "WORKING ON . . .";
  78. 780 FOR M=1 TO 27
  79. 790 IF POS(0)>75 THEN PRINT
  80. 800 PRINT LEFT$(A$(M),Q(M)-1);", ";
  81. 810 FOR Z=1 TO A+P
  82. 820 IF MID$(Z$(X),Z,Q(M)-1)=LEFT$(A$(M),Q(M)-1) THEN 880
  83. 830 NEXT Z
  84. 840 NEXT M
  85. 850 PRINT #2,Z$(X)
  86. 860 NEXT X
  87. 870 GOTO 1010
  88. 880 IF MID$(Z$(X),Z,Q(M))=A$(M)THEN GOTO 830
  89. 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)
  90. 900 PRINT E$;
  91. 910 IF POS(0) THEN PRINT:PRINT Z$(X)
  92. 920 PRINT"WORKING ON . . .";
  93. 930 GOTO 780
  94. 940 DATA "AND ",4,"CALL ",5,"CLEAR ",6,"DATA ",5,"DEF ",4,"DIM ",4,"ELSE ",5
  95. 950 DATA "GET ",4,"GOSUB ",6,"IF ",3,"LET ",4,"LINE ",5,"NEXT ",5,"ON ",3
  96. 960 DATA "OR ",3,"OUT ",4,"PRINT ",6,"POKE ",5,"PUT ",4,"READ ",5,"REM ",4
  97. 970 DATA "RESUME ",7,"RETURN ",7,"STEP ",5,"THEN ",5,"TO ",3,"WHILE ",6
  98. 980 IF ERR=62 THEN RESUME 1010 
  99. 990 IF ERR=53 THEN PRINT "Filename not found.....Please retry.":RESUME 480
  100. 1000 RESUME 1020
  101. 1010 PRINT E$:CLOSE:CLEAR:END
  102. 1020 PRINT E$;:PRINT ERR;"AT";ERL:CLOSE:CLEAR:END
  103. 1030 '                  INSTRUCTIONS
  104. 1040 Y$="N"
  105. 1050 PRINT E$
  106. 1060 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  107. 1070 PRINT"             This program is to fix key words in a Ascii
  108. 1080 PRINT"     program.  It will find a key word and put a space after it,
  109. 1090 PRINT"     If it needs one.
  110. 1100 PRINT
  111. 1110 PRINT"             This program takes a lone time because it checks
  112. 1120 PRINT"     every letter in every line with all the key words.
  113. 1130 PRINT
  114. 1140 PRINT
  115. 1150 PRINT:PRINT "Press enter...";
  116. 1160 I$=INKEY$:IF I$<> CHR$(13) THEN 1160
  117. 1170 RETURN
  118.