1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-01-20 09:34:22 +00:00

Commit DCMCP transcription as of 2012-06-06.

This commit is contained in:
Paul Kimpel 2012-06-06 14:14:07 +00:00
parent 10877be986
commit bb438bb460

View File

@ -2774,3 +2774,146 @@ RETRY: 04314600
$ SET OMIT = SHAREDISK 04328600
SI:=SI-5; 04328800
$ POP OMIT 04329000
$ SET OMIT = NOT(SHAREDISK) 04329200
DI:=LOC DA; DS:=2 OCT; 04329800
SI:=EUA; SI:=SI+14; SKIP EU SB; 04330000
DI:=LOC A; DI:=DI+7; SKIP 2 DB; 04330200
IF SB THEN SKIP DB; 04330400
SI:=LOC DA; SI:=SI+6; 04330600
IF SC NEQ "0" THEN GO TO BAD; SI:=SI+1; 04330800
4(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP SB); 04331000
SI:=LOC A; SI:=SI+7; IF SC GTR "4" THEN GO TO BAD; 04331200
IF SC LSS "0" THEN GO BAD; 04331400
SI:=EUA; SI:=SI+EU; SKIP SB; SKIP A SB; 04331600
IF SB THEN GO TO OK; 04331800
BAD: TALLY:=1; 04332000
OK: DA:=TALLY; 04332200
END; 04332400
IF (MASK:=P) OR E.[42:1] THEN % BAD ADDRESS OR EU NOT READY 04332600
BEGIN 04332800
MSG:=5+MASK; % 5=EU NOT READY, 6=INVALID DISK ADDRESS 04333000
IF NOT MASK THEN MK:="#"; 04333200
IF (MIX NEQ 0) OR OLAYIO THEN 04333400
BEGIN 04333600
E:=@1537; GO TO QUIT; 04333800
END; 04334000
DISKMESSAGE; 04334200
DETAILRECORDENTRY; 04334400
GO TO KILLER; % LET IT HANG 04334600
END 04334800
ELSE 04335000
BEGIN % MUST BE E.[44:1], MEM.PAR. 04335200
MSG:=2; E:=@1537; GO TO QUIT; 04335400
END; 04335600
END; % IF NOT PARITY 04335800
IF IOQUE[S].[24:1] THEN % DISK PARITY ON READ 04336000
BEGIN 04336200
MSG:=3; % PARITY 04336400
E:=@20; 04336600
GO TO QUIT; 04336800
END; 04337000
MSG:=7; % WRITE LOCK 04337200
E:=@1537; 04337400
GO TO QUIT; 04337600
END; % IF DISK 04337800
04338000
$ SET OMIT = NOT(AUXMEM) 04338200
KILLL: 04351600
LOCATQUE[S].[11:1]:=0; 04351800
KILLER: 04352000
IF KEY1 NEQ 0 THEN SPOUTER(KEY1,UNITNO,35); 04352200
IF KEY2 NEQ 0 THEN FINISHDETAIL; 04352400
IF TERMINATE THEN TERMINATE(MIX&20[CTF]); 04352600
KILL([MSCW]); 04352800
END PROCEDURE DISKORAUXERROR; 04353000
PROCEDURE ACTUALIOERR(R); VALUE R; REAL R; 04353200
BEGIN 04353400
REAL MSCW = -2, 04353600
E = +1, 04353800
T = +2, 04354000
S = +3, 04354200
F = +4, 04354400
U = +5, 04354600
T1 = +6, 04354800
T2 = +7, 04355000
T3 = +8, 04355200
KEY = +9, 04355400
FIN = NT3, 04355600
IOD = NT6, 04355800
MASK = +10, 04356000
DISC = +11, 04356200
TYPE = +12, 04356400
MIX = +13; 04356500
04356600
NAME LOCN = T3; 04356800
$ SET OMIT = NOT(PACKETS) 04356899
DEFINE UNITNO = PSEUDOMIX[MIX]#; 04356900
$ POP OMIT 04356901
04357000
LABEL L1, L2, D17, D19, D22, START, NOTREADYMESS, NTRDY, 04357200
EOF, REALEOF, TAPERETRY, SIX, SEVEN, FIX, LEAVE, 04357400
REWINDING, NOCODE, CLEAR, KILLL, KILLER; 04357600
LABEL READER, PRINTER, TAPE, DRUM, DISK, SPO, PUNCH, 04357800
PAPERPUNCH, PAPER, DATACOM; 04358000
04358200
SWITCH W := READER,PRINTER,TAPE,DRUM,DISK,SPO,PUNCH,NOCODE, 04358400
PAPERPUNCH,PAPER,DATACOM; 04358600
04358800
SUBROUTINE MAKEMESS; 04359000
BEGIN 04359200
STREAM(S1:=F.[43:5], S2:=F.[38:5], A:=TINU[U], 04359400
MX~MIX, KEY~KEY~SPACE(10)); 04359600
BEGIN 04359800
SI:=LOC A; SI:=SI+5; 04360000
DS:=LIT"*"; DS:=3 CHR; DS:=LIT" "; 04360200
CI:=CI+S1; GO TO LL; 04360400
GO L1; GO L2; GO L3; GO L4; GO L5; GO L6; GO LL; GO LL; 04360600
DS:=19 LIT"BLANK TAPE ON WRITE"; GO TO MXX; 04360800
L1: DS:= 4 LIT"BUSY"; GO TO MXX; 04361000
L2: DS:= 8 LIT"I/O MEM "; 04361200
L3: DS:= 6 LIT"PARITY"; GO TO MXX; 04361400
L4: DS:=12 LIT"I/O INV ADDR"; GO TO MXX; 04361600
L5: DS:= 9 LIT"I/O ERROR"; GO TO MXX; 04361800
L6: DS:=10 LIT"WRITE LOCK"; GO TO MXX; 04362000
LL: GO TO PS; 04362200
MXX: GO TO MIXIT; 04362400
PS: DI:=DI-5; DS:=LIT"#"; DI:=DI+4; 04362600
CI:=CI+S2; GO TO LL0; GO TO LL1; GO TO LL2; 04362800
NR: DS:= 9 LIT"NOT READY"; GO TO MIXIT; 04363000
LL0: DS:= 5 LIT"PRINT"; GO TO CHK; 04363200
LL1: DS:= 4 LIT"READ"; GO TO CHK; 04363400
LL2: DS:= 5 LIT"PUNCH"; 04363600
CHK: DS:= 5 LIT"CHECK"; 04363800
MIXIT: DS:= 6 LIT", MIX="; DS:=2 DEC; DS:=LIT"~"; 04364000
DI:= DI-3; DS:=FILL; 04364200
END; 04364400
END OF MAKEMESS; 04364600
04364800
SUBROUTINE DETAILRECORDENTRY; 04365000
BEGIN 04365200
KEY := TYPEDSPACE(ABS(T2),MAINTBUFFAREAV);% %167-04365400
M[KEY] := (ABS(T2) DIV 5 -1) & RDCTABLE[U][18:1:2]; 04365600
IF MIX NEQ 0 THEN 04365800
BEGIN 04366000
M[KEY] ~ (*P(DUP)) & MIX[20:43:5] & 04366200
(IF FINALQUE[S] LSS 0 THEN 0 ELSE 04366400
(M[M[LOCATQUE[S] INX NOT 2] INX 4].[13:11] DIV ETRLNG)+1)[9:39:9];04366600
CHECKJOBORFILEMESS(MIX, 04366800
(IF FINALQUE[S] LSS 0 THEN 0 ELSE LOCATQUE[S] INX NOT 2), 04367000
U); 04367200
END; 04367400
M[KEY+1] := TRANSACTION[U]; 04367600
M[KEY+2]:=IF TYPE=2 THENRDCTABLE[U] & U[3:43:5] ELSE 0; 04367800
M[KEY+3] := IOQUE[S]; 04368000
M[KEY+4] := R & RDCTABLE[U][3:3:5]; 04368200
IF TYPE=2 THEN 04368400
BEGIN 04368600
M[KEY+5] := MULTITABLE[U]; 04368800
M[KEY+6] := LABELTABLE[U]; 04369000
M[KEY+7] := PRNTABLE[U]; 04369200
M[KEY+8] := 0; 04369400
M[KEY+9] := 16; 04369600
END; 04369800
IF T2 GTR 0 THEN LINKUP(TYPE+1,KEY); 04370000
END DETAILRECORDENTRY; 04370200
04370400