From 587e8b1282b07a1b802e879047bd77ef8cfc0535 Mon Sep 17 00:00:00 2001 From: Paul Kimpel Date: Mon, 11 Mar 2013 04:40:04 +0000 Subject: [PATCH] 1. Commit DCMCP transcription as of 2013-03-08. 2. Commit INCL2OMIT utility to convert ESPOL $INCLUDE/$OMIT pragmas to $SET OMIT/$POP OMIT form. 3. Commit BICTOEBCDIC utility to translate XEM compiler output files from 6-bit BIC to 8-bit EBCDIC. 4. Minor fix to syllable decoding for R+7 addressing in SyllableDebugger. --- SYMBOL/DCMCP.esp_m | 274 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 274 insertions(+) diff --git a/SYMBOL/DCMCP.esp_m b/SYMBOL/DCMCP.esp_m index 42a05d9..eb8e083 100644 --- a/SYMBOL/DCMCP.esp_m +++ b/SYMBOL/DCMCP.esp_m @@ -22161,3 +22161,277 @@ FREEL: 37046460 STREAM(T3,T2,D:=T1:=U:=SPACE(30)); 37046520 BEGIN 37046530 DS~8 LIT"0@+1.013"; 37046540 + DS:=7 LIT"8400000";DS:=10 LIT"0"; 37046560 + SI:=LOC T3;SI:=SI+4; DS:=4 CHR; 37046580 + SI:=LOC T2; DS:=3 DEC; 37046590 + 46(DS~4 LIT"0"); 37046600 + END; M[T1+1]+M[T1+8]~ PBDROWSZ+1; 37046620 + $ SET OMIT = NOT(SHAREDISK) 37046624 + M[T1+5]~MID&(TYPE GEQ 22)[3:47:1]; % CP BK UP TOG 37046630 + GO EXIT %P 37046640 + END; %P 37046660 + W3: FILEMESS("# " 37046680 + &(IF TYPE = 6 OR TYPE = 20 THEN " " 37046685 + ELSE (IF PNTOG THEN "CP" ELSE "LP"))[12:36:12] 37046690 + & (IF TYPE < 2 THEN " " 37046700 + ELSE IF TYPE GEQ 20 THEN "PUT" ELSE "PBT")[30:30:18],37046710 + " .. RQD" & (IF FORMS THEN "FM" ELSE " ")[12:36:12], 37046720 + MID, FID, REEL, CDATE, CYCLE); 37046730 + IF AUTODS THEN TERMINATE(P1MIX&61[CTF]) ELSE %747-37046735 + BEGIN %747-37046737 + REPLY[P1MIX] := -VWY & VOU[36:42:6] & MAYBE(VFW); 37046740 + COMPLEXSLEEP(((IF (TYPE!6 AND TYPE!20) THEN IF PNTOG THEN 37046760 + PUNCH ELSE PRINTER ELSE 0) OR REPLY[P1MIX] 37046770 + >0 OR(IF TYPE>1 THEN BKUPTAPE OR MAGTAPE ELSE 0) OR 37046780 + DSED); %747-37046800 + END; %747-37046805 + IF DSED THEN GO TO X; %747-37046810 + IF NOT(GOTB OR GOTT OR GOTL OR GOTC) THEN 37046820 + BEGIN IF NOT WHYSLEEP(VWY&VOU[36:42:6]&MAYBE(VFM)) 37046825 + THEN GO TO W3; 37046826 + IF REPLY[P1MIX] = VOK THEN GO TO W3; 37046829 + IF REPLY[P1MIX].[CF] = VFM THEN BEGIN 37046830 + LABELTABLE[U:=REPLY[P1MIX].[FF]] := -FID; 37046835 + MULTITABLE[U] := MID; KIND := UNIT[U].[1:4]; 37046840 + GO EXIT; 37046845 + END; 37046850 + IF PNTOG THEN BEGIN U:=REPLY[P1MIX].[FF]; GO CP END; 37046855 + OUKID: TYPE~IF (U~REPLY[P1MIX].[FF])=1 THEN 4 ELSE %P 37046860 + IF U=2 THEN 1 ELSE IF U=3 THEN 6 ELSE 15; 37046880 + REPLY[P1MIX]~0; GO ROUND; %P 37046900 + END; REPLY[P1MIX]~0; %P 37046920 + IF GOTB THEN GO THERE ELSE IF GOTT THEN GO CLAIMT ELSE 37046940 + IF GOTC THEN KIND~6 ELSE KIND~1; 37046950 + CKFM: IF FORMS THEN %P 37046960 + BEGIN LABELTABLE[U]~-FID; MULTITABLE[U]~MID; %P 37046980 + DOLITTLE(FALSE, 37047000 + VWY&VOK[35:42:6]&VOU[30:42:6]&VFM[24:24:6], 37047010 + "#... FM"&TINU[U][12:30:18],"RQD ",MID); 37047020 + IF NT6=VOK THEN GO EXIT; 37047100 + IF DSED THEN GO TO INITIATE; 37047250 + KIND:=LABELTABLE[U]:=MULTITABLE[U]:=GOTL:=GOTP:=U:=0; 37047500 + IF NT6.[CF]=VFM THEN 37047600 + IF (U:=NT6.[FF]) ! 20 AND U ! 21 AND KIND = 1 OR 37047605 + U ! 22 AND KIND = 6 THEN 37047610 + BEGIN BADFM; GO ROUND END ELSE 37047615 + BEGIN LABELTABLE[U]~-FID; %RWR 37047625 + MULTITABLE[U]~MID; KIND~UNIT[U].[1:4]; %RWR 37047650 + GO EXIT; %RWR 37047660 + END ELSE BEGIN REPLY[P1MIX]~NT6; GO OUKID; END; %RWR 37047670 + END; GO X; %P 37047700 +SOMEWHERE: IF NOT FORMS THEN GO SW; 37047800 + DOLITTLE(FALSE,VWY&VFM[36:42:6],"#FM RQD",0,MID); U:=NT6.[FF]; 37048000 + IF NOT DSED THEN 37048100 + IF U LSS 16 THEN 37048200 + IF PRINTABLE[U].[1:1] THEN ELSE %764-37048300 + BEGIN LABELTABLE[U]:=-(*P(DUP));GO TO SOMEWHERE;END; %764-37048310 + GO TO X; 37048400 +SW: GO TO TYPESW[TYPE];% 37056000 +CP: TYPE~IF U=1 THEN 21 ELSE IF U=3 THEN 20 ELSE 37058000 + IF U=5 THEN 0 ELSE 22; REPLY[P1MIX]~0; GO ROUND; 37059000 +PP: DOLITTLE(PTPUNCH,VWY,"#PP RQD",0,MID); GO X; 37085000 +SU: T1~FID.[6:18];% 37096000 + FOR U~0 STEP 1 UNTIL 31 DO% 37097000 + IF TINU[U].[30:18]=T1 THEN GO ON;% 37098000 + GO TO MT;% 37099000 +ON: DOLITTLE(LABELTABLE[U]=0,VWY,"#... "&T1[12:30:18], 37100000 + "RQD ",MID); GO X; 37100010 +MT: T1~MID;% 37112000 + DOLITTLE(MAGTAPE,VWY,"#MT RQD",IF MID.UNITNUM!0 THEN %148-37113000 + "ON ..."&TINU[MID,UNITNUM-1][30:30:18] %148-37113100 + ELSE 0,MID); %148-37113200 + IF DSED THEN GO TO X; 37121000 + IF (T1~PRNTABLE[U].[15:15])!0 THEN% 37122000 + BEGIN FILECLOSE(T1&3[18:33:15]);% 37123000 + M[M[T1-3] INX 5].[38:4]~1;% 37124000 + END;% 37125000 +X: IF DSED THEN U~-1 ELSE 37172000 + BEGIN KIND~UNIT[U].[1:4]; 37173000 + LABELTABLE[U]~-FID; MULTITABLE[U]~MID;% 37174000 + RDCTABLE[U]~P(DUP,LOD)&REEL[14:38:10]&CDATE[24:31:17] 37174100 + &CYCLE[41:41:7]; 37174200 + END; EXIT: FINDOUTPUT~U 37175000 +END FINDOUTPUT;% 37176000 +REAL PROCEDURE FINDINPUT(MID,FID,REEL,CDATE,CYCLE,COBOL,UL,OF,MODE,FN); 37177000 + VALUE MID,FID,REEL,CDATE,CYCLE,COBOL, OF,MODE,FN;% 37178000 + REAL MID,FID,REEL,CDATE,CYCLE,COBOL,UL,OF,MODE,FN;% 37179000 +BEGIN REAL T1,T2,U,LO,HI,FIRST,IL; 37180000 + REAL A=COBOL; 37180100 + INTEGER S,COUNT; 37180200 + INTEGER USASI=IL; 37180300 + ARRAY FPB=LO[*]; 37180400 + LABEL LOOK,SEE,SRCHOUT; 37180500 + LABEL START,WHY,SXIT,X,Y,READALABEL,REW,EXIT; 37180600 + LABEL ONN,DUN,FAIL; 37180650 + DEFINE UNLABELED = UL#; 37180700 + DEFINE UNITNUM = [1:5]#; %148-37180800 + 37180990 + REAL SUBROUTINE DSED; DSED:=TERMSET(P1MIX); 37181000 + 37185300 + SUBROUTINE CHECKTERMIX; % LET CALLER ATTEND HIS RESPONSIBILITIES.37185310 + BEGIN 37185320 + IF DSED THEN 37185330 + BEGIN 37185340 + IF JAR[P1MIX,9].SYSJOBF THEN % MCP JOB 37185350 + BEGIN 37185370 + U:=-1; 37185380 + GO TO EXIT; 37185390 + END ELSE GO TO INITIATE; 37185400 + END; 37185410 + END; % CHECKTERMIX 37185420 + 37185990 + REAL SUBROUTINE SEARCH;% 37186000 + BEGIN COUNT:=0; 37186500 + IF NOT DSED THEN 37186750 + BEGIN 37187000 + IF (LO:=(HI:=MID.UNITNUM-1)) GEQ 0 THEN %148-37187100 + IF LABELTABLE[LO] GTR @314 THEN %148-37187110 + BEGIN COUNT~COUNT+1; P(LO,XCH); %148-37187120 + MID~MULTITABLE[LO]; GO SEE; %148-37187130 + END; 37187140 + $ SET OMIT = NOT PACKETS 37187200 + IF (LO:=(HI:=PSEUDOMIX[P1MIX]))!0 THEN 37187250 + $ SET OMIT = PACKETS 37187375 + LOOK: FOR U:=LO STEP 1 UNTIL HI DO 37188500 + BEGIN IF S GEQ 0 THEN 37188750 + IF (LABELTABLE[U] EQV (-@14))=NOT 0 THEN 37189000 + COMPLEXSLEEP((LABELTABLE[U] EQV (-@14))!NOT 0 OR 37189250 + (IF U<32 THEN UNIT[U].[13:5]=16 ELSE 0)); 37189500 + IF (LABELTABLE[U] EQV FID)=NOT 0 THEN% 37190000 + IF (MULTITABLE[U] EQV MID)=NOT 0 THEN% 37191000 + IF ((T1~RDCTABLE[U]).[14:10]=REEL) OR (REEL=0) THEN% 37192000 + IF (T1.[24:17]=CDATE) OR (CDATE=0) THEN% 37193000 + IF (T1.[41:7]=CYCLE) OR (CYCLE=0) THEN% 37194000 + BEGIN 37195000 + COUNT:=COUNT+1; P(U,XCH); 37195030 + END; 37195040 + END; 37195050 + FAIL: 37195100 + IF LO = HI THEN IF COUNT = 1 THEN GO SEE ELSE 37195200 + IF LO=0 THEN IF (LO:=JAR[P1MIX,6].[2:6])=23 OR LO=24 37195250 + THEN HI:=LO ELSE GO TO ONN ELSE 37195280 +ONN: BEGIN LO:=23; HI:=24; END ELSE %754-37195300 + IF LO=23 THEN BEGIN LO:= 0; HI:=15; END ELSE GO TO DUN; 37195400 + GO TO LOOK; 37195450 +DUN: IF CYCLE.[1:1] THEN % PBT 37195500 + BEGIN 37195550 + IF COUNT=0 THEN IF FID.[1:5]<3 THEN 37195600 + BEGIN FID.[1:5]~FID.[1:5]+1; 37195650 + LO~0; HI~15; GO LOOK; 37195700 + END ELSE FID.[1:5]~1; 37195750 + GO SRCHOUT; 37195800 + END; 37195850 + IF COUNT=0 THEN 37196200 + IF MID!0 THEN% 37197000 + IF NOT CDATE.[1:1] THEN % NOT LIBMAIN/DISK 37197500 + FOR U~0 STEP 1 UNTIL 15 DO% 37198000 + IF (MULTITABLE[U] EQV MID)=NOT 0 THEN% 37199000 + IF (RDCTABLE[U].[24:17]=CDATE) OR (CDATE=0) THEN 37199100 + IF LABELTABLE[U]>0 THEN% 37200000 + BEGIN COUNT~COUNT+1; 37201000 + P(U,XCH); 37202000 + END ELSE% 37203000 + IF RDCTABLE[U].[8:6]=P1MIX THEN% 37204000 + IF (T1~M[M[PRNTABLE[U].[15:15]-3] INX 5]).[41:1] THEN 37205000 + IF T1.[43:1] OR T1.[40:1]=0 THEN% 37206000 + BEGIN COUNT~COUNT+1; P(U,XCH) END; 37207000 + SEE: 37207500 + END; 37208000 + SRCHOUT: 37208500 + SEARCH~S~COUNT>0; 37209000 + END SEARCH;% 37210000 + 37210090 + REAL SUBROUTINE RESEARCH; 37210100 + BEGIN 37210150 + S:=-2; 37210175 + P(SEARCH); 37210200 + DO P(DEL) UNTIL (COUNT:=COUNT-1) LSS 0; 37210250 + RESEARCH~S; 37210300 + END RESEARCH; 37210400 + 37210990 + REAL SUBROUTINE REED;% 37211000 + BEGIN IF CHI~WAITIO(T1,LO&@377[18:33:15],U) AND @367)!0 THEN 37212000 + IF CHI AND NOT LO)!0 THEN 37213000 + BEGIN BLASTQ(U); SETNOTINUSE(U,0); STOPTIMING(FN,1023); 37214000 + FILEMESS(-:PARITY ","ON ... "&TINU[U][24:30:18],% 37215000 + MID,FID,REEL,CDATE,CYCLE);% 37216000 + END;% 37217000 + IF DSED THEN 37218000 + BEGIN 37218100 + SETNOTINUSE(U,0); 37218200 + STOPTIMING(FN,1023); 37218300 + CHECKTERMIX; 37218400 + END; 37219000 + REED~HI;% 37220000 + END REED;% 37221000 + 37221090 + SUBROUTINE SEARCHCOM; % FILE SEARCH FOR COM 30 37221100 + BEGIN P(DEL); 37221120 + IF NOT SEARCH THEN U:=-1 ELSE 37221140 + IF COUNT=1 THEN U:=P ELSE 37221160 + BEGIN 37221180 + S:=COUNT; T1:=0; 37221200 + COUNT:=IF COUNT>8 THEN 8 ELSE COUNT; 37221220 + WHILE (COUNT:=COUNT-1) GEQ 0 DO 37221240 + BEGIN U:=P; 37221260 + IF T1 THEN 37221280 + BEGIN 37221300 + T1:=0; M[A].[30:18]:=TINU[U].[30:18]; 37221320 + A:=A+1; 37221340 + END ELSE 37221360 + BEGIN 37221380 + T1:=1; M[A].[12:18]:=TINU[U].[30:18]; 37221400 + END; 37221420 + END; 37221440 + U:=-5; 37221460 + END; 37221480 + GO EXIT; 37221500 + END; 37221520 + 37221990 +START:% 37222000 + IF UL<0 THEN SEARCHCOM ELSE 37222100 + IF UL THEN GO TO WHY ELSE % 37222500 + IF NOT SEARCH THEN% 37223000 +WHY: BEGIN FILEMESS("#NO FIL",IF MID.UNITNUM!0 THEN %148-37224000 + "ON ..."&TINU[MID.UNITNUM-1][30:30:18] %148-37224100 + ELSE 0,MID,FID,REEL,CDATE,CYCLE); %148-37224200 + FIRST:=VOK&VWY[36:42:6]&VUL[30:42:6]&VIL[24:42:6]; 37225000 + IF COBOL THEN 37225050 + FIRST:=FIRST&(VOF|OF)[18:42:6]&(VFR|UL)[12:42:6]; 37225100 + IF AUTODS THEN TERMINATE(P1MIX&61[CTF]) ELSE %747-37225800 + BEGIN %747-37225900 + REPLY[P1MIX]~-FIRST&1[2:47:1]; 37226000 + COMPLEXSLEEP(RESEARCH OR (REPLY[P1MIX]>0) OR DSED); 37227000 + END; %747-37227100 + CHECKTERMIX; 37228000 + IF S THEN S~SEARCH ELSE 37229000 + BEGIN IF NOT WHYSLEEP(FIRST) THEN GO TO WHY; 37229500 + IF (T2:=(T1:=REPLY[P1MIX]).[FF]) GTR 64 THEN % IL 37230000 + BEGIN STREAM(T2:); % MID/FID37230250 + BEGIN SI:=T2; 37230500 + LL: SI:=SI+1; IF SC!"L" THEN GO TO LL; 37230750 + SI:=SI+1; T2:=SI; 37231000 + END; 37231250 + T2:=P; 37231500 + NAMEID(HI,T2); MID:=HI; NAMEID(HI,T2); 37232000 + NAMEID(HI,T2); FID:=HI; 37232250 + FORGETSPACE(T1.[FF]-1); 37232500 + GO TO Y; 37232750 + END; 37233000 + IF T1=VOK THEN GO TO Y; % OK 37233250 + IF NOT (IL:=T1.[CF]=VIL) THEN % OF, FR 37233500 + BEGIN U:=-1; 37233750 + REPLY[P1MIX]:=0; 37234000 + GO TO EXIT; 37234250 + END; 37234500 + UNLABELED~-LABELTABLE[U~T1.[18:15]]=@314;% 37235000 + P(U); 37235100 + COUNT:=1; 37235250 + IF LABELTABLE[U]=0 THEN 37235500 + BEGIN MULTITABLE[U]:=MID; 37235750 + LABELTABLE[U]:=FID; 37236000 + END ELSE 37236250 + BEGIN MID:=MULTITABLE[U].[6:42]; 37236500 + FID:=LABELTABLE[U].[6:42]; 37236750 + END; 37237000 + END; 37238000