home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / open / biblep.lzh / BIBLE.BAS next >
BASIC Source File  |  1989-03-31  |  9KB  |  359 lines

  1.   CLS : WIDTH 80:COLOR 7
  2.   DIM BT$(66) : DIM VS$(400): DIM IX(200)
  3.   S$="                                       "
  4.   KEY 1,CHR$(235):KEY 2,CHR$(236):KEY 3,CHR$(237):KEY 4,CHR$(238):KEY 5,CHR$(239)
  5.   KEY 6,CHR$(240):KEY 7,CHR$(241):KEY 8,CHR$(242):KEY 9,CHR$(243):KEY 10,CHR$(244)
  6.   REM BIBLE.BAS
  7.   ON ERROR GOTO EROR1
  8.   PRINT "BIBLE.BAS   by    wm. perry *  8188 heather dr. * newburgh, in. 47630"
  9.   PRINT "---------------------------------------------------------------------"
  10.   PRINT "THIS PROGRAM PROVIDES A EASY, INTUITIVE, METHOD OF ACCESSING, COPYING,"
  11.   PRINT "SEARCHING, AND PRINTING BIBLE VERSES FROM THE 1100+ DISK FILES, EACH"
  12.   PRINT "CONTAINING A CHAPTER OF THE BIBLE.  IT WAS WRITTEN TO MAKE BETTER USE"
  13.   PRINT "OF THE 17 KJV BIBLE DISKS ON THE EXEC-PC BBS."
  14.   PRINT " "
  15.   PRINT "THIS PROGRAM, ALONG WITH THE TURBO BASIC SOURCE CODE IS RELEASED TO"
  16.   PRINT "THE PUBLIC DOMAIN.  EVERYONE IS FREE TO USE AND/OR DISTRIBUTE IT."
  17.   PRINT "IF YOU WOULD LIKE TO SEND THE THE AUTHOR A DOLLAR OR TWO, IT WOULD"
  18.   PRINT "BE APPRECIATED, BUT NOT MANDATORY."
  19.   PRINT " "
  20.   INPUT "HIT ENTER TO CONTINUE";X$
  21.   CLS
  22.   PRINT "BIBLE.BAS   by    wm. perry *  8188 heather dr. * newburgh, in. 47630"
  23.   PRINT "---------------------------------------------------------------------"
  24.   PRINT "THIS PROGRAM MAY BE RAN FROM EITHER THE HARD DISK OR FROM DRIVE A:"
  25.   PRINT "IT REQUIRES A BIBLE TABLE OF CONTENTS FILE CALLED BTAB TO BE ON THE"
  26.   PRINT "SAME DRIVE AND SUBDIRECTORY THAT THE PROGRAM IS RUNNING FROM.  THIS"
  27.   PRINT "IS ALSO THE DRIVE THAT WILL BE USED TO CREATE YOUR ASCII WORK FILE,"
  28.   PRINT "IF YOU COPY ANY VERSES TO DISK."
  29.   PRINT " "
  30.   PRINT "EVEN IF YOU RUN THIS PROGRAM FROM HARD DISK, OR A RAM DISK, THE BIBLE"
  31.   PRINT "ITSELF CAN STILL BE ON FLOPPY DISKS.  THE BTAB FILE CONTAINS THE FLOPPY"
  32.   PRINT "DISK LIST WHEN THE BIBLE WAS ON 17 LO DENS FLOPPIES.  IF YOU MOVE THE BIBLE"
  33.   PRINT "TO A HIGHER DENSITY FLOPPY MEDIA, YOU MUST EDIT THE BTAB FILE, TO TELL"
  34.   PRINT "THE PROGRAM WHICH FILES ARE ON WHICH DISK.  THIS IS EASY TO DO, JUST"
  35.   PRINT "MAINTAIN THE COLUMN STRUCTURE IN THE FILE."
  36.   PRINT " "
  37.   PRINT "IF YOU MOVE THE BIBLE TO YOUR HARD DISK, YOU DONT HAVE TO CHANGE THE"
  38.   PRINT "BTAB FILE.  BUT, YOU MUST MOVE ALL 17 DISKS INTO THE SAME SUBDIRECTORY"
  39.   PRINT "ON YOUR HARD DISK.  THIS WILL TAKE 4.5 MEG OF YOUR HARD DISK.  YOU WILL"
  40.   PRINT "GAIN FASTER ACCESS TIME AND YOU WILL NOT BE PROMPTED TO INSERT THE PROPER"
  41.   PRINT "FLOPPY WHEN CHANGING FILES."
  42.   PRINT  " "
  43.   INPUT  "WHICH DRIVE DO YOU WANT TO READ THE BIBLE FROM (A, B, C, OR D)";D$
  44.   D$=UCASE$(D$)
  45.   IF D$<"C" THEN INP1
  46.   INPUT "WHICH SUBDIRECTORY (DEFAULT = BIBLE)";D1$
  47.   IF D1$="" THEN D1$="BIBLE"
  48. INP1:
  49.   D2$="WORK"
  50.   INPUT "DO YOU WANT TO START A NEW WORK FILE (Y/N)";X$:X$=UCASE$(X$)
  51.   IF X$="Y" THEN SHELL "DEL WORK"
  52.   PRINT "READING THE BIBLE TABLE OF CONTENTS FILE FROM FILE BTAB ON THE CURRENT DRV"
  53.   OPEN "I",1,"BTAB"
  54.   FOR X=1 TO 66
  55.     LINE INPUT #1,BT$(X)
  56.   NEXT
  57.   CLOSE
  58.   X1=1:CH=1
  59. SEL1:
  60.   CLS:WIDTH 40:COLOR 7
  61.   PRINT "USE UP/DOWN ARROWS TO SELECT BOOK"
  62.   PRINT "USE L/R ARROWS TO SELECT CHAPTER"
  63.   PRINT "HIT ENTER TO READ CHAPTER TO MEMORY"
  64.   PRINT "HIT ESC OR Q TO END PROGRAM
  65. SEL2:
  66.   LOCATE 15,20
  67.   GOSUB SEL2A
  68.   PRINT BK$;CH;"       ";
  69. AMAIN3:
  70.   X$=INKEY$:IF X$="" THEN AMAIN3
  71.   IF LEN(X$)>1 THEN AMAIN5
  72.   X=ASC(X$)
  73.   IF X=13 THEN RD1         : REM RETURN
  74.   IF X=27 THEN ENDALL
  75.   IF UCASE$(X$)="Q" THEN ENDALL
  76.   GOTO AMAIN3
  77. AMAIN5:
  78.   Y=ASC(MID$(X$,2,1))
  79.   IF Y=75 THEN LFAR1
  80.   IF Y=77 THEN RTAR1
  81.   IF Y=72 THEN UPAR1
  82.   IF Y=80 THEN DNAR1
  83.   GOTO AMAIN3
  84.  
  85. SEL2A:
  86.   B$=BT$(X1)
  87.   BK$=MID$(B$,15,23)
  88.   X2=1
  89. SEL3:
  90.   X=INSTR(X2,B$,"-"):IF X>0 THEN X3=X:X2=X+1:GOTO SEL3
  91.   HI = VAL(MID$(B$,X3+1,3))
  92.   RETURN
  93.  
  94. LFAR1:
  95.   CH=CH-1:IF CH<1 THEN CH=HI
  96.   GOTO SEL2
  97.  
  98. RTAR1:
  99.   CH=CH+1:IF CH>HI THEN CH=1
  100.   GOTO SEL2
  101.  
  102. UPAR1:
  103.   CH=1
  104.   X1=X1-1:IF X1<1 THEN X1=66
  105.   GOTO SEL2
  106.  
  107. DNAR1:
  108.   CH=1
  109.   X1=X1+1:IF X1>66 THEN X1=1
  110.   GOTO SEL2
  111.  
  112. RD1:
  113.   IF D$>"B" THEN RD5
  114.   REM SAMPLE BTAB DATA REC...04 NUM        NUMBERS                 01-19,DISK 2;20-29,DISK 3;30-36,DISK 4;
  115.   X2=1:X9=2:IF MID$(B$,4,3)="PSA" THEN X9=3
  116. RD2:
  117.   X=INSTR(X2,B$,"-")
  118.   H=VAL(MID$(B$,X+1,X9))
  119.   IF CH > H THEN X2=X+1 : GOTO RD2
  120. RD3:
  121.   X=X+1:IF MID$(B$,X,1)<>"D" THEN RD3
  122.   X$="D"
  123. RD4:
  124.   X=X+1:IF MID$(B$,X,1)<>";" THEN X$=X$+MID$(B$,X,1):GOTO RD4
  125.   GOSUB CL1:  LOCATE 2,1
  126.   PRINT BK$;CH
  127.   IF X$=LX$ THEN RD5
  128.   LX$=X$
  129.   PRINT "HIT ANY KEY AFTER INSERTING ";X$
  130.   PRINT "IN DRIVE ";D$
  131. RD4A:
  132.   X$=INKEY$:IF LEN(X$)=0 THEN RD4A
  133.   LOCATE 2,1:PRINT S$:PRINT S$
  134. RD5:
  135.   CH$=STR$(CH+1000)
  136.   CH$=RIGHT$(CH$,3)
  137.   IF MID$(B$,4,3)<>"PSA" THEN CH$=RIGHT$(CH$,2)
  138.   X=4:X$=""
  139. RD6:
  140.   IF MID$(B$,X,1) = " " THEN RD7
  141.   X$=X$+MID$(B$,X,1):X=X+1
  142.   GOTO RD6
  143. RD7:
  144.   D9$=D$+":\"
  145.   IF D1$ <> "" THEN D9$=D9$+D1$+"\"
  146.   D9$=D9$+X$+CH$+".KJV"
  147.  
  148.   OPEN "I",1,D9$
  149.   X8=0
  150. RD10:
  151.   IF EOF(1) THEN RD15
  152.   LINE INPUT #1,VS$
  153.   X8=X8+1:VS$(X8)=VS$
  154.   IF MID$(VS$,1,1)<> " " THEN RD10
  155.   X=INSTR(VS$,":")
  156.   HIV=VAL(MID$(VS$,X+1,3))
  157.   IX(HIV)=X8
  158.   GOTO RD10
  159. RD15:
  160.   CLOSE 1
  161.   IF FFLG>0 THEN FD9A
  162.   CLS:WIDTH 40:COLOR 7
  163.   LOCATE 1,1
  164.   PRINT BK$
  165.   LOCATE 18,1
  166.   PRINT "PRESS ESC TO READ ANOTHER CHAPTER"
  167.   PRINT "PRESS  P  TO PRINT THIS VERSE"
  168.   PRINT "PRESS  C  TO COPY THIS VERSE TO FILE"
  169.   PRINT "PRESS  F  TO FIND A WORD"
  170.   PRINT "PRESS  Q  TO QUIT"
  171.   PRINT "PRESS ARROWS TO MOVE UP DOWN"
  172.   CV=1
  173. RD20:
  174.   GOSUB DSP1
  175.  
  176. RMAIN3:
  177.   X$=INKEY$:IF X$="" THEN RMAIN3
  178.   IF LEN(X$)>1 THEN RMAIN5
  179.   X=ASC(X$)
  180.   UX$=UCASE$(X$)
  181.   IF UX$="C" THEN CPY1
  182.   IF UX$="P" THEN PRT1
  183.   IF UX$="F" THEN FD1
  184.   IF X=27 THEN SEL1
  185.   GOTO RMAIN3
  186. RMAIN5:
  187.   Y=ASC(MID$(X$,2,1))
  188.   IF Y=72 THEN UPAR2
  189.   IF Y=80 THEN DNAR2
  190.   GOTO RMAIN3
  191. UPAR2:
  192.   CV=CV-1
  193.   IF CV<1 THEN CV=HIV
  194.   GOTO RD20
  195. DNAR2:
  196.   CV=CV+1
  197.   IF CV>HIV THEN NXCHAP
  198.   GOTO RD20
  199. NXCHAP:
  200.   GOSUB CL1
  201.   LOCATE 2,1
  202.   PRINT "READING NEXT CHAPTER..."
  203.   CH=CH+1:IF CH>HI THEN GOSUB NXBOOK
  204.   GOTO RD1
  205.  
  206. NXBOOK:
  207.   CH=1
  208.   X1=X1+1:IF X1>66 THEN X1=1
  209.   GOSUB SEL2A
  210.   RETURN
  211.  
  212. DSP1:
  213.   GOSUB CL1
  214.   LOCATE 2,1
  215. DSP2:
  216.   I=IX(CV)
  217. DSP2AA:
  218.   VS$=VS$(I)
  219.   REM MAKE AS MANY 40 CHAR LINES AS NECESSARY
  220. DSP2A:
  221.   IF LEN(VS$) < 39  THEN DSP5
  222.   X=39
  223. DSP3:
  224.   IF MID$(VS$,X,1) <> " " THEN X=X-1: GOTO DSP3
  225.   PRINT LEFT$(VS$,X)
  226.   VS$=RIGHT$(VS$,LEN(VS$)-X)
  227.   GOTO DSP2A
  228. DSP5:
  229.   I=I+1
  230.   IF I>X8 THEN DSP9
  231.   IF MID$(VS$(I),1,1)=" " THEN DSP9
  232.   VS$=VS$+" "+VS$(I)
  233.   GOTO DSP2A
  234. DSP9:
  235.   PRINT VS$
  236.   RETURN
  237.  
  238. CL1:
  239.   COLOR 14
  240.   FOR X=2 TO 17
  241.     LOCATE X,1
  242.     PRINT S$
  243.   NEXT
  244.   LOCATE 2,1
  245.   RETURN
  246.  
  247. CPY1:
  248.   I1=IX(CV)
  249.   A$=VS$(I1)
  250.   X5=INSTR(2,A$," ")
  251.   LOCATE 16,1:PRINT "COPIED ";BK$;MID$(A$,1,X5)
  252.   OPEN "A",2,D2$
  253.   PRINT #2,BK$
  254. CPY2:
  255.   PRINT #2,A$
  256.   I1=I1+1:IF I1>X8 THEN CPY9
  257.   A$=VS$(I1)
  258.   IF MID$(A$,1,1)<> " " THEN CPY2
  259. CPY9:
  260.   CLOSE 2
  261.   GOTO RMAIN3
  262.  
  263. PRT1:
  264.   I1=IX(CV)
  265.   A$=VS$(I1)
  266.   LPRINT BK$
  267. PRT2:
  268.   LPRINT A$
  269.   I1=I1+1:IF I1>X8 THEN PRT9
  270.   A$=VS$(I1)
  271.   IF MID$(A$,1,1)<> " " THEN PRT2
  272. PRT9:
  273.   GOTO RMAIN3
  274.  
  275. FD1:
  276.   GOSUB CL1
  277.   X5$=X6$:IF X5$="" THEN X5$=" "
  278.   LOCATE 2,1
  279.   PRINT "ENTER WORD TO FIND ("; X5$; ")";
  280.   INPUT X6$: X6$=UCASE$(X6$)
  281.   IF X6$="" THEN X6$=X5$
  282.   GOSUB CL1
  283. FD2:
  284.   XZ$=INKEY$
  285.   IF XZ$="" THEN XZ$=" "
  286.   XZ=ASC(XZ$)
  287.   IF XZ=27 THEN FDQUIT
  288.   I=I+1:IF I>X8 THEN FD9
  289.   A$=UCASE$(VS$(I))
  290.   X=INSTR(A$,X6$)
  291.   IF X=0 THEN FD2
  292. FD3:
  293.   IF MID$(VS$(I),1,1)<>" " THEN I=I-1:GOTO FD3
  294.   X=INSTR(VS$(I),":"):CV=VAL(MID$(VS$(I),X+1,3))
  295.   GOSUB DSP2AA
  296.   GOTO RMAIN3
  297. FD9:
  298.      REM  NXCHAP
  299.   LOCATE 1,1
  300.   COLOR 7
  301.   PRINT BK$;CH
  302.   LOCATE 2,1
  303.   PRINT "READING NEXT CHAPTER..."
  304.   I=0
  305.   CH=CH+1:IF CH>HI THEN GOSUB NXBOOK2
  306.   FFLG=1
  307.   GOTO RD1
  308. FD9A:
  309.      REM RETURN FROM RD1
  310.   FFLG=0
  311.   I=0
  312.   GOSUB CL1
  313.   GOTO FD2
  314.  
  315. NXBOOK2:
  316.   CH=1
  317.   X1=X1+1:IF X1>66 THEN X1=1
  318.   GOSUB SEL2A
  319.   LOCATE 1,1
  320.   COLOR 7
  321.   PRINT BK$;CH
  322.   GOSUB CL1
  323.   RETURN
  324.  
  325. FDQUIT:
  326.   LOCATE 2,1
  327.   PRINT "CANCELED FIND             "
  328.   INPUT "HIT ENTER TO CONTINUE";X$
  329.   GOTO SEL1
  330.  
  331. EROR1:
  332.   IF ERR<>53 THEN EROR2
  333.   IF D9$ <> "" THEN EROR1A
  334.   PRINT "ERROR --- BTAB FILE NOT ON DISK"
  335.   GOTO EROR9
  336. EROR1A:
  337.   PRINT "ERROR --- THIS FILE NOT ON DISK"
  338.   PRINT D9$
  339.   GOTO EROR9
  340.  
  341. EROR2:
  342.   IF ERR<>76 THEN EROR3
  343.   PRINT "PATH NOT FOUND":PRINT D9$
  344.   GOTO EROR9
  345. EROR3:
  346.   PRINT "AN ERROR HAS OCCURED IN THE BIBLE": PRINT "READING PROGRAM"
  347.   PRINT "ERROR NUMBER ";ERR
  348.   PRINT "ERROR LINE   ";ERLIN
  349.   PRINT "ERROR ADDR   ";ERADR
  350. EROR9:
  351.   INPUT "HIT ENTER";XX$
  352.   RESUME ENDALL
  353.  
  354. ENDALL:
  355.   CLOSE
  356.   CLS:WIDTH 80:COLOR 7
  357.   PRINT "END OF PROGRAM"
  358.   END
  359.