|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7680 (0x1e00) Types: TextFile Names: »YDTST«
└─⟦45bd0f8dd⟧ Bits:30000464 DOMUS disk image └─⟦this⟧ »/YDTST« └─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image └─⟦this⟧ »/YDTST« └─⟦a2e222af0⟧ Bits:30001626 DOMUS disk image └─⟦this⟧ »/YDTST«
! UTILITY PROGRAM TIL UDSKRIFT AF DISC-SECTORER ! CONST JA= 'JA', TRUE= 1, FALSE= 0, ZERO= '<0><0><0><0><0><0>', SELFUNC= '<13><10>SELECT FUNCTION: (COPY,DUMP,XFER) ', ERRTXT= '<13><10>I/O ERROR: ', HEADTXT= '<12>SECTOR NUMBER: <13><10><0>', SPACES= ' <0>', TCOPY= 'COPY', TDUMP= 'DUMP', TXFER= 'XFER', TXT0= '<13><10>DISC DUMP PROGRAM (JCO) 1979.02.28', TXT1= '<13><10>OFFSET (SECTORER) ? ', TXT2= 'START BLOK NUMMER? ', TXT4= 'NÆSTE BLOK? ', TXT5= 'OUTPUT FIL NAVN? ', TXT6= 'OUTPUT PÅ EKSISTERENDE DISK FIL? ', TXT7= 'OUTPUT PÅ MT I FCOPY FORMAT? ', TXT8= 'SUBKATALOG? ', TXT9= 'FIL NUMMER? ', DUMPCONV= 'CAT<0><0><0>', CAT= 'CAT<0><0><0>', MT= 'MT0<0><0><0>', ENTRYTXT= 'TAST 16 HELTAL DER SKAL VÆRE -ENTRY- INDHOLD<13><10><0>', ENTTXT1= 'FØLGENDE -ENTRY- ER BLEVET TASTET: <0>', NL= '<13><10>'; «ff» VAR OPSTR: STRING(20); OPLGT: INTEGER; OPVAR: INTEGER; WINT1: INTEGER; WINT2: INTEGER; WINT3: INTEGER; OUTPUT: INTEGER; SFIRST: INTEGER; FEOF: INTEGER; OUTREM: INTEGER; CHAR: INTEGER; NUMBER: INTEGER; MAXNUMBER: INTEGER; DISC: INTEGER; SCONV: INTEGER; ENTRY: STRING(32); WSTR: STRING(10); INDEXBLK: STRING(512); DUMP: FILE '<0>', 30, 1, 512, UB; GIVEUP DUMPERROR, 8'177777; CONV DUMPCONV OF STRING (512); F: FILE 'MD0<0><0>', 30, 1, 512, UB; GIVEUP FERROR, 8'177777 OF STRING(512); OUT: FILE 'LPT', 1, 8, 80, UB; GIVEUP OUTERROR, 2'0110001111111110 OF STRING(80); «ff» PROCEDURE FERROR; BEGIN IF (F.ZMODE AND 2) = 0 THEN IF (F.Z0 AND 16) <> 0 THEN BEGIN FEOF:= TRUE; F.ZREM:= 2; F.ZTOP:= SFIRST; GOTO 10; END; OPMESS(ERRTXT); MOVE(F.ZNAME,0,WSTR,0,5); INSERT(32,WSTR,5); INSERT(0,WSTR,6); OPMESS(WSTR); BINDEC(F.Z0,WSTR); INSERT(0,WSTR,5); OPMESS(WSTR); OPIN(OPSTR); OPWAIT(OPLGT); REPEATSHARE(F); 10: END; PROCEDURE OUTERROR; BEGIN OPMESS(ERRTXT); MOVE(OUT.ZNAME,0,WSTR,0,5); INSERT(32,WSTR,5); INSERT(0,WSTR,6); OPMESS(WSTR); BINDEC(OUT.Z0,WSTR); INSERT(0,WSTR,5); OPMESS(WSTR); OPIN(OPSTR); OPWAIT(OPLGT); REPEATSHARE(OUT); END; PROCEDURE DUMPERROR; BEGIN REPEATSHARE(DUMP); END; «ff» PROCEDURE OUTNUMBER; BEGIN IF OUTREM = 0 THEN BEGIN OUTTEXT(OUT,HEADTXT); BINDEC(MAXNUMBER,WSTR); INSERT(13,WSTR,5); INSERT(10,WSTR,6); INSERT(0,WSTR,7); OUTTEXT(OUT,WSTR); OUTREM:= 256; SFIRST:= 0; END; IF SFIRST = 4 THEN BEGIN OUTCHAR(OUT,13); OUTCHAR(OUT,10); SFIRST:= 0; END; OUTREM:= OUTREM - 1; SFIRST:= SFIRST + 1; BINDEC(NUMBER,WSTR); INSERT(32,WSTR,5); INSERT(0,WSTR,6); OUTTEXT(OUT,WSTR); CHAR:= NUMBER SHIFT (-8); FEOF:= CHAR; IF CHAR > 127 THEN FEOF:= CHAR - 128; IF FEOF < 32 THEN FEOF:= 32; INSERT(FEOF,OPSTR,0); BINDEC(CHAR,WSTR); MOVE(WSTR,2,WSTR,0,3); INSERT(32,WSTR,3); INSERT(0,WSTR,4); OUTTEXT(OUT,WSTR); CHAR:= NUMBER AND 255; FEOF:= CHAR; IF CHAR > 127 THEN FEOF:= CHAR - 128; IF FEOF < 32 THEN FEOF:= 32; INSERT(FEOF,OPSTR,1); BINDEC(CHAR,WSTR); MOVE(WSTR,2,WSTR,0,3); INSERT(32,WSTR,3); INSERT(0,WSTR,4); OUTTEXT(OUT,WSTR); MOVE(SPACES,0,OPSTR,2,6); OUTTEXT(OUT,OPSTR); END; «ff» PROCEDURE GETNEXT; BEGIN SFIRST:= SFIRST - 1; IF SFIRST >= 0 THEN BEGIN MOVE(INDEXBLK,2,INDEXBLK,0,512); WINT2:= WORD INDEXBLK; MOVE(INDEXBLK,2,INDEXBLK,0,512); WINT3:= WORD INDEXBLK; END ELSE FEOF:= TRUE; END; PROCEDURE CONNECT; BEGIN MOVE(CAT,0,DUMPCONV,0,6); OPMESS(TXT8); OPIN(OPSTR); OPWAIT(OPLGT); IF OPLGT > 1 THEN BEGIN MOVE(ZERO,0,DUMPCONV,0,6); MOVE(OPSTR,0,DUMPCONV,0,OPLGT-1); NEWCAT(DUMP,0); END; END; PROCEDURE GETENTRY; BEGIN OPMESS(ENTRYTXT); WINT1:= 0; WHILE WINT1 < 16 DO BEGIN OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,WINT2); INSERT(WINT2 SHIFT (-8),ENTRY,WINT1*2); INSERT(WINT2 AND 255,ENTRY,WINT1*2+1); WINT1:= WINT1 + 1; END; OPMESS(ENTTXT1); OPMESS(ENTRY); OPMESS(NL); END; «ff» BEGIN REPEAT OPMESS(TXT0); OPMESS(SELFUNC); OPIN(OPSTR); OPWAIT(OPLGT); IF OPSTR = TDUMP THEN BEGIN OPMESS(TXT1); OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,OPVAR); OPEN(OUT,3); OUTPUT:= TRUE; OUTREM:= 0; OPMESS(TXT2); OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,MAXNUMBER); F.ZMODE:= 5; WAITTRANSFER(F); F.ZBLOCK:= OPVAR + MAXNUMBER; WHILE OUTPUT = TRUE DO BEGIN REPEAT INCHAR(F,NUMBER); INCHAR(F,CHAR); NUMBER:= (NUMBER SHIFT 8) + CHAR); OUTNUMBER UNTIL F.ZREM = 0; OPMESS(TXT4); OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,MAXNUMBER); IF OPLGT = 1 THEN OUTPUT:= FALSE; F.ZBLOCK:= OPVAR + MAXNUMBER; END; OUTCHAR(OUT,12); OUTBLOCK(OUT); CLOSE(OUT,TRUE); MOVE(SPACES,0,OPSTR,0,6); END; IF OPSTR = TCOPY THEN BEGIN ;; END; «ff» IF OPSTR = TXFER THEN BEGIN OPMESS(TXT1); OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,OPVAR); OPMESS(TXT2); OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,MAXNUMBER); WAITTRANSFER(F); F.ZMODE:= 5; F.ZBLOCK:= OPVAR + MAXNUMBER; WINT1:= 512; GETREC(F,WINT1); MOVE(F^,0,INDEXBLK,0,512); SFIRST:= WORD INDEXBLK; FEOF:= FALSE; OPMESS(TXT6); OPIN(OPSTR); OPWAIT(OPLGT); IF OPSTR = JA THEN BEGIN DISC:= TRUE; CONNECT; OPMESS(TXT5); OPIN(OPSTR); OPWAIT(OPLGT); DUMP.ZNAME:= ZERO; MOVE(OPSTR,0,DUMP.ZNAME,0,OPLGT-1); DUMP.ZKIND:= 30; OPEN(DUMP,3); SETPOSITION(DUMP,0,0); END ELSE BEGIN OPMESS(TXT7); OPIN(OPSTR); OPWAIT(OPLGT); IF OPSTR = JA THEN BEGIN GETENTRY; DISC:= FALSE; DUMP.ZNAME:= MT; DUMP.ZKIND:= 14; OPMESS(TXT9); OPIN(OPSTR); OPWAIT(OPLGT); DECBIN(OPSTR,WINT1); OPEN(DUMP,3); SETPOSITION(DUMP,WINT1,1); WINT1:= 32; PUTREC(DUMP,WINT1); MOVE(ENTRY,0,DUMP^,0,32); OUTBLOCK(DUMP); END «ff» ELSE BEGIN DISC:= TRUE; CONNECT; GETENTRY; DUMP.ZKIND:= 30; MOVE(ENTRY,0,DUMP.ZNAME,0,6); SETENTRY(DUMP,ENTRY); OPEN(DUMP,3); END; END; GETNEXT; WHILE FEOF = FALSE DO BEGIN F.ZBLOCK:= OPVAR + WINT3; WHILE WINT2 > 0 DO BEGIN WINT1:= 512; GETREC(F,WINT1); PUTREC(DUMP,WINT1); DUMP^:= F^; WINT2:= WINT2 - 1; END; GETNEXT; END; CLOSE(DUMP,TRUE); IF DISC = TRUE THEN FREECAT(DUMP); END UNTIL TRUE = FALSE; END; «ff» «nul»