From 1af7be73b50e57fb19448eb58ae41852f6ef8587 Mon Sep 17 00:00:00 2001 From: paul Date: Tue, 15 Jan 2013 15:40:11 +0000 Subject: [PATCH] Commit DCMCP transcription as of 2013-01-15. --- SYMBOL/DCMCP.esp_m | 103 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 1 deletion(-) diff --git a/SYMBOL/DCMCP.esp_m b/SYMBOL/DCMCP.esp_m index a85a917..09c267c 100644 --- a/SYMBOL/DCMCP.esp_m +++ b/SYMBOL/DCMCP.esp_m @@ -19415,4 +19415,105 @@ BOOLEAN PROCEDURE OLAY(LOC); % MADE SAVE IN INITIALIZE 22228000 STARTLOG(P2MIX;); 22242100 $ POP OMIT 22242101 JOBKILLED ~ FALSE; OLAY ~ RESULT OR 2;% 22243000 - HALT; NOPROCESSTOG ~ NOPROCESSORT-1;% 22244000 + HALT; NOPROCESSTOG ~ NOPROCESSTOG-1;% 22244000 + END;% 22245000 + AWAKEN ~ RESULT END;% 22246000 + SUBROUTINE STOP;% 22247000 + BEGIN COMMENT STOP HALTS THE JOB ON PROCESSOR 2, AND 22248000 + CLOCKS HIM OFF. IT SETS JOBKILLED SO THAT AWAKEN 22249000 + CAN DO ITS DIRTY WORK BEFORE RETURNING;% 22250000 + JOBKILLED ~ TRUE; P(HP2);% 22251000 + STOPLOG(P2MIX,0); 22252000 + END STOPPER;% 22253000 + SUBROUTINE CODEOVERLAY;% 22254000 + BEGIN COMMENT CODEOVERLAY HANDLES ALL CASES OF MARKING 22255000 + A NORMAL-STATE SEGMENT AS NOT-PRESENT. IT DOES THIS 22256000 + A SINGEL PRT AND STACK AT A TIME, AND IS ONLY CALLED 22257000 + REPREATEDLY FOR RE-ENTRANT CODE OR INTRINSICS;% 22258000 + IF CHAR THEN S ~ M[SB ~ M[S].[FF]].[FF] ELSE S ~ S-1;% 22259000 + SPRT ~ PRT[MIX,10];% 22260000 + IF SPRT[X].[2:1] THEN BEGIN% 22261000 + % NEED TO DO PRT AND STACK SEARCH ONLY IF PRESENT IN THIS PRT 22262000 + DO UNTIL (X ~ (SPRT[X] ~ (*P(DUP))&0[22:1]% 22263000 + &(SPRT[X].[CF]-FRONT)[CTC]).[6:12])}2048;% 22264000 + AROUND:% 22265000 + WHILE (STACK := HUNT(BS).[CF]) LSS S DO 22266000 + BEGIN CORE ~ (DESC ~ NFLAG(M[STACK])).[CF];% 22267000 + IF CORE } FRONT AND CORE < BACK THEN 22268000 + IF DESC LSS 0 THEN%PROG. DESC OR RCW. 22269000 + IF DESC.[3:1] THEN%DESC 22270000 + IF DESC.[2:1] THEN%PRESENT 22270050 + IF DESC.[6:2]=1 THEN %TYPE 13 INTRINSIC DESC 22270100 + M[STACK]:=FLAG(DESC & 0[2:2:1] 22270200 + & (MOM.[8:10])[CTC]) ELSE 22270300 + % DESCRIPTOR -- INSERT OFFSET AND RESET P-BIT 22271000 + M[STACK] ~ FLAG(DESC&0[2:2:1]% 22272000 + &(CORE-FRONT)[CTC])% 22273000 + ELSE 22273100 + ELSE BEGIN% 22274000 + % CONTROL WORD (RCW) -- UNFLAG IN STACK, PUT OFFSET INTO 22275000 + % CORRESPONDING MSCW, AND MOM INTO RCW.[CF] 22276000 + M[X ~ DESC.[FF]] ~% 22277000 + (*P(DUP))&(CORE-FRONT)[CTC];% 22278000 + M[STACK] ~ DESC&SEGNO[CTC];% 22279000 + END;% 22280000 + BS ~ STACK+1;% 22281000 + END;% 22282000 + IF CHAR AND (STACK=0 AND NON-SAVE MEANS MCP PROCEDURE OR INTRINSIC 22298000 + IF MIX=P2MIX THEN STOP;% 22299000 + CHAR ~ (INITCW ~ PRT[MIX,8]).[32:1];% 22300000 + S ~ INITCW.[CF]; BS ~ PRT[MIX,10].[FF];% 22301000 + % CHAR IS CWMF, S IS TOP-OF-STACK, BS IS BASE OF STACK 22302000 + IF LINK.[AREATYPEF]=CODEAREAV THEN GO TO CODE;% %167-22303000 + IF TERMGOING(MIX) THEN GO TO FOG; %507-22303200 + % TYPE=1 MEANS PROGRAM -- ONLY ALTERNATIVE IS DATA 22304000 + IF CHAR THEN% 22305000 + % SPECIAL CHECKS FOR ADDRESS SAVED IN CHARACTER MODE 22306000 + BEGIN CHAR:=(((T:=M[S-1].[CF]) } FRONT AND T < BACK) OR 22307000