mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-01-13 23:25:24 +00:00
Commit Mark XVI DCMCP transcription as of 2014-03-16.
This commit is contained in:
parent
aadbcb942e
commit
e018faa2ea
@ -25694,4 +25694,302 @@ START: 41500100
|
||||
I2:=TBL:=TBL+1; 41502400
|
||||
END; 41502500
|
||||
END BUILLDING TABLES; 41502600
|
||||
PROCEDURE ENTERSYSFILE(N); VALUE N; REAL N; 41600000
|
||||
% 41600100
|
||||
BEGIN 41600200
|
||||
REAL A,J,WC,MFID,DISK; 41600300
|
||||
ARRAY DDD[*]; 41600400
|
||||
LABEL RETURN,EXIT; 41600500
|
||||
% 41600600
|
||||
IF N=1 THEN 41600700
|
||||
BEGIN 41600800
|
||||
MFID := "LIBMAIN"; J := 1; 41600900
|
||||
END ELSE 41601000
|
||||
IF N=2 THEN 41601100
|
||||
BEGIN 41601200
|
||||
MFID := "LDNCTRL"; 41601300
|
||||
END ELSE 41601400
|
||||
IF N=3 THEN 41601500
|
||||
BEGIN 41601600
|
||||
MFID := "PRNPBT "; 41601700
|
||||
END ELSE 41601800
|
||||
GO EXIT; 41601900
|
||||
% 41602000
|
||||
DISK := "DISK "; 41602100
|
||||
IF (A:=DIRECTORYSEARCH(MFID,DISK,5)) ! 0 THEN 41602200
|
||||
BEGIN 41602300
|
||||
M[A INX 2] := MCP; 41602400
|
||||
M[A INX 5] := M[A INX 6] := @14; 41602500
|
||||
DISKWAIT(A.[CF],30,A.[FF]); 41602600
|
||||
GO RETURN; 41602700
|
||||
END; 41602800
|
||||
DDD := [M[A := SPACE(WC := 181+30|J)]]&WC[8:38:10]; 41602900
|
||||
MOVE(WC,A-1,A); 41603000
|
||||
STREAM(DATE,D:=A+3); 41603100
|
||||
BEGIN 41603200
|
||||
SI:=LOC DATE; DS:=8 OCT; 41603300
|
||||
DI:=D; DS:=2 LIT"+#"; 41603400
|
||||
SI:=D; SI:=SI+5; DS:=3 CHR; 41603500
|
||||
END; 41603600
|
||||
DDD[ 0] := @3600036000101; 41603700
|
||||
DDD[ 1] := (XCLOCK+P(RTR))&DDD[3][6:30:18]; 41603800
|
||||
DDD[ 2] := MCP; 41603900
|
||||
DDD[ 4].[9:2] := 3; 41604000
|
||||
DDD[ 5] := DDD[6] := @14; 41604100
|
||||
DDD[ 7] := 4+J; 41604200
|
||||
DDD[ 9] := 1; 41604300
|
||||
DDD[10] := PETUSERDISK((DDD[8] := 5+J)&1[2:47:1],1); 41604400
|
||||
DDD[31] := 3-J; 41604500
|
||||
DDD[32] := DDD[38] := 2; 41604600
|
||||
DDD[33] := 4-J; 41604700
|
||||
DDD[34] := 22; 41604800
|
||||
DDD[35] := 2+J+J; 41604900
|
||||
DDD[36] := 6; 41605000
|
||||
DDD[37] := IF J THEN -1 ELSE 1; 41605100
|
||||
DDD[47] := DDD[48] := @377777777777; % TIME LMT 41605200
|
||||
DDD[49] := IF J THEN 2 ELSE 0; % % PRIORITY %711-41605300
|
||||
DDD[51] := IF J THEN 64 ELSE 4; % CORE EST 41605400
|
||||
DDD[52] := IF J THEN 200 ELSE 150; % STACKSIZ 41605500
|
||||
DDD[61] := @0000012600001011 41605600
|
||||
&(IF J THEN 35 ELSE IF N=2 THEN 23 ELSE 19)[24:38:10]; 41605700
|
||||
DDD[62] := @0024101100000000; 41605800
|
||||
DDD[122-30|J] := @0000220000200001; 41605900
|
||||
DDD[169-30|K] := FLAG(@2740010000100000); 41606000
|
||||
IF NOT J THEN 41606100
|
||||
STREAM(C:=N=2, D:=[DDD[91]]); 41606200
|
||||
BEGIN 41606300
|
||||
CI:=CI+C; GO L1; 41606400
|
||||
DS:=40 LIT 41606500
|
||||
"012CONTROLDECK 1A022BACK-UP0F DECK1B00"; 41606600
|
||||
GO L2; 41606700
|
||||
L1: DS:=40 LIT 41606800
|
||||
"012PRINTERBACK-UP1A0220000000PRINTER1B00"; 41606900
|
||||
L2: 41607000
|
||||
END; 41607100
|
||||
ENTERUSERFILE(MFID,DISK,A-1); 41607200
|
||||
DISKWAIT(A+31,WC-31,DDD[10]); 41607300
|
||||
RETURN: 41607400
|
||||
FORGETSPACE(A); 41607500
|
||||
EXIT: 41607600
|
||||
END ENTERSYSFILE; 41607700
|
||||
COMMENT ARTN RETURNS ALL STORAGE FOR AN N-DIMENSIONAL ARRAY A;% 42473000
|
||||
PROCEDURE ARTN(A,N); VALUE A,N; ARRAY A[*]; INTEGER N;% 42474000
|
||||
BEGIN INTEGER I;% 42475000
|
||||
IF NOT STOREDY THEN SLEEP([TOGLE],STOREMASK); 42476000
|
||||
IF A.[18:15]!0 THEN A~M[A.[18:15]]; 42476100
|
||||
IF N>1 THEN DO ARTN(A[I],N-1) UNTIL (I~I+1)}A.SIZE; 42477000
|
||||
N~A INX 0; 42478000
|
||||
IF A.PBIT THEN 42478200
|
||||
BEGIN I~M[N-1].[FF]; 42478400
|
||||
FORGETSPACE(N) 42478600
|
||||
END ELSE I~N; 42478800
|
||||
IF I>511 THEN DISKRTN(I, A.SIZE); 42479000
|
||||
END ARTN;% 42480000
|
||||
COMMENT ASR IS THE ALGOL STORAGE RETURN COMMUNICATE;% 42481000
|
||||
PROCEDURE ASR; BEGIN INTEGER I,BCNTR; ARRAY AIT[*]; REAL TEMP;% 42482000
|
||||
LABEL L,L1; 42483000
|
||||
REAL MOTHER; ARRAY DESC[*];% 42484000
|
||||
WHILE (AIT~PRT[P1MIX,AITNDX]).PBIT=0 DO% 42485000
|
||||
MAKEPRESENT([PRT[P1MIX,AITNDX]] INX 0);% 42486000
|
||||
MEMORY[AIT INX NOT 1].[2:1]~1;% 42487000
|
||||
I:=AIT[0]+1; 42488000
|
||||
IF (BCNTR:=PRT[P1MIX,CURBLKCNTR]) LEQ 0 THEN 42488100
|
||||
BEGIN TERMINATE(P1MIX); 42488200
|
||||
TERMINALMESSAGE(78); 42488300
|
||||
END; 42488400
|
||||
WHILE (TEMP~AIT[I~I-1]).BLKCNTR}BCNTR% 42489000
|
||||
DO BEGIN DESC~MEMORY[MOTHER~TEMP.MOM];% 42490000
|
||||
IF TEMP.[1:2]!1 THEN % CHECK FOR FAULT ENTRY 42490100
|
||||
IF TEMP.[1:2]=2 THEN % FILE 42491000
|
||||
IF TEMP.[33:15]=2 THEN BEGIN% 42492000
|
||||
FILECLOSE((MOTHER+3)&((DESC[4].[25:2]=2)|@12) 42493000
|
||||
[18:33:15]); 42494000
|
||||
GO TO L END ELSE% 42496000
|
||||
BEGIN FILECLOSE((DESC INX 5)& 42497000
|
||||
((M[DESC[2] INX 4].[25:2]=2)|@12) 42498000
|
||||
[18:33:15]); 42499000
|
||||
FORGETSPACE(DESC INX 0);% 42500000
|
||||
END ELSE IF TEMP.[1:1] THEN % SAVE MYSELF TASK42501000
|
||||
IF MOTHER=TSX THEN ELSE IF % ARRAY FOR COM5 42501040
|
||||
((NT1~DESC[3])=1 OR(NT1=2 AND DESC[4]!P1MIX))42501050
|
||||
THEN % TASK ARRAY OF A SCHEDULED OR 42501060
|
||||
% RUNNING OFFSPRING 42501070
|
||||
BEGIN IF NT1=1 THEN 42501100
|
||||
SHEETDIDDLER(0,20,DESC[4]); % ES42501200
|
||||
IF DESC[3]=2 THEN % RUNNING 42501300
|
||||
BEGIN TERMINATE(DESC[4]&86[CTF]); % DS42501400
|
||||
HALT; 42501500
|
||||
NOPROCESSTOG ~ NOPROCESSTOG-1; 42501550
|
||||
END; 42501600
|
||||
SLEEP([DESC[3]],-0); % WAIT FOR DS 42501650
|
||||
GO TO L1; 42501700
|
||||
END ELSE GO TO L1 ELSE 42501800
|
||||
IF SOFTI>0 THEN IF JAR[P1MIX,2].[5:1] THEN 42501810
|
||||
IF MOTHER=SFINTX THEN ELSE 42501820
|
||||
ELSE ELSE 42501830
|
||||
L1: ARTN(DESC,TEMP.DIMENSIONS); 42501900
|
||||
MEMORY[MOTHER]~0;% 42502000
|
||||
L: 42503000
|
||||
END;% 42504000
|
||||
AIT[0]~I;% 42505000
|
||||
PRT[P1MIX,CURBLKCNTR]~BCNTR-1;% 42506000
|
||||
IF I>0 THEN DO%%WIPE OUT BAD LABELS IN FAULT CELLS 42506100
|
||||
IF AIT[I].[1:2]=1 THEN 42506200
|
||||
IF M[AIT[I].MOM].BLKCNTR}BCNTR THEN 42506300
|
||||
M[AIT[I].MOM]~0 UNTIL (I~I-1){50; 42506400
|
||||
MEMORY[AIT INX NOT 1].[2:1]~0;% 42507000
|
||||
END ASR;% 42508000
|
||||
PROCEDURE INTERRUPT(TYPE); VALUE TYPE; REAL TYPE; 42510000
|
||||
BEGIN LABEL FLAGBIT,INVALIDINDEX,EXPUNDERFLOW,DIVIDEBYZERO; 42511000
|
||||
LABEL XYT; 42511500
|
||||
SWITCH SW~FLAGBIT,INVALIDINDEX,EXPUNDERFLOW,DIVIDEBYZERO; 42512000
|
||||
ARRAY TOP=-5[*]; 42513000
|
||||
REAL FLAGTESTER=-3; 42513500
|
||||
REAL MOM,SIZE,ALOC,I; 42514000
|
||||
REAL RCW=+1,RCWL=+2,SAVIT=+4; NAME A=+3; 42515000
|
||||
REAL R=+1,S=+2,Y=+3; 42516000
|
||||
BOOLEAN SUBROUTINE DOUBLEPRECISION; 42517010
|
||||
BEGIN R~M[S~PRT[P1MIX,8] INX 0]; %IRCW 42517020
|
||||
STREAM(R~(R INX 0)&R[30:10:2],Y~[Y]); %GET OP CODE 42517030
|
||||
BEGIN SI~R; SI~SI-2; DI~DI+6; DS~2 CHR END; 42517040
|
||||
DOUBLEPRECISION~Y.[45:3]=5; 42517050
|
||||
END; 42517060
|
||||
CHECKSTACKSPACE;% %WF 42517100
|
||||
GO TO SW[TYPE]; 42518000
|
||||
FLAGBIT: 42520000
|
||||
SAVIT~TOP; 42521000
|
||||
NT1~ANALYSIS; 42522000
|
||||
IF SYLLABLE.[41:7]!@35 THEN 42523000
|
||||
IF SYLLABLE.[45:3]!0 THEN 42524000
|
||||
BEGIN ERRORFIXER(16); TERMINATE(P1MIX); TERMINALMESSAGE(5) END; 42524100
|
||||
A~PRT[P1MIX,4]; 42524200
|
||||
RCW ~ M[RCWL ~ PRT[P1MIX,8] INX NOT ((SYLLABLE=@235)+2)];% 42525000
|
||||
IF RCW.[33:1] THEN % TYPE 13 INTRNSC 42525100
|
||||
BEGIN 42525110
|
||||
I~0; 42525115
|
||||
Y~[I].[CF]; 42525120
|
||||
I ~FLAG((@2520000000000000)&(RCW,[34:14])[CTC]); 42525130
|
||||
MAKEPRESENT(Y); 42525140
|
||||
M[RCWL]~FLAG(RCW&(M[RCW.[FF]]INX (NFLAG( 1 )).[CF])[CTC]); 42525150
|
||||
GO TO INITIATE; 42525160
|
||||
END ELSE 42525170
|
||||
IF NOT PRT[P1MIX,A[RCW].[8:10].[2:1] THEN% 42525500
|
||||
MAKEPRESENT(PRTROW[P1MIX] INX A[RCW].[8:10]);% 42526000
|
||||
M[RCWL]~FLAG(RCW&(M[RCW.[18:15]] INX A[RCW].[18:15])[33:33:15]); 42527000
|
||||
GO TO INITIATE; 42528000
|
||||
INVALIDINDEX: 42530000
|
||||
FOR I~6 STEP 5 UNTIL 11 DO 42531000
|
||||
IF TOP.[18:15]=(MOM~[PRT[P1MIX,I]].[33:15]) THEN 42532000
|
||||
IF (SIZE~M[MOM].[8:10])<1023 THEN 42533000
|
||||
BEGIN IF M[MOM].[2:1]=0 THEN MAKEPRESENT(MOM); 42534000
|
||||
M[(ALOC~M[MOM].[33:15])-2].[2:1]~1; 42535000
|
||||
IF (NT1:=M[ALOC-1].[FF])!0 THEN DISKRTN(NT1, SIZE); 42535500
|
||||
M[MOM]~FLAG(0&MOM[18:33:15] 42536000
|
||||
&(IF SIZE<512 THEN 2|SIZE ELSE 1023)[8:38:10]); 42537000
|
||||
IF TYPE ~ P(FLAGTESTER,TOP,XCH,DEL) THEN MAKEPRESENT(MOM) 42537050
|
||||
ELSE 42537060
|
||||
MAKEPRESENT(ANALYSIS); 42538000
|
||||
MOVE(SIZE,ALOC,M[MOM]); 42539000
|
||||
FORGETSPACE(ALOC); 42539050
|
||||
IF TYPE THEN GO XYT; 42539060
|
||||
GO TO INITIATE; 42539100
|
||||
END; 42539200
|
||||
ERRORFIXER(4); TERMINATE(P1MIX); TERMINALMESSAGE(7); 42540000
|
||||
EXPUNDERFLOW: 42542000
|
||||
IF DOUBLEPRECISION THEN M[S-3]~0; 42546000
|
||||
M[S-2]~0; 42547000
|
||||
IF JAR[P1MIX,2].[3:1] AND PRT[P1MIX,@51].[43:1] THEN 42547100
|
||||
PRT[P1MIX,@51]~P(DUP,LOD) OR 6; 42547200
|
||||
GO TO INITIATE; 42548000
|
||||
DIVIDEBYZERO: 42550000
|
||||
IF (P(JAR[P1MIX,2],DUP)}0 AND NOT(P(XCH).[3:1] AND 42550500
|
||||
PRT[P1MIX,@51].[44:1])) THEN 42550600
|
||||
BEGIN ERRORFIXER(8); TERMINATE(P1MIX); TERMINALMESSAGE(13) END 42551000
|
||||
ELSE IF JAR[P1MIX,2] < 0 THEN IF PRT[P1MIX,11].[FF] = 0 THEN 42551090
|
||||
PRT[P1MIX,11]~1 ELSE PRT[P1MIX,PRT[P1MIX,11].[FF]]~1 42551100
|
||||
ELSE 42551110
|
||||
BEGIN PRT[P1MIX,@51]~P(DUP,LOD) OR 1; 42551200
|
||||
IF DOUBLEPRECISION THEN M[S-3]~0; 42551300
|
||||
M[S-2]~0; 42551400
|
||||
END; 42551500
|
||||
GO TO INITIATE; 42552000
|
||||
XYT: 42553000
|
||||
END INTERRUPT; 42554000
|
||||
$ SET OMIT = NOT(DCLOG AND DATACOM ) 42599999
|
||||
% THE FORMAT OF DIRECTORY TOP% 44000000
|
||||
% D[0]=OPTIONS WORD% 44001000
|
||||
% D[1]=DATE% 44002000
|
||||
% D[2]=NUMBER OF ELECTRONIC UNITS% 44003000
|
||||
% D[3]=HIGHEST ADDRESS OF BACKUP STORAGE% 44004000
|
||||
% D[4]=HIGHEST ADDRESS OF DIRECTORY% 44005000
|
||||
% D[5]=LAST NUMBER USED FOR CONTROL DECK% 44006000
|
||||
% D[6]=FIRST CONTROL DECK QUEUED (LOCATION IN DIRECTORY)% 44007000
|
||||
% D[7]=LAST CONTROL DECK QUEUED (LOCATION IN DIRECTORY)% 44008000
|
||||
% D[8]=NEXT NUMBER AVAILABLE FOR PRINTER BACKUP DISK %P 44008100
|
||||
% D[9]=CORE, CONTAINS MULTIPROCESSING FACTOR 44008200
|
||||
% D[10] THRU D[15] SPECIFY WHICH DC-STATIONS ARE SPO-LIKE, 44008300
|
||||
% D[16]=QUEUE VALUES FOR SPO STATIONS 44008305
|
||||
% D[17] SPECIFIES WHAT THE SPOES ARE 44008310
|
||||
% D[18]=TIME OF DAY 44008320
|
||||
% D[19]=VALUE OF FENCE (TIME SHARING MCP) 44008330
|
||||
% D[20].[8:10]=NUMBER OF LAST LOG FILE 44008340
|
||||
% .[18:30]=NUMBER OF ENTRIES IN LOG (TIMESHARING) 44008350
|
||||
% D[21]=SCHEDWORD (TIMESHARING) 44008360
|
||||
% D[22].[38:10]=NUMBER OF CURRENT MAINTENANCE LOG. 44008380
|
||||
% .[28:10]=NUMBER OF CURRENT REMOVTE LOG. 44008390
|
||||
% D[23] THRU D[20] SPECIFY WHICH SU-S WERE READY AT THE LAST H/L.44008400
|
||||
% D[27] SI RESERVED FOR USE BY THE LOCAL SITE. 44008410
|
||||
% D[28]=DISK ADDRESS OF DIRECTORYTOP 44008499
|
||||
PROCEDURE INTFINISH(A); 44008998
|
||||
VALUE AA;REAL AA; FORWARD; 44008999
|
||||
SAVE PROCEDURE MOREINITIALIZE;FORWARD; 44009000
|
||||
SAVE PROCEDURE INITIALIZE; 44010000
|
||||
BEGIN 44010100
|
||||
REAL A,B,C,I,J,T,W,Y,Z; 44011000
|
||||
REAL INTS,INTSS,LASTL,LDATE,LOC,MEND; 44012000
|
||||
REAL IRPB,IRPTB,IRPDBS,IRPTU,IRPBUF; 44013000
|
||||
REAL MSTART=A, T1=LASTL, SHLM=MEND; 44014000
|
||||
INTEGER IRPBTS,IRPWRS; 44015000
|
||||
INTEGER XCLICK=XCLOCK; 44016000
|
||||
ARRAY DDD[*],GI[I*]; 44017000
|
||||
ARRAY X=W[*]; 44018000
|
||||
LABEL UNITL,TINUL,MISSL; 44019000
|
||||
LABEL AVLP,INLP,LT,LE,LF,LN,LP,LS; 44020000
|
||||
$ SET OMIT = NOT SHAREDISK 44024990
|
||||
$ SET OMIT = DUMP OR DEBUGGING OR BREAKOUT 44025990
|
||||
SUBROUTINE XXXXXX; BEGIN A~X-X-X-X-X-X-X-X-X-X-X-X-X-X-X; END;% 44037000
|
||||
SUBROUTINE MAKESAVE; 44037200
|
||||
BEGIN DISKWAIT(-C,M[I].[8:10],M[I]. [FF]~MCPBASE); 44037300
|
||||
M[I].[CF]:=C; M[C-1]:=@77777; C:=C+M[I].[8:10]+1;% %162-44037400
|
||||
END; 44037500
|
||||
SUBROUTINE FIX;% 44079000
|
||||
BEGIN P([M[J]]&I[8:38:10],T,~);% 44080000
|
||||
J ~ J+I;% 44081000
|
||||
END;% 44082000
|
||||
$ SET OMIT = NOT(DCSPO AND DATACOM ) 44082049
|
||||
MCPBASE:=M[0].[18:30]; 44083000
|
||||
DIRECTORYTOP:=M[1]; 44083100
|
||||
$ SET OMIT = NOT(SHAREDISK) 44083200
|
||||
RESTARTING~1023; 44085000
|
||||
PEUIO:=EUIO:=[M[@133]]&20[8:38:10] ; 44085100
|
||||
IOQUESLOTS:=32; 44085500
|
||||
IOQUEAVAIL:=31; 44085600
|
||||
HOLDER:=DIRECTORYTOP-7-(HOLDMAX+29) DIV 30; % SEE ALSO 40200100 44086100
|
||||
USERDISKBOTTOM:=HOLDER-DISKAVAILTABLEMAX; 44086200
|
||||
IF (I:=(USERDISKBOTTOM-50) DIV SYSMAX) > 247 THEN I:=247; 44086300
|
||||
ESPDISKBOTTOM:=50+(SYSNO|I); % BOTTOM OF ESPDISK 44087000
|
||||
ESPDISKTOP~ESPDISKBOTTOM+I-8; %TOP OF ESPDISK 44087100
|
||||
RRRMECH ~ @140000000;% 44088000
|
||||
WITCHINGHOUR:=5184000; 44090500
|
||||
WORDOFEASE:=@2525252525252525; 44091000
|
||||
NOPROCESSTOG ~ -1;% 44092000
|
||||
SOFTI ~ 0; 44092100
|
||||
$ SET OMIT = NOT STATISTICS 44092490
|
||||
STREAM(S~18,D~100);% 44093000
|
||||
BEGIN% 44094000
|
||||
SI ~ S; DS ~ 11 WDS; D ~ DI; 44095000
|
||||
DI ~ S; 11(DS ~ 8 LIT "102(0000" ); 44096000
|
||||
19(SI ~ SI+8); S ~ SI; 44097000
|
||||
DI~D; DS~2 WDS;% 44098000
|
||||
DI~S; DS~16 LIT"042(0000"% 44099000
|
||||
99999900
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user