DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦72af7f6fd⟧ TextFile

    Length: 7680 (0x1e00)
    Types: TextFile
    Names: »YDTST«

Derivation

└─⟦45bd0f8dd⟧ Bits:30000464 DOMUS disk image
    └─ ⟦this⟧ »/YDTST« 
└─⟦6dbcc9c03⟧ Bits:30000463 DOMUS disk image
    └─ ⟦this⟧ »/YDTST« 
└─⟦a2e222af0⟧ Bits:30001626 DOMUS disk image
    └─ ⟦this⟧ »/YDTST« 

TextFile

! 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»