Compucolor.org – Virtual Media

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

1 REM  IDENT
2 REM
5 CLEAR 256
10 PLOT 12:PRINT "SORTCT.BAS     VER 3.1":PRINT
20 PRINT "RANDOM DISK DATA FILE SORTING PROGRAM"
30 PRINT
40 PRINT "DEVELOPED BY":PRINT "   J L HELMS"
50 PRINT "   1009 LEYTE RD":PRINT "   CORONADO CA  92118"
60 PRINT :PRINT "UTILIZES THE MOUSE AND TREE SORT AS"
70 PRINT "DESCRIBED IN CREATIVE COMPUTING, JAN-FEB 78"
80 PRINT "VOL 4 NO 1 PGS 100-101"
90 FOR T= 1TO 1500:NEXT T
100 PRINT :PRINT "INSERT DATA FILE DISK IF REQUIRED"
110 PRINT "HIT -RETURN- TO CONTINUE"
120 POKE 33278,0
130 IF PEEK (33278)< > 13THEN 130
300 PLOT 12,27,4
310 PRINT "DIR"
320 PLOT 27,11,10
330 INPUT "ENTER DATA FILE NAME WITHOUT EXTENSION/VERSION  ";F$
340 PRINT :L= LEN (F$)
350 IF L< 1OR L> 6THEN 330
360 F$= F$+ ".RND"
400 FILE "T",5000
410 FILE "R",1,F$,1
420 FILE "A",1,CR,N,RS,BF
430 PRINT
440 PRINT "FILE NAME ";TAB( 30)F$
450 PRINT "NUMBER RECORDS ";TAB( 30)N
460 PRINT "RECORD LENGTH ";TAB( 30)RS
470 PRINT "BLOCKING FACTOR ";TAB( 30)BF
480 PRINT "FILE SIZE ";TAB( 30)N* RS
490 B= 1:X= BF* RS
500 IF X< = 128THEN 520
510 X= X- 128:B= B+ 1:GOTO 500
520 DS= (B* N* 128)/ BF
530 PRINT "DISK SIZE ";TAB( 30)DS
540 FOR T= 1TO 3000:NEXT T
550 FILE "C",1
800 PLOT 12
810 PRINT :INPUT "FIRST RECORD NUMBER TO SORT?  ";FR
820 IF FR< 1OR FR> N- 1THEN 810
830 PRINT :INPUT "LAST RECORD NUMBER TO SORT?   ";LR
840 IF LR< FR+ 1OR LR> NTHEN 830
850 NR= LR- FR+ 1
860 IF NR< 1001THEN 900
870 PRINT :PRINT "MAXIMUM SORT IS 1000 ITEMS"
880 PRINT "SELECT AGAIN"
890 GOTO 810
900 PRINT :INPUT "FIRST SORT CHARACTER POSITION? ";LI
910 IF LI< 1OR LI> RS- 1THEN 900
920 PRINT :INPUT "NUMERIC OR STRING DATA?        ";NS$
930 IF NS$= "S"THEN 990
940 IF NS$< > "N"THEN 920
950 IF RS- LI= > 3THEN 1010
960 PRINT :PRINT "ILLEGAL PARAMETERS"
970 PRINT "LAST NUMERIC POSITION STARTS AT ";RS- 3
980 GOTO 900
990 PRINT :INPUT "NUMBER OF POSITIONS TO SORT?   ";NI
1000 IF NI< 1OR NI> RS- LI+ 1THEN 990
1010 PRINT :PRINT "STANDBY"
1020 FILE "R",1,"SORTID.RND",1
1030 IF NS$= "N"THEN NI= 0
1040 PUT 1,1,1;F$[13],NR,FR,LR,LI,NS$[1],NI,1
1041 PLOT 27,4:PRINT "DIR":PLOT 27,27:PRINT
1042 INPUT "IS FILE NAMED SORTED.RND ON THE DISK?  Y/N  ";Y$
1043 IF Y$= "Y"THEN 1060
1044 IF Y$= "N"THEN 1050
1045 PRINT :GOTO 1042
1050 FILE "N","SORTED.RND",NR,RS,BF
1060 FILE "C",1
1100 PLOT 12
1110 PRINT "LINE CHANGES MUST BE MADE IN PROGRAM SORTDF.BAS"
1120 PRINT "FOR PROPER READING/WRITING OF FILES WHEN THE"
1130 PRINT "SORT ITSELF IS COMPLETE":PRINT
1140 PRINT "THE FOLLOWING LINES NEED TO BE CHANGED TO MATCH"
1150 PRINT "THE FILE SPECS OF DATA FILE ";F$;" ":PRINT
1160 PRINT "THE ENTIRE FILE WILL BE READ (OR THE SELECTED"
1170 PRINT "RECORD NUMBERS) SO IDENTIFY VARIABLES CAREFULLY"
1180 PRINT :PRINT "DO NOT USE THE FOLLOWING VARIABLES":PRINT
1190 PRINT "  FR   LR   LI   NI   I    J    N    L"
1200 PRINT "  F$   L$   R$   RS   L   LA   LB   LO"
1210 PRINT "   K   KA   KB    M  BA   BB   PR   PS":PRINT
1220 PRINT "THE LINE NUMBERS ARE ":PRINT
1230 PRINT "LINE 2180"
1240 PRINT "LINE 2230"
1250 PRINT "LINE 2240"
1260 REM
1270 PRINT :PRINT "INSERT SORT PROGRAM DISK IF REQUIRED"
1280 PRINT "HIT -RETURN- TO CONTINUE"
1290 POKE 33278,0
1300 IF PEEK (33278)< > 13THEN 1300
1310 PLOT 12
1320 LOAD "SORTDF.BAS":RUN
1399 END
5000 PLOT 12
5010 FILE "E",F,ER,LN
5020 PRINT "FILE ERROR"
5030 PRINT "FILE NUMBER    ";F
5040 PRINT "ERROR CODE     ";ER
5050 PRINT "LINE NUMBER    ";LN
5070 END
6000 REM
6001 REM  +++   FILE SORTID.RND   +++
6002 REM
6003 REM  CONTAINS BASIC DATA ABOUT THE FILE TO BE SORTED
6004 REM  AND HOW IT IS TO BE ACCOMPLISHED
6005 REM
6006 REM  POSITIONS     DATA
6007 REM  01-13         FILE NAME TO SORT
6008 REM  14-17         NUMBER OF RECORDS TO SORT
6009 REM  18-21         FIRST RECORD TO SORT
6010 REM  22-25         LAST RECORD TO SORT
6011 REM  26-29         LEFT INDEX/RECORD POSITION OF SORT
6012 REM  30            NUMERIC OR STRING VARIABLE INDICATOR
6013 REM  31-34         NUMBER OF POSITIONS TO SORT
6014 REM  35            1 INDICATES PROGRAM SORTDF.BAS NEEDS
6015 REM                  LINE CHANGES
6016 REM                2 INDICATES PROGRAM SORTDF.BAS OK