| MODULE Modules; (*Link and load on RISC; NW 20.10.2013 / 9.4.2016*) |
| | .MODULE Modules (KEY 41C6A19A, VERSION 1, SIZE 00001404) |
| | .IMPORT Files (KEY 73F5D686) |
| | .TYPEDESC 00000080 FFFFFFFF FFFFFFFF FFFFFFFF 00000020 FFFFFFFF |
| | .DATA 58H |
| | .STRING 70H "Oberon" |
| | .POINTER_REFERENCES 18H 1CH |
| | .FIXUP T 0H |
| IMPORT SYSTEM, Files; |
| CONST versionkey = 1X; MT = 12; DescSize = 80; |
| |
| TYPE Module* = POINTER TO ModDesc; |
| Command* = PROCEDURE; |
| ModuleName* = ARRAY 32 OF CHAR; |
| |
| ModDesc* = RECORD |
| name*: ModuleName; |
| next*: Module; |
| key*, num*, size*, refcnt*: INTEGER; |
| data*, code*, imp*, cmd*, ent*, ptr*, unused: INTEGER (*addresses*) |
| END ; |
| |
| VAR root*, M: Module; |
| MTOrg*, AllocPtr*, res*: INTEGER; |
| importing*, imported*: ModuleName; |
| limit: INTEGER; |
| |
| PROCEDURE ThisFile(name: ARRAY OF CHAR): Files.File; |
| VAR i: INTEGER; |
| filename: ModuleName; |
| BEGINa i := 0;b |
| 0000 | a .PROC 1 |
| 0000 | a(4EE90030): SUB SP, SP, 30H |
| 0001 | a(AFE00000): STR LNK, SP, 0H |
| 0002 | a(A0E00004): STR R0, SP, 4H |
| 0003 | a(A1E00008): STR R1, SP, 8H |
| 0004 | b(40000000): MOV R0, R0, 0H |
| 0005 | b(A0E0000C): STR R0, SP, CH |
| WHILE name[i]c # 0X DOd filename[i]e := name[i]f;g INC(i) ENDh ; |
| 0006 | c .PROC 2 |
| 0006 | c(80E0000C): LDR R0, SP, CH |
| 0007 | c(81E00008): LDR R1, SP, 8H |
| 0008 | c .PROC 3 |
| 0008 | c(01090001): SUB R1, R0, R1 |
| 0009 | c .PROC 4 |
| 0009 | c(DA02C41C): BLCC MT [trap=1, pos=708] |
| 000A | c .PROC 5 |
| 000A | c(81E00004): LDR R1, SP, 4H |
| 000B | c .PROC 6 |
| 000B | c(00180000): ADD R0, R1, R0 |
| 000C | d(90000000): LDR R0, R0, 0H |
| 000D | d(E1000010): BEQ 16 [001EH] |
| 000E | e(80E0000C): LDR R0, SP, CH |
| 000F | e(41090020): SUB R1, R0, 20H |
| 0010 | e(DA02D81C): BLCC MT [trap=1, pos=728] |
| 0011 | e(00E80000): ADD R0, SP, R0 |
| 0012 | f(81E0000C): LDR R1, SP, CH |
| 0013 | f .PROC 7 |
| 0013 | f(82E00008): LDR R2, SP, 8H |
| 0014 | f(02190002): SUB R2, R1, R2 |
| 0015 | f(DA02E31C): BLCC MT [trap=1, pos=739] |
| 0016 | f(82E00004): LDR R2, SP, 4H |
| 0017 | f(01280001): ADD R1, R2, R1 |
| 0018 | g(91100000): LDR R1, R1, 0H |
| 0019 | g(B1000010): STR R1, R0, 10H |
| 001A | h(80E0000C): LDR R0, SP, CH |
| 001B | h(40080001): ADD R0, R0, 1H |
| 001C | h(A0E0000C): STR R0, SP, CH |
| 001D | h(E7FFFFE8): B -24 [0006H] |
| filename[i]i := ".";j filename[i+1]k := "r";l filename[i+2]m := "s";n filename[i+3]o := "c";p filename[i+4]q := 0X;r |
| 001E | i(80E0000C): LDR R0, SP, CH |
| 001F | i(41090020): SUB R1, R0, 20H |
| 0020 | i(DA03011C): BLCC MT [trap=1, pos=769] |
| 0021 | i(00E80000): ADD R0, SP, R0 |
| 0022 | j(4100002E): MOV R1, R0, 2EH |
| 0023 | j(B1000010): STR R1, R0, 10H |
| 0024 | k(80E0000C): LDR R0, SP, CH |
| 0025 | k(40080001): ADD R0, R0, 1H |
| 0026 | k(41090020): SUB R1, R0, 20H |
| 0027 | k(DA03171C): BLCC MT [trap=1, pos=791] |
| 0028 | k(00E80000): ADD R0, SP, R0 |
| 0029 | l(41000072): MOV R1, R0, 72H |
| 002A | l(B1000010): STR R1, R0, 10H |
| 002B | m(80E0000C): LDR R0, SP, CH |
| 002C | m(40080002): ADD R0, R0, 2H |
| 002D | m(41090020): SUB R1, R0, 20H |
| 002E | m(DA032D1C): BLCC MT [trap=1, pos=813] |
| 002F | m(00E80000): ADD R0, SP, R0 |
| 0030 | n(41000073): MOV R1, R0, 73H |
| 0031 | n(B1000010): STR R1, R0, 10H |
| 0032 | o(80E0000C): LDR R0, SP, CH |
| 0033 | o(40080003): ADD R0, R0, 3H |
| 0034 | o(41090020): SUB R1, R0, 20H |
| 0035 | o(DA03431C): BLCC MT [trap=1, pos=835] |
| 0036 | o(00E80000): ADD R0, SP, R0 |
| 0037 | p(41000063): MOV R1, R0, 63H |
| 0038 | p(B1000010): STR R1, R0, 10H |
| 0039 | q(80E0000C): LDR R0, SP, CH |
| 003A | q(40080004): ADD R0, R0, 4H |
| 003B | q(41090020): SUB R1, R0, 20H |
| 003C | q(DA03591C): BLCC MT [trap=1, pos=857] |
| 003D | q(00E80000): ADD R0, SP, R0 |
| 003E | r(41000000): MOV R1, R0, 0H |
| 003F | r(B1000010): STR R1, R0, 10H |
| RETURN Files.Old(filename)s |
| 0040 | s(40E80010): ADD R0, SP, 10H |
| 0041 | s(41000020): MOV R1, R0, 20H |
| ENDt ThisFile; |
| 0042 | t .FIXUP P |
| 0042 | t(F7102042): BL MOD1 [Files] PROC2 |
| 0043 | t(8FE00000): LDR LNK, SP, 0H |
| 0044 | t(4EE80030): ADD SP, SP, 30H |
| 0045 | t(C700000F): B LNK |
| |
| PROCEDURE error(n: INTEGER; name: ARRAY OF CHAR); |
| BEGINu res := n;v importing := name |
| 0046 | u(4EE90010): SUB SP, SP, 10H |
| 0047 | u(AFE00000): STR LNK, SP, 0H |
| 0048 | u(A0E00004): STR R0, SP, 4H |
| 0049 | u(A1E00008): STR R1, SP, 8H |
| 004A | u(A2E0000C): STR R2, SP, CH |
| 004B | v(80E00004): LDR R0, SP, 4H |
| 004C | v .FIXUP D |
| 004C | v(8D00004C): LDR SB, MT, MOD0 [Modules] |
| 004D | v(A0D00028): STR R0, SB, 28H [data] |
| ENDw error; |
| 004E | w(40D8002C): ADD R0, SB, 2CH |
| 004F | w(81E00008): LDR R1, SP, 8H |
| 0050 | w(82E0000C): LDR R2, SP, CH |
| 0051 | w(E100000B): BEQ 11 [005DH] |
| 0052 | w(42280003): ADD R2, R2, 3H |
| 0053 | w(42220002): ASR R2, R2, 2H |
| 0054 | w(43000008): MOV R3, R0, 8H |
| 0055 | w(03290003): SUB R3, R2, R3 |
| 0056 | w(DE03EE3C): BLGT MT [trap=3, pos=1006] |
| 0057 | w(83100000): LDR R3, R1, 0H |
| 0058 | w(41180004): ADD R1, R1, 4H |
| 0059 | w(A3000000): STR R3, R0, 0H |
| 005A | w(40080004): ADD R0, R0, 4H |
| 005B | w(42290001): SUB R2, R2, 1H |
| 005C | w(E9FFFFFA): BNE -6 [0057H] |
| 005D | w(8FE00000): LDR LNK, SP, 0H |
| 005E | w(4EE80010): ADD SP, SP, 10H |
| 005F | w(C700000F): B LNK |
| |
| PROCEDURE Check(s: ARRAY OF CHAR); |
| VAR i: INTEGER; ch: CHAR; |
| BEGINx ch := s[0]y;z res := 1;a i := 1;b |
| 0060 | x(4EE90014): SUB SP, SP, 14H |
| 0061 | x(AFE00000): STR LNK, SP, 0H |
| 0062 | x(A0E00004): STR R0, SP, 4H |
| 0063 | x(A1E00008): STR R1, SP, 8H |
| 0064 | y(40000000): MOV R0, R0, 0H |
| 0065 | y(81E00008): LDR R1, SP, 8H |
| 0066 | y(01090001): SUB R1, R0, R1 |
| 0067 | y(DA044C1C): BLCC MT [trap=1, pos=1100] |
| 0068 | y(81E00004): LDR R1, SP, 4H |
| 0069 | y(00180000): ADD R0, R1, R0 |
| 006A | z(90000000): LDR R0, R0, 0H |
| 006B | z(B0E00010): STR R0, SP, 10H |
| 006C | a(40000001): MOV R0, R0, 1H |
| 006D | a .FIXUP D |
| 006D | a(8D000021): LDR SB, MT, MOD0 [Modules] |
| 006E | a(A0D00028): STR R0, SB, 28H [data] |
| 006F | b(40000001): MOV R0, R0, 1H |
| 0070 | b(A0E0000C): STR R0, SP, CH |
| IF (ch >= "A")c & (dch <= "Z")e OR (fch >= "a")g & (hch <= "z")i THENj |
| 0071 | c(90E00010): LDR R0, SP, 10H |
| 0072 | c(40090041): SUB R0, R0, 41H |
| 0073 | d(E5000003): BLT 3 [0077H] |
| 0074 | e(90E00010): LDR R0, SP, 10H |
| 0075 | e(4009005A): SUB R0, R0, 5AH |
| 0076 | f(E6000006): BLE 6 [007DH] |
| 0077 | g(90E00010): LDR R0, SP, 10H |
| 0078 | g(40090061): SUB R0, R0, 61H |
| 0079 | h(E500002E): BLT 46 [00A8H] |
| 007A | i(90E00010): LDR R0, SP, 10H |
| 007B | i(4009007A): SUB R0, R0, 7AH |
| 007C | j(EE00002B): BGT 43 [00A8H] |
| REPEAT ch := s[i]k;l INC(i) |
| 007D | k(80E0000C): LDR R0, SP, CH |
| 007E | k(81E00008): LDR R1, SP, 8H |
| 007F | k(01090001): SUB R1, R0, R1 |
| 0080 | k(DA04BA1C): BLCC MT [trap=1, pos=1210] |
| 0081 | k(81E00004): LDR R1, SP, 4H |
| 0082 | k(00180000): ADD R0, R1, R0 |
| 0083 | l(90000000): LDR R0, R0, 0H |
| 0084 | l(B0E00010): STR R0, SP, 10H |
| UNTILm ~((ch >= "0")n & (och <= "9")p OR (qch >= "A")r & (sch <= "Z")t |
| 0085 | m(80E0000C): LDR R0, SP, CH |
| 0086 | m(40080001): ADD R0, R0, 1H |
| 0087 | m(A0E0000C): STR R0, SP, CH |
| 0088 | n(90E00010): LDR R0, SP, 10H |
| 0089 | n(40090030): SUB R0, R0, 30H |
| 008A | o(E5000003): BLT 3 [008EH] |
| 008B | p(90E00010): LDR R0, SP, 10H |
| 008C | p(40090039): SUB R0, R0, 39H |
| 008D | q(E600000F): BLE 15 [009DH] |
| 008E | r(90E00010): LDR R0, SP, 10H |
| 008F | r(40090041): SUB R0, R0, 41H |
| 0090 | s(E5000003): BLT 3 [0094H] |
| 0091 | t(90E00010): LDR R0, SP, 10H |
| 0092 | t(4009005A): SUB R0, R0, 5AH |
| OR (uch >= "a")v & (wch <= "z")x OR (ych = ".")z) OR (ai = 32)b;c |
| 0093 | u(E6000009): BLE 9 [009DH] |
| 0094 | v(90E00010): LDR R0, SP, 10H |
| 0095 | v(40090061): SUB R0, R0, 61H |
| 0096 | w(E5000003): BLT 3 [009AH] |
| 0097 | x(90E00010): LDR R0, SP, 10H |
| 0098 | x(4009007A): SUB R0, R0, 7AH |
| 0099 | y(E6000003): BLE 3 [009DH] |
| 009A | z(90E00010): LDR R0, SP, 10H |
| 009B | z(4009002E): SUB R0, R0, 2EH |
| 009C | a(E9000003): BNE 3 [00A0H] |
| 009D | b(80E0000C): LDR R0, SP, CH |
| 009E | b(40090020): SUB R0, R0, 20H |
| 009F | c(E9FFFFDD): BNE -35 [007DH] |
| IF (i < 32)d & (ech = 0X)f THENg res := 0 ENDh |
| 00A0 | d(80E0000C): LDR R0, SP, CH |
| 00A1 | d(40090020): SUB R0, R0, 20H |
| 00A2 | e(ED000005): BGE 5 [00A8H] |
| 00A3 | f(90E00010): LDR R0, SP, 10H |
| 00A4 | g(E9000003): BNE 3 [00A8H] |
| 00A5 | h(40000000): MOV R0, R0, 0H |
| 00A6 | h .FIXUP D |
| 00A6 | h(8D000039): LDR SB, MT, MOD0 [Modules] |
| 00A7 | h(A0D00028): STR R0, SB, 28H [data] |
| END |
| ENDi Check; |
| 00A8 | i(8FE00000): LDR LNK, SP, 0H |
| 00A9 | i(4EE80014): ADD SP, SP, 14H |
| 00AA | i(C700000F): B LNK |
| |
| PROCEDURE Load*(name: ARRAY OF CHAR; VAR newmod: Module); |
| (*search module in list; if not found, load module. |
| res = 0: already present or loaded; res = 2: file not available; res = 3: key conflict; |
| res = 4: bad file version; res = 5: corrupted file; res = 7: no space*) |
| VAR mod, impmod: Module; |
| i, n, key, impkey, mno, nofimps, size: INTEGER; |
| p, u, v, w: INTEGER; (*addresses*) |
| ch: CHAR; |
| body: Command; |
| fixorgP, fixorgD, fixorgT: INTEGER; |
| disp, adr, inst, pno, vno, dest, offset: INTEGER; |
| name1, impname: ModuleName; |
| F: Files.File; R: Files.Rider; |
| import: ARRAY 16 OF Module; |
| BEGINj mod := root;k res := 0;l nofimps := 0;m |
| 00AB | j .PROC 8 |
| 00AB | j(4EE90110): SUB SP, SP, 110H |
| 00AC | j(AFE00000): STR LNK, SP, 0H |
| 00AD | j(A0E00004): STR R0, SP, 4H |
| 00AE | j(A1E00008): STR R1, SP, 8H |
| 00AF | j(A2E0000C): STR R2, SP, CH |
| 00B0 | k .FIXUP D |
| 00B0 | k(8D00000A): LDR SB, MT, MOD0 [Modules] |
| 00B1 | k(80D00018): LDR R0, SB, 18H [data] |
| 00B2 | k(A0E00010): STR R0, SP, 10H |
| 00B3 | l(40000000): MOV R0, R0, 0H |
| 00B4 | l(A0D00028): STR R0, SB, 28H |
| 00B5 | m(40000000): MOV R0, R0, 0H |
| 00B6 | m(A0E0002C): STR R0, SP, 2CH |
| WHILE (mod # NIL)n & (oname # mod.namep)q DOr mod := mod.nexts ENDt ; |
| 00B7 | n(80E00010): LDR R0, SP, 10H |
| 00B8 | o(E1000011): BEQ 17 [00CAH] |
| 00B9 | p(80E00010): LDR R0, SP, 10H |
| 00BA | p(D108714C): BLEQ MT [trap=4, pos=2161] |
| 00BB | q(81E00004): LDR R1, SP, 4H |
| 00BC | q(92100000): LDR R2, R1, 0H |
| 00BD | q(41180001): ADD R1, R1, 1H |
| 00BE | q(93000000): LDR R3, R0, 0H |
| 00BF | q(40080001): ADD R0, R0, 1H |
| 00C0 | q(04290003): SUB R4, R2, R3 |
| 00C1 | q(E9000002): BNE 2 [00C4H] |
| 00C2 | q(44290000): SUB R4, R2, 0H |
| 00C3 | q(E9FFFFF8): BNE -8 [00BCH] |
| 00C4 | r(E1000005): BEQ 5 [00CAH] |
| 00C5 | s(80E00010): LDR R0, SP, 10H |
| 00C6 | s(D108854C): BLEQ MT [trap=4, pos=2181] |
| 00C7 | t(80000020): LDR R0, R0, 20H |
| 00C8 | t(A0E00010): STR R0, SP, 10H |
| 00C9 | t(E7FFFFED): B -19 [00B7H] |
| IF mod = NIL THENu (*load*) |
| 00CA | u(80E00010): LDR R0, SP, 10H |
| 00CB | u(E9000336): BNE 822 [0402H] |
| Check(name)v;w |
| 00CC | v(80E00004): LDR R0, SP, 4H |
| 00CD | v(81E00008): LDR R1, SP, 8H |
| 00CE | w(F7FFFF91): BL -111 [0060H] |
| IF res = 0 THENx F := ThisFile(name)y ELSEz Fa := NIL ENDb ; |
| 00CF | x .FIXUP D |
| 00CF | x(8D00001F): LDR SB, MT, MOD0 [Modules] |
| 00D0 | x(80D00028): LDR R0, SB, 28H [data] |
| 00D1 | x(E9000005): BNE 5 [00D7H] |
| 00D2 | y(80E00004): LDR R0, SP, 4H |
| 00D3 | y(81E00008): LDR R1, SP, 8H |
| 00D4 | z(F7FFFF2B): BL -213 [0000H] |
| 00D5 | z(A0E000B4): STR R0, SP, B4H |
| 00D6 | a(E7000002): B 2 [00D9H] |
| 00D7 | b(40000000): MOV R0, R0, 0H |
| 00D8 | b(A0E000B4): STR R0, SP, B4H |
| IF F # NIL THENc |
| 00D9 | c(80E000B4): LDR R0, SP, B4H |
| 00DA | c(E100007A): BEQ 122 [0155H] |
| Files.Set(R,d F,e 0)f;g Files.ReadString(R,h name1)i;j Files.ReadInt(R,k key)l;m Files.Read(R,n ch)o;p |
| 00DB | d(40E800B8): ADD R0, SP, B8H |
| 00DC | d .FIXUP D |
| 00DC | d(8D10000D): LDR SB, MT, MOD1 [Files] |
| 00DD | d(41D80001): ADD R1, SB, VAR1 |
| 00DE | e(82E000B4): LDR R2, SP, B4H |
| 00DF | f(43000000): MOV R3, R0, 0H |
| 00E0 | g .FIXUP P |
| 00E0 | g(F710B09E): BL MOD1 [Files] PROC11 |
| 00E1 | h(40E800B8): ADD R0, SP, B8H |
| 00E2 | h .FIXUP D |
| 00E2 | h(8D100006): LDR SB, MT, MOD1 [Files] |
| 00E3 | h(41D80001): ADD R1, SB, VAR1 |
| 00E4 | i(42E80074): ADD R2, SP, 74H |
| 00E5 | i(43000020): MOV R3, R0, 20H |
| 00E6 | j .FIXUP P |
| 00E6 | j(F7114006): BL MOD1 [Files] PROC20 |
| 00E7 | k(40E800B8): ADD R0, SP, B8H |
| 00E8 | k .FIXUP D |
| 00E8 | k(8D100006): LDR SB, MT, MOD1 [Files] |
| 00E9 | k(41D80001): ADD R1, SB, VAR1 |
| 00EA | l(42E80020): ADD R2, SP, 20H |
| 00EB | m .FIXUP P |
| 00EB | m(F7111005): BL MOD1 [Files] PROC17 |
| 00EC | n(40E800B8): ADD R0, SP, B8H |
| 00ED | n .FIXUP D |
| 00ED | n(8D100005): LDR SB, MT, MOD1 [Files] |
| 00EE | n(41D80001): ADD R1, SB, VAR1 |
| 00EF | o(42E80044): ADD R2, SP, 44H |
| 00F0 | p .FIXUP P |
| 00F0 | p(F7110005): BL MOD1 [Files] PROC16 |
| Files.ReadInt(R,q size)r;s importing := name1;t |
| 00F1 | q(40E800B8): ADD R0, SP, B8H |
| 00F2 | q .FIXUP D |
| 00F2 | q(8D100005): LDR SB, MT, MOD1 [Files] |
| 00F3 | q(41D80001): ADD R1, SB, VAR1 |
| 00F4 | r(42E80030): ADD R2, SP, 30H |
| 00F5 | s .FIXUP P |
| 00F5 | s(F7111005): BL MOD1 [Files] PROC17 |
| 00F6 | t .FIXUP D |
| 00F6 | t(8D000004): LDR SB, MT, MOD0 [Modules] |
| 00F7 | t(40D8002C): ADD R0, SB, 2CH [data] |
| 00F8 | t(41E80074): ADD R1, SP, 74H |
| 00F9 | t(42000008): MOV R2, R0, 8H |
| 00FA | t(83100000): LDR R3, R1, 0H |
| 00FB | t(41180004): ADD R1, R1, 4H |
| 00FC | t(A3000000): STR R3, R0, 0H |
| 00FD | t(40080004): ADD R0, R0, 4H |
| 00FE | t(42290001): SUB R2, R2, 1H |
| 00FF | t(E9FFFFFA): BNE -6 [00FAH] |
| IF ch = versionkey THENu |
| 0100 | u(90E00044): LDR R0, SP, 44H |
| 0101 | u(40090001): SUB R0, R0, 1H |
| 0102 | u(E900004D): BNE 77 [0150H] |
| Files.ReadString(R,v impname)w;x (*imports*) |
| 0103 | v(40E800B8): ADD R0, SP, B8H |
| 0104 | v .FIXUP D |
| 0104 | v(8D10000E): LDR SB, MT, MOD1 [Files] |
| 0105 | v(41D80001): ADD R1, SB, VAR1 |
| 0106 | w(42E80094): ADD R2, SP, 94H |
| 0107 | w(43000020): MOV R3, R0, 20H |
| 0108 | x .FIXUP P |
| 0108 | x(F7114013): BL MOD1 [Files] PROC20 |
| WHILE (impname[0] # 0X)y & (zres = 0)a DOb |
| 0109 | y(90E00094): LDR R0, SP, 94H |
| 010A | z(E1000044): BEQ 68 [014FH] |
| 010B | a .FIXUP D |
| 010B | a(8D000007): LDR SB, MT, MOD0 [Modules] |
| 010C | a(80D00028): LDR R0, SB, 28H [data] |
| 010D | b(E9000041): BNE 65 [014FH] |
| Files.ReadInt(R,c impkey)d;e |
| 010E | c(40E800B8): ADD R0, SP, B8H |
| 010F | c .FIXUP D |
| 010F | c(8D100004): LDR SB, MT, MOD1 [Files] |
| 0110 | c(41D80001): ADD R1, SB, VAR1 |
| 0111 | d(42E80024): ADD R2, SP, 24H |
| 0112 | e .FIXUP P |
| 0112 | e(F711100A): BL MOD1 [Files] PROC17 |
| Load(impname,f impmod)g;h import[nofimps]i := impmod;j importing := name1;k |
| 0113 | f(40E80094): ADD R0, SP, 94H |
| 0114 | f(41000020): MOV R1, R0, 20H |
| 0115 | g(42E80014): ADD R2, SP, 14H |
| 0116 | h(F7FFFF94): BL -108 [00ABH] |
| 0117 | i(80E0002C): LDR R0, SP, 2CH |
| 0118 | i(41090010): SUB R1, R0, 10H |
| 0119 | i(DA0A871C): BLCC MT [trap=1, pos=2695] |
| 011A | i(40010002): LSL R0, R0, 2H |
| 011B | i(00E80000): ADD R0, SP, R0 |
| 011C | j(81E00014): LDR R1, SP, 14H |
| 011D | j(A10000D0): STR R1, R0, D0H |
| 011E | k .FIXUP D |
| 011E | k(8D00000F): LDR SB, MT, MOD0 [Modules] |
| 011F | k(40D8002C): ADD R0, SB, 2CH [data] |
| 0120 | k(41E80074): ADD R1, SP, 74H |
| 0121 | k(42000008): MOV R2, R0, 8H |
| 0122 | k(83100000): LDR R3, R1, 0H |
| 0123 | k(41180004): ADD R1, R1, 4H |
| 0124 | k(A3000000): STR R3, R0, 0H |
| 0125 | k(40080004): ADD R0, R0, 4H |
| 0126 | k(42290001): SUB R2, R2, 1H |
| 0127 | k(E9FFFFFA): BNE -6 [0122H] |
| IF res = 0 THENl |
| 0128 | l(80D00028): LDR R0, SB, 28H |
| 0129 | l(E900001E): BNE 30 [0148H] |
| IF impmod.keym = impkey THENn INC(impmod.refcnto);p INC(nofimps) |
| 012A | m(80E00014): LDR R0, SP, 14H |
| 012B | m(D10ADE4C): BLEQ MT [trap=4, pos=2782] |
| 012C | n(80000024): LDR R0, R0, 24H |
| 012D | n(81E00024): LDR R1, SP, 24H |
| 012E | n(00090001): SUB R0, R0, R1 |
| 012F | n(E900000A): BNE 10 [013AH] |
| 0130 | o(80E00014): LDR R0, SP, 14H |
| 0131 | o(D10AFE4C): BLEQ MT [trap=4, pos=2814] |
| 0132 | p(40080030): ADD R0, R0, 30H |
| 0133 | p(81000000): LDR R1, R0, 0H |
| 0134 | p(41180001): ADD R1, R1, 1H |
| 0135 | p(A1000000): STR R1, R0, 0H |
| ELSEq errorr(3,s name1)t;u imported := impname |
| 0136 | q(80E0002C): LDR R0, SP, 2CH |
| 0137 | q(40080001): ADD R0, R0, 1H |
| 0138 | q(A0E0002C): STR R0, SP, 2CH |
| 0139 | r(E700000E): B 14 [0148H] |
| 013A | s(40000003): MOV R0, R0, 3H |
| 013B | t(41E80074): ADD R1, SP, 74H |
| 013C | t(42000020): MOV R2, R0, 20H |
| 013D | u(F7FFFF08): BL -248 [0046H] |
| ENDv |
| 013E | v .FIXUP D |
| 013E | v(8D000020): LDR SB, MT, MOD0 [Modules] |
| 013F | v(40D8004C): ADD R0, SB, 4CH [data] |
| 0140 | v(41E80094): ADD R1, SP, 94H |
| 0141 | v(42000008): MOV R2, R0, 8H |
| 0142 | v(83100000): LDR R3, R1, 0H |
| 0143 | v(41180004): ADD R1, R1, 4H |
| 0144 | v(A3000000): STR R3, R0, 0H |
| 0145 | v(40080004): ADD R0, R0, 4H |
| 0146 | v(42290001): SUB R2, R2, 1H |
| 0147 | v(E9FFFFFA): BNE -6 [0142H] |
| END ; |
| Files.ReadString(R,w impname)x |
| 0148 | w(40E800B8): ADD R0, SP, B8H |
| 0149 | w .FIXUP D |
| 0149 | w(8D10000B): LDR SB, MT, MOD1 [Files] |
| 014A | w(41D80001): ADD R1, SB, VAR1 |
| 014B | x(42E80094): ADD R2, SP, 94H |
| 014C | x(43000020): MOV R3, R0, 20H |
| ENDy |
| 014D | y .FIXUP P |
| 014D | y(F711403B): BL MOD1 [Files] PROC20 |
| 014E | y(E7FFFFBA): B -70 [0109H] |
| ELSE errorz(2,a name1)b |
| 014F | z(E7000004): B 4 [0154H] |
| 0150 | a(40000002): MOV R0, R0, 2H |
| 0151 | b(41E80074): ADD R1, SP, 74H |
| 0152 | b(42000020): MOV R2, R0, 20H |
| ENDc |
| 0153 | c(F7FFFEF2): BL -270 [0046H] |
| ELSE errord(1,e name)f |
| 0154 | d(E7000004): B 4 [0159H] |
| 0155 | e(40000001): MOV R0, R0, 1H |
| 0156 | f(81E00004): LDR R1, SP, 4H |
| 0157 | f(82E00008): LDR R2, SP, 8H |
| ENDg ; |
| 0158 | g(F7FFFEED): BL -275 [0046H] |
| IF res = 0 THENh (*search for a hole in the list allocate and link*) |
| 0159 | h .FIXUP D |
| 0159 | h(8D000010): LDR SB, MT, MOD0 [Modules] |
| 015A | h(80D00028): LDR R0, SB, 28H [data] |
| 015B | h(E9000047): BNE 71 [01A3H] |
| INC(size, DescSize);i mod := root;j |
| 015C | i(80E00030): LDR R0, SP, 30H |
| 015D | i(40080050): ADD R0, R0, 50H |
| 015E | i(A0E00030): STR R0, SP, 30H |
| 015F | j .FIXUP D |
| 015F | j(8D000006): LDR SB, MT, MOD0 [Modules] |
| 0160 | j(80D00018): LDR R0, SB, 18H [data] |
| 0161 | j(A0E00010): STR R0, SP, 10H |
| WHILE (mod # NIL)k & ~l((mod.namem[0] = 0X)n & (omod.sizep >= size)q) DOr mod := mod.nexts ENDt ; |
| 0162 | k(80E00010): LDR R0, SP, 10H |
| 0163 | l(E100000F): BEQ 15 [0173H] |
| 0164 | m(80E00010): LDR R0, SP, 10H |
| 0165 | m(D10C8B4C): BLEQ MT [trap=4, pos=3211] |
| 0166 | n(90000000): LDR R0, R0, 0H |
| 0167 | o(E9000006): BNE 6 [016EH] |
| 0168 | p(80E00010): LDR R0, SP, 10H |
| 0169 | p(D10CA04C): BLEQ MT [trap=4, pos=3232] |
| 016A | q(8000002C): LDR R0, R0, 2CH |
| 016B | q(81E00030): LDR R1, SP, 30H |
| 016C | q(00090001): SUB R0, R0, R1 |
| 016D | r(ED000005): BGE 5 [0173H] |
| 016E | s(80E00010): LDR R0, SP, 10H |
| 016F | s(D10CBD4C): BLEQ MT [trap=4, pos=3261] |
| 0170 | t(80000020): LDR R0, R0, 20H |
| 0171 | t(A0E00010): STR R0, SP, 10H |
| 0172 | t(E7FFFFEF): B -17 [0162H] |
| IF mod = NIL THENu (*no large enough hole was found*) |
| 0173 | u(80E00010): LDR R0, SP, 10H |
| 0174 | u(E900002C): BNE 44 [01A1H] |
| IF AllocPtr + size <v limit THENw (*allocate*) |
| 0175 | v .FIXUP D |
| 0175 | v(8D000016): LDR SB, MT, MOD0 [Modules] |
| 0176 | v(80D00024): LDR R0, SB, 24H [data] |
| 0177 | v(81E00030): LDR R1, SP, 30H |
| 0178 | v(00080001): ADD R0, R0, R1 |
| 0179 | w(81D0006C): LDR R1, SB, 6CH |
| 017A | w(00090001): SUB R0, R0, R1 |
| 017B | w(ED000020): BGE 32 [019CH] |
| p := AllocPtr;x mod := SYSTEM.VAL(Module, p);y |
| 017C | x .FIXUP D |
| 017C | x(8D000007): LDR SB, MT, MOD0 [Modules] |
| 017D | x(80D00024): LDR R0, SB, 24H [data] |
| 017E | x(A0E00034): STR R0, SP, 34H |
| 017F | y(80E00034): LDR R0, SP, 34H |
| 0180 | y(A0E00010): STR R0, SP, 10H |
| AllocPtr := (p + size +z 100H)a DIV 20H *b 20H;c mod.sized := AllocPtr - p;e mod.numf := root.numg + 1;h |
| 0181 | z(80E00034): LDR R0, SP, 34H |
| 0182 | z(81E00030): LDR R1, SP, 30H |
| 0183 | z(00080001): ADD R0, R0, R1 |
| 0184 | a(40080100): ADD R0, R0, 100H |
| 0185 | b(40020005): ASR R0, R0, 5H |
| 0186 | c(40010005): LSL R0, R0, 5H |
| 0187 | c(A0D00024): STR R0, SB, 24H |
| 0188 | d(80E00010): LDR R0, SP, 10H |
| 0189 | d(D10DB24C): BLEQ MT [trap=4, pos=3506] |
| 018A | e(81D00024): LDR R1, SB, 24H |
| 018B | e(82E00034): LDR R2, SP, 34H |
| 018C | e(01190002): SUB R1, R1, R2 |
| 018D | e(A100002C): STR R1, R0, 2CH |
| 018E | f(80E00010): LDR R0, SP, 10H |
| 018F | f(D10DCB4C): BLEQ MT [trap=4, pos=3531] |
| 0190 | g(81D00018): LDR R1, SB, 18H |
| 0191 | g(D10DD74C): BLEQ MT [trap=4, pos=3543] |
| 0192 | h(81100028): LDR R1, R1, 28H |
| 0193 | h(41180001): ADD R1, R1, 1H |
| 0194 | h(A1000028): STR R1, R0, 28H |
| mod.nexti := root;j root := mod |
| 0195 | i(80E00010): LDR R0, SP, 10H |
| 0196 | i(D10DF14C): BLEQ MT [trap=4, pos=3569] |
| 0197 | j(81D00018): LDR R1, SB, 18H |
| 0198 | j(A1000020): STR R1, R0, 20H |
| ELSEk errorl(7,m name1)n |
| 0199 | k(80E00010): LDR R0, SP, 10H |
| 019A | k(A0D00018): STR R0, SB, 18H |
| 019B | l(E7000004): B 4 [01A0H] |
| 019C | m(40000007): MOV R0, R0, 7H |
| 019D | n(41E80074): ADD R1, SP, 74H |
| 019E | n(42000020): MOV R2, R0, 20H |
| ENDo |
| 019F | o(F7FFFEA6): BL -346 [0046H] |
| ELSE (*fill hole*) pp := SYSTEM.VAL(INTEGER, mod) |
| 01A0 | p(E7000002): B 2 [01A3H] |
| ENDq |
| 01A1 | q(80E00010): LDR R0, SP, 10H |
| 01A2 | q(A0E00034): STR R0, SP, 34H |
| END ; |
| IF res = 0 THENr (*read file*) |
| 01A3 | r .FIXUP D |
| 01A3 | r(8D000027): LDR SB, MT, MOD0 [Modules] |
| 01A4 | r(80D00028): LDR R0, SB, 28H [data] |
| 01A5 | r(E900013E): BNE 318 [02E4H] |
| INC(p, DescSize);s (*allocate descriptor*) |
| 01A6 | s(80E00034): LDR R0, SP, 34H |
| 01A7 | s(40080050): ADD R0, R0, 50H |
| 01A8 | s(A0E00034): STR R0, SP, 34H |
| mod.namet := name;u mod.keyv := key;w mod.refcntx := 0;y |
| 01A9 | t(80E00010): LDR R0, SP, 10H |
| 01AA | t(D10EEC4C): BLEQ MT [trap=4, pos=3820] |
| 01AB | u(81E00004): LDR R1, SP, 4H |
| 01AC | u(82E00008): LDR R2, SP, 8H |
| 01AD | u(E100000B): BEQ 11 [01B9H] |
| 01AE | u(42280003): ADD R2, R2, 3H |
| 01AF | u(42220002): ASR R2, R2, 2H |
| 01B0 | u(43000008): MOV R3, R0, 8H |
| 01B1 | u(03290003): SUB R3, R2, R3 |
| 01B2 | u(DE0EF53C): BLGT MT [trap=3, pos=3829] |
| 01B3 | u(83100000): LDR R3, R1, 0H |
| 01B4 | u(41180004): ADD R1, R1, 4H |
| 01B5 | u(A3000000): STR R3, R0, 0H |
| 01B6 | u(40080004): ADD R0, R0, 4H |
| 01B7 | u(42290001): SUB R2, R2, 1H |
| 01B8 | u(E9FFFFFA): BNE -6 [01B3H] |
| 01B9 | v(80E00010): LDR R0, SP, 10H |
| 01BA | v(D10EFD4C): BLEQ MT [trap=4, pos=3837] |
| 01BB | w(81E00020): LDR R1, SP, 20H |
| 01BC | w(A1000024): STR R1, R0, 24H |
| 01BD | x(80E00010): LDR R0, SP, 10H |
| 01BE | x(D10F104C): BLEQ MT [trap=4, pos=3856] |
| 01BF | y(41000000): MOV R1, R0, 0H |
| 01C0 | y(A1000030): STR R1, R0, 30H |
| mod.dataz := p;a (*data*) |
| 01C1 | z(80E00010): LDR R0, SP, 10H |
| 01C2 | z(D10F274C): BLEQ MT [trap=4, pos=3879] |
| 01C3 | a(81E00034): LDR R1, SP, 34H |
| 01C4 | a(A1000034): STR R1, R0, 34H |
| SYSTEM.PUT(mod.numb * 4 +c MTOrg,d p);e (*module table entry*) |
| 01C5 | b(80E00010): LDR R0, SP, 10H |
| 01C6 | b(D10F524C): BLEQ MT [trap=4, pos=3922] |
| 01C7 | c(80000028): LDR R0, R0, 28H |
| 01C8 | c(40010002): LSL R0, R0, 2H |
| 01C9 | d .FIXUP D |
| 01C9 | d(8D000026): LDR SB, MT, MOD0 [Modules] |
| 01CA | d(81D00020): LDR R1, SB, 20H [data] |
| 01CB | d(00080001): ADD R0, R0, R1 |
| 01CC | e(81E00034): LDR R1, SP, 34H |
| 01CD | e(A1000000): STR R1, R0, 0H |
| Files.ReadInt(R,f n)g;h |
| 01CE | f(40E800B8): ADD R0, SP, B8H |
| 01CF | f .FIXUP D |
| 01CF | f(8D100006): LDR SB, MT, MOD1 [Files] |
| 01D0 | f(41D80001): ADD R1, SB, VAR1 |
| 01D1 | g(42E8001C): ADD R2, SP, 1CH |
| 01D2 | h .FIXUP P |
| 01D2 | h(F7111085): BL MOD1 [Files] PROC17 |
| WHILE n > 0 DOi Files.ReadInt(R,j w)k;l SYSTEM.PUT(p, w);m INC(p, 4);n DEC(n, 4) ENDo ; (*type descriptors*) |
| 01D3 | i(80E0001C): LDR R0, SP, 1CH |
| 01D4 | i(40090000): SUB R0, R0, 0H |
| 01D5 | i(E600000F): BLE 15 [01E5H] |
| 01D6 | j(40E800B8): ADD R0, SP, B8H |
| 01D7 | j .FIXUP D |
| 01D7 | j(8D100008): LDR SB, MT, MOD1 [Files] |
| 01D8 | j(41D80001): ADD R1, SB, VAR1 |
| 01D9 | k(42E80040): ADD R2, SP, 40H |
| 01DA | l .FIXUP P |
| 01DA | l(F7111008): BL MOD1 [Files] PROC17 |
| 01DB | m(80E00034): LDR R0, SP, 34H |
| 01DC | m(81E00040): LDR R1, SP, 40H |
| 01DD | m(A1000000): STR R1, R0, 0H |
| 01DE | n(80E00034): LDR R0, SP, 34H |
| 01DF | n(40080004): ADD R0, R0, 4H |
| 01E0 | n(A0E00034): STR R0, SP, 34H |
| 01E1 | o(80E0001C): LDR R0, SP, 1CH |
| 01E2 | o(40090004): SUB R0, R0, 4H |
| 01E3 | o(A0E0001C): STR R0, SP, 1CH |
| 01E4 | o(E7FFFFEE): B -18 [01D3H] |
| Files.ReadInt(R,p n)q;r |
| 01E5 | p(40E800B8): ADD R0, SP, B8H |
| 01E6 | p .FIXUP D |
| 01E6 | p(8D10000F): LDR SB, MT, MOD1 [Files] |
| 01E7 | p(41D80001): ADD R1, SB, VAR1 |
| 01E8 | q(42E8001C): ADD R2, SP, 1CH |
| 01E9 | r .FIXUP P |
| 01E9 | r(F711100F): BL MOD1 [Files] PROC17 |
| WHILE n > 0 DOs SYSTEM.PUT(p, 0);t INC(p, 4);u DEC(n, 4) ENDv ; (*variable space*) |
| 01EA | s(80E0001C): LDR R0, SP, 1CH |
| 01EB | s(40090000): SUB R0, R0, 0H |
| 01EC | s(E600000A): BLE 10 [01F7H] |
| 01ED | t(80E00034): LDR R0, SP, 34H |
| 01EE | t(41000000): MOV R1, R0, 0H |
| 01EF | t(A1000000): STR R1, R0, 0H |
| 01F0 | u(80E00034): LDR R0, SP, 34H |
| 01F1 | u(40080004): ADD R0, R0, 4H |
| 01F2 | u(A0E00034): STR R0, SP, 34H |
| 01F3 | v(80E0001C): LDR R0, SP, 1CH |
| 01F4 | v(40090004): SUB R0, R0, 4H |
| 01F5 | v(A0E0001C): STR R0, SP, 1CH |
| 01F6 | v(E7FFFFF3): B -13 [01EAH] |
| Files.ReadInt(R,w n)x;y |
| 01F7 | w(40E800B8): ADD R0, SP, B8H |
| 01F8 | w .FIXUP D |
| 01F8 | w(8D100012): LDR SB, MT, MOD1 [Files] |
| 01F9 | w(41D80001): ADD R1, SB, VAR1 |
| 01FA | x(42E8001C): ADD R2, SP, 1CH |
| 01FB | y .FIXUP P |
| 01FB | y(F7111012): BL MOD1 [Files] PROC17 |
| WHILE n > 0 DOz Files.Read(R,a ch)b;c SYSTEM.PUT(p, ch);d INC(p);e DEC(n) ENDf ; (*strings*) |
| 01FC | z(80E0001C): LDR R0, SP, 1CH |
| 01FD | z(40090000): SUB R0, R0, 0H |
| 01FE | z(E600000F): BLE 15 [020EH] |
| 01FF | a(40E800B8): ADD R0, SP, B8H |
| 0200 | a .FIXUP D |
| 0200 | a(8D100008): LDR SB, MT, MOD1 [Files] |
| 0201 | a(41D80001): ADD R1, SB, VAR1 |
| 0202 | b(42E80044): ADD R2, SP, 44H |
| 0203 | c .FIXUP P |
| 0203 | c(F7110008): BL MOD1 [Files] PROC16 |
| 0204 | d(80E00034): LDR R0, SP, 34H |
| 0205 | d(91E00044): LDR R1, SP, 44H |
| 0206 | d(B1000000): STR R1, R0, 0H |
| 0207 | e(80E00034): LDR R0, SP, 34H |
| 0208 | e(40080001): ADD R0, R0, 1H |
| 0209 | e(A0E00034): STR R0, SP, 34H |
| 020A | f(80E0001C): LDR R0, SP, 1CH |
| 020B | f(40090001): SUB R0, R0, 1H |
| 020C | f(A0E0001C): STR R0, SP, 1CH |
| 020D | f(E7FFFFEE): B -18 [01FCH] |
| mod.codeg := p;h (*program*) |
| 020E | g(80E00010): LDR R0, SP, 10H |
| 020F | g(D1110A4C): BLEQ MT [trap=4, pos=4362] |
| 0210 | h(81E00034): LDR R1, SP, 34H |
| 0211 | h(A1000038): STR R1, R0, 38H |
| Files.ReadInt(R,i n)j;k |
| 0212 | i(40E800B8): ADD R0, SP, B8H |
| 0213 | i .FIXUP D |
| 0213 | i(8D100013): LDR SB, MT, MOD1 [Files] |
| 0214 | i(41D80001): ADD R1, SB, VAR1 |
| 0215 | j(42E8001C): ADD R2, SP, 1CH |
| 0216 | k .FIXUP P |
| 0216 | k(F7111013): BL MOD1 [Files] PROC17 |
| WHILE n > 0 DOl Files.ReadInt(R,m w)n;o SYSTEM.PUT(p, w);p INC(p, 4);q DEC(n) ENDr ; (*program code*) |
| 0217 | l(80E0001C): LDR R0, SP, 1CH |
| 0218 | l(40090000): SUB R0, R0, 0H |
| 0219 | l(E600000F): BLE 15 [0229H] |
| 021A | m(40E800B8): ADD R0, SP, B8H |
| 021B | m .FIXUP D |
| 021B | m(8D100008): LDR SB, MT, MOD1 [Files] |
| 021C | m(41D80001): ADD R1, SB, VAR1 |
| 021D | n(42E80040): ADD R2, SP, 40H |
| 021E | o .FIXUP P |
| 021E | o(F7111008): BL MOD1 [Files] PROC17 |
| 021F | p(80E00034): LDR R0, SP, 34H |
| 0220 | p(81E00040): LDR R1, SP, 40H |
| 0221 | p(A1000000): STR R1, R0, 0H |
| 0222 | q(80E00034): LDR R0, SP, 34H |
| 0223 | q(40080004): ADD R0, R0, 4H |
| 0224 | q(A0E00034): STR R0, SP, 34H |
| 0225 | r(80E0001C): LDR R0, SP, 1CH |
| 0226 | r(40090001): SUB R0, R0, 1H |
| 0227 | r(A0E0001C): STR R0, SP, 1CH |
| 0228 | r(E7FFFFEE): B -18 [0217H] |
| mod.imps := p;t (*copy imports*) |
| 0229 | s(80E00010): LDR R0, SP, 10H |
| 022A | s(D111B24C): BLEQ MT [trap=4, pos=4530] |
| 022B | t(81E00034): LDR R1, SP, 34H |
| 022C | t(A100003C): STR R1, R0, 3CH |
| i := 0;u |
| 022D | u(40000000): MOV R0, R0, 0H |
| 022E | u(A0E00018): STR R0, SP, 18H |
| WHILE i < nofimps DOv |
| 022F | v(80E00018): LDR R0, SP, 18H |
| 0230 | v(81E0002C): LDR R1, SP, 2CH |
| 0231 | v(00090001): SUB R0, R0, R1 |
| 0232 | v(ED00000F): BGE 15 [0242H] |
| SYSTEM.PUT(p, import[i]w);x INC(p, 4);y INC(i) |
| 0233 | w(80E00018): LDR R0, SP, 18H |
| 0234 | w(41090010): SUB R1, R0, 10H |
| 0235 | w(DA12191C): BLCC MT [trap=1, pos=4633] |
| 0236 | w(40010002): LSL R0, R0, 2H |
| 0237 | w(00E80000): ADD R0, SP, R0 |
| 0238 | x(81E00034): LDR R1, SP, 34H |
| 0239 | x(800000D0): LDR R0, R0, D0H |
| 023A | x(A0100000): STR R0, R1, 0H |
| 023B | y(80E00034): LDR R0, SP, 34H |
| 023C | y(40080004): ADD R0, R0, 4H |
| 023D | y(A0E00034): STR R0, SP, 34H |
| ENDz ; |
| 023E | z(80E00018): LDR R0, SP, 18H |
| 023F | z(40080001): ADD R0, R0, 1H |
| 0240 | z(A0E00018): STR R0, SP, 18H |
| 0241 | z(E7FFFFED): B -19 [022FH] |
| mod.cmda := p;b (*commands*) Files.Read(R,c ch)d;e |
| 0242 | a(80E00010): LDR R0, SP, 10H |
| 0243 | a(D1124B4C): BLEQ MT [trap=4, pos=4683] |
| 0244 | b(81E00034): LDR R1, SP, 34H |
| 0245 | b(A1000040): STR R1, R0, 40H |
| 0246 | c(40E800B8): ADD R0, SP, B8H |
| 0247 | c .FIXUP D |
| 0247 | c(8D10002C): LDR SB, MT, MOD1 [Files] |
| 0248 | c(41D80001): ADD R1, SB, VAR1 |
| 0249 | d(42E80044): ADD R2, SP, 44H |
| 024A | e .FIXUP P |
| 024A | e(F711002C): BL MOD1 [Files] PROC16 |
| WHILE ch # 0X DOf |
| 024B | f(90E00044): LDR R0, SP, 44H |
| 024C | f(E1000028): BEQ 40 [0275H] |
| REPEAT SYSTEM.PUT(p, ch);g INC(p);h Files.Read(R,i ch)j UNTILk ch = 0X;l |
| 024D | g(80E00034): LDR R0, SP, 34H |
| 024E | g(91E00044): LDR R1, SP, 44H |
| 024F | g(B1000000): STR R1, R0, 0H |
| 0250 | h(80E00034): LDR R0, SP, 34H |
| 0251 | h(40080001): ADD R0, R0, 1H |
| 0252 | h(A0E00034): STR R0, SP, 34H |
| 0253 | i(40E800B8): ADD R0, SP, B8H |
| 0254 | i .FIXUP D |
| 0254 | i(8D10000D): LDR SB, MT, MOD1 [Files] |
| 0255 | i(41D80001): ADD R1, SB, VAR1 |
| 0256 | j(42E80044): ADD R2, SP, 44H |
| 0257 | k .FIXUP P |
| 0257 | k(F711000D): BL MOD1 [Files] PROC16 |
| 0258 | l(90E00044): LDR R0, SP, 44H |
| 0259 | l(E9FFFFF3): BNE -13 [024DH] |
| REPEAT SYSTEM.PUT(p, 0X);m INC(p) UNTILn p MOD 4 =o 0;p |
| 025A | m(80E00034): LDR R0, SP, 34H |
| 025B | m(41000000): MOV R1, R0, 0H |
| 025C | m(B1000000): STR R1, R0, 0H |
| 025D | n(80E00034): LDR R0, SP, 34H |
| 025E | n(40080001): ADD R0, R0, 1H |
| 025F | n(A0E00034): STR R0, SP, 34H |
| 0260 | o(80E00034): LDR R0, SP, 34H |
| 0261 | o(40040003): AND R0, R0, 3H |
| 0262 | p(40090000): SUB R0, R0, 0H |
| 0263 | p(E9FFFFF6): BNE -10 [025AH] |
| Files.ReadInt(R,q n)r;s SYSTEM.PUT(p, n);t INC(p, 4);u Files.Read(R,v ch)w |
| 0264 | q(40E800B8): ADD R0, SP, B8H |
| 0265 | q .FIXUP D |
| 0265 | q(8D100011): LDR SB, MT, MOD1 [Files] |
| 0266 | q(41D80001): ADD R1, SB, VAR1 |
| 0267 | r(42E8001C): ADD R2, SP, 1CH |
| 0268 | s .FIXUP P |
| 0268 | s(F7111011): BL MOD1 [Files] PROC17 |
| 0269 | t(80E00034): LDR R0, SP, 34H |
| 026A | t(81E0001C): LDR R1, SP, 1CH |
| 026B | t(A1000000): STR R1, R0, 0H |
| 026C | u(80E00034): LDR R0, SP, 34H |
| 026D | u(40080004): ADD R0, R0, 4H |
| 026E | u(A0E00034): STR R0, SP, 34H |
| 026F | v(40E800B8): ADD R0, SP, B8H |
| 0270 | v .FIXUP D |
| 0270 | v(8D10000B): LDR SB, MT, MOD1 [Files] |
| 0271 | v(41D80001): ADD R1, SB, VAR1 |
| 0272 | w(42E80044): ADD R2, SP, 44H |
| ENDx ; |
| 0273 | x .FIXUP P |
| 0273 | x(F711000B): BL MOD1 [Files] PROC16 |
| 0274 | x(E7FFFFD6): B -42 [024BH] |
| REPEAT SYSTEM.PUT(p, 0X);y INC(p) UNTILz p MOD 4 =a 0;b |
| 0275 | y(80E00034): LDR R0, SP, 34H |
| 0276 | y(41000000): MOV R1, R0, 0H |
| 0277 | y(B1000000): STR R1, R0, 0H |
| 0278 | z(80E00034): LDR R0, SP, 34H |
| 0279 | z(40080001): ADD R0, R0, 1H |
| 027A | z(A0E00034): STR R0, SP, 34H |
| 027B | a(80E00034): LDR R0, SP, 34H |
| 027C | a(40040003): AND R0, R0, 3H |
| 027D | b(40090000): SUB R0, R0, 0H |
| 027E | b(E9FFFFF6): BNE -10 [0275H] |
| mod.entc := p;d (*entries*) |
| 027F | c(80E00010): LDR R0, SP, 10H |
| 0280 | c(D113BE4C): BLEQ MT [trap=4, pos=5054] |
| 0281 | d(81E00034): LDR R1, SP, 34H |
| 0282 | d(A1000044): STR R1, R0, 44H |
| Files.ReadInt(R,e n)f;g |
| 0283 | e(40E800B8): ADD R0, SP, B8H |
| 0284 | e .FIXUP D |
| 0284 | e(8D100014): LDR SB, MT, MOD1 [Files] |
| 0285 | e(41D80001): ADD R1, SB, VAR1 |
| 0286 | f(42E8001C): ADD R2, SP, 1CH |
| 0287 | g .FIXUP P |
| 0287 | g(F7111014): BL MOD1 [Files] PROC17 |
| WHILE n > 0 DOh Files.ReadInt(R,i w)j;k SYSTEM.PUT(p, w);l INC(p, 4);m DEC(n) ENDn ; |
| 0288 | h(80E0001C): LDR R0, SP, 1CH |
| 0289 | h(40090000): SUB R0, R0, 0H |
| 028A | h(E600000F): BLE 15 [029AH] |
| 028B | i(40E800B8): ADD R0, SP, B8H |
| 028C | i .FIXUP D |
| 028C | i(8D100008): LDR SB, MT, MOD1 [Files] |
| 028D | i(41D80001): ADD R1, SB, VAR1 |
| 028E | j(42E80040): ADD R2, SP, 40H |
| 028F | k .FIXUP P |
| 028F | k(F7111008): BL MOD1 [Files] PROC17 |
| 0290 | l(80E00034): LDR R0, SP, 34H |
| 0291 | l(81E00040): LDR R1, SP, 40H |
| 0292 | l(A1000000): STR R1, R0, 0H |
| 0293 | m(80E00034): LDR R0, SP, 34H |
| 0294 | m(40080004): ADD R0, R0, 4H |
| 0295 | m(A0E00034): STR R0, SP, 34H |
| 0296 | n(80E0001C): LDR R0, SP, 1CH |
| 0297 | n(40090001): SUB R0, R0, 1H |
| 0298 | n(A0E0001C): STR R0, SP, 1CH |
| 0299 | n(E7FFFFEE): B -18 [0288H] |
| mod.ptro := p;p (*pointer references*) |
| 029A | o(80E00010): LDR R0, SP, 10H |
| 029B | o(D114544C): BLEQ MT [trap=4, pos=5204] |
| 029C | p(81E00034): LDR R1, SP, 34H |
| 029D | p(A1000048): STR R1, R0, 48H |
| Files.ReadInt(R,q w)r;s |
| 029E | q(40E800B8): ADD R0, SP, B8H |
| 029F | q .FIXUP D |
| 029F | q(8D100013): LDR SB, MT, MOD1 [Files] |
| 02A0 | q(41D80001): ADD R1, SB, VAR1 |
| 02A1 | r(42E80040): ADD R2, SP, 40H |
| 02A2 | s .FIXUP P |
| 02A2 | s(F7111013): BL MOD1 [Files] PROC17 |
| WHILE w >= 0 DOt SYSTEM.PUT(p, mod.datau + w)v;w INC(p, 4);x Files.ReadInt(R,y w)z ENDa ; |
| 02A3 | t(80E00040): LDR R0, SP, 40H |
| 02A4 | t(40090000): SUB R0, R0, 0H |
| 02A5 | t(E5000010): BLT 16 [02B6H] |
| 02A6 | u(80E00010): LDR R0, SP, 10H |
| 02A7 | u(D114BE4C): BLEQ MT [trap=4, pos=5310] |
| 02A8 | v(80000034): LDR R0, R0, 34H |
| 02A9 | v(81E00040): LDR R1, SP, 40H |
| 02AA | v(00080001): ADD R0, R0, R1 |
| 02AB | w(81E00034): LDR R1, SP, 34H |
| 02AC | w(A0100000): STR R0, R1, 0H |
| 02AD | x(80E00034): LDR R0, SP, 34H |
| 02AE | x(40080004): ADD R0, R0, 4H |
| 02AF | x(A0E00034): STR R0, SP, 34H |
| 02B0 | y(40E800B8): ADD R0, SP, B8H |
| 02B1 | y .FIXUP D |
| 02B1 | y(8D100012): LDR SB, MT, MOD1 [Files] |
| 02B2 | y(41D80001): ADD R1, SB, VAR1 |
| 02B3 | z(42E80040): ADD R2, SP, 40H |
| 02B4 | a .FIXUP P |
| 02B4 | a(F7111012): BL MOD1 [Files] PROC17 |
| 02B5 | a(E7FFFFED): B -19 [02A3H] |
| SYSTEM.PUT(p, 0);b INC(p, 4);c |
| 02B6 | b(80E00034): LDR R0, SP, 34H |
| 02B7 | b(41000000): MOV R1, R0, 0H |
| 02B8 | b(A1000000): STR R1, R0, 0H |
| 02B9 | c(80E00034): LDR R0, SP, 34H |
| 02BA | c(40080004): ADD R0, R0, 4H |
| 02BB | c(A0E00034): STR R0, SP, 34H |
| Files.ReadInt(R,d fixorgP)e;f Files.ReadInt(R,g fixorgD)h;i Files.ReadInt(R,j fixorgT)k;l |
| 02BC | d(40E800B8): ADD R0, SP, B8H |
| 02BD | d .FIXUP D |
| 02BD | d(8D10000C): LDR SB, MT, MOD1 [Files] |
| 02BE | d(41D80001): ADD R1, SB, VAR1 |
| 02BF | e(42E8004C): ADD R2, SP, 4CH |
| 02C0 | f .FIXUP P |
| 02C0 | f(F711100C): BL MOD1 [Files] PROC17 |
| 02C1 | g(40E800B8): ADD R0, SP, B8H |
| 02C2 | g .FIXUP D |
| 02C2 | g(8D100005): LDR SB, MT, MOD1 [Files] |
| 02C3 | g(41D80001): ADD R1, SB, VAR1 |
| 02C4 | h(42E80050): ADD R2, SP, 50H |
| 02C5 | i .FIXUP P |
| 02C5 | i(F7111005): BL MOD1 [Files] PROC17 |
| 02C6 | j(40E800B8): ADD R0, SP, B8H |
| 02C7 | j .FIXUP D |
| 02C7 | j(8D100005): LDR SB, MT, MOD1 [Files] |
| 02C8 | j(41D80001): ADD R1, SB, VAR1 |
| 02C9 | k(42E80054): ADD R2, SP, 54H |
| 02CA | l .FIXUP P |
| 02CA | l(F7111005): BL MOD1 [Files] PROC17 |
| Files.ReadInt(R,m w)n;o body := SYSTEM.VAL(Command, mod.codep + w)q;r |
| 02CB | m(40E800B8): ADD R0, SP, B8H |
| 02CC | m .FIXUP D |
| 02CC | m(8D100005): LDR SB, MT, MOD1 [Files] |
| 02CD | m(41D80001): ADD R1, SB, VAR1 |
| 02CE | n(42E80040): ADD R2, SP, 40H |
| 02CF | o .FIXUP P |
| 02CF | o(F7111005): BL MOD1 [Files] PROC17 |
| 02D0 | p(80E00010): LDR R0, SP, 10H |
| 02D1 | p(D115A94C): BLEQ MT [trap=4, pos=5545] |
| 02D2 | q(80000038): LDR R0, R0, 38H |
| 02D3 | q(81E00040): LDR R1, SP, 40H |
| 02D4 | q(00080001): ADD R0, R0, R1 |
| 02D5 | r(A0E00048): STR R0, SP, 48H |
| Files.Read(R,s ch)t;u |
| 02D6 | s(40E800B8): ADD R0, SP, B8H |
| 02D7 | s .FIXUP D |
| 02D7 | s(8D10000B): LDR SB, MT, MOD1 [Files] |
| 02D8 | s(41D80001): ADD R1, SB, VAR1 |
| 02D9 | t(42E80044): ADD R2, SP, 44H |
| 02DA | u .FIXUP P |
| 02DA | u(F711000B): BL MOD1 [Files] PROC16 |
| IF ch # "O" THENv (*corrupted file*) mod := NIL;w error(4,x name)y ENDz |
| 02DB | v(90E00044): LDR R0, SP, 44H |
| 02DC | v(4009004F): SUB R0, R0, 4FH |
| 02DD | v(E1000006): BEQ 6 [02E4H] |
| 02DE | w(40000000): MOV R0, R0, 0H |
| 02DF | w(A0E00010): STR R0, SP, 10H |
| 02E0 | x(40000004): MOV R0, R0, 4H |
| 02E1 | y(81E00004): LDR R1, SP, 4H |
| 02E2 | y(82E00008): LDR R2, SP, 8H |
| 02E3 | z(F7FFFD62): BL -670 [0046H] |
| END ; |
| IF res = 0 THENa (*fixup of BL*) |
| 02E4 | a .FIXUP D |
| 02E4 | a(8D00000D): LDR SB, MT, MOD0 [Modules] |
| 02E5 | a(80D00028): LDR R0, SB, 28H [data] |
| 02E6 | a(E90000F5): BNE 245 [03DCH] |
| adr := mod.codeb + fixorgP*4;c |
| 02E7 | b(80E00010): LDR R0, SP, 10H |
| 02E8 | b(D116604C): BLEQ MT [trap=4, pos=5728] |
| 02E9 | c(81E0004C): LDR R1, SP, 4CH |
| 02EA | c(41110002): LSL R1, R1, 2H |
| 02EB | c(80000038): LDR R0, R0, 38H |
| 02EC | c(00080001): ADD R0, R0, R1 |
| 02ED | c(A0E0005C): STR R0, SP, 5CH |
| WHILE adr # mod.coded DOe |
| 02EE | d(80E00010): LDR R0, SP, 10H |
| 02EF | d(D1168A4C): BLEQ MT [trap=4, pos=5770] |
| 02F0 | e(81E0005C): LDR R1, SP, 5CH |
| 02F1 | e(80000038): LDR R0, R0, 38H |
| 02F2 | e(01190000): SUB R1, R1, R0 |
| 02F3 | e(E1000038): BEQ 56 [032CH] |
| SYSTEM.GET(adr, inst);f |
| 02F4 | f(80E0005C): LDR R0, SP, 5CH |
| 02F5 | f(80000000): LDR R0, R0, 0H |
| 02F6 | f(A0E00060): STR R0, SP, 60H |
| mno := inst DIV 100000H MODg 10H;h |
| 02F7 | g(80E00060): LDR R0, SP, 60H |
| 02F8 | g(40020014): ASR R0, R0, 14H |
| 02F9 | h(4004000F): AND R0, R0, FH |
| 02FA | h(A0E00028): STR R0, SP, 28H |
| pno := inst DIV 1000H MODi 100H;j |
| 02FB | i(80E00060): LDR R0, SP, 60H |
| 02FC | i(4002000C): ASR R0, R0, CH |
| 02FD | j(400400FF): AND R0, R0, FFH |
| 02FE | j(A0E00064): STR R0, SP, 64H |
| disp := inst MOD 1000H;k |
| 02FF | k(80E00060): LDR R0, SP, 60H |
| 0300 | k(40040FFF): AND R0, R0, FFFH |
| 0301 | k(A0E00058): STR R0, SP, 58H |
| SYSTEM.GET(mod.impl + (mno-1)m*4,n impmod);o |
| 0302 | l(80E00010): LDR R0, SP, 10H |
| 0303 | l(D117424C): BLEQ MT [trap=4, pos=5954] |
| 0304 | m(81E00028): LDR R1, SP, 28H |
| 0305 | m(41190001): SUB R1, R1, 1H |
| 0306 | n(41110002): LSL R1, R1, 2H |
| 0307 | n(8000003C): LDR R0, R0, 3CH |
| 0308 | n(00080001): ADD R0, R0, R1 |
| 0309 | o(80000000): LDR R0, R0, 0H |
| 030A | o(A0E00014): STR R0, SP, 14H |
| SYSTEM.GET(impmod.entp + pno*4,q dest);r dest := dest + impmod.codes;t |
| 030B | p(80E00014): LDR R0, SP, 14H |
| 030C | p(D117784C): BLEQ MT [trap=4, pos=6008] |
| 030D | q(81E00064): LDR R1, SP, 64H |
| 030E | q(41110002): LSL R1, R1, 2H |
| 030F | q(80000044): LDR R0, R0, 44H |
| 0310 | q(00080001): ADD R0, R0, R1 |
| 0311 | r(80000000): LDR R0, R0, 0H |
| 0312 | r(A0E0006C): STR R0, SP, 6CH |
| 0313 | s(80E00014): LDR R0, SP, 14H |
| 0314 | s(D117A34C): BLEQ MT [trap=4, pos=6051] |
| 0315 | t(81E0006C): LDR R1, SP, 6CH |
| 0316 | t(80000038): LDR R0, R0, 38H |
| 0317 | t(00180000): ADD R0, R1, R0 |
| 0318 | t(A0E0006C): STR R0, SP, 6CH |
| offset := (dest - adr -u 4)v DIV 4;w |
| 0319 | u(80E0006C): LDR R0, SP, 6CH |
| 031A | u(81E0005C): LDR R1, SP, 5CH |
| 031B | u(00090001): SUB R0, R0, R1 |
| 031C | v(40090004): SUB R0, R0, 4H |
| 031D | w(40020002): ASR R0, R0, 2H |
| 031E | w(A0E00070): STR R0, SP, 70H |
| SYSTEM.PUT(adr, (offset MOD 1000000H)x + 0F7000000H)y;z |
| 031F | x(80E00070): LDR R0, SP, 70H |
| 0320 | x(40010008): LSL R0, R0, 8H |
| 0321 | x(40030008): ROR R0, R0, 8H |
| 0322 | y(7100F700): MOV' R1, R0, FFFFF700H |
| 0323 | y(00080001): ADD R0, R0, R1 |
| 0324 | z(81E0005C): LDR R1, SP, 5CH |
| 0325 | z(A0100000): STR R0, R1, 0H |
| adr := adr - disp*4 |
| ENDa ; |
| 0326 | a(80E00058): LDR R0, SP, 58H |
| 0327 | a(40010002): LSL R0, R0, 2H |
| 0328 | a(81E0005C): LDR R1, SP, 5CH |
| 0329 | a(00190000): SUB R0, R1, R0 |
| 032A | a(A0E0005C): STR R0, SP, 5CH |
| 032B | a(E7FFFFC2): B -62 [02EEH] |
| (*fixup of LDR/STR/ADD*) |
| adr := mod.codeb + fixorgD*4;c |
| 032C | b(80E00010): LDR R0, SP, 10H |
| 032D | b(D118744C): BLEQ MT [trap=4, pos=6260] |
| 032E | c(81E00050): LDR R1, SP, 50H |
| 032F | c(41110002): LSL R1, R1, 2H |
| 0330 | c(80000038): LDR R0, R0, 38H |
| 0331 | c(00080001): ADD R0, R0, R1 |
| 0332 | c(A0E0005C): STR R0, SP, 5CH |
| WHILE adr # mod.coded DOe |
| 0333 | d(80E00010): LDR R0, SP, 10H |
| 0334 | d(D1189E4C): BLEQ MT [trap=4, pos=6302] |
| 0335 | e(81E0005C): LDR R1, SP, 5CH |
| 0336 | e(80000038): LDR R0, R0, 38H |
| 0337 | e(01190000): SUB R1, R1, R0 |
| 0338 | e(E100005B): BEQ 91 [0394H] |
| SYSTEM.GET(adr, inst);f |
| 0339 | f(80E0005C): LDR R0, SP, 5CH |
| 033A | f(80000000): LDR R0, R0, 0H |
| 033B | f(A0E00060): STR R0, SP, 60H |
| mno := inst DIV 100000H MODg 10H;h |
| 033C | g(80E00060): LDR R0, SP, 60H |
| 033D | g(40020014): ASR R0, R0, 14H |
| 033E | h(4004000F): AND R0, R0, FH |
| 033F | h(A0E00028): STR R0, SP, 28H |
| disp := inst MOD 1000H;i |
| 0340 | i(80E00060): LDR R0, SP, 60H |
| 0341 | i(40040FFF): AND R0, R0, FFFH |
| 0342 | i(A0E00058): STR R0, SP, 58H |
| IF mno = 0 THENj (*global*) |
| 0343 | j(80E00028): LDR R0, SP, 28H |
| 0344 | j(E900000D): BNE 13 [0352H] |
| SYSTEM.PUT(adr, (inst DIV 1000000H *k 10H +l MT)m * 100000H +n mod.numo * 4)p |
| 0345 | k(80E00060): LDR R0, SP, 60H |
| 0346 | k(40020018): ASR R0, R0, 18H |
| 0347 | l(40010004): LSL R0, R0, 4H |
| 0348 | m(4008000C): ADD R0, R0, CH |
| 0349 | n(40010014): LSL R0, R0, 14H |
| 034A | o(81E00010): LDR R1, SP, 10H |
| 034B | o(D119834C): BLEQ MT [trap=4, pos=6531] |
| 034C | p(81100028): LDR R1, R1, 28H |
| 034D | p(41110002): LSL R1, R1, 2H |
| 034E | p(00080001): ADD R0, R0, R1 |
| ELSEq (*import*) |
| 034F | q(81E0005C): LDR R1, SP, 5CH |
| 0350 | q(A0100000): STR R0, R1, 0H |
| SYSTEMr.GET(mod.imps + (mno-1)t*4,u impmod);v v := impmod.numw;x |
| 0351 | r(E700003C): B 60 [038EH] |
| 0352 | s(80E00010): LDR R0, SP, 10H |
| 0353 | s(D119C14C): BLEQ MT [trap=4, pos=6593] |
| 0354 | t(81E00028): LDR R1, SP, 28H |
| 0355 | t(41190001): SUB R1, R1, 1H |
| 0356 | u(41110002): LSL R1, R1, 2H |
| 0357 | u(8000003C): LDR R0, R0, 3CH |
| 0358 | u(00080001): ADD R0, R0, R1 |
| 0359 | v(80000000): LDR R0, R0, 0H |
| 035A | v(A0E00014): STR R0, SP, 14H |
| 035B | w(80E00014): LDR R0, SP, 14H |
| 035C | w(D119E74C): BLEQ MT [trap=4, pos=6631] |
| 035D | x(80000028): LDR R0, R0, 28H |
| 035E | x(A0E0003C): STR R0, SP, 3CH |
| SYSTEM.PUT(adr, (inst DIV 1000000H *y 10H +z MT)a * 100000H +b v*4)c;d |
| 035F | y(80E00060): LDR R0, SP, 60H |
| 0360 | y(40020018): ASR R0, R0, 18H |
| 0361 | z(40010004): LSL R0, R0, 4H |
| 0362 | a(4008000C): ADD R0, R0, CH |
| 0363 | b(40010014): LSL R0, R0, 14H |
| 0364 | c(81E0003C): LDR R1, SP, 3CH |
| 0365 | c(41110002): LSL R1, R1, 2H |
| 0366 | c(00080001): ADD R0, R0, R1 |
| 0367 | d(81E0005C): LDR R1, SP, 5CH |
| 0368 | d(A0100000): STR R0, R1, 0H |
| SYSTEM.GET(adr+4,e inst);f vno := inst MOD 100H;g |
| 0369 | e(80E0005C): LDR R0, SP, 5CH |
| 036A | e(40080004): ADD R0, R0, 4H |
| 036B | f(80000000): LDR R0, R0, 0H |
| 036C | f(A0E00060): STR R0, SP, 60H |
| 036D | g(80E00060): LDR R0, SP, 60H |
| 036E | g(400400FF): AND R0, R0, FFH |
| 036F | g(A0E00068): STR R0, SP, 68H |
| SYSTEM.GET(impmod.enth + vno*4,i offset);j |
| 0370 | h(80E00014): LDR R0, SP, 14H |
| 0371 | h(D11A924C): BLEQ MT [trap=4, pos=6802] |
| 0372 | i(81E00068): LDR R1, SP, 68H |
| 0373 | i(41110002): LSL R1, R1, 2H |
| 0374 | i(80000044): LDR R0, R0, 44H |
| 0375 | i(00080001): ADD R0, R0, R1 |
| 0376 | j(80000000): LDR R0, R0, 0H |
| 0377 | j(A0E00070): STR R0, SP, 70H |
| IF ODD(inst DIV 100H)k THENl offset := offset + impmod.codem -n impmod.datao ENDp ; |
| 0378 | k(80E00060): LDR R0, SP, 60H |
| 0379 | k(40020008): ASR R0, R0, 8H |
| 037A | l(40040001): AND R0, R0, 1H |
| 037B | l(E100000A): BEQ 10 [0386H] |
| 037C | m(80E00014): LDR R0, SP, 14H |
| 037D | m(D11AEA4C): BLEQ MT [trap=4, pos=6890] |
| 037E | n(81E00070): LDR R1, SP, 70H |
| 037F | n(80000038): LDR R0, R0, 38H |
| 0380 | n(00180000): ADD R0, R1, R0 |
| 0381 | o(81E00014): LDR R1, SP, 14H |
| 0382 | o(D11AF84C): BLEQ MT [trap=4, pos=6904] |
| 0383 | p(81100034): LDR R1, R1, 34H |
| 0384 | p(00090001): SUB R0, R0, R1 |
| 0385 | p(A0E00070): STR R0, SP, 70H |
| SYSTEM.PUT(adr+4,q inst DIV 10000H *r 10000H +s offset)t |
| 0386 | q(80E0005C): LDR R0, SP, 5CH |
| 0387 | q(40080004): ADD R0, R0, 4H |
| 0388 | r(81E00060): LDR R1, SP, 60H |
| 0389 | r(41120010): ASR R1, R1, 10H |
| 038A | s(41110010): LSL R1, R1, 10H |
| 038B | t(82E00070): LDR R2, SP, 70H |
| 038C | t(01180002): ADD R1, R1, R2 |
| ENDu ; |
| 038D | u(A1000000): STR R1, R0, 0H |
| adr := adr - disp*4 |
| ENDv ; |
| 038E | v(80E00058): LDR R0, SP, 58H |
| 038F | v(40010002): LSL R0, R0, 2H |
| 0390 | v(81E0005C): LDR R1, SP, 5CH |
| 0391 | v(00190000): SUB R0, R1, R0 |
| 0392 | v(A0E0005C): STR R0, SP, 5CH |
| 0393 | v(E7FFFF9F): B -97 [0333H] |
| (*fixup of type descriptors*) |
| adr := mod.dataw + fixorgT*4;x |
| 0394 | w(80E00010): LDR R0, SP, 10H |
| 0395 | w(D11BB94C): BLEQ MT [trap=4, pos=7097] |
| 0396 | x(81E00054): LDR R1, SP, 54H |
| 0397 | x(41110002): LSL R1, R1, 2H |
| 0398 | x(80000034): LDR R0, R0, 34H |
| 0399 | x(00080001): ADD R0, R0, R1 |
| 039A | x(A0E0005C): STR R0, SP, 5CH |
| WHILE adr # mod.datay DOz |
| 039B | y(80E00010): LDR R0, SP, 10H |
| 039C | y(D11BE34C): BLEQ MT [trap=4, pos=7139] |
| 039D | z(81E0005C): LDR R1, SP, 5CH |
| 039E | z(80000034): LDR R0, R0, 34H |
| 039F | z(01190000): SUB R1, R1, R0 |
| 03A0 | z(E1000037): BEQ 55 [03D8H] |
| SYSTEM.GET(adr, inst);a |
| 03A1 | a(80E0005C): LDR R0, SP, 5CH |
| 03A2 | a(80000000): LDR R0, R0, 0H |
| 03A3 | a(A0E00060): STR R0, SP, 60H |
| mno := inst DIV 1000000H MODb 10H;c |
| 03A4 | b(80E00060): LDR R0, SP, 60H |
| 03A5 | b(40020018): ASR R0, R0, 18H |
| 03A6 | c(4004000F): AND R0, R0, FH |
| 03A7 | c(A0E00028): STR R0, SP, 28H |
| vno := inst DIV 1000H MODd 1000H;e |
| 03A8 | d(80E00060): LDR R0, SP, 60H |
| 03A9 | d(4002000C): ASR R0, R0, CH |
| 03AA | e(40040FFF): AND R0, R0, FFFH |
| 03AB | e(A0E00068): STR R0, SP, 68H |
| disp := inst MOD 1000H;f |
| 03AC | f(80E00060): LDR R0, SP, 60H |
| 03AD | f(40040FFF): AND R0, R0, FFFH |
| 03AE | f(A0E00058): STR R0, SP, 58H |
| IF mno = 0 THENg (*global*) inst := mod.datah + vno |
| 03AF | g(80E00028): LDR R0, SP, 28H |
| 03B0 | g(E9000007): BNE 7 [03B8H] |
| 03B1 | h(80E00010): LDR R0, SP, 10H |
| 03B2 | h(D11CB64C): BLEQ MT [trap=4, pos=7350] |
| ELSEi (*import*) |
| 03B3 | i(80000034): LDR R0, R0, 34H |
| 03B4 | i(81E00068): LDR R1, SP, 68H |
| 03B5 | i(00080001): ADD R0, R0, R1 |
| 03B6 | i(A0E00060): STR R0, SP, 60H |
| SYSTEMj.GET(mod.impk + (mno-1)l*4,m impmod);n |
| 03B7 | j(E7000017): B 23 [03CFH] |
| 03B8 | k(80E00010): LDR R0, SP, 10H |
| 03B9 | k(D11CF54C): BLEQ MT [trap=4, pos=7413] |
| 03BA | l(81E00028): LDR R1, SP, 28H |
| 03BB | l(41190001): SUB R1, R1, 1H |
| 03BC | m(41110002): LSL R1, R1, 2H |
| 03BD | m(8000003C): LDR R0, R0, 3CH |
| 03BE | m(00080001): ADD R0, R0, R1 |
| 03BF | n(80000000): LDR R0, R0, 0H |
| 03C0 | n(A0E00014): STR R0, SP, 14H |
| SYSTEM.GET(impmod.ento + vno*4,p offset);q |
| 03C1 | o(80E00014): LDR R0, SP, 14H |
| 03C2 | o(D11D2D4C): BLEQ MT [trap=4, pos=7469] |
| 03C3 | p(81E00068): LDR R1, SP, 68H |
| 03C4 | p(41110002): LSL R1, R1, 2H |
| 03C5 | p(80000044): LDR R0, R0, 44H |
| 03C6 | p(00080001): ADD R0, R0, R1 |
| 03C7 | q(80000000): LDR R0, R0, 0H |
| 03C8 | q(A0E00070): STR R0, SP, 70H |
| inst := impmod.datar + offset |
| 03C9 | r(80E00014): LDR R0, SP, 14H |
| 03CA | r(D11D5F4C): BLEQ MT [trap=4, pos=7519] |
| ENDs ; |
| 03CB | s(80000034): LDR R0, R0, 34H |
| 03CC | s(81E00070): LDR R1, SP, 70H |
| 03CD | s(00080001): ADD R0, R0, R1 |
| 03CE | s(A0E00060): STR R0, SP, 60H |
| SYSTEM.PUT(adr, inst);t adr := adr - disp*4 |
| 03CF | t(80E0005C): LDR R0, SP, 5CH |
| 03D0 | t(81E00060): LDR R1, SP, 60H |
| 03D1 | t(A1000000): STR R1, R0, 0H |
| ENDu ; |
| 03D2 | u(80E00058): LDR R0, SP, 58H |
| 03D3 | u(40010002): LSL R0, R0, 2H |
| 03D4 | u(81E0005C): LDR R1, SP, 5CH |
| 03D5 | u(00190000): SUB R0, R1, R0 |
| 03D6 | u(A0E0005C): STR R0, SP, 5CH |
| 03D7 | u(E7FFFFC3): B -61 [039BH] |
| body (*initialize module*) |
| ELSIFv resw = 3 THENx importing := name;y |
| 03D8 | v(80E00048): LDR R0, SP, 48H |
| 03D9 | v(D11DEC5C): BLEQ MT [trap=5, pos=7660] |
| 03DA | v(D7000000): BL R0 |
| 03DB | w(E7000026): B 38 [0402H] |
| 03DC | x .FIXUP D |
| 03DC | x(8D0000F8): LDR SB, MT, MOD0 [Modules] |
| 03DD | x(80D00028): LDR R0, SB, 28H [data] |
| 03DE | x(40090003): SUB R0, R0, 3H |
| 03DF | x(E9000022): BNE 34 [0402H] |
| 03E0 | y .FIXUP D |
| 03E0 | y(8D000004): LDR SB, MT, MOD0 [Modules] |
| 03E1 | y(40D8002C): ADD R0, SB, 2CH [data] |
| 03E2 | y(81E00004): LDR R1, SP, 4H |
| 03E3 | y(82E00008): LDR R2, SP, 8H |
| 03E4 | y(E100000B): BEQ 11 [03F0H] |
| 03E5 | y(42280003): ADD R2, R2, 3H |
| 03E6 | y(42220002): ASR R2, R2, 2H |
| 03E7 | y(43000008): MOV R3, R0, 8H |
| 03E8 | y(03290003): SUB R3, R2, R3 |
| 03E9 | y(DE1E0C3C): BLGT MT [trap=3, pos=7692] |
| 03EA | y(83100000): LDR R3, R1, 0H |
| 03EB | y(41180004): ADD R1, R1, 4H |
| 03EC | y(A3000000): STR R3, R0, 0H |
| 03ED | y(40080004): ADD R0, R0, 4H |
| 03EE | y(42290001): SUB R2, R2, 1H |
| 03EF | y(E9FFFFFA): BNE -6 [03EAH] |
| WHILE nofimps > 0 DOz DEC(nofimps);a DEC(import[nofimps]b.refcntc) ENDd |
| 03F0 | z(80E0002C): LDR R0, SP, 2CH |
| 03F1 | z(40090000): SUB R0, R0, 0H |
| 03F2 | z(E600000F): BLE 15 [0402H] |
| 03F3 | a(80E0002C): LDR R0, SP, 2CH |
| 03F4 | a(40090001): SUB R0, R0, 1H |
| 03F5 | a(A0E0002C): STR R0, SP, 2CH |
| 03F6 | b(80E0002C): LDR R0, SP, 2CH |
| 03F7 | b(41090010): SUB R1, R0, 10H |
| 03F8 | b(DA1E4B1C): BLCC MT [trap=1, pos=7755] |
| 03F9 | b(40010002): LSL R0, R0, 2H |
| 03FA | b(00E80000): ADD R0, SP, R0 |
| 03FB | c(800000D0): LDR R0, R0, D0H |
| 03FC | c(D11E524C): BLEQ MT [trap=4, pos=7762] |
| 03FD | d(40080030): ADD R0, R0, 30H |
| 03FE | d(81000000): LDR R1, R0, 0H |
| 03FF | d(41190001): SUB R1, R1, 1H |
| 0400 | d(A1000000): STR R1, R0, 0H |
| 0401 | d(E7FFFFEE): B -18 [03F0H] |
| END |
| END ; |
| newmod := mod |
| ENDe Load; |
| 0402 | e(80E00010): LDR R0, SP, 10H |
| 0403 | e(81E0000C): LDR R1, SP, CH |
| 0404 | e(A0100000): STR R0, R1, 0H |
| 0405 | e(8FE00000): LDR LNK, SP, 0H |
| 0406 | e(4EE80110): ADD SP, SP, 110H |
| 0407 | e(C700000F): B LNK |
| |
| PROCEDURE ThisCommand*(mod: Module; name: ARRAY OF CHAR): Command; |
| VAR k, adr, w: INTEGER; ch: CHAR; |
| s: ARRAY 32 OF CHAR; |
| BEGINf res := 5;g w := 0;h |
| 0408 | f .PROC 9 |
| 0408 | f(4EE90040): SUB SP, SP, 40H |
| 0409 | f(AFE00000): STR LNK, SP, 0H |
| 040A | f(A0E00004): STR R0, SP, 4H |
| 040B | f(A1E00008): STR R1, SP, 8H |
| 040C | f(A2E0000C): STR R2, SP, CH |
| 040D | g(40000005): MOV R0, R0, 5H |
| 040E | g .FIXUP D |
| 040E | g(8D00002E): LDR SB, MT, MOD0 [Modules] |
| 040F | g(A0D00028): STR R0, SB, 28H [data] |
| 0410 | h(40000000): MOV R0, R0, 0H |
| 0411 | h(A0E00018): STR R0, SP, 18H |
| IF mod # NIL THENi |
| 0412 | i(80E00004): LDR R0, SP, 4H |
| 0413 | i(E100004B): BEQ 75 [045FH] |
| adr := mod.cmdj;k SYSTEM.GET(adr, ch);l |
| 0414 | j(80E00004): LDR R0, SP, 4H |
| 0415 | j(D11F574C): BLEQ MT [trap=4, pos=8023] |
| 0416 | k(80000040): LDR R0, R0, 40H |
| 0417 | k(A0E00014): STR R0, SP, 14H |
| 0418 | l(80E00014): LDR R0, SP, 14H |
| 0419 | l(90000000): LDR R0, R0, 0H |
| 041A | l(B0E0001C): STR R0, SP, 1CH |
| WHILE (ch # 0X)m & (nres # 0)o DOp k := 0;q (*read command name*) |
| 041B | m(90E0001C): LDR R0, SP, 1CH |
| 041C | n(E1000042): BEQ 66 [045FH] |
| 041D | o .FIXUP D |
| 041D | o(8D00000F): LDR SB, MT, MOD0 [Modules] |
| 041E | o(80D00028): LDR R0, SB, 28H [data] |
| 041F | p(E100003F): BEQ 63 [045FH] |
| 0420 | q(40000000): MOV R0, R0, 0H |
| 0421 | q(A0E00010): STR R0, SP, 10H |
| REPEAT s[k]r := ch;s INC(k);t INC(adr);u SYSTEM.GET(adr, ch) UNTILv ch = 0X;w |
| 0422 | r(80E00010): LDR R0, SP, 10H |
| 0423 | r(41090020): SUB R1, R0, 20H |
| 0424 | r(DA1FC41C): BLCC MT [trap=1, pos=8132] |
| 0425 | r(00E80000): ADD R0, SP, R0 |
| 0426 | s(91E0001C): LDR R1, SP, 1CH |
| 0427 | s(B1000020): STR R1, R0, 20H |
| 0428 | t(80E00010): LDR R0, SP, 10H |
| 0429 | t(40080001): ADD R0, R0, 1H |
| 042A | t(A0E00010): STR R0, SP, 10H |
| 042B | u(80E00014): LDR R0, SP, 14H |
| 042C | u(40080001): ADD R0, R0, 1H |
| 042D | u(A0E00014): STR R0, SP, 14H |
| 042E | v(80E00014): LDR R0, SP, 14H |
| 042F | v(90000000): LDR R0, R0, 0H |
| 0430 | v(B0E0001C): STR R0, SP, 1CH |
| 0431 | w(90E0001C): LDR R0, SP, 1CH |
| 0432 | w(E9FFFFEF): BNE -17 [0422H] |
| s[k]x := 0X;y |
| 0433 | x(80E00010): LDR R0, SP, 10H |
| 0434 | x(41090020): SUB R1, R0, 20H |
| 0435 | x(DA200D1C): BLCC MT [trap=1, pos=8205] |
| 0436 | x(00E80000): ADD R0, SP, R0 |
| 0437 | y(41000000): MOV R1, R0, 0H |
| 0438 | y(B1000020): STR R1, R0, 20H |
| REPEAT INC(adr) UNTILz adr MOD 4 =a 0;b |
| 0439 | z(80E00014): LDR R0, SP, 14H |
| 043A | z(40080001): ADD R0, R0, 1H |
| 043B | z(A0E00014): STR R0, SP, 14H |
| 043C | a(80E00014): LDR R0, SP, 14H |
| 043D | a(40040003): AND R0, R0, 3H |
| 043E | b(40090000): SUB R0, R0, 0H |
| 043F | b(E9FFFFF9): BNE -7 [0439H] |
| SYSTEM.GET(adr, k);c INC(adr, 4);d |
| 0440 | c(80E00014): LDR R0, SP, 14H |
| 0441 | c(80000000): LDR R0, R0, 0H |
| 0442 | c(A0E00010): STR R0, SP, 10H |
| 0443 | d(80E00014): LDR R0, SP, 14H |
| 0444 | d(40080004): ADD R0, R0, 4H |
| 0445 | d(A0E00014): STR R0, SP, 14H |
| IF s = name THENe res := 0;f w := mod.codeg + k ELSEh SYSTEMi.GET(adr, ch) ENDj |
| 0446 | e(40E80020): ADD R0, SP, 20H |
| 0447 | e(81E00008): LDR R1, SP, 8H |
| 0448 | e(92000000): LDR R2, R0, 0H |
| 0449 | e(40080001): ADD R0, R0, 1H |
| 044A | e(93100000): LDR R3, R1, 0H |
| 044B | e(41180001): ADD R1, R1, 1H |
| 044C | e(04290003): SUB R4, R2, R3 |
| 044D | e(E9000002): BNE 2 [0450H] |
| 044E | e(44290000): SUB R4, R2, 0H |
| 044F | e(E9FFFFF8): BNE -8 [0448H] |
| 0450 | e(E900000A): BNE 10 [045BH] |
| 0451 | f(40000000): MOV R0, R0, 0H |
| 0452 | f .FIXUP D |
| 0452 | f(8D000035): LDR SB, MT, MOD0 [Modules] |
| 0453 | f(A0D00028): STR R0, SB, 28H [data] |
| 0454 | g(80E00004): LDR R0, SP, 4H |
| 0455 | g(D1209B4C): BLEQ MT [trap=4, pos=8347] |
| 0456 | h(80000038): LDR R0, R0, 38H |
| 0457 | h(81E00010): LDR R1, SP, 10H |
| 0458 | h(00080001): ADD R0, R0, R1 |
| 0459 | h(A0E00018): STR R0, SP, 18H |
| 045A | i(E7000003): B 3 [045EH] |
| 045B | j(80E00014): LDR R0, SP, 14H |
| 045C | j(90000000): LDR R0, R0, 0H |
| 045D | j(B0E0001C): STR R0, SP, 1CH |
| ENDk |
| 045E | k(E7FFFFBC): B -68 [041BH] |
| END |
| RETURN SYSTEM.VAL(Command, w) |
| ENDl ThisCommand; |
| 045F | l(80E00018): LDR R0, SP, 18H |
| 0460 | l(8FE00000): LDR LNK, SP, 0H |
| 0461 | l(4EE80040): ADD SP, SP, 40H |
| 0462 | l(C700000F): B LNK |
| |
| PROCEDURE Free*(name: ARRAY OF CHAR); |
| VAR mod, imp: Module; p, q: INTEGER; |
| BEGINm mod := root;n res := 0;o |
| 0463 | m .PROC 10 |
| 0463 | m(4EE9001C): SUB SP, SP, 1CH |
| 0464 | m(AFE00000): STR LNK, SP, 0H |
| 0465 | m(A0E00004): STR R0, SP, 4H |
| 0466 | m(A1E00008): STR R1, SP, 8H |
| 0467 | n .FIXUP D |
| 0467 | n(8D000015): LDR SB, MT, MOD0 [Modules] |
| 0468 | n(80D00018): LDR R0, SB, 18H [data] |
| 0469 | n(A0E0000C): STR R0, SP, CH |
| 046A | o(40000000): MOV R0, R0, 0H |
| 046B | o(A0D00028): STR R0, SB, 28H |
| WHILE (mod # NIL)p & (qmod.namer # name)s DOt mod := mod.nextu ENDv ; |
| 046C | p(80E0000C): LDR R0, SP, CH |
| 046D | q(E1000011): BEQ 17 [047FH] |
| 046E | r(80E0000C): LDR R0, SP, CH |
| 046F | r(D121964C): BLEQ MT [trap=4, pos=8598] |
| 0470 | s(81E00004): LDR R1, SP, 4H |
| 0471 | s(92000000): LDR R2, R0, 0H |
| 0472 | s(40080001): ADD R0, R0, 1H |
| 0473 | s(93100000): LDR R3, R1, 0H |
| 0474 | s(41180001): ADD R1, R1, 1H |
| 0475 | s(04290003): SUB R4, R2, R3 |
| 0476 | s(E9000002): BNE 2 [0479H] |
| 0477 | s(44290000): SUB R4, R2, 0H |
| 0478 | s(E9FFFFF8): BNE -8 [0471H] |
| 0479 | t(E1000005): BEQ 5 [047FH] |
| 047A | u(80E0000C): LDR R0, SP, CH |
| 047B | u(D121B14C): BLEQ MT [trap=4, pos=8625] |
| 047C | v(80000020): LDR R0, R0, 20H |
| 047D | v(A0E0000C): STR R0, SP, CH |
| 047E | v(E7FFFFED): B -19 [046CH] |
| IF mod # NIL THENw |
| 047F | w(80E0000C): LDR R0, SP, CH |
| 0480 | w(E1000025): BEQ 37 [04A6H] |
| IF mod.refcntx = 0 THENy |
| 0481 | x(80E0000C): LDR R0, SP, CH |
| 0482 | x(D121E14C): BLEQ MT [trap=4, pos=8673] |
| 0483 | y(80000030): LDR R0, R0, 30H |
| 0484 | y(E900001E): BNE 30 [04A3H] |
| mod.namez[0] := 0X;a p := mod.impb;c q := mod.cmdd;e |
| 0485 | z(80E0000C): LDR R0, SP, CH |
| 0486 | z(D121FB4C): BLEQ MT [trap=4, pos=8699] |
| 0487 | a(41000000): MOV R1, R0, 0H |
| 0488 | a(B1000000): STR R1, R0, 0H |
| 0489 | b(80E0000C): LDR R0, SP, CH |
| 048A | b(D122124C): BLEQ MT [trap=4, pos=8722] |
| 048B | c(8000003C): LDR R0, R0, 3CH |
| 048C | c(A0E00014): STR R0, SP, 14H |
| 048D | d(80E0000C): LDR R0, SP, CH |
| 048E | d(D122204C): BLEQ MT [trap=4, pos=8736] |
| 048F | e(80000040): LDR R0, R0, 40H |
| 0490 | e(A0E00018): STR R0, SP, 18H |
| WHILE p < q DOf SYSTEM.GET(p, imp);g DEC(imp.refcnth);i INC(p, 4) ENDj ; |
| 0491 | f(80E00014): LDR R0, SP, 14H |
| 0492 | f(81E00018): LDR R1, SP, 18H |
| 0493 | f(00090001): SUB R0, R0, R1 |
| 0494 | f(ED00000D): BGE 13 [04A2H] |
| 0495 | g(80E00014): LDR R0, SP, 14H |
| 0496 | g(80000000): LDR R0, R0, 0H |
| 0497 | g(A0E00010): STR R0, SP, 10H |
| 0498 | h(80E00010): LDR R0, SP, 10H |
| 0499 | h(D1225B4C): BLEQ MT [trap=4, pos=8795] |
| 049A | i(40080030): ADD R0, R0, 30H |
| 049B | i(81000000): LDR R1, R0, 0H |
| 049C | i(41190001): SUB R1, R1, 1H |
| 049D | i(A1000000): STR R1, R0, 0H |
| 049E | j(80E00014): LDR R0, SP, 14H |
| 049F | j(40080004): ADD R0, R0, 4H |
| 04A0 | j(A0E00014): STR R0, SP, 14H |
| 04A1 | j(E7FFFFEF): B -17 [0491H] |
| ELSE resk := 1 |
| 04A2 | k(E7000003): B 3 [04A6H] |
| ENDl |
| 04A3 | l(40000001): MOV R0, R0, 1H |
| 04A4 | l .FIXUP D |
| 04A4 | l(8D00003D): LDR SB, MT, MOD0 [Modules] |
| 04A5 | l(A0D00028): STR R0, SB, 28H [data] |
| END |
| ENDm Free; |
| 04A6 | m(8FE00000): LDR LNK, SP, 0H |
| 04A7 | m(4EE8001C): ADD SP, SP, 1CH |
| 04A8 | m(C700000F): B LNK |
| |
| PROCEDURE Init*; |
| BEGINn Files.Init;o MTOrg := SYSTEM.REG(MT);p |
| 04A9 | n .PROC 11 |
| 04A9 | n .COMMAND Init |
| 04A9 | n(4EE90004): SUB SP, SP, 4H |
| 04AA | n(AFE00000): STR LNK, SP, 0H |
| 04AB | o .FIXUP P |
| 04AB | o(F711E1D1): BL MOD1 [Files] PROC30 |
| 04AC | p(0000000C): MOV R0, R0, MT |
| 04AD | p .FIXUP D |
| 04AD | p(8D000009): LDR SB, MT, MOD0 [Modules] |
| 04AE | p(A0D00020): STR R0, SB, 20H [data] |
| SYSTEM.GET(16, AllocPtr);q SYSTEM.GET(20, root);r SYSTEM.GET(24, limit);s DEC(limit, 8000H) |
| 04AF | q(40000010): MOV R0, R0, 10H |
| 04B0 | q(80000000): LDR R0, R0, 0H |
| 04B1 | q(A0D00024): STR R0, SB, 24H |
| 04B2 | r(40000014): MOV R0, R0, 14H |
| 04B3 | r(80000000): LDR R0, R0, 0H |
| 04B4 | r(A0D00018): STR R0, SB, 18H |
| 04B5 | s(40000018): MOV R0, R0, 18H |
| 04B6 | s(80000000): LDR R0, R0, 0H |
| 04B7 | s(A0D0006C): STR R0, SB, 6CH |
| ENDt Init; |
| 04B8 | t(40D8006C): ADD R0, SB, 6CH |
| 04B9 | t(81000000): LDR R1, R0, 0H |
| 04BA | t(41198000): SUB R1, R1, FFFF8000H |
| 04BB | t(A1000000): STR R1, R0, 0H |
| 04BC | t(8FE00000): LDR LNK, SP, 0H |
| 04BD | t(4EE80004): ADD SP, SP, 4H |
| 04BE | t(C700000F): B LNK |
| |
| BEGINu Init;v Load("Oberon",w M)x;y |
| 04BF | u .PROC 0 |
| 04BF | u .ENTRYPOINT |
| 04BF | u(4EE90004): SUB SP, SP, 4H |
| 04C0 | u(AFE00000): STR LNK, SP, 0H |
| 04C1 | v(F7FFFFE7): BL -25 [04A9H] |
| 04C2 | w .FIXUP D |
| 04C2 | w(8D000015): LDR SB, MT, MOD0 [Modules] |
| 04C3 | w(40D80070): ADD R0, SB, 70H ["Oberon"] |
| 04C4 | w(41000007): MOV R1, R0, 7H |
| 04C5 | x(42D8001C): ADD R2, SB, 1CH |
| 04C6 | y(F7FFFBE4): BL -1052 [00ABH] |
| LED(res);z REPEAT UNTIL FALSE (*only if load fails*) |
| 04C7 | z .FIXUP D |
| 04C7 | z(8D000005): LDR SB, MT, MOD0 [Modules] |
| 04C8 | z(80D00028): LDR R0, SB, 28H [data] |
| 04C9 | z(5100FFC4): MOV R1, R0, FFFFFFC4H |
| 04CA | z(A0100000): STR R0, R1, 0H |
| ENDa Modules.b |
| 04CB | a(E7FFFFFF): B -1 [04CBH] |
| 04CC | b(8FE00000): LDR LNK, SP, 0H |
| 04CD | b(4EE80004): ADD SP, SP, 4H |
| 04CE | b(C700000F): B LNK |