Compucolor.org – Virtual Media

Listing of file='DBSLST.BAS;01' on disk='vmedia/personal_database-sector.ccvf'

100 REM  ** DBSLST - MAY 26,79 **
110 CLEAR 1000:DIM D(14),ST(130,1),A(14),K(11),P(11),K$(15)
120 FG= PEEK (33265)
130 PLOT 6,2,12,6,56,14,3,13,0
140 PRINT " L I S T    D A T A    B A S E    F I L E "
150 PLOT 6,2,15,3,0,4
160 ADR= 256* PEEK (32941)+ PEEK (32940)
170 DD= PEEK (ADR+ 1):TT= PEEK (ADR+ 2):PP= PEEK (ADR+ 4)
180 IF TT= 99THEN SAVE "1:DBSLST":LOAD "FORMAT":RUN
190 IF DD< > 2OR I$< > ""THEN 220
200 PRINT TAB( 15);:INPUT "INSERT DATA DISK - HIT RETURN ";I$
210 PLOT 28,11
220 SP= 1
230 PRINT TAB( 15);:INPUT "ENTER NAME OF RANDOM FILE: ";F$:REM 
240 IF  F$= "EXIT" THEN 630
250 IF DD= 3THEN F$= "1:"+ F$
260 FILE "T",290
270 FILE "R",3,F$+ ".INF",2
280 GOTO 320
290 FILE "E",F,E,L:IF E< > 14THEN PRINT TAB( 15);"BAD FILE NAME"
300 IF E= 14THEN PRINT TAB( 15);"CANNOT LOCATE FILE"
310 GOTO 230
320 GOSUB 1100
330 IF PP= 0THEN 360
340 PRINT TAB( 10):INPUT "OUTPUT TO THE SCREEN OR A PRINTER? ";I$:REM 
350 IF LEFT$ (I$,1)= "P"THEN PLOT 27,13
360 PRINT TAB( 15);"FILE LAST ACCESSED  ";M;D;Y:REM 
370 GET 3,2;KEY$[16],KL
380 FILE "R",1,F$+ ".INX",3
390 KN= 5:RL= (ABS (KL)+ 8)* KN+ 8
400 RD= INT ((RL+ 127)/ 128)* 128:KN= INT ((RD- 8)/ (ABS (KL)+ 8))
410 FILE "R",2,F$+ ".RND",KN
420 FILE "A",2,CR,DL,BS,BF
430 P= ROOT:IF ROOT= 0THEN PRINT TAB( 15);"EMPTY FILE":GOTO 580
440 REM


450 GOSUB 1030
460 FOR I= NTO 1STEP - 1
470 ST(SP,0)= D(I)
480 ST(SP,1)= A(I)
490 SP= SP+ 1
500 NEXT I
510 IF A(0)< > 0THEN P= A(0):GOTO 450
520 REM

    ** OPTION CALL **

530 FOR SP= SP- 1TO 1STEP - 1
540 I= 1:D(1)= ST(SP,0)
550 GOSUB 650
560 IF ST(SP,1)< > 0THEN P= ST(SP,1):GOTO 450
570 NEXT SP
580 FILE "C",1,2,3
590 PRINT :PRINT
600 POKE 33265,FG
610 PRINT TAB( 15);:INPUT "DO YOU WANT TO LIST ANOTHER FILE? ";I$
620 IF LEFT$ (I$,1)= "Y"THEN 130
630 IF DD= 2THEN PRINT TAB( 15);:INPUT "INSERT PROGRAM DISK - HIT RETURN ";I$
640 LOAD "MAIN":RUN
650 REM

    ** DISPLAY (T,X$) **

660 PRINT :PRINT
670 FILE "A",3,CR,NR,BS,BF
680 BY= 1
690 PLOT 6,7
700 FOR M= 2TO NR
710 GET 3,M;KY$[16],KY,R
720 IF R< > 1THEN 880
730 IF KY< 0THEN 820
740 GET 2,D(I),BY;A$[KY]
750 PLOT 6,6:PRINT KY$;"     A ";:PLOT 6,7:IF KY< 55THEN PRINT A$
760 IF KY= > 55THEN PRINT :PRINT A$
770 PLOT 6,7
780 BY= BY+ KY
790 NEXT M
800 RETURN
810 REM



820 GET 2,D(I),BY;A1
830 PLOT 6,6:PRINT KY$;"     N";:PLOT 6,7:PRINT A1
840 PLOT 6,7
850 BY= BY+ 4
860 GOTO 790
870 REM


880 FOR M1= 1TO R
890 IF KY< 0THEN 990
900 GET 2,D(I),BY;A$[KY]
910 PLOT 6,6:PRINT KY$;"(";RIGHT$ (STR$ (M1),2);") A ";
920 IF KY< 55THEN PLOT 6,7:PRINT A$
930 IF KY= > 55THEN PLOT 6,7:PRINT :PRINT A$
940 PLOT 6,7
950 BY= BY+ KY
960 NEXT M1
970 GOTO 790
980 REM


990 GET 2,D(I),BY;A1
1000 PLOT 6,6:PRINT KY$;"(";RIGHT$ (STR$ (M1),2;") N";:PLOT 6,7:PRINT A1
1010 BY= BY+ 4
1020 GOTO 960
1030 REM

    ** GET P **

1040 GET 1,P;N,A(0)
1050 FOR M= 1TO N
1060 GET 1,P,(KL+ 8)* M- (KL- 1);K$(M)[KL],D(M),A(M)
1070 NEXT M
1080 RETURN
1090 REM



1100 GET 3,1;ROOT,FR,FD,MDY,AV,ER
1110 M= INT (MDY/ 3200)
1120 D= INT ((MDY- M* 3200)/ 100)
1130 Y= MDY- (INT (MDY/ 100)* 100)
1140 RETURN