home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-scene-files / Geos / GEOS128 / GeosD81 / cs19.d81 / data base mngr (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  8.9 KB  |  282 lines

  1. 1000 REM  **  UNIVERSAL FILING PROGRAM
  2. 1010 :
  3. 1020 GOTO1810
  4. 1030 :
  5. 1040 REM  **  GET FILE DIRECTORY
  6. 1050 :
  7. 1060 PRINT"[147]"TAB(12)" FILE DIRECTORY"
  8. 1070 PRINTTAB(11)"[183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]":PRINT
  9. 1080 SYSPEEK(45)+PEEK(46)*256-440:GOSUB1120:RETURN
  10. 1090 :
  11. 1100 REM  **  READ DISK ERROR CHANNEL
  12. 1110 :
  13. 1120 OPEN15,8,15:INPUT#15,A$,B$:CLOSE15
  14. 1130 IFB$="OK"THENFLAG=1:GOTO1150
  15. 1140 PRINT"      ERROR [146][192]> ";B$:GOSUB1760:FLAG=0
  16. 1150 PRINT""TAB(12)" PRESS ANY KEY ":IFFLAGTHENGOSUB1710
  17. 1160 GOSUB1200:RETURN
  18. 1170 :
  19. 1180 REM  **  WAIT FOR A PRESSED KEY
  20. 1190 :
  21. 1200 POKE198,0:SYSGE:Z$=CHR$(PEEK(631)):RETURN
  22. 1210 :
  23. 1220 REM  **  TITLE FOR RECORD DETAIL
  24. 1230 :
  25. 1240 PRINT"[147]"TAB((24-LEN(F$+STR$(RE)))/2)"DETAIL ";F$;" RECORD #";RE
  26. 1250 PRINTTAB((20-LEN(F$+STR$(RE)))/2):FORI=1TO20+LEN(F$+STR$(RE)):PRINT"[183]";
  27. 1260 NEXT:PRINT"[145]":RETURN
  28. 1270 :
  29. 1280 REM  **  PRINT A RECORD ELEMENT
  30. 1290 :
  31. 1300 PRINT"  "+EN$(EL)TAB(8)" : "+F$(EL,500-NR+RE);:RETURN
  32. 1310 :
  33. 1320 REM  **  SAVE THE FILE
  34. 1330 :
  35. 1340 PRINT""TAB((28-LEN(F$))/2)"SAVING ";F$;" FILE"
  36. 1350 PRINTTAB((24-LEN(F$))/2):FORI=1TO16+LEN(F$):PRINT"[183]";:NEXT:PRINT
  37. 1360 OPEN15,8,15
  38. 1370 OPEN8,8,8,"0:"+F$+",S,W":INPUT#15,A$,B$
  39. 1380 IFB$="OK"THEN1470
  40. 1390 CLOSE8:CLOSE15:IFB$="FILE EXISTS"THEN1410
  41. 1400 GOSUB1140:GOTO2040
  42. 1410 GOSUB1140:GOSUB1710
  43. 1420 Z$="":INPUT"  REPLACE OLD FILE WITH NEW  Y/N [146]   Y[157][157][157]";Z$
  44. 1430 IFZ$="N"THEN2040
  45. 1440 IFZ$<>"Y"THENGOSUB1760:PRINT"[145][145][145]";:GOTO1420
  46. 1450 PRINTTAB(5)"RENAMING THE OLD FILE "+CHR$(34)+"BACKUP"+CHR$(34)
  47. 1460 OPEN15,8,15:PRINT#15,"S0:BACKUP":PRINT#15,"R0:BACKUP="+F$:CLOSE15:GOTO1340
  48. 1470 PRINT#8,NE;CHR$(13);NR;CHR$(13);
  49. 1480 FORI=0TONE:PRINT#8,EN$(I);CHR$(13);:NEXT
  50. 1490 FORRE=501-NRTO500:FOREL=0TONE
  51. 1500 IFF$(EL,RE)=""THENF$(EL,RE)=" "
  52. 1510 PRINT#8,F$(EL,RE);CHR$(13);
  53. 1520 NEXTEL:NEXTRE:CLOSE8:CLOSE15:GOTO2040
  54. 1530 :
  55. 1540 REM  **  SET UP ERROR ARRAYS
  56. 1550 :
  57. 1560 CLR:A$="":DIMF$(0,500),EN$(0):NE=0:NR=0:EN$(0)=" ?? [146]"
  58. 1570 VA=PEEK(45)+PEEK(46)*256:SO=VA-208:SE=VA-337:GE=VA-7:IN=VA-516:IX=VA-521
  59. 1580 F$="[159] FILE EMPTY [154][146]":F$(0,0)=F$:GOTO2040
  60. 1590 :
  61. 1600 REM  **  SORT THE FILE
  62. 1610 :
  63. 1620 PRINT"[147]"TAB(15)"SORTING":PRINTTAB(12)" [183][183][183][183][183][183][183][183][183][183][183]"
  64. 1630 SYSSO:RETURN
  65. 1640 :
  66. 1650 REM  **  M.L. INPUT ROUTINE
  67. 1660 :
  68. 1670 PRINT": ";:A$="":SYSIN:PRINT:RETURN
  69. 1680 :
  70. 1690 REM  **  BELL SOUND
  71. 1700 :
  72. 1710 POKE54296,15:POKE54277,0:POKE54278,247:POKE54276,17:POKE54273,40
  73. 1720 POKE54272,0:FORT=1TO50:NEXTT:POKE54276,14:RETURN
  74. 1730 :
  75. 1740 REM  **  BUZZER SOUND
  76. 1750 :
  77. 1760 POKE54296,15:POKE54277,45:POKE54278,165:POKE54276,33:POKE54273,6
  78. 1770 POKE54272,5:FORT=1TO100:NEXTT:POKE54276,14:POKE54273,0:POKE54272,0:RETURN
  79. 1780 :
  80. 1790 REM  **  LOAD A DISK FILE
  81. 1800 :
  82. 1810 CLR:A$="":PRINT"[147]"TAB(11)"MASTER FILE PROGRAM"
  83. 1820 PRINTTAB(9)"[183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]"
  84. 1830 PRINT""TAB(5)"ENTER THE NAME OF THE FILE YOU"
  85. 1840 PRINT""TAB(5)"WANT TO USE. IF YOU WISH TO SEE"
  86. 1850 PRINT""TAB(5)"THE LIST OF FILES ON THIS DISK,"
  87. 1860 PRINT""TAB(5)"THEN ENTER THE  _ [146] SYMBOL ONLY."
  88. 1870 VA=PEEK(45)+PEEK(46)*256:SO=VA-208:SE=VA-337:GE=VA-7:IN=VA-516:IX=VA-521
  89. 1880 GOSUB1710:INPUT"     FILE NAME    [157][157][157]";F$
  90. 1890 IFF$="_"THENGOSUB1040:GOTO1810
  91. 1900 IFF$=""THEN1560
  92. 1910 PRINT"     LOADING  "+F$+" [146] FILE"
  93. 1920 OPEN15,8,15
  94. 1930 OPEN8,8,8,"0:"+F$+",S,R":INPUT#15,A$,B$
  95. 1940 IFB$<>"OK"THENCLOSE8:CLOSE15:GOSUB1140:GOTO1810
  96. 1950 INPUT#8,NE:INPUT#8,NR
  97. 1960 DIMF$(NE,500),EN$(NE)
  98. 1970 FORI=0TONE:A$="":SYSIX:EN$(I)=A$:NEXT
  99. 1980 FORRE=501-NRTO500:FOREL=0TONE
  100. 1990 A$="":SYSIX:F$(EL,RE)=A$
  101. 2000 NEXTEL:NEXTRE:CLOSE8:CLOSE15
  102. 2010 :
  103. 2020 REM  **  MAIN MENU
  104. 2030 :
  105. 2040 PRINT"[147]"TAB((30-LEN(F$))/2)F$+" FILE MENU"
  106. 2050 PRINTTAB((26-LEN(F$))/2):FORI=1TOLEN(F$)+14:PRINT"[183]";:NEXT:PRINT"[145]"
  107. 2060 PRINT"         1 [146]  DISPLAY 10 RECORDS"
  108. 2070 PRINT"         2 [146]  FIND A RECORD"
  109. 2080 PRINT"         3 [146]  ADD A RECORD"
  110. 2090 PRINT"         4 [146]  START OR SAVE A FILE"
  111. 2100 PRINT"         5 [146]  LOAD A DISK FILE"
  112. 2110 PRINT"         6 [146]  PRINT RECORD(S)"
  113. 2120 PRINT"         7 [146]  EXIT PROGRAM"
  114. 2130 GOSUB1710
  115. 2140 GOSUB1200:Z=PEEK(631)-48:IFZ<0THENGOSUB1760:GOTO2140
  116. 2150 ONZGOTO2170,2510,2720,3010,3030,3330,3680
  117. 2160 GOSUB1760:GOTO2140
  118. 2170 :
  119. 2180 REM  **  DISPLAY 10 RECORDS
  120. 2190 :
  121. 2200 FLAG=0:RE=1:GOSUB2210:GOTO2230
  122. 2210 PRINT"[147]"TAB((22-LEN(F$))/2)"DISPLAY 10 "+F$+" RECORDS"
  123. 2220 PRINTTAB((18-LEN(F$))/2):FORI=1TOLEN(F$)+23:PRINT"[183]";:NEXT:PRINT:RETURN
  124. 2230 PRINT"   DISPLAY FROM RECORD #  ";RE;:FORI=1TOLEN(STR$(RE))
  125. 2240 PRINT"[157]";:NEXT:PRINT"[157][157]";:GOSUB1710:INPUTRE:IFRE>NRORRE<1THEN2040
  126. 2250 GOSUB2210:PRINT:PRINT" RECORD #":PRINT"[183][183][183][183][183][183][183][183][183][183]":PRINT:CT=0
  127. 2260 PRINT"   ";RETAB(7)" [192]> "+F$(0,500-NR+RE)
  128. 2270 RE=RE+1:IFRE>NRTHENPRINT:PRINT"     ^ LAST RECORD ":GOTO2290
  129. 2280 CT=CT+1:IFCT<10THEN2260
  130. 2290 GOSUB1710
  131. 2300 Z$="":INPUT"  CONTINUE, DETAIL OR MENU  C/D/M [146]   C[157][157][157]";Z$
  132. 2310 IFZ$="C"ANDRE<NR+1THEN2230
  133. 2320 IFZ$="C"ORZ$="M"THEN2040
  134. 2330 IFZ$<>"D"THENGOSUB1760:PRINT"[145][145][145]";:GOTO2300
  135. 2340 GOSUB1710
  136. 2350 PRINT"  RECORD #  ";RE-1;:FORI=1TO2+LEN(STR$(RE-1)):PRINT"[157]";:NEXT
  137. 2360 INPUTRE:IFRE>NRTHENGOSUB1760:PRINT"[145][145]";:GOTO2350
  138. 2370 IFRE<1THENRE=2:PRINT"[145][145]";:GOSUB1760:GOTO2350
  139. 2380 GOSUB1220:FOREL=0TONE:GOSUB1300:PRINT:NEXT
  140. 2390 PRINT"  [192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  141. 2400 IFFLAGANDFLAG<>600THENGOSUB1760:GOTO2420
  142. 2410 GOSUB1710
  143. 2420 Z$="M":INPUT"   EDIT, DELETE, OR MENU  E/D/M [146]    M[157][157][157]";Z$
  144. 2430 IFZ$="M"THENGOSUB1620:GOTO2040
  145. 2440 IFZ$="D"THENFORI=0TONE:F$(I,500-NR+RE)="":NEXTI:NR=NR-1:GOTO2490
  146. 2450 IFZ$<>"E"THENGOSUB1760:PRINT"[145]";:GOTO2420
  147. 2460 GOSUB1220:FOREL=0TONE:GOSUB1300
  148. 2470 FORI=1TO2+LEN(F$(EL,500-NR+RE)):PRINT"[157]";:NEXTI
  149. 2480 GOSUB1710:GOSUB1640:F$(EL,500-NR+RE)=A$:NEXTEL:FLAG=0:GOTO2390
  150. 2490 IFNR<1THEN1560
  151. 2500 GOSUB1620:GOTO2040
  152. 2510 :
  153. 2520 REM  **  FIND A RECORD
  154. 2530 :
  155. 2540 PRINT"[147]"TAB(5)"SPECIFY THE ELEMENT TO BE FOUND"
  156. 2550 PRINTTAB(4)"[183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]"
  157. 2560 FORI=0TONE:PRINTTAB(12)"";I+1;"[157] [146]  [192]>  ";EN$(I):PRINT:NEXTI
  158. 2570 GOSUB1700:Z$="":PRINTTAB(19):INPUT"1[157][157][157]";Z$:IFZ$=""THEN2040
  159. 2580 EL=ASC(Z$)-49:IFEL<0OREL>NETHEN2040
  160. 2590 PRINT"[147]"TAB((24-LEN(EN$(EL)))/2)"FIND A RECORD BY ";EN$(EL)
  161. 2600 PRINTTAB((20-LEN(EN$(EL)))/2):FORI=1TOLEN(EN$(EL))+21:PRINT"[183]";:NEXT
  162. 2610 PRINT:PRINT"  ";EN$(EL)TAB(9):GOSUB1710:GOSUB1640:POKE91,EL*3
  163. 2620 SYSSE:RE=PEEK(2029)+PEEK(2030)*256:IFA$=""THEN2040
  164. 2630 IFRE<501THENRE=RE-500+NR:FLAG=600:GOTO2380
  165. 2640 PRINT""TAB((30-LEN(A$))/2)A$;" NOT FOUND"
  166. 2650 PRINTTAB((26-LEN(A$))/2):FORI=1TO14+LEN(A$):PRINT"[183]";:NEXT
  167. 2660 PRINT:PRINT""TAB((16-LEN(EN$(EL)))/2)"TRY ANOTHER ";EN$(EL);"  Y/N [146]";
  168. 2670 GOSUB1760:Z$=""
  169. 2680 INPUT"   Y[157][157][157]";Z$:IFZ$="Y"THEN2590
  170. 2690 IFZ$="N"THEN2040
  171. 2700 PRINT"[145][145][145][145][145][145][145][145][145][145][145]";:GOTO2640
  172. 2710 :
  173. 2720 REM  ** ADD A RECORD
  174. 2730 :
  175. 2740 NR=NR+1:IFNR>500ORNE=0THENNR=NR-1:GOTO2040
  176. 2750 GOSUB2760:GOTO2780
  177. 2760 PRINT"[147]"TAB((26-LEN(F$))/2)"ADD A ";F$;" RECORD"
  178. 2770 PRINTTAB((22-LEN(F$))/2):FORI=1TO17+LEN(F$):PRINT"[183]";:NEXT:PRINT"[145]":RETURN
  179. 2780 PRINT"  ";EN$(0)TAB(9):GOSUB1710:GOSUB1640
  180. 2790 POKE91,0:SYSSE
  181. 2800 FLAG=PEEK(2029)+PEEK(2030)*256
  182. 2810 IFFLAG<>501THENNR=NR-1:RE=FL-500+NR:GOTO2380
  183. 2820 IFA$=""ANDNR<2THEN1560
  184. 2830 IFA$=""THENNR=NR-1:GOTO2040
  185. 2840 F$(0,500-NR)=A$:FOREL=1TONE:PRINT"  ";EN$(EL)TAB(9)
  186. 2850 GOSUB1710:GOSUB1640:F$(EL,500-NR)=A$:NEXT
  187. 2860 GOSUB1710
  188. 2870 Z$="":INPUT"           LOOK OK  Y/N [146]   Y[157][157][157]";Z$
  189. 2880 IFZ$="Y"THENGOSUB1620:GOTO2740
  190. 2890 IFZ$<>"N"THENGOSUB1760:PRINT"[145][145][145]";:GOTO2870
  191. 2900 GOSUB1710
  192. 2910 Z$="":INPUT"[145]      DELETE THIS RECORD  Y/N [146]   N[157][157][157]";Z$
  193. 2920 IFZ$="Y"THENFOREL=0TONE:F$(EL,500-NR)="":NEXT:NR=NR-1:GOTO2490
  194. 2930 IFZ$<>"N"THENGOSUB1760:GOTO2910
  195. 2940 GOSUB2760:FOREL=0TONE:PRINT"  ";EN$(EL)TAB(9)": ";F$(EL,500-NR);
  196. 2950 FORI=1TO2+LEN(F$(EL,500-NR)):PRINT"[157]";:NEXTI:GOSUB1710
  197. 2960 GOSUB1640:F$(EL,500-NR)=A$:IFF$(0,500-NR)=""THEN2940
  198. 2970 NEXTEL:GOTO2860
  199. 2980 :
  200. 2990 REM  **  START A NEW FILE
  201. 3000 :
  202. 3010 FLAG=0:IFNRTHEN3040
  203. 3020 GOTO3090
  204. 3030 FLAG=1:IFNR<1THEN1810
  205. 3040 GOSUB1710
  206. 3050 PRINT"[147]         SAVE THE ";F$:PRINT"         FILE  Y/N [146]   Y[157][157][157]";
  207. 3060 Z$="":INPUTZ$:IFZ$="Y"ANDNE>0THEN1320
  208. 3070 IFZ$<>"N"THENGOSUB1760:PRINT"[145][145][145][145]";:GOTO3050
  209. 3080 IFFLAGTHEN1810
  210. 3090 CLR:A$="":GOSUB3100:GOTO3120
  211. 3100 PRINT"[147]"TAB(8)"NEW FILE SPECIFICATIONS"
  212. 3110 PRINTTAB(6)"[183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]":RETURN
  213. 3120 GOSUB1710
  214. 3130 VA=PEEK(45)+PEEK(46)*256:SO=VA-208:SE=VA-337:GE=VA-7:IN=VA-516:IX=VA-521
  215. 3140 INPUT"  FILE NAME ";F$:IFF$=""THEN1560
  216. 3150 IFLEN(F$)>16THENGOSUB3100:F$="":GOSUB1760:GOTO3140
  217. 3160 GOSUB1710
  218. 3170 INPUT"  ELEMENTS PER FILE  (1-10) [146]    10[157][157][157][157]";NE
  219. 3180 IFNE<1ORNE>10THENPRINT"[145][145]";:GOSUB1760:GOTO3170
  220. 3190 NE=NE-1:DIMF$(NE,500),EN$(NE)
  221. 3200 PRINT"  MAX ELEMENT LENGTH IS 6 CHARACTERS"
  222. 3210 PRINT"  [183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][223][169][183][183][183][183][183][183][183][183][183][183][183][183][183][183]":GOSUB1710
  223. 3220 PRINT"  ELEMENT NAME #";1TAB(19):GOSUB1640:EN$(0)=A$
  224. 3230 IFLEN(EN$(0))<1ORLEN(EN$(0))>6THENPRINT"[145]";:GOSUB1760:GOTO3220
  225. 3240 FOREL=1TONE:GOSUB1710
  226. 3250 PRINT"  ELEMENT NAME #";EL+1TAB(19):GOSUB1640:EN$(EL)=A$
  227. 3260 IFLEN(EN$(EL))<1ORLEN(EN$(EL))>6THENPRINT"[145]";:GOSUB1760:GOTO3250
  228. 3270 NEXT:GOSUB1710
  229. 3280 Z$="":INPUT"          LOOK OK ?  Y/N [146]   Y[157][157][157]";Z$
  230. 3290 IFZ$="Y"THEN2720
  231. 3300 IFZ$<>"N"THENGOSUB1760:PRINT"[145][145]";:GOTO3280
  232. 3310 GOTO3090
  233. 3320 :
  234. 3330 REM  **  PRINT RECORD(S)
  235. 3340 :
  236. 3350 LL=500-NR+1:UL=500:IFNR<1THEN2040
  237. 3360 GOSUB3370:GOTO3390
  238. 3370 PRINT"[147]"TAB((26-LEN(F$))/2)"PRINT ";F$;" RECORDS"
  239. 3380 PRINTTAB((22-LEN(F$))/2):FORI=1TO18+LEN(F$):PRINT"[183]";:NEXT:PRINT:RETURN
  240. 3390 GOSUB1710
  241. 3400 Z$="":PRINT"       PRINT ALL THE RECORDS IN"
  242. 3410 INPUT"       THE FILE  Y/N [146]   Y[157][157][157]";Z$:IFZ$="Y"THEN3470
  243. 3420 IFZ$<>"N"THENGOSUB1760:PRINT"[145][145]";:GOTO3400
  244. 3430 GOSUB3370:RE=0:PRINT"       ENTER THE RECORD # YOU WISH":GOSUB1710
  245. 3440 INPUT"       TO PRINT ";RE
  246. 3450 IFRE<1ORRE>NRTHENPRINT"[145][145]";:GOSUB1760:GOTO3440
  247. 3460 LL=500-NR+RE:UL=LL
  248. 3470 PRINT"       HOW MANY OF THE FIRST LINES"
  249. 3480 PRINT"       OF EACH RECORD DO YOU WISH":GOSUB1710
  250. 3490 PE=-1:INPUT"       TO SUPRESS    3[157][157][157]";PE
  251. 3500 IFPE<0ORPE>NETHENPRINT"[145][145]";:GOSUB1760:GOTO3490
  252. 3510 PRINT"       ARE YOU PRINTING ADDRESS":GOSUB1710
  253. 3520 Z$="":INPUT"       LABELS  (Y/N) [146] ";Z$
  254. 3530 IFZ$=""THEN2040
  255. 3540 IFZ$="Y"THENFLAG=0:GOTO3570
  256. 3550 IFZ$<>"N"THENPRINT"[145][145]";:GOSUB1760:GOTO3520
  257. 3560 FLAG=1
  258. 3570 PRINTTAB(15)"PRINTING":PRINTTAB(12)" [183][183][183][183][183][183][183][183][183][183][183][183]"
  259. 3580 OPEN4,4
  260. 3590 CT=0
  261. 3600 FORRE=LLTOUL:LC=0:FOREL=PETONE
  262. 3610 IFFLAGTHENPRINT#4,EN$(EL);:FORI=1TO10-LEN(EN$(EL)):PRINT#4," ";:NEXTI
  263. 3620 IFFLAGANDEL=0THENPRINT#4,CHR$(14);F$(EL,RE);CHR$(15):LC=LC+1:NEXTEL
  264. 3630 PRINT#4,F$(EL,RE):LC=LC+1:NEXTEL
  265. 3640 FORI=1TONE+1-LC:PRINT#4:NEXTI
  266. 3650 IFFLAGTHENCT=CT+NE+2:IFCT+NE+1>60THENCT=0:PRINT#4,CHR$(12)
  267. 3660 NEXTRE:CLOSE4:GOTO2040
  268. 3670 :
  269. 3680 REM  **  EXIT THE PROGRAM
  270. 3690 :
  271. 3700 PRINT"[147]":POKE53280,5:POKE53281,6:POKE646,3:PRINT CHR$(14)
  272. 3701 PRINT"  [208]LEASE INSERT GEOS BOOT DISKETTE,"
  273. 3702 PRINT"   THEN PRESS '[210][197][212][213][210][206]'"
  274. 3703 GETC$:IFC$<>CHR$(13)THEN3703
  275. 3704 PRINT"          WORKING...        "
  276. 3705 OPEN15,8,15:PRINT#15,"I":CLOSE15:OPEN1,8,2,"$"
  277. 3706 FORI=1TO143:GET#1,A$:NEXT
  278. 3707 GET#1,B$:A$=A$+B$:CLOSE1
  279. 3708 IFA$="GE"THEN3710
  280. 3709 PRINT"[145]          [201]NCORRECT [196]ISKETTE":GOTO3701
  281. 3710 LOAD"GEOS",8,1
  282.