Compucolor.org – Virtual Media

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

1 REM  
5 CLEAR 512
10 PLOT 27,11,15,6,6,12
15 PRINT "THIS PROGRAM WILL DO THE FOLLOWING TRICKS FOR YOU"
20 PLOT 10,10
25 PRINT "    1   READ A DATA FILE BASED ON YOUR PARAMETERS"
30 PRINT "    2   INSERT DATA FROM FILE AS 'PRINT' STATEMENTS"
35 PRINT "        TO THE END OF THIS PROGRAM"
40 PRINT
45 PRINT "    3   YOU WILL BE ASKED TO SUPPLY THE FOLLOWING INFO"
50 PRINT "        A  FILE NAME"
55 PRINT "        B  FIRST CHARACTER POSITION OF STRING DATA"
60 PRINT "        C  LENGTH OF STRING DATA"
70 PRINT "        D  FIRST RECORD NUMBER"
75 PRINT "        E  LAST RECORD NUMBER"
80 PRINT "        F  FIRST LINE NUMBER FOR PRINT STATEMENT"
85 PRINT "        G  LINE NUMBER INCREMENT"
90 PRINT
95 INPUT "HIT RETURN TO CONTINUE   ";A
100 PLOT 12,10,10
110 INPUT "ENTER FILE NAME                           ";F$
120 IF LEN (F$)< 1THEN END
130 IF LEN (F$)> 13THEN 100
140 PRINT
150 INPUT "FIRST CHARACTER POSITION IN THE FILE      ";P1
160 IF P1< > INT (P1)OR P1< 0THEN 140
170 PRINT :IF P1= 0THEN END
180 INPUT "LENGTH OF STRING DATA                     ";LS
190 IF LS< > INT (LS)OR LS< 1THEN END
200 PRINT
240 INPUT "FIRST RECORD NUMBER                       ";FR
250 IF FR< > INT (FR)OR FR< 1THEN END
260 PRINT
270 INPUT "LAST RECORD NUMBER                        ";LR
280 IF LR< > INT (LR)OR LR< FR+ 1THEN END
290 PRINT
300 INPUT "FIRST LINE NUMBER FOR STATEMENT           ";LN
310 IF LN< > INT (LN)OR LN< 3000OR LN> 65000THEN END
320 PRINT
330 INPUT "LINE NUMBER INCREMENT                     ";LI
340 IF LI< > INT (LI)OR LI< 1THEN END
350 IF LN+ LI* (LR- FR+ 1)> 65500THEN END
360 PRINT
370 PRINT "+++   STANDBY   +++"
380 FILE "N","TEMP.RND",1,128,1
390 FILE "R",1,"TEMP.RND",1
400 PUT 1,1,1;F$[16],FR,LR,P1,LS,P2,LN,LI
410 FS= PEEK (32982)+ 256* PEEK (32983)
420 ES= FS+ (LR- FR+ 1)* (LS+ 8)
430 IF ES> FS+ 8AND ES< 65001THEN 1650
1600 REM
1610 REM
1620 PRINT
1630 PRINT "+++   ILLEGAL PARAMETERS - NOT ENOUGH MEMORY LEFT   +++"
1640 END
1650 PUT 1,1,45;ES,FS
1660 FILE "D",1
1700 GET 1,1,45;ES
1720 POKE 32982,(ES- 256* (INT (ES/ 256)))
1730 GET 1,1,45;ES
1750 POKE 32983,INT (ES/ 256)
1760 FILE "C",1
1770 PLOT 12
1780 PRINT "ADDING FILE DATA TO PROGRAM"
1785 PRINT "RECORD","$ DATA","MEM LOC","LINK","LINE"
1790 CLEAR 1024
1800 FILE "R",1,"TEMP.RND",1
1810 GET 1,1,1;F$[16],FR,LR,P1,LS,P2,LN,LI,ES,FS
1820 L= LEN (F$)
1830 IF RIGHT$ (F$,1)= " "THEN F$= LEFT$ (F$,L- 1):GOTO 1820
1840 FILE "C",1
1850 FILE "R",1,F$,2
1860 LL= FS- 2
1870 FILE "T",2270
2000 FOR I= FRTO LR
2020 GET 1,I,P1;M$[LS]
2030 L1= LEN (M$):IF L1= 1THEN 2100
2040 IF RIGHT$ (M$,1)< > " "THEN 2100
2050 M$= LEFT$ (M$,L1- 1):GOTO 2030
2100 HI= INT (LN/ 256):LO= LN- 256* HI
2110 POKE LL+ 2,LO:POKE LL+ 3,HI
2120 POKE LL+ 4,150
2130 POKE LL+ 5,34
2140 FOR J= 1TO L1
2150 POKE LL+ 5+ J,ASC (MID$ (M$,J,1))
2160 NEXT J
2170 POKE LL+ 6+ L1,34
2200 POKE LL+ 7+ L1,0
2210 LP= LL+ L1+ 8:LN= LN+ LI
2220 HI= INT (LP/ 256):LO= LP- 256* HI
2230 POKE LL,LO
2240 POKE LL+ 1,HI
2245 PRINT ""LN,""LL,LP:PRINT ""I,""M$:PRINT
2250 LL= LP
2260 NEXT I
2270 POKE LL,0:POKE LL+ 1,0
2280 POKE LL+ 2,0:POKE LL+ 3,74
2290 POKE LL+ 4,0:POKE LL+ 5,181
2300 POKE LL+ 6,2:POKE LL+ 7,144
2310 FILE "C",1
2320 HI= INT ((FS- 2)/ 256):LO= FS- 2- 256* HI
2330 POKE 33434,LO:POKE 33435,HI
2340 END