10 INTEGER : EXTEND 20 ; CHR$(12%) " RELOCATE.800  (C) Peter Anvin 1985-08-11  Omvandlar till relokerbar kod "+STRING$(80%,61%) 30 ; : ; "OBS! En PAH-fil m}ste vara med ORG 0 och den andra med ORG 102H 258D" 40 ; 50 INPUT "ORG 000-fil? "Org0$ 60 INPUT "ORG 102-fil? "Org102$ 70 ; 80 INPUT "BASIC-fil? "Basic$ 90 ; 100 ; 110 OPEN Org0$ AS FILE 1% 120 OPEN Org102$ AS FILE 2% 130 PREPARE Basic$ AS FILE 3% 140 INPUT "BASIC-uttryck f|r basadress? "Basutr$ 145 ; #3%,"1 INTEGER : EXTEND" 150 ; #3%,"2 Start=" Basutr$ 160 Rnr%=2% 170 ON ERROR GOTO 350 180 INPUT #1%,Vala$ 190 INPUT #2%,Valb$ 200 IF LEN(Vala$)<>LEN(Valb$) THEN CLOSE : KILL Basic$ : ; "Filerna ej identiska!" : STOP 210 Rnr%=Rnr%+1% : IF LEFT$(Vala$,4%)<>LEFT$(Valb$,4%) THEN ; #3% NUM$(Rnr%)+" POKE Start+("+NUM$(FNNohex%(LEFT$(Vala$,4%)))+")"; ELSE ; #3% FNPoke$; 220 Vala$=RIGHT$(Vala$,6%) : Valb$=RIGHT$(Valb$,6%) 230 IF Vala$="" OR Valb$="" THEN ; #3% : GOTO 180 240 IF LEFT$(Vala$,2%)=LEFT$(Valb$,2%) THEN ; #3% ","+NUM$(FNNohex%(LEFT$(Vala$,2%))); : GOTO 330 250 IF LEN(Vala$)=2% THEN GOTO 300 260 IF MID$(Vala$,3%,2%)=MID$(Valb$,3%,2%) THEN 300 270 ; #3% ",Start+(" NUM$(SWAP%(FNNohex%(LEFT$(Vala$,4%)))) ")"; 280 ; #3% ",SWAP%(Start+(" NUM$(SWAP%(FNNohex%(LEFT$(Vala$,4%)))) "))"; 290 Vala$=RIGHT$(Vala$,5%) : Valb$=RIGHT$(Valb$,5%) : GOTO 230 300 Va%=FNNohex%(LEFT$(Vala$,2%)) : Vb%=FNNohex%(LEFT$(Valb$,2%)) 310 IF Va%+2%=Vb% THEN ; #3% ",Start+" NUM$(FNNohex%(LEFT$(Vala$,2%))); : GOTO 330 320 ; #3% ",SWAP%(Start+SWAP%(" NUM$(FNNohex%(LEFT$(Vala$,2%))) "))"; 330 Vala$=RIGHT$(Vala$,3%) : Valb$=RIGHT$(Valb$,3%) 340 GOTO 230 350 IF ERRCODE<>34% THEN ; "Det {r fel i indatat." : CLOSE : KILL Basic$ : STOP 360 CLOSE 370 ; : ; "Klart. Relokerbar kod av " Org0$ " och " Org102$ " finns i " Basic$ "." 380 END 390 DEF FNPoke$=NUM$(Rnr%)+" POKE "+NUM$(FNNohex%(LEFT$(Vala$,4%))) 400 DEF FNNohex%(P$) LOCAL U%,Vrd%,P2$=4 410 U%=0% 420 IF LEN(P$)=4% THEN RESTORE 440 ELSE RESTORE 450 440 DATA 4096,256 450 DATA 16,1 460 P2$=P$ 470 IF P2$="" THEN RETURN U% 480 READ Vrd% 490 U%=U%+Vrd%*(INSTR(1%,"0123456789ABCDEF",LEFT$(P2$,1%))-1%) 500 P2$=RIGHT$(P2$,2%) 510 GOTO 470 520 FNEND