1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-01 17:25:46 +00:00

Commit DCMCP transcription as of 2012-11-05; update folder log text width properties (done with folder properties now, I think).

This commit is contained in:
Paul Kimpel
2012-11-05 14:39:05 +00:00
parent c17c83f89b
commit 166fc1f90e

View File

@@ -15235,3 +15235,90 @@ END DETACHINT; 19902500
% [1:1]: EVENT INTERLOCK BIT (ON TO START) 19902512
% [5:1]=1 DISTINGUISHES THE EVENT FROM 19902514
% ATTACHED INTERRUPTS 19902516
% [FF]: ABSOULTE ADDRESS OF FIRST INTERRUPT 19902520
% ON ATTACH LIST 19902522
% [47:1]: HAPPEN BIT 19902524
% "COPY" EVENT-ITEM (RECEIVED AS A PARAMETER): 19902526
% [CF]: ABSOLUTE ADDRESS OF ORIGINAL EVENT 19902527
% CONTENTS OF TSKA[8]: 19902528
% [1:1]=1 IFF INTERRUPTER HAS JUST RUN AND 19902529
% SFINTQ IS NON-EMPTY 19902530
% [2:1]=1 IFF SFINTQ IS NON-EMPTY 19902540
% [3:1]=1 IFF INTERRUPTER IS RUNNING 19902550
% [4:1]: SFINTQ INTERLOCK BIT (ON TO START) 19902560
% [FF] = ADDRESS OF OLD IRCW 19902570
% [CF] = RELATIVE PRT ADDRESS OF FIRST IN LINKED 19902580
% LIST OF DECLARED INTERRUPTS 19902593
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %19902600
GO TO S[TYPE-1]; 19902700
ATTACHL: DETACHINT; % AN ATTACH DOES AN IMPLICIT DETACH 19902800
IF M[ABSEVT]}0 THEN SLEEP([M[ABSEVT]],EMASK); 19902850
M[ABSEVT] ~ P(DUP,LOD,SSP); 19902860
IF (T~M[ABSEVT].[FF])=0 THEN T ~ ABSEVT; 19902900
PRT[P1MIX,RELINT] ~ PRT[P1MIX,RELINT]&T [CTF]&P1MIX [8:38:10]; 19903100
M[ABSEVT] ~ P(DUP,LOD,[PRT[P1MIX,RELINT]],CFX,SSN); 19903200
P(XIT); 19903300
DETACHL: DETACHINT; P(XIT); 19903400
CAUSEL: M[ABSEVT].[47:1] - 1; %SET HAPPEN BIT: AWAKEN ALL YE WHO WAIT19903500
IF M[ABSEVT].[FF]!0 THEN% IF THERE ARE INTERRUPTS ATTACHED 19903600
BEGIN IF M[ABSEVT]}0 THEN SLEEP([M[ABSEVT]],EMASK); 19903650
M[ABSEVT] ~ P(DUP,LOD,SSP); 19903660
A ~ M[ABSEVT].[FF]; 19903670
WHILE A!ABSEVT DO % INSERT ATTACHED INTERRTUPS IN THE 19903700
BEGIN % RELEVANT SFINTQS 19903800
MIX ~ (T~M[A]).[8:10]; 19903810
IF TERMSET(MIX) THEN 19903820
BEGIN IF T.[FF]!ABSEVT THEN 19903825
DO MIX ~ (T~M[A~T.[FF]]).[8:10] 19903830
UNTIL NOTERMSET(MIX) OR T.[FF]=ABSEVT; 19903850
IF TERMSET(MIX) THEN 19903860
BEGIN M[ABSEVT]~P(DUP,LOD,SSN); P(XIT);END;19903865
END; 19903870
TSKA ~ PRT[MIX,TSX]; 19903900
IF NOT TSKA[8].[4:1] THEN SLEEP([TSKA[8]],IMASK); 19903907
TSKA[8].[4:1] ~ 0; 19903908
SIZE ~ (SFINTQ~PRT[MIX,SFINTX]).[8:10]-1; 19903910
J ~ K ~ 0; 19903915
IF NOT TSKA[8].[3:1] THEN% IF INTERRUPTER INTRINSIC NOT RUNNING19903917
WHILE J{SIZE DO % COMPACT SFINTQ, PUSHING ALL NON-ZERO 19903920
BEGIN % ENTRIES TOWARD THE FRONT OF THE ARRAY 19903930
IF SFINTQ[J]=0 THEN % AND ZEROING OUT REMAINDER 19903940
BEGIN 19903950
I ~ IF K!0 THEN K+2 ELSE J+1; 19903960
L1: IF I>SIZE THEN GO DONE; 19903970
IF SFINTQ[I]=0 THEN BEGIN I ~ I+1; GO TO L1; END; 19903980
K ~ I; GO TO L3; 19903990
L2: IF K>SIZE THEN GO TO L4; 19904000
IF SFINTQ[K]!0 THEN 19904010
L3: BEGIN SFINTQ[J] ! SFINTQ[K]; 19904020
J ~ J+1; K ~ K+1; GO TO L2; 19904030
END; 19904040
L4: K ~ K-1; 19904050
FOR I ~ J STEP 1 UNTIL K DO SFINTQ[I] ~ 0; 19904060
END ELSE J ~ J+1; 19904070
END; 19904100
DONE: IF SFINTQ[SIZE]!0 THEN % QUEUE FULL--GET MORE SPACE19904300
IF SIZE+6>1023 THEN 19904340
BEGIN TERMINATE(MIX&103[CTF]); 19904350
TSKA[8] ~ *P(DUP) OR IMASK; A ~ T.[FF]; GO ON; 19904360
END ELSE 19904370
BEGIN PRT[MIX,SFINTX] ~ BIGGERQ ~FLAG(1&[PRT[MIX,SFINTX]]19904400
[CTF]&(SIZE+6) [TOSIZE]); 19904450
MAKEPRESENT([I] INX 3);%GETS SPACE AND ZEROS IT OUT19904600
M[BIGGERQ INX NOT 1].[9:6] ~ MIX; 19904650
MOVE(SIZE+1,SFINTQ,BIGGERQ); 19904700
FORGETSPACE(SFINTQ INX 0); 19904850
SFINTQ ~ BIGGERQ; 19904860
END; 19904900
K ~ 0; WHILE SFINTQ[K]!0 DO K ~ K+1; 19905000
SFINTQ[K] ~ A-1; % ABSOLUTE ADDRESS OF INTERRUPT PD 19905100
A ~ T.[FF]; 19905200
TSKA[8] ~ *P(DUP) OR @1200000000000000; 19905300
IF MIX=P2MIX THEN 19905310
BEGIN HALT; NOPROCESSTOG ~ NOPROCESSTOG-1; 19905320
END; 19905330
ON: 19905340
END; 19905350
M[ABSEVT] ~ P(DUP,LOD,SSN); 19905360
END; 19906100
END EVENTANDINTERRUPT; 19906300