home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / qbas / proofer.bas < prev    next >
BASIC Source File  |  1984-10-29  |  3KB  |  56 lines

  1. 10 CLS:PRINT TAB(34);"Word Proofer":PRINT
  2. 20 PRINT TAB(32);"by Lance Pickup"
  3. 30 PRINT TAB(22);"3 Satellite Circle, Olean, NY 14760":PRINT
  4. 35 REM *** VOICE/DATA (716) 373-1992
  5. 40 CLEAR:DEFINT A-Y:DIM A,K,C,H,L1,J,B$,LB,C$,JH,IN,WC,L,I,IM,M,CR,CC,U$,X,Z,NF$,E,B$(128),A$(512)
  6. 50 REM Make sure you create a file called WORDS.TXT.  It should initially
  7. 60 REM contain 512 carriage returns, as no words will be known at the start.
  8. 70 REM The program learns words as you teach them to it, so be patient for the
  9. 80 REM first few tries and let it learn some words.  Soon the dictionary will
  10. 90 REM be custom tailored to your needs.
  11. 100 PRINT TAB(21);"Loading dictionary into memory"
  12. 110 OPEN "WORDS.TXT" FOR INPUT AS #1
  13. 120 FOR J=1 TO 512:INPUT #1,A$(J):NEXT :CLOSE
  14. 130 CLS
  15. 140 INPUT "File name:",NF$
  16. 150 I=1:OPEN NF$ FOR INPUT AS #1
  17. 160 IM=I-128*INT((I-1)/128):LINE INPUT #1,B$(IM)
  18. 170 IF I<=128*M THEN 200
  19. 180 IF EOF(1) THEN CLOSE:E=0:GOTO 210
  20. 190 E=1:IF IM=128 THEN CLOSE:GOTO 210
  21. 200 I=I+1:GOTO 160
  22. 210 B$=STRING$(255,32):LOCATE ,,0:IF M=0 THEN CLS
  23. 220 IF M=0 THEN CLS:PRINT CHR$(205);CHR$(205);CHR$(16);" Press ";CHR$(17);CHR$(196);CHR$(217);" to enter word in dictionary.":PRINT CHR$(205);CHR$(205);CHR$(16);" Press [SPACE BAR] to bypass word.":PRINT
  24. 230 FOR J=1 TO IM:CR=CSRLIN:CC=POS(0)
  25. 240 LOCATE 1,76:PRINT STR$(J+128*M);:LOCATE CR,CC
  26. 250 LB=LEN(B$(J)):IF LB=0 THEN 370
  27. 260 C=0:L1=1:FOR K=1 TO LB:A=ASC(MID$(B$(J),K,1))
  28. 270 IF A>127 OR A<32 THEN A=32
  29. 280 PRINT CHR$(A);:IF A>90 THEN A=A-32
  30. 290 MID$(B$,K,1)=CHR$(A)
  31. 300 IF A<65 THEN IF K>L1+1 THEN C=K-L1:C$=MID$(B$,L1,C)
  32. 310 IF A>64 AND A<97 AND K=LB THEN C=K-L1+1:C$=MID$(B$,L1,C)
  33. 320 IF A<65 OR K=LB THEN L1=K+1
  34. 330 IF C<2 THEN 360
  35. 340 IF RIGHT$(C$,1)="S" THEN C$=LEFT$(C$,C-1):C=C-1:IF C<2 THEN 360
  36. 350 WC=WC+1:GOSUB 430:C=0
  37. 360 NEXT
  38. 370 PRINT :NEXT :IF E THEN M=M+1:GOTO 150
  39. 380 PRINT :PRINT ,"Word count =";WC
  40. 390 C$="":PRINT ,"Updating dictionary on disk"
  41. 400 OPEN "WORDS.TXT" FOR OUTPUT AS #1
  42. 410 FOR JH=1 TO 512:PRINT #1,A$(JH):NEXT :CLOSE
  43. 420 CLEAR:END
  44. 430 H=0:FOR JH=1 TO C:H=H+ASC(MID$(C$,JH,1)):NEXT
  45. 440 H=H-512*INT(H/512)+1
  46. 450 L=LEN(A$(H)):IN=INSTR(A$(H),C$):IF IN THEN 510
  47. 460 PRINT "<?>";:BEEP
  48. 470 U$=INPUT$(1):IF U$=" " THEN IF INP(957)=223 THEN LPRINT USING "#####";J+128*M;:LPRINT ": ";LEFT$(B$(J),L1-1):GOTO 500 ELSE 500
  49. 480 IF U$<>CHR$(13) THEN 470
  50. 490 IF L+C<100 THEN A$(H)=C$+" "+A$(H) ELSE MID$(A$(H),C+2,99-C)=MID$(A$(H),1,99-C):GOSUB 540
  51. 500 FOR JH=1 TO 3:PRINT CHR$(29);CHR$(32);CHR$(29);:NEXT :RETURN
  52. 510 IF IN<2 OR IN+C>L THEN RETURN
  53. 520 IF MID$(A$(H),IN+C,1)<>CHR$(32) THEN RETURN
  54. 530 MID$(A$(H),C+2,IN-1)=MID$(A$(H),1,IN-1)
  55. 540 MID$(A$(H),1,C)=C$:MID$(A$(H),C+1,1)=CHR$(32):RETURN
  56.