|
|
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: 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«
└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image
└─⟦this⟧ »/SRPRI«
! 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»