1 2 3 4 5 6 7 8 9 10 11 12 13 14 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 T13UCLCCMUOLAIIONF OBJECI CAPD PPOCE&&IN0 I0OIIN6 691356 0 18;02 -PAGE 1 CO.C0CCL (C:0000P 0001 GLOBAL.PROCEDURE LOADCARD(R14); 10, C1.CCUI- C0F0000F 0002. BEGINP 11, 06"C0CC: C0"0C00" 0003. 12, C(:CCOI" C0L0000F 0004. COMMON.BASE R11; 13, CF"CCC*" C7"0000P 0005. ARRAY 256 INTEGER ESDTABLE; COMMENT GLOBAL SYMBOL DICTIONARY; 14, 06"CCC4P 07 0400. 0006. ARRAY 64 LOGICAL NAME1 SYN ESDTABLE, NAMF2 SYN ESDTABLE(41; 15, C6"CCC4" 07"0400F 0007 ARRAY 64 INTEGER ADDR SYN FSDTABLE(81; 16, C6"CCC4L 07"0400. 0008. ARRAY 64 INTEGER LENOTM SYN ES0TABLE(121; COMMENT BYTES 1-3; 17, C6L00C4. 07"0400 0009- ARRAY 64 1OGICAL FLAGS SYN ESDTABLE(121; COMMENT BYTE 0; 18, C6,CCC$L C7"0400. 0010 INTEGER ESDINDEX; 19, C6"00C4" 07 0404. 0011 INTEGER LOCORE, HICORE, LOADBASE; 20, 06"00C4. 07 0410 0012 INTEGER ENTRYPOINT; COMMENT EXECUTION ENTRY ADDRESS; 21, C6,00C4L 07:0414. 0013 BYTE ENTRYSET, INIT, LOADERR; 22, 06.0004L C7:0417: 0014 ARRAY 133 BYTE ERRBUF; 23, C6.CCC4P C7:049C 0015 24, 06.0004P 07:049C 0016 INTEGER REGISTER 25, 06.C004. 07 049C 0017 I SYN R3, J SYN R4, K SYN R5, T SYN R6, W SYN R7, LINK SYN R8; 26, 06.0CC4. 07:049C 0018 27, 06.0CC4P C7:049C 0019 ARRAY 65 SHORT INTEGER MODTABLE; 28, 06P00C4. 07 051E 0020 SHORT INTEGER ESDID; 29, 06.C0C4. 07 0520 0021 FUNCTION DECR(6,#06001, POINT(6,#0500); 30, C6.C004. 07:0520 0022 ARRAY 12 INTEGER REGSAVE; 31, 06.0004. 07 0550 0023 32, 06.00C4P 07:0550. 0024 INTEGER REGISTER XR SYN R9; 33, 06.0004. 07 0550 0025 BYTE MEMOVF1 SYN 1, ESD)VFL SYN 2, DUPSEG SYN 3, 34, 06.00C4. 07:D550 0026 UNDEFSEG SYN 4, INVFMT SYN 4, ESDTYPE SYN 41 35, 06.00C4. 07:0550 0027 ESDSEQ SYN 4; 36, 06.0004. 07 0550 0028 PROCEDURE ERROR(LINK1; 37, C6.CCC4. 07 0550 0029 BEGIN COMMENT XR - ERROR TYPE; 38, 06 00C8. 07:J550 0030 STC(XR,LOADERR); GOTO EXIT; 39, 06.0010- 07 0550 0031 END; 40, 06.0012 07 0550 0032 41, 06.00I2- 07 0550 0033 PROCEDURE LOOKUP(LINK1; 42, 06.0012- 07 0550 0034 BEGIN COMMENT R0,R1-- NAME OF SEGMENT TO LOCATE OR ENTFR, SETS I; 43, 06.C012- 07:0550 0035 LOGICAL WSAVE; WSAVE := W; 44, 06.0016. 07 0554 0036 FOR I := 0 STEP 16 UNTIL FSDINDEX DO 45, C6.001A. 07 0554 0037 IF R0 = NAME1(I) AND R1 = NAME2(I1 THEN GOTO X; 46, 06.003A. 07 0554 0038 I := ESDINDEX + 16; IF I >= I024 THEN 47, 06.004A 07 0554 0039 BEGIN XR :=.@ESDOVFL; ERROR; 48, C6.0052- 07 0554 0040 END; 49, C6 0052- 07 0554 0041 ESDINDEX := I; W := IESDTABLE(I1; STM(R0,R1,MEM(W1); 50, 06.005E 07 0554 0042 R0 := #1; -COMMENT END OF CHAIN MARKER; 51, C6.0C62- C7 0554 0043 R1 := 0; STM(R0,R1,MEM(W+8)); 52, 06.006A 07 D554 0044 X: W := WSAVE; 53, 06.006E. 07 D554 0045 END; . 54, C6.0C7C. 07 0554 0046 .+ 55, 06.0070. 07 0554 0047 PROCEDURE ALLOCATESEG(LINK1; 56, 06.C07C: 07-0554 0048 BEGIN COMMENT I - ESDTABLE POINTER, W - SEG LENGTH; 57, C6.C07C. 07-0554. 0049 LOGICAL USAVE; USAVE := W; 58, 06.0074. 07 0558 0050 W := FLAGS(I) AND #80000000; IF \= THFN 59, C6.008C- 07 0558 0051 BEGIN W := @NAME1(I1; MVC(7,ERRBUF(44),MFM(W)); 60, 06.CCEA. 07 0558 0052 XR := @DUPSEG; ERROR; 61, 06.0092- 07 0558 0053 END; 62. C6 0092. 07 0558 0054 R0 := 1OADBASE - WSAVE AN0 #FFFFF8; IF R0 < LOCORE THEN 63, 06.00A6. 07 J558 0055 BEGIN R0 := _1; REGSAVE(0) := R0; COMMENT NO SPACE; 64, 06.00AE. 07 0558 0056 W := ESDID - 1; ESDID := W; GOTO EXIT; 65, 06.C0BE 07 0558 0057 END; 66, 06.00BE. 07 1558 0058 LOADBASE := R0; W := FLA0S(I) OR #80000000; FLAGS(I) := W; 6Z,