|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7584 (0x1da0) Notes: Mikados TextFile, Mikados_K Names: »RFILE1«
└─⟦f1b095e24⟧ Bits:30005320 Katalogisering af disketter └─ ⟦this⟧ »RFILE1«
PROGRAM RFILE1; (* BR-29.04.85 *) (*******************************************) (* PROGRAM TIL RETABLERING AF FIL POINTERE *) (*******************************************) TYPE BLOCK = PACKED ARRAY (0..255) OF CHAR; VAR DISCBUFI,DISCBUFU : BLOCK; DISC, TRACK, SECTOR, IOCODE, ERRORCODE, I, J, K, L, P, CHARCODE, CIF1, CIF2: INTEGER; STRENG: STRING; PROCEDURE PSCIU(VAR DISCBUFFER: BLOCK; DISC, TRACK, SECTOR, IOCODE: INTEGER; VAR ERRORCODE: INTEGER); EXTERNAL; (*********************************************************************) PROCEDURE LÆSFILTOP; BEGIN IOCODE := 1; PSCIU(DISCBUFI,DISC,TRACK,SECTOR,IOCODE,ERRORCODE); IF ERRORCODE <> 0 THEN WRITELN ('ERRORCODE:', ERRORCODE:4); END; (*LÆSFILTOP*) (*********************************************************************) PROCEDURE GEMFILTOP; BEGIN IOCODE := 2; PSCIU(DISCBUFU,DISC,TRACK,SECTOR,IOCODE,ERRORCODE); IF ERRORCODE <> 0 THEN WRITELN ('ERRORCODE:', ERRORCODE:4); END; (*GEMFILTOP*) (*********************************************************************) PROCEDURE WRITEHEX(I:INTEGER); BEGIN P:=P+1; IF I<10 THEN STRENG(P):=CHR(I+ORD('0')) ELSE STRENG(P):=CHR(I+ORD('7')); END; (*WRITEHEX*) (*********************************************************************) PROCEDURE SKRIVFILTOP(DISCBUFFER:BLOCK); BEGIN WRITELN(LIST); STRENG:=' 0'; (*$R-*) STRENG(0):=CHR(64) (*$R+*); FILLCHAR(STRENG(3),62,' '); FOR I:=0 TO 1 DO BEGIN P:=0; WRITEHEX(I); P:=5; J:=I*16; K:=J+15; FOR L:=J TO K DO BEGIN IF L MOD 4 =0 THEN P:=P+1; P:=P+1; CIF1:=ORD(DISCBUFFER(L)) MOD 128; IF (CIF1<=126) AND (CIF1>=32) THEN STRENG(P):=CHR(CIF1) ELSE STRENG(P):='.'; END; P:=P+3; FOR L:=J TO K DO BEGIN IF L MOD 4 =0 THEN P:=P+1; CIF1:=ORD(DISCBUFFER(L)) DIV 16; CIF2:=ORD(DISCBUFFER(L)) MOD 16; WRITEHEX(CIF1); WRITEHEX(CIF2); END; WRITELN(LIST,STRENG); END; (*FOR I:=0*) END; (*SKRIVFILTOP*) (*********************************************************************) PROCEDURE REDFILTOP; VAR FILNAVN : STRING(8); FILTYPE, UDVKODE : STRING(1); BYTENR : 0..31; SPOR,SEKTOR,RECLEN : INTEGER; ANTUDV,ANTSEKT : INTEGER; ANTAL : INTEGER; BEGIN WRITELN; DISCBUFU:=DISCBUFI; FILNAVN:=' '; FOR BYTENR:=0 TO 7 DO IF ORD(DISCBUFU(BYTENR)) IN (.32..126.) THEN FILNAVN(BYTENR+1):=DISCBUFU(BYTENR) ELSE FILNAVN(BYTENR+1):='.'; WRITE('Filnavn : '); EDIT(FILNAVN:8); FOR BYTENR:=0 TO 7 DO DISCBUFU(BYTENR):=FILNAVN(BYTENR+1); FILTYPE:=' '; FILTYPE(1):=DISCBUFU(8); WRITE('Type : '); EDIT(FILTYPE:1); DISCBUFU(8):=FILTYPE(1); UDVKODE:=' '; UDVKODE(1):=DISCBUFU(9); WRITE('Udv. kode : '); EDIT(UDVKODE:1); DISCBUFU(9):=UDVKODE(1); ANTUDV:=ORD(DISCBUFU(10)); WRITE('Antal udvidelser : ',ANTUDV:4,' nyt ant. : '); READLN; READ(ANTAL); DISCBUFU(10):=CHR(ANTAL); ANTSEKT:=ORD(DISCBUFU(11))+256*ORD(DISCBUFU(12)); WRITE('Antal sektorer/udv.: ',ANTSEKT:4,' nyt ant. : '); READLN; READ(ANTAL); DISCBUFU(11):=CHR(ANTAL MOD 256); DISCBUFU(12):=CHR(ANTAL DIV 256); SPOR:=ORD(DISCBUFU(13))+256*ORD(DISCBUFU(14)); WRITE('Spor nr. næste udv.: ',SPOR:4,' nyt nr. : '); READLN; READ(ANTAL); DISCBUFU(13):=CHR(ANTAL MOD 256); DISCBUFU(14):=CHR(ANTAL DIV 256); SEKTOR:=ORD(DISCBUFU(15)); WRITE('Sekt.nr. næste udv.: ',SEKTOR:4,' nyt nr. : '); READLN; READ(ANTAL); DISCBUFU(15):=CHR(ANTAL MOD 256); SPOR:=ORD(DISCBUFU(16))+256*ORD(DISCBUFU(17)); WRITE('Spor nr. forr. udv.: ',SPOR:4,' nyt nr. : '); READLN; READ(ANTAL); DISCBUFU(16):=CHR(ANTAL MOD 256); DISCBUFU(17):=CHR(ANTAL DIV 256); SEKTOR:=ORD(DISCBUFU(18)); WRITE('Sekt.nr. forr. udv.: ',SEKTOR:4,' nyt nr. : '); READLN; READ(ANTAL); DISCBUFU(18):=CHR(ANTAL MOD 256); SPOR:=ORD(DISCBUFU(19))+256*ORD(DISCBUFU(20)); WRITE('Spor nr. næste fil : ',SPOR:4,' nyt nr. : '); READLN; READ(ANTAL); DISCBUFU(19):=CHR(ANTAL MOD 256); DISCBUFU(20):=CHR(ANTAL DIV 256); SEKTOR:=ORD(DISCBUFU(21)); WRITE('Sekt.nr. næste fil : ',SEKTOR:4,' nyt nr. : '); READLN; READ(ANTAL); DISCBUFU(21):=CHR(ANTAL MOD 256); RECLEN:=ORD(DISCBUFU(25)); WRITE('Record længde : ',RECLEN:4,' ny længde: '); READLN; READ(ANTAL); DISCBUFU(25):=CHR(ANTAL MOD 256); END; (*REDFILTOP*) (*********************************************************************) BEGIN CLEARSCREEN; REPEAT WRITELN('':15,'Retablering af fil pointere'); WRITELN('':15,'***************************'); WRITELN; WRITE( 'pladelagerbetegnelse: P'); READLN; IF EOF THEN EXIT(PROGRAM); READ(DISC); WRITE( 'spornummer : '); READLN; IF EOF THEN EXIT(PROGRAM); READ(TRACK); WRITE( 'sektornummer : '); READLN; IF EOF THEN EXIT(PROGRAM); READ(SECTOR); LÆSFILTOP; SKRIVFILTOP(DISCBUFI); REDFILTOP; SKRIVFILTOP(DISCBUFU); WRITELN; WRITE('Fortryder du, tryk på <ESC> . OK, tryk på <RETURN> '); READLN; IF NOT EOF THEN GEMFILTOP; WRITELN; WRITE('Flere retableringer, tryk på <RETURN> Afslut, tryk på <ESC> '); READLN; PAGE(LIST); UNTIL EOF; WRITELN('RFILE1 terminated'); END.