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 - metrics - download

⟦ac6ed9dd3⟧ TextFile

    Length: 6656 (0x1a00)
    Types: TextFile
    Notes: RCSL-43-GL-0619, RCSL-43-GL-10723, RCSL-43-GL-10724, RCSL-43-GL-10725, RCSL-43-GL-1519, RCSL-43-GL-4403, RCSL-43-GL-7836
    Names: »SRPRI«

Derivation

└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image
    └─⟦this⟧ »/SRPRI« 

TextFile


!						RCSL:43-GL10724

						AUTHOR: PBP

						EDITED: 80.10.23


















			PROGRAM RC36-01314.00

			RECEIVE FUNCTION ON SP. 



				RPRI.


















KEYWORDS:	MUSIL DEVICEHANDLER,RIGA-NET,SP,LISTING

ABSTRACT:	DEVICEPROGRAM, OUTPUT ON A SERIAL PRINTER WITH
		IBM CCW AND RECORDS OF MAX. 132 CHARACTERS.


ASCII SOURCE:	RCSL: 43-GL10723
REL/BIN:	RCSL: 43-GL10725 

!

«ff»
						! RC36-01314.00 PAGE 01 !
!

PROGRAM:	RC36-01314.00

TITLE:		RECEIVE FUNCTION ON SERIAL PRINTER.

ABSTRACT:	DEVICEPROGRAM. OUTPUT ON A SERIAL PRINTER WITH
		IBM CCW AND RECORDS OF MAX. 132 CHARACTERS

SIZE:		XXXX BYTES.


RUNTIME PARAMETERS:
		THE PARAMETERS ARE GIVEN TO THIS MODULE VIA THE MAIN
		MODULE.

	:SF.	STARTS THE RECIEVE MODULE.  (HAS NO PARAMETERS)
	:FF.	FINIS THE RECIEVE MODULE.   (HAS NO PARAMETERS)

	:PS.	PROCESSING STATE. TYPES THE NUMBER OF BLOCKS ON
		MAGTAPE  (HAS NO PARAMETERS)

	:ER.	ERROR REPLY. THIS COMMAND MUST BE USED AS A REPLY TO
		A DEVICE ERROR MESSAGE.
		PARAMETERS	DESCRIPTION
		R		REPEAT THE FAULTY OPERATION.
		A		ACCEPT THE ERRONEUS DATA.


OUTPUT MESSAGES:
	COM ERROR		COMMAND ERROR




SPECIAL REQUIREMENTS:
	CODEPROCEDURE	ARESERVE	RCSL: 43-GL4403.
	CODEPROCEDURE 	DELAY		RCSL: 43-GL0619.
	CODEPROCEDURE   OUTSTATUS	RCSL: 43-GL7836.
	CODEPROCEDURE	CHANGETABLE	RCSL: 43-GL1519.

	CONVERSION TABLE IBMLP

!

«ff»
						! RC36-01314.00 PAGE 02 !
CONST
IDENT=		'80.10.28 VERS. 1.00 RIGA RECEIVE PRINT ',

MAINKIND=	1,
MAINMASK=	8'000022,

SPKIND=		2,
SPSHARES=	3,
SPSHARESIZE=	133,
SPMASK=		8'141366,

MAINMODE=	1,
SPMODE=		7,

TRUE=		1,
FALSE=		0,

C9=		201,	! HEX C9 !
EM=		'<13><0>',
R=		'<82>',

B11=		8'000020,
HARDBITS=	8'101356,

IBMLP=		'IBMLP<0>',

START=		':SF',
FINIS=		':FF',
ERROR=		':ER',
GETPR=		':PS',
«ff»
						! RC36-01314.00 PAGE 03 !

ERRORTXT=
'    <0>
****<0>',

BLOCKCOUNT=	'    BLOCKS=NNNNN<13>',
ENDFUNC=	'    END FUNCTION<13>',
COMERR=		'    COM ERROR<13>',

SPERRTXTS=
' DISCONNECTED<0>
 OFF-LINE<0>
 <0>
 <0>
 <0>
 <0>
 ILLEGAL<0>
 <0>
 PAPER FAULT<0>
 NOT READY<0>
 PARITY ERROR<0>
 END OF PAPER<0>
 POSITION ERROR<0>
 DRIVER MISSING<0>
 TIMEOUT<0>
 <0>',

	! SERIAL PRINTER RC3640 HAS ONLY GOT AN 8-CHANNEL FORMAT !
	! TAPE. SKIP TO CHANNELS 9-12 ARE TRANSLATED TO SP1A.    !

CCWTAB=	#
	201	9
	203	9
	209	9
	211	9
	217	9
	219	9
	225	9
	227	9
	0	0	! STOP    !
	0	9	! DEFAULT !
	#;

«ff»
						! RC36-01314.00 PAGE 04 !

VAR
AREA:	RECORD
	CONNECT:	INTEGER;
	STREAMNO:	INTEGER;
	SENDER:		INTEGER
	END;

COMMAND:	STRING(80);
COML:		INTEGER;
RECLENGTH:	INTEGER;
HELPST:		STRING(6);
SPERRORCODE:	INTEGER;
TEXTLINE:	STRING(80);
BLOCK:		INTEGER;
STATUS:		INTEGER;
WORK:		INTEGER;
REST:		INTEGER;



MAIN:	FILE
	'XXX',
	MAINKIND,
	2,
	420,
	VB;
	GIVEUP MAINERROR, MAINMASK
	OF RECORD
	  CCW:   STRING(1) FROM 1
	END;

SP:	FILE
	'SP',
	SPKIND,
	SPSHARES,
	SPSHARESIZE,
	U;
	GIVEUP SPERROR, SPMASK
	OF RECORD
	   CCW:		STRING(1);
	   DATA:	STRING(1)
	END;

«ff»
						! RC36-01314.00 PAGE 05 !


	PROCEDURE ARESERVE	(VAR SENDER:	INTEGER;
				 VAR ZNAME:	STRING(6);
				 VAR AREA:	INTEGER);
	CODEBODY P0138;

	PROCEDURE DELAY		(CONST TIME:	INTEGER);
	CODEBODY;

	PROCEDURE OUTSTATUS	(CONST BITS:	INTEGER;
				 CONST TEXTARRAY: STRING(1);
				 VAR TEXTLINE:	STRING(1);
				 VAR INDEX:	INTEGER);
	CODEBODY P0209;


	PROCEDURE CHANGETABLE	(FILE F;
				 CONST IDENT:	STRING(6));
	CODEBODY;

«ff»
						! RC36-01314.00 PAGE 06 !

PROCEDURE PROCESSSTATE;
BEGIN
    BINDEC(BLOCK,HELPST);
    MOVE(HELPST,0,BLOCKCOUNT,11,5);
    OPMESS(BLOCKCOUNT);
END;

PROCEDURE OPERATOR;
BEGIN
    OPWAIT(COML);
    IF COMMAND=START THEN GOTO 50;
    IF COMMAND=FINIS THEN GOTO 220;
    IF COMMAND=GETPR THEN PROCESSSTATE
    ELSE
    IF COMMAND=ERROR THEN
    BEGIN
	MOVE(COMMAND,COML-2,HELPST,0,1);
	SPERRORCODE:=0;
    END
    ELSE
    OPMESS(COMERR);
50: OPIN(COMMAND);
END;

PROCEDURE OUTERROR;
BEGIN
    IF STATUS AND HARDBITS=0 THEN STATUS:=8'100000
			     ELSE STATUS:=8'040000;
    COML:=0;
    OUTSTATUS(STATUS,ERRORTXT,TEXTLINE,COML);
END;

PROCEDURE MAINERROR;
BEGIN
    IF MAIN.Z0 AND B11 <> 0 THEN GOTO 210;
    IF MAIN.Z0 AND 2<>0 THEN
    BEGIN
        REST:= REST + MAIN.ZREM;
	IF OPTEST<>0 THEN OPERATOR;
	WAITZONE(SP);
	REPEATSHARE(MAIN);
    END;
END;

PROCEDURE SPERROR;
BEGIN
  IF SPERRORCODE=0 THEN
  BEGIN
    SPERRORCODE:=SP.Z0;
    STATUS:=SP.Z0;
    OUTERROR;
    OUTSTATUS(8'100000,SP.ZNAME,TEXTLINE,COML);
    OUTSTATUS(SP.Z0,SPERRTXTS,TEXTLINE,COML);
    MOVE(EM,0,TEXTLINE,COML,2);
    OPMESS(TEXTLINE);
  END;
  IF SPERRORCODE AND HARDBITS=0 THEN
  BEGIN
    DELAY(10);
    IF OPTEST <>0 THEN OPERATOR;
    REPEATSHARE(SP);
  END;
  REPEAT OPERATOR UNTIL COMMAND=ERROR;
  IF HELPST=R THEN REPEATSHARE(SP);
END;
«ff»
						! RC36-01314.00 PAGE 07 !
BEGIN
100:	AREA.SENDER:=0;
	ARESERVE(AREA.SENDER,MAIN.ZNAME,AREA.CONNECT);
	INSERT(0,COMMAND,0);
	INSERT(0,COMMAND,1);
	MOVE(COMMAND,0,COMMAND,2,78);
	WAITZONE(SP);
	SPERRORCODE:=0;	BLOCK:=0;  

	OPIN(COMMAND);
110:	REPEAT OPERATOR UNTIL COMMAND=START;
	BLOCK:=0;    
	SPERRORCODE:=0;
	CHANGETABLE(SP,IBMLP);
	OPEN(SP,SPMODE);
	SETPOSITION(SP,0,0);		! MARGIN = 0 !
	OPEN(MAIN,AREA.STREAMNO+MAINMODE);





200:	REPEAT
	BEGIN
	    REST:= 0;
	    GETREC(MAIN,RECLENGTH);
    	    SPERRORCODE:=0;
	    MAIN.ZFIRST:= MAIN.ZFIRST-REST;
	    RECLENGTH:= RECLENGTH+REST;
    	    PUTREC(SP,RECLENGTH);
            WORK:= BYTE MAIN^;
    	    IF WORK>= C9 THEN
	    BEGIN
   	        TRANSLATE(MAIN^.CCW,SP^.CCW,CCWTAB);
	        WORK:= 1;
	    END
	    ELSE
	    WORK:= 0;
	    MOVE(MAIN^,WORK,SP^,WORK,RECLENGTH-WORK);
	    BLOCK:=BLOCK+1;
	END
	UNTIL OPTEST<>0;
	OPERATOR;
	GOTO 200;


210:
	CLOSE(MAIN,TRUE);
	CLOSE(SP,TRUE);
	PROCESSSTATE;
	OPMESS(ENDFUNC);
	GOTO 110;

220:
	IF SPERRORCODE<>0 THEN SP.ZMODE:=0;
	IF SP.ZMODE<>0 THEN CLOSE(SP,TRUE);
	IF MAIN.ZMODE<>0 THEN CLOSE(MAIN,TRUE);
	PROCESSSTATE;
	OPMESS(ENDFUNC);
	OPMESS(COMMAND);
	GOTO 100;

END;
«ff»
«nul»