diff --git a/SYMBOL/DCMCP.esp_m b/SYMBOL/DCMCP.esp_m index 6198727..0c9a50a 100644 --- a/SYMBOL/DCMCP.esp_m +++ b/SYMBOL/DCMCP.esp_m @@ -2338,3 +2338,236 @@ ARRAY MAINTBUFFER[*]; 04121950 END 04134950 ELSE GO TO DC; 04134955 END ELSE GO TO X; 04134960 + END; 04134990 + IF E = 0 THEN 04135000 + BEGIN % RECOVERED MASS STORAGE % 04137000 + MAINTBUFFER[NXDISK:=NXDISK+4 AND 15] 04137100 + := -0 & U[2:46:2] & LOCATQUE[S][4:3:5] & 04137110 + (LOIGENTRY:=LOGENTRY+1)[CTF] & 04137120 + RDCTABLE[U]{18:1:2]; 04137130 + IF FINALQUE[S] GTR 0 THEN 04137140 + BEGIN 04137150 + MAINTBUFFER[XNDISK]:=(*P(DUP)) & 04137160 + ((M[M[S1:=LOCATQUE[S] INX NOT 2] INX 4]04137170 + .[13:11] DIV ETRLNG)+1)[9:39:9]; 04137180 + M[S1].[7:1] := 1; 04137190 + END; 04137200 + P(MAINTBUFFER[NXDISK+2]:=IOQUE[S]); 04137202 + $ SET OMIT = NOT(AUXMEM) 04137203 + P(NFLAG(M[P])); 04137212 + P(P&V[1:44:4],[MAINTBUFFER[NXDISK+1]],STD); 04137215 + MAINTBUFFER[NXDISK+3]:=MAINTBUFFER[U]; 04137220 + IF (LOGHOLDER INX 0) = 0 THEN 04137230 + BEGIN 04137240 + LOGHOLDER.[CF]:=[MAINTBUFFER[NXDISK]]; 04137250 + INDEPENDENTRUNNER(P(.MAINTLOGGER),0,100); 04137260 + END ELSE M[LOGHOLDER.[FF]].[CF]:= 04137270 + [MAINTBUFFER[NXDISK]]; 04137275 + LOGHOLDER.[FF]:=[MAINTBUFFER[NXDISK]]; 04137280 + NUMAINTMESS:= NUMAINTMESS+1; 04137290 + T.[5:8] ~ 0; 04142000 + GO TO SW; 04142500 + END;% 04143000 + IF V = 0 THEN% 04144000 + $ SET OMIT = NOT(SHAREDISK) 04144099 + BEGIN % ORIGINAL ERROR ON MASS STORAGE% 04145000 + TINU[U].[18:2] ~ P(DUP).[18:12]+1;% 04146000 + MAINTBUFFER[U]:=R&TWO(C)[18:43:4]; 04146100 + RDCTABLE[U]:=(*P(DUP))&(C-1)[1:46:2]; 04146200 + V:=129; 04147000 + $ SET OMIT = NOT(SHAREDISK) 04147399 + END% 04148000 + ELSE BEGIN % RECURRENT ERROR ON MASS STORAGE% 04149000 + P(MAINTBUFFER[U]:=P(DUP,LOD) OR 04150100 + R&TWO(C)[18:43:4]); 04150200 + IF (V ~ V+1) > 137 THEN% 04151000 + BEGIN R:=P; 04151200 + IF LOCATQUE[S].[9:1] THEN % OLAY I/O 04151220 + M[LOCATQUE[S]:=R OR IOMASK; 04151230 + $ SET OMIT = NOT(AUXMEM) 04151235 + DISKERR: 04151300 + $ SET OMIT = NOT(DFX) 04151399 + T.[5:10]:=0; 04151400 + GO TO DX; 04152600 + END; 04152800 + P(DEL); 04152900 + END;% 04153000 + UNIT[U] ~ T&V[5:40:8];% 04154000 + DS:% 04155000 + CHANNEL[P(TIO)] ~ U;% 04156000 + P([IOQUE[S]],IIO);% 04157000 + GO TO EXTERNAL ;% 04158000 + X: STOP ~ (V!0)|2+1;% 04159000 + T.[5:13] ~ 32|E+8;% 04160000 + GO TO TEST; 04161000 + END; 04161500 + SW:: GO TO TYPE[T.[1:4]];% 04162000 + LP: 04163000 + IF STOP := (T := T&0[16:16:1]).[17:1] THEN 04164000 + TEST: IF FIRSTWAIT = NEXTWAIT THEN GO TO INCR ELSE% 04165000 + GO TO NEW ELSE GO TO NOWAIT;% 04166000 + DK: 04167900 + IF NOT (I:=IOQUE[S]).[24:1] THEN 04168000 + IF FINALQUE[S].[24:1] THEN% 04169000 + $ SET OMIT = DFX 04169090 + BEGIN 04169100 + $ SET OMIT = NOT DKBNODFX OR OMIT 04169190 + $ SET OMIT = DKBNODFX OR OMIT 04170750 + M[IOQUE[S]:=I&1[24:47:1]]:=*(P(DUP) INX P(0,LNG,XCH)); 04170800 + $ POP OMIT 04170900 + GO TO DS; 04171000 + END ELSE GO TO OK ELSE GO TO OK; 04171200 + $ POP OMIT 04171250 + $ SET OMIT = NOT DFX 04171350 + DC: 04174000 + $ SET OMIT = NOT(DATACOM ) 04174999 + 04176000 + $ SET OMIT = DFX 04176899 + DX: DX1: 04176900 + $ POP OMIT 04176901 + OK: IF FIRSTWAIT = NEXTWAIT THEN 04177000 + NOWAIT: IF (S1 := LOCATQUE[S].[18:15]) LSS @1777 THEN 04178000 + INITIATEIO(IOQUE[S1],LOCATQUE[S1].[3:5],U)% 04180000 + ELSE 04181000 + PROC: T := T&0[16:16:2] 04182000 + ELSE 04183000 + BEGIN% 04187000 + NEW: NEWIO;% 04188000 + IF STOP THEN GO TO INCR;% 04189000 + QUP: IF LOCATQUE[S].[FF] GTR @1777 THEN GO TO PROC; 04190000 + QUEUEUP(U);% 04191000 + T ~ T&4[13:43:5];% 04192000 + END;% 04193000 + INCR: 04194000 + IF (TIM~CLOCK+P(RTR)-TIM) LSS THEN THEN TIM~0; 04194050 + IOD:=IOQUE[S]; 04194100 + IF (U OR 1 )=19 THEN 04194200 + BEGIN 04194300 + IF (JUNK:=M[IOD].[5:7])>9 THEN 04194400 + JUNK:=NEUP.[CF]+(JUNK AND @17); 04194500 + IF JUNK