Compucolor.org – Virtual Media

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

99 REM STATIC RELOCATER COPYRIGHT 2/1/80 BY COMPUCOLOR CORP    WRITTEN BY KLH
100 PLOT 15,12:CLEAR 200:AE= PEEK (32941)* 256:AF= AE:A= AF
110 GOSUB 660:PRINT "MEMORY ENDS AT ";LEFT$ (A$,2)+ "FF"
120 INPUT "FILE NAME (ENTER '0' TO END): ";F$:IF F$= "0"THEN END
130 FILE "T",160:FILE "R",1,F$+ ".PRG",1;1,1,1:FILE "C",1
140 INPUT "FILE ALREADY EXISTS: DO YOU WISH TO CONTINUE (Y/N)? ";Y$
150 IF LEFT$ (Y$,1)= "N"THEN 120
160 PRINT "":FILE "T",170:FILE "R",1,F$+ ".LOW",1
170 FILE "E",A,B,C:IF C< > 160AND C< > 170THEN PRINT "FILE ERROR!":FILE "C",A:GOTO 120
180 IF C= 170THEN 120
190 A= 256* PEEK (33030)+ PEEK (33029)
200 TB= (A- 1)* 128+ PEEK (33031)
210 TL= 1:FILE "R",1,F$+ ".LOW",32;TB,1,128
220 GET 1,TL;L$[1]:GET 1;H$[1]
230 HA= ASC (H$)* 256+ ASC (L$)
240 GET 1;AL$[1]:GET 1;AH$[1]:AC= ASC (AH$)* 256+ ASC (AL$)
250 IF AC< LBTHEN LB= AC
260 IF AC+ HA> HBTHEN HB= AC+ HA
270 TL= TL+ HA+ 2:IF HA< > 2THEN 220
280 CB= HB- LB- 2
290 TM= AE- INT (CB/ 256)* 256
300 Z8= INT (TM/ 256):A= TM:GOSUB 660:B$= A$
310 GET 1,TB- 1;L$[1]:GET 1,TB;H$[1]
320 A= Z8* 256+ 256* ASC (H$)+ ASC (L$):GOSUB 660:C$= A$
330 A= CB:GOSUB 660
340 PRINT "FILE SPECS ARE -
350 PRINT "	LOAD ADDRESS:  "B$
360 PRINT "	FILE SIZE:     "A$
370 PRINT "	START ADDRESS: "C$
380 INPUT "DO YOU WISH TO OVERRIDE LOAD ADDRESS? ";Y$
390 PRINT "":IF Y$= "Y"THEN 700
400 PLOT 27,4:PRINT "SAV "+ F$+ " "+ B$+ " "+ A$+ " "+ C$+ ",1":PLOT 27,27
410 FILE "C",1:FILE "R",1,F$+ ".LOW",24;TB,1,128
420 FILE "R",2,F$+ ".HGH",24;TB,1,128
430 FILE "R",3,F$+ ".PRG",32;A,1,128
440 FILE "T",650:CB= INT (CB* .0789/ 60)
450 PRINT "THIS SHOULD TAKE"CB" TO"CB+ 1" MINUTES...":PRINT
460 GET 2;L$[1]:GET 2;H$[1]:GET 2;AL$[1]:GET 2;AH$[1]
470 GET 1;L$[1]:GET 1;H$[1]:GET 1;AL$[1]:GET 1;AH$[1]
480 HA= ASC (H$)* 256+ ASC (L$)
490 AD= ASC (AH$)* 256+ ASC (AL$)
500 IF HA= < 2THEN 600
510 FOR X= 1TO HA- 2
520 GET 1;A$[1]:GET 2;B$[1]
530 A= ASC (A$):B= ASC (B$):IF A= BTHEN 560
540 IF A+ 1< > BTHEN PRINT "LDA FILES INCOMPATABLE.":FILE "C",1:GOTO 120
550 A= A+ Z8
560 IF A< = AFTHEN 580
570 PRINT A" ERROR - REFERENCE TO NON-EXISTENT MEMORY LOCATION":FILE "C",1:GOTO 120
580 PUT 3,AD+ X;CHR$ (A)[1]
590 NEXT :GOTO 460
600 AE= TM- 256:FILE "C",1,2,3
610 PRINT ""F$".PRG HAS BEEN CREATED.":PRINT
620 INPUT "DO YOU WISH TO RESET THE CURRENT END-OF-MEMORY (Y/N)? ";A$
630 PRINT "":IF LEFT$ (A$,1)= "N"THEN 120
640 POKE 32941,AE/ 256:RUN
650 PRINT "FILE ERROR!":FILE "C",1,2,3:GOTO 120
660 C= A:A$= "":FOR X= 3TO 0STEP - 1:B= INT (C/ 16^ X)
670 C= C- B* (16^ X):B= B+ 48:IF B> 57THEN B= B+ 7
680 A$= A$+ CHR$ (B):NEXT :RETURN
690 INPUT B$:GOSUB 700:GOTO 690
700 INPUT "INPUT YOUR NEW LOAD ADDRESS: ";B$:PRINT ""
710 IF B$< "8200"THEN PRINT "ERROR - ILLEGAL HEX VALUE":GOTO 700
720 TM= 0:FOR X= 3TO 0STEP - 1:MM= ASC (MID$ (B$,4- X,1))
730 MM= MM- 48:IF MM> 9THEN MM= MM- 7
740 IF MM> 15OR MM< 0THEN B$= "":GOTO 710
750 TM= MM* (16^ X)+ TM+ .25:NEXT :TM= INT (TM/ 256)* 256
760 IF TM+ CB< = AF+ 255THEN 300
770 PRINT "FILE TOO LARGE FOR MEMORY":GOTO 700