1 REM Ins{nd av Johan Olofsson <5809> 1987-08-30 14.37.45 (DUMP) 10 ! ABS to BAS 50 ! * 52 ! * Date / VerRev / Sign / Note 54 ! * -------- ------ ---- ---- 56 ! * 84-10-22 / 1 / LogIn/ ABSL[S / f|r dumpning av absfiler p} sk{rm 57 ! * / ref: 'Load ABS-fil' p} adr 24603 i DOS 58 ! * / DUMPABS / kopia med n}gon bugg mindre 60 ! * 87-08-30 / 2.00 / LogIn/ ABStoBAS / skapar poke-filer 70 ! 72 ! Input: Filnamn ( default:'.ABS' ) 74 ! Output: Fil med extension '.P]K', som kan laddas med 'LOAD' 76 ! 78 ! P} sk{rmen visas samtidigt dumpning 80 ! 90 ! 92 ! Parametern Radmax anger hur l}ng en rad f}r vara innan den skrivs ut 93 ! Om Radnr inte initieras f}r f|rsta raden i .P]K-filen radnummer 1 94 ! 95 ! I P]K-filen anv{nds variabeln A f|r att ange till vilken adress 96 ! koden ska dumpas. Det g|r det enkelt att l{gga rutinen antingen i 97 ! en variabel eller p} fast adress i minnet genom att {ndra A:s v{rde. 98 ! 100 ! ---------------------------------------------------------------------- 105 INTEGER : EXTEND 110 ; 'Konvertering fr}n ABS-fil till BAS-fil' 120 ; 130 Radmax=60 140 ! Radnr=30000 150 Extut$='P]K' 160 ! 170 Infil=1 180 INPUT 'Filnamn:'Filnamn$ 190 Infil$=Filnamn$ 200 IF INSTR(2,Infil$,'.')=0 THEN Infil$=Infil$+'.abs' 210 OPEN Infil$ AS FILE Infil 220 Radfil=4 230 Utfil$=LEFT$(Infil$,INSTR(2,Infil$,'.'))+Extut$ 240 PREPARE Utfil$ AS FILE Radfil 250 FOR Block=0 TO 255 260 POSIT #Infil,Block*253 270 GET #Infil,Flag$ 280 WHILE Flag$<>CHR$(255) 290 IF Flag$>CHR$(0) Block=255 : GOTO 730 300 GET #Infil,Z$ : Antal=ASCII(Z$) 310 ; 'flag:' ASCII(Flag$),Antal 320 GET #Infil,Z$ 330 GET #Infil,Z$ 340 GET #Infil,C$ 350 ; HEX$(ASCII(Z$)),HEX$(ASCII(C$)) 360 Loc.=ASCII(Z$) 370 GET #Infil,Z$ 380 GET #Infil,C$ 390 ; HEX$(ASCII(Z$)),HEX$(ASCII(C$)) 400 Loc.=256*Loc.+ASCII(Z$) 410 ; Loc. 420 WHILE Pokeadr.<>Loc. 430 IF LEN(Rad$) THEN ; #Radfil,Rad$ : Rad$='' 440 Pokeadr.=Loc. : Pokebas.=Loc. 450 Radnr=Radnr+1 460 ; #Radfil,NUM$(Radnr)+'A='+NUM$(Pokeadr.) 470 IF 0 WEND 480 Tx$='' 490 FOR X=1 TO Antal 500 GET #Infil,Z$ : H$=HEX$(ASCII(Z$)) 510 IF Z$>=' ' AND Z$<='' Tx$=Tx$+Z$ ELSE Tx$=Tx$+"'" 520 ; STRING$(2-LEN(H$),48)+H$+' '; 530 IF MOD(X,10)=0 ; Tx$ : Tx$='' 540 WHILE Rad$='' 550 Radnr=Radnr+1 560 Rad$=NUM$(Radnr)+' POKE A' 570 IF Pokeadr.<>Pokebas. THEN Rad$=Rad$+'+'+NUM$(Pokeadr.-Pokebas.) 580 IF 0 WEND 590 Rad$=Rad$+','+NUM$(ASCII(Z$)) 600 WHILE LEN(Rad$)>Radmax 610 ; #Radfil,Rad$ 620 Rad$='' 630 IF 0 WEND 640 Pokeadr.=1+Pokeadr. 650 NEXT X 660 IF LEN(Tx$) ; TAB(31) Tx$ 670 ! ; 680 IF LEN(Rad$) ; #Radfil,Rad$ : Rad$='' 690 ; 700 GET #Infil,Z$ 710 GOTO 270 720 WEND 730 NEXT Block 740 END