| MODULE ORG; (* NW 18.4.2016 / 4.4.2017 code generator in Oberon-07 for RISC*) |
| | .MODULE ORG (KEY 98F2A948, VERSION 1, SIZE 0000F448) |
| | .IMPORT Files (KEY 73F5D686) |
| | .IMPORT ORS (KEY 76547166) |
| | .IMPORT Texts (KEY 0B9E9984) |
| | .IMPORT ORB (KEY 8A2CD362) |
| | .TYPEDESC 00000020 FFFFFFFF FFFFFFFF FFFFFFFF 00000004 FFFFFFFF |
| | .DATA 888CH |
| | .STRING 88A4H "register stack overflow" |
| | .STRING 88BCH "Reg Stack" |
| | .STRING 88C8H "program too long" |
| | .STRING 88DCH "not allowed" |
| | .STRING 88E8H "address error" |
| | .STRING 88F8H "not Boolean?" |
| | .STRING 8908H "too many strings" |
| | .STRING 891CH "level error, not accessible" |
| | .STRING 8938H "bad index" |
| | .STRING 8944H "error in Index" |
| | .STRING 8954H "bad mode in DeRef" |
| | .STRING 8968H "ext level too large" |
| | .STRING 897CH "too many record types" |
| | .STRING 8994H "bad divisor" |
| | .STRING 89A0H "bad divisor" |
| | .STRING 89ACH "bad modulus" |
| | .STRING 89B8H "bad modulus" |
| | .STRING 89C4H "not implemented" |
| | .STRING 89D4H "bad mode in Store" |
| | .STRING 89E8H "different length/size, not implemented" |
| | .STRING 8A10H "inadmissible assignment" |
| | .STRING 8A28H "string too long" |
| | .STRING 8A38H "zero increment" |
| | .STRING 8A48H "fixup impossible" |
| | .STRING 8A5CH "too many locals" |
| | .STRING 8A6CH "locals not allowed" |
| | .STRING 8A80H "bad count" |
| | .STRING 8A8CH "not addressable" |
| | .STRING 8A9CH ".rsc" |
| | .FIXUP T 0H |
| IMPORT SYSTEM, Files, ORS, ORB; |
| (*Code generator for Oberon compiler for RISC processor. |
| Procedural interface to Parser OSAP; result in array "code". |
| Procedure Close writes code-files*) |
| |
| CONST WordSize* = 4; |
| StkOrg0 = -64; VarOrg0 = 0; (*for RISC-0 only*) |
| MT = 12; SB = 13; SP = 14; LNK = 15; (*dedicated registers*) |
| maxCode = 8000; maxStrx = 2400; maxTD = 120; C24 = 1000000H; |
| Reg = 10; RegI = 11; Cond = 12; (*internal item modes*) |
| |
| (*frequently used opcodes*) U = 2000H; V = 1000H; |
| Mov = 0; Lsl = 1; Asr = 2; Ror= 3; And = 4; Ann = 5; Ior = 6; Xor = 7; |
| Add = 8; Sub = 9; Cmp = 9; Mul = 10; Div = 11; |
| Fad = 12; Fsb = 13; Fml = 14; Fdv = 15; |
| Ldr = 8; Str = 10; |
| BR = 0; BLR = 1; BC = 2; BL = 3; |
| MI = 0; PL = 8; EQ = 1; NE = 9; LT = 5; GE = 13; LE = 6; GT = 14; |
| |
| TYPE Item* = RECORD |
| mode*: INTEGER; |
| type*: ORB.Type; |
| a*, b*, r: LONGINT; |
| rdo*: BOOLEAN (*read only*) |
| END ; |
| |
| (* Item forms and meaning of fields: |
| mode r a b |
| -------------------------------- |
| Const - value (proc adr) (immediate value) |
| Var base off - (direct adr) |
| Par - off0 off1 (indirect adr) |
| Reg regno |
| RegI regno off - |
| Cond cond Fchain Tchain *) |
| |
| VAR pc*, varsize: LONGINT; (*program counter, data index*) |
| tdx, strx: LONGINT; |
| entry: LONGINT; (*main entry point*) |
| RH: LONGINT; (*available registers R[0] ... R[H-1]*) |
| curSB: LONGINT; (*current static base in SB*) |
| frame: LONGINT; (*frame offset changed in SaveRegs and RestoreRegs*) |
| fixorgP, fixorgD, fixorgT: LONGINT; (*origins of lists of locations to be fixed up by loader*) |
| check: BOOLEAN; (*emit run-time checks*) |
| version: INTEGER; (* 0 = RISC-0, 1 = RISC-5 *) |
| |
| relmap: ARRAY 6 OF INTEGER; (*condition codes for relations*) |
| code: ARRAY maxCode OF LONGINT; |
| data: ARRAY maxTD OF LONGINT; (*type descriptors*) |
| str: ARRAY maxStrx OF CHAR; |
| |
| (*instruction assemblers according to formats*) |
| |
| PROCEDURE Put0(op, a, b, c: LONGINT); |
| BEGINa (*emit format-0 instruction*) |
| 0000 | a .PROC 1 |
| 0000 | a(4EE90014): SUB SP, SP, 14H |
| 0001 | a(AFE00000): STR LNK, SP, 0H |
| 0002 | a(A0E00004): STR R0, SP, 4H |
| 0003 | a(A1E00008): STR R1, SP, 8H |
| 0004 | a(A2E0000C): STR R2, SP, CH |
| 0005 | a(A3E00010): STR R3, SP, 10H |
| code[pc]b := ((a*10H +c b)d * 10H +e op)f * 10000H +g c;h INC(pc) |
| 0006 | b .PROC 2 |
| 0006 | b .FIXUP D |
| 0006 | b(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0007 | b(80D00018): LDR R0, SB, 18H [data] |
| 0008 | b(41091F40): SUB R1, R0, 1F40H |
| 0009 | b(DA08CA1C): BLCC MT [trap=1, pos=2250] |
| 000A | b(40010002): LSL R0, R0, 2H |
| 000B | b(00D80000): ADD R0, SB, R0 |
| 000C | c(81E00008): LDR R1, SP, 8H |
| 000D | c(41110004): LSL R1, R1, 4H |
| 000E | d(82E0000C): LDR R2, SP, CH |
| 000F | d(01180002): ADD R1, R1, R2 |
| 0010 | e(41110004): LSL R1, R1, 4H |
| 0011 | f(82E00004): LDR R2, SP, 4H |
| 0012 | f(01180002): ADD R1, R1, R2 |
| 0013 | g(41110010): LSL R1, R1, 10H |
| 0014 | h(82E00010): LDR R2, SP, 10H |
| 0015 | h(01180002): ADD R1, R1, R2 |
| 0016 | h(A1000064): STR R1, R0, 64H |
| ENDi Put0; |
| 0017 | i(40D80018): ADD R0, SB, 18H |
| 0018 | i(81000000): LDR R1, R0, 0H |
| 0019 | i(41180001): ADD R1, R1, 1H |
| 001A | i(A1000000): STR R1, R0, 0H |
| 001B | i(8FE00000): LDR LNK, SP, 0H |
| 001C | i(4EE80014): ADD SP, SP, 14H |
| 001D | i(C700000F): B LNK |
| |
| PROCEDURE Put1(op, a, b, im: LONGINT); |
| BEGINj (*emit format-1 instruction, -10000H <= im < 10000H*) |
| 001E | j(4EE90014): SUB SP, SP, 14H |
| 001F | j(AFE00000): STR LNK, SP, 0H |
| 0020 | j(A0E00004): STR R0, SP, 4H |
| 0021 | j(A1E00008): STR R1, SP, 8H |
| 0022 | j(A2E0000C): STR R2, SP, CH |
| 0023 | j(A3E00010): STR R3, SP, 10H |
| IF im < 0 THENk INC(op, V) ENDl ; |
| 0024 | k(80E00010): LDR R0, SP, 10H |
| 0025 | k(40090000): SUB R0, R0, 0H |
| 0026 | k(ED000003): BGE 3 [002AH] |
| 0027 | l(80E00004): LDR R0, SP, 4H |
| 0028 | l(40081000): ADD R0, R0, 1000H |
| 0029 | l(A0E00004): STR R0, SP, 4H |
| code[pc]m := (((a+40H)n * 10H +o b)p * 10H +q op)r * 10000H +s (im MOD 10000H)t;u INC(pc) |
| 002A | m .FIXUP D |
| 002A | m(8D000024): LDR SB, MT, MOD0 [ORG] |
| 002B | m(80D00018): LDR R0, SB, 18H [data] |
| 002C | m(41091F40): SUB R1, R0, 1F40H |
| 002D | m(DA09A21C): BLCC MT [trap=1, pos=2466] |
| 002E | m(40010002): LSL R0, R0, 2H |
| 002F | m(00D80000): ADD R0, SB, R0 |
| 0030 | n(81E00008): LDR R1, SP, 8H |
| 0031 | n(41180040): ADD R1, R1, 40H |
| 0032 | o(41110004): LSL R1, R1, 4H |
| 0033 | p(82E0000C): LDR R2, SP, CH |
| 0034 | p(01180002): ADD R1, R1, R2 |
| 0035 | q(41110004): LSL R1, R1, 4H |
| 0036 | r(82E00004): LDR R2, SP, 4H |
| 0037 | r(01180002): ADD R1, R1, R2 |
| 0038 | s(41110010): LSL R1, R1, 10H |
| 0039 | t(82E00010): LDR R2, SP, 10H |
| 003A | t(4224FFFF): AND R2, R2, FFFFFFFFH |
| 003B | u(01180002): ADD R1, R1, R2 |
| 003C | u(A1000064): STR R1, R0, 64H |
| ENDv Put1; |
| 003D | v(40D80018): ADD R0, SB, 18H |
| 003E | v(81000000): LDR R1, R0, 0H |
| 003F | v(41180001): ADD R1, R1, 1H |
| 0040 | v(A1000000): STR R1, R0, 0H |
| 0041 | v(8FE00000): LDR LNK, SP, 0H |
| 0042 | v(4EE80014): ADD SP, SP, 14H |
| 0043 | v(C700000F): B LNK |
| |
| PROCEDURE Put1a(op, a, b, im: LONGINT); |
| BEGINw (*same as Put1, but with range test -10000H <= im < 10000H*) |
| 0044 | w(4EE90014): SUB SP, SP, 14H |
| 0045 | w(AFE00000): STR LNK, SP, 0H |
| 0046 | w(A0E00004): STR R0, SP, 4H |
| 0047 | w(A1E00008): STR R1, SP, 8H |
| 0048 | w(A2E0000C): STR R2, SP, CH |
| 0049 | w(A3E00010): STR R3, SP, 10H |
| IF (im >= -10000H)x & (yim <= 0FFFFH)z THENa Put1(op,b a,c b,d im)e |
| 004A | x(80E00010): LDR R0, SP, 10H |
| 004B | x(50090000): SUB R0, R0, 0H |
| 004C | y(E5000009): BLT 9 [0056H] |
| 004D | z(80E00010): LDR R0, SP, 10H |
| 004E | z(4009FFFF): SUB R0, R0, FFFFFFFFH |
| 004F | a(EE000006): BGT 6 [0056H] |
| 0050 | b(80E00004): LDR R0, SP, 4H |
| 0051 | c(81E00008): LDR R1, SP, 8H |
| 0052 | d(82E0000C): LDR R2, SP, CH |
| 0053 | e(83E00010): LDR R3, SP, 10H |
| ELSEf Put1g(Mov+U,h RH,i 0,j im DIV 10000H)k;l |
| 0054 | f(F7FFFFC9): BL -55 [001EH] |
| 0055 | g(E7000018): B 24 [006EH] |
| 0056 | h(40002000): MOV R0, R0, 2000H |
| 0057 | i .FIXUP D |
| 0057 | i(8D00002D): LDR SB, MT, MOD0 [ORG] |
| 0058 | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0059 | j(42000000): MOV R2, R0, 0H |
| 005A | k(83E00010): LDR R3, SP, 10H |
| 005B | k(43320010): ASR R3, R3, 10H |
| 005C | l(F7FFFFC1): BL -63 [001EH] |
| IF im MOD 10000H #m 0 THENn Put1(Ior,o RH,p RH,q im MOD 10000H)r ENDs ; |
| 005D | m(80E00010): LDR R0, SP, 10H |
| 005E | m(4004FFFF): AND R0, R0, FFFFFFFFH |
| 005F | n(40090000): SUB R0, R0, 0H |
| 0060 | n(E1000007): BEQ 7 [0068H] |
| 0061 | o(40000006): MOV R0, R0, 6H |
| 0062 | p .FIXUP D |
| 0062 | p(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0063 | p(81D0002C): LDR R1, SB, 2CH [data] |
| 0064 | q(82D0002C): LDR R2, SB, 2CH |
| 0065 | r(83E00010): LDR R3, SP, 10H |
| 0066 | r(4334FFFF): AND R3, R3, FFFFFFFFH |
| 0067 | s(F7FFFFB6): BL -74 [001EH] |
| Put0(op,t a,u b,v RH)w |
| 0068 | t(80E00004): LDR R0, SP, 4H |
| 0069 | u(81E00008): LDR R1, SP, 8H |
| 006A | v(82E0000C): LDR R2, SP, CH |
| 006B | w .FIXUP D |
| 006B | w(8D000009): LDR SB, MT, MOD0 [ORG] |
| 006C | w(83D0002C): LDR R3, SB, 2CH [data] |
| ENDx |
| 006D | x(F7FFFF92): BL -110 [0000H] |
| ENDy Put1a; |
| 006E | y(8FE00000): LDR LNK, SP, 0H |
| 006F | y(4EE80014): ADD SP, SP, 14H |
| 0070 | y(C700000F): B LNK |
| |
| PROCEDURE Put2(op, a, b, off: LONGINT); |
| BEGINz (*emit load/store instruction*) |
| 0071 | z(4EE90014): SUB SP, SP, 14H |
| 0072 | z(AFE00000): STR LNK, SP, 0H |
| 0073 | z(A0E00004): STR R0, SP, 4H |
| 0074 | z(A1E00008): STR R1, SP, 8H |
| 0075 | z(A2E0000C): STR R2, SP, CH |
| 0076 | z(A3E00010): STR R3, SP, 10H |
| code[pc]a := ((op * 10H +b a)c * 10H +d b)e * 100000H +f (off MOD 100000H)g;h INC(pc) |
| 0077 | a .FIXUP D |
| 0077 | a(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0078 | a(80D00018): LDR R0, SB, 18H [data] |
| 0079 | a(41091F40): SUB R1, R0, 1F40H |
| 007A | a(DA0BA81C): BLCC MT [trap=1, pos=2984] |
| 007B | a(40010002): LSL R0, R0, 2H |
| 007C | a(00D80000): ADD R0, SB, R0 |
| 007D | b(81E00004): LDR R1, SP, 4H |
| 007E | b(41110004): LSL R1, R1, 4H |
| 007F | c(82E00008): LDR R2, SP, 8H |
| 0080 | c(01180002): ADD R1, R1, R2 |
| 0081 | d(41110004): LSL R1, R1, 4H |
| 0082 | e(82E0000C): LDR R2, SP, CH |
| 0083 | e(01180002): ADD R1, R1, R2 |
| 0084 | f(41110014): LSL R1, R1, 14H |
| 0085 | g(82E00010): LDR R2, SP, 10H |
| 0086 | g(4221000C): LSL R2, R2, CH |
| 0087 | g(4223000C): ROR R2, R2, CH |
| 0088 | h(01180002): ADD R1, R1, R2 |
| 0089 | h(A1000064): STR R1, R0, 64H |
| ENDi Put2; |
| 008A | i(40D80018): ADD R0, SB, 18H |
| 008B | i(81000000): LDR R1, R0, 0H |
| 008C | i(41180001): ADD R1, R1, 1H |
| 008D | i(A1000000): STR R1, R0, 0H |
| 008E | i(8FE00000): LDR LNK, SP, 0H |
| 008F | i(4EE80014): ADD SP, SP, 14H |
| 0090 | i(C700000F): B LNK |
| |
| PROCEDURE Put3(op, cond, off: LONGINT); |
| BEGINj (*emit branch instruction*) |
| 0091 | j(4EE90010): SUB SP, SP, 10H |
| 0092 | j(AFE00000): STR LNK, SP, 0H |
| 0093 | j(A0E00004): STR R0, SP, 4H |
| 0094 | j(A1E00008): STR R1, SP, 8H |
| 0095 | j(A2E0000C): STR R2, SP, CH |
| code[pc]k := ((op+12)l * 10H +m cond)n * 1000000H +o (off MOD 1000000H)p;q INC(pc) |
| 0096 | k .FIXUP D |
| 0096 | k(8D00001F): LDR SB, MT, MOD0 [ORG] |
| 0097 | k(80D00018): LDR R0, SB, 18H [data] |
| 0098 | k(41091F40): SUB R1, R0, 1F40H |
| 0099 | k(DA0C551C): BLCC MT [trap=1, pos=3157] |
| 009A | k(40010002): LSL R0, R0, 2H |
| 009B | k(00D80000): ADD R0, SB, R0 |
| 009C | l(81E00004): LDR R1, SP, 4H |
| 009D | l(4118000C): ADD R1, R1, CH |
| 009E | m(41110004): LSL R1, R1, 4H |
| 009F | n(82E00008): LDR R2, SP, 8H |
| 00A0 | n(01180002): ADD R1, R1, R2 |
| 00A1 | o(41110018): LSL R1, R1, 18H |
| 00A2 | p(82E0000C): LDR R2, SP, CH |
| 00A3 | p(42210008): LSL R2, R2, 8H |
| 00A4 | p(42230008): ROR R2, R2, 8H |
| 00A5 | q(01180002): ADD R1, R1, R2 |
| 00A6 | q(A1000064): STR R1, R0, 64H |
| ENDr Put3; |
| 00A7 | r(40D80018): ADD R0, SB, 18H |
| 00A8 | r(81000000): LDR R1, R0, 0H |
| 00A9 | r(41180001): ADD R1, R1, 1H |
| 00AA | r(A1000000): STR R1, R0, 0H |
| 00AB | r(8FE00000): LDR LNK, SP, 0H |
| 00AC | r(4EE80010): ADD SP, SP, 10H |
| 00AD | r(C700000F): B LNK |
| |
| PROCEDURE incR; |
| BEGINs |
| 00AE | s(4EE90004): SUB SP, SP, 4H |
| 00AF | s(AFE00000): STR LNK, SP, 0H |
| IF RH < MT-1 THENt INC(RH) ELSEu ORSv.Mark("register stack overflow")w ENDx |
| 00B0 | t .FIXUP D |
| 00B0 | t(8D00001A): LDR SB, MT, MOD0 [ORG] |
| 00B1 | t(80D0002C): LDR R0, SB, 2CH [data] |
| 00B2 | t(4009000B): SUB R0, R0, BH |
| 00B3 | t(ED000006): BGE 6 [00BAH] |
| 00B4 | u .FIXUP D |
| 00B4 | u(8D000004): LDR SB, MT, MOD0 [ORG] |
| 00B5 | u(40D8002C): ADD R0, SB, 2CH [data] |
| 00B6 | u(81000000): LDR R1, R0, 0H |
| 00B7 | u(41180001): ADD R1, R1, 1H |
| 00B8 | u(A1000000): STR R1, R0, 0H |
| 00B9 | v(E7000004): B 4 [00BEH] |
| 00BA | w .FIXUP D |
| 00BA | w(8D000006): LDR SB, MT, MOD0 [ORG] |
| 00BB | w(40D888A4): ADD R0, SB, FFFF88A4H [data] |
| 00BC | w(41000018): MOV R1, R0, 18H |
| 00BD | x .FIXUP P |
| 00BD | x(F72090BD): BL MOD2 [ORS] PROC9 |
| ENDy incR; |
| 00BE | y(8FE00000): LDR LNK, SP, 0H |
| 00BF | y(4EE80004): ADD SP, SP, 4H |
| 00C0 | y(C700000F): B LNK |
| |
| PROCEDURE CheckRegs*; |
| BEGINz |
| 00C1 | z .PROC 3 |
| 00C1 | z .COMMAND CheckRegs |
| 00C1 | z(4EE90004): SUB SP, SP, 4H |
| 00C2 | z(AFE00000): STR LNK, SP, 0H |
| IF RH # 0 THENa ORS.Mark("Reg Stack")b;c RH := 0 ENDd ; |
| 00C3 | a .FIXUP D |
| 00C3 | a(8D000009): LDR SB, MT, MOD0 [ORG] |
| 00C4 | a(80D0002C): LDR R0, SB, 2CH [data] |
| 00C5 | a(E1000007): BEQ 7 [00CDH] |
| 00C6 | b .FIXUP D |
| 00C6 | b(8D000003): LDR SB, MT, MOD0 [ORG] |
| 00C7 | b(40D888BC): ADD R0, SB, FFFF88BCH [data] |
| 00C8 | b(4100000A): MOV R1, R0, AH |
| 00C9 | c .FIXUP P |
| 00C9 | c(F720900C): BL MOD2 [ORS] PROC9 |
| 00CA | d(40000000): MOV R0, R0, 0H |
| 00CB | d .FIXUP D |
| 00CB | d(8D000005): LDR SB, MT, MOD0 [ORG] |
| 00CC | d(A0D0002C): STR R0, SB, 2CH [data] |
| IF pc >= maxCode - 40 THENe ORS.Mark("program too long")f ENDg |
| 00CD | e .FIXUP D |
| 00CD | e(8D000002): LDR SB, MT, MOD0 [ORG] |
| 00CE | e(80D00018): LDR R0, SB, 18H [data] |
| 00CF | e(40091F18): SUB R0, R0, 1F18H |
| 00D0 | e(E5000004): BLT 4 [00D5H] |
| 00D1 | f .FIXUP D |
| 00D1 | f(8D000004): LDR SB, MT, MOD0 [ORG] |
| 00D2 | f(40D888C8): ADD R0, SB, FFFF88C8H [data] |
| 00D3 | f(41000011): MOV R1, R0, 11H |
| 00D4 | g .FIXUP P |
| 00D4 | g(F720900B): BL MOD2 [ORS] PROC9 |
| ENDh CheckRegs; |
| 00D5 | h(8FE00000): LDR LNK, SP, 0H |
| 00D6 | h(4EE80004): ADD SP, SP, 4H |
| 00D7 | h(C700000F): B LNK |
| |
| PROCEDURE SetCC(VAR x: Item; n: LONGINT); |
| BEGINi x.mode := Cond;j x.a := 0;k x.b := 0;l x.r := n |
| 00D8 | i(4EE90010): SUB SP, SP, 10H |
| 00D9 | i(AFE00000): STR LNK, SP, 0H |
| 00DA | i(A0E00004): STR R0, SP, 4H |
| 00DB | i(A1E00008): STR R1, SP, 8H |
| 00DC | i(A2E0000C): STR R2, SP, CH |
| 00DD | j(4000000C): MOV R0, R0, CH |
| 00DE | j(81E00004): LDR R1, SP, 4H |
| 00DF | j(A0100000): STR R0, R1, 0H |
| 00E0 | k(40000000): MOV R0, R0, 0H |
| 00E1 | k(81E00004): LDR R1, SP, 4H |
| 00E2 | k(A0100008): STR R0, R1, 8H |
| 00E3 | l(40000000): MOV R0, R0, 0H |
| 00E4 | l(81E00004): LDR R1, SP, 4H |
| 00E5 | l(A010000C): STR R0, R1, CH |
| ENDm SetCC; |
| 00E6 | m(80E0000C): LDR R0, SP, CH |
| 00E7 | m(81E00004): LDR R1, SP, 4H |
| 00E8 | m(A0100010): STR R0, R1, 10H |
| 00E9 | m(8FE00000): LDR LNK, SP, 0H |
| 00EA | m(4EE80010): ADD SP, SP, 10H |
| 00EB | m(C700000F): B LNK |
| |
| PROCEDURE Trap(cond, num: LONGINT); |
| BEGINn Put3(BLR,o cond,p ORS.Pos()q*r100H +s num*10H +t MT)u |
| 00EC | n(4EE9000C): SUB SP, SP, CH |
| 00ED | n(AFE00000): STR LNK, SP, 0H |
| 00EE | n(A0E00004): STR R0, SP, 4H |
| 00EF | n(A1E00008): STR R1, SP, 8H |
| 00F0 | o(40000001): MOV R0, R0, 1H |
| 00F1 | p(81E00004): LDR R1, SP, 4H |
| 00F2 | q(4EE90008): SUB SP, SP, 8H |
| 00F3 | q(A0E00004): STR R0, SP, 4H |
| 00F4 | q(A1E00000): STR R1, SP, 0H |
| 00F5 | r .FIXUP P |
| 00F5 | r(F7208021): BL MOD2 [ORS] PROC8 |
| 00F6 | r(02000000): MOV R2, R0, R0 |
| 00F7 | r(81E00000): LDR R1, SP, 0H |
| 00F8 | r(80E00004): LDR R0, SP, 4H |
| 00F9 | r(4EE80008): ADD SP, SP, 8H |
| 00FA | s(42210008): LSL R2, R2, 8H |
| 00FB | t(83E00008): LDR R3, SP, 8H |
| 00FC | t(43310004): LSL R3, R3, 4H |
| 00FD | t(02280003): ADD R2, R2, R3 |
| 00FE | u(4228000C): ADD R2, R2, CH |
| ENDv Trap; |
| 00FF | v(F7FFFF91): BL -111 [0091H] |
| 0100 | v(8FE00000): LDR LNK, SP, 0H |
| 0101 | v(4EE8000C): ADD SP, SP, CH |
| 0102 | v(C700000F): B LNK |
| |
| (*handling of forward reference, fixups of branch addresses and constant tables*) |
| |
| PROCEDURE negated(cond: LONGINT): LONGINT; |
| BEGINw |
| 0103 | w(4EE90008): SUB SP, SP, 8H |
| 0104 | w(AFE00000): STR LNK, SP, 0H |
| 0105 | w(A0E00004): STR R0, SP, 4H |
| IF cond < 8 THENx cond := cond+8 ELSEy condz := cond-8 ENDa ; |
| 0106 | x(80E00004): LDR R0, SP, 4H |
| 0107 | x(40090008): SUB R0, R0, 8H |
| 0108 | x(ED000004): BGE 4 [010DH] |
| 0109 | y(80E00004): LDR R0, SP, 4H |
| 010A | y(40080008): ADD R0, R0, 8H |
| 010B | y(A0E00004): STR R0, SP, 4H |
| 010C | z(E7000003): B 3 [0110H] |
| 010D | a(80E00004): LDR R0, SP, 4H |
| 010E | a(40090008): SUB R0, R0, 8H |
| 010F | a(A0E00004): STR R0, SP, 4H |
| RETURN cond |
| ENDb negated; |
| 0110 | b(80E00004): LDR R0, SP, 4H |
| 0111 | b(8FE00000): LDR LNK, SP, 0H |
| 0112 | b(4EE80008): ADD SP, SP, 8H |
| 0113 | b(C700000F): B LNK |
| |
| PROCEDURE invalSB; |
| BEGINc curSB := 1 |
| 0114 | c(4EE90004): SUB SP, SP, 4H |
| 0115 | c(AFE00000): STR LNK, SP, 0H |
| ENDd invalSB; |
| 0116 | d(40000001): MOV R0, R0, 1H |
| 0117 | d .FIXUP D |
| 0117 | d(8D000046): LDR SB, MT, MOD0 [ORG] |
| 0118 | d(A0D00030): STR R0, SB, 30H [data] |
| 0119 | d(8FE00000): LDR LNK, SP, 0H |
| 011A | d(4EE80004): ADD SP, SP, 4H |
| 011B | d(C700000F): B LNK |
| |
| PROCEDURE fix(at, with: LONGINT); |
| BEGINe code[at]f := code[at]g DIV C24 *h C24 +i (with MOD C24)j |
| 011C | e(4EE9000C): SUB SP, SP, CH |
| 011D | e(AFE00000): STR LNK, SP, 0H |
| 011E | e(A0E00004): STR R0, SP, 4H |
| 011F | e(A1E00008): STR R1, SP, 8H |
| 0120 | f(80E00004): LDR R0, SP, 4H |
| 0121 | f(41091F40): SUB R1, R0, 1F40H |
| 0122 | f(DA0FEF1C): BLCC MT [trap=1, pos=4079] |
| 0123 | f(40010002): LSL R0, R0, 2H |
| 0124 | f .FIXUP D |
| 0124 | f(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0125 | f(00D80000): ADD R0, SB, R0 [global array] |
| 0126 | g(81E00004): LDR R1, SP, 4H |
| 0127 | g(42191F40): SUB R2, R1, 1F40H |
| 0128 | g(DA0FFB1C): BLCC MT [trap=1, pos=4091] |
| 0129 | g(41110002): LSL R1, R1, 2H |
| 012A | g(01D80001): ADD R1, SB, R1 |
| 012B | h(81100064): LDR R1, R1, 64H |
| 012C | h(41120018): ASR R1, R1, 18H |
| 012D | i(41110018): LSL R1, R1, 18H |
| 012E | j(82E00008): LDR R2, SP, 8H |
| 012F | j(42210008): LSL R2, R2, 8H |
| 0130 | j(42230008): ROR R2, R2, 8H |
| ENDk fix; |
| 0131 | k(01180002): ADD R1, R1, R2 |
| 0132 | k(A1000064): STR R1, R0, 64H |
| 0133 | k(8FE00000): LDR LNK, SP, 0H |
| 0134 | k(4EE8000C): ADD SP, SP, CH |
| 0135 | k(C700000F): B LNK |
| |
| PROCEDURE FixLink*(L: LONGINT); |
| VAR L1: LONGINT; |
| BEGINl invalSB;m |
| 0136 | l .PROC 4 |
| 0136 | l(4EE9000C): SUB SP, SP, CH |
| 0137 | l(AFE00000): STR LNK, SP, 0H |
| 0138 | l(A0E00004): STR R0, SP, 4H |
| 0139 | m(F7FFFFDA): BL -38 [0114H] |
| WHILE L # 0 DOn L1 := code[L]o MOD 40000H;p fix(L,q pc-L-r1)s;t L := L1 ENDu |
| 013A | n(80E00004): LDR R0, SP, 4H |
| 013B | n(E1000013): BEQ 19 [014FH] |
| 013C | o(80E00004): LDR R0, SP, 4H |
| 013D | o(41091F40): SUB R1, R0, 1F40H |
| 013E | o(DA108F1C): BLCC MT [trap=1, pos=4239] |
| 013F | o(40010002): LSL R0, R0, 2H |
| 0140 | o .FIXUP D |
| 0140 | o(8D00001C): LDR SB, MT, MOD0 [ORG] |
| 0141 | o(00D80000): ADD R0, SB, R0 [global array] |
| 0142 | p(80000064): LDR R0, R0, 64H |
| 0143 | p(4001000E): LSL R0, R0, EH |
| 0144 | p(4003000E): ROR R0, R0, EH |
| 0145 | p(A0E00008): STR R0, SP, 8H |
| 0146 | q(80E00004): LDR R0, SP, 4H |
| 0147 | r(81D00018): LDR R1, SB, 18H |
| 0148 | r(82E00004): LDR R2, SP, 4H |
| 0149 | r(01190002): SUB R1, R1, R2 |
| 014A | s(41190001): SUB R1, R1, 1H |
| 014B | t(F7FFFFD0): BL -48 [011CH] |
| 014C | u(80E00008): LDR R0, SP, 8H |
| 014D | u(A0E00004): STR R0, SP, 4H |
| 014E | u(E7FFFFEB): B -21 [013AH] |
| ENDv FixLink; |
| 014F | v(8FE00000): LDR LNK, SP, 0H |
| 0150 | v(4EE8000C): ADD SP, SP, CH |
| 0151 | v(C700000F): B LNK |
| |
| PROCEDURE FixLinkWith(L0, dst: LONGINT); |
| VAR L1: LONGINT; |
| BEGINw |
| 0152 | w(4EE90010): SUB SP, SP, 10H |
| 0153 | w(AFE00000): STR LNK, SP, 0H |
| 0154 | w(A0E00004): STR R0, SP, 4H |
| 0155 | w(A1E00008): STR R1, SP, 8H |
| WHILE L0 # 0 DOx |
| 0156 | x(80E00004): LDR R0, SP, 4H |
| 0157 | x(E1000022): BEQ 34 [017AH] |
| L1 := code[L0]y MOD C24;z |
| 0158 | y(80E00004): LDR R0, SP, 4H |
| 0159 | y(41091F40): SUB R1, R0, 1F40H |
| 015A | y(DA11381C): BLCC MT [trap=1, pos=4408] |
| 015B | y(40010002): LSL R0, R0, 2H |
| 015C | y .FIXUP D |
| 015C | y(8D00001C): LDR SB, MT, MOD0 [ORG] |
| 015D | y(00D80000): ADD R0, SB, R0 [global array] |
| 015E | z(80000064): LDR R0, R0, 64H |
| 015F | z(40010008): LSL R0, R0, 8H |
| 0160 | z(40030008): ROR R0, R0, 8H |
| 0161 | z(A0E0000C): STR R0, SP, CH |
| code[L0]a := code[L0]b DIV C24 *c C24 +d ((dst - L0 -e 1)f MOD C24)g;h L0 := L1 |
| 0162 | a(80E00004): LDR R0, SP, 4H |
| 0163 | a(41091F40): SUB R1, R0, 1F40H |
| 0164 | a(DA11501C): BLCC MT [trap=1, pos=4432] |
| 0165 | a(40010002): LSL R0, R0, 2H |
| 0166 | a(00D80000): ADD R0, SB, R0 |
| 0167 | b(81E00004): LDR R1, SP, 4H |
| 0168 | b(42191F40): SUB R2, R1, 1F40H |
| 0169 | b(DA115C1C): BLCC MT [trap=1, pos=4444] |
| 016A | b(41110002): LSL R1, R1, 2H |
| 016B | b(01D80001): ADD R1, SB, R1 |
| 016C | c(81100064): LDR R1, R1, 64H |
| 016D | c(41120018): ASR R1, R1, 18H |
| 016E | d(41110018): LSL R1, R1, 18H |
| 016F | e(82E00008): LDR R2, SP, 8H |
| 0170 | e(83E00004): LDR R3, SP, 4H |
| 0171 | e(02290003): SUB R2, R2, R3 |
| 0172 | f(42290001): SUB R2, R2, 1H |
| 0173 | g(42210008): LSL R2, R2, 8H |
| 0174 | g(42230008): ROR R2, R2, 8H |
| 0175 | h(01180002): ADD R1, R1, R2 |
| 0176 | h(A1000064): STR R1, R0, 64H |
| ENDi |
| 0177 | i(80E0000C): LDR R0, SP, CH |
| 0178 | i(A0E00004): STR R0, SP, 4H |
| 0179 | i(E7FFFFDC): B -36 [0156H] |
| ENDj FixLinkWith; |
| 017A | j(8FE00000): LDR LNK, SP, 0H |
| 017B | j(4EE80010): ADD SP, SP, 10H |
| 017C | j(C700000F): B LNK |
| |
| PROCEDURE merged(L0, L1: LONGINT): LONGINT; |
| VAR L2, L3: LONGINT; |
| BEGINk |
| 017D | k(4EE90014): SUB SP, SP, 14H |
| 017E | k(AFE00000): STR LNK, SP, 0H |
| 017F | k(A0E00004): STR R0, SP, 4H |
| 0180 | k(A1E00008): STR R1, SP, 8H |
| IF L0 # 0 THENl L3 := L0;m |
| 0181 | l(80E00004): LDR R0, SP, 4H |
| 0182 | l(E1000021): BEQ 33 [01A4H] |
| 0183 | m(80E00004): LDR R0, SP, 4H |
| 0184 | m(A0E00010): STR R0, SP, 10H |
| REPEAT L2 := L3;n L3 := code[L2]o MOD 40000H UNTILp L3 = 0;q |
| 0185 | n(80E00010): LDR R0, SP, 10H |
| 0186 | n(A0E0000C): STR R0, SP, CH |
| 0187 | o(80E0000C): LDR R0, SP, CH |
| 0188 | o(41091F40): SUB R1, R0, 1F40H |
| 0189 | o(DA123E1C): BLCC MT [trap=1, pos=4670] |
| 018A | o(40010002): LSL R0, R0, 2H |
| 018B | o .FIXUP D |
| 018B | o(8D00002F): LDR SB, MT, MOD0 [ORG] |
| 018C | o(00D80000): ADD R0, SB, R0 [global array] |
| 018D | p(80000064): LDR R0, R0, 64H |
| 018E | p(4001000E): LSL R0, R0, EH |
| 018F | p(4003000E): ROR R0, R0, EH |
| 0190 | p(A0E00010): STR R0, SP, 10H |
| 0191 | q(80E00010): LDR R0, SP, 10H |
| 0192 | q(E9FFFFF2): BNE -14 [0185H] |
| code[L2]r := code[L2]s + L1;t L1 := L0 |
| 0193 | r(80E0000C): LDR R0, SP, CH |
| 0194 | r(41091F40): SUB R1, R0, 1F40H |
| 0195 | r(DA12661C): BLCC MT [trap=1, pos=4710] |
| 0196 | r(40010002): LSL R0, R0, 2H |
| 0197 | r .FIXUP D |
| 0197 | r(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0198 | r(00D80000): ADD R0, SB, R0 [global array] |
| 0199 | s(81E0000C): LDR R1, SP, CH |
| 019A | s(42191F40): SUB R2, R1, 1F40H |
| 019B | s(DA12721C): BLCC MT [trap=1, pos=4722] |
| 019C | s(41110002): LSL R1, R1, 2H |
| 019D | s(01D80001): ADD R1, SB, R1 |
| 019E | t(81100064): LDR R1, R1, 64H |
| 019F | t(82E00008): LDR R2, SP, 8H |
| 01A0 | t(01180002): ADD R1, R1, R2 |
| 01A1 | t(A1000064): STR R1, R0, 64H |
| ENDu ; |
| 01A2 | u(80E00004): LDR R0, SP, 4H |
| 01A3 | u(A0E00008): STR R0, SP, 8H |
| RETURN L1 |
| ENDv merged; |
| 01A4 | v(80E00008): LDR R0, SP, 8H |
| 01A5 | v(8FE00000): LDR LNK, SP, 0H |
| 01A6 | v(4EE80014): ADD SP, SP, 14H |
| 01A7 | v(C700000F): B LNK |
| |
| (* loading of operands and addresses into registers *) |
| |
| PROCEDURE GetSB(base: LONGINT); |
| BEGINw |
| 01A8 | w(4EE90008): SUB SP, SP, 8H |
| 01A9 | w(AFE00000): STR LNK, SP, 0H |
| 01AA | w(A0E00004): STR R0, SP, 4H |
| IF (version # 0)x & (y(base # curSB)z OR (abase # 0)b) THENc |
| 01AB | x .FIXUP D |
| 01AB | x(8D000014): LDR SB, MT, MOD0 [ORG] |
| 01AC | x(80D00048): LDR R0, SB, 48H [data] |
| 01AD | y(E1000017): BEQ 23 [01C5H] |
| 01AE | z(80E00004): LDR R0, SP, 4H |
| 01AF | z .FIXUP D |
| 01AF | z(8D000004): LDR SB, MT, MOD0 [ORG] |
| 01B0 | z(81D00030): LDR R1, SB, 30H [data] |
| 01B1 | z(00090001): SUB R0, R0, R1 |
| 01B2 | a(E9000002): BNE 2 [01B5H] |
| 01B3 | b(80E00004): LDR R0, SP, 4H |
| 01B4 | c(E1000010): BEQ 16 [01C5H] |
| Put2(Ldr,d SB,e -base,f pc-fixorgD)g;h fixorgD := pc-1;i curSB := base |
| 01B5 | d(40000008): MOV R0, R0, 8H |
| 01B6 | e(4100000D): MOV R1, R0, DH |
| 01B7 | f(82E00004): LDR R2, SP, 4H |
| 01B8 | f(43000000): MOV R3, R0, 0H |
| 01B9 | f(02390002): SUB R2, R3, R2 |
| 01BA | g .FIXUP D |
| 01BA | g(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 01BB | g(83D00018): LDR R3, SB, 18H [data] |
| 01BC | g(84D0003C): LDR R4, SB, 3CH |
| 01BD | g(03390004): SUB R3, R3, R4 |
| 01BE | h(F7FFFEB2): BL -334 [0071H] |
| 01BF | i .FIXUP D |
| 01BF | i(8D000005): LDR SB, MT, MOD0 [ORG] |
| 01C0 | i(80D00018): LDR R0, SB, 18H [data] |
| 01C1 | i(40090001): SUB R0, R0, 1H |
| 01C2 | i(A0D0003C): STR R0, SB, 3CH |
| ENDj |
| 01C3 | j(80E00004): LDR R0, SP, 4H |
| 01C4 | j(A0D00030): STR R0, SB, 30H |
| ENDk GetSB; |
| 01C5 | k(8FE00000): LDR LNK, SP, 0H |
| 01C6 | k(4EE80008): ADD SP, SP, 8H |
| 01C7 | k(C700000F): B LNK |
| |
| PROCEDURE NilCheck; |
| BEGINl IF check THENm Trap(EQ,n 4)o ENDp |
| 01C8 | l(4EE90004): SUB SP, SP, 4H |
| 01C9 | l(AFE00000): STR LNK, SP, 0H |
| 01CA | m .FIXUP D |
| 01CA | m(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 01CB | m(90D00044): LDR R0, SB, 44H [data] |
| 01CC | m(E1000003): BEQ 3 [01D0H] |
| 01CD | n(40000001): MOV R0, R0, 1H |
| 01CE | o(41000004): MOV R1, R0, 4H |
| 01CF | p(F7FFFF1C): BL -228 [00ECH] |
| ENDq NilCheck; |
| 01D0 | q(8FE00000): LDR LNK, SP, 0H |
| 01D1 | q(4EE80004): ADD SP, SP, 4H |
| 01D2 | q(C700000F): B LNK |
| |
| PROCEDURE load(VAR x: Item); |
| VAR op: LONGINT; |
| BEGINr |
| 01D3 | r(4EE90010): SUB SP, SP, 10H |
| 01D4 | r(AFE00000): STR LNK, SP, 0H |
| 01D5 | r(A0E00004): STR R0, SP, 4H |
| 01D6 | r(A1E00008): STR R1, SP, 8H |
| IF x.type.sizes = 1 THENt op := Ldr+1 ELSEu opv := Ldr ENDw ; |
| 01D7 | s(80E00004): LDR R0, SP, 4H |
| 01D8 | s(80000004): LDR R0, R0, 4H |
| 01D9 | s(D114404C): BLEQ MT [trap=4, pos=5184] |
| 01DA | t(80000020): LDR R0, R0, 20H |
| 01DB | t(40090001): SUB R0, R0, 1H |
| 01DC | t(E9000003): BNE 3 [01E0H] |
| 01DD | u(40000009): MOV R0, R0, 9H |
| 01DE | u(A0E0000C): STR R0, SP, CH |
| 01DF | v(E7000002): B 2 [01E2H] |
| 01E0 | w(40000008): MOV R0, R0, 8H |
| 01E1 | w(A0E0000C): STR R0, SP, CH |
| IF x.mode # Reg THENx |
| 01E2 | x(80E00004): LDR R0, SP, 4H |
| 01E3 | x(80000000): LDR R0, R0, 0H |
| 01E4 | x(4009000A): SUB R0, R0, AH |
| 01E5 | x(E10000D3): BEQ 211 [02B9H] |
| IF x.mode = ORB.Const THENy |
| 01E6 | y(80E00004): LDR R0, SP, 4H |
| 01E7 | y(80000000): LDR R0, R0, 0H |
| 01E8 | y(40090001): SUB R0, R0, 1H |
| 01E9 | y(E9000059): BNE 89 [0243H] |
| IF x.type.formz = ORB.Proc THENa |
| 01EA | z(80E00004): LDR R0, SP, 4H |
| 01EB | z(80000004): LDR R0, R0, 4H |
| 01EC | z(D114BB4C): BLEQ MT [trap=4, pos=5307] |
| 01ED | a(80000000): LDR R0, R0, 0H |
| 01EE | a(4009000A): SUB R0, R0, AH |
| 01EF | a(E9000027): BNE 39 [0217H] |
| IF x.r > 0 THENb ORS.Mark("not allowed")c |
| 01F0 | b(80E00004): LDR R0, SP, 4H |
| 01F1 | b(80000010): LDR R0, R0, 10H |
| 01F2 | b(40090000): SUB R0, R0, 0H |
| 01F3 | b(E6000005): BLE 5 [01F9H] |
| 01F4 | c .FIXUP D |
| 01F4 | c(8D00002A): LDR SB, MT, MOD0 [ORG] |
| 01F5 | c(40D888DC): ADD R0, SB, FFFF88DCH [data] |
| 01F6 | c(4100000C): MOV R1, R0, CH |
| ELSIFd xe.r = 0 THENf Put3(BL,g 7,h 0)i;j Put1a(Sub,k RH,l LNK,m pc*4 -n x.a)o |
| 01F7 | d .FIXUP P |
| 01F7 | d(F7209102): BL MOD2 [ORS] PROC9 |
| 01F8 | e(E700001D): B 29 [0216H] |
| 01F9 | f(80E00004): LDR R0, SP, 4H |
| 01FA | f(80000010): LDR R0, R0, 10H |
| 01FB | f(E900000F): BNE 15 [020BH] |
| 01FC | g(40000003): MOV R0, R0, 3H |
| 01FD | h(41000007): MOV R1, R0, 7H |
| 01FE | i(42000000): MOV R2, R0, 0H |
| 01FF | j(F7FFFE91): BL -367 [0091H] |
| 0200 | k(40000009): MOV R0, R0, 9H |
| 0201 | l .FIXUP D |
| 0201 | l(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0202 | l(81D0002C): LDR R1, SB, 2CH [data] |
| 0203 | m(4200000F): MOV R2, R0, FH |
| 0204 | n(83D00018): LDR R3, SB, 18H |
| 0205 | n(43310002): LSL R3, R3, 2H |
| 0206 | o(84E00004): LDR R4, SP, 4H |
| 0207 | o(84400008): LDR R4, R4, 8H |
| 0208 | o(03390004): SUB R3, R3, R4 |
| ELSEp GetSBq(x.r)r;s Put1(Add,t RH,u SB,v x.a + 100H)w (*mark as progbase-relative*) |
| 0209 | p(F7FFFE3A): BL -454 [0044H] |
| 020A | q(E700000B): B 11 [0216H] |
| 020B | r(80E00004): LDR R0, SP, 4H |
| 020C | r(80000010): LDR R0, R0, 10H |
| 020D | s(F7FFFF9A): BL -102 [01A8H] |
| 020E | t(40000008): MOV R0, R0, 8H |
| 020F | u .FIXUP D |
| 020F | u(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0210 | u(81D0002C): LDR R1, SB, 2CH [data] |
| 0211 | v(4200000D): MOV R2, R0, DH |
| 0212 | w(83E00004): LDR R3, SP, 4H |
| 0213 | w(83300008): LDR R3, R3, 8H |
| 0214 | w(43380100): ADD R3, R3, 100H |
| ENDx |
| 0215 | x(F7FFFE08): BL -504 [001EH] |
| ELSIF (yx.a <= 0FFFFH)z & (ax.a >= -10000H)b THENc Put1(Mov,d RH,e 0,f x.a)g |
| 0216 | y(E7000026): B 38 [023DH] |
| 0217 | z(80E00004): LDR R0, SP, 4H |
| 0218 | z(80000008): LDR R0, R0, 8H |
| 0219 | z(4009FFFF): SUB R0, R0, FFFFFFFFH |
| 021A | a(EE00000C): BGT 12 [0227H] |
| 021B | b(80E00004): LDR R0, SP, 4H |
| 021C | b(80000008): LDR R0, R0, 8H |
| 021D | b(50090000): SUB R0, R0, 0H |
| 021E | c(E5000008): BLT 8 [0227H] |
| 021F | d(40000000): MOV R0, R0, 0H |
| 0220 | e .FIXUP D |
| 0220 | e(8D000011): LDR SB, MT, MOD0 [ORG] |
| 0221 | e(81D0002C): LDR R1, SB, 2CH [data] |
| 0222 | f(42000000): MOV R2, R0, 0H |
| 0223 | g(83E00004): LDR R3, SP, 4H |
| 0224 | g(83300008): LDR R3, R3, 8H |
| ELSEh Put1i(Mov+U,j RH,k 0,l x.a DIV 10000H MODm 10000H)n;o |
| 0225 | h(F7FFFDF8): BL -520 [001EH] |
| 0226 | i(E7000016): B 22 [023DH] |
| 0227 | j(40002000): MOV R0, R0, 2000H |
| 0228 | k .FIXUP D |
| 0228 | k(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0229 | k(81D0002C): LDR R1, SB, 2CH [data] |
| 022A | l(42000000): MOV R2, R0, 0H |
| 022B | m(83E00004): LDR R3, SP, 4H |
| 022C | m(83300008): LDR R3, R3, 8H |
| 022D | m(43320010): ASR R3, R3, 10H |
| 022E | n(4334FFFF): AND R3, R3, FFFFFFFFH |
| 022F | o(F7FFFDEE): BL -530 [001EH] |
| IF x.a MOD 10000H #p 0 THENq Put1(Ior,r RH,s RH,t x.a MOD 10000H)u ENDv |
| 0230 | p(80E00004): LDR R0, SP, 4H |
| 0231 | p(80000008): LDR R0, R0, 8H |
| 0232 | p(4004FFFF): AND R0, R0, FFFFFFFFH |
| 0233 | q(40090000): SUB R0, R0, 0H |
| 0234 | q(E1000008): BEQ 8 [023DH] |
| 0235 | r(40000006): MOV R0, R0, 6H |
| 0236 | s .FIXUP D |
| 0236 | s(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0237 | s(81D0002C): LDR R1, SB, 2CH [data] |
| 0238 | t(82D0002C): LDR R2, SB, 2CH |
| 0239 | u(83E00004): LDR R3, SP, 4H |
| 023A | u(83300008): LDR R3, R3, 8H |
| 023B | u(4334FFFF): AND R3, R3, FFFFFFFFH |
| 023C | v(F7FFFDE1): BL -543 [001EH] |
| END ; |
| x.r := RH;w incR |
| 023D | w .FIXUP D |
| 023D | w(8D000007): LDR SB, MT, MOD0 [ORG] |
| 023E | w(80D0002C): LDR R0, SB, 2CH [data] |
| 023F | w(81E00004): LDR R1, SP, 4H |
| 0240 | w(A0100010): STR R0, R1, 10H |
| ELSIFx xy.mode = ORB.Var THENz |
| 0241 | x(F7FFFE6C): BL -404 [00AEH] |
| 0242 | y(E7000073): B 115 [02B6H] |
| 0243 | z(80E00004): LDR R0, SP, 4H |
| 0244 | z(80000000): LDR R0, R0, 0H |
| 0245 | z(40090002): SUB R0, R0, 2H |
| 0246 | z(E900001E): BNE 30 [0265H] |
| IF x.r > 0 THENa (*local*) Put2(op,b RH,c SP,d x.a + frame)e |
| 0247 | a(80E00004): LDR R0, SP, 4H |
| 0248 | a(80000010): LDR R0, R0, 10H |
| 0249 | a(40090000): SUB R0, R0, 0H |
| 024A | a(E600000A): BLE 10 [0255H] |
| 024B | b(80E0000C): LDR R0, SP, CH |
| 024C | c .FIXUP D |
| 024C | c(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 024D | c(81D0002C): LDR R1, SB, 2CH [data] |
| 024E | d(4200000E): MOV R2, R0, EH |
| 024F | e(83E00004): LDR R3, SP, 4H |
| 0250 | e(83300008): LDR R3, R3, 8H |
| 0251 | e(84D00034): LDR R4, SB, 34H |
| 0252 | e(03380004): ADD R3, R3, R4 |
| ELSEf GetSBg(x.r)h;i Put2(op,j RH,k SB,l x.a)m |
| 0253 | f(F7FFFE1D): BL -483 [0071H] |
| 0254 | g(E700000A): B 10 [025FH] |
| 0255 | h(80E00004): LDR R0, SP, 4H |
| 0256 | h(80000010): LDR R0, R0, 10H |
| 0257 | i(F7FFFF50): BL -176 [01A8H] |
| 0258 | j(80E0000C): LDR R0, SP, CH |
| 0259 | k .FIXUP D |
| 0259 | k(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 025A | k(81D0002C): LDR R1, SB, 2CH [data] |
| 025B | l(4200000D): MOV R2, R0, DH |
| 025C | m(83E00004): LDR R3, SP, 4H |
| 025D | m(83300008): LDR R3, R3, 8H |
| ENDn ; |
| 025E | n(F7FFFE12): BL -494 [0071H] |
| x.r := RH;o incR |
| 025F | o .FIXUP D |
| 025F | o(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0260 | o(80D0002C): LDR R0, SB, 2CH [data] |
| 0261 | o(81E00004): LDR R1, SP, 4H |
| 0262 | o(A0100010): STR R0, R1, 10H |
| ELSIFp xq.mode = ORB.Par THENr Put2(Ldr,s RH,t SP,u x.a + frame)v;w Put2(op,x RH,y RH,z x.b)a;b x.r := RH;c incR |
| 0263 | p(F7FFFE4A): BL -438 [00AEH] |
| 0264 | q(E7000051): B 81 [02B6H] |
| 0265 | r(80E00004): LDR R0, SP, 4H |
| 0266 | r(80000000): LDR R0, R0, 0H |
| 0267 | r(40090003): SUB R0, R0, 3H |
| 0268 | r(E9000016): BNE 22 [027FH] |
| 0269 | s(40000008): MOV R0, R0, 8H |
| 026A | t .FIXUP D |
| 026A | t(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 026B | t(81D0002C): LDR R1, SB, 2CH [data] |
| 026C | u(4200000E): MOV R2, R0, EH |
| 026D | v(83E00004): LDR R3, SP, 4H |
| 026E | v(83300008): LDR R3, R3, 8H |
| 026F | v(84D00034): LDR R4, SB, 34H |
| 0270 | v(03380004): ADD R3, R3, R4 |
| 0271 | w(F7FFFDFF): BL -513 [0071H] |
| 0272 | x(80E0000C): LDR R0, SP, CH |
| 0273 | y .FIXUP D |
| 0273 | y(8D000009): LDR SB, MT, MOD0 [ORG] |
| 0274 | y(81D0002C): LDR R1, SB, 2CH [data] |
| 0275 | z(82D0002C): LDR R2, SB, 2CH |
| 0276 | a(83E00004): LDR R3, SP, 4H |
| 0277 | a(8330000C): LDR R3, R3, CH |
| 0278 | b(F7FFFDF8): BL -520 [0071H] |
| 0279 | c .FIXUP D |
| 0279 | c(8D000006): LDR SB, MT, MOD0 [ORG] |
| 027A | c(80D0002C): LDR R0, SB, 2CH [data] |
| 027B | c(81E00004): LDR R1, SP, 4H |
| 027C | c(A0100010): STR R0, R1, 10H |
| ELSIFd xe.mode = RegI THENf Put2(op,g x.r,h x.r,i x.a)j |
| 027D | d(F7FFFE30): BL -464 [00AEH] |
| 027E | e(E7000037): B 55 [02B6H] |
| 027F | f(80E00004): LDR R0, SP, 4H |
| 0280 | f(80000000): LDR R0, R0, 0H |
| 0281 | f(4009000B): SUB R0, R0, BH |
| 0282 | f(E9000009): BNE 9 [028CH] |
| 0283 | g(80E0000C): LDR R0, SP, CH |
| 0284 | h(81E00004): LDR R1, SP, 4H |
| 0285 | h(81100010): LDR R1, R1, 10H |
| 0286 | i(82E00004): LDR R2, SP, 4H |
| 0287 | i(82200010): LDR R2, R2, 10H |
| 0288 | j(83E00004): LDR R3, SP, 4H |
| 0289 | j(83300008): LDR R3, R3, 8H |
| ELSIFk xl.mode = Cond THENm |
| 028A | k(F7FFFDE6): BL -538 [0071H] |
| 028B | l(E700002A): B 42 [02B6H] |
| 028C | m(80E00004): LDR R0, SP, 4H |
| 028D | m(80000000): LDR R0, R0, 0H |
| 028E | m(4009000C): SUB R0, R0, CH |
| 028F | m(E9000026): BNE 38 [02B6H] |
| Put3(BC,n negated(xo.r)p,q 2)r;s |
| 0290 | n(40000002): MOV R0, R0, 2H |
| 0291 | o(4EE90004): SUB SP, SP, 4H |
| 0292 | o(A0E00000): STR R0, SP, 0H |
| 0293 | p(80E00008): LDR R0, SP, 8H |
| 0294 | p(80000010): LDR R0, R0, 10H |
| 0295 | q(F7FFFE6D): BL -403 [0103H] |
| 0296 | q(01000000): MOV R1, R0, R0 |
| 0297 | q(80E00000): LDR R0, SP, 0H |
| 0298 | q(4EE80004): ADD SP, SP, 4H |
| 0299 | r(42000002): MOV R2, R0, 2H |
| 029A | s(F7FFFDF6): BL -522 [0091H] |
| FixLink(x.b)t;u Put1(Mov,v RH,w 0,x 1)y;z Put3(BC,a 7,b 1)c;d |
| 029B | t(80E00004): LDR R0, SP, 4H |
| 029C | t(8000000C): LDR R0, R0, CH |
| 029D | u(F7FFFE98): BL -360 [0136H] |
| 029E | v(40000000): MOV R0, R0, 0H |
| 029F | w .FIXUP D |
| 029F | w(8D000026): LDR SB, MT, MOD0 [ORG] |
| 02A0 | w(81D0002C): LDR R1, SB, 2CH [data] |
| 02A1 | x(42000000): MOV R2, R0, 0H |
| 02A2 | y(43000001): MOV R3, R0, 1H |
| 02A3 | z(F7FFFD7A): BL -646 [001EH] |
| 02A4 | a(40000002): MOV R0, R0, 2H |
| 02A5 | b(41000007): MOV R1, R0, 7H |
| 02A6 | c(42000001): MOV R2, R0, 1H |
| 02A7 | d(F7FFFDE9): BL -535 [0091H] |
| FixLink(x.a)e;f Put1(Mov,g RH,h 0,i 0)j;k x.r := RH;l incR |
| 02A8 | e(80E00004): LDR R0, SP, 4H |
| 02A9 | e(80000008): LDR R0, R0, 8H |
| 02AA | f(F7FFFE8B): BL -373 [0136H] |
| 02AB | g(40000000): MOV R0, R0, 0H |
| 02AC | h .FIXUP D |
| 02AC | h(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 02AD | h(81D0002C): LDR R1, SB, 2CH [data] |
| 02AE | i(42000000): MOV R2, R0, 0H |
| 02AF | j(43000000): MOV R3, R0, 0H |
| 02B0 | k(F7FFFD6D): BL -659 [001EH] |
| 02B1 | l .FIXUP D |
| 02B1 | l(8D000005): LDR SB, MT, MOD0 [ORG] |
| 02B2 | l(80D0002C): LDR R0, SB, 2CH [data] |
| 02B3 | l(81E00004): LDR R1, SP, 4H |
| 02B4 | l(A0100010): STR R0, R1, 10H |
| ENDm ; |
| 02B5 | m(F7FFFDF8): BL -520 [00AEH] |
| x.mode := Reg |
| ENDn |
| 02B6 | n(4000000A): MOV R0, R0, AH |
| 02B7 | n(81E00004): LDR R1, SP, 4H |
| 02B8 | n(A0100000): STR R0, R1, 0H |
| ENDo load; |
| 02B9 | o(8FE00000): LDR LNK, SP, 0H |
| 02BA | o(4EE80010): ADD SP, SP, 10H |
| 02BB | o(C700000F): B LNK |
| |
| PROCEDURE loadAdr(VAR x: Item); |
| BEGINp |
| 02BC | p(4EE9000C): SUB SP, SP, CH |
| 02BD | p(AFE00000): STR LNK, SP, 0H |
| 02BE | p(A0E00004): STR R0, SP, 4H |
| 02BF | p(A1E00008): STR R1, SP, 8H |
| IF x.mode = ORB.Var THENq |
| 02C0 | q(80E00004): LDR R0, SP, 4H |
| 02C1 | q(80000000): LDR R0, R0, 0H |
| 02C2 | q(40090002): SUB R0, R0, 2H |
| 02C3 | q(E900001E): BNE 30 [02E2H] |
| IF x.r > 0 THENr (*local*) Put1a(Add,s RH,t SP,u x.a + frame)v |
| 02C4 | r(80E00004): LDR R0, SP, 4H |
| 02C5 | r(80000010): LDR R0, R0, 10H |
| 02C6 | r(40090000): SUB R0, R0, 0H |
| 02C7 | r(E600000A): BLE 10 [02D2H] |
| 02C8 | s(40000008): MOV R0, R0, 8H |
| 02C9 | t .FIXUP D |
| 02C9 | t(8D000018): LDR SB, MT, MOD0 [ORG] |
| 02CA | t(81D0002C): LDR R1, SB, 2CH [data] |
| 02CB | u(4200000E): MOV R2, R0, EH |
| 02CC | v(83E00004): LDR R3, SP, 4H |
| 02CD | v(83300008): LDR R3, R3, 8H |
| 02CE | v(84D00034): LDR R4, SB, 34H |
| 02CF | v(03380004): ADD R3, R3, R4 |
| ELSEw GetSBx(x.r)y;z Put1a(Add,a RH,b SB,c x.a)d |
| 02D0 | w(F7FFFD73): BL -653 [0044H] |
| 02D1 | x(E700000A): B 10 [02DCH] |
| 02D2 | y(80E00004): LDR R0, SP, 4H |
| 02D3 | y(80000010): LDR R0, R0, 10H |
| 02D4 | z(F7FFFED3): BL -301 [01A8H] |
| 02D5 | a(40000008): MOV R0, R0, 8H |
| 02D6 | b .FIXUP D |
| 02D6 | b(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 02D7 | b(81D0002C): LDR R1, SB, 2CH [data] |
| 02D8 | c(4200000D): MOV R2, R0, DH |
| 02D9 | d(83E00004): LDR R3, SP, 4H |
| 02DA | d(83300008): LDR R3, R3, 8H |
| ENDe ; |
| 02DB | e(F7FFFD68): BL -664 [0044H] |
| x.r := RH;f incR |
| 02DC | f .FIXUP D |
| 02DC | f(8D000006): LDR SB, MT, MOD0 [ORG] |
| 02DD | f(80D0002C): LDR R0, SB, 2CH [data] |
| 02DE | f(81E00004): LDR R1, SP, 4H |
| 02DF | f(A0100010): STR R0, R1, 10H |
| ELSIFg xh.mode = ORB.Par THENi Put2(Ldr,j RH,k SP,l x.a + frame)m;n |
| 02E0 | g(F7FFFDCD): BL -563 [00AEH] |
| 02E1 | h(E7000031): B 49 [0313H] |
| 02E2 | i(80E00004): LDR R0, SP, 4H |
| 02E3 | i(80000000): LDR R0, R0, 0H |
| 02E4 | i(40090003): SUB R0, R0, 3H |
| 02E5 | i(E9000019): BNE 25 [02FFH] |
| 02E6 | j(40000008): MOV R0, R0, 8H |
| 02E7 | k .FIXUP D |
| 02E7 | k(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 02E8 | k(81D0002C): LDR R1, SB, 2CH [data] |
| 02E9 | l(4200000E): MOV R2, R0, EH |
| 02EA | m(83E00004): LDR R3, SP, 4H |
| 02EB | m(83300008): LDR R3, R3, 8H |
| 02EC | m(84D00034): LDR R4, SB, 34H |
| 02ED | m(03380004): ADD R3, R3, R4 |
| 02EE | n(F7FFFD82): BL -638 [0071H] |
| IF x.b # 0 THENo Put1a(Add,p RH,q RH,r x.b)s ENDt ; |
| 02EF | o(80E00004): LDR R0, SP, 4H |
| 02F0 | o(8000000C): LDR R0, R0, CH |
| 02F1 | o(E1000007): BEQ 7 [02F9H] |
| 02F2 | p(40000008): MOV R0, R0, 8H |
| 02F3 | q .FIXUP D |
| 02F3 | q(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 02F4 | q(81D0002C): LDR R1, SB, 2CH [data] |
| 02F5 | r(82D0002C): LDR R2, SB, 2CH |
| 02F6 | s(83E00004): LDR R3, SP, 4H |
| 02F7 | s(8330000C): LDR R3, R3, CH |
| 02F8 | t(F7FFFD4B): BL -693 [0044H] |
| x.r := RH;u incR |
| 02F9 | u .FIXUP D |
| 02F9 | u(8D000006): LDR SB, MT, MOD0 [ORG] |
| 02FA | u(80D0002C): LDR R0, SB, 2CH [data] |
| 02FB | u(81E00004): LDR R1, SP, 4H |
| 02FC | u(A0100010): STR R0, R1, 10H |
| ELSIFv xw.mode = RegI THENx |
| 02FD | v(F7FFFDB0): BL -592 [00AEH] |
| 02FE | w(E7000014): B 20 [0313H] |
| 02FF | x(80E00004): LDR R0, SP, 4H |
| 0300 | x(80000000): LDR R0, R0, 0H |
| 0301 | x(4009000B): SUB R0, R0, BH |
| 0302 | x(E900000C): BNE 12 [030FH] |
| IF x.a # 0 THENy Put1a(Add,z x.r,a x.r,b x.a)c ENDd |
| 0303 | y(80E00004): LDR R0, SP, 4H |
| 0304 | y(80000008): LDR R0, R0, 8H |
| 0305 | y(E1000008): BEQ 8 [030EH] |
| 0306 | z(40000008): MOV R0, R0, 8H |
| 0307 | a(81E00004): LDR R1, SP, 4H |
| 0308 | a(81100010): LDR R1, R1, 10H |
| 0309 | b(82E00004): LDR R2, SP, 4H |
| 030A | b(82200010): LDR R2, R2, 10H |
| 030B | c(83E00004): LDR R3, SP, 4H |
| 030C | c(83300008): LDR R3, R3, 8H |
| 030D | d(F7FFFD36): BL -714 [0044H] |
| ELSE ORSe.Mark("address error")f |
| 030E | e(E7000004): B 4 [0313H] |
| 030F | f .FIXUP D |
| 030F | f(8D000016): LDR SB, MT, MOD0 [ORG] |
| 0310 | f(40D888E8): ADD R0, SB, FFFF88E8H [data] |
| 0311 | f(4100000E): MOV R1, R0, EH |
| ENDg ; |
| 0312 | g .FIXUP P |
| 0312 | g(F720911B): BL MOD2 [ORS] PROC9 |
| x.mode := Reg |
| ENDh loadAdr; |
| 0313 | h(4000000A): MOV R0, R0, AH |
| 0314 | h(81E00004): LDR R1, SP, 4H |
| 0315 | h(A0100000): STR R0, R1, 0H |
| 0316 | h(8FE00000): LDR LNK, SP, 0H |
| 0317 | h(4EE8000C): ADD SP, SP, CH |
| 0318 | h(C700000F): B LNK |
| |
| PROCEDURE loadCond(VAR x: Item); |
| BEGINi |
| 0319 | i(4EE9000C): SUB SP, SP, CH |
| 031A | i(AFE00000): STR LNK, SP, 0H |
| 031B | i(A0E00004): STR R0, SP, 4H |
| 031C | i(A1E00008): STR R1, SP, 8H |
| IF x.type.formj = ORB.Bool THENk |
| 031D | j(80E00004): LDR R0, SP, 4H |
| 031E | j(80000004): LDR R0, R0, 4H |
| 031F | j(D11B2C4C): BLEQ MT [trap=4, pos=6956] |
| 0320 | k(80000000): LDR R0, R0, 0H |
| 0321 | k(40090002): SUB R0, R0, 2H |
| 0322 | k(E9000033): BNE 51 [0356H] |
| IF x.mode = ORB.Const THENl x.r := 15 - x.a*8 |
| 0323 | l(80E00004): LDR R0, SP, 4H |
| 0324 | l(80000000): LDR R0, R0, 0H |
| 0325 | l(40090001): SUB R0, R0, 1H |
| 0326 | l(E9000008): BNE 8 [032FH] |
| ELSEm loadn(x)o;p |
| 0327 | m(80E00004): LDR R0, SP, 4H |
| 0328 | m(80000008): LDR R0, R0, 8H |
| 0329 | m(40010003): LSL R0, R0, 3H |
| 032A | m(4100000F): MOV R1, R0, FH |
| 032B | m(00190000): SUB R0, R1, R0 |
| 032C | m(81E00004): LDR R1, SP, 4H |
| 032D | m(A0100010): STR R0, R1, 10H |
| 032E | n(E700001D): B 29 [034CH] |
| 032F | o(80E00004): LDR R0, SP, 4H |
| 0330 | o(81E00008): LDR R1, SP, 8H |
| 0331 | p(F7FFFEA1): BL -351 [01D3H] |
| IF code[pc-1]q DIV 40000000H #r -2 THENs Put1(Cmp,t x.r,u x.r,v 0)w ENDx ; |
| 0332 | q .FIXUP D |
| 0332 | q(8D000023): LDR SB, MT, MOD0 [ORG] |
| 0333 | q(80D00018): LDR R0, SB, 18H [data] |
| 0334 | q(40090001): SUB R0, R0, 1H |
| 0335 | q(41091F40): SUB R1, R0, 1F40H |
| 0336 | q(DA1B991C): BLCC MT [trap=1, pos=7065] |
| 0337 | q(40010002): LSL R0, R0, 2H |
| 0338 | q(00D80000): ADD R0, SB, R0 |
| 0339 | r(80000064): LDR R0, R0, 64H |
| 033A | r(4002001E): ASR R0, R0, 1EH |
| 033B | s(5009FFFE): SUB R0, R0, FFFFFFFEH |
| 033C | s(E1000007): BEQ 7 [0344H] |
| 033D | t(40000009): MOV R0, R0, 9H |
| 033E | u(81E00004): LDR R1, SP, 4H |
| 033F | u(81100010): LDR R1, R1, 10H |
| 0340 | v(82E00004): LDR R2, SP, 4H |
| 0341 | v(82200010): LDR R2, R2, 10H |
| 0342 | w(43000000): MOV R3, R0, 0H |
| 0343 | x(F7FFFCDA): BL -806 [001EH] |
| x.r := NE;y DEC(RH) |
| 0344 | y(40000009): MOV R0, R0, 9H |
| 0345 | y(81E00004): LDR R1, SP, 4H |
| 0346 | y(A0100010): STR R0, R1, 10H |
| ENDz ; |
| 0347 | z .FIXUP D |
| 0347 | z(8D000015): LDR SB, MT, MOD0 [ORG] |
| 0348 | z(40D8002C): ADD R0, SB, 2CH [data] |
| 0349 | z(81000000): LDR R1, R0, 0H |
| 034A | z(41190001): SUB R1, R1, 1H |
| 034B | z(A1000000): STR R1, R0, 0H |
| x.mode := Cond;a x.a := 0;b x.b := 0 |
| 034C | a(4000000C): MOV R0, R0, CH |
| 034D | a(81E00004): LDR R1, SP, 4H |
| 034E | a(A0100000): STR R0, R1, 0H |
| 034F | b(40000000): MOV R0, R0, 0H |
| 0350 | b(81E00004): LDR R1, SP, 4H |
| 0351 | b(A0100008): STR R0, R1, 8H |
| ELSEc ORSd.Mark("not Boolean?")e |
| 0352 | c(40000000): MOV R0, R0, 0H |
| 0353 | c(81E00004): LDR R1, SP, 4H |
| 0354 | c(A010000C): STR R0, R1, CH |
| 0355 | d(E7000004): B 4 [035AH] |
| 0356 | e .FIXUP D |
| 0356 | e(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 0357 | e(40D888F8): ADD R0, SB, FFFF88F8H [data] |
| 0358 | e(4100000D): MOV R1, R0, DH |
| ENDf |
| 0359 | f .FIXUP P |
| 0359 | f(F7209047): BL MOD2 [ORS] PROC9 |
| ENDg loadCond; |
| 035A | g(8FE00000): LDR LNK, SP, 0H |
| 035B | g(4EE8000C): ADD SP, SP, CH |
| 035C | g(C700000F): B LNK |
| |
| PROCEDURE loadTypTagAdr(T: ORB.Type); |
| VAR x: Item; |
| BEGINh x.mode := ORB.Var;i x.a := T.lenj;k x.r := -T.mnol;m loadAdr(x)n |
| 035D | h(4EE90020): SUB SP, SP, 20H |
| 035E | h(AFE00000): STR LNK, SP, 0H |
| 035F | h(A0E00004): STR R0, SP, 4H |
| 0360 | i(40000002): MOV R0, R0, 2H |
| 0361 | i(A0E00008): STR R0, SP, 8H |
| 0362 | j(80E00004): LDR R0, SP, 4H |
| 0363 | j(D11CBA4C): BLEQ MT [trap=4, pos=7354] |
| 0364 | k(80000010): LDR R0, R0, 10H |
| 0365 | k(A0E00010): STR R0, SP, 10H |
| 0366 | l(80E00004): LDR R0, SP, 4H |
| 0367 | l(D11CC94C): BLEQ MT [trap=4, pos=7369] |
| 0368 | m(80000008): LDR R0, R0, 8H |
| 0369 | m(41000000): MOV R1, R0, 0H |
| 036A | m(00190000): SUB R0, R1, R0 |
| 036B | m(A0E00018): STR R0, SP, 18H |
| 036C | n(40E80008): ADD R0, SP, 8H |
| 036D | n .FIXUP D |
| 036D | n(8D000017): LDR SB, MT, MOD0 [ORG] |
| 036E | n(41D80000): ADD R1, SB, 0H [data] |
| ENDo loadTypTagAdr; |
| 036F | o(F7FFFF4C): BL -180 [02BCH] |
| 0370 | o(8FE00000): LDR LNK, SP, 0H |
| 0371 | o(4EE80020): ADD SP, SP, 20H |
| 0372 | o(C700000F): B LNK |
| |
| PROCEDURE loadStringAdr(VAR x: Item); |
| BEGINp GetSB(0)q;r Put1a(Add,s RH,t SB,u varsize+x.a)v;w x.mode := Reg;x x.r := RH;y incR |
| 0373 | p(4EE9000C): SUB SP, SP, CH |
| 0374 | p(AFE00000): STR LNK, SP, 0H |
| 0375 | p(A0E00004): STR R0, SP, 4H |
| 0376 | p(A1E00008): STR R1, SP, 8H |
| 0377 | q(40000000): MOV R0, R0, 0H |
| 0378 | r(F7FFFE2F): BL -465 [01A8H] |
| 0379 | s(40000008): MOV R0, R0, 8H |
| 037A | t .FIXUP D |
| 037A | t(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 037B | t(81D0002C): LDR R1, SB, 2CH [data] |
| 037C | u(4200000D): MOV R2, R0, DH |
| 037D | v(83D0001C): LDR R3, SB, 1CH |
| 037E | v(84E00004): LDR R4, SP, 4H |
| 037F | v(84400008): LDR R4, R4, 8H |
| 0380 | v(03380004): ADD R3, R3, R4 |
| 0381 | w(F7FFFCC2): BL -830 [0044H] |
| 0382 | x(4000000A): MOV R0, R0, AH |
| 0383 | x(81E00004): LDR R1, SP, 4H |
| 0384 | x(A0100000): STR R0, R1, 0H |
| 0385 | y .FIXUP D |
| 0385 | y(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0386 | y(80D0002C): LDR R0, SB, 2CH [data] |
| 0387 | y(81E00004): LDR R1, SP, 4H |
| 0388 | y(A0100010): STR R0, R1, 10H |
| ENDz loadStringAdr; |
| 0389 | z(F7FFFD24): BL -732 [00AEH] |
| 038A | z(8FE00000): LDR LNK, SP, 0H |
| 038B | z(4EE8000C): ADD SP, SP, CH |
| 038C | z(C700000F): B LNK |
| |
| (* Items: Conversion from constants or from Objects on the Heap to Items on the Stack*) |
| |
| PROCEDURE MakeConstItem*(VAR x: Item; typ: ORB.Type; val: LONGINT); |
| BEGINa x.mode := ORB.Const;b x.type := typ;c x.a := val |
| 038D | a .PROC 5 |
| 038D | a(4EE90014): SUB SP, SP, 14H |
| 038E | a(AFE00000): STR LNK, SP, 0H |
| 038F | a(A0E00004): STR R0, SP, 4H |
| 0390 | a(A1E00008): STR R1, SP, 8H |
| 0391 | a(A2E0000C): STR R2, SP, CH |
| 0392 | a(A3E00010): STR R3, SP, 10H |
| 0393 | b(40000001): MOV R0, R0, 1H |
| 0394 | b(81E00004): LDR R1, SP, 4H |
| 0395 | b(A0100000): STR R0, R1, 0H |
| 0396 | c(80E0000C): LDR R0, SP, CH |
| 0397 | c(81E00004): LDR R1, SP, 4H |
| 0398 | c(A0100004): STR R0, R1, 4H |
| ENDd MakeConstItem; |
| 0399 | d(80E00010): LDR R0, SP, 10H |
| 039A | d(81E00004): LDR R1, SP, 4H |
| 039B | d(A0100008): STR R0, R1, 8H |
| 039C | d(8FE00000): LDR LNK, SP, 0H |
| 039D | d(4EE80014): ADD SP, SP, 14H |
| 039E | d(C700000F): B LNK |
| |
| PROCEDURE MakeRealItem*(VAR x: Item; val: REAL); |
| BEGINe x.mode := ORB.Const;f x.type := ORB.realType;g x.a := SYSTEM.VAL(LONGINT, val) |
| 039F | e .PROC 6 |
| 039F | e(4EE90010): SUB SP, SP, 10H |
| 03A0 | e(AFE00000): STR LNK, SP, 0H |
| 03A1 | e(A0E00004): STR R0, SP, 4H |
| 03A2 | e(A1E00008): STR R1, SP, 8H |
| 03A3 | e(A2E0000C): STR R2, SP, CH |
| 03A4 | f(40000001): MOV R0, R0, 1H |
| 03A5 | f(81E00004): LDR R1, SP, 4H |
| 03A6 | f(A0100000): STR R0, R1, 0H |
| 03A7 | g .FIXUP D |
| 03A7 | g(8D400022): LDR SB, MT, MOD4 [ORB] |
| 03A8 | g(80D0000A): LDR R0, SB, VAR10 |
| 03A9 | g(81E00004): LDR R1, SP, 4H |
| 03AA | g(A0100004): STR R0, R1, 4H |
| ENDh MakeRealItem; |
| 03AB | h(80E0000C): LDR R0, SP, CH |
| 03AC | h(81E00004): LDR R1, SP, 4H |
| 03AD | h(A0100008): STR R0, R1, 8H |
| 03AE | h(8FE00000): LDR LNK, SP, 0H |
| 03AF | h(4EE80010): ADD SP, SP, 10H |
| 03B0 | h(C700000F): B LNK |
| |
| PROCEDURE MakeStringItem*(VAR x: Item; len: LONGINT); (*copies string from ORS-buffer to ORG-string array*) |
| VAR i: LONGINT; |
| BEGINi x.mode := ORB.Const;j x.type := ORB.strType;k x.a := strx;l x.b := len;m i := 0;n |
| 03B1 | i .PROC 7 |
| 03B1 | i(4EE90014): SUB SP, SP, 14H |
| 03B2 | i(AFE00000): STR LNK, SP, 0H |
| 03B3 | i(A0E00004): STR R0, SP, 4H |
| 03B4 | i(A1E00008): STR R1, SP, 8H |
| 03B5 | i(A2E0000C): STR R2, SP, CH |
| 03B6 | j(40000001): MOV R0, R0, 1H |
| 03B7 | j(81E00004): LDR R1, SP, 4H |
| 03B8 | j(A0100000): STR R0, R1, 0H |
| 03B9 | k .FIXUP D |
| 03B9 | k(8D400012): LDR SB, MT, MOD4 [ORB] |
| 03BA | k(80D0000E): LDR R0, SB, VAR14 |
| 03BB | k(81E00004): LDR R1, SP, 4H |
| 03BC | k(A0100004): STR R0, R1, 4H |
| 03BD | l .FIXUP D |
| 03BD | l(8D000004): LDR SB, MT, MOD0 [ORG] |
| 03BE | l(80D00024): LDR R0, SB, 24H [data] |
| 03BF | l(81E00004): LDR R1, SP, 4H |
| 03C0 | l(A0100008): STR R0, R1, 8H |
| 03C1 | m(80E0000C): LDR R0, SP, CH |
| 03C2 | m(81E00004): LDR R1, SP, 4H |
| 03C3 | m(A010000C): STR R0, R1, CH |
| 03C4 | n(40000000): MOV R0, R0, 0H |
| 03C5 | n(A0E00010): STR R0, SP, 10H |
| IF strx + len +o 4 <p maxStrx THENq |
| 03C6 | o(80D00024): LDR R0, SB, 24H |
| 03C7 | o(81E0000C): LDR R1, SP, CH |
| 03C8 | o(00080001): ADD R0, R0, R1 |
| 03C9 | p(40080004): ADD R0, R0, 4H |
| 03CA | q(40090960): SUB R0, R0, 960H |
| 03CB | q(ED00002E): BGE 46 [03FAH] |
| WHILE len > 0 DOr str[strx]s := ORS.str[i]t;u INC(strx);v INC(i);w DEC(len) ENDx ; |
| 03CC | r(80E0000C): LDR R0, SP, CH |
| 03CD | r(40090000): SUB R0, R0, 0H |
| 03CE | r(E6000019): BLE 25 [03E8H] |
| 03CF | s .FIXUP D |
| 03CF | s(8D000012): LDR SB, MT, MOD0 [ORG] |
| 03D0 | s(80D00024): LDR R0, SB, 24H [data] |
| 03D1 | s(41090960): SUB R1, R0, 960H |
| 03D2 | s(DA20231C): BLCC MT [trap=1, pos=8227] |
| 03D3 | s(00D80000): ADD R0, SB, R0 |
| 03D4 | t(81E00010): LDR R1, SP, 10H |
| 03D5 | t(42190100): SUB R2, R1, 100H |
| 03D6 | t(DA20311C): BLCC MT [trap=1, pos=8241] |
| 03D7 | t .FIXUP D |
| 03D7 | t(8D200008): LDR SB, MT, MOD2 [ORS] |
| 03D8 | t(42D80005): ADD R2, SB, VAR5 |
| 03D9 | t(01280001): ADD R1, R2, R1 |
| 03DA | u(91100000): LDR R1, R1, 0H |
| 03DB | u(B1007F44): STR R1, R0, 7F44H |
| 03DC | v .FIXUP D |
| 03DC | v(8D000005): LDR SB, MT, MOD0 [ORG] |
| 03DD | v(40D80024): ADD R0, SB, 24H [data] |
| 03DE | v(81000000): LDR R1, R0, 0H |
| 03DF | v(41180001): ADD R1, R1, 1H |
| 03E0 | v(A1000000): STR R1, R0, 0H |
| 03E1 | w(80E00010): LDR R0, SP, 10H |
| 03E2 | w(40080001): ADD R0, R0, 1H |
| 03E3 | w(A0E00010): STR R0, SP, 10H |
| 03E4 | x(80E0000C): LDR R0, SP, CH |
| 03E5 | x(40090001): SUB R0, R0, 1H |
| 03E6 | x(A0E0000C): STR R0, SP, CH |
| 03E7 | x(E7FFFFE4): B -28 [03CCH] |
| WHILE strx MOD 4 #y 0 DOz str[strx]a := 0X;b INC(strx) ENDc |
| 03E8 | y .FIXUP D |
| 03E8 | y(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 03E9 | y(80D00024): LDR R0, SB, 24H [data] |
| 03EA | y(40040003): AND R0, R0, 3H |
| 03EB | z(40090000): SUB R0, R0, 0H |
| 03EC | z(E100000C): BEQ 12 [03F9H] |
| 03ED | a .FIXUP D |
| 03ED | a(8D000005): LDR SB, MT, MOD0 [ORG] |
| 03EE | a(80D00024): LDR R0, SB, 24H [data] |
| 03EF | a(41090960): SUB R1, R0, 960H |
| 03F0 | a(DA207C1C): BLCC MT [trap=1, pos=8316] |
| 03F1 | a(00D80000): ADD R0, SB, R0 |
| 03F2 | b(41000000): MOV R1, R0, 0H |
| 03F3 | b(B1007F44): STR R1, R0, 7F44H |
| 03F4 | c(40D80024): ADD R0, SB, 24H |
| 03F5 | c(81000000): LDR R1, R0, 0H |
| 03F6 | c(41180001): ADD R1, R1, 1H |
| 03F7 | c(A1000000): STR R1, R0, 0H |
| 03F8 | c(E7FFFFEF): B -17 [03E8H] |
| ELSE ORSd.Mark("too many strings")e |
| 03F9 | d(E7000004): B 4 [03FEH] |
| 03FA | e .FIXUP D |
| 03FA | e(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 03FB | e(40D88908): ADD R0, SB, FFFF8908H [data] |
| 03FC | e(41000011): MOV R1, R0, 11H |
| ENDf |
| 03FD | f .FIXUP P |
| 03FD | f(F72090A4): BL MOD2 [ORS] PROC9 |
| ENDg MakeStringItem; |
| 03FE | g(8FE00000): LDR LNK, SP, 0H |
| 03FF | g(4EE80014): ADD SP, SP, 14H |
| 0400 | g(C700000F): B LNK |
| |
| PROCEDURE MakeItem*(VAR x: Item; y: ORB.Object; curlev: LONGINT); |
| BEGINh x.mode := y.classi;j x.type := y.typek;l x.a := y.valm;n x.rdo := y.rdoo;p |
| 0401 | h .PROC 8 |
| 0401 | h(4EE90014): SUB SP, SP, 14H |
| 0402 | h(AFE00000): STR LNK, SP, 0H |
| 0403 | h(A0E00004): STR R0, SP, 4H |
| 0404 | h(A1E00008): STR R1, SP, 8H |
| 0405 | h(A2E0000C): STR R2, SP, CH |
| 0406 | h(A3E00010): STR R3, SP, 10H |
| 0407 | i(80E0000C): LDR R0, SP, CH |
| 0408 | i(D121344C): BLEQ MT [trap=4, pos=8500] |
| 0409 | j(90000000): LDR R0, R0, 0H |
| 040A | j(81E00004): LDR R1, SP, 4H |
| 040B | j(A0100000): STR R0, R1, 0H |
| 040C | k(80E0000C): LDR R0, SP, CH |
| 040D | k(D121464C): BLEQ MT [trap=4, pos=8518] |
| 040E | l(80000010): LDR R0, R0, 10H |
| 040F | l(81E00004): LDR R1, SP, 4H |
| 0410 | l(A0100004): STR R0, R1, 4H |
| 0411 | m(80E0000C): LDR R0, SP, CH |
| 0412 | m(D121544C): BLEQ MT [trap=4, pos=8532] |
| 0413 | n(80000034): LDR R0, R0, 34H |
| 0414 | n(81E00004): LDR R1, SP, 4H |
| 0415 | n(A0100008): STR R0, R1, 8H |
| 0416 | o(80E0000C): LDR R0, SP, CH |
| 0417 | o(D121644C): BLEQ MT [trap=4, pos=8548] |
| 0418 | p(90000003): LDR R0, R0, 3H |
| 0419 | p(81E00004): LDR R1, SP, 4H |
| 041A | p(B0100014): STR R0, R1, 14H |
| IF y.classq = ORB.Par THENr x.b := 0 |
| 041B | q(80E0000C): LDR R0, SP, CH |
| 041C | q(D121744C): BLEQ MT [trap=4, pos=8564] |
| 041D | r(90000000): LDR R0, R0, 0H |
| 041E | r(40090003): SUB R0, R0, 3H |
| 041F | r(E9000004): BNE 4 [0424H] |
| ELSIFs yt.classu = ORB.Typ THENv x.a := y.typew.lenx;y x.r := -y.levz |
| 0420 | s(40000000): MOV R0, R0, 0H |
| 0421 | s(81E00004): LDR R1, SP, 4H |
| 0422 | s(A010000C): STR R0, R1, CH |
| 0423 | t(E700002B): B 43 [044FH] |
| 0424 | u(80E0000C): LDR R0, SP, CH |
| 0425 | u(D1219E4C): BLEQ MT [trap=4, pos=8606] |
| 0426 | v(90000000): LDR R0, R0, 0H |
| 0427 | v(40090005): SUB R0, R0, 5H |
| 0428 | v(E900000F): BNE 15 [0438H] |
| 0429 | w(80E0000C): LDR R0, SP, CH |
| 042A | w(D121BB4C): BLEQ MT [trap=4, pos=8635] |
| 042B | x(80000010): LDR R0, R0, 10H |
| 042C | x(D121BF4C): BLEQ MT [trap=4, pos=8639] |
| 042D | y(80000010): LDR R0, R0, 10H |
| 042E | y(81E00004): LDR R1, SP, 4H |
| 042F | y(A0100008): STR R0, R1, 8H |
| 0430 | z(80E0000C): LDR R0, SP, CH |
| 0431 | z(D121CE4C): BLEQ MT [trap=4, pos=8654] |
| ELSIFa (by.classc = ORB.Const)d & (ey.typef.formg = ORB.String)h THENi x.b := y.levj (*len*) |
| 0432 | a(80000004): LDR R0, R0, 4H |
| 0433 | a(41000000): MOV R1, R0, 0H |
| 0434 | a(00190000): SUB R0, R1, R0 |
| 0435 | a(81E00004): LDR R1, SP, 4H |
| 0436 | a(A0100010): STR R0, R1, 10H |
| 0437 | b(E7000017): B 23 [044FH] |
| 0438 | c(80E0000C): LDR R0, SP, CH |
| 0439 | c(D121E14C): BLEQ MT [trap=4, pos=8673] |
| 043A | d(90000000): LDR R0, R0, 0H |
| 043B | d(40090001): SUB R0, R0, 1H |
| 043C | e(E900000D): BNE 13 [044AH] |
| 043D | f(80E0000C): LDR R0, SP, CH |
| 043E | f(D121F84C): BLEQ MT [trap=4, pos=8696] |
| 043F | g(80000010): LDR R0, R0, 10H |
| 0440 | g(D121FD4C): BLEQ MT [trap=4, pos=8701] |
| 0441 | h(80000000): LDR R0, R0, 0H |
| 0442 | h(4009000B): SUB R0, R0, BH |
| 0443 | i(E9000006): BNE 6 [044AH] |
| 0444 | j(80E0000C): LDR R0, SP, CH |
| 0445 | j(D1221D4C): BLEQ MT [trap=4, pos=8733] |
| ELSEk xl.r := y.levm |
| 0446 | k(80000004): LDR R0, R0, 4H |
| 0447 | k(81E00004): LDR R1, SP, 4H |
| 0448 | k(A010000C): STR R0, R1, CH |
| 0449 | l(E7000005): B 5 [044FH] |
| 044A | m(80E0000C): LDR R0, SP, CH |
| 044B | m(D1223C4C): BLEQ MT [trap=4, pos=8764] |
| ENDn ; |
| 044C | n(80000004): LDR R0, R0, 4H |
| 044D | n(81E00004): LDR R1, SP, 4H |
| 044E | n(A0100010): STR R0, R1, 10H |
| IF (y.levo > 0)p & (qy.levr # curlev)s & (ty.classu # ORB.Const)v THENw ORS.Mark("level error, not accessible")x ENDy |
| 044F | o(80E0000C): LDR R0, SP, CH |
| 0450 | o(D122544C): BLEQ MT [trap=4, pos=8788] |
| 0451 | p(80000004): LDR R0, R0, 4H |
| 0452 | p(40090000): SUB R0, R0, 0H |
| 0453 | q(E600000F): BLE 15 [0463H] |
| 0454 | r(80E0000C): LDR R0, SP, CH |
| 0455 | r(D122624C): BLEQ MT [trap=4, pos=8802] |
| 0456 | s(80000004): LDR R0, R0, 4H |
| 0457 | s(81E00010): LDR R1, SP, 10H |
| 0458 | s(00090001): SUB R0, R0, R1 |
| 0459 | t(E1000009): BEQ 9 [0463H] |
| 045A | u(80E0000C): LDR R0, SP, CH |
| 045B | u(D122774C): BLEQ MT [trap=4, pos=8823] |
| 045C | v(90000000): LDR R0, R0, 0H |
| 045D | v(40090001): SUB R0, R0, 1H |
| 045E | w(E1000004): BEQ 4 [0463H] |
| 045F | x .FIXUP D |
| 045F | x(8D000065): LDR SB, MT, MOD0 [ORG] |
| 0460 | x(40D8891C): ADD R0, SB, FFFF891CH [data] |
| 0461 | x(4100001C): MOV R1, R0, 1CH |
| 0462 | y .FIXUP P |
| 0462 | y(F7209065): BL MOD2 [ORS] PROC9 |
| ENDz MakeItem; |
| 0463 | z(8FE00000): LDR LNK, SP, 0H |
| 0464 | z(4EE80014): ADD SP, SP, 14H |
| 0465 | z(C700000F): B LNK |
| |
| (* Code generation for Selectors, Variables, Constants *) |
| |
| PROCEDURE Field*(VAR x: Item; y: ORB.Object); (* x := x.y *) |
| BEGINa; |
| 0466 | a .PROC 9 |
| 0466 | a(4EE90010): SUB SP, SP, 10H |
| 0467 | a(AFE00000): STR LNK, SP, 0H |
| 0468 | a(A0E00004): STR R0, SP, 4H |
| 0469 | a(A1E00008): STR R1, SP, 8H |
| 046A | a(A2E0000C): STR R2, SP, CH |
| IF x.mode = ORB.Var THENb |
| 046B | b(80E00004): LDR R0, SP, 4H |
| 046C | b(80000000): LDR R0, R0, 0H |
| 046D | b(40090002): SUB R0, R0, 2H |
| 046E | b(E9000019): BNE 25 [0488H] |
| IF x.r >= 0 THENc x.a := x.a + y.vald |
| 046F | c(80E00004): LDR R0, SP, 4H |
| 0470 | c(80000010): LDR R0, R0, 10H |
| 0471 | c(40090000): SUB R0, R0, 0H |
| 0472 | c(E5000009): BLT 9 [047CH] |
| 0473 | d(80E0000C): LDR R0, SP, CH |
| 0474 | d(D123944C): BLEQ MT [trap=4, pos=9108] |
| ELSEe loadAdrf(x)g;h x.mode := RegI;i x.a := y.valj |
| 0475 | e(81E00004): LDR R1, SP, 4H |
| 0476 | e(81100008): LDR R1, R1, 8H |
| 0477 | e(80000034): LDR R0, R0, 34H |
| 0478 | e(00180000): ADD R0, R1, R0 |
| 0479 | e(81E00004): LDR R1, SP, 4H |
| 047A | e(A0100008): STR R0, R1, 8H |
| 047B | f(E700000B): B 11 [0487H] |
| 047C | g(80E00004): LDR R0, SP, 4H |
| 047D | g(81E00008): LDR R1, SP, 8H |
| 047E | h(F7FFFE3D): BL -451 [02BCH] |
| 047F | i(4000000B): MOV R0, R0, BH |
| 0480 | i(81E00004): LDR R1, SP, 4H |
| 0481 | i(A0100000): STR R0, R1, 0H |
| 0482 | j(80E0000C): LDR R0, SP, CH |
| 0483 | j(D123C84C): BLEQ MT [trap=4, pos=9160] |
| ENDk |
| 0484 | k(80000034): LDR R0, R0, 34H |
| 0485 | k(81E00004): LDR R1, SP, 4H |
| 0486 | k(A0100008): STR R0, R1, 8H |
| ELSIF xl.mode = RegI THENm x.a := x.a + y.valn |
| 0487 | l(E7000019): B 25 [04A1H] |
| 0488 | m(80E00004): LDR R0, SP, 4H |
| 0489 | m(80000000): LDR R0, R0, 0H |
| 048A | m(4009000B): SUB R0, R0, BH |
| 048B | m(E9000009): BNE 9 [0495H] |
| 048C | n(80E0000C): LDR R0, SP, CH |
| 048D | n(D124024C): BLEQ MT [trap=4, pos=9218] |
| ELSIFo xp.mode = ORB.Par THENq x.b := x.b + y.valr |
| 048E | o(81E00004): LDR R1, SP, 4H |
| 048F | o(81100008): LDR R1, R1, 8H |
| 0490 | o(80000034): LDR R0, R0, 34H |
| 0491 | o(00180000): ADD R0, R1, R0 |
| 0492 | o(81E00004): LDR R1, SP, 4H |
| 0493 | o(A0100008): STR R0, R1, 8H |
| 0494 | p(E700000C): B 12 [04A1H] |
| 0495 | q(80E00004): LDR R0, SP, 4H |
| 0496 | q(80000000): LDR R0, R0, 0H |
| 0497 | q(40090003): SUB R0, R0, 3H |
| 0498 | q(E9000008): BNE 8 [04A1H] |
| 0499 | r(80E0000C): LDR R0, SP, CH |
| 049A | r(D124354C): BLEQ MT [trap=4, pos=9269] |
| ENDs |
| 049B | s(81E00004): LDR R1, SP, 4H |
| 049C | s(8110000C): LDR R1, R1, CH |
| 049D | s(80000034): LDR R0, R0, 34H |
| 049E | s(00180000): ADD R0, R1, R0 |
| 049F | s(81E00004): LDR R1, SP, 4H |
| 04A0 | s(A010000C): STR R0, R1, CH |
| ENDt Field; |
| 04A1 | t(8FE00000): LDR LNK, SP, 0H |
| 04A2 | t(4EE80010): ADD SP, SP, 10H |
| 04A3 | t(C700000F): B LNK |
| |
| PROCEDURE Index*(VAR x, y: Item); (* x := x[y] *) |
| VAR s, lim: LONGINT; |
| BEGINu s := x.type.basev.sizew;x lim := x.type.leny;z |
| 04A4 | u .PROC 10 |
| 04A4 | u(4EE9001C): SUB SP, SP, 1CH |
| 04A5 | u(AFE00000): STR LNK, SP, 0H |
| 04A6 | u(A0E00004): STR R0, SP, 4H |
| 04A7 | u(A1E00008): STR R1, SP, 8H |
| 04A8 | u(A2E0000C): STR R2, SP, CH |
| 04A9 | u(A3E00010): STR R3, SP, 10H |
| 04AA | v(80E00004): LDR R0, SP, 4H |
| 04AB | v(80000004): LDR R0, R0, 4H |
| 04AC | v(D124B34C): BLEQ MT [trap=4, pos=9395] |
| 04AD | w(8000001C): LDR R0, R0, 1CH |
| 04AE | w(D124B84C): BLEQ MT [trap=4, pos=9400] |
| 04AF | x(80000020): LDR R0, R0, 20H |
| 04B0 | x(A0E00014): STR R0, SP, 14H |
| 04B1 | y(80E00004): LDR R0, SP, 4H |
| 04B2 | y(80000004): LDR R0, R0, 4H |
| 04B3 | y(D124CB4C): BLEQ MT [trap=4, pos=9419] |
| 04B4 | z(80000010): LDR R0, R0, 10H |
| 04B5 | z(A0E00018): STR R0, SP, 18H |
| IF (y.mode = ORB.Const)a & (blim >= 0)c THENd |
| 04B6 | a(80E0000C): LDR R0, SP, CH |
| 04B7 | a(80000000): LDR R0, R0, 0H |
| 04B8 | a(40090001): SUB R0, R0, 1H |
| 04B9 | b(E900002E): BNE 46 [04E8H] |
| 04BA | c(80E00018): LDR R0, SP, 18H |
| 04BB | c(40090000): SUB R0, R0, 0H |
| 04BC | d(E500002B): BLT 43 [04E8H] |
| IF (y.a < 0)e OR (fy.a >= lim)g THENh ORS.Mark("bad index")i ENDj ; |
| 04BD | e(80E0000C): LDR R0, SP, CH |
| 04BE | e(80000008): LDR R0, R0, 8H |
| 04BF | e(40090000): SUB R0, R0, 0H |
| 04C0 | f(E5000005): BLT 5 [04C6H] |
| 04C1 | g(80E0000C): LDR R0, SP, CH |
| 04C2 | g(80000008): LDR R0, R0, 8H |
| 04C3 | g(81E00018): LDR R1, SP, 18H |
| 04C4 | g(00090001): SUB R0, R0, R1 |
| 04C5 | h(E5000004): BLT 4 [04CAH] |
| 04C6 | i .FIXUP D |
| 04C6 | i(8D000067): LDR SB, MT, MOD0 [ORG] |
| 04C7 | i(40D88938): ADD R0, SB, FFFF8938H [data] |
| 04C8 | i(4100000A): MOV R1, R0, AH |
| 04C9 | j .FIXUP P |
| 04C9 | j(F7209067): BL MOD2 [ORS] PROC9 |
| IF x.mode IN {ORB.Var, RegI} THENk x.a := y.a * s +l x.a |
| 04CA | k(40000804): MOV R0, R0, 804H |
| 04CB | k(81E00004): LDR R1, SP, 4H |
| 04CC | k(81100000): LDR R1, R1, 0H |
| 04CD | k(41180001): ADD R1, R1, 1H |
| 04CE | k(00030001): ROR R0, R0, R1 |
| 04CF | k(E800000A): BPL 10 [04DAH] |
| 04D0 | l(80E0000C): LDR R0, SP, CH |
| 04D1 | l(80000008): LDR R0, R0, 8H |
| 04D2 | l(81E00014): LDR R1, SP, 14H |
| 04D3 | l(000A0001): MUL R0, R0, R1 |
| ELSIFm xn.mode = ORB.Par THENo x.b := y.a * s +p x.b |
| 04D4 | m(81E00004): LDR R1, SP, 4H |
| 04D5 | m(81100008): LDR R1, R1, 8H |
| 04D6 | m(00080001): ADD R0, R0, R1 |
| 04D7 | m(81E00004): LDR R1, SP, 4H |
| 04D8 | m(A0100008): STR R0, R1, 8H |
| 04D9 | n(E700000D): B 13 [04E7H] |
| 04DA | o(80E00004): LDR R0, SP, 4H |
| 04DB | o(80000000): LDR R0, R0, 0H |
| 04DC | o(40090003): SUB R0, R0, 3H |
| 04DD | o(E9000009): BNE 9 [04E7H] |
| 04DE | p(80E0000C): LDR R0, SP, CH |
| 04DF | p(80000008): LDR R0, R0, 8H |
| 04E0 | p(81E00014): LDR R1, SP, 14H |
| 04E1 | p(000A0001): MUL R0, R0, R1 |
| ENDq |
| 04E2 | q(81E00004): LDR R1, SP, 4H |
| 04E3 | q(8110000C): LDR R1, R1, CH |
| 04E4 | q(00080001): ADD R0, R0, R1 |
| 04E5 | q(81E00004): LDR R1, SP, 4H |
| 04E6 | q(A010000C): STR R0, R1, CH |
| ELSE loadr(y)s;t |
| 04E7 | r(E70000B6): B 182 [059EH] |
| 04E8 | s(80E0000C): LDR R0, SP, CH |
| 04E9 | s(81E00010): LDR R1, SP, 10H |
| 04EA | t(F7FFFCE8): BL -792 [01D3H] |
| IF check THENu (*check array bounds*) |
| 04EB | u .FIXUP D |
| 04EB | u(8D000025): LDR SB, MT, MOD0 [ORG] |
| 04EC | u(90D00044): LDR R0, SB, 44H [data] |
| 04ED | u(E100002A): BEQ 42 [0518H] |
| IF lim >= 0 THENv Put1a(Cmp,w RH,x y.r,y lim)z |
| 04EE | v(80E00018): LDR R0, SP, 18H |
| 04EF | v(40090000): SUB R0, R0, 0H |
| 04F0 | v(E5000008): BLT 8 [04F9H] |
| 04F1 | w(40000009): MOV R0, R0, 9H |
| 04F2 | x .FIXUP D |
| 04F2 | x(8D000007): LDR SB, MT, MOD0 [ORG] |
| 04F3 | x(81D0002C): LDR R1, SB, 2CH [data] |
| 04F4 | y(82E0000C): LDR R2, SP, CH |
| 04F5 | y(82200010): LDR R2, R2, 10H |
| 04F6 | z(83E00018): LDR R3, SP, 18H |
| ELSEa (*open array*) |
| 04F7 | a(F7FFFB4C): BL -1204 [0044H] |
| IFb x.mode IN {ORB.Var, ORB.Par} THENc Put2(Ldr,d RH,e SP,f x.a+4+gframe)h;i Put0(Cmp,j RH,k y.r,l RH)m |
| 04F8 | b(E700001C): B 28 [0515H] |
| 04F9 | c(4000000C): MOV R0, R0, CH |
| 04FA | c(81E00004): LDR R1, SP, 4H |
| 04FB | c(81100000): LDR R1, R1, 0H |
| 04FC | c(41180001): ADD R1, R1, 1H |
| 04FD | c(00030001): ROR R0, R0, R1 |
| 04FE | c(E8000012): BPL 18 [0511H] |
| 04FF | d(40000008): MOV R0, R0, 8H |
| 0500 | e .FIXUP D |
| 0500 | e(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0501 | e(81D0002C): LDR R1, SB, 2CH [data] |
| 0502 | f(4200000E): MOV R2, R0, EH |
| 0503 | g(83E00004): LDR R3, SP, 4H |
| 0504 | g(83300008): LDR R3, R3, 8H |
| 0505 | g(43380004): ADD R3, R3, 4H |
| 0506 | h(84D00034): LDR R4, SB, 34H |
| 0507 | h(03380004): ADD R3, R3, R4 |
| 0508 | i(F7FFFB68): BL -1176 [0071H] |
| 0509 | j(40000009): MOV R0, R0, 9H |
| 050A | k .FIXUP D |
| 050A | k(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 050B | k(81D0002C): LDR R1, SB, 2CH [data] |
| 050C | l(82E0000C): LDR R2, SP, CH |
| 050D | l(82200010): LDR R2, R2, 10H |
| 050E | m(83D0002C): LDR R3, SB, 2CH |
| ELSEn ORSo.Mark("error in Index")p |
| 050F | n(F7FFFAF0): BL -1296 [0000H] |
| 0510 | o(E7000004): B 4 [0515H] |
| 0511 | p .FIXUP D |
| 0511 | p(8D000007): LDR SB, MT, MOD0 [ORG] |
| 0512 | p(40D88944): ADD R0, SB, FFFF8944H [data] |
| 0513 | p(4100000F): MOV R1, R0, FH |
| ENDq |
| 0514 | q .FIXUP P |
| 0514 | q(F720904B): BL MOD2 [ORS] PROC9 |
| END ; |
| Trap(10,r 1)s (*BCC*) |
| 0515 | r(4000000A): MOV R0, R0, AH |
| 0516 | s(41000001): MOV R1, R0, 1H |
| ENDt ; |
| 0517 | t(F7FFFBD4): BL -1068 [00ECH] |
| IF s = 4 THENu Put1(Lsl,v y.r,w y.r,x 2)y ELSIFz sa > 1 THENb Put1a(Mul,c y.r,d y.r,e s)f ENDg ; |
| 0518 | u(80E00014): LDR R0, SP, 14H |
| 0519 | u(40090004): SUB R0, R0, 4H |
| 051A | u(E9000008): BNE 8 [0523H] |
| 051B | v(40000001): MOV R0, R0, 1H |
| 051C | w(81E0000C): LDR R1, SP, CH |
| 051D | w(81100010): LDR R1, R1, 10H |
| 051E | x(82E0000C): LDR R2, SP, CH |
| 051F | x(82200010): LDR R2, R2, 10H |
| 0520 | y(43000002): MOV R3, R0, 2H |
| 0521 | z(F7FFFAFC): BL -1284 [001EH] |
| 0522 | a(E700000A): B 10 [052DH] |
| 0523 | b(80E00014): LDR R0, SP, 14H |
| 0524 | b(40090001): SUB R0, R0, 1H |
| 0525 | b(E6000007): BLE 7 [052DH] |
| 0526 | c(4000000A): MOV R0, R0, AH |
| 0527 | d(81E0000C): LDR R1, SP, CH |
| 0528 | d(81100010): LDR R1, R1, 10H |
| 0529 | e(82E0000C): LDR R2, SP, CH |
| 052A | e(82200010): LDR R2, R2, 10H |
| 052B | f(83E00014): LDR R3, SP, 14H |
| 052C | g(F7FFFB17): BL -1257 [0044H] |
| IF x.mode = ORB.Var THENh |
| 052D | h(80E00004): LDR R0, SP, 4H |
| 052E | h(80000000): LDR R0, R0, 0H |
| 052F | h(40090002): SUB R0, R0, 2H |
| 0530 | h(E900003B): BNE 59 [056CH] |
| IF x.r > 0 THENi Put0(Add,j y.r,k SP,l y.r)m;n INC(x.a, frame) |
| 0531 | i(80E00004): LDR R0, SP, 4H |
| 0532 | i(80000010): LDR R0, R0, 10H |
| 0533 | i(40090000): SUB R0, R0, 0H |
| 0534 | i(E600000F): BLE 15 [0544H] |
| 0535 | j(40000008): MOV R0, R0, 8H |
| 0536 | k(81E0000C): LDR R1, SP, CH |
| 0537 | k(81100010): LDR R1, R1, 10H |
| 0538 | l(4200000E): MOV R2, R0, EH |
| 0539 | m(83E0000C): LDR R3, SP, CH |
| 053A | m(83300010): LDR R3, R3, 10H |
| 053B | n(F7FFFAC4): BL -1340 [0000H] |
| ELSEo GetSBp(x.r)q;r |
| 053C | o(80E00004): LDR R0, SP, 4H |
| 053D | o(40080008): ADD R0, R0, 8H |
| 053E | o(81000000): LDR R1, R0, 0H |
| 053F | o .FIXUP D |
| 053F | o(8D00002E): LDR SB, MT, MOD0 [ORG] |
| 0540 | o(82D00034): LDR R2, SB, 34H [data] |
| 0541 | o(01180002): ADD R1, R1, R2 |
| 0542 | o(A1000000): STR R1, R0, 0H |
| 0543 | p(E7000020): B 32 [0564H] |
| 0544 | q(80E00004): LDR R0, SP, 4H |
| 0545 | q(80000010): LDR R0, R0, 10H |
| 0546 | r(F7FFFC61): BL -927 [01A8H] |
| IF x.r = 0 THENs Put0(Add,t y.r,u SB,v y.r)w |
| 0547 | s(80E00004): LDR R0, SP, 4H |
| 0548 | s(80000010): LDR R0, R0, 10H |
| 0549 | s(E9000008): BNE 8 [0552H] |
| 054A | t(40000008): MOV R0, R0, 8H |
| 054B | u(81E0000C): LDR R1, SP, CH |
| 054C | u(81100010): LDR R1, R1, 10H |
| 054D | v(4200000D): MOV R2, R0, DH |
| 054E | w(83E0000C): LDR R3, SP, CH |
| 054F | w(83300010): LDR R3, R3, 10H |
| ELSEx Put1ay(Add,z RH,a SB,b x.a)c;d Put0(Add,e y.r,f RH,g y.r)h;i x.a := 0 |
| 0550 | x(F7FFFAAF): BL -1361 [0000H] |
| 0551 | y(E7000012): B 18 [0564H] |
| 0552 | z(40000008): MOV R0, R0, 8H |
| 0553 | a .FIXUP D |
| 0553 | a(8D000014): LDR SB, MT, MOD0 [ORG] |
| 0554 | a(81D0002C): LDR R1, SB, 2CH [data] |
| 0555 | b(4200000D): MOV R2, R0, DH |
| 0556 | c(83E00004): LDR R3, SP, 4H |
| 0557 | c(83300008): LDR R3, R3, 8H |
| 0558 | d(F7FFFAEB): BL -1301 [0044H] |
| 0559 | e(40000008): MOV R0, R0, 8H |
| 055A | f(81E0000C): LDR R1, SP, CH |
| 055B | f(81100010): LDR R1, R1, 10H |
| 055C | g .FIXUP D |
| 055C | g(8D000009): LDR SB, MT, MOD0 [ORG] |
| 055D | g(82D0002C): LDR R2, SB, 2CH [data] |
| 055E | h(83E0000C): LDR R3, SP, CH |
| 055F | h(83300010): LDR R3, R3, 10H |
| 0560 | i(F7FFFA9F): BL -1377 [0000H] |
| ENDj |
| 0561 | j(40000000): MOV R0, R0, 0H |
| 0562 | j(81E00004): LDR R1, SP, 4H |
| 0563 | j(A0100008): STR R0, R1, 8H |
| END ; |
| x.r := y.r;k x.mode := RegI |
| 0564 | k(80E0000C): LDR R0, SP, CH |
| 0565 | k(80000010): LDR R0, R0, 10H |
| 0566 | k(81E00004): LDR R1, SP, 4H |
| 0567 | k(A0100010): STR R0, R1, 10H |
| ELSIFl xm.mode = ORB.Par THENn |
| 0568 | l(4000000B): MOV R0, R0, BH |
| 0569 | l(81E00004): LDR R1, SP, 4H |
| 056A | l(A0100000): STR R0, R1, 0H |
| 056B | m(E7000032): B 50 [059EH] |
| 056C | n(80E00004): LDR R0, SP, 4H |
| 056D | n(80000000): LDR R0, R0, 0H |
| 056E | n(40090003): SUB R0, R0, 3H |
| 056F | n(E900001D): BNE 29 [058DH] |
| Put2(Ldr,o RH,p SP,q x.a + frame)r;s |
| 0570 | o(40000008): MOV R0, R0, 8H |
| 0571 | p .FIXUP D |
| 0571 | p(8D000015): LDR SB, MT, MOD0 [ORG] |
| 0572 | p(81D0002C): LDR R1, SB, 2CH [data] |
| 0573 | q(4200000E): MOV R2, R0, EH |
| 0574 | r(83E00004): LDR R3, SP, 4H |
| 0575 | r(83300008): LDR R3, R3, 8H |
| 0576 | r(84D00034): LDR R4, SB, 34H |
| 0577 | r(03380004): ADD R3, R3, R4 |
| 0578 | s(F7FFFAF8): BL -1288 [0071H] |
| Put0(Add,t y.r,u RH,v y.r)w;x x.mode := RegI;y x.r := y.r;z x.a := x.b |
| 0579 | t(40000008): MOV R0, R0, 8H |
| 057A | u(81E0000C): LDR R1, SP, CH |
| 057B | u(81100010): LDR R1, R1, 10H |
| 057C | v .FIXUP D |
| 057C | v(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 057D | v(82D0002C): LDR R2, SB, 2CH [data] |
| 057E | w(83E0000C): LDR R3, SP, CH |
| 057F | w(83300010): LDR R3, R3, 10H |
| 0580 | x(F7FFFA7F): BL -1409 [0000H] |
| 0581 | y(4000000B): MOV R0, R0, BH |
| 0582 | y(81E00004): LDR R1, SP, 4H |
| 0583 | y(A0100000): STR R0, R1, 0H |
| 0584 | z(80E0000C): LDR R0, SP, CH |
| 0585 | z(80000010): LDR R0, R0, 10H |
| 0586 | z(81E00004): LDR R1, SP, 4H |
| 0587 | z(A0100010): STR R0, R1, 10H |
| ELSIFa xb.mode = RegI THENc Put0(Add,d x.r,e x.r,f y.r)g;h DEC(RH) |
| 0588 | a(80E00004): LDR R0, SP, 4H |
| 0589 | a(8000000C): LDR R0, R0, CH |
| 058A | a(81E00004): LDR R1, SP, 4H |
| 058B | a(A0100008): STR R0, R1, 8H |
| 058C | b(E7000011): B 17 [059EH] |
| 058D | c(80E00004): LDR R0, SP, 4H |
| 058E | c(80000000): LDR R0, R0, 0H |
| 058F | c(4009000B): SUB R0, R0, BH |
| 0590 | c(E900000D): BNE 13 [059EH] |
| 0591 | d(40000008): MOV R0, R0, 8H |
| 0592 | e(81E00004): LDR R1, SP, 4H |
| 0593 | e(81100010): LDR R1, R1, 10H |
| 0594 | f(82E00004): LDR R2, SP, 4H |
| 0595 | f(82200010): LDR R2, R2, 10H |
| 0596 | g(83E0000C): LDR R3, SP, CH |
| 0597 | g(83300010): LDR R3, R3, 10H |
| 0598 | h(F7FFFA67): BL -1433 [0000H] |
| ENDi |
| 0599 | i .FIXUP D |
| 0599 | i(8D00001D): LDR SB, MT, MOD0 [ORG] |
| 059A | i(40D8002C): ADD R0, SB, 2CH [data] |
| 059B | i(81000000): LDR R1, R0, 0H |
| 059C | i(41190001): SUB R1, R1, 1H |
| 059D | i(A1000000): STR R1, R0, 0H |
| END |
| ENDj Index; |
| 059E | j(8FE00000): LDR LNK, SP, 0H |
| 059F | j(4EE8001C): ADD SP, SP, 1CH |
| 05A0 | j(C700000F): B LNK |
| |
| PROCEDURE DeRef*(VAR x: Item); |
| BEGINk |
| 05A1 | k .PROC 11 |
| 05A1 | k(4EE9000C): SUB SP, SP, CH |
| 05A2 | k(AFE00000): STR LNK, SP, 0H |
| 05A3 | k(A0E00004): STR R0, SP, 4H |
| 05A4 | k(A1E00008): STR R1, SP, 8H |
| IF x.mode = ORB.Var THENl |
| 05A5 | l(80E00004): LDR R0, SP, 4H |
| 05A6 | l(80000000): LDR R0, R0, 0H |
| 05A7 | l(40090002): SUB R0, R0, 2H |
| 05A8 | l(E900001F): BNE 31 [05C8H] |
| IF x.r > 0 THENm (*local*) Put2(Ldr,n RH,o SP,p x.a + frame)q ELSEr GetSBs(x.r)t;u Put2(Ldr,v RH,w SB,x x.a)y ENDz ; |
| 05A9 | m(80E00004): LDR R0, SP, 4H |
| 05AA | m(80000010): LDR R0, R0, 10H |
| 05AB | m(40090000): SUB R0, R0, 0H |
| 05AC | m(E600000A): BLE 10 [05B7H] |
| 05AD | n(40000008): MOV R0, R0, 8H |
| 05AE | o .FIXUP D |
| 05AE | o(8D000015): LDR SB, MT, MOD0 [ORG] |
| 05AF | o(81D0002C): LDR R1, SB, 2CH [data] |
| 05B0 | p(4200000E): MOV R2, R0, EH |
| 05B1 | q(83E00004): LDR R3, SP, 4H |
| 05B2 | q(83300008): LDR R3, R3, 8H |
| 05B3 | q(84D00034): LDR R4, SB, 34H |
| 05B4 | q(03380004): ADD R3, R3, R4 |
| 05B5 | r(F7FFFABB): BL -1349 [0071H] |
| 05B6 | s(E700000A): B 10 [05C1H] |
| 05B7 | t(80E00004): LDR R0, SP, 4H |
| 05B8 | t(80000010): LDR R0, R0, 10H |
| 05B9 | u(F7FFFBEE): BL -1042 [01A8H] |
| 05BA | v(40000008): MOV R0, R0, 8H |
| 05BB | w .FIXUP D |
| 05BB | w(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 05BC | w(81D0002C): LDR R1, SB, 2CH [data] |
| 05BD | x(4200000D): MOV R2, R0, DH |
| 05BE | y(83E00004): LDR R3, SP, 4H |
| 05BF | y(83300008): LDR R3, R3, 8H |
| 05C0 | z(F7FFFAB0): BL -1360 [0071H] |
| NilCheck;a x.r := RH;b incR |
| 05C1 | a(F7FFFC06): BL -1018 [01C8H] |
| 05C2 | b .FIXUP D |
| 05C2 | b(8D000007): LDR SB, MT, MOD0 [ORG] |
| 05C3 | b(80D0002C): LDR R0, SB, 2CH [data] |
| 05C4 | b(81E00004): LDR R1, SP, 4H |
| 05C5 | b(A0100010): STR R0, R1, 10H |
| ELSIFc xd.mode = ORB.Par THENe |
| 05C6 | c(F7FFFAE7): BL -1305 [00AEH] |
| 05C7 | d(E7000031): B 49 [05F9H] |
| 05C8 | e(80E00004): LDR R0, SP, 4H |
| 05C9 | e(80000000): LDR R0, R0, 0H |
| 05CA | e(40090003): SUB R0, R0, 3H |
| 05CB | e(E9000017): BNE 23 [05E3H] |
| Put2(Ldr,f RH,g SP,h x.a + frame)i;j Put2(Ldr,k RH,l RH,m x.b)n;o NilCheck;p x.r := RH;q incR |
| 05CC | f(40000008): MOV R0, R0, 8H |
| 05CD | g .FIXUP D |
| 05CD | g(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 05CE | g(81D0002C): LDR R1, SB, 2CH [data] |
| 05CF | h(4200000E): MOV R2, R0, EH |
| 05D0 | i(83E00004): LDR R3, SP, 4H |
| 05D1 | i(83300008): LDR R3, R3, 8H |
| 05D2 | i(84D00034): LDR R4, SB, 34H |
| 05D3 | i(03380004): ADD R3, R3, R4 |
| 05D4 | j(F7FFFA9C): BL -1380 [0071H] |
| 05D5 | k(40000008): MOV R0, R0, 8H |
| 05D6 | l .FIXUP D |
| 05D6 | l(8D000009): LDR SB, MT, MOD0 [ORG] |
| 05D7 | l(81D0002C): LDR R1, SB, 2CH [data] |
| 05D8 | m(82D0002C): LDR R2, SB, 2CH |
| 05D9 | n(83E00004): LDR R3, SP, 4H |
| 05DA | n(8330000C): LDR R3, R3, CH |
| 05DB | o(F7FFFA95): BL -1387 [0071H] |
| 05DC | p(F7FFFBEB): BL -1045 [01C8H] |
| 05DD | q .FIXUP D |
| 05DD | q(8D000007): LDR SB, MT, MOD0 [ORG] |
| 05DE | q(80D0002C): LDR R0, SB, 2CH [data] |
| 05DF | q(81E00004): LDR R1, SP, 4H |
| 05E0 | q(A0100010): STR R0, R1, 10H |
| ELSIFr xs.mode = RegI THENt Put2(Ldr,u x.r,v x.r,w x.a)x;y NilCheck |
| 05E1 | r(F7FFFACC): BL -1332 [00AEH] |
| 05E2 | s(E7000016): B 22 [05F9H] |
| 05E3 | t(80E00004): LDR R0, SP, 4H |
| 05E4 | t(80000000): LDR R0, R0, 0H |
| 05E5 | t(4009000B): SUB R0, R0, BH |
| 05E6 | t(E900000A): BNE 10 [05F1H] |
| 05E7 | u(40000008): MOV R0, R0, 8H |
| 05E8 | v(81E00004): LDR R1, SP, 4H |
| 05E9 | v(81100010): LDR R1, R1, 10H |
| 05EA | w(82E00004): LDR R2, SP, 4H |
| 05EB | w(82200010): LDR R2, R2, 10H |
| 05EC | x(83E00004): LDR R3, SP, 4H |
| 05ED | x(83300008): LDR R3, R3, 8H |
| 05EE | y(F7FFFA82): BL -1406 [0071H] |
| ELSIFz xa.mode # Reg THENb ORS.Mark("bad mode in DeRef")c |
| 05EF | z(F7FFFBD8): BL -1064 [01C8H] |
| 05F0 | a(E7000008): B 8 [05F9H] |
| 05F1 | b(80E00004): LDR R0, SP, 4H |
| 05F2 | b(80000000): LDR R0, R0, 0H |
| 05F3 | b(4009000A): SUB R0, R0, AH |
| 05F4 | b(E1000004): BEQ 4 [05F9H] |
| 05F5 | c .FIXUP D |
| 05F5 | c(8D000018): LDR SB, MT, MOD0 [ORG] |
| 05F6 | c(40D88954): ADD R0, SB, FFFF8954H [data] |
| 05F7 | c(41000012): MOV R1, R0, 12H |
| ENDd ; |
| 05F8 | d .FIXUP P |
| 05F8 | d(F72090E4): BL MOD2 [ORS] PROC9 |
| x.mode := RegI;e x.a := 0;f x.b := 0 |
| 05F9 | e(4000000B): MOV R0, R0, BH |
| 05FA | e(81E00004): LDR R1, SP, 4H |
| 05FB | e(A0100000): STR R0, R1, 0H |
| 05FC | f(40000000): MOV R0, R0, 0H |
| 05FD | f(81E00004): LDR R1, SP, 4H |
| 05FE | f(A0100008): STR R0, R1, 8H |
| ENDg DeRef; |
| 05FF | g(40000000): MOV R0, R0, 0H |
| 0600 | g(81E00004): LDR R1, SP, 4H |
| 0601 | g(A010000C): STR R0, R1, CH |
| 0602 | g(8FE00000): LDR LNK, SP, 0H |
| 0603 | g(4EE8000C): ADD SP, SP, CH |
| 0604 | g(C700000F): B LNK |
| |
| PROCEDURE Q(T: ORB.Type; VAR dcw: LONGINT); |
| BEGINh (*one entry of type descriptor extension table*) |
| 0605 | h(4EE9000C): SUB SP, SP, CH |
| 0606 | h(AFE00000): STR LNK, SP, 0H |
| 0607 | h(A0E00004): STR R0, SP, 4H |
| 0608 | h(A1E00008): STR R1, SP, 8H |
| IF T.basei # NIL THENj |
| 0609 | i(80E00004): LDR R0, SP, 4H |
| 060A | i(D12C174C): BLEQ MT [trap=4, pos=11287] |
| 060B | j(8000001C): LDR R0, R0, 1CH |
| 060C | j(E1000022): BEQ 34 [062FH] |
| Q(T.basek,l dcw)m;n data[dcw]o := (T.mnop*1000H +q T.lenr)s * 1000H +t dcw -u fixorgT;v |
| 060D | k(80E00004): LDR R0, SP, 4H |
| 060E | k(D12C314C): BLEQ MT [trap=4, pos=11313] |
| 060F | l(8000001C): LDR R0, R0, 1CH |
| 0610 | m(81E00008): LDR R1, SP, 8H |
| 0611 | n(F7FFFFF3): BL -13 [0605H] |
| 0612 | o(80E00008): LDR R0, SP, 8H |
| 0613 | o(80000000): LDR R0, R0, 0H |
| 0614 | o(41090078): SUB R1, R0, 78H |
| 0615 | o(DA2C421C): BLCC MT [trap=1, pos=11330] |
| 0616 | o(40010002): LSL R0, R0, 2H |
| 0617 | o .FIXUP D |
| 0617 | o(8D000022): LDR SB, MT, MOD0 [ORG] |
| 0618 | o(00D80000): ADD R0, SB, R0 [global array] |
| 0619 | p(81E00004): LDR R1, SP, 4H |
| 061A | p(D12C4C4C): BLEQ MT [trap=4, pos=11340] |
| 061B | q(81100008): LDR R1, R1, 8H |
| 061C | q(4111000C): LSL R1, R1, CH |
| 061D | r(82E00004): LDR R2, SP, 4H |
| 061E | r(D12C5A4C): BLEQ MT [trap=4, pos=11354] |
| 061F | s(82200010): LDR R2, R2, 10H |
| 0620 | s(01180002): ADD R1, R1, R2 |
| 0621 | t(4111000C): LSL R1, R1, CH |
| 0622 | u(82E00008): LDR R2, SP, 8H |
| 0623 | u(82200000): LDR R2, R2, 0H |
| 0624 | u(01180002): ADD R1, R1, R2 |
| 0625 | v(82D00040): LDR R2, SB, 40H |
| 0626 | v(01190002): SUB R1, R1, R2 |
| 0627 | v(A1007D64): STR R1, R0, 7D64H |
| fixorgT := dcw;w INC(dcw) |
| 0628 | w(80E00008): LDR R0, SP, 8H |
| 0629 | w(80000000): LDR R0, R0, 0H |
| 062A | w(A0D00040): STR R0, SB, 40H |
| ENDx |
| 062B | x(80E00008): LDR R0, SP, 8H |
| 062C | x(81000000): LDR R1, R0, 0H |
| 062D | x(41180001): ADD R1, R1, 1H |
| 062E | x(A1000000): STR R1, R0, 0H |
| ENDy Q; |
| 062F | y(8FE00000): LDR LNK, SP, 0H |
| 0630 | y(4EE8000C): ADD SP, SP, CH |
| 0631 | y(C700000F): B LNK |
| |
| PROCEDURE FindPtrFlds(typ: ORB.Type; off: LONGINT; VAR dcw: LONGINT); |
| VAR fld: ORB.Object; i, s: LONGINT; |
| BEGINz |
| 0632 | z(4EE9001C): SUB SP, SP, 1CH |
| 0633 | z(AFE00000): STR LNK, SP, 0H |
| 0634 | z(A0E00004): STR R0, SP, 4H |
| 0635 | z(A1E00008): STR R1, SP, 8H |
| 0636 | z(A2E0000C): STR R2, SP, CH |
| IF (typ.forma = ORB.Pointer)b OR (ctyp.formd = ORB.NilTyp)e THENf data[dcw]g := off;h INC(dcw) |
| 0637 | a(80E00004): LDR R0, SP, 4H |
| 0638 | a(D12D2E4C): BLEQ MT [trap=4, pos=11566] |
| 0639 | b(80000000): LDR R0, R0, 0H |
| 063A | b(40090007): SUB R0, R0, 7H |
| 063B | c(E1000005): BEQ 5 [0641H] |
| 063C | d(80E00004): LDR R0, SP, 4H |
| 063D | d(D12D4A4C): BLEQ MT [trap=4, pos=11594] |
| 063E | e(80000000): LDR R0, R0, 0H |
| 063F | e(40090008): SUB R0, R0, 8H |
| 0640 | f(E900000E): BNE 14 [064FH] |
| 0641 | g(80E0000C): LDR R0, SP, CH |
| 0642 | g(80000000): LDR R0, R0, 0H |
| 0643 | g(41090078): SUB R1, R0, 78H |
| 0644 | g(DA2D671C): BLCC MT [trap=1, pos=11623] |
| 0645 | g(40010002): LSL R0, R0, 2H |
| 0646 | g .FIXUP D |
| 0646 | g(8D00002F): LDR SB, MT, MOD0 [ORG] |
| 0647 | g(00D80000): ADD R0, SB, R0 [global array] |
| 0648 | h(81E00008): LDR R1, SP, 8H |
| 0649 | h(A1007D64): STR R1, R0, 7D64H |
| ELSIFi typj.formk = ORB.Record THENl |
| 064A | i(80E0000C): LDR R0, SP, CH |
| 064B | i(81000000): LDR R1, R0, 0H |
| 064C | i(41180001): ADD R1, R1, 1H |
| 064D | i(A1000000): STR R1, R0, 0H |
| 064E | j(E700003B): B 59 [068AH] |
| 064F | k(80E00004): LDR R0, SP, 4H |
| 0650 | k(D12D8B4C): BLEQ MT [trap=4, pos=11659] |
| 0651 | l(80000000): LDR R0, R0, 0H |
| 0652 | l(4009000D): SUB R0, R0, DH |
| 0653 | l(E9000016): BNE 22 [066AH] |
| fld := typ.dscm;n |
| 0654 | m(80E00004): LDR R0, SP, 4H |
| 0655 | m(D12DB24C): BLEQ MT [trap=4, pos=11698] |
| 0656 | n(80000014): LDR R0, R0, 14H |
| 0657 | n(A0E00010): STR R0, SP, 10H |
| WHILE fld # NIL DOo FindPtrFlds(fld.typep,q fld.valr + off,s dcw)t;u fld := fld.nextv ENDw |
| 0658 | o(80E00010): LDR R0, SP, 10H |
| 0659 | o(E100000F): BEQ 15 [0669H] |
| 065A | p(80E00010): LDR R0, SP, 10H |
| 065B | p(D12DE14C): BLEQ MT [trap=4, pos=11745] |
| 065C | q(80000010): LDR R0, R0, 10H |
| 065D | r(81E00010): LDR R1, SP, 10H |
| 065E | r(D12DEA4C): BLEQ MT [trap=4, pos=11754] |
| 065F | s(81100034): LDR R1, R1, 34H |
| 0660 | s(82E00008): LDR R2, SP, 8H |
| 0661 | s(01180002): ADD R1, R1, R2 |
| 0662 | t(82E0000C): LDR R2, SP, CH |
| 0663 | u(F7FFFFCE): BL -50 [0632H] |
| 0664 | v(80E00010): LDR R0, SP, 10H |
| 0665 | v(D12E074C): BLEQ MT [trap=4, pos=11783] |
| 0666 | w(80000008): LDR R0, R0, 8H |
| 0667 | w(A0E00010): STR R0, SP, 10H |
| 0668 | w(E7FFFFEF): B -17 [0658H] |
| ELSIF typx.formy = ORB.Array THENz |
| 0669 | x(E7000020): B 32 [068AH] |
| 066A | y(80E00004): LDR R0, SP, 4H |
| 066B | y(D12E1E4C): BLEQ MT [trap=4, pos=11806] |
| 066C | z(80000000): LDR R0, R0, 0H |
| 066D | z(4009000C): SUB R0, R0, CH |
| 066E | z(E900001B): BNE 27 [068AH] |
| s := typ.basea.sizeb;c |
| 066F | a(80E00004): LDR R0, SP, 4H |
| 0670 | a(D12E434C): BLEQ MT [trap=4, pos=11843] |
| 0671 | b(8000001C): LDR R0, R0, 1CH |
| 0672 | b(D12E484C): BLEQ MT [trap=4, pos=11848] |
| 0673 | c(80000020): LDR R0, R0, 20H |
| 0674 | c(A0E00018): STR R0, SP, 18H |
| FOR i := 0 TOd typ.lene-1 DOf FindPtrFldsg(typ.baseh,i i*s +j off,k dcw)l ENDm |
| 0675 | d(40000000): MOV R0, R0, 0H |
| 0676 | e(81E00004): LDR R1, SP, 4H |
| 0677 | e(D12E654C): BLEQ MT [trap=4, pos=11877] |
| 0678 | f(81100010): LDR R1, R1, 10H |
| 0679 | f(41190001): SUB R1, R1, 1H |
| 067A | g(01090001): SUB R1, R0, R1 |
| 067B | g(EE00000E): BGT 14 [068AH] |
| 067C | g(A0E00014): STR R0, SP, 14H |
| 067D | h(80E00004): LDR R0, SP, 4H |
| 067E | h(D12E7F4C): BLEQ MT [trap=4, pos=11903] |
| 067F | i(8000001C): LDR R0, R0, 1CH |
| 0680 | j(81E00014): LDR R1, SP, 14H |
| 0681 | j(82E00018): LDR R2, SP, 18H |
| 0682 | j(011A0002): MUL R1, R1, R2 |
| 0683 | k(82E00008): LDR R2, SP, 8H |
| 0684 | k(01180002): ADD R1, R1, R2 |
| 0685 | l(82E0000C): LDR R2, SP, CH |
| 0686 | m(F7FFFFAB): BL -85 [0632H] |
| ENDn |
| 0687 | n(80E00014): LDR R0, SP, 14H |
| 0688 | n(40080001): ADD R0, R0, 1H |
| 0689 | n(E7FFFFEC): B -20 [0676H] |
| ENDo FindPtrFlds; |
| 068A | o(8FE00000): LDR LNK, SP, 0H |
| 068B | o(4EE8001C): ADD SP, SP, 1CH |
| 068C | o(C700000F): B LNK |
| |
| PROCEDURE BuildTD*(T: ORB.Type; VAR dc: LONGINT); |
| VAR dcw, k, s: LONGINT; (*dcw = word address*) |
| BEGINp dcw := dc DIV 4;q s := T.sizer;s (*convert size for heap allocation*) |
| 068D | p .PROC 12 |
| 068D | p(4EE90018): SUB SP, SP, 18H |
| 068E | p(AFE00000): STR LNK, SP, 0H |
| 068F | p(A0E00004): STR R0, SP, 4H |
| 0690 | p(A1E00008): STR R1, SP, 8H |
| 0691 | q(80E00008): LDR R0, SP, 8H |
| 0692 | q(80000000): LDR R0, R0, 0H |
| 0693 | q(40020002): ASR R0, R0, 2H |
| 0694 | q(A0E0000C): STR R0, SP, CH |
| 0695 | r(80E00004): LDR R0, SP, 4H |
| 0696 | r(D12F3D4C): BLEQ MT [trap=4, pos=12093] |
| 0697 | s(80000020): LDR R0, R0, 20H |
| 0698 | s(A0E00014): STR R0, SP, 14H |
| IF s <= 24 THENt s := 32 ELSIFu sv <= 56 THENw s := 64 ELSIFx sy <= 120 THENz s := 128 |
| 0699 | t(80E00014): LDR R0, SP, 14H |
| 069A | t(40090018): SUB R0, R0, 18H |
| 069B | t(EE000003): BGT 3 [069FH] |
| 069C | u(40000020): MOV R0, R0, 20H |
| 069D | u(A0E00014): STR R0, SP, 14H |
| 069E | v(E7000011): B 17 [06B0H] |
| 069F | w(80E00014): LDR R0, SP, 14H |
| 06A0 | w(40090038): SUB R0, R0, 38H |
| 06A1 | w(EE000003): BGT 3 [06A5H] |
| 06A2 | x(40000040): MOV R0, R0, 40H |
| 06A3 | x(A0E00014): STR R0, SP, 14H |
| 06A4 | y(E700000B): B 11 [06B0H] |
| 06A5 | z(80E00014): LDR R0, SP, 14H |
| 06A6 | z(40090078): SUB R0, R0, 78H |
| 06A7 | z(EE000003): BGT 3 [06ABH] |
| ELSEa sb := (s+263)c DIV 256 *d 256 |
| 06A8 | a(40000080): MOV R0, R0, 80H |
| 06A9 | a(A0E00014): STR R0, SP, 14H |
| 06AA | b(E7000005): B 5 [06B0H] |
| 06AB | c(80E00014): LDR R0, SP, 14H |
| 06AC | c(40080107): ADD R0, R0, 107H |
| 06AD | d(40020008): ASR R0, R0, 8H |
| ENDe ; |
| 06AE | e(40010008): LSL R0, R0, 8H |
| 06AF | e(A0E00014): STR R0, SP, 14H |
| T.lenf := dc;g data[dcw]h := s;i INC(dcw);j (*len used as address*) |
| 06B0 | f(80E00004): LDR R0, SP, 4H |
| 06B1 | f(D12FEF4C): BLEQ MT [trap=4, pos=12271] |
| 06B2 | g(81E00008): LDR R1, SP, 8H |
| 06B3 | g(81100000): LDR R1, R1, 0H |
| 06B4 | g(A1000010): STR R1, R0, 10H |
| 06B5 | h(80E0000C): LDR R0, SP, CH |
| 06B6 | h(41090078): SUB R1, R0, 78H |
| 06B7 | h(DA30001C): BLCC MT [trap=1, pos=12288] |
| 06B8 | h(40010002): LSL R0, R0, 2H |
| 06B9 | h .FIXUP D |
| 06B9 | h(8D000073): LDR SB, MT, MOD0 [ORG] |
| 06BA | h(00D80000): ADD R0, SB, R0 [global array] |
| 06BB | i(81E00014): LDR R1, SP, 14H |
| 06BC | i(A1007D64): STR R1, R0, 7D64H |
| 06BD | j(80E0000C): LDR R0, SP, CH |
| 06BE | j(40080001): ADD R0, R0, 1H |
| 06BF | j(A0E0000C): STR R0, SP, CH |
| k := T.nofpark;l (*extension level!*) |
| 06C0 | k(80E00004): LDR R0, SP, 4H |
| 06C1 | k(D1303B4C): BLEQ MT [trap=4, pos=12347] |
| 06C2 | l(8000000C): LDR R0, R0, CH |
| 06C3 | l(A0E00010): STR R0, SP, 10H |
| IF k > 3 THENm ORS.Mark("ext level too large")n |
| 06C4 | m(80E00010): LDR R0, SP, 10H |
| 06C5 | m(40090003): SUB R0, R0, 3H |
| 06C6 | m(E6000005): BLE 5 [06CCH] |
| 06C7 | n .FIXUP D |
| 06C7 | n(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 06C8 | n(40D88968): ADD R0, SB, FFFF8968H [data] |
| 06C9 | n(41000014): MOV R1, R0, 14H |
| ELSEo Qp(T,q dcw)r;s |
| 06CA | o .FIXUP P |
| 06CA | o(F72090D2): BL MOD2 [ORS] PROC9 |
| 06CB | p(E7000015): B 21 [06E1H] |
| 06CC | q(80E00004): LDR R0, SP, 4H |
| 06CD | r(41E8000C): ADD R1, SP, CH |
| 06CE | s(F7FFFF36): BL -202 [0605H] |
| WHILE k < 3 DOt data[dcw]u := -1;v INC(dcw);w INC(k) ENDx |
| 06CF | t(80E00010): LDR R0, SP, 10H |
| 06D0 | t(40090003): SUB R0, R0, 3H |
| 06D1 | t(ED00000F): BGE 15 [06E1H] |
| 06D2 | u(80E0000C): LDR R0, SP, CH |
| 06D3 | u(41090078): SUB R1, R0, 78H |
| 06D4 | u(DA30B81C): BLCC MT [trap=1, pos=12472] |
| 06D5 | u(40010002): LSL R0, R0, 2H |
| 06D6 | u .FIXUP D |
| 06D6 | u(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 06D7 | u(00D80000): ADD R0, SB, R0 [global array] |
| 06D8 | v(5100FFFF): MOV R1, R0, FFFFFFFFH |
| 06D9 | v(A1007D64): STR R1, R0, 7D64H |
| 06DA | w(80E0000C): LDR R0, SP, CH |
| 06DB | w(40080001): ADD R0, R0, 1H |
| 06DC | w(A0E0000C): STR R0, SP, CH |
| 06DD | x(80E00010): LDR R0, SP, 10H |
| 06DE | x(40080001): ADD R0, R0, 1H |
| 06DF | x(A0E00010): STR R0, SP, 10H |
| 06E0 | x(E7FFFFEE): B -18 [06CFH] |
| END ; |
| FindPtrFlds(T,y 0,z dcw)a;b data[dcw]c := -1;d INC(dcw);e tdx := dcw;f dc := dcw*4;g |
| 06E1 | y(80E00004): LDR R0, SP, 4H |
| 06E2 | z(41000000): MOV R1, R0, 0H |
| 06E3 | a(42E8000C): ADD R2, SP, CH |
| 06E4 | b(F7FFFF4D): BL -179 [0632H] |
| 06E5 | c(80E0000C): LDR R0, SP, CH |
| 06E6 | c(41090078): SUB R1, R0, 78H |
| 06E7 | c(DA31041C): BLCC MT [trap=1, pos=12548] |
| 06E8 | c(40010002): LSL R0, R0, 2H |
| 06E9 | c .FIXUP D |
| 06E9 | c(8D000013): LDR SB, MT, MOD0 [ORG] |
| 06EA | c(00D80000): ADD R0, SB, R0 [global array] |
| 06EB | d(5100FFFF): MOV R1, R0, FFFFFFFFH |
| 06EC | d(A1007D64): STR R1, R0, 7D64H |
| 06ED | e(80E0000C): LDR R0, SP, CH |
| 06EE | e(40080001): ADD R0, R0, 1H |
| 06EF | e(A0E0000C): STR R0, SP, CH |
| 06F0 | f(80E0000C): LDR R0, SP, CH |
| 06F1 | f(A0D00020): STR R0, SB, 20H |
| 06F2 | g(80E0000C): LDR R0, SP, CH |
| 06F3 | g(40010002): LSL R0, R0, 2H |
| 06F4 | g(81E00008): LDR R1, SP, 8H |
| 06F5 | g(A0100000): STR R0, R1, 0H |
| IF tdx >= maxTD THENh ORS.Mark("too many record types")i;j tdx := 0 ENDk |
| 06F6 | h(80D00020): LDR R0, SB, 20H |
| 06F7 | h(40090078): SUB R0, R0, 78H |
| 06F8 | h(E5000007): BLT 7 [0700H] |
| 06F9 | i .FIXUP D |
| 06F9 | i(8D000010): LDR SB, MT, MOD0 [ORG] |
| 06FA | i(40D8897C): ADD R0, SB, FFFF897CH [data] |
| 06FB | i(41000016): MOV R1, R0, 16H |
| 06FC | j .FIXUP P |
| 06FC | j(F7209032): BL MOD2 [ORS] PROC9 |
| 06FD | k(40000000): MOV R0, R0, 0H |
| 06FE | k .FIXUP D |
| 06FE | k(8D000005): LDR SB, MT, MOD0 [ORG] |
| 06FF | k(A0D00020): STR R0, SB, 20H [data] |
| ENDl BuildTD; |
| 0700 | l(8FE00000): LDR LNK, SP, 0H |
| 0701 | l(4EE80018): ADD SP, SP, 18H |
| 0702 | l(C700000F): B LNK |
| |
| PROCEDURE TypeTest*(VAR x: Item; T: ORB.Type; varpar, isguard: BOOLEAN); |
| VAR pc0: LONGINT; |
| BEGINm (*fetch tag into RH*) |
| 0703 | m .PROC 13 |
| 0703 | m(4EE9001C): SUB SP, SP, 1CH |
| 0704 | m(AFE00000): STR LNK, SP, 0H |
| 0705 | m(A0E00004): STR R0, SP, 4H |
| 0706 | m(A1E00008): STR R1, SP, 8H |
| 0707 | m(A2E0000C): STR R2, SP, CH |
| 0708 | m(A3E00010): STR R3, SP, 10H |
| 0709 | m(A4E00014): STR R4, SP, 14H |
| IF varpar THENn Put2(Ldr,o RH,p SP,q x.a+4+rframe)s |
| 070A | n(90E00010): LDR R0, SP, 10H |
| 070B | n(E100000B): BEQ 11 [0717H] |
| 070C | o(40000008): MOV R0, R0, 8H |
| 070D | p .FIXUP D |
| 070D | p(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 070E | p(81D0002C): LDR R1, SB, 2CH [data] |
| 070F | q(4200000E): MOV R2, R0, EH |
| 0710 | r(83E00004): LDR R3, SP, 4H |
| 0711 | r(83300008): LDR R3, R3, 8H |
| 0712 | r(43380004): ADD R3, R3, 4H |
| 0713 | s(84D00034): LDR R4, SB, 34H |
| 0714 | s(03380004): ADD R3, R3, R4 |
| ELSEt loadu(x)v;w |
| 0715 | t(F7FFF95B): BL -1701 [0071H] |
| 0716 | u(E7000011): B 17 [0728H] |
| 0717 | v(80E00004): LDR R0, SP, 4H |
| 0718 | v(81E00008): LDR R1, SP, 8H |
| 0719 | w(F7FFFAB9): BL -1351 [01D3H] |
| pc0 := pc;x Put3(BC,y EQ,z 0)a;b (*NIL belongs to every pointer type*) |
| 071A | x .FIXUP D |
| 071A | x(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 071B | x(80D00018): LDR R0, SB, 18H [data] |
| 071C | x(A0E00018): STR R0, SP, 18H |
| 071D | y(40000002): MOV R0, R0, 2H |
| 071E | z(41000001): MOV R1, R0, 1H |
| 071F | a(42000000): MOV R2, R0, 0H |
| 0720 | b(F7FFF970): BL -1680 [0091H] |
| Put2(Ldr,c RH,d x.r,e -8)f |
| 0721 | c(40000008): MOV R0, R0, 8H |
| 0722 | d .FIXUP D |
| 0722 | d(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0723 | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0724 | e(82E00004): LDR R2, SP, 4H |
| 0725 | e(82200010): LDR R2, R2, 10H |
| 0726 | f(5300FFF8): MOV R3, R0, FFFFFFF8H |
| ENDg ; |
| 0727 | g(F7FFF949): BL -1719 [0071H] |
| Put2(Ldr,h RH,i RH,j T.nofpark*4)l;m incR;n |
| 0728 | h(40000008): MOV R0, R0, 8H |
| 0729 | i .FIXUP D |
| 0729 | i(8D000007): LDR SB, MT, MOD0 [ORG] |
| 072A | i(81D0002C): LDR R1, SB, 2CH [data] |
| 072B | j(82D0002C): LDR R2, SB, 2CH |
| 072C | k(83E0000C): LDR R3, SP, CH |
| 072D | k(D132D94C): BLEQ MT [trap=4, pos=13017] |
| 072E | l(8330000C): LDR R3, R3, CH |
| 072F | l(43310002): LSL R3, R3, 2H |
| 0730 | m(F7FFF940): BL -1728 [0071H] |
| 0731 | n(F7FFF97C): BL -1668 [00AEH] |
| loadTypTagAdr(T)o;p (*tag of T*) |
| 0732 | o(80E0000C): LDR R0, SP, CH |
| 0733 | p(F7FFFC29): BL -983 [035DH] |
| Put0(Cmp,q RH-1,r RH-1,s RH-2)t;u DEC(RH, 2);v |
| 0734 | q(40000009): MOV R0, R0, 9H |
| 0735 | r .FIXUP D |
| 0735 | r(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0736 | r(81D0002C): LDR R1, SB, 2CH [data] |
| 0737 | r(41190001): SUB R1, R1, 1H |
| 0738 | s(82D0002C): LDR R2, SB, 2CH |
| 0739 | s(42290001): SUB R2, R2, 1H |
| 073A | t(83D0002C): LDR R3, SB, 2CH |
| 073B | t(43390002): SUB R3, R3, 2H |
| 073C | u(F7FFF8C3): BL -1853 [0000H] |
| 073D | v .FIXUP D |
| 073D | v(8D000008): LDR SB, MT, MOD0 [ORG] |
| 073E | v(40D8002C): ADD R0, SB, 2CH [data] |
| 073F | v(81000000): LDR R1, R0, 0H |
| 0740 | v(41190002): SUB R1, R1, 2H |
| 0741 | v(A1000000): STR R1, R0, 0H |
| IF ~varpar THENw fix(pc0,x pc - pc0 -y 1)z ENDa ; |
| 0742 | w(90E00010): LDR R0, SP, 10H |
| 0743 | w(E9000007): BNE 7 [074BH] |
| 0744 | x(80E00018): LDR R0, SP, 18H |
| 0745 | y .FIXUP D |
| 0745 | y(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0746 | y(81D00018): LDR R1, SB, 18H [data] |
| 0747 | y(82E00018): LDR R2, SP, 18H |
| 0748 | y(01190002): SUB R1, R1, R2 |
| 0749 | z(41190001): SUB R1, R1, 1H |
| 074A | a(F7FFF9D1): BL -1583 [011CH] |
| IF isguard THENb |
| 074B | b(90E00014): LDR R0, SP, 14H |
| 074C | b(E1000007): BEQ 7 [0754H] |
| IF check THENc Trap(NE,d 2)e ENDf |
| 074D | c .FIXUP D |
| 074D | c(8D000008): LDR SB, MT, MOD0 [ORG] |
| 074E | c(90D00044): LDR R0, SB, 44H [data] |
| 074F | c(E1000003): BEQ 3 [0753H] |
| 0750 | d(40000009): MOV R0, R0, 9H |
| 0751 | e(41000002): MOV R1, R0, 2H |
| 0752 | f(F7FFF999): BL -1639 [00ECH] |
| ELSE SetCCg(x,h EQ)i;j |
| 0753 | g(E700000B): B 11 [075FH] |
| 0754 | h(80E00004): LDR R0, SP, 4H |
| 0755 | h(81E00008): LDR R1, SP, 8H |
| 0756 | i(42000001): MOV R2, R0, 1H |
| 0757 | j(F7FFF980): BL -1664 [00D8H] |
| IF ~varpar THENk DEC(RH) ENDl |
| 0758 | k(90E00010): LDR R0, SP, 10H |
| 0759 | k(E9000005): BNE 5 [075FH] |
| 075A | l .FIXUP D |
| 075A | l(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 075B | l(40D8002C): ADD R0, SB, 2CH [data] |
| 075C | l(81000000): LDR R1, R0, 0H |
| 075D | l(41190001): SUB R1, R1, 1H |
| 075E | l(A1000000): STR R1, R0, 0H |
| END |
| ENDm TypeTest; |
| 075F | m(8FE00000): LDR LNK, SP, 0H |
| 0760 | m(4EE8001C): ADD SP, SP, 1CH |
| 0761 | m(C700000F): B LNK |
| |
| (* Code generation for Boolean operators *) |
| |
| PROCEDURE Not*(VAR x: Item); (* x := ~x *) |
| VAR t: LONGINT; |
| BEGINn |
| 0762 | n .PROC 14 |
| 0762 | n(4EE90010): SUB SP, SP, 10H |
| 0763 | n(AFE00000): STR LNK, SP, 0H |
| 0764 | n(A0E00004): STR R0, SP, 4H |
| 0765 | n(A1E00008): STR R1, SP, 8H |
| IF x.mode # Cond THENo loadCond(x)p ENDq ; |
| 0766 | o(80E00004): LDR R0, SP, 4H |
| 0767 | o(80000000): LDR R0, R0, 0H |
| 0768 | o(4009000C): SUB R0, R0, CH |
| 0769 | o(E1000003): BEQ 3 [076DH] |
| 076A | p(80E00004): LDR R0, SP, 4H |
| 076B | p(81E00008): LDR R1, SP, 8H |
| 076C | q(F7FFFBAC): BL -1108 [0319H] |
| x.r := negated(x.r)r;s t := x.a;t x.a := x.b;u x.b := t |
| 076D | r(80E00004): LDR R0, SP, 4H |
| 076E | r(80000010): LDR R0, R0, 10H |
| 076F | s(F7FFF993): BL -1645 [0103H] |
| 0770 | s(81E00004): LDR R1, SP, 4H |
| 0771 | s(A0100010): STR R0, R1, 10H |
| 0772 | t(80E00004): LDR R0, SP, 4H |
| 0773 | t(80000008): LDR R0, R0, 8H |
| 0774 | t(A0E0000C): STR R0, SP, CH |
| 0775 | u(80E00004): LDR R0, SP, 4H |
| 0776 | u(8000000C): LDR R0, R0, CH |
| 0777 | u(81E00004): LDR R1, SP, 4H |
| 0778 | u(A0100008): STR R0, R1, 8H |
| ENDv Not; |
| 0779 | v(80E0000C): LDR R0, SP, CH |
| 077A | v(81E00004): LDR R1, SP, 4H |
| 077B | v(A010000C): STR R0, R1, CH |
| 077C | v(8FE00000): LDR LNK, SP, 0H |
| 077D | v(4EE80010): ADD SP, SP, 10H |
| 077E | v(C700000F): B LNK |
| |
| PROCEDURE And1*(VAR x: Item); (* x := x & *) |
| BEGINw |
| 077F | w .PROC 15 |
| 077F | w(4EE9000C): SUB SP, SP, CH |
| 0780 | w(AFE00000): STR LNK, SP, 0H |
| 0781 | w(A0E00004): STR R0, SP, 4H |
| 0782 | w(A1E00008): STR R1, SP, 8H |
| IF x.mode # Cond THENx loadCond(x)y ENDz ; |
| 0783 | x(80E00004): LDR R0, SP, 4H |
| 0784 | x(80000000): LDR R0, R0, 0H |
| 0785 | x(4009000C): SUB R0, R0, CH |
| 0786 | x(E1000003): BEQ 3 [078AH] |
| 0787 | y(80E00004): LDR R0, SP, 4H |
| 0788 | y(81E00008): LDR R1, SP, 8H |
| 0789 | z(F7FFFB8F): BL -1137 [0319H] |
| Put3(BC,a negated(xb.r)c,d x.a)e;f x.a := pc-1;g FixLink(x.b)h;i x.b := 0 |
| 078A | a(40000002): MOV R0, R0, 2H |
| 078B | b(4EE90004): SUB SP, SP, 4H |
| 078C | b(A0E00000): STR R0, SP, 0H |
| 078D | c(80E00008): LDR R0, SP, 8H |
| 078E | c(80000010): LDR R0, R0, 10H |
| 078F | d(F7FFF973): BL -1677 [0103H] |
| 0790 | d(01000000): MOV R1, R0, R0 |
| 0791 | d(80E00000): LDR R0, SP, 0H |
| 0792 | d(4EE80004): ADD SP, SP, 4H |
| 0793 | e(82E00004): LDR R2, SP, 4H |
| 0794 | e(82200008): LDR R2, R2, 8H |
| 0795 | f(F7FFF8FB): BL -1797 [0091H] |
| 0796 | g .FIXUP D |
| 0796 | g(8D00003C): LDR SB, MT, MOD0 [ORG] |
| 0797 | g(80D00018): LDR R0, SB, 18H [data] |
| 0798 | g(40090001): SUB R0, R0, 1H |
| 0799 | g(81E00004): LDR R1, SP, 4H |
| 079A | g(A0100008): STR R0, R1, 8H |
| 079B | h(80E00004): LDR R0, SP, 4H |
| 079C | h(8000000C): LDR R0, R0, CH |
| 079D | i(F7FFF998): BL -1640 [0136H] |
| ENDj And1; |
| 079E | j(40000000): MOV R0, R0, 0H |
| 079F | j(81E00004): LDR R1, SP, 4H |
| 07A0 | j(A010000C): STR R0, R1, CH |
| 07A1 | j(8FE00000): LDR LNK, SP, 0H |
| 07A2 | j(4EE8000C): ADD SP, SP, CH |
| 07A3 | j(C700000F): B LNK |
| |
| PROCEDURE And2*(VAR x, y: Item); |
| BEGINk |
| 07A4 | k .PROC 16 |
| 07A4 | k(4EE90014): SUB SP, SP, 14H |
| 07A5 | k(AFE00000): STR LNK, SP, 0H |
| 07A6 | k(A0E00004): STR R0, SP, 4H |
| 07A7 | k(A1E00008): STR R1, SP, 8H |
| 07A8 | k(A2E0000C): STR R2, SP, CH |
| 07A9 | k(A3E00010): STR R3, SP, 10H |
| IF y.mode # Cond THENl loadCond(y)m ENDn ; |
| 07AA | l(80E0000C): LDR R0, SP, CH |
| 07AB | l(80000000): LDR R0, R0, 0H |
| 07AC | l(4009000C): SUB R0, R0, CH |
| 07AD | l(E1000003): BEQ 3 [07B1H] |
| 07AE | m(80E0000C): LDR R0, SP, CH |
| 07AF | m(81E00010): LDR R1, SP, 10H |
| 07B0 | n(F7FFFB68): BL -1176 [0319H] |
| x.a := merged(y.a,o x.a)p;q x.b := y.b;r x.r := y.r |
| 07B1 | o(80E0000C): LDR R0, SP, CH |
| 07B2 | o(80000008): LDR R0, R0, 8H |
| 07B3 | p(81E00004): LDR R1, SP, 4H |
| 07B4 | p(81100008): LDR R1, R1, 8H |
| 07B5 | q(F7FFF9C7): BL -1593 [017DH] |
| 07B6 | q(81E00004): LDR R1, SP, 4H |
| 07B7 | q(A0100008): STR R0, R1, 8H |
| 07B8 | r(80E0000C): LDR R0, SP, CH |
| 07B9 | r(8000000C): LDR R0, R0, CH |
| 07BA | r(81E00004): LDR R1, SP, 4H |
| 07BB | r(A010000C): STR R0, R1, CH |
| ENDs And2; |
| 07BC | s(80E0000C): LDR R0, SP, CH |
| 07BD | s(80000010): LDR R0, R0, 10H |
| 07BE | s(81E00004): LDR R1, SP, 4H |
| 07BF | s(A0100010): STR R0, R1, 10H |
| 07C0 | s(8FE00000): LDR LNK, SP, 0H |
| 07C1 | s(4EE80014): ADD SP, SP, 14H |
| 07C2 | s(C700000F): B LNK |
| |
| PROCEDURE Or1*(VAR x: Item); (* x := x OR *) |
| BEGINt |
| 07C3 | t .PROC 17 |
| 07C3 | t(4EE9000C): SUB SP, SP, CH |
| 07C4 | t(AFE00000): STR LNK, SP, 0H |
| 07C5 | t(A0E00004): STR R0, SP, 4H |
| 07C6 | t(A1E00008): STR R1, SP, 8H |
| IF x.mode # Cond THENu loadCond(x)v ENDw ; |
| 07C7 | u(80E00004): LDR R0, SP, 4H |
| 07C8 | u(80000000): LDR R0, R0, 0H |
| 07C9 | u(4009000C): SUB R0, R0, CH |
| 07CA | u(E1000003): BEQ 3 [07CEH] |
| 07CB | v(80E00004): LDR R0, SP, 4H |
| 07CC | v(81E00008): LDR R1, SP, 8H |
| 07CD | w(F7FFFB4B): BL -1205 [0319H] |
| Put3(BC,x x.r,y x.b)z;a x.b := pc-1;b FixLink(x.a)c;d x.a := 0 |
| 07CE | x(40000002): MOV R0, R0, 2H |
| 07CF | y(81E00004): LDR R1, SP, 4H |
| 07D0 | y(81100010): LDR R1, R1, 10H |
| 07D1 | z(82E00004): LDR R2, SP, 4H |
| 07D2 | z(8220000C): LDR R2, R2, CH |
| 07D3 | a(F7FFF8BD): BL -1859 [0091H] |
| 07D4 | b .FIXUP D |
| 07D4 | b(8D00003E): LDR SB, MT, MOD0 [ORG] |
| 07D5 | b(80D00018): LDR R0, SB, 18H [data] |
| 07D6 | b(40090001): SUB R0, R0, 1H |
| 07D7 | b(81E00004): LDR R1, SP, 4H |
| 07D8 | b(A010000C): STR R0, R1, CH |
| 07D9 | c(80E00004): LDR R0, SP, 4H |
| 07DA | c(80000008): LDR R0, R0, 8H |
| 07DB | d(F7FFF95A): BL -1702 [0136H] |
| ENDe Or1; |
| 07DC | e(40000000): MOV R0, R0, 0H |
| 07DD | e(81E00004): LDR R1, SP, 4H |
| 07DE | e(A0100008): STR R0, R1, 8H |
| 07DF | e(8FE00000): LDR LNK, SP, 0H |
| 07E0 | e(4EE8000C): ADD SP, SP, CH |
| 07E1 | e(C700000F): B LNK |
| |
| PROCEDURE Or2*(VAR x, y: Item); |
| BEGINf |
| 07E2 | f .PROC 18 |
| 07E2 | f(4EE90014): SUB SP, SP, 14H |
| 07E3 | f(AFE00000): STR LNK, SP, 0H |
| 07E4 | f(A0E00004): STR R0, SP, 4H |
| 07E5 | f(A1E00008): STR R1, SP, 8H |
| 07E6 | f(A2E0000C): STR R2, SP, CH |
| 07E7 | f(A3E00010): STR R3, SP, 10H |
| IF y.mode # Cond THENg loadCond(y)h ENDi ; |
| 07E8 | g(80E0000C): LDR R0, SP, CH |
| 07E9 | g(80000000): LDR R0, R0, 0H |
| 07EA | g(4009000C): SUB R0, R0, CH |
| 07EB | g(E1000003): BEQ 3 [07EFH] |
| 07EC | h(80E0000C): LDR R0, SP, CH |
| 07ED | h(81E00010): LDR R1, SP, 10H |
| 07EE | i(F7FFFB2A): BL -1238 [0319H] |
| x.a := y.a;j x.b := merged(y.b,k x.b)l;m x.r := y.r |
| 07EF | j(80E0000C): LDR R0, SP, CH |
| 07F0 | j(80000008): LDR R0, R0, 8H |
| 07F1 | j(81E00004): LDR R1, SP, 4H |
| 07F2 | j(A0100008): STR R0, R1, 8H |
| 07F3 | k(80E0000C): LDR R0, SP, CH |
| 07F4 | k(8000000C): LDR R0, R0, CH |
| 07F5 | l(81E00004): LDR R1, SP, 4H |
| 07F6 | l(8110000C): LDR R1, R1, CH |
| 07F7 | m(F7FFF985): BL -1659 [017DH] |
| 07F8 | m(81E00004): LDR R1, SP, 4H |
| 07F9 | m(A010000C): STR R0, R1, CH |
| ENDn Or2; |
| 07FA | n(80E0000C): LDR R0, SP, CH |
| 07FB | n(80000010): LDR R0, R0, 10H |
| 07FC | n(81E00004): LDR R1, SP, 4H |
| 07FD | n(A0100010): STR R0, R1, 10H |
| 07FE | n(8FE00000): LDR LNK, SP, 0H |
| 07FF | n(4EE80014): ADD SP, SP, 14H |
| 0800 | n(C700000F): B LNK |
| |
| (* Code generation for arithmetic operators *) |
| |
| PROCEDURE Neg*(VAR x: Item); (* x := -x *) |
| BEGINo |
| 0801 | o .PROC 19 |
| 0801 | o(4EE9000C): SUB SP, SP, CH |
| 0802 | o(AFE00000): STR LNK, SP, 0H |
| 0803 | o(A0E00004): STR R0, SP, 4H |
| 0804 | o(A1E00008): STR R1, SP, 8H |
| IF x.type.formp = ORB.Int THENq |
| 0805 | p(80E00004): LDR R0, SP, 4H |
| 0806 | p(80000004): LDR R0, R0, 4H |
| 0807 | p(D137E84C): BLEQ MT [trap=4, pos=14312] |
| 0808 | q(80000000): LDR R0, R0, 0H |
| 0809 | q(40090004): SUB R0, R0, 4H |
| 080A | q(E900001D): BNE 29 [0828H] |
| IF x.mode = ORB.Const THENr x.a := -x.a |
| 080B | r(80E00004): LDR R0, SP, 4H |
| 080C | r(80000000): LDR R0, R0, 0H |
| 080D | r(40090001): SUB R0, R0, 1H |
| 080E | r(E9000007): BNE 7 [0816H] |
| ELSEs loadt(x)u;v Put1(Mov,w RH,x 0,y 0)z;a Put0(Sub,b x.r,c RH,d x.r)e |
| 080F | s(80E00004): LDR R0, SP, 4H |
| 0810 | s(80000008): LDR R0, R0, 8H |
| 0811 | s(41000000): MOV R1, R0, 0H |
| 0812 | s(00190000): SUB R0, R1, R0 |
| 0813 | s(81E00004): LDR R1, SP, 4H |
| 0814 | s(A0100008): STR R0, R1, 8H |
| 0815 | t(E7000011): B 17 [0827H] |
| 0816 | u(80E00004): LDR R0, SP, 4H |
| 0817 | u(81E00008): LDR R1, SP, 8H |
| 0818 | v(F7FFF9BA): BL -1606 [01D3H] |
| 0819 | w(40000000): MOV R0, R0, 0H |
| 081A | x .FIXUP D |
| 081A | x(8D000046): LDR SB, MT, MOD0 [ORG] |
| 081B | x(81D0002C): LDR R1, SB, 2CH [data] |
| 081C | y(42000000): MOV R2, R0, 0H |
| 081D | z(43000000): MOV R3, R0, 0H |
| 081E | a(F7FFF7FF): BL -2049 [001EH] |
| 081F | b(40000009): MOV R0, R0, 9H |
| 0820 | c(81E00004): LDR R1, SP, 4H |
| 0821 | c(81100010): LDR R1, R1, 10H |
| 0822 | d .FIXUP D |
| 0822 | d(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0823 | d(82D0002C): LDR R2, SB, 2CH [data] |
| 0824 | e(83E00004): LDR R3, SP, 4H |
| 0825 | e(83300010): LDR R3, R3, 10H |
| ENDf |
| 0826 | f(F7FFF7D9): BL -2087 [0000H] |
| ELSIF xg.type.formh = ORB.Real THENi |
| 0827 | g(E700003B): B 59 [0863H] |
| 0828 | h(80E00004): LDR R0, SP, 4H |
| 0829 | h(80000004): LDR R0, R0, 4H |
| 082A | h(D138854C): BLEQ MT [trap=4, pos=14469] |
| 082B | i(80000000): LDR R0, R0, 0H |
| 082C | i(40090005): SUB R0, R0, 5H |
| 082D | i(E900001F): BNE 31 [084DH] |
| IF x.mode = ORB.Const THENj x.a := x.a + 7FFFFFFFH +k 1 |
| 082E | j(80E00004): LDR R0, SP, 4H |
| 082F | j(80000000): LDR R0, R0, 0H |
| 0830 | j(40090001): SUB R0, R0, 1H |
| 0831 | j(E9000009): BNE 9 [083BH] |
| 0832 | k(80E00004): LDR R0, SP, 4H |
| 0833 | k(80000008): LDR R0, R0, 8H |
| 0834 | k(61007FFF): MOV' R1, R0, 7FFFH |
| 0835 | k(4116FFFF): IOR R1, R1, FFFFFFFFH |
| 0836 | k(00080001): ADD R0, R0, R1 |
| ELSEl loadm(x)n;o Put1(Mov,p RH,q 0,r 0)s;t Put0(Fsb,u x.r,v RH,w x.r)x |
| 0837 | l(40080001): ADD R0, R0, 1H |
| 0838 | l(81E00004): LDR R1, SP, 4H |
| 0839 | l(A0100008): STR R0, R1, 8H |
| 083A | m(E7000011): B 17 [084CH] |
| 083B | n(80E00004): LDR R0, SP, 4H |
| 083C | n(81E00008): LDR R1, SP, 8H |
| 083D | o(F7FFF995): BL -1643 [01D3H] |
| 083E | p(40000000): MOV R0, R0, 0H |
| 083F | q .FIXUP D |
| 083F | q(8D00001D): LDR SB, MT, MOD0 [ORG] |
| 0840 | q(81D0002C): LDR R1, SB, 2CH [data] |
| 0841 | r(42000000): MOV R2, R0, 0H |
| 0842 | s(43000000): MOV R3, R0, 0H |
| 0843 | t(F7FFF7DA): BL -2086 [001EH] |
| 0844 | u(4000000D): MOV R0, R0, DH |
| 0845 | v(81E00004): LDR R1, SP, 4H |
| 0846 | v(81100010): LDR R1, R1, 10H |
| 0847 | w .FIXUP D |
| 0847 | w(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0848 | w(82D0002C): LDR R2, SB, 2CH [data] |
| 0849 | x(83E00004): LDR R3, SP, 4H |
| 084A | x(83300010): LDR R3, R3, 10H |
| ENDy |
| 084B | y(F7FFF7B4): BL -2124 [0000H] |
| ELSE (*form = Set*) |
| IFz x.mode = ORB.Const THENa x.a := -x.a-b1 |
| 084C | z(E7000016): B 22 [0863H] |
| 084D | a(80E00004): LDR R0, SP, 4H |
| 084E | a(80000000): LDR R0, R0, 0H |
| 084F | a(40090001): SUB R0, R0, 1H |
| 0850 | a(E9000008): BNE 8 [0859H] |
| 0851 | b(80E00004): LDR R0, SP, 4H |
| 0852 | b(80000008): LDR R0, R0, 8H |
| 0853 | b(41000000): MOV R1, R0, 0H |
| 0854 | b(00190000): SUB R0, R1, R0 |
| ELSEc loadd(x)e;f Put1(Xor,g x.r,h x.r,i -1)j |
| 0855 | c(40090001): SUB R0, R0, 1H |
| 0856 | c(81E00004): LDR R1, SP, 4H |
| 0857 | c(A0100008): STR R0, R1, 8H |
| 0858 | d(E700000A): B 10 [0863H] |
| 0859 | e(80E00004): LDR R0, SP, 4H |
| 085A | e(81E00008): LDR R1, SP, 8H |
| 085B | f(F7FFF977): BL -1673 [01D3H] |
| 085C | g(40000007): MOV R0, R0, 7H |
| 085D | h(81E00004): LDR R1, SP, 4H |
| 085E | h(81100010): LDR R1, R1, 10H |
| 085F | i(82E00004): LDR R2, SP, 4H |
| 0860 | i(82200010): LDR R2, R2, 10H |
| 0861 | j(5300FFFF): MOV R3, R0, FFFFFFFFH |
| ENDk |
| 0862 | k(F7FFF7BB): BL -2117 [001EH] |
| END |
| ENDl Neg; |
| 0863 | l(8FE00000): LDR LNK, SP, 0H |
| 0864 | l(4EE8000C): ADD SP, SP, CH |
| 0865 | l(C700000F): B LNK |
| |
| PROCEDURE AddOp*(op: LONGINT; VAR x, y: Item); (* x := x +- y *) |
| BEGINm |
| 0866 | m .PROC 20 |
| 0866 | m(4EE90018): SUB SP, SP, 18H |
| 0867 | m(AFE00000): STR LNK, SP, 0H |
| 0868 | m(A0E00004): STR R0, SP, 4H |
| 0869 | m(A1E00008): STR R1, SP, 8H |
| 086A | m(A2E0000C): STR R2, SP, CH |
| 086B | m(A3E00010): STR R3, SP, 10H |
| 086C | m(A4E00014): STR R4, SP, 14H |
| IF op = ORS.plus THENn |
| 086D | n(80E00004): LDR R0, SP, 4H |
| 086E | n(40090006): SUB R0, R0, 6H |
| 086F | n(E900003C): BNE 60 [08ACH] |
| IF (x.mode = ORB.Const)o & (py.mode = ORB.Const)q THENr x.a := x.a + y.a |
| 0870 | o(80E00008): LDR R0, SP, 8H |
| 0871 | o(80000000): LDR R0, R0, 0H |
| 0872 | o(40090001): SUB R0, R0, 1H |
| 0873 | p(E900000C): BNE 12 [0880H] |
| 0874 | q(80E00010): LDR R0, SP, 10H |
| 0875 | q(80000000): LDR R0, R0, 0H |
| 0876 | q(40090001): SUB R0, R0, 1H |
| 0877 | r(E9000008): BNE 8 [0880H] |
| ELSIFs yt.mode = ORB.Const THENu load(x)v;w |
| 0878 | s(80E00008): LDR R0, SP, 8H |
| 0879 | s(80000008): LDR R0, R0, 8H |
| 087A | s(81E00010): LDR R1, SP, 10H |
| 087B | s(81100008): LDR R1, R1, 8H |
| 087C | s(00080001): ADD R0, R0, R1 |
| 087D | s(81E00008): LDR R1, SP, 8H |
| 087E | s(A0100008): STR R0, R1, 8H |
| 087F | t(E700002B): B 43 [08ABH] |
| 0880 | u(80E00010): LDR R0, SP, 10H |
| 0881 | u(80000000): LDR R0, R0, 0H |
| 0882 | u(40090001): SUB R0, R0, 1H |
| 0883 | u(E900000F): BNE 15 [0893H] |
| 0884 | v(80E00008): LDR R0, SP, 8H |
| 0885 | v(81E0000C): LDR R1, SP, CH |
| 0886 | w(F7FFF94C): BL -1716 [01D3H] |
| IF y.a # 0 THENx Put1a(Add,y x.r,z x.r,a y.a)b ENDc |
| 0887 | x(80E00010): LDR R0, SP, 10H |
| 0888 | x(80000008): LDR R0, R0, 8H |
| 0889 | x(E1000008): BEQ 8 [0892H] |
| 088A | y(40000008): MOV R0, R0, 8H |
| 088B | z(81E00008): LDR R1, SP, 8H |
| 088C | z(81100010): LDR R1, R1, 10H |
| 088D | a(82E00008): LDR R2, SP, 8H |
| 088E | a(82200010): LDR R2, R2, 10H |
| 088F | b(83E00010): LDR R3, SP, 10H |
| 0890 | b(83300008): LDR R3, R3, 8H |
| 0891 | c(F7FFF7B2): BL -2126 [0044H] |
| ELSE loadd(x)e;f load(y)g;h Put0(Add,i RH-2,j x.r,k y.r)l;m DEC(RH);n x.r := RH-1 |
| 0892 | d(E7000018): B 24 [08ABH] |
| 0893 | e(80E00008): LDR R0, SP, 8H |
| 0894 | e(81E0000C): LDR R1, SP, CH |
| 0895 | f(F7FFF93D): BL -1731 [01D3H] |
| 0896 | g(80E00010): LDR R0, SP, 10H |
| 0897 | g(81E00014): LDR R1, SP, 14H |
| 0898 | h(F7FFF93A): BL -1734 [01D3H] |
| 0899 | i(40000008): MOV R0, R0, 8H |
| 089A | j .FIXUP D |
| 089A | j(8D000053): LDR SB, MT, MOD0 [ORG] |
| 089B | j(81D0002C): LDR R1, SB, 2CH [data] |
| 089C | j(41190002): SUB R1, R1, 2H |
| 089D | k(82E00008): LDR R2, SP, 8H |
| 089E | k(82200010): LDR R2, R2, 10H |
| 089F | l(83E00010): LDR R3, SP, 10H |
| 08A0 | l(83300010): LDR R3, R3, 10H |
| 08A1 | m(F7FFF75E): BL -2210 [0000H] |
| 08A2 | n .FIXUP D |
| 08A2 | n(8D000008): LDR SB, MT, MOD0 [ORG] |
| 08A3 | n(40D8002C): ADD R0, SB, 2CH [data] |
| 08A4 | n(81000000): LDR R1, R0, 0H |
| 08A5 | n(41190001): SUB R1, R1, 1H |
| 08A6 | n(A1000000): STR R1, R0, 0H |
| ENDo |
| 08A7 | o(80D0002C): LDR R0, SB, 2CH |
| 08A8 | o(40090001): SUB R0, R0, 1H |
| 08A9 | o(81E00008): LDR R1, SP, 8H |
| 08AA | o(A0100010): STR R0, R1, 10H |
| ELSE (*op = ORS.minus*) |
| IFp (x.mode = ORB.Const)q & (ry.mode = ORB.Const)s THENt x.a := x.a - y.a |
| 08AB | p(E700003B): B 59 [08E7H] |
| 08AC | q(80E00008): LDR R0, SP, 8H |
| 08AD | q(80000000): LDR R0, R0, 0H |
| 08AE | q(40090001): SUB R0, R0, 1H |
| 08AF | r(E900000C): BNE 12 [08BCH] |
| 08B0 | s(80E00010): LDR R0, SP, 10H |
| 08B1 | s(80000000): LDR R0, R0, 0H |
| 08B2 | s(40090001): SUB R0, R0, 1H |
| 08B3 | t(E9000008): BNE 8 [08BCH] |
| ELSIFu yv.mode = ORB.Const THENw load(x)x;y |
| 08B4 | u(80E00008): LDR R0, SP, 8H |
| 08B5 | u(80000008): LDR R0, R0, 8H |
| 08B6 | u(81E00010): LDR R1, SP, 10H |
| 08B7 | u(81100008): LDR R1, R1, 8H |
| 08B8 | u(00090001): SUB R0, R0, R1 |
| 08B9 | u(81E00008): LDR R1, SP, 8H |
| 08BA | u(A0100008): STR R0, R1, 8H |
| 08BB | v(E700002B): B 43 [08E7H] |
| 08BC | w(80E00010): LDR R0, SP, 10H |
| 08BD | w(80000000): LDR R0, R0, 0H |
| 08BE | w(40090001): SUB R0, R0, 1H |
| 08BF | w(E900000F): BNE 15 [08CFH] |
| 08C0 | x(80E00008): LDR R0, SP, 8H |
| 08C1 | x(81E0000C): LDR R1, SP, CH |
| 08C2 | y(F7FFF910): BL -1776 [01D3H] |
| IF y.a # 0 THENz Put1a(Sub,a x.r,b x.r,c y.a)d ENDe |
| 08C3 | z(80E00010): LDR R0, SP, 10H |
| 08C4 | z(80000008): LDR R0, R0, 8H |
| 08C5 | z(E1000008): BEQ 8 [08CEH] |
| 08C6 | a(40000009): MOV R0, R0, 9H |
| 08C7 | b(81E00008): LDR R1, SP, 8H |
| 08C8 | b(81100010): LDR R1, R1, 10H |
| 08C9 | c(82E00008): LDR R2, SP, 8H |
| 08CA | c(82200010): LDR R2, R2, 10H |
| 08CB | d(83E00010): LDR R3, SP, 10H |
| 08CC | d(83300008): LDR R3, R3, 8H |
| 08CD | e(F7FFF776): BL -2186 [0044H] |
| ELSE loadf(x)g;h load(y)i;j Put0(Sub,k RH-2,l x.r,m y.r)n;o DEC(RH);p x.r := RH-1 |
| 08CE | f(E7000018): B 24 [08E7H] |
| 08CF | g(80E00008): LDR R0, SP, 8H |
| 08D0 | g(81E0000C): LDR R1, SP, CH |
| 08D1 | h(F7FFF901): BL -1791 [01D3H] |
| 08D2 | i(80E00010): LDR R0, SP, 10H |
| 08D3 | i(81E00014): LDR R1, SP, 14H |
| 08D4 | j(F7FFF8FE): BL -1794 [01D3H] |
| 08D5 | k(40000009): MOV R0, R0, 9H |
| 08D6 | l .FIXUP D |
| 08D6 | l(8D000034): LDR SB, MT, MOD0 [ORG] |
| 08D7 | l(81D0002C): LDR R1, SB, 2CH [data] |
| 08D8 | l(41190002): SUB R1, R1, 2H |
| 08D9 | m(82E00008): LDR R2, SP, 8H |
| 08DA | m(82200010): LDR R2, R2, 10H |
| 08DB | n(83E00010): LDR R3, SP, 10H |
| 08DC | n(83300010): LDR R3, R3, 10H |
| 08DD | o(F7FFF722): BL -2270 [0000H] |
| 08DE | p .FIXUP D |
| 08DE | p(8D000008): LDR SB, MT, MOD0 [ORG] |
| 08DF | p(40D8002C): ADD R0, SB, 2CH [data] |
| 08E0 | p(81000000): LDR R1, R0, 0H |
| 08E1 | p(41190001): SUB R1, R1, 1H |
| 08E2 | p(A1000000): STR R1, R0, 0H |
| ENDq |
| 08E3 | q(80D0002C): LDR R0, SB, 2CH |
| 08E4 | q(40090001): SUB R0, R0, 1H |
| 08E5 | q(81E00008): LDR R1, SP, 8H |
| 08E6 | q(A0100010): STR R0, R1, 10H |
| END |
| ENDr AddOp; |
| 08E7 | r(8FE00000): LDR LNK, SP, 0H |
| 08E8 | r(4EE80018): ADD SP, SP, 18H |
| 08E9 | r(C700000F): B LNK |
| |
| PROCEDURE log2(m: LONGINT; VAR e: LONGINT): LONGINT; |
| BEGINs e := 0;t |
| 08EA | s(4EE9000C): SUB SP, SP, CH |
| 08EB | s(AFE00000): STR LNK, SP, 0H |
| 08EC | s(A0E00004): STR R0, SP, 4H |
| 08ED | s(A1E00008): STR R1, SP, 8H |
| 08EE | t(40000000): MOV R0, R0, 0H |
| 08EF | t(81E00008): LDR R1, SP, 8H |
| 08F0 | t(A0100000): STR R0, R1, 0H |
| WHILE ~ODD(m) DOu m := m DIV 2;v INC(e) ENDw ; |
| 08F1 | u(80E00004): LDR R0, SP, 4H |
| 08F2 | u(40040001): AND R0, R0, 1H |
| 08F3 | u(E9000008): BNE 8 [08FCH] |
| 08F4 | v(80E00004): LDR R0, SP, 4H |
| 08F5 | v(40020001): ASR R0, R0, 1H |
| 08F6 | v(A0E00004): STR R0, SP, 4H |
| 08F7 | w(80E00008): LDR R0, SP, 8H |
| 08F8 | w(81000000): LDR R1, R0, 0H |
| 08F9 | w(41180001): ADD R1, R1, 1H |
| 08FA | w(A1000000): STR R1, R0, 0H |
| 08FB | w(E7FFFFF5): B -11 [08F1H] |
| RETURN m |
| ENDx log2; |
| 08FC | x(80E00004): LDR R0, SP, 4H |
| 08FD | x(8FE00000): LDR LNK, SP, 0H |
| 08FE | x(4EE8000C): ADD SP, SP, CH |
| 08FF | x(C700000F): B LNK |
| |
| PROCEDURE MulOp*(VAR x, y: Item); (* x := x * y *) |
| VAR e: LONGINT; |
| BEGINy |
| 0900 | y .PROC 21 |
| 0900 | y(4EE90018): SUB SP, SP, 18H |
| 0901 | y(AFE00000): STR LNK, SP, 0H |
| 0902 | y(A0E00004): STR R0, SP, 4H |
| 0903 | y(A1E00008): STR R1, SP, 8H |
| 0904 | y(A2E0000C): STR R2, SP, CH |
| 0905 | y(A3E00010): STR R3, SP, 10H |
| IF (x.mode = ORB.Const)z & (ay.mode = ORB.Const)b THENc x.a := x.a * y.a |
| 0906 | z(80E00004): LDR R0, SP, 4H |
| 0907 | z(80000000): LDR R0, R0, 0H |
| 0908 | z(40090001): SUB R0, R0, 1H |
| 0909 | a(E900000C): BNE 12 [0916H] |
| 090A | b(80E0000C): LDR R0, SP, CH |
| 090B | b(80000000): LDR R0, R0, 0H |
| 090C | b(40090001): SUB R0, R0, 1H |
| 090D | c(E9000008): BNE 8 [0916H] |
| ELSIFd (ey.mode = ORB.Const)f & (gy.a >= 2)h & (ilog2(y.a,j e)k =l 1)m THENn load(x)o;p Put1(Lsl,q x.r,r x.r,s e)t |
| 090E | d(80E00004): LDR R0, SP, 4H |
| 090F | d(80000008): LDR R0, R0, 8H |
| 0910 | d(81E0000C): LDR R1, SP, CH |
| 0911 | d(81100008): LDR R1, R1, 8H |
| 0912 | d(000A0001): MUL R0, R0, R1 |
| 0913 | d(81E00004): LDR R1, SP, 4H |
| 0914 | d(A0100008): STR R0, R1, 8H |
| 0915 | e(E7000078): B 120 [098EH] |
| 0916 | f(80E0000C): LDR R0, SP, CH |
| 0917 | f(80000000): LDR R0, R0, 0H |
| 0918 | f(40090001): SUB R0, R0, 1H |
| 0919 | g(E9000015): BNE 21 [092FH] |
| 091A | h(80E0000C): LDR R0, SP, CH |
| 091B | h(80000008): LDR R0, R0, 8H |
| 091C | h(40090002): SUB R0, R0, 2H |
| 091D | i(E5000011): BLT 17 [092FH] |
| 091E | j(80E0000C): LDR R0, SP, CH |
| 091F | j(80000008): LDR R0, R0, 8H |
| 0920 | k(41E80014): ADD R1, SP, 14H |
| 0921 | l(F7FFFFC8): BL -56 [08EAH] |
| 0922 | m(40090001): SUB R0, R0, 1H |
| 0923 | n(E900000B): BNE 11 [092FH] |
| 0924 | o(80E00004): LDR R0, SP, 4H |
| 0925 | o(81E00008): LDR R1, SP, 8H |
| 0926 | p(F7FFF8AC): BL -1876 [01D3H] |
| 0927 | q(40000001): MOV R0, R0, 1H |
| 0928 | r(81E00004): LDR R1, SP, 4H |
| 0929 | r(81100010): LDR R1, R1, 10H |
| 092A | s(82E00004): LDR R2, SP, 4H |
| 092B | s(82200010): LDR R2, R2, 10H |
| 092C | t(83E00014): LDR R3, SP, 14H |
| ELSIFu yv.mode = ORB.Const THENw load(x)x;y Put1a(Mul,z x.r,a x.r,b y.a)c |
| 092D | u(F7FFF6F0): BL -2320 [001EH] |
| 092E | v(E700005F): B 95 [098EH] |
| 092F | w(80E0000C): LDR R0, SP, CH |
| 0930 | w(80000000): LDR R0, R0, 0H |
| 0931 | w(40090001): SUB R0, R0, 1H |
| 0932 | w(E900000C): BNE 12 [093FH] |
| 0933 | x(80E00004): LDR R0, SP, 4H |
| 0934 | x(81E00008): LDR R1, SP, 8H |
| 0935 | y(F7FFF89D): BL -1891 [01D3H] |
| 0936 | z(4000000A): MOV R0, R0, AH |
| 0937 | a(81E00004): LDR R1, SP, 4H |
| 0938 | a(81100010): LDR R1, R1, 10H |
| 0939 | b(82E00004): LDR R2, SP, 4H |
| 093A | b(82200010): LDR R2, R2, 10H |
| 093B | c(83E0000C): LDR R3, SP, CH |
| 093C | c(83300008): LDR R3, R3, 8H |
| ELSIFd (ex.mode = ORB.Const)f & (gx.a >= 2)h & (ilog2(x.a,j e)k =l 1)m THENn load(y)o;p Put1(Lsl,q y.r,r y.r,s e)t;u x.mode := Reg;v x.r := y.r |
| 093D | d(F7FFF706): BL -2298 [0044H] |
| 093E | e(E700004F): B 79 [098EH] |
| 093F | f(80E00004): LDR R0, SP, 4H |
| 0940 | f(80000000): LDR R0, R0, 0H |
| 0941 | f(40090001): SUB R0, R0, 1H |
| 0942 | g(E900001C): BNE 28 [095FH] |
| 0943 | h(80E00004): LDR R0, SP, 4H |
| 0944 | h(80000008): LDR R0, R0, 8H |
| 0945 | h(40090002): SUB R0, R0, 2H |
| 0946 | i(E5000018): BLT 24 [095FH] |
| 0947 | j(80E00004): LDR R0, SP, 4H |
| 0948 | j(80000008): LDR R0, R0, 8H |
| 0949 | k(41E80014): ADD R1, SP, 14H |
| 094A | l(F7FFFF9F): BL -97 [08EAH] |
| 094B | m(40090001): SUB R0, R0, 1H |
| 094C | n(E9000012): BNE 18 [095FH] |
| 094D | o(80E0000C): LDR R0, SP, CH |
| 094E | o(81E00010): LDR R1, SP, 10H |
| 094F | p(F7FFF883): BL -1917 [01D3H] |
| 0950 | q(40000001): MOV R0, R0, 1H |
| 0951 | r(81E0000C): LDR R1, SP, CH |
| 0952 | r(81100010): LDR R1, R1, 10H |
| 0953 | s(82E0000C): LDR R2, SP, CH |
| 0954 | s(82200010): LDR R2, R2, 10H |
| 0955 | t(83E00014): LDR R3, SP, 14H |
| 0956 | u(F7FFF6C7): BL -2361 [001EH] |
| 0957 | v(4000000A): MOV R0, R0, AH |
| 0958 | v(81E00004): LDR R1, SP, 4H |
| 0959 | v(A0100000): STR R0, R1, 0H |
| ELSIFw xx.mode = ORB.Const THENy load(y)z;a Put1a(Mul,b y.r,c y.r,d x.a)e;f x.mode := Reg;g x.r := y.r |
| 095A | w(80E0000C): LDR R0, SP, CH |
| 095B | w(80000010): LDR R0, R0, 10H |
| 095C | w(81E00004): LDR R1, SP, 4H |
| 095D | w(A0100010): STR R0, R1, 10H |
| 095E | x(E700002F): B 47 [098EH] |
| 095F | y(80E00004): LDR R0, SP, 4H |
| 0960 | y(80000000): LDR R0, R0, 0H |
| 0961 | y(40090001): SUB R0, R0, 1H |
| 0962 | y(E9000013): BNE 19 [0976H] |
| 0963 | z(80E0000C): LDR R0, SP, CH |
| 0964 | z(81E00010): LDR R1, SP, 10H |
| 0965 | a(F7FFF86D): BL -1939 [01D3H] |
| 0966 | b(4000000A): MOV R0, R0, AH |
| 0967 | c(81E0000C): LDR R1, SP, CH |
| 0968 | c(81100010): LDR R1, R1, 10H |
| 0969 | d(82E0000C): LDR R2, SP, CH |
| 096A | d(82200010): LDR R2, R2, 10H |
| 096B | e(83E00004): LDR R3, SP, 4H |
| 096C | e(83300008): LDR R3, R3, 8H |
| 096D | f(F7FFF6D6): BL -2346 [0044H] |
| 096E | g(4000000A): MOV R0, R0, AH |
| 096F | g(81E00004): LDR R1, SP, 4H |
| 0970 | g(A0100000): STR R0, R1, 0H |
| ELSEh loadi(x)j;k load(y)l;m Put0(Mul,n RH-2,o x.r,p y.r)q;r DEC(RH);s x.r := RH-1 |
| 0971 | h(80E0000C): LDR R0, SP, CH |
| 0972 | h(80000010): LDR R0, R0, 10H |
| 0973 | h(81E00004): LDR R1, SP, 4H |
| 0974 | h(A0100010): STR R0, R1, 10H |
| 0975 | i(E7000018): B 24 [098EH] |
| 0976 | j(80E00004): LDR R0, SP, 4H |
| 0977 | j(81E00008): LDR R1, SP, 8H |
| 0978 | k(F7FFF85A): BL -1958 [01D3H] |
| 0979 | l(80E0000C): LDR R0, SP, CH |
| 097A | l(81E00010): LDR R1, SP, 10H |
| 097B | m(F7FFF857): BL -1961 [01D3H] |
| 097C | n(4000000A): MOV R0, R0, AH |
| 097D | o .FIXUP D |
| 097D | o(8D00009F): LDR SB, MT, MOD0 [ORG] |
| 097E | o(81D0002C): LDR R1, SB, 2CH [data] |
| 097F | o(41190002): SUB R1, R1, 2H |
| 0980 | p(82E00004): LDR R2, SP, 4H |
| 0981 | p(82200010): LDR R2, R2, 10H |
| 0982 | q(83E0000C): LDR R3, SP, CH |
| 0983 | q(83300010): LDR R3, R3, 10H |
| 0984 | r(F7FFF67B): BL -2437 [0000H] |
| 0985 | s .FIXUP D |
| 0985 | s(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0986 | s(40D8002C): ADD R0, SB, 2CH [data] |
| 0987 | s(81000000): LDR R1, R0, 0H |
| 0988 | s(41190001): SUB R1, R1, 1H |
| 0989 | s(A1000000): STR R1, R0, 0H |
| ENDt |
| 098A | t(80D0002C): LDR R0, SB, 2CH |
| 098B | t(40090001): SUB R0, R0, 1H |
| 098C | t(81E00004): LDR R1, SP, 4H |
| 098D | t(A0100010): STR R0, R1, 10H |
| ENDu MulOp; |
| 098E | u(8FE00000): LDR LNK, SP, 0H |
| 098F | u(4EE80018): ADD SP, SP, 18H |
| 0990 | u(C700000F): B LNK |
| |
| PROCEDURE DivOp*(op: LONGINT; VAR x, y: Item); (* x := x op y *) |
| VAR e: LONGINT; |
| BEGINv |
| 0991 | v .PROC 22 |
| 0991 | v(4EE9001C): SUB SP, SP, 1CH |
| 0992 | v(AFE00000): STR LNK, SP, 0H |
| 0993 | v(A0E00004): STR R0, SP, 4H |
| 0994 | v(A1E00008): STR R1, SP, 8H |
| 0995 | v(A2E0000C): STR R2, SP, CH |
| 0996 | v(A3E00010): STR R3, SP, 10H |
| 0997 | v(A4E00014): STR R4, SP, 14H |
| IF op = ORS.div THENw |
| 0998 | w(80E00004): LDR R0, SP, 4H |
| 0999 | w(40090003): SUB R0, R0, 3H |
| 099A | w(E900006B): BNE 107 [0A06H] |
| IF (x.mode = ORB.Const)x & (yy.mode = ORB.Const)z THENa |
| 099B | x(80E00008): LDR R0, SP, 8H |
| 099C | x(80000000): LDR R0, R0, 0H |
| 099D | x(40090001): SUB R0, R0, 1H |
| 099E | y(E9000016): BNE 22 [09B5H] |
| 099F | z(80E00010): LDR R0, SP, 10H |
| 09A0 | z(80000000): LDR R0, R0, 0H |
| 09A1 | z(40090001): SUB R0, R0, 1H |
| 09A2 | a(E9000012): BNE 18 [09B5H] |
| IF y.a > 0 THENb x.a := x.a DIV y.a ELSEc ORSd.Mark("bad divisor")e ENDf |
| 09A3 | b(80E00010): LDR R0, SP, 10H |
| 09A4 | b(80000008): LDR R0, R0, 8H |
| 09A5 | b(40090000): SUB R0, R0, 0H |
| 09A6 | b(E6000009): BLE 9 [09B0H] |
| 09A7 | c(80E00010): LDR R0, SP, 10H |
| 09A8 | c(80000008): LDR R0, R0, 8H |
| 09A9 | c(D640516C): BLLE MT [trap=6, pos=16465] |
| 09AA | c(81E00008): LDR R1, SP, 8H |
| 09AB | c(81100008): LDR R1, R1, 8H |
| 09AC | c(001B0000): DIV R0, R1, R0 |
| 09AD | c(81E00008): LDR R1, SP, 8H |
| 09AE | c(A0100008): STR R0, R1, 8H |
| 09AF | d(E7000004): B 4 [09B4H] |
| 09B0 | e .FIXUP D |
| 09B0 | e(8D00002B): LDR SB, MT, MOD0 [ORG] |
| 09B1 | e(40D88994): ADD R0, SB, FFFF8994H [data] |
| 09B2 | e(4100000C): MOV R1, R0, CH |
| 09B3 | f .FIXUP P |
| 09B3 | f(F72092B7): BL MOD2 [ORS] PROC9 |
| ELSIF (gy.mode = ORB.Const)h & (iy.a >= 2)j & (klog2(y.a,l e)m =n 1)o THENp load(x)q;r Put1(Asr,s x.r,t x.r,u e)v |
| 09B4 | g(E7000050): B 80 [0A05H] |
| 09B5 | h(80E00010): LDR R0, SP, 10H |
| 09B6 | h(80000000): LDR R0, R0, 0H |
| 09B7 | h(40090001): SUB R0, R0, 1H |
| 09B8 | i(E9000015): BNE 21 [09CEH] |
| 09B9 | j(80E00010): LDR R0, SP, 10H |
| 09BA | j(80000008): LDR R0, R0, 8H |
| 09BB | j(40090002): SUB R0, R0, 2H |
| 09BC | k(E5000011): BLT 17 [09CEH] |
| 09BD | l(80E00010): LDR R0, SP, 10H |
| 09BE | l(80000008): LDR R0, R0, 8H |
| 09BF | m(41E80018): ADD R1, SP, 18H |
| 09C0 | n(F7FFFF29): BL -215 [08EAH] |
| 09C1 | o(40090001): SUB R0, R0, 1H |
| 09C2 | p(E900000B): BNE 11 [09CEH] |
| 09C3 | q(80E00008): LDR R0, SP, 8H |
| 09C4 | q(81E0000C): LDR R1, SP, CH |
| 09C5 | r(F7FFF80D): BL -2035 [01D3H] |
| 09C6 | s(40000002): MOV R0, R0, 2H |
| 09C7 | t(81E00008): LDR R1, SP, 8H |
| 09C8 | t(81100010): LDR R1, R1, 10H |
| 09C9 | u(82E00008): LDR R2, SP, 8H |
| 09CA | u(82200010): LDR R2, R2, 10H |
| 09CB | v(83E00018): LDR R3, SP, 18H |
| ELSIFw yx.mode = ORB.Const THENy |
| 09CC | w(F7FFF651): BL -2479 [001EH] |
| 09CD | x(E7000037): B 55 [0A05H] |
| 09CE | y(80E00010): LDR R0, SP, 10H |
| 09CF | y(80000000): LDR R0, R0, 0H |
| 09D0 | y(40090001): SUB R0, R0, 1H |
| 09D1 | y(E9000015): BNE 21 [09E7H] |
| IF y.a > 0 THENz load(x)a;b Put1a(Div,c x.r,d x.r,e y.a)f ELSEg ORSh.Mark("bad divisor")i ENDj |
| 09D2 | z(80E00010): LDR R0, SP, 10H |
| 09D3 | z(80000008): LDR R0, R0, 8H |
| 09D4 | z(40090000): SUB R0, R0, 0H |
| 09D5 | z(E600000C): BLE 12 [09E2H] |
| 09D6 | a(80E00008): LDR R0, SP, 8H |
| 09D7 | a(81E0000C): LDR R1, SP, CH |
| 09D8 | b(F7FFF7FA): BL -2054 [01D3H] |
| 09D9 | c(4000000B): MOV R0, R0, BH |
| 09DA | d(81E00008): LDR R1, SP, 8H |
| 09DB | d(81100010): LDR R1, R1, 10H |
| 09DC | e(82E00008): LDR R2, SP, 8H |
| 09DD | e(82200010): LDR R2, R2, 10H |
| 09DE | f(83E00010): LDR R3, SP, 10H |
| 09DF | f(83300008): LDR R3, R3, 8H |
| 09E0 | g(F7FFF663): BL -2461 [0044H] |
| 09E1 | h(E7000004): B 4 [09E6H] |
| 09E2 | i .FIXUP D |
| 09E2 | i(8D000032): LDR SB, MT, MOD0 [ORG] |
| 09E3 | i(40D889A0): ADD R0, SB, FFFF89A0H [data] |
| 09E4 | i(4100000C): MOV R1, R0, CH |
| 09E5 | j .FIXUP P |
| 09E5 | j(F7209032): BL MOD2 [ORS] PROC9 |
| ELSE loadk(y)l;m |
| 09E6 | k(E700001E): B 30 [0A05H] |
| 09E7 | l(80E00010): LDR R0, SP, 10H |
| 09E8 | l(81E00014): LDR R1, SP, 14H |
| 09E9 | m(F7FFF7E9): BL -2071 [01D3H] |
| IF check THENn Trap(LE,o 6)p ENDq ; |
| 09EA | n .FIXUP D |
| 09EA | n(8D000008): LDR SB, MT, MOD0 [ORG] |
| 09EB | n(90D00044): LDR R0, SB, 44H [data] |
| 09EC | n(E1000003): BEQ 3 [09F0H] |
| 09ED | o(40000006): MOV R0, R0, 6H |
| 09EE | p(41000006): MOV R1, R0, 6H |
| 09EF | q(F7FFF6FC): BL -2308 [00ECH] |
| load(x)r;s Put0(Div,t RH-2,u x.r,v y.r)w;x DEC(RH);y x.r := RH-1 |
| 09F0 | r(80E00008): LDR R0, SP, 8H |
| 09F1 | r(81E0000C): LDR R1, SP, CH |
| 09F2 | s(F7FFF7E0): BL -2080 [01D3H] |
| 09F3 | t(4000000B): MOV R0, R0, BH |
| 09F4 | u .FIXUP D |
| 09F4 | u(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 09F5 | u(81D0002C): LDR R1, SB, 2CH [data] |
| 09F6 | u(41190002): SUB R1, R1, 2H |
| 09F7 | v(82E00008): LDR R2, SP, 8H |
| 09F8 | v(82200010): LDR R2, R2, 10H |
| 09F9 | w(83E00010): LDR R3, SP, 10H |
| 09FA | w(83300010): LDR R3, R3, 10H |
| 09FB | x(F7FFF604): BL -2556 [0000H] |
| 09FC | y .FIXUP D |
| 09FC | y(8D000008): LDR SB, MT, MOD0 [ORG] |
| 09FD | y(40D8002C): ADD R0, SB, 2CH [data] |
| 09FE | y(81000000): LDR R1, R0, 0H |
| 09FF | y(41190001): SUB R1, R1, 1H |
| 0A00 | y(A1000000): STR R1, R0, 0H |
| ENDz |
| 0A01 | z(80D0002C): LDR R0, SB, 2CH |
| 0A02 | z(40090001): SUB R0, R0, 1H |
| 0A03 | z(81E00008): LDR R1, SP, 8H |
| 0A04 | z(A0100010): STR R0, R1, 10H |
| ELSE (*op = ORS.mod*) |
| IFa (x.mode = ORB.Const)b & (cy.mode = ORB.Const)d THENe |
| 0A05 | a(E7000090): B 144 [0A96H] |
| 0A06 | b(80E00008): LDR R0, SP, 8H |
| 0A07 | b(80000000): LDR R0, R0, 0H |
| 0A08 | b(40090001): SUB R0, R0, 1H |
| 0A09 | c(E9000017): BNE 23 [0A21H] |
| 0A0A | d(80E00010): LDR R0, SP, 10H |
| 0A0B | d(80000000): LDR R0, R0, 0H |
| 0A0C | d(40090001): SUB R0, R0, 1H |
| 0A0D | e(E9000013): BNE 19 [0A21H] |
| IF y.a > 0 THENf x.a := x.a MOD y.a ELSEg ORSh.Mark("bad modulus")i ENDj |
| 0A0E | f(80E00010): LDR R0, SP, 10H |
| 0A0F | f(80000008): LDR R0, R0, 8H |
| 0A10 | f(40090000): SUB R0, R0, 0H |
| 0A11 | f(E600000A): BLE 10 [0A1CH] |
| 0A12 | g(80E00010): LDR R0, SP, 10H |
| 0A13 | g(80000008): LDR R0, R0, 8H |
| 0A14 | g(D642606C): BLLE MT [trap=6, pos=16992] |
| 0A15 | g(81E00008): LDR R1, SP, 8H |
| 0A16 | g(81100008): LDR R1, R1, 8H |
| 0A17 | g(001B0000): DIV R0, R1, R0 |
| 0A18 | g(20000000): MOV' R0, R0, R0 |
| 0A19 | g(81E00008): LDR R1, SP, 8H |
| 0A1A | g(A0100008): STR R0, R1, 8H |
| 0A1B | h(E7000004): B 4 [0A20H] |
| 0A1C | i .FIXUP D |
| 0A1C | i(8D000020): LDR SB, MT, MOD0 [ORG] |
| 0A1D | i(40D889AC): ADD R0, SB, FFFF89ACH [data] |
| 0A1E | i(4100000C): MOV R1, R0, CH |
| 0A1F | j .FIXUP P |
| 0A1F | j(F720903A): BL MOD2 [ORS] PROC9 |
| ELSIF (ky.mode = ORB.Const)l & (my.a >= 2)n & (olog2(y.a,p e)q =r 1)s THENt load(x)u;v |
| 0A20 | k(E7000075): B 117 [0A96H] |
| 0A21 | l(80E00010): LDR R0, SP, 10H |
| 0A22 | l(80000000): LDR R0, R0, 0H |
| 0A23 | l(40090001): SUB R0, R0, 1H |
| 0A24 | m(E900002D): BNE 45 [0A52H] |
| 0A25 | n(80E00010): LDR R0, SP, 10H |
| 0A26 | n(80000008): LDR R0, R0, 8H |
| 0A27 | n(40090002): SUB R0, R0, 2H |
| 0A28 | o(E5000029): BLT 41 [0A52H] |
| 0A29 | p(80E00010): LDR R0, SP, 10H |
| 0A2A | p(80000008): LDR R0, R0, 8H |
| 0A2B | q(41E80018): ADD R1, SP, 18H |
| 0A2C | r(F7FFFEBD): BL -323 [08EAH] |
| 0A2D | s(40090001): SUB R0, R0, 1H |
| 0A2E | t(E9000023): BNE 35 [0A52H] |
| 0A2F | u(80E00008): LDR R0, SP, 8H |
| 0A30 | u(81E0000C): LDR R1, SP, CH |
| 0A31 | v(F7FFF7A1): BL -2143 [01D3H] |
| IF e <= 16 THENw Put1(And,x x.r,y x.r,z y.a-1)a ELSEb Put1c(Lsl,d x.r,e x.r,f 32-e)g;h Put1(Ror,i x.r,j x.r,k 32-e)l ENDm |
| 0A32 | w(80E00018): LDR R0, SP, 18H |
| 0A33 | w(40090010): SUB R0, R0, 10H |
| 0A34 | w(EE00000A): BGT 10 [0A3FH] |
| 0A35 | x(40000004): MOV R0, R0, 4H |
| 0A36 | y(81E00008): LDR R1, SP, 8H |
| 0A37 | y(81100010): LDR R1, R1, 10H |
| 0A38 | z(82E00008): LDR R2, SP, 8H |
| 0A39 | z(82200010): LDR R2, R2, 10H |
| 0A3A | a(83E00010): LDR R3, SP, 10H |
| 0A3B | a(83300008): LDR R3, R3, 8H |
| 0A3C | a(43390001): SUB R3, R3, 1H |
| 0A3D | b(F7FFF5E0): BL -2592 [001EH] |
| 0A3E | c(E7000012): B 18 [0A51H] |
| 0A3F | d(40000001): MOV R0, R0, 1H |
| 0A40 | e(81E00008): LDR R1, SP, 8H |
| 0A41 | e(81100010): LDR R1, R1, 10H |
| 0A42 | f(82E00008): LDR R2, SP, 8H |
| 0A43 | f(82200010): LDR R2, R2, 10H |
| 0A44 | g(43000020): MOV R3, R0, 20H |
| 0A45 | g(84E00018): LDR R4, SP, 18H |
| 0A46 | g(03390004): SUB R3, R3, R4 |
| 0A47 | h(F7FFF5D6): BL -2602 [001EH] |
| 0A48 | i(40000003): MOV R0, R0, 3H |
| 0A49 | j(81E00008): LDR R1, SP, 8H |
| 0A4A | j(81100010): LDR R1, R1, 10H |
| 0A4B | k(82E00008): LDR R2, SP, 8H |
| 0A4C | k(82200010): LDR R2, R2, 10H |
| 0A4D | l(43000020): MOV R3, R0, 20H |
| 0A4E | l(84E00018): LDR R4, SP, 18H |
| 0A4F | l(03390004): SUB R3, R3, R4 |
| 0A50 | m(F7FFF5CD): BL -2611 [001EH] |
| ELSIF yn.mode = ORB.Const THENo |
| 0A51 | n(E7000044): B 68 [0A96H] |
| 0A52 | o(80E00010): LDR R0, SP, 10H |
| 0A53 | o(80000000): LDR R0, R0, 0H |
| 0A54 | o(40090001): SUB R0, R0, 1H |
| 0A55 | o(E900001B): BNE 27 [0A71H] |
| IF y.a > 0 THENp load(x)q;r Put1a(Div,s x.r,t x.r,u y.a)v;w Put0(Mov+U,x x.r,y 0,z 0)a ELSEb ORSc.Mark("bad modulus")d ENDe |
| 0A56 | p(80E00010): LDR R0, SP, 10H |
| 0A57 | p(80000008): LDR R0, R0, 8H |
| 0A58 | p(40090000): SUB R0, R0, 0H |
| 0A59 | p(E6000012): BLE 18 [0A6CH] |
| 0A5A | q(80E00008): LDR R0, SP, 8H |
| 0A5B | q(81E0000C): LDR R1, SP, CH |
| 0A5C | r(F7FFF776): BL -2186 [01D3H] |
| 0A5D | s(4000000B): MOV R0, R0, BH |
| 0A5E | t(81E00008): LDR R1, SP, 8H |
| 0A5F | t(81100010): LDR R1, R1, 10H |
| 0A60 | u(82E00008): LDR R2, SP, 8H |
| 0A61 | u(82200010): LDR R2, R2, 10H |
| 0A62 | v(83E00010): LDR R3, SP, 10H |
| 0A63 | v(83300008): LDR R3, R3, 8H |
| 0A64 | w(F7FFF5DF): BL -2593 [0044H] |
| 0A65 | x(40002000): MOV R0, R0, 2000H |
| 0A66 | y(81E00008): LDR R1, SP, 8H |
| 0A67 | y(81100010): LDR R1, R1, 10H |
| 0A68 | z(42000000): MOV R2, R0, 0H |
| 0A69 | a(43000000): MOV R3, R0, 0H |
| 0A6A | b(F7FFF595): BL -2667 [0000H] |
| 0A6B | c(E7000004): B 4 [0A70H] |
| 0A6C | d .FIXUP D |
| 0A6C | d(8D000050): LDR SB, MT, MOD0 [ORG] |
| 0A6D | d(40D889B8): ADD R0, SB, FFFF89B8H [data] |
| 0A6E | d(4100000C): MOV R1, R0, CH |
| 0A6F | e .FIXUP P |
| 0A6F | e(F7209050): BL MOD2 [ORS] PROC9 |
| ELSE loadf(y)g;h |
| 0A70 | f(E7000025): B 37 [0A96H] |
| 0A71 | g(80E00010): LDR R0, SP, 10H |
| 0A72 | g(81E00014): LDR R1, SP, 14H |
| 0A73 | h(F7FFF75F): BL -2209 [01D3H] |
| IF check THENi Trap(LE,j 6)k ENDl ; |
| 0A74 | i .FIXUP D |
| 0A74 | i(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0A75 | i(90D00044): LDR R0, SB, 44H [data] |
| 0A76 | i(E1000003): BEQ 3 [0A7AH] |
| 0A77 | j(40000006): MOV R0, R0, 6H |
| 0A78 | k(41000006): MOV R1, R0, 6H |
| 0A79 | l(F7FFF672): BL -2446 [00ECH] |
| load(x)m;n Put0(Div,o RH-2,p x.r,q y.r)r;s Put0(Mov+U,t RH-2,u 0,v 0)w;x DEC(RH);y x.r := RH-1 |
| 0A7A | m(80E00008): LDR R0, SP, 8H |
| 0A7B | m(81E0000C): LDR R1, SP, CH |
| 0A7C | n(F7FFF756): BL -2218 [01D3H] |
| 0A7D | o(4000000B): MOV R0, R0, BH |
| 0A7E | p .FIXUP D |
| 0A7E | p(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0A7F | p(81D0002C): LDR R1, SB, 2CH [data] |
| 0A80 | p(41190002): SUB R1, R1, 2H |
| 0A81 | q(82E00008): LDR R2, SP, 8H |
| 0A82 | q(82200010): LDR R2, R2, 10H |
| 0A83 | r(83E00010): LDR R3, SP, 10H |
| 0A84 | r(83300010): LDR R3, R3, 10H |
| 0A85 | s(F7FFF57A): BL -2694 [0000H] |
| 0A86 | t(40002000): MOV R0, R0, 2000H |
| 0A87 | u .FIXUP D |
| 0A87 | u(8D000009): LDR SB, MT, MOD0 [ORG] |
| 0A88 | u(81D0002C): LDR R1, SB, 2CH [data] |
| 0A89 | u(41190002): SUB R1, R1, 2H |
| 0A8A | v(42000000): MOV R2, R0, 0H |
| 0A8B | w(43000000): MOV R3, R0, 0H |
| 0A8C | x(F7FFF573): BL -2701 [0000H] |
| 0A8D | y .FIXUP D |
| 0A8D | y(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0A8E | y(40D8002C): ADD R0, SB, 2CH [data] |
| 0A8F | y(81000000): LDR R1, R0, 0H |
| 0A90 | y(41190001): SUB R1, R1, 1H |
| 0A91 | y(A1000000): STR R1, R0, 0H |
| ENDz |
| 0A92 | z(80D0002C): LDR R0, SB, 2CH |
| 0A93 | z(40090001): SUB R0, R0, 1H |
| 0A94 | z(81E00008): LDR R1, SP, 8H |
| 0A95 | z(A0100010): STR R0, R1, 10H |
| END |
| ENDa DivOp; |
| 0A96 | a(8FE00000): LDR LNK, SP, 0H |
| 0A97 | a(4EE8001C): ADD SP, SP, 1CH |
| 0A98 | a(C700000F): B LNK |
| |
| (* Code generation for REAL operators *) |
| |
| PROCEDURE RealOp*(op: INTEGER; VAR x, y: Item); (* x := x op y *) |
| BEGINb load(x)c;d load(y)e;f |
| 0A99 | b .PROC 23 |
| 0A99 | b(4EE90018): SUB SP, SP, 18H |
| 0A9A | b(AFE00000): STR LNK, SP, 0H |
| 0A9B | b(A0E00004): STR R0, SP, 4H |
| 0A9C | b(A1E00008): STR R1, SP, 8H |
| 0A9D | b(A2E0000C): STR R2, SP, CH |
| 0A9E | b(A3E00010): STR R3, SP, 10H |
| 0A9F | b(A4E00014): STR R4, SP, 14H |
| 0AA0 | c(80E00008): LDR R0, SP, 8H |
| 0AA1 | c(81E0000C): LDR R1, SP, CH |
| 0AA2 | d(F7FFF730): BL -2256 [01D3H] |
| 0AA3 | e(80E00010): LDR R0, SP, 10H |
| 0AA4 | e(81E00014): LDR R1, SP, 14H |
| 0AA5 | f(F7FFF72D): BL -2259 [01D3H] |
| IF op = ORS.plus THENg Put0(Fad,h RH-2,i x.r,j y.r)k |
| 0AA6 | g(80E00004): LDR R0, SP, 4H |
| 0AA7 | g(40090006): SUB R0, R0, 6H |
| 0AA8 | g(E900000A): BNE 10 [0AB3H] |
| 0AA9 | h(4000000C): MOV R0, R0, CH |
| 0AAA | i .FIXUP D |
| 0AAA | i(8D00001D): LDR SB, MT, MOD0 [ORG] |
| 0AAB | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0AAC | i(41190002): SUB R1, R1, 2H |
| 0AAD | j(82E00008): LDR R2, SP, 8H |
| 0AAE | j(82200010): LDR R2, R2, 10H |
| 0AAF | k(83E00010): LDR R3, SP, 10H |
| 0AB0 | k(83300010): LDR R3, R3, 10H |
| ELSIFl opm = ORS.minus THENn Put0(Fsb,o RH-2,p x.r,q y.r)r |
| 0AB1 | l(F7FFF54E): BL -2738 [0000H] |
| 0AB2 | m(E7000026): B 38 [0AD9H] |
| 0AB3 | n(80E00004): LDR R0, SP, 4H |
| 0AB4 | n(40090007): SUB R0, R0, 7H |
| 0AB5 | n(E900000A): BNE 10 [0AC0H] |
| 0AB6 | o(4000000D): MOV R0, R0, DH |
| 0AB7 | p .FIXUP D |
| 0AB7 | p(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0AB8 | p(81D0002C): LDR R1, SB, 2CH [data] |
| 0AB9 | p(41190002): SUB R1, R1, 2H |
| 0ABA | q(82E00008): LDR R2, SP, 8H |
| 0ABB | q(82200010): LDR R2, R2, 10H |
| 0ABC | r(83E00010): LDR R3, SP, 10H |
| 0ABD | r(83300010): LDR R3, R3, 10H |
| ELSIFs opt = ORS.times THENu Put0(Fml,v RH-2,w x.r,x y.r)y |
| 0ABE | s(F7FFF541): BL -2751 [0000H] |
| 0ABF | t(E7000019): B 25 [0AD9H] |
| 0AC0 | u(80E00004): LDR R0, SP, 4H |
| 0AC1 | u(40090001): SUB R0, R0, 1H |
| 0AC2 | u(E900000A): BNE 10 [0ACDH] |
| 0AC3 | v(4000000E): MOV R0, R0, EH |
| 0AC4 | w .FIXUP D |
| 0AC4 | w(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0AC5 | w(81D0002C): LDR R1, SB, 2CH [data] |
| 0AC6 | w(41190002): SUB R1, R1, 2H |
| 0AC7 | x(82E00008): LDR R2, SP, 8H |
| 0AC8 | x(82200010): LDR R2, R2, 10H |
| 0AC9 | y(83E00010): LDR R3, SP, 10H |
| 0ACA | y(83300010): LDR R3, R3, 10H |
| ELSIFz opa = ORS.rdiv THENb Put0(Fdv,c RH-2,d x.r,e y.r)f |
| 0ACB | z(F7FFF534): BL -2764 [0000H] |
| 0ACC | a(E700000C): B 12 [0AD9H] |
| 0ACD | b(80E00004): LDR R0, SP, 4H |
| 0ACE | b(40090002): SUB R0, R0, 2H |
| 0ACF | b(E9000009): BNE 9 [0AD9H] |
| 0AD0 | c(4000000F): MOV R0, R0, FH |
| 0AD1 | d .FIXUP D |
| 0AD1 | d(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0AD2 | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0AD3 | d(41190002): SUB R1, R1, 2H |
| 0AD4 | e(82E00008): LDR R2, SP, 8H |
| 0AD5 | e(82200010): LDR R2, R2, 10H |
| 0AD6 | f(83E00010): LDR R3, SP, 10H |
| 0AD7 | f(83300010): LDR R3, R3, 10H |
| ENDg ; |
| 0AD8 | g(F7FFF527): BL -2777 [0000H] |
| DEC(RH);h x.r := RH-1 |
| 0AD9 | h .FIXUP D |
| 0AD9 | h(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0ADA | h(40D8002C): ADD R0, SB, 2CH [data] |
| 0ADB | h(81000000): LDR R1, R0, 0H |
| 0ADC | h(41190001): SUB R1, R1, 1H |
| 0ADD | h(A1000000): STR R1, R0, 0H |
| ENDi RealOp; |
| 0ADE | i(80D0002C): LDR R0, SB, 2CH |
| 0ADF | i(40090001): SUB R0, R0, 1H |
| 0AE0 | i(81E00008): LDR R1, SP, 8H |
| 0AE1 | i(A0100010): STR R0, R1, 10H |
| 0AE2 | i(8FE00000): LDR LNK, SP, 0H |
| 0AE3 | i(4EE80018): ADD SP, SP, 18H |
| 0AE4 | i(C700000F): B LNK |
| |
| (* Code generation for set operators *) |
| |
| PROCEDURE Singleton*(VAR x: Item); (* x := {x} *) |
| BEGINj |
| 0AE5 | j .PROC 24 |
| 0AE5 | j(4EE9000C): SUB SP, SP, CH |
| 0AE6 | j(AFE00000): STR LNK, SP, 0H |
| 0AE7 | j(A0E00004): STR R0, SP, 4H |
| 0AE8 | j(A1E00008): STR R1, SP, 8H |
| IF x.mode = ORB.Const THENk x.a := LSL(1, x.a) |
| 0AE9 | k(80E00004): LDR R0, SP, 4H |
| 0AEA | k(80000000): LDR R0, R0, 0H |
| 0AEB | k(40090001): SUB R0, R0, 1H |
| 0AEC | k(E9000007): BNE 7 [0AF4H] |
| ELSEl loadm(x)n;o Put1(Mov,p RH,q 0,r 1)s;t Put0(Lsl,u x.r,v RH,w x.r)x |
| 0AED | l(40000001): MOV R0, R0, 1H |
| 0AEE | l(81E00004): LDR R1, SP, 4H |
| 0AEF | l(81100008): LDR R1, R1, 8H |
| 0AF0 | l(00010001): LSL R0, R0, R1 |
| 0AF1 | l(81E00004): LDR R1, SP, 4H |
| 0AF2 | l(A0100008): STR R0, R1, 8H |
| 0AF3 | m(E7000011): B 17 [0B05H] |
| 0AF4 | n(80E00004): LDR R0, SP, 4H |
| 0AF5 | n(81E00008): LDR R1, SP, 8H |
| 0AF6 | o(F7FFF6DC): BL -2340 [01D3H] |
| 0AF7 | p(40000000): MOV R0, R0, 0H |
| 0AF8 | q .FIXUP D |
| 0AF8 | q(8D00001F): LDR SB, MT, MOD0 [ORG] |
| 0AF9 | q(81D0002C): LDR R1, SB, 2CH [data] |
| 0AFA | r(42000000): MOV R2, R0, 0H |
| 0AFB | s(43000001): MOV R3, R0, 1H |
| 0AFC | t(F7FFF521): BL -2783 [001EH] |
| 0AFD | u(40000001): MOV R0, R0, 1H |
| 0AFE | v(81E00004): LDR R1, SP, 4H |
| 0AFF | v(81100010): LDR R1, R1, 10H |
| 0B00 | w .FIXUP D |
| 0B00 | w(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0B01 | w(82D0002C): LDR R2, SB, 2CH [data] |
| 0B02 | x(83E00004): LDR R3, SP, 4H |
| 0B03 | x(83300010): LDR R3, R3, 10H |
| ENDy |
| 0B04 | y(F7FFF4FB): BL -2821 [0000H] |
| ENDz Singleton; |
| 0B05 | z(8FE00000): LDR LNK, SP, 0H |
| 0B06 | z(4EE8000C): ADD SP, SP, CH |
| 0B07 | z(C700000F): B LNK |
| |
| PROCEDURE Set*(VAR x, y: Item); (* x := {x .. y} *) |
| BEGINa |
| 0B08 | a .PROC 25 |
| 0B08 | a(4EE90014): SUB SP, SP, 14H |
| 0B09 | a(AFE00000): STR LNK, SP, 0H |
| 0B0A | a(A0E00004): STR R0, SP, 4H |
| 0B0B | a(A1E00008): STR R1, SP, 8H |
| 0B0C | a(A2E0000C): STR R2, SP, CH |
| 0B0D | a(A3E00010): STR R3, SP, 10H |
| IF (x.mode = ORB.Const)b & (c y.mode = ORB.Const)d THENe |
| 0B0E | b(80E00004): LDR R0, SP, 4H |
| 0B0F | b(80000000): LDR R0, R0, 0H |
| 0B10 | b(40090001): SUB R0, R0, 1H |
| 0B11 | c(E900001A): BNE 26 [0B2CH] |
| 0B12 | d(80E0000C): LDR R0, SP, CH |
| 0B13 | d(80000000): LDR R0, R0, 0H |
| 0B14 | d(40090001): SUB R0, R0, 1H |
| 0B15 | e(E9000016): BNE 22 [0B2CH] |
| IF x.a <= y.a THENf x.a := LSL(2, y.a) -g LSL(1, x.a) ELSEh xi.a := 0 ENDj |
| 0B16 | f(80E00004): LDR R0, SP, 4H |
| 0B17 | f(80000008): LDR R0, R0, 8H |
| 0B18 | f(81E0000C): LDR R1, SP, CH |
| 0B19 | f(81100008): LDR R1, R1, 8H |
| 0B1A | f(00090001): SUB R0, R0, R1 |
| 0B1B | f(EE00000C): BGT 12 [0B28H] |
| 0B1C | g(40000002): MOV R0, R0, 2H |
| 0B1D | g(81E0000C): LDR R1, SP, CH |
| 0B1E | g(81100008): LDR R1, R1, 8H |
| 0B1F | g(00010001): LSL R0, R0, R1 |
| 0B20 | h(41000001): MOV R1, R0, 1H |
| 0B21 | h(82E00004): LDR R2, SP, 4H |
| 0B22 | h(82200008): LDR R2, R2, 8H |
| 0B23 | h(01110002): LSL R1, R1, R2 |
| 0B24 | h(00090001): SUB R0, R0, R1 |
| 0B25 | h(81E00004): LDR R1, SP, 4H |
| 0B26 | h(A0100008): STR R0, R1, 8H |
| 0B27 | i(E7000003): B 3 [0B2BH] |
| 0B28 | j(40000000): MOV R0, R0, 0H |
| 0B29 | j(81E00004): LDR R1, SP, 4H |
| 0B2A | j(A0100008): STR R0, R1, 8H |
| ELSE |
| IFk (x.mode = ORB.Const)l & (mx.a <= 16)n THENo x.a := LSL(-1, x.a) |
| 0B2B | k(E7000078): B 120 [0BA4H] |
| 0B2C | l(80E00004): LDR R0, SP, 4H |
| 0B2D | l(80000000): LDR R0, R0, 0H |
| 0B2E | l(40090001): SUB R0, R0, 1H |
| 0B2F | m(E900000B): BNE 11 [0B3BH] |
| 0B30 | n(80E00004): LDR R0, SP, 4H |
| 0B31 | n(80000008): LDR R0, R0, 8H |
| 0B32 | n(40090010): SUB R0, R0, 10H |
| 0B33 | o(EE000007): BGT 7 [0B3BH] |
| ELSEp loadq(x)r;s Put1(Mov,t RH,u 0,v -1)w;x Put0(Lsl,y x.r,z RH,a x.r)b |
| 0B34 | p(5000FFFF): MOV R0, R0, FFFFFFFFH |
| 0B35 | p(81E00004): LDR R1, SP, 4H |
| 0B36 | p(81100008): LDR R1, R1, 8H |
| 0B37 | p(00010001): LSL R0, R0, R1 |
| 0B38 | p(81E00004): LDR R1, SP, 4H |
| 0B39 | p(A0100008): STR R0, R1, 8H |
| 0B3A | q(E7000011): B 17 [0B4CH] |
| 0B3B | r(80E00004): LDR R0, SP, 4H |
| 0B3C | r(81E00008): LDR R1, SP, 8H |
| 0B3D | s(F7FFF695): BL -2411 [01D3H] |
| 0B3E | t(40000000): MOV R0, R0, 0H |
| 0B3F | u .FIXUP D |
| 0B3F | u(8D00003F): LDR SB, MT, MOD0 [ORG] |
| 0B40 | u(81D0002C): LDR R1, SB, 2CH [data] |
| 0B41 | v(42000000): MOV R2, R0, 0H |
| 0B42 | w(5300FFFF): MOV R3, R0, FFFFFFFFH |
| 0B43 | x(F7FFF4DA): BL -2854 [001EH] |
| 0B44 | y(40000001): MOV R0, R0, 1H |
| 0B45 | z(81E00004): LDR R1, SP, 4H |
| 0B46 | z(81100010): LDR R1, R1, 10H |
| 0B47 | a .FIXUP D |
| 0B47 | a(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0B48 | a(82D0002C): LDR R2, SB, 2CH [data] |
| 0B49 | b(83E00004): LDR R3, SP, 4H |
| 0B4A | b(83300010): LDR R3, R3, 10H |
| ENDc ; |
| 0B4B | c(F7FFF4B4): BL -2892 [0000H] |
| IF (y.mode = ORB.Const)d & (ey.a < 16)f THENg Put1(Mov,h RH,i 0,j LSL(-2, y.a))k;l y.mode := Reg;m y.r := RH;n incR |
| 0B4C | d(80E0000C): LDR R0, SP, CH |
| 0B4D | d(80000000): LDR R0, R0, 0H |
| 0B4E | d(40090001): SUB R0, R0, 1H |
| 0B4F | e(E9000016): BNE 22 [0B66H] |
| 0B50 | f(80E0000C): LDR R0, SP, CH |
| 0B51 | f(80000008): LDR R0, R0, 8H |
| 0B52 | f(40090010): SUB R0, R0, 10H |
| 0B53 | g(ED000012): BGE 18 [0B66H] |
| 0B54 | h(40000000): MOV R0, R0, 0H |
| 0B55 | i .FIXUP D |
| 0B55 | i(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0B56 | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0B57 | j(42000000): MOV R2, R0, 0H |
| 0B58 | k(5300FFFE): MOV R3, R0, FFFFFFFEH |
| 0B59 | k(84E0000C): LDR R4, SP, CH |
| 0B5A | k(84400008): LDR R4, R4, 8H |
| 0B5B | k(03310004): LSL R3, R3, R4 |
| 0B5C | l(F7FFF4C1): BL -2879 [001EH] |
| 0B5D | m(4000000A): MOV R0, R0, AH |
| 0B5E | m(81E0000C): LDR R1, SP, CH |
| 0B5F | m(A0100000): STR R0, R1, 0H |
| 0B60 | n .FIXUP D |
| 0B60 | n(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0B61 | n(80D0002C): LDR R0, SB, 2CH [data] |
| 0B62 | n(81E0000C): LDR R1, SP, CH |
| 0B63 | n(A0100010): STR R0, R1, 10H |
| ELSEo loadp(y)q;r Put1(Mov,s RH,t 0,u -2)v;w Put0(Lsl,x y.r,y RH,z y.r)a |
| 0B64 | o(F7FFF549): BL -2743 [00AEH] |
| 0B65 | p(E7000011): B 17 [0B77H] |
| 0B66 | q(80E0000C): LDR R0, SP, CH |
| 0B67 | q(81E00010): LDR R1, SP, 10H |
| 0B68 | r(F7FFF66A): BL -2454 [01D3H] |
| 0B69 | s(40000000): MOV R0, R0, 0H |
| 0B6A | t .FIXUP D |
| 0B6A | t(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0B6B | t(81D0002C): LDR R1, SB, 2CH [data] |
| 0B6C | u(42000000): MOV R2, R0, 0H |
| 0B6D | v(5300FFFE): MOV R3, R0, FFFFFFFEH |
| 0B6E | w(F7FFF4AF): BL -2897 [001EH] |
| 0B6F | x(40000001): MOV R0, R0, 1H |
| 0B70 | y(81E0000C): LDR R1, SP, CH |
| 0B71 | y(81100010): LDR R1, R1, 10H |
| 0B72 | z .FIXUP D |
| 0B72 | z(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0B73 | z(82D0002C): LDR R2, SB, 2CH [data] |
| 0B74 | a(83E0000C): LDR R3, SP, CH |
| 0B75 | a(83300010): LDR R3, R3, 10H |
| ENDb ; |
| 0B76 | b(F7FFF489): BL -2935 [0000H] |
| IF x.mode = ORB.Const THENc |
| 0B77 | c(80E00004): LDR R0, SP, 4H |
| 0B78 | c(80000000): LDR R0, R0, 0H |
| 0B79 | c(40090001): SUB R0, R0, 1H |
| 0B7A | c(E900001C): BNE 28 [0B97H] |
| IF x.a # 0 THENd Put1(Xor,e y.r,f y.r,g -1)h;i Put1a(And,j RH-1,k y.r,l x.a)m ENDn ; |
| 0B7B | d(80E00004): LDR R0, SP, 4H |
| 0B7C | d(80000008): LDR R0, R0, 8H |
| 0B7D | d(E1000010): BEQ 16 [0B8EH] |
| 0B7E | e(40000007): MOV R0, R0, 7H |
| 0B7F | f(81E0000C): LDR R1, SP, CH |
| 0B80 | f(81100010): LDR R1, R1, 10H |
| 0B81 | g(82E0000C): LDR R2, SP, CH |
| 0B82 | g(82200010): LDR R2, R2, 10H |
| 0B83 | h(5300FFFF): MOV R3, R0, FFFFFFFFH |
| 0B84 | i(F7FFF499): BL -2919 [001EH] |
| 0B85 | j(40000004): MOV R0, R0, 4H |
| 0B86 | k .FIXUP D |
| 0B86 | k(8D000014): LDR SB, MT, MOD0 [ORG] |
| 0B87 | k(81D0002C): LDR R1, SB, 2CH [data] |
| 0B88 | k(41190001): SUB R1, R1, 1H |
| 0B89 | l(82E0000C): LDR R2, SP, CH |
| 0B8A | l(82200010): LDR R2, R2, 10H |
| 0B8B | m(83E00004): LDR R3, SP, 4H |
| 0B8C | m(83300008): LDR R3, R3, 8H |
| 0B8D | n(F7FFF4B6): BL -2890 [0044H] |
| x.mode := Reg;o x.r := RH-1 |
| 0B8E | o(4000000A): MOV R0, R0, AH |
| 0B8F | o(81E00004): LDR R1, SP, 4H |
| 0B90 | o(A0100000): STR R0, R1, 0H |
| ELSEp DECq(RH);r Put0(Ann,s RH-1,t x.r,u y.r)v |
| 0B91 | p .FIXUP D |
| 0B91 | p(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0B92 | p(80D0002C): LDR R0, SB, 2CH [data] |
| 0B93 | p(40090001): SUB R0, R0, 1H |
| 0B94 | p(81E00004): LDR R1, SP, 4H |
| 0B95 | p(A0100010): STR R0, R1, 10H |
| 0B96 | q(E700000D): B 13 [0BA4H] |
| 0B97 | r .FIXUP D |
| 0B97 | r(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0B98 | r(40D8002C): ADD R0, SB, 2CH [data] |
| 0B99 | r(81000000): LDR R1, R0, 0H |
| 0B9A | r(41190001): SUB R1, R1, 1H |
| 0B9B | r(A1000000): STR R1, R0, 0H |
| 0B9C | s(40000005): MOV R0, R0, 5H |
| 0B9D | t(81D0002C): LDR R1, SB, 2CH |
| 0B9E | t(41190001): SUB R1, R1, 1H |
| 0B9F | u(82E00004): LDR R2, SP, 4H |
| 0BA0 | u(82200010): LDR R2, R2, 10H |
| 0BA1 | v(83E0000C): LDR R3, SP, CH |
| 0BA2 | v(83300010): LDR R3, R3, 10H |
| ENDw |
| 0BA3 | w(F7FFF45C): BL -2980 [0000H] |
| END |
| ENDx Set; |
| 0BA4 | x(8FE00000): LDR LNK, SP, 0H |
| 0BA5 | x(4EE80014): ADD SP, SP, 14H |
| 0BA6 | x(C700000F): B LNK |
| |
| PROCEDURE In*(VAR x, y: Item); (* x := x IN y *) |
| BEGINy load(y)z;a |
| 0BA7 | y .PROC 26 |
| 0BA7 | y(4EE90014): SUB SP, SP, 14H |
| 0BA8 | y(AFE00000): STR LNK, SP, 0H |
| 0BA9 | y(A0E00004): STR R0, SP, 4H |
| 0BAA | y(A1E00008): STR R1, SP, 8H |
| 0BAB | y(A2E0000C): STR R2, SP, CH |
| 0BAC | y(A3E00010): STR R3, SP, 10H |
| 0BAD | z(80E0000C): LDR R0, SP, CH |
| 0BAE | z(81E00010): LDR R1, SP, 10H |
| 0BAF | a(F7FFF623): BL -2525 [01D3H] |
| IF x.mode = ORB.Const THENb Put1(Ror,c y.r,d y.r,e (x.a + 1)f MOD 20H)g;h DEC(RH) |
| 0BB0 | b(80E00004): LDR R0, SP, 4H |
| 0BB1 | b(80000000): LDR R0, R0, 0H |
| 0BB2 | b(40090001): SUB R0, R0, 1H |
| 0BB3 | b(E9000010): BNE 16 [0BC4H] |
| 0BB4 | c(40000003): MOV R0, R0, 3H |
| 0BB5 | d(81E0000C): LDR R1, SP, CH |
| 0BB6 | d(81100010): LDR R1, R1, 10H |
| 0BB7 | e(82E0000C): LDR R2, SP, CH |
| 0BB8 | e(82200010): LDR R2, R2, 10H |
| 0BB9 | f(83E00004): LDR R3, SP, 4H |
| 0BBA | f(83300008): LDR R3, R3, 8H |
| 0BBB | f(43380001): ADD R3, R3, 1H |
| 0BBC | g(4334001F): AND R3, R3, 1FH |
| 0BBD | h(F7FFF460): BL -2976 [001EH] |
| ELSEi loadj(x)k;l Put1(Add,m x.r,n x.r,o 1)p;q Put0(Ror,r y.r,s y.r,t x.r)u;v DEC(RH, 2) |
| 0BBE | i .FIXUP D |
| 0BBE | i(8D000027): LDR SB, MT, MOD0 [ORG] |
| 0BBF | i(40D8002C): ADD R0, SB, 2CH [data] |
| 0BC0 | i(81000000): LDR R1, R0, 0H |
| 0BC1 | i(41190001): SUB R1, R1, 1H |
| 0BC2 | i(A1000000): STR R1, R0, 0H |
| 0BC3 | j(E7000017): B 23 [0BDBH] |
| 0BC4 | k(80E00004): LDR R0, SP, 4H |
| 0BC5 | k(81E00008): LDR R1, SP, 8H |
| 0BC6 | l(F7FFF60C): BL -2548 [01D3H] |
| 0BC7 | m(40000008): MOV R0, R0, 8H |
| 0BC8 | n(81E00004): LDR R1, SP, 4H |
| 0BC9 | n(81100010): LDR R1, R1, 10H |
| 0BCA | o(82E00004): LDR R2, SP, 4H |
| 0BCB | o(82200010): LDR R2, R2, 10H |
| 0BCC | p(43000001): MOV R3, R0, 1H |
| 0BCD | q(F7FFF450): BL -2992 [001EH] |
| 0BCE | r(40000003): MOV R0, R0, 3H |
| 0BCF | s(81E0000C): LDR R1, SP, CH |
| 0BD0 | s(81100010): LDR R1, R1, 10H |
| 0BD1 | t(82E0000C): LDR R2, SP, CH |
| 0BD2 | t(82200010): LDR R2, R2, 10H |
| 0BD3 | u(83E00004): LDR R3, SP, 4H |
| 0BD4 | u(83300010): LDR R3, R3, 10H |
| 0BD5 | v(F7FFF42A): BL -3030 [0000H] |
| ENDw ; |
| 0BD6 | w .FIXUP D |
| 0BD6 | w(8D000018): LDR SB, MT, MOD0 [ORG] |
| 0BD7 | w(40D8002C): ADD R0, SB, 2CH [data] |
| 0BD8 | w(81000000): LDR R1, R0, 0H |
| 0BD9 | w(41190002): SUB R1, R1, 2H |
| 0BDA | w(A1000000): STR R1, R0, 0H |
| SetCC(x,x MI)y |
| 0BDB | x(80E00004): LDR R0, SP, 4H |
| 0BDC | x(81E00008): LDR R1, SP, 8H |
| 0BDD | y(42000000): MOV R2, R0, 0H |
| ENDz In; |
| 0BDE | z(F7FFF4F9): BL -2823 [00D8H] |
| 0BDF | z(8FE00000): LDR LNK, SP, 0H |
| 0BE0 | z(4EE80014): ADD SP, SP, 14H |
| 0BE1 | z(C700000F): B LNK |
| |
| PROCEDURE SetOp*(op: LONGINT; VAR x, y: Item); (* x := x op y *) |
| VAR xset, yset: SET; (*x.type.form = Set*) |
| BEGINa |
| 0BE2 | a .PROC 27 |
| 0BE2 | a(4EE90020): SUB SP, SP, 20H |
| 0BE3 | a(AFE00000): STR LNK, SP, 0H |
| 0BE4 | a(A0E00004): STR R0, SP, 4H |
| 0BE5 | a(A1E00008): STR R1, SP, 8H |
| 0BE6 | a(A2E0000C): STR R2, SP, CH |
| 0BE7 | a(A3E00010): STR R3, SP, 10H |
| 0BE8 | a(A4E00014): STR R4, SP, 14H |
| IF (x.mode = ORB.Const)b & (cy.mode = ORB.Const)d THENe |
| 0BE9 | b(80E00008): LDR R0, SP, 8H |
| 0BEA | b(80000000): LDR R0, R0, 0H |
| 0BEB | b(40090001): SUB R0, R0, 1H |
| 0BEC | c(E900002D): BNE 45 [0C1AH] |
| 0BED | d(80E00010): LDR R0, SP, 10H |
| 0BEE | d(80000000): LDR R0, R0, 0H |
| 0BEF | d(40090001): SUB R0, R0, 1H |
| 0BF0 | e(E9000029): BNE 41 [0C1AH] |
| xset := SYSTEM.VAL(SET, x.a);f yset := SYSTEM.VAL(SET, y.a);g |
| 0BF1 | f(80E00008): LDR R0, SP, 8H |
| 0BF2 | f(80000008): LDR R0, R0, 8H |
| 0BF3 | f(A0E00018): STR R0, SP, 18H |
| 0BF4 | g(80E00010): LDR R0, SP, 10H |
| 0BF5 | g(80000008): LDR R0, R0, 8H |
| 0BF6 | g(A0E0001C): STR R0, SP, 1CH |
| IF op = ORS.plus THENh xset := xset + yset |
| 0BF7 | h(80E00004): LDR R0, SP, 4H |
| 0BF8 | h(40090006): SUB R0, R0, 6H |
| 0BF9 | h(E9000005): BNE 5 [0BFFH] |
| ELSIFi opj = ORS.minus THENk xset := xset - yset |
| 0BFA | i(80E00018): LDR R0, SP, 18H |
| 0BFB | i(81E0001C): LDR R1, SP, 1CH |
| 0BFC | i(00060001): IOR R0, R0, R1 |
| 0BFD | i(A0E00018): STR R0, SP, 18H |
| 0BFE | j(E7000017): B 23 [0C16H] |
| 0BFF | k(80E00004): LDR R0, SP, 4H |
| 0C00 | k(40090007): SUB R0, R0, 7H |
| 0C01 | k(E9000005): BNE 5 [0C07H] |
| ELSIFl opm = ORS.times THENn xset := xset * yset |
| 0C02 | l(80E00018): LDR R0, SP, 18H |
| 0C03 | l(81E0001C): LDR R1, SP, 1CH |
| 0C04 | l(00050001): ANN R0, R0, R1 |
| 0C05 | l(A0E00018): STR R0, SP, 18H |
| 0C06 | m(E700000F): B 15 [0C16H] |
| 0C07 | n(80E00004): LDR R0, SP, 4H |
| 0C08 | n(40090001): SUB R0, R0, 1H |
| 0C09 | n(E9000005): BNE 5 [0C0FH] |
| ELSIFo opp = ORS.rdiv THENq xset := xset / yset |
| 0C0A | o(80E00018): LDR R0, SP, 18H |
| 0C0B | o(81E0001C): LDR R1, SP, 1CH |
| 0C0C | o(00040001): AND R0, R0, R1 |
| 0C0D | o(A0E00018): STR R0, SP, 18H |
| 0C0E | p(E7000007): B 7 [0C16H] |
| 0C0F | q(80E00004): LDR R0, SP, 4H |
| 0C10 | q(40090002): SUB R0, R0, 2H |
| 0C11 | q(E9000004): BNE 4 [0C16H] |
| ENDr ; |
| 0C12 | r(80E00018): LDR R0, SP, 18H |
| 0C13 | r(81E0001C): LDR R1, SP, 1CH |
| 0C14 | r(00070001): XOR R0, R0, R1 |
| 0C15 | r(A0E00018): STR R0, SP, 18H |
| x.a := SYSTEM.VAL(LONGINT, xset) |
| ELSIFs yt.mode = ORB.Const THENu |
| 0C16 | s(80E00018): LDR R0, SP, 18H |
| 0C17 | s(81E00008): LDR R1, SP, 8H |
| 0C18 | s(A0100008): STR R0, R1, 8H |
| 0C19 | t(E7000079): B 121 [0C93H] |
| 0C1A | u(80E00010): LDR R0, SP, 10H |
| 0C1B | u(80000000): LDR R0, R0, 0H |
| 0C1C | u(40090001): SUB R0, R0, 1H |
| 0C1D | u(E9000033): BNE 51 [0C51H] |
| load(x)v;w |
| 0C1E | v(80E00008): LDR R0, SP, 8H |
| 0C1F | v(81E0000C): LDR R1, SP, CH |
| 0C20 | w(F7FFF5B2): BL -2638 [01D3H] |
| IF op = ORS.plus THENx Put1a(Ior,y x.r,z x.r,a y.a)b |
| 0C21 | x(80E00004): LDR R0, SP, 4H |
| 0C22 | x(40090006): SUB R0, R0, 6H |
| 0C23 | x(E9000009): BNE 9 [0C2DH] |
| 0C24 | y(40000006): MOV R0, R0, 6H |
| 0C25 | z(81E00008): LDR R1, SP, 8H |
| 0C26 | z(81100010): LDR R1, R1, 10H |
| 0C27 | a(82E00008): LDR R2, SP, 8H |
| 0C28 | a(82200010): LDR R2, R2, 10H |
| 0C29 | b(83E00010): LDR R3, SP, 10H |
| 0C2A | b(83300008): LDR R3, R3, 8H |
| ELSIFc opd = ORS.minus THENe Put1a(Ann,f x.r,g x.r,h y.a)i |
| 0C2B | c(F7FFF418): BL -3048 [0044H] |
| 0C2C | d(E7000023): B 35 [0C50H] |
| 0C2D | e(80E00004): LDR R0, SP, 4H |
| 0C2E | e(40090007): SUB R0, R0, 7H |
| 0C2F | e(E9000009): BNE 9 [0C39H] |
| 0C30 | f(40000005): MOV R0, R0, 5H |
| 0C31 | g(81E00008): LDR R1, SP, 8H |
| 0C32 | g(81100010): LDR R1, R1, 10H |
| 0C33 | h(82E00008): LDR R2, SP, 8H |
| 0C34 | h(82200010): LDR R2, R2, 10H |
| 0C35 | i(83E00010): LDR R3, SP, 10H |
| 0C36 | i(83300008): LDR R3, R3, 8H |
| ELSIFj opk = ORS.times THENl Put1a(And,m x.r,n x.r,o y.a)p |
| 0C37 | j(F7FFF40C): BL -3060 [0044H] |
| 0C38 | k(E7000017): B 23 [0C50H] |
| 0C39 | l(80E00004): LDR R0, SP, 4H |
| 0C3A | l(40090001): SUB R0, R0, 1H |
| 0C3B | l(E9000009): BNE 9 [0C45H] |
| 0C3C | m(40000004): MOV R0, R0, 4H |
| 0C3D | n(81E00008): LDR R1, SP, 8H |
| 0C3E | n(81100010): LDR R1, R1, 10H |
| 0C3F | o(82E00008): LDR R2, SP, 8H |
| 0C40 | o(82200010): LDR R2, R2, 10H |
| 0C41 | p(83E00010): LDR R3, SP, 10H |
| 0C42 | p(83300008): LDR R3, R3, 8H |
| ELSIFq opr = ORS.rdiv THENs Put1a(Xor,t x.r,u x.r,v y.a)w |
| 0C43 | q(F7FFF400): BL -3072 [0044H] |
| 0C44 | r(E700000B): B 11 [0C50H] |
| 0C45 | s(80E00004): LDR R0, SP, 4H |
| 0C46 | s(40090002): SUB R0, R0, 2H |
| 0C47 | s(E9000008): BNE 8 [0C50H] |
| 0C48 | t(40000007): MOV R0, R0, 7H |
| 0C49 | u(81E00008): LDR R1, SP, 8H |
| 0C4A | u(81100010): LDR R1, R1, 10H |
| 0C4B | v(82E00008): LDR R2, SP, 8H |
| 0C4C | v(82200010): LDR R2, R2, 10H |
| 0C4D | w(83E00010): LDR R3, SP, 10H |
| 0C4E | w(83300008): LDR R3, R3, 8H |
| ENDx ; |
| 0C4F | x(F7FFF3F4): BL -3084 [0044H] |
| ELSE loady(x)z;a load(y)b;c |
| 0C50 | y(E7000042): B 66 [0C93H] |
| 0C51 | z(80E00008): LDR R0, SP, 8H |
| 0C52 | z(81E0000C): LDR R1, SP, CH |
| 0C53 | a(F7FFF57F): BL -2689 [01D3H] |
| 0C54 | b(80E00010): LDR R0, SP, 10H |
| 0C55 | b(81E00014): LDR R1, SP, 14H |
| 0C56 | c(F7FFF57C): BL -2692 [01D3H] |
| IF op = ORS.plus THENd Put0(Ior,e RH-2,f x.r,g y.r)h |
| 0C57 | d(80E00004): LDR R0, SP, 4H |
| 0C58 | d(40090006): SUB R0, R0, 6H |
| 0C59 | d(E900000A): BNE 10 [0C64H] |
| 0C5A | e(40000006): MOV R0, R0, 6H |
| 0C5B | f .FIXUP D |
| 0C5B | f(8D000085): LDR SB, MT, MOD0 [ORG] |
| 0C5C | f(81D0002C): LDR R1, SB, 2CH [data] |
| 0C5D | f(41190002): SUB R1, R1, 2H |
| 0C5E | g(82E00008): LDR R2, SP, 8H |
| 0C5F | g(82200010): LDR R2, R2, 10H |
| 0C60 | h(83E00010): LDR R3, SP, 10H |
| 0C61 | h(83300010): LDR R3, R3, 10H |
| ELSIFi opj = ORS.minus THENk Put0(Ann,l RH-2,m x.r,n y.r)o |
| 0C62 | i(F7FFF39D): BL -3171 [0000H] |
| 0C63 | j(E7000026): B 38 [0C8AH] |
| 0C64 | k(80E00004): LDR R0, SP, 4H |
| 0C65 | k(40090007): SUB R0, R0, 7H |
| 0C66 | k(E900000A): BNE 10 [0C71H] |
| 0C67 | l(40000005): MOV R0, R0, 5H |
| 0C68 | m .FIXUP D |
| 0C68 | m(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0C69 | m(81D0002C): LDR R1, SB, 2CH [data] |
| 0C6A | m(41190002): SUB R1, R1, 2H |
| 0C6B | n(82E00008): LDR R2, SP, 8H |
| 0C6C | n(82200010): LDR R2, R2, 10H |
| 0C6D | o(83E00010): LDR R3, SP, 10H |
| 0C6E | o(83300010): LDR R3, R3, 10H |
| ELSIFp opq = ORS.times THENr Put0(And,s RH-2,t x.r,u y.r)v |
| 0C6F | p(F7FFF390): BL -3184 [0000H] |
| 0C70 | q(E7000019): B 25 [0C8AH] |
| 0C71 | r(80E00004): LDR R0, SP, 4H |
| 0C72 | r(40090001): SUB R0, R0, 1H |
| 0C73 | r(E900000A): BNE 10 [0C7EH] |
| 0C74 | s(40000004): MOV R0, R0, 4H |
| 0C75 | t .FIXUP D |
| 0C75 | t(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0C76 | t(81D0002C): LDR R1, SB, 2CH [data] |
| 0C77 | t(41190002): SUB R1, R1, 2H |
| 0C78 | u(82E00008): LDR R2, SP, 8H |
| 0C79 | u(82200010): LDR R2, R2, 10H |
| 0C7A | v(83E00010): LDR R3, SP, 10H |
| 0C7B | v(83300010): LDR R3, R3, 10H |
| ELSIFw opx = ORS.rdiv THENy Put0(Xor,z RH-2,a x.r,b y.r)c |
| 0C7C | w(F7FFF383): BL -3197 [0000H] |
| 0C7D | x(E700000C): B 12 [0C8AH] |
| 0C7E | y(80E00004): LDR R0, SP, 4H |
| 0C7F | y(40090002): SUB R0, R0, 2H |
| 0C80 | y(E9000009): BNE 9 [0C8AH] |
| 0C81 | z(40000007): MOV R0, R0, 7H |
| 0C82 | a .FIXUP D |
| 0C82 | a(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0C83 | a(81D0002C): LDR R1, SB, 2CH [data] |
| 0C84 | a(41190002): SUB R1, R1, 2H |
| 0C85 | b(82E00008): LDR R2, SP, 8H |
| 0C86 | b(82200010): LDR R2, R2, 10H |
| 0C87 | c(83E00010): LDR R3, SP, 10H |
| 0C88 | c(83300010): LDR R3, R3, 10H |
| ENDd ; |
| 0C89 | d(F7FFF376): BL -3210 [0000H] |
| DEC(RH);e x.r := RH-1 |
| 0C8A | e .FIXUP D |
| 0C8A | e(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0C8B | e(40D8002C): ADD R0, SB, 2CH [data] |
| 0C8C | e(81000000): LDR R1, R0, 0H |
| 0C8D | e(41190001): SUB R1, R1, 1H |
| 0C8E | e(A1000000): STR R1, R0, 0H |
| ENDf |
| 0C8F | f(80D0002C): LDR R0, SB, 2CH |
| 0C90 | f(40090001): SUB R0, R0, 1H |
| 0C91 | f(81E00008): LDR R1, SP, 8H |
| 0C92 | f(A0100010): STR R0, R1, 10H |
| ENDg SetOp; |
| 0C93 | g(8FE00000): LDR LNK, SP, 0H |
| 0C94 | g(4EE80020): ADD SP, SP, 20H |
| 0C95 | g(C700000F): B LNK |
| |
| (* Code generation for relations *) |
| |
| PROCEDURE IntRelation*(op: INTEGER; VAR x, y: Item); (* x := x < y *) |
| BEGINh |
| 0C96 | h .PROC 28 |
| 0C96 | h(4EE90018): SUB SP, SP, 18H |
| 0C97 | h(AFE00000): STR LNK, SP, 0H |
| 0C98 | h(A0E00004): STR R0, SP, 4H |
| 0C99 | h(A1E00008): STR R1, SP, 8H |
| 0C9A | h(A2E0000C): STR R2, SP, CH |
| 0C9B | h(A3E00010): STR R3, SP, 10H |
| 0C9C | h(A4E00014): STR R4, SP, 14H |
| IF (y.mode = ORB.Const)i & (jy.type.formk # ORB.Proc)l THENm |
| 0C9D | i(80E00010): LDR R0, SP, 10H |
| 0C9E | i(80000000): LDR R0, R0, 0H |
| 0C9F | i(40090001): SUB R0, R0, 1H |
| 0CA0 | j(E900002A): BNE 42 [0CCBH] |
| 0CA1 | k(80E00010): LDR R0, SP, 10H |
| 0CA2 | k(80000004): LDR R0, R0, 4H |
| 0CA3 | k(D150164C): BLEQ MT [trap=4, pos=20502] |
| 0CA4 | l(80000000): LDR R0, R0, 0H |
| 0CA5 | l(4009000A): SUB R0, R0, AH |
| 0CA6 | m(E1000024): BEQ 36 [0CCBH] |
| load(x)n;o |
| 0CA7 | n(80E00008): LDR R0, SP, 8H |
| 0CA8 | n(81E0000C): LDR R1, SP, CH |
| 0CA9 | o(F7FFF529): BL -2775 [01D3H] |
| IF (y.a # 0)p OR ~q(op IN {ORS.eql, ORS.neq})r OR (scode[pc-1]t DIV 40000000H #u -2)v THENw Put1a(Cmp,x x.r,y x.r,z y.a)a ENDb ; |
| 0CAA | p(80E00010): LDR R0, SP, 10H |
| 0CAB | p(80000008): LDR R0, R0, 8H |
| 0CAC | q(E9000010): BNE 16 [0CBDH] |
| 0CAD | r(40000600): MOV R0, R0, 600H |
| 0CAE | r(81E00004): LDR R1, SP, 4H |
| 0CAF | r(41180001): ADD R1, R1, 1H |
| 0CB0 | r(00030001): ROR R0, R0, R1 |
| 0CB1 | s(E800000B): BPL 11 [0CBDH] |
| 0CB2 | t .FIXUP D |
| 0CB2 | t(8D000028): LDR SB, MT, MOD0 [ORG] |
| 0CB3 | t(80D00018): LDR R0, SB, 18H [data] |
| 0CB4 | t(40090001): SUB R0, R0, 1H |
| 0CB5 | t(41091F40): SUB R1, R0, 1F40H |
| 0CB6 | t(DA50771C): BLCC MT [trap=1, pos=20599] |
| 0CB7 | t(40010002): LSL R0, R0, 2H |
| 0CB8 | t(00D80000): ADD R0, SB, R0 |
| 0CB9 | u(80000064): LDR R0, R0, 64H |
| 0CBA | u(4002001E): ASR R0, R0, 1EH |
| 0CBB | v(5009FFFE): SUB R0, R0, FFFFFFFEH |
| 0CBC | w(E1000008): BEQ 8 [0CC5H] |
| 0CBD | x(40000009): MOV R0, R0, 9H |
| 0CBE | y(81E00008): LDR R1, SP, 8H |
| 0CBF | y(81100010): LDR R1, R1, 10H |
| 0CC0 | z(82E00008): LDR R2, SP, 8H |
| 0CC1 | z(82200010): LDR R2, R2, 10H |
| 0CC2 | a(83E00010): LDR R3, SP, 10H |
| 0CC3 | a(83300008): LDR R3, R3, 8H |
| 0CC4 | b(F7FFF37F): BL -3201 [0044H] |
| DEC(RH) |
| ELSEc |
| 0CC5 | c .FIXUP D |
| 0CC5 | c(8D000013): LDR SB, MT, MOD0 [ORG] |
| 0CC6 | c(40D8002C): ADD R0, SB, 2CH [data] |
| 0CC7 | c(81000000): LDR R1, R0, 0H |
| 0CC8 | c(41190001): SUB R1, R1, 1H |
| 0CC9 | c(A1000000): STR R1, R0, 0H |
| IFd (x.mode = Cond)e OR (fy.mode = Cond)g THENh ORS.Mark("not implemented")i ENDj ; |
| 0CCA | d(E700001F): B 31 [0CEAH] |
| 0CCB | e(80E00008): LDR R0, SP, 8H |
| 0CCC | e(80000000): LDR R0, R0, 0H |
| 0CCD | e(4009000C): SUB R0, R0, CH |
| 0CCE | f(E1000004): BEQ 4 [0CD3H] |
| 0CCF | g(80E00010): LDR R0, SP, 10H |
| 0CD0 | g(80000000): LDR R0, R0, 0H |
| 0CD1 | g(4009000C): SUB R0, R0, CH |
| 0CD2 | h(E9000004): BNE 4 [0CD7H] |
| 0CD3 | i .FIXUP D |
| 0CD3 | i(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0CD4 | i(40D889C4): ADD R0, SB, FFFF89C4H [data] |
| 0CD5 | i(41000010): MOV R1, R0, 10H |
| 0CD6 | j .FIXUP P |
| 0CD6 | j(F7209267): BL MOD2 [ORS] PROC9 |
| load(x)k;l load(y)m;n Put0(Cmp,o x.r,p x.r,q y.r)r;s DEC(RH, 2) |
| 0CD7 | k(80E00008): LDR R0, SP, 8H |
| 0CD8 | k(81E0000C): LDR R1, SP, CH |
| 0CD9 | l(F7FFF4F9): BL -2823 [01D3H] |
| 0CDA | m(80E00010): LDR R0, SP, 10H |
| 0CDB | m(81E00014): LDR R1, SP, 14H |
| 0CDC | n(F7FFF4F6): BL -2826 [01D3H] |
| 0CDD | o(40000009): MOV R0, R0, 9H |
| 0CDE | p(81E00008): LDR R1, SP, 8H |
| 0CDF | p(81100010): LDR R1, R1, 10H |
| 0CE0 | q(82E00008): LDR R2, SP, 8H |
| 0CE1 | q(82200010): LDR R2, R2, 10H |
| 0CE2 | r(83E00010): LDR R3, SP, 10H |
| 0CE3 | r(83300010): LDR R3, R3, 10H |
| 0CE4 | s(F7FFF31B): BL -3301 [0000H] |
| ENDt ; |
| 0CE5 | t .FIXUP D |
| 0CE5 | t(8D000012): LDR SB, MT, MOD0 [ORG] |
| 0CE6 | t(40D8002C): ADD R0, SB, 2CH [data] |
| 0CE7 | t(81000000): LDR R1, R0, 0H |
| 0CE8 | t(41190002): SUB R1, R1, 2H |
| 0CE9 | t(A1000000): STR R1, R0, 0H |
| SetCC(x,u relmap[op - ORS.eql]v)w |
| 0CEA | u(80E00008): LDR R0, SP, 8H |
| 0CEB | u(81E0000C): LDR R1, SP, CH |
| 0CEC | v(82E00004): LDR R2, SP, 4H |
| 0CED | v(42290009): SUB R2, R2, 9H |
| 0CEE | v(43290006): SUB R3, R2, 6H |
| 0CEF | v(DA51831C): BLCC MT [trap=1, pos=20867] |
| 0CF0 | v(42210002): LSL R2, R2, 2H |
| 0CF1 | v .FIXUP D |
| 0CF1 | v(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0CF2 | v(02D80002): ADD R2, SB, R2 [global array] |
| 0CF3 | w(8220004C): LDR R2, R2, 4CH |
| ENDx IntRelation; |
| 0CF4 | x(F7FFF3E3): BL -3101 [00D8H] |
| 0CF5 | x(8FE00000): LDR LNK, SP, 0H |
| 0CF6 | x(4EE80018): ADD SP, SP, 18H |
| 0CF7 | x(C700000F): B LNK |
| |
| PROCEDURE RealRelation*(op: INTEGER; VAR x, y: Item); (* x := x < y *) |
| BEGINy load(x)z;a |
| 0CF8 | y .PROC 29 |
| 0CF8 | y(4EE90018): SUB SP, SP, 18H |
| 0CF9 | y(AFE00000): STR LNK, SP, 0H |
| 0CFA | y(A0E00004): STR R0, SP, 4H |
| 0CFB | y(A1E00008): STR R1, SP, 8H |
| 0CFC | y(A2E0000C): STR R2, SP, CH |
| 0CFD | y(A3E00010): STR R3, SP, 10H |
| 0CFE | y(A4E00014): STR R4, SP, 14H |
| 0CFF | z(80E00008): LDR R0, SP, 8H |
| 0D00 | z(81E0000C): LDR R1, SP, CH |
| 0D01 | a(F7FFF4D1): BL -2863 [01D3H] |
| IF (y.mode = ORB.Const)b & (cy.a = 0)d THENe DEC(RH) |
| 0D02 | b(80E00010): LDR R0, SP, 10H |
| 0D03 | b(80000000): LDR R0, R0, 0H |
| 0D04 | b(40090001): SUB R0, R0, 1H |
| 0D05 | c(E9000009): BNE 9 [0D0FH] |
| 0D06 | d(80E00010): LDR R0, SP, 10H |
| 0D07 | d(80000008): LDR R0, R0, 8H |
| 0D08 | e(E9000006): BNE 6 [0D0FH] |
| ELSEf loadg(y)h;i Put0(Fsb,j x.r,k x.r,l y.r)m;n DEC(RH, 2) |
| 0D09 | f .FIXUP D |
| 0D09 | f(8D000018): LDR SB, MT, MOD0 [ORG] |
| 0D0A | f(40D8002C): ADD R0, SB, 2CH [data] |
| 0D0B | f(81000000): LDR R1, R0, 0H |
| 0D0C | f(41190001): SUB R1, R1, 1H |
| 0D0D | f(A1000000): STR R1, R0, 0H |
| 0D0E | g(E7000010): B 16 [0D1FH] |
| 0D0F | h(80E00010): LDR R0, SP, 10H |
| 0D10 | h(81E00014): LDR R1, SP, 14H |
| 0D11 | i(F7FFF4C1): BL -2879 [01D3H] |
| 0D12 | j(4000000D): MOV R0, R0, DH |
| 0D13 | k(81E00008): LDR R1, SP, 8H |
| 0D14 | k(81100010): LDR R1, R1, 10H |
| 0D15 | l(82E00008): LDR R2, SP, 8H |
| 0D16 | l(82200010): LDR R2, R2, 10H |
| 0D17 | m(83E00010): LDR R3, SP, 10H |
| 0D18 | m(83300010): LDR R3, R3, 10H |
| 0D19 | n(F7FFF2E6): BL -3354 [0000H] |
| ENDo ; |
| 0D1A | o .FIXUP D |
| 0D1A | o(8D000011): LDR SB, MT, MOD0 [ORG] |
| 0D1B | o(40D8002C): ADD R0, SB, 2CH [data] |
| 0D1C | o(81000000): LDR R1, R0, 0H |
| 0D1D | o(41190002): SUB R1, R1, 2H |
| 0D1E | o(A1000000): STR R1, R0, 0H |
| SetCC(x,p relmap[op - ORS.eql]q)r |
| 0D1F | p(80E00008): LDR R0, SP, 8H |
| 0D20 | p(81E0000C): LDR R1, SP, CH |
| 0D21 | q(82E00004): LDR R2, SP, 4H |
| 0D22 | q(42290009): SUB R2, R2, 9H |
| 0D23 | q(43290006): SUB R3, R2, 6H |
| 0D24 | q(DA528C1C): BLCC MT [trap=1, pos=21132] |
| 0D25 | q(42210002): LSL R2, R2, 2H |
| 0D26 | q .FIXUP D |
| 0D26 | q(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0D27 | q(02D80002): ADD R2, SB, R2 [global array] |
| 0D28 | r(8220004C): LDR R2, R2, 4CH |
| ENDs RealRelation; |
| 0D29 | s(F7FFF3AE): BL -3154 [00D8H] |
| 0D2A | s(8FE00000): LDR LNK, SP, 0H |
| 0D2B | s(4EE80018): ADD SP, SP, 18H |
| 0D2C | s(C700000F): B LNK |
| |
| PROCEDURE StringRelation*(op: INTEGER; VAR x, y: Item); (* x := x < y *) |
| (*x, y are char arrays or strings*) |
| BEGINt |
| 0D2D | t .PROC 30 |
| 0D2D | t(4EE90018): SUB SP, SP, 18H |
| 0D2E | t(AFE00000): STR LNK, SP, 0H |
| 0D2F | t(A0E00004): STR R0, SP, 4H |
| 0D30 | t(A1E00008): STR R1, SP, 8H |
| 0D31 | t(A2E0000C): STR R2, SP, CH |
| 0D32 | t(A3E00010): STR R3, SP, 10H |
| 0D33 | t(A4E00014): STR R4, SP, 14H |
| IF x.type.formu = ORB.String THENv loadStringAdr(x)w ELSEx loadAdry(x)z ENDa ; |
| 0D34 | u(80E00008): LDR R0, SP, 8H |
| 0D35 | u(80000004): LDR R0, R0, 4H |
| 0D36 | u(D153324C): BLEQ MT [trap=4, pos=21298] |
| 0D37 | v(80000000): LDR R0, R0, 0H |
| 0D38 | v(4009000B): SUB R0, R0, BH |
| 0D39 | v(E9000004): BNE 4 [0D3EH] |
| 0D3A | w(80E00008): LDR R0, SP, 8H |
| 0D3B | w(81E0000C): LDR R1, SP, CH |
| 0D3C | x(F7FFF636): BL -2506 [0373H] |
| 0D3D | y(E7000003): B 3 [0D41H] |
| 0D3E | z(80E00008): LDR R0, SP, 8H |
| 0D3F | z(81E0000C): LDR R1, SP, CH |
| 0D40 | a(F7FFF57B): BL -2693 [02BCH] |
| IF y.type.formb = ORB.String THENc loadStringAdr(y)d ELSEe loadAdrf(y)g ENDh ; |
| 0D41 | b(80E00010): LDR R0, SP, 10H |
| 0D42 | b(80000004): LDR R0, R0, 4H |
| 0D43 | b(D1537E4C): BLEQ MT [trap=4, pos=21374] |
| 0D44 | c(80000000): LDR R0, R0, 0H |
| 0D45 | c(4009000B): SUB R0, R0, BH |
| 0D46 | c(E9000004): BNE 4 [0D4BH] |
| 0D47 | d(80E00010): LDR R0, SP, 10H |
| 0D48 | d(81E00014): LDR R1, SP, 14H |
| 0D49 | e(F7FFF629): BL -2519 [0373H] |
| 0D4A | f(E7000003): B 3 [0D4EH] |
| 0D4B | g(80E00010): LDR R0, SP, 10H |
| 0D4C | g(81E00014): LDR R1, SP, 14H |
| 0D4D | h(F7FFF56E): BL -2706 [02BCH] |
| Put2(Ldr+1,i RH,j x.r,k 0)l;m Put1(Add,n x.r,o x.r,p 1)q;r |
| 0D4E | i(40000009): MOV R0, R0, 9H |
| 0D4F | j .FIXUP D |
| 0D4F | j(8D000029): LDR SB, MT, MOD0 [ORG] |
| 0D50 | j(81D0002C): LDR R1, SB, 2CH [data] |
| 0D51 | k(82E00008): LDR R2, SP, 8H |
| 0D52 | k(82200010): LDR R2, R2, 10H |
| 0D53 | l(43000000): MOV R3, R0, 0H |
| 0D54 | m(F7FFF31C): BL -3300 [0071H] |
| 0D55 | n(40000008): MOV R0, R0, 8H |
| 0D56 | o(81E00008): LDR R1, SP, 8H |
| 0D57 | o(81100010): LDR R1, R1, 10H |
| 0D58 | p(82E00008): LDR R2, SP, 8H |
| 0D59 | p(82200010): LDR R2, R2, 10H |
| 0D5A | q(43000001): MOV R3, R0, 1H |
| 0D5B | r(F7FFF2C2): BL -3390 [001EH] |
| Put2(Ldr+1,s RH+1,t y.r,u 0)v;w Put1(Add,x y.r,y y.r,z 1)a;b |
| 0D5C | s(40000009): MOV R0, R0, 9H |
| 0D5D | t .FIXUP D |
| 0D5D | t(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0D5E | t(81D0002C): LDR R1, SB, 2CH [data] |
| 0D5F | t(41180001): ADD R1, R1, 1H |
| 0D60 | u(82E00010): LDR R2, SP, 10H |
| 0D61 | u(82200010): LDR R2, R2, 10H |
| 0D62 | v(43000000): MOV R3, R0, 0H |
| 0D63 | w(F7FFF30D): BL -3315 [0071H] |
| 0D64 | x(40000008): MOV R0, R0, 8H |
| 0D65 | y(81E00010): LDR R1, SP, 10H |
| 0D66 | y(81100010): LDR R1, R1, 10H |
| 0D67 | z(82E00010): LDR R2, SP, 10H |
| 0D68 | z(82200010): LDR R2, R2, 10H |
| 0D69 | a(43000001): MOV R3, R0, 1H |
| 0D6A | b(F7FFF2B3): BL -3405 [001EH] |
| Put0(Cmp,c RH+2,d RH,e RH+1)f;g Put3(BC,h NE,i 2)j;k |
| 0D6B | c(40000009): MOV R0, R0, 9H |
| 0D6C | d .FIXUP D |
| 0D6C | d(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 0D6D | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0D6E | d(41180002): ADD R1, R1, 2H |
| 0D6F | e(82D0002C): LDR R2, SB, 2CH |
| 0D70 | f(83D0002C): LDR R3, SB, 2CH |
| 0D71 | f(43380001): ADD R3, R3, 1H |
| 0D72 | g(F7FFF28D): BL -3443 [0000H] |
| 0D73 | h(40000002): MOV R0, R0, 2H |
| 0D74 | i(41000009): MOV R1, R0, 9H |
| 0D75 | j(42000002): MOV R2, R0, 2H |
| 0D76 | k(F7FFF31A): BL -3302 [0091H] |
| Put1(Cmp,l RH+2,m RH,n 0)o;p Put3(BC,q NE,r -8)s;t |
| 0D77 | l(40000009): MOV R0, R0, 9H |
| 0D78 | m .FIXUP D |
| 0D78 | m(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0D79 | m(81D0002C): LDR R1, SB, 2CH [data] |
| 0D7A | m(41180002): ADD R1, R1, 2H |
| 0D7B | n(82D0002C): LDR R2, SB, 2CH |
| 0D7C | o(43000000): MOV R3, R0, 0H |
| 0D7D | p(F7FFF2A0): BL -3424 [001EH] |
| 0D7E | q(40000002): MOV R0, R0, 2H |
| 0D7F | r(41000009): MOV R1, R0, 9H |
| 0D80 | s(5200FFF8): MOV R2, R0, FFFFFFF8H |
| 0D81 | t(F7FFF30F): BL -3313 [0091H] |
| DEC(RH, 2);u SetCC(x,v relmap[op - ORS.eql]w)x |
| 0D82 | u .FIXUP D |
| 0D82 | u(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0D83 | u(40D8002C): ADD R0, SB, 2CH [data] |
| 0D84 | u(81000000): LDR R1, R0, 0H |
| 0D85 | u(41190002): SUB R1, R1, 2H |
| 0D86 | u(A1000000): STR R1, R0, 0H |
| 0D87 | v(80E00008): LDR R0, SP, 8H |
| 0D88 | v(81E0000C): LDR R1, SP, CH |
| 0D89 | w(82E00004): LDR R2, SP, 4H |
| 0D8A | w(42290009): SUB R2, R2, 9H |
| 0D8B | w(43290006): SUB R3, R2, 6H |
| 0D8C | w(DA54AF1C): BLCC MT [trap=1, pos=21679] |
| 0D8D | w(42210002): LSL R2, R2, 2H |
| 0D8E | w(02D80002): ADD R2, SB, R2 |
| 0D8F | x(8220004C): LDR R2, R2, 4CH |
| ENDy StringRelation; |
| 0D90 | y(F7FFF347): BL -3257 [00D8H] |
| 0D91 | y(8FE00000): LDR LNK, SP, 0H |
| 0D92 | y(4EE80018): ADD SP, SP, 18H |
| 0D93 | y(C700000F): B LNK |
| |
| (* Code generation of Assignments *) |
| |
| PROCEDURE StrToChar*(VAR x: Item); |
| BEGINz x.type := ORB.charType;a DEC(strx, 4);b x.a := ORD(str[x.a]c) |
| 0D94 | z .PROC 31 |
| 0D94 | z(4EE9000C): SUB SP, SP, CH |
| 0D95 | z(AFE00000): STR LNK, SP, 0H |
| 0D96 | z(A0E00004): STR R0, SP, 4H |
| 0D97 | z(A1E00008): STR R1, SP, 8H |
| 0D98 | a .FIXUP D |
| 0D98 | a(8D400016): LDR SB, MT, MOD4 [ORB] |
| 0D99 | a(80D00008): LDR R0, SB, VAR8 |
| 0D9A | a(81E00004): LDR R1, SP, 4H |
| 0D9B | a(A0100004): STR R0, R1, 4H |
| 0D9C | b .FIXUP D |
| 0D9C | b(8D000004): LDR SB, MT, MOD0 [ORG] |
| 0D9D | b(40D80024): ADD R0, SB, 24H [data] |
| 0D9E | b(81000000): LDR R1, R0, 0H |
| 0D9F | b(41190004): SUB R1, R1, 4H |
| 0DA0 | b(A1000000): STR R1, R0, 0H |
| 0DA1 | c(80E00004): LDR R0, SP, 4H |
| 0DA2 | c(80000008): LDR R0, R0, 8H |
| 0DA3 | c(41090960): SUB R1, R0, 960H |
| 0DA4 | c(DA55561C): BLCC MT [trap=1, pos=21846] |
| 0DA5 | c(00D80000): ADD R0, SB, R0 |
| ENDd StrToChar; |
| 0DA6 | d(90007F44): LDR R0, R0, 7F44H |
| 0DA7 | d(81E00004): LDR R1, SP, 4H |
| 0DA8 | d(A0100008): STR R0, R1, 8H |
| 0DA9 | d(8FE00000): LDR LNK, SP, 0H |
| 0DAA | d(4EE8000C): ADD SP, SP, CH |
| 0DAB | d(C700000F): B LNK |
| |
| PROCEDURE Store*(VAR x, y: Item); (* x := y *) |
| VAR op: LONGINT; |
| BEGINe load(y)f;g |
| 0DAC | e .PROC 32 |
| 0DAC | e(4EE90018): SUB SP, SP, 18H |
| 0DAD | e(AFE00000): STR LNK, SP, 0H |
| 0DAE | e(A0E00004): STR R0, SP, 4H |
| 0DAF | e(A1E00008): STR R1, SP, 8H |
| 0DB0 | e(A2E0000C): STR R2, SP, CH |
| 0DB1 | e(A3E00010): STR R3, SP, 10H |
| 0DB2 | f(80E0000C): LDR R0, SP, CH |
| 0DB3 | f(81E00010): LDR R1, SP, 10H |
| 0DB4 | g(F7FFF41E): BL -3042 [01D3H] |
| IF x.type.sizeh = 1 THENi op := Str+1 ELSEj opk := Str ENDl ; |
| 0DB5 | h(80E00004): LDR R0, SP, 4H |
| 0DB6 | h(80000004): LDR R0, R0, 4H |
| 0DB7 | h(D155D44C): BLEQ MT [trap=4, pos=21972] |
| 0DB8 | i(80000020): LDR R0, R0, 20H |
| 0DB9 | i(40090001): SUB R0, R0, 1H |
| 0DBA | i(E9000003): BNE 3 [0DBEH] |
| 0DBB | j(4000000B): MOV R0, R0, BH |
| 0DBC | j(A0E00014): STR R0, SP, 14H |
| 0DBD | k(E7000002): B 2 [0DC0H] |
| 0DBE | l(4000000A): MOV R0, R0, AH |
| 0DBF | l(A0E00014): STR R0, SP, 14H |
| IF x.mode = ORB.Var THENm |
| 0DC0 | m(80E00004): LDR R0, SP, 4H |
| 0DC1 | m(80000000): LDR R0, R0, 0H |
| 0DC2 | m(40090002): SUB R0, R0, 2H |
| 0DC3 | m(E900001A): BNE 26 [0DDEH] |
| IF x.r > 0 THENn (*local*) Put2(op,o y.r,p SP,q x.a + frame)r |
| 0DC4 | n(80E00004): LDR R0, SP, 4H |
| 0DC5 | n(80000010): LDR R0, R0, 10H |
| 0DC6 | n(40090000): SUB R0, R0, 0H |
| 0DC7 | n(E600000B): BLE 11 [0DD3H] |
| 0DC8 | o(80E00014): LDR R0, SP, 14H |
| 0DC9 | p(81E0000C): LDR R1, SP, CH |
| 0DCA | p(81100010): LDR R1, R1, 10H |
| 0DCB | q(4200000E): MOV R2, R0, EH |
| 0DCC | r(83E00004): LDR R3, SP, 4H |
| 0DCD | r(83300008): LDR R3, R3, 8H |
| 0DCE | r .FIXUP D |
| 0DCE | r(8D000032): LDR SB, MT, MOD0 [ORG] |
| 0DCF | r(84D00034): LDR R4, SB, 34H [data] |
| 0DD0 | r(03380004): ADD R3, R3, R4 |
| ELSEs GetSBt(x.r)u;v Put2(op,w y.r,x SB,y x.a)z |
| 0DD1 | s(F7FFF29F): BL -3425 [0071H] |
| 0DD2 | t(E700000A): B 10 [0DDDH] |
| 0DD3 | u(80E00004): LDR R0, SP, 4H |
| 0DD4 | u(80000010): LDR R0, R0, 10H |
| 0DD5 | v(F7FFF3D2): BL -3118 [01A8H] |
| 0DD6 | w(80E00014): LDR R0, SP, 14H |
| 0DD7 | x(81E0000C): LDR R1, SP, CH |
| 0DD8 | x(81100010): LDR R1, R1, 10H |
| 0DD9 | y(4200000D): MOV R2, R0, DH |
| 0DDA | z(83E00004): LDR R3, SP, 4H |
| 0DDB | z(83300008): LDR R3, R3, 8H |
| ENDa |
| 0DDC | a(F7FFF294): BL -3436 [0071H] |
| ELSIF xb.mode = ORB.Par THENc Put2(Ldr,d RH,e SP,f x.a + frame)g;h Put2(op,i y.r,j RH,k x.b)l;m |
| 0DDD | b(E700002C): B 44 [0E0AH] |
| 0DDE | c(80E00004): LDR R0, SP, 4H |
| 0DDF | c(80000000): LDR R0, R0, 0H |
| 0DE0 | c(40090003): SUB R0, R0, 3H |
| 0DE1 | c(E9000012): BNE 18 [0DF4H] |
| 0DE2 | d(40000008): MOV R0, R0, 8H |
| 0DE3 | e .FIXUP D |
| 0DE3 | e(8D000015): LDR SB, MT, MOD0 [ORG] |
| 0DE4 | e(81D0002C): LDR R1, SB, 2CH [data] |
| 0DE5 | f(4200000E): MOV R2, R0, EH |
| 0DE6 | g(83E00004): LDR R3, SP, 4H |
| 0DE7 | g(83300008): LDR R3, R3, 8H |
| 0DE8 | g(84D00034): LDR R4, SB, 34H |
| 0DE9 | g(03380004): ADD R3, R3, R4 |
| 0DEA | h(F7FFF286): BL -3450 [0071H] |
| 0DEB | i(80E00014): LDR R0, SP, 14H |
| 0DEC | j(81E0000C): LDR R1, SP, CH |
| 0DED | j(81100010): LDR R1, R1, 10H |
| 0DEE | k .FIXUP D |
| 0DEE | k(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0DEF | k(82D0002C): LDR R2, SB, 2CH [data] |
| 0DF0 | l(83E00004): LDR R3, SP, 4H |
| 0DF1 | l(8330000C): LDR R3, R3, CH |
| 0DF2 | m(F7FFF27E): BL -3458 [0071H] |
| ELSIF xn.mode = RegI THENo Put2(op,p y.r,q x.r,r x.a)s;t DEC(RH);u |
| 0DF3 | n(E7000016): B 22 [0E0AH] |
| 0DF4 | o(80E00004): LDR R0, SP, 4H |
| 0DF5 | o(80000000): LDR R0, R0, 0H |
| 0DF6 | o(4009000B): SUB R0, R0, BH |
| 0DF7 | o(E900000E): BNE 14 [0E06H] |
| 0DF8 | p(80E00014): LDR R0, SP, 14H |
| 0DF9 | q(81E0000C): LDR R1, SP, CH |
| 0DFA | q(81100010): LDR R1, R1, 10H |
| 0DFB | r(82E00004): LDR R2, SP, 4H |
| 0DFC | r(82200010): LDR R2, R2, 10H |
| 0DFD | s(83E00004): LDR R3, SP, 4H |
| 0DFE | s(83300008): LDR R3, R3, 8H |
| 0DFF | t(F7FFF271): BL -3471 [0071H] |
| 0E00 | u .FIXUP D |
| 0E00 | u(8D000012): LDR SB, MT, MOD0 [ORG] |
| 0E01 | u(40D8002C): ADD R0, SB, 2CH [data] |
| 0E02 | u(81000000): LDR R1, R0, 0H |
| 0E03 | u(41190001): SUB R1, R1, 1H |
| 0E04 | u(A1000000): STR R1, R0, 0H |
| ELSE ORSv.Mark("bad mode in Store")w |
| 0E05 | v(E7000004): B 4 [0E0AH] |
| 0E06 | w .FIXUP D |
| 0E06 | w(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0E07 | w(40D889D4): ADD R0, SB, FFFF89D4H [data] |
| 0E08 | w(41000012): MOV R1, R0, 12H |
| ENDx ; |
| 0E09 | x .FIXUP P |
| 0E09 | x(F7209133): BL MOD2 [ORS] PROC9 |
| DEC(RH) |
| ENDy Store; |
| 0E0A | y .FIXUP D |
| 0E0A | y(8D000004): LDR SB, MT, MOD0 [ORG] |
| 0E0B | y(40D8002C): ADD R0, SB, 2CH [data] |
| 0E0C | y(81000000): LDR R1, R0, 0H |
| 0E0D | y(41190001): SUB R1, R1, 1H |
| 0E0E | y(A1000000): STR R1, R0, 0H |
| 0E0F | y(8FE00000): LDR LNK, SP, 0H |
| 0E10 | y(4EE80018): ADD SP, SP, 18H |
| 0E11 | y(C700000F): B LNK |
| |
| PROCEDURE StoreStruct*(VAR x, y: Item); (* x := y, frame = 0 *) |
| VAR s, pc0: LONGINT; |
| BEGINz |
| 0E12 | z .PROC 33 |
| 0E12 | z(4EE9001C): SUB SP, SP, 1CH |
| 0E13 | z(AFE00000): STR LNK, SP, 0H |
| 0E14 | z(A0E00004): STR R0, SP, 4H |
| 0E15 | z(A1E00008): STR R1, SP, 8H |
| 0E16 | z(A2E0000C): STR R2, SP, CH |
| 0E17 | z(A3E00010): STR R3, SP, 10H |
| IF y.type.sizea # 0 THENb |
| 0E18 | a(80E0000C): LDR R0, SP, CH |
| 0E19 | a(80000004): LDR R0, R0, 4H |
| 0E1A | a(D157EA4C): BLEQ MT [trap=4, pos=22506] |
| 0E1B | b(80000020): LDR R0, R0, 20H |
| 0E1C | b(E10000C2): BEQ 194 [0EDFH] |
| loadAdr(x)c;d loadAdr(y)e;f |
| 0E1D | c(80E00004): LDR R0, SP, 4H |
| 0E1E | c(81E00008): LDR R1, SP, 8H |
| 0E1F | d(F7FFF49C): BL -2916 [02BCH] |
| 0E20 | e(80E0000C): LDR R0, SP, CH |
| 0E21 | e(81E00010): LDR R1, SP, 10H |
| 0E22 | f(F7FFF499): BL -2919 [02BCH] |
| IF (x.type.formg = ORB.Array)h & (ix.type.lenj > 0)k THENl |
| 0E23 | g(80E00004): LDR R0, SP, 4H |
| 0E24 | g(80000004): LDR R0, R0, 4H |
| 0E25 | g(D158274C): BLEQ MT [trap=4, pos=22567] |
| 0E26 | h(80000000): LDR R0, R0, 0H |
| 0E27 | h(4009000C): SUB R0, R0, CH |
| 0E28 | i(E9000079): BNE 121 [0EA2H] |
| 0E29 | j(80E00004): LDR R0, SP, 4H |
| 0E2A | j(80000004): LDR R0, R0, 4H |
| 0E2B | j(D158434C): BLEQ MT [trap=4, pos=22595] |
| 0E2C | k(80000010): LDR R0, R0, 10H |
| 0E2D | k(40090000): SUB R0, R0, 0H |
| 0E2E | l(E6000073): BLE 115 [0EA2H] |
| IF y.type.lenm >= 0 THENn |
| 0E2F | m(80E0000C): LDR R0, SP, CH |
| 0E30 | m(80000004): LDR R0, R0, 4H |
| 0E31 | m(D158634C): BLEQ MT [trap=4, pos=22627] |
| 0E32 | n(80000010): LDR R0, R0, 10H |
| 0E33 | n(40090000): SUB R0, R0, 0H |
| 0E34 | n(E500001B): BLT 27 [0E50H] |
| IF x.type.sizeo = y.type.sizep THENq Put1a(Mov,r RH,s 0,t (y.type.sizeu+3)v DIV 4)w |
| 0E35 | o(80E00004): LDR R0, SP, 4H |
| 0E36 | o(80000004): LDR R0, R0, 4H |
| 0E37 | o(D158874C): BLEQ MT [trap=4, pos=22663] |
| 0E38 | p(81E0000C): LDR R1, SP, CH |
| 0E39 | p(81100004): LDR R1, R1, 4H |
| 0E3A | p(D158954C): BLEQ MT [trap=4, pos=22677] |
| 0E3B | q(80000020): LDR R0, R0, 20H |
| 0E3C | q(81100020): LDR R1, R1, 20H |
| 0E3D | q(00090001): SUB R0, R0, R1 |
| 0E3E | q(E900000C): BNE 12 [0E4BH] |
| 0E3F | r(40000000): MOV R0, R0, 0H |
| 0E40 | s .FIXUP D |
| 0E40 | s(8D000036): LDR SB, MT, MOD0 [ORG] |
| 0E41 | s(81D0002C): LDR R1, SB, 2CH [data] |
| 0E42 | t(42000000): MOV R2, R0, 0H |
| 0E43 | u(83E0000C): LDR R3, SP, CH |
| 0E44 | u(83300004): LDR R3, R3, 4H |
| 0E45 | u(D158B94C): BLEQ MT [trap=4, pos=22713] |
| 0E46 | v(83300020): LDR R3, R3, 20H |
| 0E47 | v(43380003): ADD R3, R3, 3H |
| 0E48 | w(43320002): ASR R3, R3, 2H |
| ELSEx ORSy.Mark("different length/size, not implemented")z |
| 0E49 | x(F7FFF1FA): BL -3590 [0044H] |
| 0E4A | y(E7000004): B 4 [0E4FH] |
| 0E4B | z .FIXUP D |
| 0E4B | z(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0E4C | z(40D889E8): ADD R0, SB, FFFF89E8H [data] |
| 0E4D | z(41000027): MOV R1, R0, 27H |
| ENDa |
| 0E4E | a .FIXUP P |
| 0E4E | a(F7209045): BL MOD2 [ORS] PROC9 |
| ELSE (*y open array*) Put2b(Ldr,c RH,d SP,e y.a+4)f;g s := y.type.baseh.sizei;j (*element size*) |
| 0E4F | b(E7000051): B 81 [0EA1H] |
| 0E50 | c(40000008): MOV R0, R0, 8H |
| 0E51 | d .FIXUP D |
| 0E51 | d(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0E52 | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0E53 | e(4200000E): MOV R2, R0, EH |
| 0E54 | f(83E0000C): LDR R3, SP, CH |
| 0E55 | f(83300008): LDR R3, R3, 8H |
| 0E56 | f(43380004): ADD R3, R3, 4H |
| 0E57 | g(F7FFF219): BL -3559 [0071H] |
| 0E58 | h(80E0000C): LDR R0, SP, CH |
| 0E59 | h(80000004): LDR R0, R0, 4H |
| 0E5A | h(D1595D4C): BLEQ MT [trap=4, pos=22877] |
| 0E5B | i(8000001C): LDR R0, R0, 1CH |
| 0E5C | i(D159624C): BLEQ MT [trap=4, pos=22882] |
| 0E5D | j(80000020): LDR R0, R0, 20H |
| 0E5E | j(A0E00014): STR R0, SP, 14H |
| pc0 := pc;k Put3(BC,l EQ,m 0)n;o |
| 0E5F | k .FIXUP D |
| 0E5F | k(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0E60 | k(80D00018): LDR R0, SB, 18H [data] |
| 0E61 | k(A0E00018): STR R0, SP, 18H |
| 0E62 | l(40000002): MOV R0, R0, 2H |
| 0E63 | m(41000001): MOV R1, R0, 1H |
| 0E64 | n(42000000): MOV R2, R0, 0H |
| 0E65 | o(F7FFF22B): BL -3541 [0091H] |
| IF s = 1 THENp Put1(Add,q RH,r RH,s 3)t;u Put1(Asr,v RH,w RH,x 2)y |
| 0E66 | p(80E00014): LDR R0, SP, 14H |
| 0E67 | p(40090001): SUB R0, R0, 1H |
| 0E68 | p(E900000D): BNE 13 [0E76H] |
| 0E69 | q(40000008): MOV R0, R0, 8H |
| 0E6A | r .FIXUP D |
| 0E6A | r(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0E6B | r(81D0002C): LDR R1, SB, 2CH [data] |
| 0E6C | s(82D0002C): LDR R2, SB, 2CH |
| 0E6D | t(43000003): MOV R3, R0, 3H |
| 0E6E | u(F7FFF1AF): BL -3665 [001EH] |
| 0E6F | v(40000002): MOV R0, R0, 2H |
| 0E70 | w .FIXUP D |
| 0E70 | w(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0E71 | w(81D0002C): LDR R1, SB, 2CH [data] |
| 0E72 | x(82D0002C): LDR R2, SB, 2CH |
| 0E73 | y(43000002): MOV R3, R0, 2H |
| ELSIFz sa # 4 THENb Put1a(Mul,c RH,d RH,e s DIV 4)f |
| 0E74 | z(F7FFF1A9): BL -3671 [001EH] |
| 0E75 | a(E700000A): B 10 [0E80H] |
| 0E76 | b(80E00014): LDR R0, SP, 14H |
| 0E77 | b(40090004): SUB R0, R0, 4H |
| 0E78 | b(E1000007): BEQ 7 [0E80H] |
| 0E79 | c(4000000A): MOV R0, R0, AH |
| 0E7A | d .FIXUP D |
| 0E7A | d(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0E7B | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0E7C | e(82D0002C): LDR R2, SB, 2CH |
| 0E7D | f(83E00014): LDR R3, SP, 14H |
| 0E7E | f(43320002): ASR R3, R3, 2H |
| ENDg ; |
| 0E7F | g(F7FFF1C4): BL -3644 [0044H] |
| IF check THENh |
| 0E80 | h .FIXUP D |
| 0E80 | h(8D000006): LDR SB, MT, MOD0 [ORG] |
| 0E81 | h(90D00044): LDR R0, SB, 44H [data] |
| 0E82 | h(E1000017): BEQ 23 [0E9AH] |
| Put1a(Mov,i RH+1,j 0,k (x.type.sizel+3)m DIV 4)n;o Put0(Cmp,p RH+1,q RH,r RH+1)s;t Trap(GT,u 3)v |
| 0E83 | i(40000000): MOV R0, R0, 0H |
| 0E84 | j .FIXUP D |
| 0E84 | j(8D000004): LDR SB, MT, MOD0 [ORG] |
| 0E85 | j(81D0002C): LDR R1, SB, 2CH [data] |
| 0E86 | j(41180001): ADD R1, R1, 1H |
| 0E87 | k(42000000): MOV R2, R0, 0H |
| 0E88 | l(83E00004): LDR R3, SP, 4H |
| 0E89 | l(83300004): LDR R3, R3, 4H |
| 0E8A | l(D15A6A4C): BLEQ MT [trap=4, pos=23146] |
| 0E8B | m(83300020): LDR R3, R3, 20H |
| 0E8C | m(43380003): ADD R3, R3, 3H |
| 0E8D | n(43320002): ASR R3, R3, 2H |
| 0E8E | o(F7FFF1B5): BL -3659 [0044H] |
| 0E8F | p(40000009): MOV R0, R0, 9H |
| 0E90 | q .FIXUP D |
| 0E90 | q(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0E91 | q(81D0002C): LDR R1, SB, 2CH [data] |
| 0E92 | q(41180001): ADD R1, R1, 1H |
| 0E93 | r(82D0002C): LDR R2, SB, 2CH |
| 0E94 | s(83D0002C): LDR R3, SB, 2CH |
| 0E95 | s(43380001): ADD R3, R3, 1H |
| 0E96 | t(F7FFF169): BL -3735 [0000H] |
| 0E97 | u(4000000E): MOV R0, R0, EH |
| 0E98 | v(41000003): MOV R1, R0, 3H |
| ENDw ; |
| 0E99 | w(F7FFF252): BL -3502 [00ECH] |
| fix(pc0,x pc + 5 -y pc0)z |
| 0E9A | x(80E00018): LDR R0, SP, 18H |
| 0E9B | y .FIXUP D |
| 0E9B | y(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 0E9C | y(81D00018): LDR R1, SB, 18H [data] |
| 0E9D | y(41180005): ADD R1, R1, 5H |
| 0E9E | z(82E00018): LDR R2, SP, 18H |
| 0E9F | z(01190002): SUB R1, R1, R2 |
| ENDa |
| 0EA0 | a(F7FFF27B): BL -3461 [011CH] |
| ELSIF xb.type.formc = ORB.Record THENd Put1a(Mov,e RH,f 0,g x.type.sizeh DIV 4)i |
| 0EA1 | b(E7000015): B 21 [0EB7H] |
| 0EA2 | c(80E00004): LDR R0, SP, 4H |
| 0EA3 | c(80000004): LDR R0, R0, 4H |
| 0EA4 | c(D15AF14C): BLEQ MT [trap=4, pos=23281] |
| 0EA5 | d(80000000): LDR R0, R0, 0H |
| 0EA6 | d(4009000D): SUB R0, R0, DH |
| 0EA7 | d(E900000B): BNE 11 [0EB3H] |
| 0EA8 | e(40000000): MOV R0, R0, 0H |
| 0EA9 | f .FIXUP D |
| 0EA9 | f(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0EAA | f(81D0002C): LDR R1, SB, 2CH [data] |
| 0EAB | g(42000000): MOV R2, R0, 0H |
| 0EAC | h(83E00004): LDR R3, SP, 4H |
| 0EAD | h(83300004): LDR R3, R3, 4H |
| 0EAE | h(D15B214C): BLEQ MT [trap=4, pos=23329] |
| 0EAF | i(83300020): LDR R3, R3, 20H |
| 0EB0 | i(43320002): ASR R3, R3, 2H |
| ELSEj ORSk.Mark("inadmissible assignment")l |
| 0EB1 | j(F7FFF192): BL -3694 [0044H] |
| 0EB2 | k(E7000004): B 4 [0EB7H] |
| 0EB3 | l .FIXUP D |
| 0EB3 | l(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0EB4 | l(40D88A10): ADD R0, SB, FFFF8A10H [data] |
| 0EB5 | l(41000018): MOV R1, R0, 18H |
| ENDm ; |
| 0EB6 | m .FIXUP P |
| 0EB6 | m(F7209068): BL MOD2 [ORS] PROC9 |
| Put2(Ldr,n RH+1,o y.r,p 0)q;r Put1(Add,s y.r,t y.r,u 4)v;w |
| 0EB7 | n(40000008): MOV R0, R0, 8H |
| 0EB8 | o .FIXUP D |
| 0EB8 | o(8D000005): LDR SB, MT, MOD0 [ORG] |
| 0EB9 | o(81D0002C): LDR R1, SB, 2CH [data] |
| 0EBA | o(41180001): ADD R1, R1, 1H |
| 0EBB | p(82E0000C): LDR R2, SP, CH |
| 0EBC | p(82200010): LDR R2, R2, 10H |
| 0EBD | q(43000000): MOV R3, R0, 0H |
| 0EBE | r(F7FFF1B2): BL -3662 [0071H] |
| 0EBF | s(40000008): MOV R0, R0, 8H |
| 0EC0 | t(81E0000C): LDR R1, SP, CH |
| 0EC1 | t(81100010): LDR R1, R1, 10H |
| 0EC2 | u(82E0000C): LDR R2, SP, CH |
| 0EC3 | u(82200010): LDR R2, R2, 10H |
| 0EC4 | v(43000004): MOV R3, R0, 4H |
| 0EC5 | w(F7FFF158): BL -3752 [001EH] |
| Put2(Str,x RH+1,y x.r,z 0)a;b Put1(Add,c x.r,d x.r,e 4)f;g |
| 0EC6 | x(4000000A): MOV R0, R0, AH |
| 0EC7 | y .FIXUP D |
| 0EC7 | y(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 0EC8 | y(81D0002C): LDR R1, SB, 2CH [data] |
| 0EC9 | y(41180001): ADD R1, R1, 1H |
| 0ECA | z(82E00004): LDR R2, SP, 4H |
| 0ECB | z(82200010): LDR R2, R2, 10H |
| 0ECC | a(43000000): MOV R3, R0, 0H |
| 0ECD | b(F7FFF1A3): BL -3677 [0071H] |
| 0ECE | c(40000008): MOV R0, R0, 8H |
| 0ECF | d(81E00004): LDR R1, SP, 4H |
| 0ED0 | d(81100010): LDR R1, R1, 10H |
| 0ED1 | e(82E00004): LDR R2, SP, 4H |
| 0ED2 | e(82200010): LDR R2, R2, 10H |
| 0ED3 | f(43000004): MOV R3, R0, 4H |
| 0ED4 | g(F7FFF149): BL -3767 [001EH] |
| Put1(Sub,h RH,i RH,j 1)k;l Put3(BC,m NE,n -6)o |
| 0ED5 | h(40000009): MOV R0, R0, 9H |
| 0ED6 | i .FIXUP D |
| 0ED6 | i(8D00000F): LDR SB, MT, MOD0 [ORG] |
| 0ED7 | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0ED8 | j(82D0002C): LDR R2, SB, 2CH |
| 0ED9 | k(43000001): MOV R3, R0, 1H |
| 0EDA | l(F7FFF143): BL -3773 [001EH] |
| 0EDB | m(40000002): MOV R0, R0, 2H |
| 0EDC | n(41000009): MOV R1, R0, 9H |
| 0EDD | o(5200FFFA): MOV R2, R0, FFFFFFFAH |
| ENDp ; |
| 0EDE | p(F7FFF1B2): BL -3662 [0091H] |
| RH := 0 |
| ENDq StoreStruct; |
| 0EDF | q(40000000): MOV R0, R0, 0H |
| 0EE0 | q .FIXUP D |
| 0EE0 | q(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0EE1 | q(A0D0002C): STR R0, SB, 2CH [data] |
| 0EE2 | q(8FE00000): LDR LNK, SP, 0H |
| 0EE3 | q(4EE8001C): ADD SP, SP, 1CH |
| 0EE4 | q(C700000F): B LNK |
| |
| PROCEDURE CopyString*(VAR x, y: Item); (* x := y *) |
| VAR len: LONGINT; |
| BEGINr loadAdr(x)s;t len := x.type.lenu;v |
| 0EE5 | r .PROC 34 |
| 0EE5 | r(4EE90018): SUB SP, SP, 18H |
| 0EE6 | r(AFE00000): STR LNK, SP, 0H |
| 0EE7 | r(A0E00004): STR R0, SP, 4H |
| 0EE8 | r(A1E00008): STR R1, SP, 8H |
| 0EE9 | r(A2E0000C): STR R2, SP, CH |
| 0EEA | r(A3E00010): STR R3, SP, 10H |
| 0EEB | s(80E00004): LDR R0, SP, 4H |
| 0EEC | s(81E00008): LDR R1, SP, 8H |
| 0EED | t(F7FFF3CE): BL -3122 [02BCH] |
| 0EEE | u(80E00004): LDR R0, SP, 4H |
| 0EEF | u(80000004): LDR R0, R0, 4H |
| 0EF0 | u(D15C9E4C): BLEQ MT [trap=4, pos=23710] |
| 0EF1 | v(80000010): LDR R0, R0, 10H |
| 0EF2 | v(A0E00014): STR R0, SP, 14H |
| IF len >= 0 THENw |
| 0EF3 | w(80E00014): LDR R0, SP, 14H |
| 0EF4 | w(40090000): SUB R0, R0, 0H |
| 0EF5 | w(E500000A): BLT 10 [0F00H] |
| IF len < y.b THENx ORS.Mark("string too long")y ENDz |
| 0EF6 | x(80E00014): LDR R0, SP, 14H |
| 0EF7 | x(81E0000C): LDR R1, SP, CH |
| 0EF8 | x(8110000C): LDR R1, R1, CH |
| 0EF9 | x(00090001): SUB R0, R0, R1 |
| 0EFA | x(ED000004): BGE 4 [0EFFH] |
| 0EFB | y .FIXUP D |
| 0EFB | y(8D00001B): LDR SB, MT, MOD0 [ORG] |
| 0EFC | y(40D88A28): ADD R0, SB, FFFF8A28H [data] |
| 0EFD | y(41000010): MOV R1, R0, 10H |
| 0EFE | z .FIXUP P |
| 0EFE | z(F7209048): BL MOD2 [ORS] PROC9 |
| ELSIF checka THENb Put2(Ldr,c RH,d SP,e x.a+4)f;g (*open array len, frame = 0*) |
| 0EFF | a(E7000015): B 21 [0F15H] |
| 0F00 | b .FIXUP D |
| 0F00 | b(8D000005): LDR SB, MT, MOD0 [ORG] |
| 0F01 | b(90D00044): LDR R0, SB, 44H [data] |
| 0F02 | b(E1000012): BEQ 18 [0F15H] |
| 0F03 | c(40000008): MOV R0, R0, 8H |
| 0F04 | d .FIXUP D |
| 0F04 | d(8D000004): LDR SB, MT, MOD0 [ORG] |
| 0F05 | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0F06 | e(4200000E): MOV R2, R0, EH |
| 0F07 | f(83E00004): LDR R3, SP, 4H |
| 0F08 | f(83300008): LDR R3, R3, 8H |
| 0F09 | f(43380004): ADD R3, R3, 4H |
| 0F0A | g(F7FFF166): BL -3738 [0071H] |
| Put1(Cmp,hRH,i RH,j y.b)k;l Trap(LT,m 3)n |
| 0F0B | h(40000009): MOV R0, R0, 9H |
| 0F0C | i .FIXUP D |
| 0F0C | i(8D000008): LDR SB, MT, MOD0 [ORG] |
| 0F0D | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0F0E | j(82D0002C): LDR R2, SB, 2CH |
| 0F0F | k(83E0000C): LDR R3, SP, CH |
| 0F10 | k(8330000C): LDR R3, R3, CH |
| 0F11 | l(F7FFF10C): BL -3828 [001EH] |
| 0F12 | m(40000005): MOV R0, R0, 5H |
| 0F13 | n(41000003): MOV R1, R0, 3H |
| ENDo ; |
| 0F14 | o(F7FFF1D7): BL -3625 [00ECH] |
| loadStringAdr(y)p;q |
| 0F15 | p(80E0000C): LDR R0, SP, CH |
| 0F16 | p(81E00010): LDR R1, SP, 10H |
| 0F17 | q(F7FFF45B): BL -2981 [0373H] |
| Put2(Ldr,r RH,s y.r,t 0)u;v Put1(Add,w y.r,x y.r,y 4)z;a |
| 0F18 | r(40000008): MOV R0, R0, 8H |
| 0F19 | s .FIXUP D |
| 0F19 | s(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 0F1A | s(81D0002C): LDR R1, SB, 2CH [data] |
| 0F1B | t(82E0000C): LDR R2, SP, CH |
| 0F1C | t(82200010): LDR R2, R2, 10H |
| 0F1D | u(43000000): MOV R3, R0, 0H |
| 0F1E | v(F7FFF152): BL -3758 [0071H] |
| 0F1F | w(40000008): MOV R0, R0, 8H |
| 0F20 | x(81E0000C): LDR R1, SP, CH |
| 0F21 | x(81100010): LDR R1, R1, 10H |
| 0F22 | y(82E0000C): LDR R2, SP, CH |
| 0F23 | y(82200010): LDR R2, R2, 10H |
| 0F24 | z(43000004): MOV R3, R0, 4H |
| 0F25 | a(F7FFF0F8): BL -3848 [001EH] |
| Put2(Str,b RH,c x.r,d 0)e;f Put1(Add,g x.r,h x.r,i 4)j;k |
| 0F26 | b(4000000A): MOV R0, R0, AH |
| 0F27 | c .FIXUP D |
| 0F27 | c(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0F28 | c(81D0002C): LDR R1, SB, 2CH [data] |
| 0F29 | d(82E00004): LDR R2, SP, 4H |
| 0F2A | d(82200010): LDR R2, R2, 10H |
| 0F2B | e(43000000): MOV R3, R0, 0H |
| 0F2C | f(F7FFF144): BL -3772 [0071H] |
| 0F2D | g(40000008): MOV R0, R0, 8H |
| 0F2E | h(81E00004): LDR R1, SP, 4H |
| 0F2F | h(81100010): LDR R1, R1, 10H |
| 0F30 | i(82E00004): LDR R2, SP, 4H |
| 0F31 | i(82200010): LDR R2, R2, 10H |
| 0F32 | j(43000004): MOV R3, R0, 4H |
| 0F33 | k(F7FFF0EA): BL -3862 [001EH] |
| Put1(Asr,l RH,m RH,n 24)o;p Put3(BC,q NE,r -6)s;t RH := 0 |
| 0F34 | l(40000002): MOV R0, R0, 2H |
| 0F35 | m .FIXUP D |
| 0F35 | m(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 0F36 | m(81D0002C): LDR R1, SB, 2CH [data] |
| 0F37 | n(82D0002C): LDR R2, SB, 2CH |
| 0F38 | o(43000018): MOV R3, R0, 18H |
| 0F39 | p(F7FFF0E4): BL -3868 [001EH] |
| 0F3A | q(40000002): MOV R0, R0, 2H |
| 0F3B | r(41000009): MOV R1, R0, 9H |
| 0F3C | s(5200FFFA): MOV R2, R0, FFFFFFFAH |
| 0F3D | t(F7FFF153): BL -3757 [0091H] |
| ENDu CopyString; |
| 0F3E | u(40000000): MOV R0, R0, 0H |
| 0F3F | u .FIXUP D |
| 0F3F | u(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0F40 | u(A0D0002C): STR R0, SB, 2CH [data] |
| 0F41 | u(8FE00000): LDR LNK, SP, 0H |
| 0F42 | u(4EE80018): ADD SP, SP, 18H |
| 0F43 | u(C700000F): B LNK |
| |
| (* Code generation for parameters *) |
| |
| PROCEDURE OpenArrayParam*(VAR x: Item); |
| BEGINv loadAdr(x)w;x |
| 0F44 | v .PROC 35 |
| 0F44 | v(4EE9000C): SUB SP, SP, CH |
| 0F45 | v(AFE00000): STR LNK, SP, 0H |
| 0F46 | v(A0E00004): STR R0, SP, 4H |
| 0F47 | v(A1E00008): STR R1, SP, 8H |
| 0F48 | w(80E00004): LDR R0, SP, 4H |
| 0F49 | w(81E00008): LDR R1, SP, 8H |
| 0F4A | x(F7FFF371): BL -3215 [02BCH] |
| IF x.type.leny >= 0 THENz Put1a(Mov,a RH,b 0,c x.type.lend)e ELSEf Put2g(Ldr,h RH,i SP,j x.a+4+kframe)l ENDm ; |
| 0F4B | y(80E00004): LDR R0, SP, 4H |
| 0F4C | y(80000004): LDR R0, R0, 4H |
| 0F4D | y(D15EAF4C): BLEQ MT [trap=4, pos=24239] |
| 0F4E | z(80000010): LDR R0, R0, 10H |
| 0F4F | z(40090000): SUB R0, R0, 0H |
| 0F50 | z(E500000A): BLT 10 [0F5BH] |
| 0F51 | a(40000000): MOV R0, R0, 0H |
| 0F52 | b .FIXUP D |
| 0F52 | b(8D000013): LDR SB, MT, MOD0 [ORG] |
| 0F53 | b(81D0002C): LDR R1, SB, 2CH [data] |
| 0F54 | c(42000000): MOV R2, R0, 0H |
| 0F55 | d(83E00004): LDR R3, SP, 4H |
| 0F56 | d(83300004): LDR R3, R3, 4H |
| 0F57 | d(D15ED64C): BLEQ MT [trap=4, pos=24278] |
| 0F58 | e(83300010): LDR R3, R3, 10H |
| 0F59 | f(F7FFF0EA): BL -3862 [0044H] |
| 0F5A | g(E700000A): B 10 [0F65H] |
| 0F5B | h(40000008): MOV R0, R0, 8H |
| 0F5C | i .FIXUP D |
| 0F5C | i(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0F5D | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0F5E | j(4200000E): MOV R2, R0, EH |
| 0F5F | k(83E00004): LDR R3, SP, 4H |
| 0F60 | k(83300008): LDR R3, R3, 8H |
| 0F61 | k(43380004): ADD R3, R3, 4H |
| 0F62 | l(84D00034): LDR R4, SB, 34H |
| 0F63 | l(03380004): ADD R3, R3, R4 |
| 0F64 | m(F7FFF10C): BL -3828 [0071H] |
| incR |
| ENDn OpenArrayParam; |
| 0F65 | n(F7FFF148): BL -3768 [00AEH] |
| 0F66 | n(8FE00000): LDR LNK, SP, 0H |
| 0F67 | n(4EE8000C): ADD SP, SP, CH |
| 0F68 | n(C700000F): B LNK |
| |
| PROCEDURE VarParam*(VAR x: Item; ftype: ORB.Type); |
| VAR xmd: INTEGER; |
| BEGINo xmd := x.mode;p loadAdr(x)q;r |
| 0F69 | o .PROC 36 |
| 0F69 | o(4EE90014): SUB SP, SP, 14H |
| 0F6A | o(AFE00000): STR LNK, SP, 0H |
| 0F6B | o(A0E00004): STR R0, SP, 4H |
| 0F6C | o(A1E00008): STR R1, SP, 8H |
| 0F6D | o(A2E0000C): STR R2, SP, CH |
| 0F6E | p(80E00004): LDR R0, SP, 4H |
| 0F6F | p(80000000): LDR R0, R0, 0H |
| 0F70 | p(A0E00010): STR R0, SP, 10H |
| 0F71 | q(80E00004): LDR R0, SP, 4H |
| 0F72 | q(81E00008): LDR R1, SP, 8H |
| 0F73 | r(F7FFF348): BL -3256 [02BCH] |
| IF (ftype.forms = ORB.Array)t & (uftype.lenv < 0)w THENx (*open array*) |
| 0F74 | s(80E0000C): LDR R0, SP, CH |
| 0F75 | s(D15FA24C): BLEQ MT [trap=4, pos=24482] |
| 0F76 | t(80000000): LDR R0, R0, 0H |
| 0F77 | t(4009000C): SUB R0, R0, CH |
| 0F78 | u(E9000021): BNE 33 [0F9AH] |
| 0F79 | v(80E0000C): LDR R0, SP, CH |
| 0F7A | v(D15FBC4C): BLEQ MT [trap=4, pos=24508] |
| 0F7B | w(80000010): LDR R0, R0, 10H |
| 0F7C | w(40090000): SUB R0, R0, 0H |
| 0F7D | x(ED00001C): BGE 28 [0F9AH] |
| IF x.type.leny >= 0 THENz Put1a(Mov,a RH,b 0,c x.type.lend)e ELSEf Put2g(Ldr,h RH,i SP,j x.a+4+kframe)l ENDm ; |
| 0F7E | y(80E00004): LDR R0, SP, 4H |
| 0F7F | y(80000004): LDR R0, R0, 4H |
| 0F80 | y(D15FE94C): BLEQ MT [trap=4, pos=24553] |
| 0F81 | z(80000010): LDR R0, R0, 10H |
| 0F82 | z(40090000): SUB R0, R0, 0H |
| 0F83 | z(E500000A): BLT 10 [0F8EH] |
| 0F84 | a(40000000): MOV R0, R0, 0H |
| 0F85 | b .FIXUP D |
| 0F85 | b(8D000029): LDR SB, MT, MOD0 [ORG] |
| 0F86 | b(81D0002C): LDR R1, SB, 2CH [data] |
| 0F87 | c(42000000): MOV R2, R0, 0H |
| 0F88 | d(83E00004): LDR R3, SP, 4H |
| 0F89 | d(83300004): LDR R3, R3, 4H |
| 0F8A | d(D160104C): BLEQ MT [trap=4, pos=24592] |
| 0F8B | e(83300010): LDR R3, R3, 10H |
| 0F8C | f(F7FFF0B7): BL -3913 [0044H] |
| 0F8D | g(E700000A): B 10 [0F98H] |
| 0F8E | h(40000008): MOV R0, R0, 8H |
| 0F8F | i .FIXUP D |
| 0F8F | i(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 0F90 | i(81D0002C): LDR R1, SB, 2CH [data] |
| 0F91 | j(4200000E): MOV R2, R0, EH |
| 0F92 | k(83E00004): LDR R3, SP, 4H |
| 0F93 | k(83300008): LDR R3, R3, 8H |
| 0F94 | k(43380004): ADD R3, R3, 4H |
| 0F95 | l(84D00034): LDR R4, SB, 34H |
| 0F96 | l(03380004): ADD R3, R3, R4 |
| 0F97 | m(F7FFF0D9): BL -3879 [0071H] |
| incR |
| ELSIFn ftypeo.formp = ORB.Record THENq |
| 0F98 | n(F7FFF115): BL -3819 [00AEH] |
| 0F99 | o(E7000017): B 23 [0FB1H] |
| 0F9A | p(80E0000C): LDR R0, SP, CH |
| 0F9B | p(D1605C4C): BLEQ MT [trap=4, pos=24668] |
| 0F9C | q(80000000): LDR R0, R0, 0H |
| 0F9D | q(4009000D): SUB R0, R0, DH |
| 0F9E | q(E9000012): BNE 18 [0FB1H] |
| IF xmd = ORB.Par THENr Put2(Ldr,s RH,t SP,u x.a+4+vframe)w;x incR ELSEy loadTypTagAdrz(x.type)a ENDb |
| 0F9F | r(80E00010): LDR R0, SP, 10H |
| 0FA0 | r(40090003): SUB R0, R0, 3H |
| 0FA1 | r(E900000C): BNE 12 [0FAEH] |
| 0FA2 | s(40000008): MOV R0, R0, 8H |
| 0FA3 | t .FIXUP D |
| 0FA3 | t(8D000014): LDR SB, MT, MOD0 [ORG] |
| 0FA4 | t(81D0002C): LDR R1, SB, 2CH [data] |
| 0FA5 | u(4200000E): MOV R2, R0, EH |
| 0FA6 | v(83E00004): LDR R3, SP, 4H |
| 0FA7 | v(83300008): LDR R3, R3, 8H |
| 0FA8 | v(43380004): ADD R3, R3, 4H |
| 0FA9 | w(84D00034): LDR R4, SB, 34H |
| 0FAA | w(03380004): ADD R3, R3, R4 |
| 0FAB | x(F7FFF0C5): BL -3899 [0071H] |
| 0FAC | y(F7FFF101): BL -3839 [00AEH] |
| 0FAD | z(E7000003): B 3 [0FB1H] |
| 0FAE | a(80E00004): LDR R0, SP, 4H |
| 0FAF | a(80000004): LDR R0, R0, 4H |
| 0FB0 | b(F7FFF3AC): BL -3156 [035DH] |
| END |
| ENDc VarParam; |
| 0FB1 | c(8FE00000): LDR LNK, SP, 0H |
| 0FB2 | c(4EE80014): ADD SP, SP, 14H |
| 0FB3 | c(C700000F): B LNK |
| |
| PROCEDURE ValueParam*(VAR x: Item); |
| BEGINd load(x)e |
| 0FB4 | d .PROC 37 |
| 0FB4 | d(4EE9000C): SUB SP, SP, CH |
| 0FB5 | d(AFE00000): STR LNK, SP, 0H |
| 0FB6 | d(A0E00004): STR R0, SP, 4H |
| 0FB7 | d(A1E00008): STR R1, SP, 8H |
| 0FB8 | e(80E00004): LDR R0, SP, 4H |
| 0FB9 | e(81E00008): LDR R1, SP, 8H |
| ENDf ValueParam; |
| 0FBA | f(F7FFF218): BL -3560 [01D3H] |
| 0FBB | f(8FE00000): LDR LNK, SP, 0H |
| 0FBC | f(4EE8000C): ADD SP, SP, CH |
| 0FBD | f(C700000F): B LNK |
| |
| PROCEDURE StringParam*(VAR x: Item); |
| BEGINg loadStringAdr(x)h;i Put1(Mov,j RH,k 0,l x.b)m;n incR (*len*) |
| 0FBE | g .PROC 38 |
| 0FBE | g(4EE9000C): SUB SP, SP, CH |
| 0FBF | g(AFE00000): STR LNK, SP, 0H |
| 0FC0 | g(A0E00004): STR R0, SP, 4H |
| 0FC1 | g(A1E00008): STR R1, SP, 8H |
| 0FC2 | h(80E00004): LDR R0, SP, 4H |
| 0FC3 | h(81E00008): LDR R1, SP, 8H |
| 0FC4 | i(F7FFF3AE): BL -3154 [0373H] |
| 0FC5 | j(40000000): MOV R0, R0, 0H |
| 0FC6 | k .FIXUP D |
| 0FC6 | k(8D000023): LDR SB, MT, MOD0 [ORG] |
| 0FC7 | k(81D0002C): LDR R1, SB, 2CH [data] |
| 0FC8 | l(42000000): MOV R2, R0, 0H |
| 0FC9 | m(83E00004): LDR R3, SP, 4H |
| 0FCA | m(8330000C): LDR R3, R3, CH |
| 0FCB | n(F7FFF052): BL -4014 [001EH] |
| ENDo StringParam; |
| 0FCC | o(F7FFF0E1): BL -3871 [00AEH] |
| 0FCD | o(8FE00000): LDR LNK, SP, 0H |
| 0FCE | o(4EE8000C): ADD SP, SP, CH |
| 0FCF | o(C700000F): B LNK |
| |
| (*For Statements*) |
| |
| PROCEDURE For0*(VAR x, y: Item); |
| BEGINp load(y)q |
| 0FD0 | p .PROC 39 |
| 0FD0 | p(4EE90014): SUB SP, SP, 14H |
| 0FD1 | p(AFE00000): STR LNK, SP, 0H |
| 0FD2 | p(A0E00004): STR R0, SP, 4H |
| 0FD3 | p(A1E00008): STR R1, SP, 8H |
| 0FD4 | p(A2E0000C): STR R2, SP, CH |
| 0FD5 | p(A3E00010): STR R3, SP, 10H |
| 0FD6 | q(80E0000C): LDR R0, SP, CH |
| 0FD7 | q(81E00010): LDR R1, SP, 10H |
| ENDr For0; |
| 0FD8 | r(F7FFF1FA): BL -3590 [01D3H] |
| 0FD9 | r(8FE00000): LDR LNK, SP, 0H |
| 0FDA | r(4EE80014): ADD SP, SP, 14H |
| 0FDB | r(C700000F): B LNK |
| |
| PROCEDURE For1*(VAR x, y, z, w: Item; VAR L: LONGINT); |
| BEGINs |
| 0FDC | s .PROC 40 |
| 0FDC | s(4EE90028): SUB SP, SP, 28H |
| 0FDD | s(AFE00000): STR LNK, SP, 0H |
| 0FDE | s(A0E00004): STR R0, SP, 4H |
| 0FDF | s(A1E00008): STR R1, SP, 8H |
| 0FE0 | s(A2E0000C): STR R2, SP, CH |
| 0FE1 | s(A3E00010): STR R3, SP, 10H |
| 0FE2 | s(A4E00014): STR R4, SP, 14H |
| 0FE3 | s(A5E00018): STR R5, SP, 18H |
| 0FE4 | s(A6E0001C): STR R6, SP, 1CH |
| 0FE5 | s(A7E00020): STR R7, SP, 20H |
| 0FE6 | s(A8E00024): STR R8, SP, 24H |
| IF z.mode = ORB.Const THENt Put1a(Cmp,u RH,v y.r,w z.a)x |
| 0FE7 | t(80E00014): LDR R0, SP, 14H |
| 0FE8 | t(80000000): LDR R0, R0, 0H |
| 0FE9 | t(40090001): SUB R0, R0, 1H |
| 0FEA | t(E9000009): BNE 9 [0FF4H] |
| 0FEB | u(40000009): MOV R0, R0, 9H |
| 0FEC | v .FIXUP D |
| 0FEC | v(8D000026): LDR SB, MT, MOD0 [ORG] |
| 0FED | v(81D0002C): LDR R1, SB, 2CH [data] |
| 0FEE | w(82E0000C): LDR R2, SP, CH |
| 0FEF | w(82200010): LDR R2, R2, 10H |
| 0FF0 | x(83E00014): LDR R3, SP, 14H |
| 0FF1 | x(83300008): LDR R3, R3, 8H |
| ELSEy loadz(z)a;b Put0(Cmp,c RH-1,d y.r,e z.r)f;g DEC(RH) |
| 0FF2 | y(F7FFF051): BL -4015 [0044H] |
| 0FF3 | z(E7000011): B 17 [1005H] |
| 0FF4 | a(80E00014): LDR R0, SP, 14H |
| 0FF5 | a(81E00018): LDR R1, SP, 18H |
| 0FF6 | b(F7FFF1DC): BL -3620 [01D3H] |
| 0FF7 | c(40000009): MOV R0, R0, 9H |
| 0FF8 | d .FIXUP D |
| 0FF8 | d(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 0FF9 | d(81D0002C): LDR R1, SB, 2CH [data] |
| 0FFA | d(41190001): SUB R1, R1, 1H |
| 0FFB | e(82E0000C): LDR R2, SP, CH |
| 0FFC | e(82200010): LDR R2, R2, 10H |
| 0FFD | f(83E00014): LDR R3, SP, 14H |
| 0FFE | f(83300010): LDR R3, R3, 10H |
| 0FFF | g(F7FFF000): BL -4096 [0000H] |
| ENDh ; |
| 1000 | h .FIXUP D |
| 1000 | h(8D000008): LDR SB, MT, MOD0 [ORG] |
| 1001 | h(40D8002C): ADD R0, SB, 2CH [data] |
| 1002 | h(81000000): LDR R1, R0, 0H |
| 1003 | h(41190001): SUB R1, R1, 1H |
| 1004 | h(A1000000): STR R1, R0, 0H |
| L := pc;i |
| 1005 | i .FIXUP D |
| 1005 | i(8D000005): LDR SB, MT, MOD0 [ORG] |
| 1006 | i(80D00018): LDR R0, SB, 18H [data] |
| 1007 | i(81E00024): LDR R1, SP, 24H |
| 1008 | i(A0100000): STR R0, R1, 0H |
| IF w.a > 0 THENj Put3(BC,k GT,l 0)m |
| 1009 | j(80E0001C): LDR R0, SP, 1CH |
| 100A | j(80000008): LDR R0, R0, 8H |
| 100B | j(40090000): SUB R0, R0, 0H |
| 100C | j(E6000005): BLE 5 [1012H] |
| 100D | k(40000002): MOV R0, R0, 2H |
| 100E | l(4100000E): MOV R1, R0, EH |
| 100F | m(42000000): MOV R2, R0, 0H |
| ELSIFn wo.a < 0 THENp Put3(BC,q LT,r 0)s |
| 1010 | n(F7FFF080): BL -3968 [0091H] |
| 1011 | o(E7000011): B 17 [1023H] |
| 1012 | p(80E0001C): LDR R0, SP, 1CH |
| 1013 | p(80000008): LDR R0, R0, 8H |
| 1014 | p(40090000): SUB R0, R0, 0H |
| 1015 | p(ED000005): BGE 5 [101BH] |
| 1016 | q(40000002): MOV R0, R0, 2H |
| 1017 | r(41000005): MOV R1, R0, 5H |
| 1018 | s(42000000): MOV R2, R0, 0H |
| ELSEt ORSu.Mark("zero increment")v;w Put3(BC,x MI,y 0)z |
| 1019 | t(F7FFF077): BL -3977 [0091H] |
| 101A | u(E7000008): B 8 [1023H] |
| 101B | v .FIXUP D |
| 101B | v(8D000016): LDR SB, MT, MOD0 [ORG] |
| 101C | v(40D88A38): ADD R0, SB, FFFF8A38H [data] |
| 101D | v(4100000F): MOV R1, R0, FH |
| 101E | w .FIXUP P |
| 101E | w(F7209120): BL MOD2 [ORS] PROC9 |
| 101F | x(40000002): MOV R0, R0, 2H |
| 1020 | y(41000000): MOV R1, R0, 0H |
| 1021 | z(42000000): MOV R2, R0, 0H |
| ENDa ; |
| 1022 | a(F7FFF06E): BL -3986 [0091H] |
| Store(x,b y)c |
| 1023 | b(80E00004): LDR R0, SP, 4H |
| 1024 | b(81E00008): LDR R1, SP, 8H |
| 1025 | c(82E0000C): LDR R2, SP, CH |
| 1026 | c(83E00010): LDR R3, SP, 10H |
| ENDd For1; |
| 1027 | d(F7FFFD84): BL -636 [0DACH] |
| 1028 | d(8FE00000): LDR LNK, SP, 0H |
| 1029 | d(4EE80028): ADD SP, SP, 28H |
| 102A | d(C700000F): B LNK |
| |
| PROCEDURE For2*(VAR x, y, w: Item); |
| BEGINe load(x)f;g DEC(RH);h Put1a(Add,i x.r,j x.r,k w.a)l |
| 102B | e .PROC 41 |
| 102B | e(4EE9001C): SUB SP, SP, 1CH |
| 102C | e(AFE00000): STR LNK, SP, 0H |
| 102D | e(A0E00004): STR R0, SP, 4H |
| 102E | e(A1E00008): STR R1, SP, 8H |
| 102F | e(A2E0000C): STR R2, SP, CH |
| 1030 | e(A3E00010): STR R3, SP, 10H |
| 1031 | e(A4E00014): STR R4, SP, 14H |
| 1032 | e(A5E00018): STR R5, SP, 18H |
| 1033 | f(80E00004): LDR R0, SP, 4H |
| 1034 | f(81E00008): LDR R1, SP, 8H |
| 1035 | g(F7FFF19D): BL -3683 [01D3H] |
| 1036 | h .FIXUP D |
| 1036 | h(8D00001B): LDR SB, MT, MOD0 [ORG] |
| 1037 | h(40D8002C): ADD R0, SB, 2CH [data] |
| 1038 | h(81000000): LDR R1, R0, 0H |
| 1039 | h(41190001): SUB R1, R1, 1H |
| 103A | h(A1000000): STR R1, R0, 0H |
| 103B | i(40000008): MOV R0, R0, 8H |
| 103C | j(81E00004): LDR R1, SP, 4H |
| 103D | j(81100010): LDR R1, R1, 10H |
| 103E | k(82E00004): LDR R2, SP, 4H |
| 103F | k(82200010): LDR R2, R2, 10H |
| 1040 | l(83E00014): LDR R3, SP, 14H |
| 1041 | l(83300008): LDR R3, R3, 8H |
| ENDm For2; |
| 1042 | m(F7FFF001): BL -4095 [0044H] |
| 1043 | m(8FE00000): LDR LNK, SP, 0H |
| 1044 | m(4EE8001C): ADD SP, SP, 1CH |
| 1045 | m(C700000F): B LNK |
| |
| (* Branches, procedure calls, procedure prolog and epilog *) |
| |
| PROCEDURE Here*(): LONGINT; |
| BEGINn invalSB;o RETURN pc |
| 1046 | n .PROC 42 |
| 1046 | n(4EE90004): SUB SP, SP, 4H |
| 1047 | n(AFE00000): STR LNK, SP, 0H |
| 1048 | o(F7FFF0CB): BL -3893 [0114H] |
| ENDp Here; |
| 1049 | p .FIXUP D |
| 1049 | p(8D000013): LDR SB, MT, MOD0 [ORG] |
| 104A | p(80D00018): LDR R0, SB, 18H [data] |
| 104B | p(8FE00000): LDR LNK, SP, 0H |
| 104C | p(4EE80004): ADD SP, SP, 4H |
| 104D | p(C700000F): B LNK |
| |
| PROCEDURE FJump*(VAR L: LONGINT); |
| BEGINq Put3(BC,r 7,s L)t;u L := pc-1 |
| 104E | q .PROC 43 |
| 104E | q(4EE90008): SUB SP, SP, 8H |
| 104F | q(AFE00000): STR LNK, SP, 0H |
| 1050 | q(A0E00004): STR R0, SP, 4H |
| 1051 | r(40000002): MOV R0, R0, 2H |
| 1052 | s(41000007): MOV R1, R0, 7H |
| 1053 | t(82E00004): LDR R2, SP, 4H |
| 1054 | t(82200000): LDR R2, R2, 0H |
| 1055 | u(F7FFF03B): BL -4037 [0091H] |
| ENDv FJump; |
| 1056 | v .FIXUP D |
| 1056 | v(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 1057 | v(80D00018): LDR R0, SB, 18H [data] |
| 1058 | v(40090001): SUB R0, R0, 1H |
| 1059 | v(81E00004): LDR R1, SP, 4H |
| 105A | v(A0100000): STR R0, R1, 0H |
| 105B | v(8FE00000): LDR LNK, SP, 0H |
| 105C | v(4EE80008): ADD SP, SP, 8H |
| 105D | v(C700000F): B LNK |
| |
| PROCEDURE CFJump*(VAR x: Item); |
| BEGINw |
| 105E | w .PROC 44 |
| 105E | w(4EE9000C): SUB SP, SP, CH |
| 105F | w(AFE00000): STR LNK, SP, 0H |
| 1060 | w(A0E00004): STR R0, SP, 4H |
| 1061 | w(A1E00008): STR R1, SP, 8H |
| IF x.mode # Cond THENx loadCond(x)y ENDz ; |
| 1062 | x(80E00004): LDR R0, SP, 4H |
| 1063 | x(80000000): LDR R0, R0, 0H |
| 1064 | x(4009000C): SUB R0, R0, CH |
| 1065 | x(E1000003): BEQ 3 [1069H] |
| 1066 | y(80E00004): LDR R0, SP, 4H |
| 1067 | y(81E00008): LDR R1, SP, 8H |
| 1068 | z(F7FFF2B0): BL -3408 [0319H] |
| Put3(BC,a negated(xb.r)c,d x.a)e;f FixLink(x.b)g;h x.a := pc-1 |
| 1069 | a(40000002): MOV R0, R0, 2H |
| 106A | b(4EE90004): SUB SP, SP, 4H |
| 106B | b(A0E00000): STR R0, SP, 0H |
| 106C | c(80E00008): LDR R0, SP, 8H |
| 106D | c(80000010): LDR R0, R0, 10H |
| 106E | d(F7FFF094): BL -3948 [0103H] |
| 106F | d(01000000): MOV R1, R0, R0 |
| 1070 | d(80E00000): LDR R0, SP, 0H |
| 1071 | d(4EE80004): ADD SP, SP, 4H |
| 1072 | e(82E00004): LDR R2, SP, 4H |
| 1073 | e(82200008): LDR R2, R2, 8H |
| 1074 | f(F7FFF01C): BL -4068 [0091H] |
| 1075 | g(80E00004): LDR R0, SP, 4H |
| 1076 | g(8000000C): LDR R0, R0, CH |
| 1077 | h(F7FFF0BE): BL -3906 [0136H] |
| ENDi CFJump; |
| 1078 | i .FIXUP D |
| 1078 | i(8D000022): LDR SB, MT, MOD0 [ORG] |
| 1079 | i(80D00018): LDR R0, SB, 18H [data] |
| 107A | i(40090001): SUB R0, R0, 1H |
| 107B | i(81E00004): LDR R1, SP, 4H |
| 107C | i(A0100008): STR R0, R1, 8H |
| 107D | i(8FE00000): LDR LNK, SP, 0H |
| 107E | i(4EE8000C): ADD SP, SP, CH |
| 107F | i(C700000F): B LNK |
| |
| PROCEDURE BJump*(L: LONGINT); |
| BEGINj Put3(BC,k 7,l L-pc-m1)n |
| 1080 | j .PROC 45 |
| 1080 | j(4EE90008): SUB SP, SP, 8H |
| 1081 | j(AFE00000): STR LNK, SP, 0H |
| 1082 | j(A0E00004): STR R0, SP, 4H |
| 1083 | k(40000002): MOV R0, R0, 2H |
| 1084 | l(41000007): MOV R1, R0, 7H |
| 1085 | m(82E00004): LDR R2, SP, 4H |
| 1086 | m .FIXUP D |
| 1086 | m(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 1087 | m(83D00018): LDR R3, SB, 18H [data] |
| 1088 | m(02290003): SUB R2, R2, R3 |
| 1089 | n(42290001): SUB R2, R2, 1H |
| ENDo BJump; |
| 108A | o(F7FFF006): BL -4090 [0091H] |
| 108B | o(8FE00000): LDR LNK, SP, 0H |
| 108C | o(4EE80008): ADD SP, SP, 8H |
| 108D | o(C700000F): B LNK |
| |
| PROCEDURE CBJump*(VAR x: Item; L: LONGINT); |
| BEGINp |
| 108E | p .PROC 46 |
| 108E | p(4EE90010): SUB SP, SP, 10H |
| 108F | p(AFE00000): STR LNK, SP, 0H |
| 1090 | p(A0E00004): STR R0, SP, 4H |
| 1091 | p(A1E00008): STR R1, SP, 8H |
| 1092 | p(A2E0000C): STR R2, SP, CH |
| IF x.mode # Cond THENq loadCond(x)r ENDs ; |
| 1093 | q(80E00004): LDR R0, SP, 4H |
| 1094 | q(80000000): LDR R0, R0, 0H |
| 1095 | q(4009000C): SUB R0, R0, CH |
| 1096 | q(E1000003): BEQ 3 [109AH] |
| 1097 | r(80E00004): LDR R0, SP, 4H |
| 1098 | r(81E00008): LDR R1, SP, 8H |
| 1099 | s(F7FFF27F): BL -3457 [0319H] |
| Put3(BC,t negated(xu.r)v,w L-pc-x1)y;z FixLink(x.b)a;b FixLinkWith(x.a,c L)d |
| 109A | t(40000002): MOV R0, R0, 2H |
| 109B | u(4EE90004): SUB SP, SP, 4H |
| 109C | u(A0E00000): STR R0, SP, 0H |
| 109D | v(80E00008): LDR R0, SP, 8H |
| 109E | v(80000010): LDR R0, R0, 10H |
| 109F | w(F7FFF063): BL -3997 [0103H] |
| 10A0 | w(01000000): MOV R1, R0, R0 |
| 10A1 | w(80E00000): LDR R0, SP, 0H |
| 10A2 | w(4EE80004): ADD SP, SP, 4H |
| 10A3 | x(82E0000C): LDR R2, SP, CH |
| 10A4 | x .FIXUP D |
| 10A4 | x(8D00001E): LDR SB, MT, MOD0 [ORG] |
| 10A5 | x(83D00018): LDR R3, SB, 18H [data] |
| 10A6 | x(02290003): SUB R2, R2, R3 |
| 10A7 | y(42290001): SUB R2, R2, 1H |
| 10A8 | z(F7FFEFE8): BL -4120 [0091H] |
| 10A9 | a(80E00004): LDR R0, SP, 4H |
| 10AA | a(8000000C): LDR R0, R0, CH |
| 10AB | b(F7FFF08A): BL -3958 [0136H] |
| 10AC | c(80E00004): LDR R0, SP, 4H |
| 10AD | c(80000008): LDR R0, R0, 8H |
| 10AE | d(81E0000C): LDR R1, SP, CH |
| ENDe CBJump; |
| 10AF | e(F7FFF0A2): BL -3934 [0152H] |
| 10B0 | e(8FE00000): LDR LNK, SP, 0H |
| 10B1 | e(4EE80010): ADD SP, SP, 10H |
| 10B2 | e(C700000F): B LNK |
| |
| PROCEDURE Fixup*(VAR x: Item); |
| BEGINf FixLink(x.a)g |
| 10B3 | f .PROC 47 |
| 10B3 | f(4EE9000C): SUB SP, SP, CH |
| 10B4 | f(AFE00000): STR LNK, SP, 0H |
| 10B5 | f(A0E00004): STR R0, SP, 4H |
| 10B6 | f(A1E00008): STR R1, SP, 8H |
| 10B7 | g(80E00004): LDR R0, SP, 4H |
| 10B8 | g(80000008): LDR R0, R0, 8H |
| ENDh Fixup; |
| 10B9 | h(F7FFF07C): BL -3972 [0136H] |
| 10BA | h(8FE00000): LDR LNK, SP, 0H |
| 10BB | h(4EE8000C): ADD SP, SP, CH |
| 10BC | h(C700000F): B LNK |
| |
| PROCEDURE SaveRegs(r: LONGINT); (* R[0 .. r-1]*) |
| VAR r0: LONGINT; |
| BEGINi (*r > 0*) r0 := 0;j |
| 10BD | i(4EE9000C): SUB SP, SP, CH |
| 10BE | i(AFE00000): STR LNK, SP, 0H |
| 10BF | i(A0E00004): STR R0, SP, 4H |
| 10C0 | j(40000000): MOV R0, R0, 0H |
| 10C1 | j(A0E00008): STR R0, SP, 8H |
| Put1(Sub,k SP,l SP,m r*4)n;o INC(frame, 4*r)p;q |
| 10C2 | k(40000009): MOV R0, R0, 9H |
| 10C3 | l(4100000E): MOV R1, R0, EH |
| 10C4 | m(4200000E): MOV R2, R0, EH |
| 10C5 | n(83E00004): LDR R3, SP, 4H |
| 10C6 | n(43310002): LSL R3, R3, 2H |
| 10C7 | o(F7FFEF56): BL -4266 [001EH] |
| 10C8 | p(80E00004): LDR R0, SP, 4H |
| 10C9 | p(40010002): LSL R0, R0, 2H |
| 10CA | q .FIXUP D |
| 10CA | q(8D000026): LDR SB, MT, MOD0 [ORG] |
| 10CB | q(41D80034): ADD R1, SB, 34H [data] |
| 10CC | q(82100000): LDR R2, R1, 0H |
| 10CD | q(02280000): ADD R2, R2, R0 |
| 10CE | q(A2100000): STR R2, R1, 0H |
| REPEAT Put2(Str,r r0,s SP,t (r-r0-u1)v*4)w;x INC(r0) UNTILy r0 = r |
| 10CF | r(4000000A): MOV R0, R0, AH |
| 10D0 | s(81E00008): LDR R1, SP, 8H |
| 10D1 | t(4200000E): MOV R2, R0, EH |
| 10D2 | u(83E00004): LDR R3, SP, 4H |
| 10D3 | u(84E00008): LDR R4, SP, 8H |
| 10D4 | u(03390004): SUB R3, R3, R4 |
| 10D5 | v(43390001): SUB R3, R3, 1H |
| 10D6 | w(43310002): LSL R3, R3, 2H |
| 10D7 | x(F7FFEF99): BL -4199 [0071H] |
| 10D8 | y(80E00008): LDR R0, SP, 8H |
| 10D9 | y(40080001): ADD R0, R0, 1H |
| 10DA | y(A0E00008): STR R0, SP, 8H |
| ENDz SaveRegs; |
| 10DB | z(80E00008): LDR R0, SP, 8H |
| 10DC | z(81E00004): LDR R1, SP, 4H |
| 10DD | z(00090001): SUB R0, R0, R1 |
| 10DE | z(E9FFFFF0): BNE -16 [10CFH] |
| 10DF | z(8FE00000): LDR LNK, SP, 0H |
| 10E0 | z(4EE8000C): ADD SP, SP, CH |
| 10E1 | z(C700000F): B LNK |
| |
| PROCEDURE RestoreRegs(r: LONGINT); (*R[0 .. r-1]*) |
| VAR r0: LONGINT; |
| BEGINa (*r > 0*) r0 := r;b |
| 10E2 | a(4EE9000C): SUB SP, SP, CH |
| 10E3 | a(AFE00000): STR LNK, SP, 0H |
| 10E4 | a(A0E00004): STR R0, SP, 4H |
| 10E5 | b(80E00004): LDR R0, SP, 4H |
| 10E6 | b(A0E00008): STR R0, SP, 8H |
| REPEAT DEC(r0);c Put2(Ldr,d r0,e SP,f (r-r0-g1)h*4)i UNTILj r0 = 0;k |
| 10E7 | c(80E00008): LDR R0, SP, 8H |
| 10E8 | c(40090001): SUB R0, R0, 1H |
| 10E9 | c(A0E00008): STR R0, SP, 8H |
| 10EA | d(40000008): MOV R0, R0, 8H |
| 10EB | e(81E00008): LDR R1, SP, 8H |
| 10EC | f(4200000E): MOV R2, R0, EH |
| 10ED | g(83E00004): LDR R3, SP, 4H |
| 10EE | g(84E00008): LDR R4, SP, 8H |
| 10EF | g(03390004): SUB R3, R3, R4 |
| 10F0 | h(43390001): SUB R3, R3, 1H |
| 10F1 | i(43310002): LSL R3, R3, 2H |
| 10F2 | j(F7FFEF7E): BL -4226 [0071H] |
| 10F3 | k(80E00008): LDR R0, SP, 8H |
| 10F4 | k(E9FFFFF2): BNE -14 [10E7H] |
| Put1(Add,l SP,m SP,n r*4)o;p DEC(frame, 4*r)q |
| 10F5 | l(40000008): MOV R0, R0, 8H |
| 10F6 | m(4100000E): MOV R1, R0, EH |
| 10F7 | n(4200000E): MOV R2, R0, EH |
| 10F8 | o(83E00004): LDR R3, SP, 4H |
| 10F9 | o(43310002): LSL R3, R3, 2H |
| 10FA | p(F7FFEF23): BL -4317 [001EH] |
| 10FB | q(80E00004): LDR R0, SP, 4H |
| 10FC | q(40010002): LSL R0, R0, 2H |
| ENDr RestoreRegs; |
| 10FD | r .FIXUP D |
| 10FD | r(8D000033): LDR SB, MT, MOD0 [ORG] |
| 10FE | r(41D80034): ADD R1, SB, 34H [data] |
| 10FF | r(82100000): LDR R2, R1, 0H |
| 1100 | r(02290000): SUB R2, R2, R0 |
| 1101 | r(A2100000): STR R2, R1, 0H |
| 1102 | r(8FE00000): LDR LNK, SP, 0H |
| 1103 | r(4EE8000C): ADD SP, SP, CH |
| 1104 | r(C700000F): B LNK |
| |
| PROCEDURE PrepCall*(VAR x: Item; VAR r: LONGINT); |
| BEGINs (*x.type.form = ORB.Proc*) |
| 1105 | s .PROC 48 |
| 1105 | s(4EE90010): SUB SP, SP, 10H |
| 1106 | s(AFE00000): STR LNK, SP, 0H |
| 1107 | s(A0E00004): STR R0, SP, 4H |
| 1108 | s(A1E00008): STR R1, SP, 8H |
| 1109 | s(A2E0000C): STR R2, SP, CH |
| IF x.mode > ORB.Par THENt load(x)u ENDv ; |
| 110A | t(80E00004): LDR R0, SP, 4H |
| 110B | t(80000000): LDR R0, R0, 0H |
| 110C | t(40090003): SUB R0, R0, 3H |
| 110D | t(E6000003): BLE 3 [1111H] |
| 110E | u(80E00004): LDR R0, SP, 4H |
| 110F | u(81E00008): LDR R1, SP, 8H |
| 1110 | v(F7FFF0C2): BL -3902 [01D3H] |
| r := RH;w |
| 1111 | w .FIXUP D |
| 1111 | w(8D000014): LDR SB, MT, MOD0 [ORG] |
| 1112 | w(80D0002C): LDR R0, SB, 2CH [data] |
| 1113 | w(81E0000C): LDR R1, SP, CH |
| 1114 | w(A0100000): STR R0, R1, 0H |
| IF RH > 0 THENx SaveRegs(RH)y;z RH := 0 ENDa |
| 1115 | x(80D0002C): LDR R0, SB, 2CH |
| 1116 | x(40090000): SUB R0, R0, 0H |
| 1117 | x(E6000006): BLE 6 [111EH] |
| 1118 | y .FIXUP D |
| 1118 | y(8D000007): LDR SB, MT, MOD0 [ORG] |
| 1119 | y(80D0002C): LDR R0, SB, 2CH [data] |
| 111A | z(F7FFFFA2): BL -94 [10BDH] |
| 111B | a(40000000): MOV R0, R0, 0H |
| 111C | a .FIXUP D |
| 111C | a(8D000004): LDR SB, MT, MOD0 [ORG] |
| 111D | a(A0D0002C): STR R0, SB, 2CH [data] |
| ENDb PrepCall; |
| 111E | b(8FE00000): LDR LNK, SP, 0H |
| 111F | b(4EE80010): ADD SP, SP, 10H |
| 1120 | b(C700000F): B LNK |
| |
| PROCEDURE Call*(VAR x: Item; r: LONGINT); |
| BEGINc (*x.type.form = ORB.Proc*) |
| 1121 | c .PROC 49 |
| 1121 | c(4EE90010): SUB SP, SP, 10H |
| 1122 | c(AFE00000): STR LNK, SP, 0H |
| 1123 | c(A0E00004): STR R0, SP, 4H |
| 1124 | c(A1E00008): STR R1, SP, 8H |
| 1125 | c(A2E0000C): STR R2, SP, CH |
| IF x.mode = ORB.Const THENd |
| 1126 | d(80E00004): LDR R0, SP, 4H |
| 1127 | d(80000000): LDR R0, R0, 0H |
| 1128 | d(40090001): SUB R0, R0, 1H |
| 1129 | d(E9000030): BNE 48 [115AH] |
| IF x.r >= 0 THENe Put3(BL,f 7,g (x.a DIV 4)h-pc-i1)j |
| 112A | e(80E00004): LDR R0, SP, 4H |
| 112B | e(80000010): LDR R0, R0, 10H |
| 112C | e(40090000): SUB R0, R0, 0H |
| 112D | e(E500000B): BLT 11 [1139H] |
| 112E | f(40000003): MOV R0, R0, 3H |
| 112F | g(41000007): MOV R1, R0, 7H |
| 1130 | h(82E00004): LDR R2, SP, 4H |
| 1131 | h(82200008): LDR R2, R2, 8H |
| 1132 | h(42220002): ASR R2, R2, 2H |
| 1133 | i .FIXUP D |
| 1133 | i(8D000017): LDR SB, MT, MOD0 [ORG] |
| 1134 | i(83D00018): LDR R3, SB, 18H [data] |
| 1135 | i(02290003): SUB R2, R2, R3 |
| 1136 | j(42290001): SUB R2, R2, 1H |
| ELSEk (*imported*) |
| 1137 | k(F7FFEF59): BL -4263 [0091H] |
| IFl pc - fixorgP <m 1000H THENn |
| 1138 | l(E7000020): B 32 [1159H] |
| 1139 | m .FIXUP D |
| 1139 | m(8D000006): LDR SB, MT, MOD0 [ORG] |
| 113A | m(80D00018): LDR R0, SB, 18H [data] |
| 113B | m(81D00038): LDR R1, SB, 38H |
| 113C | m(00090001): SUB R0, R0, R1 |
| 113D | n(40091000): SUB R0, R0, 1000H |
| 113E | n(ED000016): BGE 22 [1155H] |
| Put3(BL,o 7,p ((-x.r)q * 100H +r x.a)s * 1000H +t pc-ufixorgP)v;w fixorgP := pc-1 |
| 113F | o(40000003): MOV R0, R0, 3H |
| 1140 | p(41000007): MOV R1, R0, 7H |
| 1141 | q(82E00004): LDR R2, SP, 4H |
| 1142 | q(82200010): LDR R2, R2, 10H |
| 1143 | q(43000000): MOV R3, R0, 0H |
| 1144 | q(02390002): SUB R2, R3, R2 |
| 1145 | r(42210008): LSL R2, R2, 8H |
| 1146 | s(83E00004): LDR R3, SP, 4H |
| 1147 | s(83300008): LDR R3, R3, 8H |
| 1148 | s(02280003): ADD R2, R2, R3 |
| 1149 | t(4221000C): LSL R2, R2, CH |
| 114A | u .FIXUP D |
| 114A | u(8D000011): LDR SB, MT, MOD0 [ORG] |
| 114B | u(83D00018): LDR R3, SB, 18H [data] |
| 114C | u(02280003): ADD R2, R2, R3 |
| 114D | v(83D00038): LDR R3, SB, 38H |
| 114E | v(02290003): SUB R2, R2, R3 |
| 114F | w(F7FFEF41): BL -4287 [0091H] |
| ELSEx ORSy.Mark("fixup impossible")z |
| 1150 | x .FIXUP D |
| 1150 | x(8D000006): LDR SB, MT, MOD0 [ORG] |
| 1151 | x(80D00018): LDR R0, SB, 18H [data] |
| 1152 | x(40090001): SUB R0, R0, 1H |
| 1153 | x(A0D00038): STR R0, SB, 38H |
| 1154 | y(E7000004): B 4 [1159H] |
| 1155 | z .FIXUP D |
| 1155 | z(8D000005): LDR SB, MT, MOD0 [ORG] |
| 1156 | z(40D88A48): ADD R0, SB, FFFF8A48H [data] |
| 1157 | z(41000011): MOV R1, R0, 11H |
| ENDa |
| 1158 | a .FIXUP P |
| 1158 | a(F720913A): BL MOD2 [ORS] PROC9 |
| END |
| ELSE |
| IFb x.mode <= ORB.Par THENc load(x)d;e DEC(RH) |
| 1159 | b(E700002B): B 43 [1185H] |
| 115A | c(80E00004): LDR R0, SP, 4H |
| 115B | c(80000000): LDR R0, R0, 0H |
| 115C | c(40090003): SUB R0, R0, 3H |
| 115D | c(EE000009): BGT 9 [1167H] |
| 115E | d(80E00004): LDR R0, SP, 4H |
| 115F | d(81E00008): LDR R1, SP, 8H |
| 1160 | e(F7FFF072): BL -3982 [01D3H] |
| ELSEf Put2g(Ldr,h RH,i SP,j 0)k;l Put1(Add,m SP,n SP,o 4)p;q DEC(r);r DEC(frame, 4) |
| 1161 | f .FIXUP D |
| 1161 | f(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 1162 | f(40D8002C): ADD R0, SB, 2CH [data] |
| 1163 | f(81000000): LDR R1, R0, 0H |
| 1164 | f(41190001): SUB R1, R1, 1H |
| 1165 | f(A1000000): STR R1, R0, 0H |
| 1166 | g(E7000013): B 19 [117AH] |
| 1167 | h(40000008): MOV R0, R0, 8H |
| 1168 | i .FIXUP D |
| 1168 | i(8D000007): LDR SB, MT, MOD0 [ORG] |
| 1169 | i(81D0002C): LDR R1, SB, 2CH [data] |
| 116A | j(4200000E): MOV R2, R0, EH |
| 116B | k(43000000): MOV R3, R0, 0H |
| 116C | l(F7FFEF04): BL -4348 [0071H] |
| 116D | m(40000008): MOV R0, R0, 8H |
| 116E | n(4100000E): MOV R1, R0, EH |
| 116F | o(4200000E): MOV R2, R0, EH |
| 1170 | p(43000004): MOV R3, R0, 4H |
| 1171 | q(F7FFEEAC): BL -4436 [001EH] |
| 1172 | r(80E0000C): LDR R0, SP, CH |
| 1173 | r(40090001): SUB R0, R0, 1H |
| 1174 | r(A0E0000C): STR R0, SP, CH |
| ENDs ; |
| 1175 | s .FIXUP D |
| 1175 | s(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 1176 | s(40D80034): ADD R0, SB, 34H [data] |
| 1177 | s(81000000): LDR R1, R0, 0H |
| 1178 | s(41190004): SUB R1, R1, 4H |
| 1179 | s(A1000000): STR R1, R0, 0H |
| IF check THENt Trap(EQ,u 5)v ENDw ; |
| 117A | t .FIXUP D |
| 117A | t(8D000005): LDR SB, MT, MOD0 [ORG] |
| 117B | t(90D00044): LDR R0, SB, 44H [data] |
| 117C | t(E1000003): BEQ 3 [1180H] |
| 117D | u(40000001): MOV R0, R0, 1H |
| 117E | v(41000005): MOV R1, R0, 5H |
| 117F | w(F7FFEF6C): BL -4244 [00ECH] |
| Put3(BLR,x 7,y RH)z |
| 1180 | x(40000001): MOV R0, R0, 1H |
| 1181 | y(41000007): MOV R1, R0, 7H |
| 1182 | z .FIXUP D |
| 1182 | z(8D000008): LDR SB, MT, MOD0 [ORG] |
| 1183 | z(82D0002C): LDR R2, SB, 2CH [data] |
| ENDa ; |
| 1184 | a(F7FFEF0C): BL -4340 [0091H] |
| IF x.type.baseb.formc = ORB.NoTyp THENd (*procedure*) RH := 0 |
| 1185 | b(80E00004): LDR R0, SP, 4H |
| 1186 | b(80000004): LDR R0, R0, 4H |
| 1187 | b(D16B864C): BLEQ MT [trap=4, pos=27526] |
| 1188 | c(8000001C): LDR R0, R0, 1CH |
| 1189 | c(D16B8B4C): BLEQ MT [trap=4, pos=27531] |
| 118A | d(80000000): LDR R0, R0, 0H |
| 118B | d(40090009): SUB R0, R0, 9H |
| 118C | d(E9000004): BNE 4 [1191H] |
| ELSEe (*function*) |
| 118D | e(40000000): MOV R0, R0, 0H |
| 118E | e .FIXUP D |
| 118E | e(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 118F | e(A0D0002C): STR R0, SB, 2CH [data] |
| IFf r > 0 THENg Put0(Mov,h r,i 0,j 0)k;l RestoreRegs(r)m ENDn ; |
| 1190 | f(E7000014): B 20 [11A5H] |
| 1191 | g(80E0000C): LDR R0, SP, CH |
| 1192 | g(40090000): SUB R0, R0, 0H |
| 1193 | g(E6000007): BLE 7 [119BH] |
| 1194 | h(40000000): MOV R0, R0, 0H |
| 1195 | i(81E0000C): LDR R1, SP, CH |
| 1196 | j(42000000): MOV R2, R0, 0H |
| 1197 | k(43000000): MOV R3, R0, 0H |
| 1198 | l(F7FFEE67): BL -4505 [0000H] |
| 1199 | m(80E0000C): LDR R0, SP, CH |
| 119A | n(F7FFFF47): BL -185 [10E2H] |
| x.mode := Reg;o x.r := r;p RH := r+1 |
| 119B | o(4000000A): MOV R0, R0, AH |
| 119C | o(81E00004): LDR R1, SP, 4H |
| 119D | o(A0100000): STR R0, R1, 0H |
| 119E | p(80E0000C): LDR R0, SP, CH |
| 119F | p(81E00004): LDR R1, SP, 4H |
| 11A0 | p(A0100010): STR R0, R1, 10H |
| ENDq ; |
| 11A1 | q(80E0000C): LDR R0, SP, CH |
| 11A2 | q(40080001): ADD R0, R0, 1H |
| 11A3 | q .FIXUP D |
| 11A3 | q(8D000015): LDR SB, MT, MOD0 [ORG] |
| 11A4 | q(A0D0002C): STR R0, SB, 2CH [data] |
| invalSB |
| ENDr Call; |
| 11A5 | r(F7FFEF6E): BL -4242 [0114H] |
| 11A6 | r(8FE00000): LDR LNK, SP, 0H |
| 11A7 | r(4EE80010): ADD SP, SP, 10H |
| 11A8 | r(C700000F): B LNK |
| |
| PROCEDURE Enter*(parblksize, locblksize: LONGINT; int: BOOLEAN); |
| VAR a, r: LONGINT; |
| BEGINs invalSB;t frame := 0;u |
| 11A9 | s .PROC 50 |
| 11A9 | s(4EE90018): SUB SP, SP, 18H |
| 11AA | s(AFE00000): STR LNK, SP, 0H |
| 11AB | s(A0E00004): STR R0, SP, 4H |
| 11AC | s(A1E00008): STR R1, SP, 8H |
| 11AD | s(A2E0000C): STR R2, SP, CH |
| 11AE | t(F7FFEF65): BL -4251 [0114H] |
| 11AF | u(40000000): MOV R0, R0, 0H |
| 11B0 | u .FIXUP D |
| 11B0 | u(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 11B1 | u(A0D00034): STR R0, SB, 34H [data] |
| IF ~int THENv (*procedure prolog*) |
| 11B2 | v(90E0000C): LDR R0, SP, CH |
| 11B3 | v(E9000027): BNE 39 [11DBH] |
| IF locblksize >= 10000H THENw ORS.Mark("too many locals")x ENDy ; |
| 11B4 | w(80E00008): LDR R0, SP, 8H |
| 11B5 | w(61000001): MOV' R1, R0, 1H |
| 11B6 | w(00090001): SUB R0, R0, R1 |
| 11B7 | w(E5000004): BLT 4 [11BCH] |
| 11B8 | x .FIXUP D |
| 11B8 | x(8D000008): LDR SB, MT, MOD0 [ORG] |
| 11B9 | x(40D88A5C): ADD R0, SB, FFFF8A5CH [data] |
| 11BA | x(41000010): MOV R1, R0, 10H |
| 11BB | y .FIXUP P |
| 11BB | y(F7209063): BL MOD2 [ORS] PROC9 |
| a := 4;z r := 0;a |
| 11BC | z(40000004): MOV R0, R0, 4H |
| 11BD | z(A0E00010): STR R0, SP, 10H |
| 11BE | a(40000000): MOV R0, R0, 0H |
| 11BF | a(A0E00014): STR R0, SP, 14H |
| Put1(Sub,b SP,c SP,d locblksize)e;f Put2(Str,g LNK,h SP,i 0)j;k |
| 11C0 | b(40000009): MOV R0, R0, 9H |
| 11C1 | c(4100000E): MOV R1, R0, EH |
| 11C2 | d(4200000E): MOV R2, R0, EH |
| 11C3 | e(83E00008): LDR R3, SP, 8H |
| 11C4 | f(F7FFEE59): BL -4519 [001EH] |
| 11C5 | g(4000000A): MOV R0, R0, AH |
| 11C6 | h(4100000F): MOV R1, R0, FH |
| 11C7 | i(4200000E): MOV R2, R0, EH |
| 11C8 | j(43000000): MOV R3, R0, 0H |
| 11C9 | k(F7FFEEA7): BL -4441 [0071H] |
| WHILE a < parblksize DOl Put2(Str,m r,n SP,o a)p;q INC(r);r INC(a, 4) ENDs |
| 11CA | l(80E00010): LDR R0, SP, 10H |
| 11CB | l(81E00004): LDR R1, SP, 4H |
| 11CC | l(00090001): SUB R0, R0, R1 |
| 11CD | l(ED00000C): BGE 12 [11DAH] |
| 11CE | m(4000000A): MOV R0, R0, AH |
| 11CF | n(81E00014): LDR R1, SP, 14H |
| 11D0 | o(4200000E): MOV R2, R0, EH |
| 11D1 | p(83E00010): LDR R3, SP, 10H |
| 11D2 | q(F7FFEE9E): BL -4450 [0071H] |
| 11D3 | r(80E00014): LDR R0, SP, 14H |
| 11D4 | r(40080001): ADD R0, R0, 1H |
| 11D5 | r(A0E00014): STR R0, SP, 14H |
| 11D6 | s(80E00010): LDR R0, SP, 10H |
| 11D7 | s(40080004): ADD R0, R0, 4H |
| 11D8 | s(A0E00010): STR R0, SP, 10H |
| 11D9 | s(E7FFFFF0): B -16 [11CAH] |
| ELSE (*interrupt procedure*) |
| IFt locblksize > 0H THENu ORS.Mark("locals not allowed")v ENDw ; |
| 11DA | t(E700001B): B 27 [11F6H] |
| 11DB | u(80E00008): LDR R0, SP, 8H |
| 11DC | u(40090000): SUB R0, R0, 0H |
| 11DD | u(E6000004): BLE 4 [11E2H] |
| 11DE | v .FIXUP D |
| 11DE | v(8D000026): LDR SB, MT, MOD0 [ORG] |
| 11DF | v(40D88A6C): ADD R0, SB, FFFF8A6CH [data] |
| 11E0 | v(41000013): MOV R1, R0, 13H |
| 11E1 | w .FIXUP P |
| 11E1 | w(F7209026): BL MOD2 [ORS] PROC9 |
| Put1(Sub,x SP,y SP,z 12)a;b Put2(Str,c 0,d SP,e 0)f;g Put2(Str,h 1,i SP,j 4)k;l Put2(Str,m SB,n SP,o 8)p |
| 11E2 | x(40000009): MOV R0, R0, 9H |
| 11E3 | y(4100000E): MOV R1, R0, EH |
| 11E4 | z(4200000E): MOV R2, R0, EH |
| 11E5 | a(4300000C): MOV R3, R0, CH |
| 11E6 | b(F7FFEE37): BL -4553 [001EH] |
| 11E7 | c(4000000A): MOV R0, R0, AH |
| 11E8 | d(41000000): MOV R1, R0, 0H |
| 11E9 | e(4200000E): MOV R2, R0, EH |
| 11EA | f(43000000): MOV R3, R0, 0H |
| 11EB | g(F7FFEE85): BL -4475 [0071H] |
| 11EC | h(4000000A): MOV R0, R0, AH |
| 11ED | i(41000001): MOV R1, R0, 1H |
| 11EE | j(4200000E): MOV R2, R0, EH |
| 11EF | k(43000004): MOV R3, R0, 4H |
| 11F0 | l(F7FFEE80): BL -4480 [0071H] |
| 11F1 | m(4000000A): MOV R0, R0, AH |
| 11F2 | n(4100000D): MOV R1, R0, DH |
| 11F3 | o(4200000E): MOV R2, R0, EH |
| 11F4 | p(43000008): MOV R3, R0, 8H |
| (*R0, R1, SB saved on stack*) |
| ENDq |
| 11F5 | q(F7FFEE7B): BL -4485 [0071H] |
| ENDr Enter; |
| 11F6 | r(8FE00000): LDR LNK, SP, 0H |
| 11F7 | r(4EE80018): ADD SP, SP, 18H |
| 11F8 | r(C700000F): B LNK |
| |
| PROCEDURE Return*(form: INTEGER; VAR x: Item; size: LONGINT; int: BOOLEAN); |
| BEGINs |
| 11F9 | s .PROC 51 |
| 11F9 | s(4EE90018): SUB SP, SP, 18H |
| 11FA | s(AFE00000): STR LNK, SP, 0H |
| 11FB | s(A0E00004): STR R0, SP, 4H |
| 11FC | s(A1E00008): STR R1, SP, 8H |
| 11FD | s(A2E0000C): STR R2, SP, CH |
| 11FE | s(A3E00010): STR R3, SP, 10H |
| 11FF | s(A4E00014): STR R4, SP, 14H |
| IF form # ORB.NoTyp THENt load(x)u ENDv ; |
| 1200 | t(80E00004): LDR R0, SP, 4H |
| 1201 | t(40090009): SUB R0, R0, 9H |
| 1202 | t(E1000003): BEQ 3 [1206H] |
| 1203 | u(80E00008): LDR R0, SP, 8H |
| 1204 | u(81E0000C): LDR R1, SP, CH |
| 1205 | v(F7FFEFCD): BL -4147 [01D3H] |
| IF ~int THENw (*procedure epilog*) |
| 1206 | w(90E00014): LDR R0, SP, 14H |
| 1207 | w(E900000F): BNE 15 [1217H] |
| Put2(Ldr,x LNK,y SP,z 0)a;b Put1(Add,c SP,d SP,e size)f;g Put3(BR,h 7,i LNK)j |
| 1208 | x(40000008): MOV R0, R0, 8H |
| 1209 | y(4100000F): MOV R1, R0, FH |
| 120A | z(4200000E): MOV R2, R0, EH |
| 120B | a(43000000): MOV R3, R0, 0H |
| 120C | b(F7FFEE64): BL -4508 [0071H] |
| 120D | c(40000008): MOV R0, R0, 8H |
| 120E | d(4100000E): MOV R1, R0, EH |
| 120F | e(4200000E): MOV R2, R0, EH |
| 1210 | f(83E00010): LDR R3, SP, 10H |
| 1211 | g(F7FFEE0C): BL -4596 [001EH] |
| 1212 | h(40000000): MOV R0, R0, 0H |
| 1213 | i(41000007): MOV R1, R0, 7H |
| 1214 | j(4200000F): MOV R2, R0, FH |
| ELSEk (*interrupt return, restore SB, R1, R0*) |
| 1215 | k(F7FFEE7B): BL -4485 [0091H] |
| Put2l(Ldr,m SB,n SP,o 8)p;q Put2(Ldr,r 1,s SP,t 4)u;v Put2(Ldr,w 0,x SP,y 0)z;a Put1(Add,b SP,c SP,d 12)e;f Put3(BR,g 7,h 10H)i |
| 1216 | l(E7000018): B 24 [122FH] |
| 1217 | m(40000008): MOV R0, R0, 8H |
| 1218 | n(4100000D): MOV R1, R0, DH |
| 1219 | o(4200000E): MOV R2, R0, EH |
| 121A | p(43000008): MOV R3, R0, 8H |
| 121B | q(F7FFEE55): BL -4523 [0071H] |
| 121C | r(40000008): MOV R0, R0, 8H |
| 121D | s(41000001): MOV R1, R0, 1H |
| 121E | t(4200000E): MOV R2, R0, EH |
| 121F | u(43000004): MOV R3, R0, 4H |
| 1220 | v(F7FFEE50): BL -4528 [0071H] |
| 1221 | w(40000008): MOV R0, R0, 8H |
| 1222 | x(41000000): MOV R1, R0, 0H |
| 1223 | y(4200000E): MOV R2, R0, EH |
| 1224 | z(43000000): MOV R3, R0, 0H |
| 1225 | a(F7FFEE4B): BL -4533 [0071H] |
| 1226 | b(40000008): MOV R0, R0, 8H |
| 1227 | c(4100000E): MOV R1, R0, EH |
| 1228 | d(4200000E): MOV R2, R0, EH |
| 1229 | e(4300000C): MOV R3, R0, CH |
| 122A | f(F7FFEDF3): BL -4621 [001EH] |
| 122B | g(40000000): MOV R0, R0, 0H |
| 122C | h(41000007): MOV R1, R0, 7H |
| 122D | i(42000010): MOV R2, R0, 10H |
| ENDj ; |
| 122E | j(F7FFEE62): BL -4510 [0091H] |
| RH := 0 |
| ENDk Return; |
| 122F | k(40000000): MOV R0, R0, 0H |
| 1230 | k .FIXUP D |
| 1230 | k(8D000052): LDR SB, MT, MOD0 [ORG] |
| 1231 | k(A0D0002C): STR R0, SB, 2CH [data] |
| 1232 | k(8FE00000): LDR LNK, SP, 0H |
| 1233 | k(4EE80018): ADD SP, SP, 18H |
| 1234 | k(C700000F): B LNK |
| |
| (* In-line code procedures*) |
| |
| PROCEDURE Increment*(upordown: LONGINT; VAR x, y: Item); |
| VAR op, zr, v: LONGINT; |
| BEGINl (*frame = 0*) |
| 1235 | l .PROC 52 |
| 1235 | l(4EE90024): SUB SP, SP, 24H |
| 1236 | l(AFE00000): STR LNK, SP, 0H |
| 1237 | l(A0E00004): STR R0, SP, 4H |
| 1238 | l(A1E00008): STR R1, SP, 8H |
| 1239 | l(A2E0000C): STR R2, SP, CH |
| 123A | l(A3E00010): STR R3, SP, 10H |
| 123B | l(A4E00014): STR R4, SP, 14H |
| IF upordown = 0 THENm op := Add ELSEn opo := Sub ENDp ; |
| 123C | m(80E00004): LDR R0, SP, 4H |
| 123D | m(E9000003): BNE 3 [1241H] |
| 123E | n(40000008): MOV R0, R0, 8H |
| 123F | n(A0E00018): STR R0, SP, 18H |
| 1240 | o(E7000002): B 2 [1243H] |
| 1241 | p(40000009): MOV R0, R0, 9H |
| 1242 | p(A0E00018): STR R0, SP, 18H |
| IF x.type = ORB.byteType THENq v := 1 ELSEr vs := 0 ENDt ; |
| 1243 | q(80E00008): LDR R0, SP, 8H |
| 1244 | q(80000004): LDR R0, R0, 4H |
| 1245 | q .FIXUP D |
| 1245 | q(8D400015): LDR SB, MT, MOD4 [ORB] |
| 1246 | q(81D00006): LDR R1, SB, VAR6 |
| 1247 | q(00090001): SUB R0, R0, R1 |
| 1248 | q(E9000003): BNE 3 [124CH] |
| 1249 | r(40000001): MOV R0, R0, 1H |
| 124A | r(A0E00020): STR R0, SP, 20H |
| 124B | s(E7000002): B 2 [124EH] |
| 124C | t(40000000): MOV R0, R0, 0H |
| 124D | t(A0E00020): STR R0, SP, 20H |
| IF y.type.formu = ORB.NoTyp THENv y.mode := ORB.Const;w y.a := 1 ENDx ; |
| 124E | u(80E00010): LDR R0, SP, 10H |
| 124F | u(80000004): LDR R0, R0, 4H |
| 1250 | u(D1718E4C): BLEQ MT [trap=4, pos=29070] |
| 1251 | v(80000000): LDR R0, R0, 0H |
| 1252 | v(40090009): SUB R0, R0, 9H |
| 1253 | v(E9000006): BNE 6 [125AH] |
| 1254 | w(40000001): MOV R0, R0, 1H |
| 1255 | w(81E00010): LDR R1, SP, 10H |
| 1256 | w(A0100000): STR R0, R1, 0H |
| 1257 | x(40000001): MOV R0, R0, 1H |
| 1258 | x(81E00010): LDR R1, SP, 10H |
| 1259 | x(A0100008): STR R0, R1, 8H |
| IF (x.mode = ORB.Var)y & (zx.r > 0)a THENb |
| 125A | y(80E00008): LDR R0, SP, 8H |
| 125B | y(80000000): LDR R0, R0, 0H |
| 125C | y(40090002): SUB R0, R0, 2H |
| 125D | z(E9000037): BNE 55 [1295H] |
| 125E | a(80E00008): LDR R0, SP, 8H |
| 125F | a(80000010): LDR R0, R0, 10H |
| 1260 | a(40090000): SUB R0, R0, 0H |
| 1261 | b(E6000033): BLE 51 [1295H] |
| zr := RH;c Put2(Ldr+v,d zr,e SP,f x.a)g;h incR;i |
| 1262 | c .FIXUP D |
| 1262 | c(8D00001D): LDR SB, MT, MOD0 [ORG] |
| 1263 | c(80D0002C): LDR R0, SB, 2CH [data] |
| 1264 | c(A0E0001C): STR R0, SP, 1CH |
| 1265 | d(40000008): MOV R0, R0, 8H |
| 1266 | d(81E00020): LDR R1, SP, 20H |
| 1267 | d(00080001): ADD R0, R0, R1 |
| 1268 | e(81E0001C): LDR R1, SP, 1CH |
| 1269 | f(4200000E): MOV R2, R0, EH |
| 126A | g(83E00008): LDR R3, SP, 8H |
| 126B | g(83300008): LDR R3, R3, 8H |
| 126C | h(F7FFEE04): BL -4604 [0071H] |
| 126D | i(F7FFEE40): BL -4544 [00AEH] |
| IF y.mode = ORB.Const THENj Put1a(op,k zr,l zr,m y.a)n ELSEo loadp(y)q;r Put0(op,s zr,t zr,u y.r)v;w DEC(RH) ENDx ; |
| 126E | j(80E00010): LDR R0, SP, 10H |
| 126F | j(80000000): LDR R0, R0, 0H |
| 1270 | j(40090001): SUB R0, R0, 1H |
| 1271 | j(E9000007): BNE 7 [1279H] |
| 1272 | k(80E00018): LDR R0, SP, 18H |
| 1273 | l(81E0001C): LDR R1, SP, 1CH |
| 1274 | m(82E0001C): LDR R2, SP, 1CH |
| 1275 | n(83E00010): LDR R3, SP, 10H |
| 1276 | n(83300008): LDR R3, R3, 8H |
| 1277 | o(F7FFEDCC): BL -4660 [0044H] |
| 1278 | p(E700000E): B 14 [1287H] |
| 1279 | q(80E00010): LDR R0, SP, 10H |
| 127A | q(81E00014): LDR R1, SP, 14H |
| 127B | r(F7FFEF57): BL -4265 [01D3H] |
| 127C | s(80E00018): LDR R0, SP, 18H |
| 127D | t(81E0001C): LDR R1, SP, 1CH |
| 127E | u(82E0001C): LDR R2, SP, 1CH |
| 127F | v(83E00010): LDR R3, SP, 10H |
| 1280 | v(83300010): LDR R3, R3, 10H |
| 1281 | w(F7FFED7E): BL -4738 [0000H] |
| 1282 | x .FIXUP D |
| 1282 | x(8D000020): LDR SB, MT, MOD0 [ORG] |
| 1283 | x(40D8002C): ADD R0, SB, 2CH [data] |
| 1284 | x(81000000): LDR R1, R0, 0H |
| 1285 | x(41190001): SUB R1, R1, 1H |
| 1286 | x(A1000000): STR R1, R0, 0H |
| Put2(Str+v,y zr,z SP,a x.a)b;c DEC(RH) |
| 1287 | y(4000000A): MOV R0, R0, AH |
| 1288 | y(81E00020): LDR R1, SP, 20H |
| 1289 | y(00080001): ADD R0, R0, R1 |
| 128A | z(81E0001C): LDR R1, SP, 1CH |
| 128B | a(4200000E): MOV R2, R0, EH |
| 128C | b(83E00008): LDR R3, SP, 8H |
| 128D | b(83300008): LDR R3, R3, 8H |
| 128E | c(F7FFEDE2): BL -4638 [0071H] |
| ELSEd loadAdre(x)f;g zr := RH;h Put2(Ldr+v,i RH,j x.r,k 0)l;m incR;n |
| 128F | d .FIXUP D |
| 128F | d(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 1290 | d(40D8002C): ADD R0, SB, 2CH [data] |
| 1291 | d(81000000): LDR R1, R0, 0H |
| 1292 | d(41190001): SUB R1, R1, 1H |
| 1293 | d(A1000000): STR R1, R0, 0H |
| 1294 | e(E7000035): B 53 [12CAH] |
| 1295 | f(80E00008): LDR R0, SP, 8H |
| 1296 | f(81E0000C): LDR R1, SP, CH |
| 1297 | g(F7FFF024): BL -4060 [02BCH] |
| 1298 | h .FIXUP D |
| 1298 | h(8D000009): LDR SB, MT, MOD0 [ORG] |
| 1299 | h(80D0002C): LDR R0, SB, 2CH [data] |
| 129A | h(A0E0001C): STR R0, SP, 1CH |
| 129B | i(40000008): MOV R0, R0, 8H |
| 129C | i(81E00020): LDR R1, SP, 20H |
| 129D | i(00080001): ADD R0, R0, R1 |
| 129E | j(81D0002C): LDR R1, SB, 2CH |
| 129F | k(82E00008): LDR R2, SP, 8H |
| 12A0 | k(82200010): LDR R2, R2, 10H |
| 12A1 | l(43000000): MOV R3, R0, 0H |
| 12A2 | m(F7FFEDCE): BL -4658 [0071H] |
| 12A3 | n(F7FFEE0A): BL -4598 [00AEH] |
| IF y.mode = ORB.Const THENo Put1a(op,p zr,q zr,r y.a)s ELSEt loadu(y)v;w Put0(op,x zr,y zr,z y.r)a;b DEC(RH) ENDc ; |
| 12A4 | o(80E00010): LDR R0, SP, 10H |
| 12A5 | o(80000000): LDR R0, R0, 0H |
| 12A6 | o(40090001): SUB R0, R0, 1H |
| 12A7 | o(E9000007): BNE 7 [12AFH] |
| 12A8 | p(80E00018): LDR R0, SP, 18H |
| 12A9 | q(81E0001C): LDR R1, SP, 1CH |
| 12AA | r(82E0001C): LDR R2, SP, 1CH |
| 12AB | s(83E00010): LDR R3, SP, 10H |
| 12AC | s(83300008): LDR R3, R3, 8H |
| 12AD | t(F7FFED96): BL -4714 [0044H] |
| 12AE | u(E700000E): B 14 [12BDH] |
| 12AF | v(80E00010): LDR R0, SP, 10H |
| 12B0 | v(81E00014): LDR R1, SP, 14H |
| 12B1 | w(F7FFEF21): BL -4319 [01D3H] |
| 12B2 | x(80E00018): LDR R0, SP, 18H |
| 12B3 | y(81E0001C): LDR R1, SP, 1CH |
| 12B4 | z(82E0001C): LDR R2, SP, 1CH |
| 12B5 | a(83E00010): LDR R3, SP, 10H |
| 12B6 | a(83300010): LDR R3, R3, 10H |
| 12B7 | b(F7FFED48): BL -4792 [0000H] |
| 12B8 | c .FIXUP D |
| 12B8 | c(8D000020): LDR SB, MT, MOD0 [ORG] |
| 12B9 | c(40D8002C): ADD R0, SB, 2CH [data] |
| 12BA | c(81000000): LDR R1, R0, 0H |
| 12BB | c(41190001): SUB R1, R1, 1H |
| 12BC | c(A1000000): STR R1, R0, 0H |
| Put2(Str+v,d zr,e x.r,f 0)g;h DEC(RH, 2) |
| 12BD | d(4000000A): MOV R0, R0, AH |
| 12BE | d(81E00020): LDR R1, SP, 20H |
| 12BF | d(00080001): ADD R0, R0, R1 |
| 12C0 | e(81E0001C): LDR R1, SP, 1CH |
| 12C1 | f(82E00008): LDR R2, SP, 8H |
| 12C2 | f(82200010): LDR R2, R2, 10H |
| 12C3 | g(43000000): MOV R3, R0, 0H |
| 12C4 | h(F7FFEDAC): BL -4692 [0071H] |
| ENDi |
| 12C5 | i .FIXUP D |
| 12C5 | i(8D00000D): LDR SB, MT, MOD0 [ORG] |
| 12C6 | i(40D8002C): ADD R0, SB, 2CH [data] |
| 12C7 | i(81000000): LDR R1, R0, 0H |
| 12C8 | i(41190002): SUB R1, R1, 2H |
| 12C9 | i(A1000000): STR R1, R0, 0H |
| ENDj Increment; |
| 12CA | j(8FE00000): LDR LNK, SP, 0H |
| 12CB | j(4EE80024): ADD SP, SP, 24H |
| 12CC | j(C700000F): B LNK |
| |
| PROCEDURE Include*(inorex: LONGINT; VAR x, y: Item); |
| VAR op, zr: LONGINT; |
| BEGINk loadAdr(x)l;m zr := RH;n Put2(Ldr,o RH,p x.r,q 0)r;s incR;t |
| 12CD | k .PROC 53 |
| 12CD | k(4EE90020): SUB SP, SP, 20H |
| 12CE | k(AFE00000): STR LNK, SP, 0H |
| 12CF | k(A0E00004): STR R0, SP, 4H |
| 12D0 | k(A1E00008): STR R1, SP, 8H |
| 12D1 | k(A2E0000C): STR R2, SP, CH |
| 12D2 | k(A3E00010): STR R3, SP, 10H |
| 12D3 | k(A4E00014): STR R4, SP, 14H |
| 12D4 | l(80E00008): LDR R0, SP, 8H |
| 12D5 | l(81E0000C): LDR R1, SP, CH |
| 12D6 | m(F7FFEFE5): BL -4123 [02BCH] |
| 12D7 | n .FIXUP D |
| 12D7 | n(8D000012): LDR SB, MT, MOD0 [ORG] |
| 12D8 | n(80D0002C): LDR R0, SB, 2CH [data] |
| 12D9 | n(A0E0001C): STR R0, SP, 1CH |
| 12DA | o(40000008): MOV R0, R0, 8H |
| 12DB | p(81D0002C): LDR R1, SB, 2CH |
| 12DC | q(82E00008): LDR R2, SP, 8H |
| 12DD | q(82200010): LDR R2, R2, 10H |
| 12DE | r(43000000): MOV R3, R0, 0H |
| 12DF | s(F7FFED91): BL -4719 [0071H] |
| 12E0 | t(F7FFEDCD): BL -4659 [00AEH] |
| IF inorex = 0 THENu op := Ior ELSEv opw := Ann ENDx ; |
| 12E1 | u(80E00004): LDR R0, SP, 4H |
| 12E2 | u(E9000003): BNE 3 [12E6H] |
| 12E3 | v(40000006): MOV R0, R0, 6H |
| 12E4 | v(A0E00018): STR R0, SP, 18H |
| 12E5 | w(E7000002): B 2 [12E8H] |
| 12E6 | x(40000005): MOV R0, R0, 5H |
| 12E7 | x(A0E00018): STR R0, SP, 18H |
| IF y.mode = ORB.Const THENy Put1a(op,z zr,a zr,b LSL(1, y.a))c |
| 12E8 | y(80E00010): LDR R0, SP, 10H |
| 12E9 | y(80000000): LDR R0, R0, 0H |
| 12EA | y(40090001): SUB R0, R0, 1H |
| 12EB | y(E9000009): BNE 9 [12F5H] |
| 12EC | z(80E00018): LDR R0, SP, 18H |
| 12ED | a(81E0001C): LDR R1, SP, 1CH |
| 12EE | b(82E0001C): LDR R2, SP, 1CH |
| 12EF | c(43000001): MOV R3, R0, 1H |
| 12F0 | c(84E00010): LDR R4, SP, 10H |
| 12F1 | c(84400008): LDR R4, R4, 8H |
| 12F2 | c(03310004): LSL R3, R3, R4 |
| ELSEd loade(y)f;g Put1(Mov,h RH,i 0,j 1)k;l Put0(Lsl,m y.r,n RH,o y.r)p;q Put0(op,r zr,s zr,t y.r)u;v DEC(RH) |
| 12F3 | d(F7FFED50): BL -4784 [0044H] |
| 12F4 | e(E700001C): B 28 [1311H] |
| 12F5 | f(80E00010): LDR R0, SP, 10H |
| 12F6 | f(81E00014): LDR R1, SP, 14H |
| 12F7 | g(F7FFEEDB): BL -4389 [01D3H] |
| 12F8 | h(40000000): MOV R0, R0, 0H |
| 12F9 | i .FIXUP D |
| 12F9 | i(8D000022): LDR SB, MT, MOD0 [ORG] |
| 12FA | i(81D0002C): LDR R1, SB, 2CH [data] |
| 12FB | j(42000000): MOV R2, R0, 0H |
| 12FC | k(43000001): MOV R3, R0, 1H |
| 12FD | l(F7FFED20): BL -4832 [001EH] |
| 12FE | m(40000001): MOV R0, R0, 1H |
| 12FF | n(81E00010): LDR R1, SP, 10H |
| 1300 | n(81100010): LDR R1, R1, 10H |
| 1301 | o .FIXUP D |
| 1301 | o(8D000008): LDR SB, MT, MOD0 [ORG] |
| 1302 | o(82D0002C): LDR R2, SB, 2CH [data] |
| 1303 | p(83E00010): LDR R3, SP, 10H |
| 1304 | p(83300010): LDR R3, R3, 10H |
| 1305 | q(F7FFECFA): BL -4870 [0000H] |
| 1306 | r(80E00018): LDR R0, SP, 18H |
| 1307 | s(81E0001C): LDR R1, SP, 1CH |
| 1308 | t(82E0001C): LDR R2, SP, 1CH |
| 1309 | u(83E00010): LDR R3, SP, 10H |
| 130A | u(83300010): LDR R3, R3, 10H |
| 130B | v(F7FFECF4): BL -4876 [0000H] |
| ENDw ; |
| 130C | w .FIXUP D |
| 130C | w(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 130D | w(40D8002C): ADD R0, SB, 2CH [data] |
| 130E | w(81000000): LDR R1, R0, 0H |
| 130F | w(41190001): SUB R1, R1, 1H |
| 1310 | w(A1000000): STR R1, R0, 0H |
| Put2(Str,x zr,y x.r,z 0)a;b DEC(RH, 2) |
| 1311 | x(4000000A): MOV R0, R0, AH |
| 1312 | y(81E0001C): LDR R1, SP, 1CH |
| 1313 | z(82E00008): LDR R2, SP, 8H |
| 1314 | z(82200010): LDR R2, R2, 10H |
| 1315 | a(43000000): MOV R3, R0, 0H |
| 1316 | b(F7FFED5A): BL -4774 [0071H] |
| ENDc Include; |
| 1317 | c .FIXUP D |
| 1317 | c(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 1318 | c(40D8002C): ADD R0, SB, 2CH [data] |
| 1319 | c(81000000): LDR R1, R0, 0H |
| 131A | c(41190002): SUB R1, R1, 2H |
| 131B | c(A1000000): STR R1, R0, 0H |
| 131C | c(8FE00000): LDR LNK, SP, 0H |
| 131D | c(4EE80020): ADD SP, SP, 20H |
| 131E | c(C700000F): B LNK |
| |
| PROCEDURE Assert*(VAR x: Item); |
| VAR cond: LONGINT; |
| BEGINd |
| 131F | d .PROC 54 |
| 131F | d(4EE90010): SUB SP, SP, 10H |
| 1320 | d(AFE00000): STR LNK, SP, 0H |
| 1321 | d(A0E00004): STR R0, SP, 4H |
| 1322 | d(A1E00008): STR R1, SP, 8H |
| IF x.mode # Cond THENe loadCond(x)f ENDg ; |
| 1323 | e(80E00004): LDR R0, SP, 4H |
| 1324 | e(80000000): LDR R0, R0, 0H |
| 1325 | e(4009000C): SUB R0, R0, CH |
| 1326 | e(E1000003): BEQ 3 [132AH] |
| 1327 | f(80E00004): LDR R0, SP, 4H |
| 1328 | f(81E00008): LDR R1, SP, 8H |
| 1329 | g(F7FFEFEF): BL -4113 [0319H] |
| IF x.a = 0 THENh cond := negated(x.r)i |
| 132A | h(80E00004): LDR R0, SP, 4H |
| 132B | h(80000008): LDR R0, R0, 8H |
| 132C | h(E9000005): BNE 5 [1332H] |
| 132D | i(80E00004): LDR R0, SP, 4H |
| 132E | i(80000010): LDR R0, R0, 10H |
| ELSEj Put3k(BC,l x.r,m x.b)n;o FixLink(x.a)p;q x.b := pc-1;r cond := 7 |
| 132F | j(F7FFEDD3): BL -4653 [0103H] |
| 1330 | j(A0E0000C): STR R0, SP, CH |
| 1331 | k(E7000010): B 16 [1342H] |
| 1332 | l(40000002): MOV R0, R0, 2H |
| 1333 | m(81E00004): LDR R1, SP, 4H |
| 1334 | m(81100010): LDR R1, R1, 10H |
| 1335 | n(82E00004): LDR R2, SP, 4H |
| 1336 | n(8220000C): LDR R2, R2, CH |
| 1337 | o(F7FFED59): BL -4775 [0091H] |
| 1338 | p(80E00004): LDR R0, SP, 4H |
| 1339 | p(80000008): LDR R0, R0, 8H |
| 133A | q(F7FFEDFB): BL -4613 [0136H] |
| 133B | r .FIXUP D |
| 133B | r(8D000024): LDR SB, MT, MOD0 [ORG] |
| 133C | r(80D00018): LDR R0, SB, 18H [data] |
| 133D | r(40090001): SUB R0, R0, 1H |
| 133E | r(81E00004): LDR R1, SP, 4H |
| 133F | r(A010000C): STR R0, R1, CH |
| ENDs ; |
| 1340 | s(40000007): MOV R0, R0, 7H |
| 1341 | s(A0E0000C): STR R0, SP, CH |
| Trap(cond,t 7)u;v FixLink(x.b)w |
| 1342 | t(80E0000C): LDR R0, SP, CH |
| 1343 | u(41000007): MOV R1, R0, 7H |
| 1344 | v(F7FFEDA7): BL -4697 [00ECH] |
| 1345 | w(80E00004): LDR R0, SP, 4H |
| 1346 | w(8000000C): LDR R0, R0, CH |
| ENDx Assert; |
| 1347 | x(F7FFEDEE): BL -4626 [0136H] |
| 1348 | x(8FE00000): LDR LNK, SP, 0H |
| 1349 | x(4EE80010): ADD SP, SP, 10H |
| 134A | x(C700000F): B LNK |
| |
| PROCEDURE New*(VAR x: Item); |
| BEGINy loadAdr(x)z;a loadTypTagAdr(x.type.baseb)c;d Trap(7,e 0)f;g RH := 0;h invalSB |
| 134B | y .PROC 55 |
| 134B | y(4EE9000C): SUB SP, SP, CH |
| 134C | y(AFE00000): STR LNK, SP, 0H |
| 134D | y(A0E00004): STR R0, SP, 4H |
| 134E | y(A1E00008): STR R1, SP, 8H |
| 134F | z(80E00004): LDR R0, SP, 4H |
| 1350 | z(81E00008): LDR R1, SP, 8H |
| 1351 | a(F7FFEF6A): BL -4246 [02BCH] |
| 1352 | b(80E00004): LDR R0, SP, 4H |
| 1353 | b(80000004): LDR R0, R0, 4H |
| 1354 | b(D1769B4C): BLEQ MT [trap=4, pos=30363] |
| 1355 | c(8000001C): LDR R0, R0, 1CH |
| 1356 | d(F7FFF006): BL -4090 [035DH] |
| 1357 | e(40000007): MOV R0, R0, 7H |
| 1358 | f(41000000): MOV R1, R0, 0H |
| 1359 | g(F7FFED92): BL -4718 [00ECH] |
| 135A | h(40000000): MOV R0, R0, 0H |
| 135B | h .FIXUP D |
| 135B | h(8D000020): LDR SB, MT, MOD0 [ORG] |
| 135C | h(A0D0002C): STR R0, SB, 2CH [data] |
| ENDi New; |
| 135D | i(F7FFEDB6): BL -4682 [0114H] |
| 135E | i(8FE00000): LDR LNK, SP, 0H |
| 135F | i(4EE8000C): ADD SP, SP, CH |
| 1360 | i(C700000F): B LNK |
| |
| PROCEDURE Pack*(VAR x, y: Item); |
| VAR z: Item; |
| BEGINj z := x;k load(x)l;m load(y)n;o |
| 1361 | j .PROC 56 |
| 1361 | j(4EE9002C): SUB SP, SP, 2CH |
| 1362 | j(AFE00000): STR LNK, SP, 0H |
| 1363 | j(A0E00004): STR R0, SP, 4H |
| 1364 | j(A1E00008): STR R1, SP, 8H |
| 1365 | j(A2E0000C): STR R2, SP, CH |
| 1366 | j(A3E00010): STR R3, SP, 10H |
| 1367 | k(40E80014): ADD R0, SP, 14H |
| 1368 | k(81E00004): LDR R1, SP, 4H |
| 1369 | k(42000006): MOV R2, R0, 6H |
| 136A | k(83100000): LDR R3, R1, 0H |
| 136B | k(41180004): ADD R1, R1, 4H |
| 136C | k(A3000000): STR R3, R0, 0H |
| 136D | k(40080004): ADD R0, R0, 4H |
| 136E | k(42290001): SUB R2, R2, 1H |
| 136F | k(E9FFFFFA): BNE -6 [136AH] |
| 1370 | l(80E00004): LDR R0, SP, 4H |
| 1371 | l(81E00008): LDR R1, SP, 8H |
| 1372 | m(F7FFEE60): BL -4512 [01D3H] |
| 1373 | n(80E0000C): LDR R0, SP, CH |
| 1374 | n(81E00010): LDR R1, SP, 10H |
| 1375 | o(F7FFEE5D): BL -4515 [01D3H] |
| Put1(Lsl,p y.r,q y.r,r 23)s;t Put0(Add,u x.r,v x.r,w y.r)x;y DEC(RH);z Store(z,a x)b |
| 1376 | p(40000001): MOV R0, R0, 1H |
| 1377 | q(81E0000C): LDR R1, SP, CH |
| 1378 | q(81100010): LDR R1, R1, 10H |
| 1379 | r(82E0000C): LDR R2, SP, CH |
| 137A | r(82200010): LDR R2, R2, 10H |
| 137B | s(43000017): MOV R3, R0, 17H |
| 137C | t(F7FFECA1): BL -4959 [001EH] |
| 137D | u(40000008): MOV R0, R0, 8H |
| 137E | v(81E00004): LDR R1, SP, 4H |
| 137F | v(81100010): LDR R1, R1, 10H |
| 1380 | w(82E00004): LDR R2, SP, 4H |
| 1381 | w(82200010): LDR R2, R2, 10H |
| 1382 | x(83E0000C): LDR R3, SP, CH |
| 1383 | x(83300010): LDR R3, R3, 10H |
| 1384 | y(F7FFEC7B): BL -4997 [0000H] |
| 1385 | z .FIXUP D |
| 1385 | z(8D00002A): LDR SB, MT, MOD0 [ORG] |
| 1386 | z(40D8002C): ADD R0, SB, 2CH [data] |
| 1387 | z(81000000): LDR R1, R0, 0H |
| 1388 | z(41190001): SUB R1, R1, 1H |
| 1389 | z(A1000000): STR R1, R0, 0H |
| 138A | a(40E80014): ADD R0, SP, 14H |
| 138B | a(41D80000): ADD R1, SB, 0H |
| 138C | b(82E00004): LDR R2, SP, 4H |
| 138D | b(83E00008): LDR R3, SP, 8H |
| ENDc Pack; |
| 138E | c(F7FFFA1D): BL -1507 [0DACH] |
| 138F | c(8FE00000): LDR LNK, SP, 0H |
| 1390 | c(4EE8002C): ADD SP, SP, 2CH |
| 1391 | c(C700000F): B LNK |
| |
| PROCEDURE Unpk*(VAR x, y: Item); |
| VAR z, e0: Item; |
| BEGINd z := x;e load(x)f;g e0.mode := Reg;h e0.r := RH;i e0.type := ORB.intType;j |
| 1392 | d .PROC 57 |
| 1392 | d(4EE90044): SUB SP, SP, 44H |
| 1393 | d(AFE00000): STR LNK, SP, 0H |
| 1394 | d(A0E00004): STR R0, SP, 4H |
| 1395 | d(A1E00008): STR R1, SP, 8H |
| 1396 | d(A2E0000C): STR R2, SP, CH |
| 1397 | d(A3E00010): STR R3, SP, 10H |
| 1398 | e(40E80014): ADD R0, SP, 14H |
| 1399 | e(81E00004): LDR R1, SP, 4H |
| 139A | e(42000006): MOV R2, R0, 6H |
| 139B | e(83100000): LDR R3, R1, 0H |
| 139C | e(41180004): ADD R1, R1, 4H |
| 139D | e(A3000000): STR R3, R0, 0H |
| 139E | e(40080004): ADD R0, R0, 4H |
| 139F | e(42290001): SUB R2, R2, 1H |
| 13A0 | e(E9FFFFFA): BNE -6 [139BH] |
| 13A1 | f(80E00004): LDR R0, SP, 4H |
| 13A2 | f(81E00008): LDR R1, SP, 8H |
| 13A3 | g(F7FFEE2F): BL -4561 [01D3H] |
| 13A4 | h(4000000A): MOV R0, R0, AH |
| 13A5 | h(A0E0002C): STR R0, SP, 2CH |
| 13A6 | i .FIXUP D |
| 13A6 | i(8D000021): LDR SB, MT, MOD0 [ORG] |
| 13A7 | i(80D0002C): LDR R0, SB, 2CH [data] |
| 13A8 | i(A0E0003C): STR R0, SP, 3CH |
| 13A9 | j .FIXUP D |
| 13A9 | j(8D400003): LDR SB, MT, MOD4 [ORB] |
| 13AA | j(80D00009): LDR R0, SB, VAR9 |
| 13AB | j(A0E00030): STR R0, SP, 30H |
| Put1(Asr,k RH,l x.r,m 23)n;o Put1(Sub,p RH,q RH,r 127)s;t Store(y,u e0)v;w incR;x |
| 13AC | k(40000002): MOV R0, R0, 2H |
| 13AD | l .FIXUP D |
| 13AD | l(8D000004): LDR SB, MT, MOD0 [ORG] |
| 13AE | l(81D0002C): LDR R1, SB, 2CH [data] |
| 13AF | m(82E00004): LDR R2, SP, 4H |
| 13B0 | m(82200010): LDR R2, R2, 10H |
| 13B1 | n(43000017): MOV R3, R0, 17H |
| 13B2 | o(F7FFEC6B): BL -5013 [001EH] |
| 13B3 | p(40000009): MOV R0, R0, 9H |
| 13B4 | q .FIXUP D |
| 13B4 | q(8D000007): LDR SB, MT, MOD0 [ORG] |
| 13B5 | q(81D0002C): LDR R1, SB, 2CH [data] |
| 13B6 | r(82D0002C): LDR R2, SB, 2CH |
| 13B7 | s(4300007F): MOV R3, R0, 7FH |
| 13B8 | t(F7FFEC65): BL -5019 [001EH] |
| 13B9 | u(80E0000C): LDR R0, SP, CH |
| 13BA | u(81E00010): LDR R1, SP, 10H |
| 13BB | v(42E8002C): ADD R2, SP, 2CH |
| 13BC | v .FIXUP D |
| 13BC | v(8D000008): LDR SB, MT, MOD0 [ORG] |
| 13BD | v(43D80000): ADD R3, SB, 0H [data] |
| 13BE | w(F7FFF9ED): BL -1555 [0DACH] |
| 13BF | x(F7FFECEE): BL -4882 [00AEH] |
| Put1(Lsl,y RH,z RH,a 23)b;c Put0(Sub,d x.r,e x.r,f RH)g;h Store(z,i x)j |
| 13C0 | y(40000001): MOV R0, R0, 1H |
| 13C1 | z .FIXUP D |
| 13C1 | z(8D000005): LDR SB, MT, MOD0 [ORG] |
| 13C2 | z(81D0002C): LDR R1, SB, 2CH [data] |
| 13C3 | a(82D0002C): LDR R2, SB, 2CH |
| 13C4 | b(43000017): MOV R3, R0, 17H |
| 13C5 | c(F7FFEC58): BL -5032 [001EH] |
| 13C6 | d(40000009): MOV R0, R0, 9H |
| 13C7 | e(81E00004): LDR R1, SP, 4H |
| 13C8 | e(81100010): LDR R1, R1, 10H |
| 13C9 | f(82E00004): LDR R2, SP, 4H |
| 13CA | f(82200010): LDR R2, R2, 10H |
| 13CB | g .FIXUP D |
| 13CB | g(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 13CC | g(83D0002C): LDR R3, SB, 2CH [data] |
| 13CD | h(F7FFEC32): BL -5070 [0000H] |
| 13CE | i(40E80014): ADD R0, SP, 14H |
| 13CF | i .FIXUP D |
| 13CF | i(8D000004): LDR SB, MT, MOD0 [ORG] |
| 13D0 | i(41D80000): ADD R1, SB, 0H [data] |
| 13D1 | j(82E00004): LDR R2, SP, 4H |
| 13D2 | j(83E00008): LDR R3, SP, 8H |
| ENDk Unpk; |
| 13D3 | k(F7FFF9D8): BL -1576 [0DACH] |
| 13D4 | k(8FE00000): LDR LNK, SP, 0H |
| 13D5 | k(4EE80044): ADD SP, SP, 44H |
| 13D6 | k(C700000F): B LNK |
| |
| PROCEDURE Led*(VAR x: Item); |
| BEGINl load(x)m;n Put1(Mov,o RH,p 0,q -60)r;s Put2(Str,t x.r,u RH,v 0)w;x DEC(RH) |
| 13D7 | l .PROC 58 |
| 13D7 | l(4EE9000C): SUB SP, SP, CH |
| 13D8 | l(AFE00000): STR LNK, SP, 0H |
| 13D9 | l(A0E00004): STR R0, SP, 4H |
| 13DA | l(A1E00008): STR R1, SP, 8H |
| 13DB | m(80E00004): LDR R0, SP, 4H |
| 13DC | m(81E00008): LDR R1, SP, 8H |
| 13DD | n(F7FFEDF5): BL -4619 [01D3H] |
| 13DE | o(40000000): MOV R0, R0, 0H |
| 13DF | p .FIXUP D |
| 13DF | p(8D000010): LDR SB, MT, MOD0 [ORG] |
| 13E0 | p(81D0002C): LDR R1, SB, 2CH [data] |
| 13E1 | q(42000000): MOV R2, R0, 0H |
| 13E2 | r(5300FFC4): MOV R3, R0, FFFFFFC4H |
| 13E3 | s(F7FFEC3A): BL -5062 [001EH] |
| 13E4 | t(4000000A): MOV R0, R0, AH |
| 13E5 | u(81E00004): LDR R1, SP, 4H |
| 13E6 | u(81100010): LDR R1, R1, 10H |
| 13E7 | v .FIXUP D |
| 13E7 | v(8D000008): LDR SB, MT, MOD0 [ORG] |
| 13E8 | v(82D0002C): LDR R2, SB, 2CH [data] |
| 13E9 | w(43000000): MOV R3, R0, 0H |
| 13EA | x(F7FFEC86): BL -4986 [0071H] |
| ENDy Led; |
| 13EB | y .FIXUP D |
| 13EB | y(8D000004): LDR SB, MT, MOD0 [ORG] |
| 13EC | y(40D8002C): ADD R0, SB, 2CH [data] |
| 13ED | y(81000000): LDR R1, R0, 0H |
| 13EE | y(41190001): SUB R1, R1, 1H |
| 13EF | y(A1000000): STR R1, R0, 0H |
| 13F0 | y(8FE00000): LDR LNK, SP, 0H |
| 13F1 | y(4EE8000C): ADD SP, SP, CH |
| 13F2 | y(C700000F): B LNK |
| |
| PROCEDURE Get*(VAR x, y: Item); |
| BEGINz load(x)a;b x.type := y.type;c x.mode := RegI;d x.a := 0;e Store(y,f x)g |
| 13F3 | z .PROC 59 |
| 13F3 | z(4EE90014): SUB SP, SP, 14H |
| 13F4 | z(AFE00000): STR LNK, SP, 0H |
| 13F5 | z(A0E00004): STR R0, SP, 4H |
| 13F6 | z(A1E00008): STR R1, SP, 8H |
| 13F7 | z(A2E0000C): STR R2, SP, CH |
| 13F8 | z(A3E00010): STR R3, SP, 10H |
| 13F9 | a(80E00004): LDR R0, SP, 4H |
| 13FA | a(81E00008): LDR R1, SP, 8H |
| 13FB | b(F7FFEDD7): BL -4649 [01D3H] |
| 13FC | c(80E0000C): LDR R0, SP, CH |
| 13FD | c(80000004): LDR R0, R0, 4H |
| 13FE | c(81E00004): LDR R1, SP, 4H |
| 13FF | c(A0100004): STR R0, R1, 4H |
| 1400 | d(4000000B): MOV R0, R0, BH |
| 1401 | d(81E00004): LDR R1, SP, 4H |
| 1402 | d(A0100000): STR R0, R1, 0H |
| 1403 | e(40000000): MOV R0, R0, 0H |
| 1404 | e(81E00004): LDR R1, SP, 4H |
| 1405 | e(A0100008): STR R0, R1, 8H |
| 1406 | f(80E0000C): LDR R0, SP, CH |
| 1407 | f(81E00010): LDR R1, SP, 10H |
| 1408 | g(82E00004): LDR R2, SP, 4H |
| 1409 | g(83E00008): LDR R3, SP, 8H |
| ENDh Get; |
| 140A | h(F7FFF9A1): BL -1631 [0DACH] |
| 140B | h(8FE00000): LDR LNK, SP, 0H |
| 140C | h(4EE80014): ADD SP, SP, 14H |
| 140D | h(C700000F): B LNK |
| |
| PROCEDURE Put*(VAR x, y: Item); |
| BEGINi load(x)j;k x.type := y.type;l x.mode := RegI;m x.a := 0;n Store(x,o y)p |
| 140E | i .PROC 60 |
| 140E | i(4EE90014): SUB SP, SP, 14H |
| 140F | i(AFE00000): STR LNK, SP, 0H |
| 1410 | i(A0E00004): STR R0, SP, 4H |
| 1411 | i(A1E00008): STR R1, SP, 8H |
| 1412 | i(A2E0000C): STR R2, SP, CH |
| 1413 | i(A3E00010): STR R3, SP, 10H |
| 1414 | j(80E00004): LDR R0, SP, 4H |
| 1415 | j(81E00008): LDR R1, SP, 8H |
| 1416 | k(F7FFEDBC): BL -4676 [01D3H] |
| 1417 | l(80E0000C): LDR R0, SP, CH |
| 1418 | l(80000004): LDR R0, R0, 4H |
| 1419 | l(81E00004): LDR R1, SP, 4H |
| 141A | l(A0100004): STR R0, R1, 4H |
| 141B | m(4000000B): MOV R0, R0, BH |
| 141C | m(81E00004): LDR R1, SP, 4H |
| 141D | m(A0100000): STR R0, R1, 0H |
| 141E | n(40000000): MOV R0, R0, 0H |
| 141F | n(81E00004): LDR R1, SP, 4H |
| 1420 | n(A0100008): STR R0, R1, 8H |
| 1421 | o(80E00004): LDR R0, SP, 4H |
| 1422 | o(81E00008): LDR R1, SP, 8H |
| 1423 | p(82E0000C): LDR R2, SP, CH |
| 1424 | p(83E00010): LDR R3, SP, 10H |
| ENDq Put; |
| 1425 | q(F7FFF986): BL -1658 [0DACH] |
| 1426 | q(8FE00000): LDR LNK, SP, 0H |
| 1427 | q(4EE80014): ADD SP, SP, 14H |
| 1428 | q(C700000F): B LNK |
| |
| PROCEDURE Copy*(VAR x, y, z: Item); |
| BEGINr load(x)s;t load(y)u;v |
| 1429 | r .PROC 61 |
| 1429 | r(4EE9001C): SUB SP, SP, 1CH |
| 142A | r(AFE00000): STR LNK, SP, 0H |
| 142B | r(A0E00004): STR R0, SP, 4H |
| 142C | r(A1E00008): STR R1, SP, 8H |
| 142D | r(A2E0000C): STR R2, SP, CH |
| 142E | r(A3E00010): STR R3, SP, 10H |
| 142F | r(A4E00014): STR R4, SP, 14H |
| 1430 | r(A5E00018): STR R5, SP, 18H |
| 1431 | s(80E00004): LDR R0, SP, 4H |
| 1432 | s(81E00008): LDR R1, SP, 8H |
| 1433 | t(F7FFED9F): BL -4705 [01D3H] |
| 1434 | u(80E0000C): LDR R0, SP, CH |
| 1435 | u(81E00010): LDR R1, SP, 10H |
| 1436 | v(F7FFED9C): BL -4708 [01D3H] |
| IF z.mode = ORB.Const THENw |
| 1437 | w(80E00014): LDR R0, SP, 14H |
| 1438 | w(80000000): LDR R0, R0, 0H |
| 1439 | w(40090001): SUB R0, R0, 1H |
| 143A | w(E900000D): BNE 13 [1448H] |
| IF z.a > 0 THENx load(z)y ELSEz ORSa.Mark("bad count")b ENDc |
| 143B | x(80E00014): LDR R0, SP, 14H |
| 143C | x(80000008): LDR R0, R0, 8H |
| 143D | x(40090000): SUB R0, R0, 0H |
| 143E | x(E6000004): BLE 4 [1443H] |
| 143F | y(80E00014): LDR R0, SP, 14H |
| 1440 | y(81E00018): LDR R1, SP, 18H |
| 1441 | z(F7FFED91): BL -4719 [01D3H] |
| 1442 | a(E7000004): B 4 [1447H] |
| 1443 | b .FIXUP D |
| 1443 | b(8D000058): LDR SB, MT, MOD0 [ORG] |
| 1444 | b(40D88A80): ADD R0, SB, FFFF8A80H [data] |
| 1445 | b(4100000A): MOV R1, R0, AH |
| 1446 | c .FIXUP P |
| 1446 | c(F7209265): BL MOD2 [ORS] PROC9 |
| ELSE loadd(z)e;f |
| 1447 | d(E700000D): B 13 [1455H] |
| 1448 | e(80E00014): LDR R0, SP, 14H |
| 1449 | e(81E00018): LDR R1, SP, 18H |
| 144A | f(F7FFED88): BL -4728 [01D3H] |
| IF check THENg Trap(LT,h 3)i ENDj ; |
| 144B | g .FIXUP D |
| 144B | g(8D000008): LDR SB, MT, MOD0 [ORG] |
| 144C | g(90D00044): LDR R0, SB, 44H [data] |
| 144D | g(E1000003): BEQ 3 [1451H] |
| 144E | h(40000005): MOV R0, R0, 5H |
| 144F | i(41000003): MOV R1, R0, 3H |
| 1450 | j(F7FFEC9B): BL -4965 [00ECH] |
| Put3(BC,k EQ,l 6)m |
| 1451 | k(40000002): MOV R0, R0, 2H |
| 1452 | l(41000001): MOV R1, R0, 1H |
| 1453 | m(42000006): MOV R2, R0, 6H |
| ENDn ; |
| 1454 | n(F7FFEC3C): BL -5060 [0091H] |
| Put2(Ldr,o RH,p x.r,q 0)r;s Put1(Add,t x.r,u x.r,v 4)w;x |
| 1455 | o(40000008): MOV R0, R0, 8H |
| 1456 | p .FIXUP D |
| 1456 | p(8D00000B): LDR SB, MT, MOD0 [ORG] |
| 1457 | p(81D0002C): LDR R1, SB, 2CH [data] |
| 1458 | q(82E00004): LDR R2, SP, 4H |
| 1459 | q(82200010): LDR R2, R2, 10H |
| 145A | r(43000000): MOV R3, R0, 0H |
| 145B | s(F7FFEC15): BL -5099 [0071H] |
| 145C | t(40000008): MOV R0, R0, 8H |
| 145D | u(81E00004): LDR R1, SP, 4H |
| 145E | u(81100010): LDR R1, R1, 10H |
| 145F | v(82E00004): LDR R2, SP, 4H |
| 1460 | v(82200010): LDR R2, R2, 10H |
| 1461 | w(43000004): MOV R3, R0, 4H |
| 1462 | x(F7FFEBBB): BL -5189 [001EH] |
| Put2(Str,y RH,z y.r,a 0)b;c Put1(Add,d y.r,e y.r,f 4)g;h |
| 1463 | y(4000000A): MOV R0, R0, AH |
| 1464 | z .FIXUP D |
| 1464 | z(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 1465 | z(81D0002C): LDR R1, SB, 2CH [data] |
| 1466 | a(82E0000C): LDR R2, SP, CH |
| 1467 | a(82200010): LDR R2, R2, 10H |
| 1468 | b(43000000): MOV R3, R0, 0H |
| 1469 | c(F7FFEC07): BL -5113 [0071H] |
| 146A | d(40000008): MOV R0, R0, 8H |
| 146B | e(81E0000C): LDR R1, SP, CH |
| 146C | e(81100010): LDR R1, R1, 10H |
| 146D | f(82E0000C): LDR R2, SP, CH |
| 146E | f(82200010): LDR R2, R2, 10H |
| 146F | g(43000004): MOV R3, R0, 4H |
| 1470 | h(F7FFEBAD): BL -5203 [001EH] |
| Put1(Sub,i z.r,j z.r,k 1)l;m Put3(BC,n NE,o -6)p;q DEC(RH, 3) |
| 1471 | i(40000009): MOV R0, R0, 9H |
| 1472 | j(81E00014): LDR R1, SP, 14H |
| 1473 | j(81100010): LDR R1, R1, 10H |
| 1474 | k(82E00014): LDR R2, SP, 14H |
| 1475 | k(82200010): LDR R2, R2, 10H |
| 1476 | l(43000001): MOV R3, R0, 1H |
| 1477 | m(F7FFEBA6): BL -5210 [001EH] |
| 1478 | n(40000002): MOV R0, R0, 2H |
| 1479 | o(41000009): MOV R1, R0, 9H |
| 147A | p(5200FFFA): MOV R2, R0, FFFFFFFAH |
| 147B | q(F7FFEC15): BL -5099 [0091H] |
| ENDr Copy; |
| 147C | r .FIXUP D |
| 147C | r(8D000018): LDR SB, MT, MOD0 [ORG] |
| 147D | r(40D8002C): ADD R0, SB, 2CH [data] |
| 147E | r(81000000): LDR R1, R0, 0H |
| 147F | r(41190003): SUB R1, R1, 3H |
| 1480 | r(A1000000): STR R1, R0, 0H |
| 1481 | r(8FE00000): LDR LNK, SP, 0H |
| 1482 | r(4EE8001C): ADD SP, SP, 1CH |
| 1483 | r(C700000F): B LNK |
| |
| PROCEDURE LDPSR*(VAR x: Item); |
| BEGINs (*x.mode = Const*) Put3(0,t 15,u x.a + 20H)v |
| 1484 | s .PROC 62 |
| 1484 | s(4EE9000C): SUB SP, SP, CH |
| 1485 | s(AFE00000): STR LNK, SP, 0H |
| 1486 | s(A0E00004): STR R0, SP, 4H |
| 1487 | s(A1E00008): STR R1, SP, 8H |
| 1488 | t(40000000): MOV R0, R0, 0H |
| 1489 | u(4100000F): MOV R1, R0, FH |
| 148A | v(82E00004): LDR R2, SP, 4H |
| 148B | v(82200008): LDR R2, R2, 8H |
| 148C | v(42280020): ADD R2, R2, 20H |
| ENDw LDPSR; |
| 148D | w(F7FFEC03): BL -5117 [0091H] |
| 148E | w(8FE00000): LDR LNK, SP, 0H |
| 148F | w(4EE8000C): ADD SP, SP, CH |
| 1490 | w(C700000F): B LNK |
| |
| PROCEDURE LDREG*(VAR x, y: Item); |
| BEGINx |
| 1491 | x .PROC 63 |
| 1491 | x(4EE90014): SUB SP, SP, 14H |
| 1492 | x(AFE00000): STR LNK, SP, 0H |
| 1493 | x(A0E00004): STR R0, SP, 4H |
| 1494 | x(A1E00008): STR R1, SP, 8H |
| 1495 | x(A2E0000C): STR R2, SP, CH |
| 1496 | x(A3E00010): STR R3, SP, 10H |
| IF y.mode = ORB.Const THENy Put1a(Mov,z x.a,a 0,b y.a)c |
| 1497 | y(80E0000C): LDR R0, SP, CH |
| 1498 | y(80000000): LDR R0, R0, 0H |
| 1499 | y(40090001): SUB R0, R0, 1H |
| 149A | y(E9000008): BNE 8 [14A3H] |
| 149B | z(40000000): MOV R0, R0, 0H |
| 149C | a(81E00004): LDR R1, SP, 4H |
| 149D | a(81100008): LDR R1, R1, 8H |
| 149E | b(42000000): MOV R2, R0, 0H |
| 149F | c(83E0000C): LDR R3, SP, CH |
| 14A0 | c(83300008): LDR R3, R3, 8H |
| ELSEd loade(y)f;g Put0(Mov,h x.a,i 0,j y.r)k;l DEC(RH) |
| 14A1 | d(F7FFEBA2): BL -5214 [0044H] |
| 14A2 | e(E700000F): B 15 [14B2H] |
| 14A3 | f(80E0000C): LDR R0, SP, CH |
| 14A4 | f(81E00010): LDR R1, SP, 10H |
| 14A5 | g(F7FFED2D): BL -4819 [01D3H] |
| 14A6 | h(40000000): MOV R0, R0, 0H |
| 14A7 | i(81E00004): LDR R1, SP, 4H |
| 14A8 | i(81100008): LDR R1, R1, 8H |
| 14A9 | j(42000000): MOV R2, R0, 0H |
| 14AA | k(83E0000C): LDR R3, SP, CH |
| 14AB | k(83300010): LDR R3, R3, 10H |
| 14AC | l(F7FFEB53): BL -5293 [0000H] |
| ENDm |
| 14AD | m .FIXUP D |
| 14AD | m(8D000031): LDR SB, MT, MOD0 [ORG] |
| 14AE | m(40D8002C): ADD R0, SB, 2CH [data] |
| 14AF | m(81000000): LDR R1, R0, 0H |
| 14B0 | m(41190001): SUB R1, R1, 1H |
| 14B1 | m(A1000000): STR R1, R0, 0H |
| ENDn LDREG; |
| 14B2 | n(8FE00000): LDR LNK, SP, 0H |
| 14B3 | n(4EE80014): ADD SP, SP, 14H |
| 14B4 | n(C700000F): B LNK |
| |
| (*In-line code functions*) |
| |
| PROCEDURE Abs*(VAR x: Item); |
| BEGINo |
| 14B5 | o .PROC 64 |
| 14B5 | o(4EE9000C): SUB SP, SP, CH |
| 14B6 | o(AFE00000): STR LNK, SP, 0H |
| 14B7 | o(A0E00004): STR R0, SP, 4H |
| 14B8 | o(A1E00008): STR R1, SP, 8H |
| IF x.mode = ORB.Const THENp x.a := ABS(x.a) |
| 14B9 | p(80E00004): LDR R0, SP, 4H |
| 14BA | p(80000000): LDR R0, R0, 0H |
| 14BB | p(40090001): SUB R0, R0, 1H |
| 14BC | p(E9000009): BNE 9 [14C6H] |
| ELSEq loadr(x)s;t |
| 14BD | q(80E00004): LDR R0, SP, 4H |
| 14BE | q(80000008): LDR R0, R0, 8H |
| 14BF | q(40090000): SUB R0, R0, 0H |
| 14C0 | q(ED000002): BGE 2 [14C3H] |
| 14C1 | q(41000000): MOV R1, R0, 0H |
| 14C2 | q(00190000): SUB R0, R1, R0 |
| 14C3 | q(81E00004): LDR R1, SP, 4H |
| 14C4 | q(A0100008): STR R0, R1, 8H |
| 14C5 | r(E7000031): B 49 [14F7H] |
| 14C6 | s(80E00004): LDR R0, SP, 4H |
| 14C7 | s(81E00008): LDR R1, SP, 8H |
| 14C8 | t(F7FFED0A): BL -4854 [01D3H] |
| IF x.type.formu = ORB.Real THENv Put1(Lsl,w x.r,x x.r,y 1)z;a Put1(Ror,b x.r,c x.r,d 1)e |
| 14C9 | u(80E00004): LDR R0, SP, 4H |
| 14CA | u(80000004): LDR R0, R0, 4H |
| 14CB | u(D17D384C): BLEQ MT [trap=4, pos=32056] |
| 14CC | v(80000000): LDR R0, R0, 0H |
| 14CD | v(40090005): SUB R0, R0, 5H |
| 14CE | v(E900000F): BNE 15 [14DEH] |
| 14CF | w(40000001): MOV R0, R0, 1H |
| 14D0 | x(81E00004): LDR R1, SP, 4H |
| 14D1 | x(81100010): LDR R1, R1, 10H |
| 14D2 | y(82E00004): LDR R2, SP, 4H |
| 14D3 | y(82200010): LDR R2, R2, 10H |
| 14D4 | z(43000001): MOV R3, R0, 1H |
| 14D5 | a(F7FFEB48): BL -5304 [001EH] |
| 14D6 | b(40000003): MOV R0, R0, 3H |
| 14D7 | c(81E00004): LDR R1, SP, 4H |
| 14D8 | c(81100010): LDR R1, R1, 10H |
| 14D9 | d(82E00004): LDR R2, SP, 4H |
| 14DA | d(82200010): LDR R2, R2, 10H |
| 14DB | e(43000001): MOV R3, R0, 1H |
| ELSEf Put1g(Cmp,h x.r,i x.r,j 0)k;l Put3(BC,m GE,n 2)o;p Put1(Mov,q RH,r 0,s 0)t;u Put0(Sub,v x.r,w RH,x x.r)y |
| 14DC | f(F7FFEB41): BL -5311 [001EH] |
| 14DD | g(E7000019): B 25 [14F7H] |
| 14DE | h(40000009): MOV R0, R0, 9H |
| 14DF | i(81E00004): LDR R1, SP, 4H |
| 14E0 | i(81100010): LDR R1, R1, 10H |
| 14E1 | j(82E00004): LDR R2, SP, 4H |
| 14E2 | j(82200010): LDR R2, R2, 10H |
| 14E3 | k(43000000): MOV R3, R0, 0H |
| 14E4 | l(F7FFEB39): BL -5319 [001EH] |
| 14E5 | m(40000002): MOV R0, R0, 2H |
| 14E6 | n(4100000D): MOV R1, R0, DH |
| 14E7 | o(42000002): MOV R2, R0, 2H |
| 14E8 | p(F7FFEBA8): BL -5208 [0091H] |
| 14E9 | q(40000000): MOV R0, R0, 0H |
| 14EA | r .FIXUP D |
| 14EA | r(8D00003D): LDR SB, MT, MOD0 [ORG] |
| 14EB | r(81D0002C): LDR R1, SB, 2CH [data] |
| 14EC | s(42000000): MOV R2, R0, 0H |
| 14ED | t(43000000): MOV R3, R0, 0H |
| 14EE | u(F7FFEB2F): BL -5329 [001EH] |
| 14EF | v(40000009): MOV R0, R0, 9H |
| 14F0 | w(81E00004): LDR R1, SP, 4H |
| 14F1 | w(81100010): LDR R1, R1, 10H |
| 14F2 | x .FIXUP D |
| 14F2 | x(8D000008): LDR SB, MT, MOD0 [ORG] |
| 14F3 | x(82D0002C): LDR R2, SB, 2CH [data] |
| 14F4 | y(83E00004): LDR R3, SP, 4H |
| 14F5 | y(83300010): LDR R3, R3, 10H |
| ENDz |
| 14F6 | z(F7FFEB09): BL -5367 [0000H] |
| END |
| ENDa Abs; |
| 14F7 | a(8FE00000): LDR LNK, SP, 0H |
| 14F8 | a(4EE8000C): ADD SP, SP, CH |
| 14F9 | a(C700000F): B LNK |
| |
| PROCEDURE Odd*(VAR x: Item); |
| BEGINb load(x)c;d Put1(And,e x.r,f x.r,g 1)h;i SetCC(x,j NE)k;l DEC(RH) |
| 14FA | b .PROC 65 |
| 14FA | b(4EE9000C): SUB SP, SP, CH |
| 14FB | b(AFE00000): STR LNK, SP, 0H |
| 14FC | b(A0E00004): STR R0, SP, 4H |
| 14FD | b(A1E00008): STR R1, SP, 8H |
| 14FE | c(80E00004): LDR R0, SP, 4H |
| 14FF | c(81E00008): LDR R1, SP, 8H |
| 1500 | d(F7FFECD2): BL -4910 [01D3H] |
| 1501 | e(40000004): MOV R0, R0, 4H |
| 1502 | f(81E00004): LDR R1, SP, 4H |
| 1503 | f(81100010): LDR R1, R1, 10H |
| 1504 | g(82E00004): LDR R2, SP, 4H |
| 1505 | g(82200010): LDR R2, R2, 10H |
| 1506 | h(43000001): MOV R3, R0, 1H |
| 1507 | i(F7FFEB16): BL -5354 [001EH] |
| 1508 | j(80E00004): LDR R0, SP, 4H |
| 1509 | j(81E00008): LDR R1, SP, 8H |
| 150A | k(42000009): MOV R2, R0, 9H |
| 150B | l(F7FFEBCC): BL -5172 [00D8H] |
| ENDm Odd; |
| 150C | m .FIXUP D |
| 150C | m(8D00001A): LDR SB, MT, MOD0 [ORG] |
| 150D | m(40D8002C): ADD R0, SB, 2CH [data] |
| 150E | m(81000000): LDR R1, R0, 0H |
| 150F | m(41190001): SUB R1, R1, 1H |
| 1510 | m(A1000000): STR R1, R0, 0H |
| 1511 | m(8FE00000): LDR LNK, SP, 0H |
| 1512 | m(4EE8000C): ADD SP, SP, CH |
| 1513 | m(C700000F): B LNK |
| |
| PROCEDURE Floor*(VAR x: Item); |
| BEGINn load(x)o;p Put1(Mov+U,q RH,r 0,s 4B00H)t;u Put0(Fad+V,v x.r,w x.r,x RH)y |
| 1514 | n .PROC 66 |
| 1514 | n(4EE9000C): SUB SP, SP, CH |
| 1515 | n(AFE00000): STR LNK, SP, 0H |
| 1516 | n(A0E00004): STR R0, SP, 4H |
| 1517 | n(A1E00008): STR R1, SP, 8H |
| 1518 | o(80E00004): LDR R0, SP, 4H |
| 1519 | o(81E00008): LDR R1, SP, 8H |
| 151A | p(F7FFECB8): BL -4936 [01D3H] |
| 151B | q(40002000): MOV R0, R0, 2000H |
| 151C | r .FIXUP D |
| 151C | r(8D000010): LDR SB, MT, MOD0 [ORG] |
| 151D | r(81D0002C): LDR R1, SB, 2CH [data] |
| 151E | s(42000000): MOV R2, R0, 0H |
| 151F | t(43004B00): MOV R3, R0, 4B00H |
| 1520 | u(F7FFEAFD): BL -5379 [001EH] |
| 1521 | v(4000100C): MOV R0, R0, 100CH |
| 1522 | w(81E00004): LDR R1, SP, 4H |
| 1523 | w(81100010): LDR R1, R1, 10H |
| 1524 | x(82E00004): LDR R2, SP, 4H |
| 1525 | x(82200010): LDR R2, R2, 10H |
| 1526 | y .FIXUP D |
| 1526 | y(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 1527 | y(83D0002C): LDR R3, SB, 2CH [data] |
| ENDz Floor; |
| 1528 | z(F7FFEAD7): BL -5417 [0000H] |
| 1529 | z(8FE00000): LDR LNK, SP, 0H |
| 152A | z(4EE8000C): ADD SP, SP, CH |
| 152B | z(C700000F): B LNK |
| |
| PROCEDURE Float*(VAR x: Item); |
| BEGINa load(x)b;c Put1(Mov+U,d RH,e 0,f 4B00H)g;h Put0(Fad+U,i x.r,j x.r,k RH)l |
| 152C | a .PROC 67 |
| 152C | a(4EE9000C): SUB SP, SP, CH |
| 152D | a(AFE00000): STR LNK, SP, 0H |
| 152E | a(A0E00004): STR R0, SP, 4H |
| 152F | a(A1E00008): STR R1, SP, 8H |
| 1530 | b(80E00004): LDR R0, SP, 4H |
| 1531 | b(81E00008): LDR R1, SP, 8H |
| 1532 | c(F7FFECA0): BL -4960 [01D3H] |
| 1533 | d(40002000): MOV R0, R0, 2000H |
| 1534 | e .FIXUP D |
| 1534 | e(8D00000E): LDR SB, MT, MOD0 [ORG] |
| 1535 | e(81D0002C): LDR R1, SB, 2CH [data] |
| 1536 | f(42000000): MOV R2, R0, 0H |
| 1537 | g(43004B00): MOV R3, R0, 4B00H |
| 1538 | h(F7FFEAE5): BL -5403 [001EH] |
| 1539 | i(4000200C): MOV R0, R0, 200CH |
| 153A | j(81E00004): LDR R1, SP, 4H |
| 153B | j(81100010): LDR R1, R1, 10H |
| 153C | k(82E00004): LDR R2, SP, 4H |
| 153D | k(82200010): LDR R2, R2, 10H |
| 153E | l .FIXUP D |
| 153E | l(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 153F | l(83D0002C): LDR R3, SB, 2CH [data] |
| ENDm Float; |
| 1540 | m(F7FFEABF): BL -5441 [0000H] |
| 1541 | m(8FE00000): LDR LNK, SP, 0H |
| 1542 | m(4EE8000C): ADD SP, SP, CH |
| 1543 | m(C700000F): B LNK |
| |
| PROCEDURE Ord*(VAR x: Item); |
| BEGINn |
| 1544 | n .PROC 68 |
| 1544 | n(4EE9000C): SUB SP, SP, CH |
| 1545 | n(AFE00000): STR LNK, SP, 0H |
| 1546 | n(A0E00004): STR R0, SP, 4H |
| 1547 | n(A1E00008): STR R1, SP, 8H |
| IF x.mode IN {ORB.Var, ORB.Par, RegI, Cond} THENo load(x)p ENDq |
| 1548 | o(4000180C): MOV R0, R0, 180CH |
| 1549 | o(81E00004): LDR R1, SP, 4H |
| 154A | o(81100000): LDR R1, R1, 0H |
| 154B | o(41180001): ADD R1, R1, 1H |
| 154C | o(00030001): ROR R0, R0, R1 |
| 154D | o(E8000003): BPL 3 [1551H] |
| 154E | p(80E00004): LDR R0, SP, 4H |
| 154F | p(81E00008): LDR R1, SP, 8H |
| 1550 | q(F7FFEC82): BL -4990 [01D3H] |
| ENDr Ord; |
| 1551 | r(8FE00000): LDR LNK, SP, 0H |
| 1552 | r(4EE8000C): ADD SP, SP, CH |
| 1553 | r(C700000F): B LNK |
| |
| PROCEDURE Len*(VAR x: Item); |
| BEGINs |
| 1554 | s .PROC 69 |
| 1554 | s(4EE9000C): SUB SP, SP, CH |
| 1555 | s(AFE00000): STR LNK, SP, 0H |
| 1556 | s(A0E00004): STR R0, SP, 4H |
| 1557 | s(A1E00008): STR R1, SP, 8H |
| IF x.type.lent >= 0 THENu |
| 1558 | t(80E00004): LDR R0, SP, 4H |
| 1559 | t(80000004): LDR R0, R0, 4H |
| 155A | t(D17FF84C): BLEQ MT [trap=4, pos=32760] |
| 155B | u(80000010): LDR R0, R0, 10H |
| 155C | u(40090000): SUB R0, R0, 0H |
| 155D | u(E5000013): BLT 19 [1571H] |
| IF x.mode = RegI THENv DEC(RH) ENDw ; |
| 155E | v(80E00004): LDR R0, SP, 4H |
| 155F | v(80000000): LDR R0, R0, 0H |
| 1560 | v(4009000B): SUB R0, R0, BH |
| 1561 | v(E9000005): BNE 5 [1567H] |
| 1562 | w .FIXUP D |
| 1562 | w(8D000024): LDR SB, MT, MOD0 [ORG] |
| 1563 | w(40D8002C): ADD R0, SB, 2CH [data] |
| 1564 | w(81000000): LDR R1, R0, 0H |
| 1565 | w(41190001): SUB R1, R1, 1H |
| 1566 | w(A1000000): STR R1, R0, 0H |
| x.mode := ORB.Const;x x.a := x.type.leny |
| 1567 | x(40000001): MOV R0, R0, 1H |
| 1568 | x(81E00004): LDR R1, SP, 4H |
| 1569 | x(A0100000): STR R0, R1, 0H |
| 156A | y(80E00004): LDR R0, SP, 4H |
| 156B | y(80000004): LDR R0, R0, 4H |
| 156C | y(D180594C): BLEQ MT [trap=4, pos=32857] |
| ELSEz (*open array*) Put2a(Ldr,b RH,c SP,d x.a + 4 +e frame)f;g x.mode := Reg;h x.r := RH;i incR |
| 156D | z(80000010): LDR R0, R0, 10H |
| 156E | z(81E00004): LDR R1, SP, 4H |
| 156F | z(A0100008): STR R0, R1, 8H |
| 1570 | a(E7000012): B 18 [1583H] |
| 1571 | b(40000008): MOV R0, R0, 8H |
| 1572 | c .FIXUP D |
| 1572 | c(8D000010): LDR SB, MT, MOD0 [ORG] |
| 1573 | c(81D0002C): LDR R1, SB, 2CH [data] |
| 1574 | d(4200000E): MOV R2, R0, EH |
| 1575 | e(83E00004): LDR R3, SP, 4H |
| 1576 | e(83300008): LDR R3, R3, 8H |
| 1577 | e(43380004): ADD R3, R3, 4H |
| 1578 | f(84D00034): LDR R4, SB, 34H |
| 1579 | f(03380004): ADD R3, R3, R4 |
| 157A | g(F7FFEAF6): BL -5386 [0071H] |
| 157B | h(4000000A): MOV R0, R0, AH |
| 157C | h(81E00004): LDR R1, SP, 4H |
| 157D | h(A0100000): STR R0, R1, 0H |
| 157E | i .FIXUP D |
| 157E | i(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 157F | i(80D0002C): LDR R0, SB, 2CH [data] |
| 1580 | i(81E00004): LDR R1, SP, 4H |
| 1581 | i(A0100010): STR R0, R1, 10H |
| ENDj |
| 1582 | j(F7FFEB2B): BL -5333 [00AEH] |
| ENDk Len; |
| 1583 | k(8FE00000): LDR LNK, SP, 0H |
| 1584 | k(4EE8000C): ADD SP, SP, CH |
| 1585 | k(C700000F): B LNK |
| |
| PROCEDURE Shift*(fct: LONGINT; VAR x, y: Item); |
| VAR op: LONGINT; |
| BEGINl load(x)m;n |
| 1586 | l .PROC 70 |
| 1586 | l(4EE9001C): SUB SP, SP, 1CH |
| 1587 | l(AFE00000): STR LNK, SP, 0H |
| 1588 | l(A0E00004): STR R0, SP, 4H |
| 1589 | l(A1E00008): STR R1, SP, 8H |
| 158A | l(A2E0000C): STR R2, SP, CH |
| 158B | l(A3E00010): STR R3, SP, 10H |
| 158C | l(A4E00014): STR R4, SP, 14H |
| 158D | m(80E00008): LDR R0, SP, 8H |
| 158E | m(81E0000C): LDR R1, SP, CH |
| 158F | n(F7FFEC43): BL -5053 [01D3H] |
| IF fct = 0 THENo op := Lsl ELSIFp fctq = 1 THENr op := Asr ELSEs opt := Ror ENDu ; |
| 1590 | o(80E00004): LDR R0, SP, 4H |
| 1591 | o(E9000003): BNE 3 [1595H] |
| 1592 | p(40000001): MOV R0, R0, 1H |
| 1593 | p(A0E00018): STR R0, SP, 18H |
| 1594 | q(E7000008): B 8 [159DH] |
| 1595 | r(80E00004): LDR R0, SP, 4H |
| 1596 | r(40090001): SUB R0, R0, 1H |
| 1597 | r(E9000003): BNE 3 [159BH] |
| 1598 | s(40000002): MOV R0, R0, 2H |
| 1599 | s(A0E00018): STR R0, SP, 18H |
| 159A | t(E7000002): B 2 [159DH] |
| 159B | u(40000003): MOV R0, R0, 3H |
| 159C | u(A0E00018): STR R0, SP, 18H |
| IF y.mode = ORB.Const THENv Put1(op,w x.r,x x.r,y y.a MOD 20H)z |
| 159D | v(80E00010): LDR R0, SP, 10H |
| 159E | v(80000000): LDR R0, R0, 0H |
| 159F | v(40090001): SUB R0, R0, 1H |
| 15A0 | v(E900000A): BNE 10 [15ABH] |
| 15A1 | w(80E00018): LDR R0, SP, 18H |
| 15A2 | x(81E00008): LDR R1, SP, 8H |
| 15A3 | x(81100010): LDR R1, R1, 10H |
| 15A4 | y(82E00008): LDR R2, SP, 8H |
| 15A5 | y(82200010): LDR R2, R2, 10H |
| 15A6 | z(83E00010): LDR R3, SP, 10H |
| 15A7 | z(83300008): LDR R3, R3, 8H |
| 15A8 | z(4334001F): AND R3, R3, 1FH |
| ELSEa loadb(y)c;d Put0(op,e RH-2,f x.r,g y.r)h;i DEC(RH);j x.r := RH-1 |
| 15A9 | a(F7FFEA74): BL -5516 [001EH] |
| 15AA | b(E7000015): B 21 [15C0H] |
| 15AB | c(80E00010): LDR R0, SP, 10H |
| 15AC | c(81E00014): LDR R1, SP, 14H |
| 15AD | d(F7FFEC25): BL -5083 [01D3H] |
| 15AE | e(80E00018): LDR R0, SP, 18H |
| 15AF | f .FIXUP D |
| 15AF | f(8D000031): LDR SB, MT, MOD0 [ORG] |
| 15B0 | f(81D0002C): LDR R1, SB, 2CH [data] |
| 15B1 | f(41190002): SUB R1, R1, 2H |
| 15B2 | g(82E00008): LDR R2, SP, 8H |
| 15B3 | g(82200010): LDR R2, R2, 10H |
| 15B4 | h(83E00010): LDR R3, SP, 10H |
| 15B5 | h(83300010): LDR R3, R3, 10H |
| 15B6 | i(F7FFEA49): BL -5559 [0000H] |
| 15B7 | j .FIXUP D |
| 15B7 | j(8D000008): LDR SB, MT, MOD0 [ORG] |
| 15B8 | j(40D8002C): ADD R0, SB, 2CH [data] |
| 15B9 | j(81000000): LDR R1, R0, 0H |
| 15BA | j(41190001): SUB R1, R1, 1H |
| 15BB | j(A1000000): STR R1, R0, 0H |
| ENDk |
| 15BC | k(80D0002C): LDR R0, SB, 2CH |
| 15BD | k(40090001): SUB R0, R0, 1H |
| 15BE | k(81E00008): LDR R1, SP, 8H |
| 15BF | k(A0100010): STR R0, R1, 10H |
| ENDl Shift; |
| 15C0 | l(8FE00000): LDR LNK, SP, 0H |
| 15C1 | l(4EE8001C): ADD SP, SP, 1CH |
| 15C2 | l(C700000F): B LNK |
| |
| PROCEDURE ADC*(VAR x, y: Item); |
| BEGINm load(x)n;o load(y)p;q Put0(Add+2000H,r x.r,s x.r,t y.r)u;v DEC(RH) |
| 15C3 | m .PROC 71 |
| 15C3 | m(4EE90014): SUB SP, SP, 14H |
| 15C4 | m(AFE00000): STR LNK, SP, 0H |
| 15C5 | m(A0E00004): STR R0, SP, 4H |
| 15C6 | m(A1E00008): STR R1, SP, 8H |
| 15C7 | m(A2E0000C): STR R2, SP, CH |
| 15C8 | m(A3E00010): STR R3, SP, 10H |
| 15C9 | n(80E00004): LDR R0, SP, 4H |
| 15CA | n(81E00008): LDR R1, SP, 8H |
| 15CB | o(F7FFEC07): BL -5113 [01D3H] |
| 15CC | p(80E0000C): LDR R0, SP, CH |
| 15CD | p(81E00010): LDR R1, SP, 10H |
| 15CE | q(F7FFEC04): BL -5116 [01D3H] |
| 15CF | r(40002008): MOV R0, R0, 2008H |
| 15D0 | s(81E00004): LDR R1, SP, 4H |
| 15D1 | s(81100010): LDR R1, R1, 10H |
| 15D2 | t(82E00004): LDR R2, SP, 4H |
| 15D3 | t(82200010): LDR R2, R2, 10H |
| 15D4 | u(83E0000C): LDR R3, SP, CH |
| 15D5 | u(83300010): LDR R3, R3, 10H |
| 15D6 | v(F7FFEA29): BL -5591 [0000H] |
| ENDw ADC; |
| 15D7 | w .FIXUP D |
| 15D7 | w(8D000020): LDR SB, MT, MOD0 [ORG] |
| 15D8 | w(40D8002C): ADD R0, SB, 2CH [data] |
| 15D9 | w(81000000): LDR R1, R0, 0H |
| 15DA | w(41190001): SUB R1, R1, 1H |
| 15DB | w(A1000000): STR R1, R0, 0H |
| 15DC | w(8FE00000): LDR LNK, SP, 0H |
| 15DD | w(4EE80014): ADD SP, SP, 14H |
| 15DE | w(C700000F): B LNK |
| |
| PROCEDURE SBC*(VAR x, y: Item); |
| BEGINx load(x)y;z load(y)a;b Put0(Sub+2000H,c x.r,d x.r,e y.r)f;g DEC(RH) |
| 15DF | x .PROC 72 |
| 15DF | x(4EE90014): SUB SP, SP, 14H |
| 15E0 | x(AFE00000): STR LNK, SP, 0H |
| 15E1 | x(A0E00004): STR R0, SP, 4H |
| 15E2 | x(A1E00008): STR R1, SP, 8H |
| 15E3 | x(A2E0000C): STR R2, SP, CH |
| 15E4 | x(A3E00010): STR R3, SP, 10H |
| 15E5 | y(80E00004): LDR R0, SP, 4H |
| 15E6 | y(81E00008): LDR R1, SP, 8H |
| 15E7 | z(F7FFEBEB): BL -5141 [01D3H] |
| 15E8 | a(80E0000C): LDR R0, SP, CH |
| 15E9 | a(81E00010): LDR R1, SP, 10H |
| 15EA | b(F7FFEBE8): BL -5144 [01D3H] |
| 15EB | c(40002009): MOV R0, R0, 2009H |
| 15EC | d(81E00004): LDR R1, SP, 4H |
| 15ED | d(81100010): LDR R1, R1, 10H |
| 15EE | e(82E00004): LDR R2, SP, 4H |
| 15EF | e(82200010): LDR R2, R2, 10H |
| 15F0 | f(83E0000C): LDR R3, SP, CH |
| 15F1 | f(83300010): LDR R3, R3, 10H |
| 15F2 | g(F7FFEA0D): BL -5619 [0000H] |
| ENDh SBC; |
| 15F3 | h .FIXUP D |
| 15F3 | h(8D00001C): LDR SB, MT, MOD0 [ORG] |
| 15F4 | h(40D8002C): ADD R0, SB, 2CH [data] |
| 15F5 | h(81000000): LDR R1, R0, 0H |
| 15F6 | h(41190001): SUB R1, R1, 1H |
| 15F7 | h(A1000000): STR R1, R0, 0H |
| 15F8 | h(8FE00000): LDR LNK, SP, 0H |
| 15F9 | h(4EE80014): ADD SP, SP, 14H |
| 15FA | h(C700000F): B LNK |
| |
| PROCEDURE UML*(VAR x, y: Item); |
| BEGINi load(x)j;k load(y)l;m Put0(Mul+2000H,n x.r,o x.r,p y.r)q;r DEC(RH) |
| 15FB | i .PROC 73 |
| 15FB | i(4EE90014): SUB SP, SP, 14H |
| 15FC | i(AFE00000): STR LNK, SP, 0H |
| 15FD | i(A0E00004): STR R0, SP, 4H |
| 15FE | i(A1E00008): STR R1, SP, 8H |
| 15FF | i(A2E0000C): STR R2, SP, CH |
| 1600 | i(A3E00010): STR R3, SP, 10H |
| 1601 | j(80E00004): LDR R0, SP, 4H |
| 1602 | j(81E00008): LDR R1, SP, 8H |
| 1603 | k(F7FFEBCF): BL -5169 [01D3H] |
| 1604 | l(80E0000C): LDR R0, SP, CH |
| 1605 | l(81E00010): LDR R1, SP, 10H |
| 1606 | m(F7FFEBCC): BL -5172 [01D3H] |
| 1607 | n(4000200A): MOV R0, R0, 200AH |
| 1608 | o(81E00004): LDR R1, SP, 4H |
| 1609 | o(81100010): LDR R1, R1, 10H |
| 160A | p(82E00004): LDR R2, SP, 4H |
| 160B | p(82200010): LDR R2, R2, 10H |
| 160C | q(83E0000C): LDR R3, SP, CH |
| 160D | q(83300010): LDR R3, R3, 10H |
| 160E | r(F7FFE9F1): BL -5647 [0000H] |
| ENDs UML; |
| 160F | s .FIXUP D |
| 160F | s(8D00001C): LDR SB, MT, MOD0 [ORG] |
| 1610 | s(40D8002C): ADD R0, SB, 2CH [data] |
| 1611 | s(81000000): LDR R1, R0, 0H |
| 1612 | s(41190001): SUB R1, R1, 1H |
| 1613 | s(A1000000): STR R1, R0, 0H |
| 1614 | s(8FE00000): LDR LNK, SP, 0H |
| 1615 | s(4EE80014): ADD SP, SP, 14H |
| 1616 | s(C700000F): B LNK |
| |
| PROCEDURE Bit*(VAR x, y: Item); |
| BEGINt load(x)u;v Put2(Ldr,w x.r,x x.r,y 0)z;a |
| 1617 | t .PROC 74 |
| 1617 | t(4EE90014): SUB SP, SP, 14H |
| 1618 | t(AFE00000): STR LNK, SP, 0H |
| 1619 | t(A0E00004): STR R0, SP, 4H |
| 161A | t(A1E00008): STR R1, SP, 8H |
| 161B | t(A2E0000C): STR R2, SP, CH |
| 161C | t(A3E00010): STR R3, SP, 10H |
| 161D | u(80E00004): LDR R0, SP, 4H |
| 161E | u(81E00008): LDR R1, SP, 8H |
| 161F | v(F7FFEBB3): BL -5197 [01D3H] |
| 1620 | w(40000008): MOV R0, R0, 8H |
| 1621 | x(81E00004): LDR R1, SP, 4H |
| 1622 | x(81100010): LDR R1, R1, 10H |
| 1623 | y(82E00004): LDR R2, SP, 4H |
| 1624 | y(82200010): LDR R2, R2, 10H |
| 1625 | z(43000000): MOV R3, R0, 0H |
| 1626 | a(F7FFEA4A): BL -5558 [0071H] |
| IF y.mode = ORB.Const THENb Put1(Ror,c x.r,d x.r,e y.a+1)f;g DEC(RH) |
| 1627 | b(80E0000C): LDR R0, SP, CH |
| 1628 | b(80000000): LDR R0, R0, 0H |
| 1629 | b(40090001): SUB R0, R0, 1H |
| 162A | b(E900000F): BNE 15 [163AH] |
| 162B | c(40000003): MOV R0, R0, 3H |
| 162C | d(81E00004): LDR R1, SP, 4H |
| 162D | d(81100010): LDR R1, R1, 10H |
| 162E | e(82E00004): LDR R2, SP, 4H |
| 162F | e(82200010): LDR R2, R2, 10H |
| 1630 | f(83E0000C): LDR R3, SP, CH |
| 1631 | f(83300008): LDR R3, R3, 8H |
| 1632 | f(43380001): ADD R3, R3, 1H |
| 1633 | g(F7FFE9EA): BL -5654 [001EH] |
| ELSEh loadi(y)j;k Put1(Add,l y.r,m y.r,n 1)o;p Put0(Ror,q x.r,r x.r,s y.r)t;u DEC(RH, 2) |
| 1634 | h .FIXUP D |
| 1634 | h(8D000025): LDR SB, MT, MOD0 [ORG] |
| 1635 | h(40D8002C): ADD R0, SB, 2CH [data] |
| 1636 | h(81000000): LDR R1, R0, 0H |
| 1637 | h(41190001): SUB R1, R1, 1H |
| 1638 | h(A1000000): STR R1, R0, 0H |
| 1639 | i(E7000017): B 23 [1651H] |
| 163A | j(80E0000C): LDR R0, SP, CH |
| 163B | j(81E00010): LDR R1, SP, 10H |
| 163C | k(F7FFEB96): BL -5226 [01D3H] |
| 163D | l(40000008): MOV R0, R0, 8H |
| 163E | m(81E0000C): LDR R1, SP, CH |
| 163F | m(81100010): LDR R1, R1, 10H |
| 1640 | n(82E0000C): LDR R2, SP, CH |
| 1641 | n(82200010): LDR R2, R2, 10H |
| 1642 | o(43000001): MOV R3, R0, 1H |
| 1643 | p(F7FFE9DA): BL -5670 [001EH] |
| 1644 | q(40000003): MOV R0, R0, 3H |
| 1645 | r(81E00004): LDR R1, SP, 4H |
| 1646 | r(81100010): LDR R1, R1, 10H |
| 1647 | s(82E00004): LDR R2, SP, 4H |
| 1648 | s(82200010): LDR R2, R2, 10H |
| 1649 | t(83E0000C): LDR R3, SP, CH |
| 164A | t(83300010): LDR R3, R3, 10H |
| 164B | u(F7FFE9B4): BL -5708 [0000H] |
| ENDv ; |
| 164C | v .FIXUP D |
| 164C | v(8D000018): LDR SB, MT, MOD0 [ORG] |
| 164D | v(40D8002C): ADD R0, SB, 2CH [data] |
| 164E | v(81000000): LDR R1, R0, 0H |
| 164F | v(41190002): SUB R1, R1, 2H |
| 1650 | v(A1000000): STR R1, R0, 0H |
| SetCC(x,w MI)x |
| 1651 | w(80E00004): LDR R0, SP, 4H |
| 1652 | w(81E00008): LDR R1, SP, 8H |
| 1653 | x(42000000): MOV R2, R0, 0H |
| ENDy Bit; |
| 1654 | y(F7FFEA83): BL -5501 [00D8H] |
| 1655 | y(8FE00000): LDR LNK, SP, 0H |
| 1656 | y(4EE80014): ADD SP, SP, 14H |
| 1657 | y(C700000F): B LNK |
| |
| PROCEDURE Register*(VAR x: Item); |
| BEGINz (*x.mode = Const*) |
| 1658 | z .PROC 75 |
| 1658 | z(4EE9000C): SUB SP, SP, CH |
| 1659 | z(AFE00000): STR LNK, SP, 0H |
| 165A | z(A0E00004): STR R0, SP, 4H |
| 165B | z(A1E00008): STR R1, SP, 8H |
| Put0(Mov,a RH,b 0,c x.a MOD 10H)d;e x.mode := Reg;f x.r := RH;g incR |
| 165C | a(40000000): MOV R0, R0, 0H |
| 165D | b .FIXUP D |
| 165D | b(8D000011): LDR SB, MT, MOD0 [ORG] |
| 165E | b(81D0002C): LDR R1, SB, 2CH [data] |
| 165F | c(42000000): MOV R2, R0, 0H |
| 1660 | d(83E00004): LDR R3, SP, 4H |
| 1661 | d(83300008): LDR R3, R3, 8H |
| 1662 | d(4334000F): AND R3, R3, FH |
| 1663 | e(F7FFE99C): BL -5732 [0000H] |
| 1664 | f(4000000A): MOV R0, R0, AH |
| 1665 | f(81E00004): LDR R1, SP, 4H |
| 1666 | f(A0100000): STR R0, R1, 0H |
| 1667 | g .FIXUP D |
| 1667 | g(8D00000A): LDR SB, MT, MOD0 [ORG] |
| 1668 | g(80D0002C): LDR R0, SB, 2CH [data] |
| 1669 | g(81E00004): LDR R1, SP, 4H |
| 166A | g(A0100010): STR R0, R1, 10H |
| ENDh Register; |
| 166B | h(F7FFEA42): BL -5566 [00AEH] |
| 166C | h(8FE00000): LDR LNK, SP, 0H |
| 166D | h(4EE8000C): ADD SP, SP, CH |
| 166E | h(C700000F): B LNK |
| |
| PROCEDURE H*(VAR x: Item); |
| BEGINi (*x.mode = Const*) |
| 166F | i .PROC 76 |
| 166F | i(4EE9000C): SUB SP, SP, CH |
| 1670 | i(AFE00000): STR LNK, SP, 0H |
| 1671 | i(A0E00004): STR R0, SP, 4H |
| 1672 | i(A1E00008): STR R1, SP, 8H |
| Put0(Mov + U + x.a MOD 2 *j V,k RH,l 0,m 0)n;o x.mode := Reg;p x.r := RH;q incR |
| 1673 | j(80E00004): LDR R0, SP, 4H |
| 1674 | j(80000008): LDR R0, R0, 8H |
| 1675 | j(40040001): AND R0, R0, 1H |
| 1676 | k(4001000C): LSL R0, R0, CH |
| 1677 | k(41002000): MOV R1, R0, 2000H |
| 1678 | k(00180000): ADD R0, R1, R0 |
| 1679 | l .FIXUP D |
| 1679 | l(8D000012): LDR SB, MT, MOD0 [ORG] |
| 167A | l(81D0002C): LDR R1, SB, 2CH [data] |
| 167B | m(42000000): MOV R2, R0, 0H |
| 167C | n(43000000): MOV R3, R0, 0H |
| 167D | o(F7FFE982): BL -5758 [0000H] |
| 167E | p(4000000A): MOV R0, R0, AH |
| 167F | p(81E00004): LDR R1, SP, 4H |
| 1680 | p(A0100000): STR R0, R1, 0H |
| 1681 | q .FIXUP D |
| 1681 | q(8D000008): LDR SB, MT, MOD0 [ORG] |
| 1682 | q(80D0002C): LDR R0, SB, 2CH [data] |
| 1683 | q(81E00004): LDR R1, SP, 4H |
| 1684 | q(A0100010): STR R0, R1, 10H |
| ENDr H; |
| 1685 | r(F7FFEA28): BL -5592 [00AEH] |
| 1686 | r(8FE00000): LDR LNK, SP, 0H |
| 1687 | r(4EE8000C): ADD SP, SP, CH |
| 1688 | r(C700000F): B LNK |
| |
| PROCEDURE Adr*(VAR x: Item); |
| BEGINs |
| 1689 | s .PROC 77 |
| 1689 | s(4EE9000C): SUB SP, SP, CH |
| 168A | s(AFE00000): STR LNK, SP, 0H |
| 168B | s(A0E00004): STR R0, SP, 4H |
| 168C | s(A1E00008): STR R1, SP, 8H |
| IF x.mode IN {ORB.Var, ORB.Par, RegI} THENt loadAdr(x)u |
| 168D | t(4000080C): MOV R0, R0, 80CH |
| 168E | t(81E00004): LDR R1, SP, 4H |
| 168F | t(81100000): LDR R1, R1, 0H |
| 1690 | t(41180001): ADD R1, R1, 1H |
| 1691 | t(00030001): ROR R0, R0, R1 |
| 1692 | t(E8000004): BPL 4 [1697H] |
| 1693 | u(80E00004): LDR R0, SP, 4H |
| 1694 | u(81E00008): LDR R1, SP, 8H |
| ELSIFv (wx.mode = ORB.Const)x & (yx.type.formz = ORB.Proc)a THENb load(x)c |
| 1695 | v(F7FFEC26): BL -5082 [02BCH] |
| 1696 | w(E7000020): B 32 [16B7H] |
| 1697 | x(80E00004): LDR R0, SP, 4H |
| 1698 | x(80000000): LDR R0, R0, 0H |
| 1699 | x(40090001): SUB R0, R0, 1H |
| 169A | y(E900000A): BNE 10 [16A5H] |
| 169B | z(80E00004): LDR R0, SP, 4H |
| 169C | z(80000004): LDR R0, R0, 4H |
| 169D | z(D1860B4C): BLEQ MT [trap=4, pos=34315] |
| 169E | a(80000000): LDR R0, R0, 0H |
| 169F | a(4009000A): SUB R0, R0, AH |
| 16A0 | b(E9000004): BNE 4 [16A5H] |
| 16A1 | c(80E00004): LDR R0, SP, 4H |
| 16A2 | c(81E00008): LDR R1, SP, 8H |
| ELSIFd (ex.mode = ORB.Const)f & (gx.type.formh = ORB.String)i THENj loadStringAdr(x)k |
| 16A3 | d(F7FFEB2F): BL -5329 [01D3H] |
| 16A4 | e(E7000012): B 18 [16B7H] |
| 16A5 | f(80E00004): LDR R0, SP, 4H |
| 16A6 | f(80000000): LDR R0, R0, 0H |
| 16A7 | f(40090001): SUB R0, R0, 1H |
| 16A8 | g(E900000A): BNE 10 [16B3H] |
| 16A9 | h(80E00004): LDR R0, SP, 4H |
| 16AA | h(80000004): LDR R0, R0, 4H |
| 16AB | h(D186524C): BLEQ MT [trap=4, pos=34386] |
| 16AC | i(80000000): LDR R0, R0, 0H |
| 16AD | i(4009000B): SUB R0, R0, BH |
| 16AE | j(E9000004): BNE 4 [16B3H] |
| 16AF | k(80E00004): LDR R0, SP, 4H |
| 16B0 | k(81E00008): LDR R1, SP, 8H |
| ELSEl ORSm.Mark("not addressable")n |
| 16B1 | l(F7FFECC1): BL -4927 [0373H] |
| 16B2 | m(E7000004): B 4 [16B7H] |
| 16B3 | n .FIXUP D |
| 16B3 | n(8D000032): LDR SB, MT, MOD0 [ORG] |
| 16B4 | n(40D88A8C): ADD R0, SB, FFFF8A8CH [data] |
| 16B5 | n(41000010): MOV R1, R0, 10H |
| ENDo |
| 16B6 | o .FIXUP P |
| 16B6 | o(F7209270): BL MOD2 [ORS] PROC9 |
| ENDp Adr; |
| 16B7 | p(8FE00000): LDR LNK, SP, 0H |
| 16B8 | p(4EE8000C): ADD SP, SP, CH |
| 16B9 | p(C700000F): B LNK |
| |
| PROCEDURE Condition*(VAR x: Item); |
| BEGINq (*x.mode = Const*) SetCC(x,r x.a)s |
| 16BA | q .PROC 78 |
| 16BA | q(4EE9000C): SUB SP, SP, CH |
| 16BB | q(AFE00000): STR LNK, SP, 0H |
| 16BC | q(A0E00004): STR R0, SP, 4H |
| 16BD | q(A1E00008): STR R1, SP, 8H |
| 16BE | r(80E00004): LDR R0, SP, 4H |
| 16BF | r(81E00008): LDR R1, SP, 8H |
| 16C0 | s(82E00004): LDR R2, SP, 4H |
| 16C1 | s(82200008): LDR R2, R2, 8H |
| ENDt Condition; |
| 16C2 | t(F7FFEA15): BL -5611 [00D8H] |
| 16C3 | t(8FE00000): LDR LNK, SP, 0H |
| 16C4 | t(4EE8000C): ADD SP, SP, CH |
| 16C5 | t(C700000F): B LNK |
| |
| PROCEDURE Open*(v: INTEGER); |
| BEGINu pc := 0;v tdx := 0;w strx := 0;x RH := 0;y fixorgP := 0;z fixorgD := 0;a fixorgT := 0;b check := v # 0;c version := v;d |
| 16C6 | u .PROC 79 |
| 16C6 | u(4EE90008): SUB SP, SP, 8H |
| 16C7 | u(AFE00000): STR LNK, SP, 0H |
| 16C8 | u(A0E00004): STR R0, SP, 4H |
| 16C9 | v(40000000): MOV R0, R0, 0H |
| 16CA | v .FIXUP D |
| 16CA | v(8D000017): LDR SB, MT, MOD0 [ORG] |
| 16CB | v(A0D00018): STR R0, SB, 18H [data] |
| 16CC | w(40000000): MOV R0, R0, 0H |
| 16CD | w(A0D00020): STR R0, SB, 20H |
| 16CE | x(40000000): MOV R0, R0, 0H |
| 16CF | x(A0D00024): STR R0, SB, 24H |
| 16D0 | y(40000000): MOV R0, R0, 0H |
| 16D1 | y(A0D0002C): STR R0, SB, 2CH |
| 16D2 | z(40000000): MOV R0, R0, 0H |
| 16D3 | z(A0D00038): STR R0, SB, 38H |
| 16D4 | a(40000000): MOV R0, R0, 0H |
| 16D5 | a(A0D0003C): STR R0, SB, 3CH |
| 16D6 | b(40000000): MOV R0, R0, 0H |
| 16D7 | b(A0D00040): STR R0, SB, 40H |
| 16D8 | c(80E00004): LDR R0, SP, 4H |
| 16D9 | c(E1000002): BEQ 2 [16DCH] |
| 16DA | c(40000001): MOV R0, R0, 1H |
| 16DB | c(E7000001): B 1 [16DDH] |
| 16DC | c(40000000): MOV R0, R0, 0H |
| 16DD | c .FIXUP D |
| 16DD | c(8D000013): LDR SB, MT, MOD0 [ORG] |
| 16DE | c(B0D00044): STR R0, SB, 44H [data] |
| 16DF | d(80E00004): LDR R0, SP, 4H |
| 16E0 | d(A0D00048): STR R0, SB, 48H |
| IF v = 0 THENe pc := 1;f |
| 16E1 | e(80E00004): LDR R0, SP, 4H |
| 16E2 | e(E9000012): BNE 18 [16F5H] |
| 16E3 | f(40000001): MOV R0, R0, 1H |
| 16E4 | f .FIXUP D |
| 16E4 | f(8D000007): LDR SB, MT, MOD0 [ORG] |
| 16E5 | f(A0D00018): STR R0, SB, 18H [data] |
| REPEAT code[pc]g := 0;h INC(pc) UNTILi pc = 8 |
| 16E6 | g .FIXUP D |
| 16E6 | g(8D000002): LDR SB, MT, MOD0 [ORG] |
| 16E7 | g(80D00018): LDR R0, SB, 18H [data] |
| 16E8 | g(41091F40): SUB R1, R0, 1F40H |
| 16E9 | g(DA87D61C): BLCC MT [trap=1, pos=34774] |
| 16EA | g(40010002): LSL R0, R0, 2H |
| 16EB | g(00D80000): ADD R0, SB, R0 |
| 16EC | h(41000000): MOV R1, R0, 0H |
| 16ED | h(A1000064): STR R1, R0, 64H |
| 16EE | i(40D80018): ADD R0, SB, 18H |
| 16EF | i(81000000): LDR R1, R0, 0H |
| 16F0 | i(41180001): ADD R1, R1, 1H |
| 16F1 | i(A1000000): STR R1, R0, 0H |
| ENDj |
| 16F2 | j(80D00018): LDR R0, SB, 18H |
| 16F3 | j(40090008): SUB R0, R0, 8H |
| 16F4 | j(E9FFFFF1): BNE -15 [16E6H] |
| ENDk Open; |
| 16F5 | k(8FE00000): LDR LNK, SP, 0H |
| 16F6 | k(4EE80008): ADD SP, SP, 8H |
| 16F7 | k(C700000F): B LNK |
| |
| PROCEDURE SetDataSize*(dc: LONGINT); |
| BEGINl varsize := dc |
| 16F8 | l .PROC 80 |
| 16F8 | l(4EE90008): SUB SP, SP, 8H |
| 16F9 | l(AFE00000): STR LNK, SP, 0H |
| 16FA | l(A0E00004): STR R0, SP, 4H |
| ENDm SetDataSize; |
| 16FB | m(80E00004): LDR R0, SP, 4H |
| 16FC | m .FIXUP D |
| 16FC | m(8D000016): LDR SB, MT, MOD0 [ORG] |
| 16FD | m(A0D0001C): STR R0, SB, 1CH [data] |
| 16FE | m(8FE00000): LDR LNK, SP, 0H |
| 16FF | m(4EE80008): ADD SP, SP, 8H |
| 1700 | m(C700000F): B LNK |
| |
| PROCEDURE Header*; |
| BEGINn entry := pc*4;o |
| 1701 | n .PROC 81 |
| 1701 | n .COMMAND Header |
| 1701 | n(4EE90004): SUB SP, SP, 4H |
| 1702 | n(AFE00000): STR LNK, SP, 0H |
| 1703 | o .FIXUP D |
| 1703 | o(8D000007): LDR SB, MT, MOD0 [ORG] |
| 1704 | o(80D00018): LDR R0, SB, 18H [data] |
| 1705 | o(40010002): LSL R0, R0, 2H |
| 1706 | o(A0D00028): STR R0, SB, 28H |
| IF version = 0 THENp code[0] := 0E7000000H-1 + pc;q Put1a(Mov,r SB,s 0,t VarOrg0)u;v Put1a(Mov,w SP,x 0,y StkOrg0)z (*RISC-0*) |
| 1707 | p(80D00048): LDR R0, SB, 48H |
| 1708 | p(E9000011): BNE 17 [171AH] |
| 1709 | q(6000E6FF): MOV' R0, R0, FFFFE6FFH |
| 170A | q(4006FFFF): IOR R0, R0, FFFFFFFFH |
| 170B | q .FIXUP D |
| 170B | q(8D000008): LDR SB, MT, MOD0 [ORG] |
| 170C | q(81D00018): LDR R1, SB, 18H [data] |
| 170D | q(00080001): ADD R0, R0, R1 |
| 170E | q(A0D00064): STR R0, SB, 64H |
| 170F | r(40000000): MOV R0, R0, 0H |
| 1710 | s(4100000D): MOV R1, R0, DH |
| 1711 | t(42000000): MOV R2, R0, 0H |
| 1712 | u(43000000): MOV R3, R0, 0H |
| 1713 | v(F7FFE930): BL -5840 [0044H] |
| 1714 | w(40000000): MOV R0, R0, 0H |
| 1715 | x(4100000E): MOV R1, R0, EH |
| 1716 | y(42000000): MOV R2, R0, 0H |
| 1717 | z(5300FFC0): MOV R3, R0, FFFFFFC0H |
| ELSEa Put1b(Sub,c SP,d SP,e 4)f;g Put2(Str,h LNK,i SP,j 0)k;l invalSB |
| 1718 | a(F7FFE92B): BL -5845 [0044H] |
| 1719 | b(E700000B): B 11 [1725H] |
| 171A | c(40000009): MOV R0, R0, 9H |
| 171B | d(4100000E): MOV R1, R0, EH |
| 171C | e(4200000E): MOV R2, R0, EH |
| 171D | f(43000004): MOV R3, R0, 4H |
| 171E | g(F7FFE8FF): BL -5889 [001EH] |
| 171F | h(4000000A): MOV R0, R0, AH |
| 1720 | i(4100000F): MOV R1, R0, FH |
| 1721 | j(4200000E): MOV R2, R0, EH |
| 1722 | k(43000000): MOV R3, R0, 0H |
| 1723 | l(F7FFE94D): BL -5811 [0071H] |
| ENDm |
| 1724 | m(F7FFE9EF): BL -5649 [0114H] |
| ENDn Header; |
| 1725 | n(8FE00000): LDR LNK, SP, 0H |
| 1726 | n(4EE80004): ADD SP, SP, 4H |
| 1727 | n(C700000F): B LNK |
| |
| PROCEDURE NofPtrs(typ: ORB.Type): LONGINT; |
| VAR fld: ORB.Object; n: LONGINT; |
| BEGINo |
| 1728 | o(4EE90010): SUB SP, SP, 10H |
| 1729 | o(AFE00000): STR LNK, SP, 0H |
| 172A | o(A0E00004): STR R0, SP, 4H |
| IF (typ.formp = ORB.Pointer)q OR (rtyp.forms = ORB.NilTyp)t THENu n := 1 |
| 172B | p(80E00004): LDR R0, SP, 4H |
| 172C | p(D189BC4C): BLEQ MT [trap=4, pos=35260] |
| 172D | q(80000000): LDR R0, R0, 0H |
| 172E | q(40090007): SUB R0, R0, 7H |
| 172F | r(E1000005): BEQ 5 [1735H] |
| 1730 | s(80E00004): LDR R0, SP, 4H |
| 1731 | s(D189D84C): BLEQ MT [trap=4, pos=35288] |
| 1732 | t(80000000): LDR R0, R0, 0H |
| 1733 | t(40090008): SUB R0, R0, 8H |
| 1734 | u(E9000003): BNE 3 [1738H] |
| ELSIFv typw.formx = ORB.Record THENy |
| 1735 | v(40000001): MOV R0, R0, 1H |
| 1736 | v(A0E0000C): STR R0, SP, CH |
| 1737 | w(E700002B): B 43 [1763H] |
| 1738 | x(80E00004): LDR R0, SP, 4H |
| 1739 | x(D18A054C): BLEQ MT [trap=4, pos=35333] |
| 173A | y(80000000): LDR R0, R0, 0H |
| 173B | y(4009000D): SUB R0, R0, DH |
| 173C | y(E9000015): BNE 21 [1752H] |
| fld := typ.dscz;a n := 0;b |
| 173D | z(80E00004): LDR R0, SP, 4H |
| 173E | z(D18A2C4C): BLEQ MT [trap=4, pos=35372] |
| 173F | a(80000014): LDR R0, R0, 14H |
| 1740 | a(A0E00008): STR R0, SP, 8H |
| 1741 | b(40000000): MOV R0, R0, 0H |
| 1742 | b(A0E0000C): STR R0, SP, CH |
| WHILE fld # NIL DOc n := NofPtrs(fld.typed)e +f n;g fld := fld.nexth ENDi |
| 1743 | c(80E00008): LDR R0, SP, 8H |
| 1744 | c(E100000C): BEQ 12 [1751H] |
| 1745 | d(80E00008): LDR R0, SP, 8H |
| 1746 | d(D18A644C): BLEQ MT [trap=4, pos=35428] |
| 1747 | e(80000010): LDR R0, R0, 10H |
| 1748 | f(F7FFFFDF): BL -33 [1728H] |
| 1749 | g(81E0000C): LDR R1, SP, CH |
| 174A | g(00080001): ADD R0, R0, R1 |
| 174B | g(A0E0000C): STR R0, SP, CH |
| 174C | h(80E00008): LDR R0, SP, 8H |
| 174D | h(D18A7A4C): BLEQ MT [trap=4, pos=35450] |
| 174E | i(80000008): LDR R0, R0, 8H |
| 174F | i(A0E00008): STR R0, SP, 8H |
| 1750 | i(E7FFFFF2): B -14 [1743H] |
| ELSIF typj.formk = ORB.Array THENl n := NofPtrs(typ.basem)n *o typ.lenp |
| 1751 | j(E7000011): B 17 [1763H] |
| 1752 | k(80E00004): LDR R0, SP, 4H |
| 1753 | k(D18A914C): BLEQ MT [trap=4, pos=35473] |
| 1754 | l(80000000): LDR R0, R0, 0H |
| 1755 | l(4009000C): SUB R0, R0, CH |
| 1756 | l(E900000A): BNE 10 [1761H] |
| 1757 | m(80E00004): LDR R0, SP, 4H |
| 1758 | m(D18AB84C): BLEQ MT [trap=4, pos=35512] |
| 1759 | n(8000001C): LDR R0, R0, 1CH |
| 175A | o(F7FFFFCD): BL -51 [1728H] |
| 175B | p(81E00004): LDR R1, SP, 4H |
| 175C | p(D18AC34C): BLEQ MT [trap=4, pos=35523] |
| ELSEq nr := 0 |
| 175D | q(81100010): LDR R1, R1, 10H |
| 175E | q(000A0001): MUL R0, R0, R1 |
| 175F | q(A0E0000C): STR R0, SP, CH |
| 1760 | r(E7000002): B 2 [1763H] |
| ENDs ; |
| 1761 | s(40000000): MOV R0, R0, 0H |
| 1762 | s(A0E0000C): STR R0, SP, CH |
| RETURN n |
| ENDt NofPtrs; |
| 1763 | t(80E0000C): LDR R0, SP, CH |
| 1764 | t(8FE00000): LDR LNK, SP, 0H |
| 1765 | t(4EE80010): ADD SP, SP, 10H |
| 1766 | t(C700000F): B LNK |
| |
| PROCEDURE FindPtrs(VAR R: Files.Rider; typ: ORB.Type; adr: LONGINT); |
| VAR fld: ORB.Object; i, s: LONGINT; |
| BEGINu |
| 1767 | u(4EE90020): SUB SP, SP, 20H |
| 1768 | u(AFE00000): STR LNK, SP, 0H |
| 1769 | u(A0E00004): STR R0, SP, 4H |
| 176A | u(A1E00008): STR R1, SP, 8H |
| 176B | u(A2E0000C): STR R2, SP, CH |
| 176C | u(A3E00010): STR R3, SP, 10H |
| IF (typ.formv = ORB.Pointer)w OR (xtyp.formy = ORB.NilTyp)z THENa Files.WriteInt(R,b adr)c |
| 176D | v(80E0000C): LDR R0, SP, CH |
| 176E | v(D18B824C): BLEQ MT [trap=4, pos=35714] |
| 176F | w(80000000): LDR R0, R0, 0H |
| 1770 | w(40090007): SUB R0, R0, 7H |
| 1771 | x(E1000005): BEQ 5 [1777H] |
| 1772 | y(80E0000C): LDR R0, SP, CH |
| 1773 | y(D18B9E4C): BLEQ MT [trap=4, pos=35742] |
| 1774 | z(80000000): LDR R0, R0, 0H |
| 1775 | z(40090008): SUB R0, R0, 8H |
| 1776 | a(E9000005): BNE 5 [177CH] |
| 1777 | b(80E00004): LDR R0, SP, 4H |
| 1778 | b(81E00008): LDR R1, SP, 8H |
| 1779 | c(82E00010): LDR R2, SP, 10H |
| ELSIFd type.formf = ORB.Record THENg |
| 177A | d .FIXUP P |
| 177A | d(F71190C4): BL MOD1 [Files] PROC25 |
| 177B | e(E700003D): B 61 [17B9H] |
| 177C | f(80E0000C): LDR R0, SP, CH |
| 177D | f(D18BDB4C): BLEQ MT [trap=4, pos=35803] |
| 177E | g(80000000): LDR R0, R0, 0H |
| 177F | g(4009000D): SUB R0, R0, DH |
| 1780 | g(E9000017): BNE 23 [1798H] |
| fld := typ.dsch;i |
| 1781 | h(80E0000C): LDR R0, SP, CH |
| 1782 | h(D18C024C): BLEQ MT [trap=4, pos=35842] |
| 1783 | i(80000014): LDR R0, R0, 14H |
| 1784 | i(A0E00014): STR R0, SP, 14H |
| WHILE fld # NIL DOj FindPtrs(R,k fld.typel,m fld.valn + adr)o;p fld := fld.nextq ENDr |
| 1785 | j(80E00014): LDR R0, SP, 14H |
| 1786 | j(E1000010): BEQ 16 [1797H] |
| 1787 | k(80E00004): LDR R0, SP, 4H |
| 1788 | k(81E00008): LDR R1, SP, 8H |
| 1789 | l(82E00014): LDR R2, SP, 14H |
| 178A | l(D18C314C): BLEQ MT [trap=4, pos=35889] |
| 178B | m(82200010): LDR R2, R2, 10H |
| 178C | n(83E00014): LDR R3, SP, 14H |
| 178D | n(D18C3A4C): BLEQ MT [trap=4, pos=35898] |
| 178E | o(83300034): LDR R3, R3, 34H |
| 178F | o(84E00010): LDR R4, SP, 10H |
| 1790 | o(03380004): ADD R3, R3, R4 |
| 1791 | p(F7FFFFD5): BL -43 [1767H] |
| 1792 | q(80E00014): LDR R0, SP, 14H |
| 1793 | q(D18C524C): BLEQ MT [trap=4, pos=35922] |
| 1794 | r(80000008): LDR R0, R0, 8H |
| 1795 | r(A0E00014): STR R0, SP, 14H |
| 1796 | r(E7FFFFEE): B -18 [1785H] |
| ELSIF typs.formt = ORB.Array THENu |
| 1797 | s(E7000021): B 33 [17B9H] |
| 1798 | t(80E0000C): LDR R0, SP, CH |
| 1799 | t(D18C694C): BLEQ MT [trap=4, pos=35945] |
| 179A | u(80000000): LDR R0, R0, 0H |
| 179B | u(4009000C): SUB R0, R0, CH |
| 179C | u(E900001C): BNE 28 [17B9H] |
| s := typ.basev.sizew;x |
| 179D | v(80E0000C): LDR R0, SP, CH |
| 179E | v(D18C8E4C): BLEQ MT [trap=4, pos=35982] |
| 179F | w(8000001C): LDR R0, R0, 1CH |
| 17A0 | w(D18C934C): BLEQ MT [trap=4, pos=35987] |
| 17A1 | x(80000020): LDR R0, R0, 20H |
| 17A2 | x(A0E0001C): STR R0, SP, 1CH |
| FOR i := 0 TOy typ.lenz-1 DOa FindPtrsb(R,c typ.based,e i*s +f adr)g ENDh |
| 17A3 | y(40000000): MOV R0, R0, 0H |
| 17A4 | z(81E0000C): LDR R1, SP, CH |
| 17A5 | z(D18CB04C): BLEQ MT [trap=4, pos=36016] |
| 17A6 | a(81100010): LDR R1, R1, 10H |
| 17A7 | a(41190001): SUB R1, R1, 1H |
| 17A8 | b(01090001): SUB R1, R0, R1 |
| 17A9 | b(EE00000F): BGT 15 [17B9H] |
| 17AA | b(A0E00018): STR R0, SP, 18H |
| 17AB | c(80E00004): LDR R0, SP, 4H |
| 17AC | c(81E00008): LDR R1, SP, 8H |
| 17AD | d(82E0000C): LDR R2, SP, CH |
| 17AE | d(D18CCA4C): BLEQ MT [trap=4, pos=36042] |
| 17AF | e(8220001C): LDR R2, R2, 1CH |
| 17B0 | f(83E00018): LDR R3, SP, 18H |
| 17B1 | f(84E0001C): LDR R4, SP, 1CH |
| 17B2 | f(033A0004): MUL R3, R3, R4 |
| 17B3 | g(84E00010): LDR R4, SP, 10H |
| 17B4 | g(03380004): ADD R3, R3, R4 |
| 17B5 | h(F7FFFFB1): BL -79 [1767H] |
| ENDi |
| 17B6 | i(80E00018): LDR R0, SP, 18H |
| 17B7 | i(40080001): ADD R0, R0, 1H |
| 17B8 | i(E7FFFFEB): B -21 [17A4H] |
| ENDj FindPtrs; |
| 17B9 | j(8FE00000): LDR LNK, SP, 0H |
| 17BA | j(4EE80020): ADD SP, SP, 20H |
| 17BB | j(C700000F): B LNK |
| |
| PROCEDURE Close*(VAR modid: ORS.Ident; key, nofent: LONGINT); |
| VAR obj: ORB.Object; |
| i, comsize, nofimps, nofptrs, size: LONGINT; |
| name: ORS.Ident; |
| F: Files.File; R: Files.Rider; |
| BEGINk (*exit code*) |
| 17BC | k .PROC 82 |
| 17BC | k(4EE90064): SUB SP, SP, 64H |
| 17BD | k(AFE00000): STR LNK, SP, 0H |
| 17BE | k(A0E00004): STR R0, SP, 4H |
| 17BF | k(A1E00008): STR R1, SP, 8H |
| 17C0 | k(A2E0000C): STR R2, SP, CH |
| IF version = 0 THENl Put1(Mov,m 0,n 0,o 0)p;q Put3(BR,r 7,s 0)t (*RISC-0*) |
| 17C1 | l .FIXUP D |
| 17C1 | l(8D0000B6): LDR SB, MT, MOD0 [ORG] |
| 17C2 | l(80D00048): LDR R0, SB, 48H [data] |
| 17C3 | l(E900000A): BNE 10 [17CEH] |
| 17C4 | m(40000000): MOV R0, R0, 0H |
| 17C5 | n(41000000): MOV R1, R0, 0H |
| 17C6 | o(42000000): MOV R2, R0, 0H |
| 17C7 | p(43000000): MOV R3, R0, 0H |
| 17C8 | q(F7FFE855): BL -6059 [001EH] |
| 17C9 | r(40000000): MOV R0, R0, 0H |
| 17CA | s(41000007): MOV R1, R0, 7H |
| 17CB | t(42000000): MOV R2, R0, 0H |
| ELSEu Put2v(Ldr,w LNK,x SP,y 0)z;a Put1(Add,b SP,c SP,d 4)e;f Put3(BR,g 7,h LNK)i |
| 17CC | u(F7FFE8C4): BL -5948 [0091H] |
| 17CD | v(E700000E): B 14 [17DCH] |
| 17CE | w(40000008): MOV R0, R0, 8H |
| 17CF | x(4100000F): MOV R1, R0, FH |
| 17D0 | y(4200000E): MOV R2, R0, EH |
| 17D1 | z(43000000): MOV R3, R0, 0H |
| 17D2 | a(F7FFE89E): BL -5986 [0071H] |
| 17D3 | b(40000008): MOV R0, R0, 8H |
| 17D4 | c(4100000E): MOV R1, R0, EH |
| 17D5 | d(4200000E): MOV R2, R0, EH |
| 17D6 | e(43000004): MOV R3, R0, 4H |
| 17D7 | f(F7FFE846): BL -6074 [001EH] |
| 17D8 | g(40000000): MOV R0, R0, 0H |
| 17D9 | h(41000007): MOV R1, R0, 7H |
| 17DA | i(4200000F): MOV R2, R0, FH |
| ENDj ; |
| 17DB | j(F7FFE8B5): BL -5963 [0091H] |
| obj := ORB.topScope.nextk;l nofimps := 0;m comsize := 4;n nofptrs := 0;o |
| 17DC | k .FIXUP D |
| 17DC | k(8D40001B): LDR SB, MT, MOD4 [ORB] |
| 17DD | k(80D00004): LDR R0, SB, VAR4 |
| 17DE | k(D18E874C): BLEQ MT [trap=4, pos=36487] |
| 17DF | l(80000008): LDR R0, R0, 8H |
| 17E0 | l(A0E00010): STR R0, SP, 10H |
| 17E1 | m(40000000): MOV R0, R0, 0H |
| 17E2 | m(A0E0001C): STR R0, SP, 1CH |
| 17E3 | n(40000004): MOV R0, R0, 4H |
| 17E4 | n(A0E00018): STR R0, SP, 18H |
| 17E5 | o(40000000): MOV R0, R0, 0H |
| 17E6 | o(A0E00020): STR R0, SP, 20H |
| WHILE obj # NIL DOp |
| 17E7 | p(80E00010): LDR R0, SP, 10H |
| 17E8 | p(E1000059): BEQ 89 [1842H] |
| IF (obj.classq = ORB.Mod)r & (sobj.dsct # ORB.system)u THENv INC(nofimps) (*count imports*) |
| 17E9 | q(80E00010): LDR R0, SP, 10H |
| 17EA | q(D18EDD4C): BLEQ MT [trap=4, pos=36573] |
| 17EB | r(90000000): LDR R0, R0, 0H |
| 17EC | r(40090008): SUB R0, R0, 8H |
| 17ED | s(E900000B): BNE 11 [17F9H] |
| 17EE | t(80E00010): LDR R0, SP, 10H |
| 17EF | t(D18EF34C): BLEQ MT [trap=4, pos=36595] |
| 17F0 | u(8000000C): LDR R0, R0, CH |
| 17F1 | u .FIXUP D |
| 17F1 | u(8D400015): LDR SB, MT, MOD4 [ORB] |
| 17F2 | u(81D00005): LDR R1, SB, VAR5 |
| 17F3 | u(00090001): SUB R0, R0, R1 |
| 17F4 | v(E1000004): BEQ 4 [17F9H] |
| ELSIFw (xobj.exnoy # 0)z & (aobj.classb = ORB.Const)c & (dobj.typee.formf = ORB.Proc)g |
| 17F5 | w(80E0001C): LDR R0, SP, 1CH |
| 17F6 | w(40080001): ADD R0, R0, 1H |
| 17F7 | w(A0E0001C): STR R0, SP, 1CH |
| 17F8 | x(E7000044): B 68 [183DH] |
| 17F9 | y(80E00010): LDR R0, SP, 10H |
| 17FA | y(D18F3B4C): BLEQ MT [trap=4, pos=36667] |
| 17FB | z(90000001): LDR R0, R0, 1H |
| 17FC | a(E1000034): BEQ 52 [1831H] |
| 17FD | b(80E00010): LDR R0, SP, 10H |
| 17FE | b(D18F4D4C): BLEQ MT [trap=4, pos=36685] |
| 17FF | c(90000000): LDR R0, R0, 0H |
| 1800 | c(40090001): SUB R0, R0, 1H |
| 1801 | d(E900002F): BNE 47 [1831H] |
| 1802 | e(80E00010): LDR R0, SP, 10H |
| 1803 | e(D18F664C): BLEQ MT [trap=4, pos=36710] |
| 1804 | f(80000010): LDR R0, R0, 10H |
| 1805 | f(D18F6B4C): BLEQ MT [trap=4, pos=36715] |
| 1806 | g(80000000): LDR R0, R0, 0H |
| 1807 | g(4009000A): SUB R0, R0, AH |
| & (hobj.typei.nofparj = 0)k & (lobj.typem.basen = ORB.noType)o THENp i := 0;q (*count commands*) |
| 1808 | h(E9000028): BNE 40 [1831H] |
| 1809 | i(80E00010): LDR R0, SP, 10H |
| 180A | i(D18F8D4C): BLEQ MT [trap=4, pos=36749] |
| 180B | j(80000010): LDR R0, R0, 10H |
| 180C | j(D18F944C): BLEQ MT [trap=4, pos=36756] |
| 180D | k(8000000C): LDR R0, R0, CH |
| 180E | l(E9000022): BNE 34 [1831H] |
| 180F | m(80E00010): LDR R0, SP, 10H |
| 1810 | m(D18FA54C): BLEQ MT [trap=4, pos=36773] |
| 1811 | n(80000010): LDR R0, R0, 10H |
| 1812 | n(D18FAA4C): BLEQ MT [trap=4, pos=36778] |
| 1813 | o(8000001C): LDR R0, R0, 1CH |
| 1814 | o .FIXUP D |
| 1814 | o(8D400023): LDR SB, MT, MOD4 [ORB] |
| 1815 | o(81D0000D): LDR R1, SB, VAR13 |
| 1816 | o(00090001): SUB R0, R0, R1 |
| 1817 | p(E9000019): BNE 25 [1831H] |
| 1818 | q(40000000): MOV R0, R0, 0H |
| 1819 | q(A0E00014): STR R0, SP, 14H |
| WHILE obj.namer[i]s # 0X DOt INC(i) ENDu ; |
| 181A | r(80E00010): LDR R0, SP, 10H |
| 181B | r(D18FEF4C): BLEQ MT [trap=4, pos=36847] |
| 181C | s(81E00014): LDR R1, SP, 14H |
| 181D | s(42190020): SUB R2, R1, 20H |
| 181E | s(DA8FF21C): BLCC MT [trap=1, pos=36850] |
| 181F | s(00080001): ADD R0, R0, R1 |
| 1820 | t(90000014): LDR R0, R0, 14H |
| 1821 | t(E1000004): BEQ 4 [1826H] |
| 1822 | u(80E00014): LDR R0, SP, 14H |
| 1823 | u(40080001): ADD R0, R0, 1H |
| 1824 | u(A0E00014): STR R0, SP, 14H |
| 1825 | u(E7FFFFF4): B -12 [181AH] |
| i := (i+4)v DIV 4 *w 4;x INC(comsize, i+4)y |
| 1826 | v(80E00014): LDR R0, SP, 14H |
| 1827 | v(40080004): ADD R0, R0, 4H |
| 1828 | w(40020002): ASR R0, R0, 2H |
| 1829 | x(40010002): LSL R0, R0, 2H |
| 182A | x(A0E00014): STR R0, SP, 14H |
| 182B | y(80E00014): LDR R0, SP, 14H |
| 182C | y(40080004): ADD R0, R0, 4H |
| ELSIFz obja.classb = ORB.Var THENc INC(nofptrs, NofPtrs(obj.typed)e)f (*count pointers*) |
| 182D | z(81E00018): LDR R1, SP, 18H |
| 182E | z(01180000): ADD R1, R1, R0 |
| 182F | z(A1E00018): STR R1, SP, 18H |
| 1830 | a(E700000C): B 12 [183DH] |
| 1831 | b(80E00010): LDR R0, SP, 10H |
| 1832 | b(D1904D4C): BLEQ MT [trap=4, pos=36941] |
| 1833 | c(90000000): LDR R0, R0, 0H |
| 1834 | c(40090002): SUB R0, R0, 2H |
| 1835 | c(E9000007): BNE 7 [183DH] |
| 1836 | d(80E00010): LDR R0, SP, 10H |
| 1837 | d(D1907A4C): BLEQ MT [trap=4, pos=36986] |
| 1838 | e(80000010): LDR R0, R0, 10H |
| 1839 | f(F7FFFEEE): BL -274 [1728H] |
| ENDg ; |
| 183A | g(81E00020): LDR R1, SP, 20H |
| 183B | g(01180000): ADD R1, R1, R0 |
| 183C | g(A1E00020): STR R1, SP, 20H |
| obj := obj.nexth |
| 183D | h(80E00010): LDR R0, SP, 10H |
| 183E | h(D190B24C): BLEQ MT [trap=4, pos=37042] |
| ENDi ; |
| 183F | i(80000008): LDR R0, R0, 8H |
| 1840 | i(A0E00010): STR R0, SP, 10H |
| 1841 | i(E7FFFFA5): B -91 [17E7H] |
| size := varsize + strx +j comsize +k (pc + nofimps +l nofent +m nofptrs +n 1)o*4;p (*varsize includes type descriptors*) |
| 1842 | j .FIXUP D |
| 1842 | j(8D00002E): LDR SB, MT, MOD0 [ORG] |
| 1843 | j(80D0001C): LDR R0, SB, 1CH [data] |
| 1844 | j(81D00024): LDR R1, SB, 24H |
| 1845 | j(00080001): ADD R0, R0, R1 |
| 1846 | k(81E00018): LDR R1, SP, 18H |
| 1847 | k(00080001): ADD R0, R0, R1 |
| 1848 | l(81D00018): LDR R1, SB, 18H |
| 1849 | l(82E0001C): LDR R2, SP, 1CH |
| 184A | l(01180002): ADD R1, R1, R2 |
| 184B | m(82E0000C): LDR R2, SP, CH |
| 184C | m(01180002): ADD R1, R1, R2 |
| 184D | n(82E00020): LDR R2, SP, 20H |
| 184E | n(01180002): ADD R1, R1, R2 |
| 184F | o(41180001): ADD R1, R1, 1H |
| 1850 | p(41110002): LSL R1, R1, 2H |
| 1851 | p(00080001): ADD R0, R0, R1 |
| 1852 | p(A0E00024): STR R0, SP, 24H |
| |
| ORB.MakeFileName(name,q modid,r ".rsc")s;t (*write code file*) |
| 1853 | q(40E80028): ADD R0, SP, 28H |
| 1854 | r(81E00004): LDR R1, SP, 4H |
| 1855 | r(42000020): MOV R2, R0, 20H |
| 1856 | s(43D88A9C): ADD R3, SB, FFFF8A9CH |
| 1857 | s(44000005): MOV R4, R0, 5H |
| 1858 | t .FIXUP P |
| 1858 | t(F74150DE): BL MOD4 [ORB] PROC21 |
| F := Files.New(name)u;v Files.Set(R,w F,x 0)y;z Files.WriteString(R,a modid)b;c Files.WriteInt(R,d key)e;f Files.WriteByte(R,g version)h;i |
| 1859 | u(40E80028): ADD R0, SP, 28H |
| 185A | u(41000020): MOV R1, R0, 20H |
| 185B | v .FIXUP P |
| 185B | v(F7103003): BL MOD1 [Files] PROC3 |
| 185C | v(A0E00048): STR R0, SP, 48H |
| 185D | w(40E8004C): ADD R0, SP, 4CH |
| 185E | w .FIXUP D |
| 185E | w(8D10001C): LDR SB, MT, MOD1 [Files] |
| 185F | w(41D80001): ADD R1, SB, VAR1 |
| 1860 | x(82E00048): LDR R2, SP, 48H |
| 1861 | y(43000000): MOV R3, R0, 0H |
| 1862 | z .FIXUP P |
| 1862 | z(F710B007): BL MOD1 [Files] PROC11 |
| 1863 | a(40E8004C): ADD R0, SP, 4CH |
| 1864 | a .FIXUP D |
| 1864 | a(8D100006): LDR SB, MT, MOD1 [Files] |
| 1865 | a(41D80001): ADD R1, SB, VAR1 |
| 1866 | b(82E00004): LDR R2, SP, 4H |
| 1867 | b(43000020): MOV R3, R0, 20H |
| 1868 | c .FIXUP P |
| 1868 | c(F711C006): BL MOD1 [Files] PROC28 |
| 1869 | d(40E8004C): ADD R0, SP, 4CH |
| 186A | d .FIXUP D |
| 186A | d(8D100006): LDR SB, MT, MOD1 [Files] |
| 186B | d(41D80001): ADD R1, SB, VAR1 |
| 186C | e(82E00008): LDR R2, SP, 8H |
| 186D | f .FIXUP P |
| 186D | f(F7119005): BL MOD1 [Files] PROC25 |
| 186E | g(40E8004C): ADD R0, SP, 4CH |
| 186F | g .FIXUP D |
| 186F | g(8D100005): LDR SB, MT, MOD1 [Files] |
| 1870 | g(41D80001): ADD R1, SB, VAR1 |
| 1871 | h .FIXUP D |
| 1871 | h(8D000002): LDR SB, MT, MOD0 [ORG] |
| 1872 | h(82D00048): LDR R2, SB, 48H [data] |
| 1873 | i .FIXUP P |
| 1873 | i(F7116006): BL MOD1 [Files] PROC22 |
| Files.WriteInt(R,j size)k;l |
| 1874 | j(40E8004C): ADD R0, SP, 4CH |
| 1875 | j .FIXUP D |
| 1875 | j(8D100004): LDR SB, MT, MOD1 [Files] |
| 1876 | j(41D80001): ADD R1, SB, VAR1 |
| 1877 | k(82E00024): LDR R2, SP, 24H |
| 1878 | l .FIXUP P |
| 1878 | l(F7119005): BL MOD1 [Files] PROC25 |
| obj := ORB.topScope.nextm;n |
| 1879 | m .FIXUP D |
| 1879 | m(8D400004): LDR SB, MT, MOD4 [ORB] |
| 187A | m(80D00004): LDR R0, SB, VAR4 |
| 187B | m(D1922D4C): BLEQ MT [trap=4, pos=37421] |
| 187C | n(80000008): LDR R0, R0, 8H |
| 187D | n(A0E00010): STR R0, SP, 10H |
| WHILE (obj # NIL)o & (pobj.classq = ORB.Mod)r DOs (*imports*) |
| 187E | o(80E00010): LDR R0, SP, 10H |
| 187F | p(E1000026): BEQ 38 [18A6H] |
| 1880 | q(80E00010): LDR R0, SP, 10H |
| 1881 | q(D192514C): BLEQ MT [trap=4, pos=37457] |
| 1882 | r(90000000): LDR R0, R0, 0H |
| 1883 | r(40090008): SUB R0, R0, 8H |
| 1884 | s(E9000021): BNE 33 [18A6H] |
| IF obj.dsct # ORB.system THENu Files.WriteString(R,v obj(ORB.Module)w.orgname)x;y Files.WriteInt(R,z obj.vala)b ENDc ; |
| 1885 | t(80E00010): LDR R0, SP, 10H |
| 1886 | t(D1927D4C): BLEQ MT [trap=4, pos=37501] |
| 1887 | u(8000000C): LDR R0, R0, CH |
| 1888 | u .FIXUP D |
| 1888 | u(8D40000F): LDR SB, MT, MOD4 [ORB] |
| 1889 | u(81D00005): LDR R1, SB, VAR5 |
| 188A | u(00090001): SUB R0, R0, R1 |
| 188B | u(E1000015): BEQ 21 [18A1H] |
| 188C | v(40E8004C): ADD R0, SP, 4CH |
| 188D | v .FIXUP D |
| 188D | v(8D100005): LDR SB, MT, MOD1 [Files] |
| 188E | v(41D80001): ADD R1, SB, VAR1 |
| 188F | w(82E00010): LDR R2, SP, 10H |
| 1890 | w(E1000005): BEQ 5 [1896H] |
| 1891 | w(832FFFF8): LDR R3, R2, FFFFFFF8H |
| 1892 | w(83300004): LDR R3, R3, 4H |
| 1893 | w .FIXUP D |
| 1893 | w(8D400006): LDR SB, MT, MOD4 [ORB] |
| 1894 | w(44D80002): ADD R4, SB, VAR2 |
| 1895 | w(04490003): SUB R4, R4, R3 |
| 1896 | w(D992B42C): BLNE MT [trap=2, pos=37556] |
| 1897 | x(42280038): ADD R2, R2, 38H |
| 1898 | x(43000020): MOV R3, R0, 20H |
| 1899 | y .FIXUP P |
| 1899 | y(F711C021): BL MOD1 [Files] PROC28 |
| 189A | z(40E8004C): ADD R0, SP, 4CH |
| 189B | z .FIXUP D |
| 189B | z(8D100008): LDR SB, MT, MOD1 [Files] |
| 189C | z(41D80001): ADD R1, SB, VAR1 |
| 189D | a(82E00010): LDR R2, SP, 10H |
| 189E | a(D192D84C): BLEQ MT [trap=4, pos=37592] |
| 189F | b(82200034): LDR R2, R2, 34H |
| 18A0 | c .FIXUP P |
| 18A0 | c(F7119007): BL MOD1 [Files] PROC25 |
| obj := obj.nextd |
| 18A1 | d(80E00010): LDR R0, SP, 10H |
| 18A2 | d(D192F54C): BLEQ MT [trap=4, pos=37621] |
| ENDe ; |
| 18A3 | e(80000008): LDR R0, R0, 8H |
| 18A4 | e(A0E00010): STR R0, SP, 10H |
| 18A5 | e(E7FFFFD8): B -40 [187EH] |
| Files.Write(R,f 0X)g;h |
| 18A6 | f(40E8004C): ADD R0, SP, 4CH |
| 18A7 | f .FIXUP D |
| 18A7 | f(8D10000C): LDR SB, MT, MOD1 [Files] |
| 18A8 | f(41D80001): ADD R1, SB, VAR1 |
| 18A9 | g(42000000): MOV R2, R0, 0H |
| 18AA | h .FIXUP P |
| 18AA | h(F711800A): BL MOD1 [Files] PROC24 |
| Files.WriteInt(R,i tdx*4)j;k |
| 18AB | i(40E8004C): ADD R0, SP, 4CH |
| 18AC | i .FIXUP D |
| 18AC | i(8D100005): LDR SB, MT, MOD1 [Files] |
| 18AD | i(41D80001): ADD R1, SB, VAR1 |
| 18AE | j .FIXUP D |
| 18AE | j(8D000002): LDR SB, MT, MOD0 [ORG] |
| 18AF | j(82D00020): LDR R2, SB, 20H [data] |
| 18B0 | j(42210002): LSL R2, R2, 2H |
| 18B1 | k .FIXUP P |
| 18B1 | k(F7119007): BL MOD1 [Files] PROC25 |
| i := 0;l |
| 18B2 | l(40000000): MOV R0, R0, 0H |
| 18B3 | l(A0E00014): STR R0, SP, 14H |
| WHILE i < tdx DOm Files.WriteInt(R,n data[i]o)p;q INC(i) ENDr ; (*type descriptors*) |
| 18B4 | m(80E00014): LDR R0, SP, 14H |
| 18B5 | m .FIXUP D |
| 18B5 | m(8D000007): LDR SB, MT, MOD0 [ORG] |
| 18B6 | m(81D00020): LDR R1, SB, 20H [data] |
| 18B7 | m(00090001): SUB R0, R0, R1 |
| 18B8 | m(ED00000F): BGE 15 [18C8H] |
| 18B9 | n(40E8004C): ADD R0, SP, 4CH |
| 18BA | n .FIXUP D |
| 18BA | n(8D100005): LDR SB, MT, MOD1 [Files] |
| 18BB | n(41D80001): ADD R1, SB, VAR1 |
| 18BC | o(82E00014): LDR R2, SP, 14H |
| 18BD | o(43290078): SUB R3, R2, 78H |
| 18BE | o(DA93701C): BLCC MT [trap=1, pos=37744] |
| 18BF | o(42210002): LSL R2, R2, 2H |
| 18C0 | o .FIXUP D |
| 18C0 | o(8D000006): LDR SB, MT, MOD0 [ORG] |
| 18C1 | o(02D80002): ADD R2, SB, R2 [global array] |
| 18C2 | p(82207D64): LDR R2, R2, 7D64H |
| 18C3 | q .FIXUP P |
| 18C3 | q(F7119012): BL MOD1 [Files] PROC25 |
| 18C4 | r(80E00014): LDR R0, SP, 14H |
| 18C5 | r(40080001): ADD R0, R0, 1H |
| 18C6 | r(A0E00014): STR R0, SP, 14H |
| 18C7 | r(E7FFFFEC): B -20 [18B4H] |
| Files.WriteInt(R,s varsize - tdx*4)t;u (*data*) |
| 18C8 | s(40E8004C): ADD R0, SP, 4CH |
| 18C9 | s .FIXUP D |
| 18C9 | s(8D100009): LDR SB, MT, MOD1 [Files] |
| 18CA | s(41D80001): ADD R1, SB, VAR1 |
| 18CB | t .FIXUP D |
| 18CB | t(8D000002): LDR SB, MT, MOD0 [ORG] |
| 18CC | t(82D00020): LDR R2, SB, 20H [data] |
| 18CD | t(42210002): LSL R2, R2, 2H |
| 18CE | t(83D0001C): LDR R3, SB, 1CH |
| 18CF | t(02390002): SUB R2, R3, R2 |
| 18D0 | u .FIXUP P |
| 18D0 | u(F711900D): BL MOD1 [Files] PROC25 |
| Files.WriteInt(R,v strx)w;x |
| 18D1 | v(40E8004C): ADD R0, SP, 4CH |
| 18D2 | v .FIXUP D |
| 18D2 | v(8D100007): LDR SB, MT, MOD1 [Files] |
| 18D3 | v(41D80001): ADD R1, SB, VAR1 |
| 18D4 | w .FIXUP D |
| 18D4 | w(8D000002): LDR SB, MT, MOD0 [ORG] |
| 18D5 | w(82D00024): LDR R2, SB, 24H [data] |
| 18D6 | x .FIXUP P |
| 18D6 | x(F7119006): BL MOD1 [Files] PROC25 |
| FOR i := 0 TOy strx-1 DOz Filesa.Write(R,b str[i]c)d ENDe ;f (*strings*) |
| 18D7 | y(40000000): MOV R0, R0, 0H |
| 18D8 | z .FIXUP D |
| 18D8 | z(8D000004): LDR SB, MT, MOD0 [ORG] |
| 18D9 | z(81D00024): LDR R1, SB, 24H [data] |
| 18DA | z(41190001): SUB R1, R1, 1H |
| 18DB | a(01090001): SUB R1, R0, R1 |
| 18DC | a(EE00000E): BGT 14 [18EBH] |
| 18DD | a(A0E00014): STR R0, SP, 14H |
| 18DE | b(40E8004C): ADD R0, SP, 4CH |
| 18DF | b .FIXUP D |
| 18DF | b(8D100007): LDR SB, MT, MOD1 [Files] |
| 18E0 | b(41D80001): ADD R1, SB, VAR1 |
| 18E1 | c(82E00014): LDR R2, SP, 14H |
| 18E2 | c(43290960): SUB R3, R2, 960H |
| 18E3 | c(DA94151C): BLCC MT [trap=1, pos=37909] |
| 18E4 | c .FIXUP D |
| 18E4 | c(8D000005): LDR SB, MT, MOD0 [ORG] |
| 18E5 | c(02D80002): ADD R2, SB, R2 [global array] |
| 18E6 | d(92207F44): LDR R2, R2, 7F44H |
| 18E7 | e .FIXUP P |
| 18E7 | e(F7118011): BL MOD1 [Files] PROC24 |
| 18E8 | f(80E00014): LDR R0, SP, 14H |
| 18E9 | f(40080001): ADD R0, R0, 1H |
| 18EA | f(E7FFFFED): B -19 [18D8H] |
| Files.WriteInt(R,g pc)h;i (*code len*) |
| 18EB | g(40E8004C): ADD R0, SP, 4CH |
| 18EC | g .FIXUP D |
| 18EC | g(8D100008): LDR SB, MT, MOD1 [Files] |
| 18ED | g(41D80001): ADD R1, SB, VAR1 |
| 18EE | h .FIXUP D |
| 18EE | h(8D000002): LDR SB, MT, MOD0 [ORG] |
| 18EF | h(82D00018): LDR R2, SB, 18H [data] |
| 18F0 | i .FIXUP P |
| 18F0 | i(F7119009): BL MOD1 [Files] PROC25 |
| FOR i := 0 TOj pc-1 DOk Filesl.WriteInt(R,m code[i]n)o ENDp ;q (*program*) |
| 18F1 | j(40000000): MOV R0, R0, 0H |
| 18F2 | k .FIXUP D |
| 18F2 | k(8D000004): LDR SB, MT, MOD0 [ORG] |
| 18F3 | k(81D00018): LDR R1, SB, 18H [data] |
| 18F4 | k(41190001): SUB R1, R1, 1H |
| 18F5 | l(01090001): SUB R1, R0, R1 |
| 18F6 | l(EE00000F): BGT 15 [1906H] |
| 18F7 | l(A0E00014): STR R0, SP, 14H |
| 18F8 | m(40E8004C): ADD R0, SP, 4CH |
| 18F9 | m .FIXUP D |
| 18F9 | m(8D100007): LDR SB, MT, MOD1 [Files] |
| 18FA | m(41D80001): ADD R1, SB, VAR1 |
| 18FB | n(82E00014): LDR R2, SP, 14H |
| 18FC | n(43291F40): SUB R3, R2, 1F40H |
| 18FD | n(DA94861C): BLCC MT [trap=1, pos=38022] |
| 18FE | n(42210002): LSL R2, R2, 2H |
| 18FF | n .FIXUP D |
| 18FF | n(8D000006): LDR SB, MT, MOD0 [ORG] |
| 1900 | n(02D80002): ADD R2, SB, R2 [global array] |
| 1901 | o(82200064): LDR R2, R2, 64H |
| 1902 | p .FIXUP P |
| 1902 | p(F7119012): BL MOD1 [Files] PROC25 |
| 1903 | q(80E00014): LDR R0, SP, 14H |
| 1904 | q(40080001): ADD R0, R0, 1H |
| 1905 | q(E7FFFFEC): B -20 [18F2H] |
| obj := ORB.topScope.nextr;s |
| 1906 | r .FIXUP D |
| 1906 | r(8D400007): LDR SB, MT, MOD4 [ORB] |
| 1907 | r(80D00004): LDR R0, SB, VAR4 |
| 1908 | r(D194B74C): BLEQ MT [trap=4, pos=38071] |
| 1909 | s(80000008): LDR R0, R0, 8H |
| 190A | s(A0E00010): STR R0, SP, 10H |
| WHILE obj # NIL DOt (*commands*) |
| 190B | t(80E00010): LDR R0, SP, 10H |
| 190C | t(E1000033): BEQ 51 [1940H] |
| IF (obj.exnou # 0)v & (wobj.classx = ORB.Const)y & (zobj.typea.formb = ORB.Proc)c & |
| 190D | u(80E00010): LDR R0, SP, 10H |
| 190E | u(D194F04C): BLEQ MT [trap=4, pos=38128] |
| 190F | v(90000001): LDR R0, R0, 1H |
| 1910 | w(E100002A): BEQ 42 [193BH] |
| 1911 | x(80E00010): LDR R0, SP, 10H |
| 1912 | x(D195024C): BLEQ MT [trap=4, pos=38146] |
| 1913 | y(90000000): LDR R0, R0, 0H |
| 1914 | y(40090001): SUB R0, R0, 1H |
| 1915 | z(E9000025): BNE 37 [193BH] |
| 1916 | a(80E00010): LDR R0, SP, 10H |
| 1917 | a(D1951B4C): BLEQ MT [trap=4, pos=38171] |
| 1918 | b(80000010): LDR R0, R0, 10H |
| 1919 | b(D195204C): BLEQ MT [trap=4, pos=38176] |
| 191A | c(80000000): LDR R0, R0, 0H |
| 191B | c(4009000A): SUB R0, R0, AH |
| (dobj.typee.nofparf = 0)g & (hobj.typei.basej = ORB.noType)k THENl |
| 191C | d(E900001E): BNE 30 [193BH] |
| 191D | e(80E00010): LDR R0, SP, 10H |
| 191E | e(D195424C): BLEQ MT [trap=4, pos=38210] |
| 191F | f(80000010): LDR R0, R0, 10H |
| 1920 | f(D195494C): BLEQ MT [trap=4, pos=38217] |
| 1921 | g(8000000C): LDR R0, R0, CH |
| 1922 | h(E9000018): BNE 24 [193BH] |
| 1923 | i(80E00010): LDR R0, SP, 10H |
| 1924 | i(D1955A4C): BLEQ MT [trap=4, pos=38234] |
| 1925 | j(80000010): LDR R0, R0, 10H |
| 1926 | j(D1955F4C): BLEQ MT [trap=4, pos=38239] |
| 1927 | k(8000001C): LDR R0, R0, 1CH |
| 1928 | k .FIXUP D |
| 1928 | k(8D400022): LDR SB, MT, MOD4 [ORB] |
| 1929 | k(81D0000D): LDR R1, SB, VAR13 |
| 192A | k(00090001): SUB R0, R0, R1 |
| 192B | l(E900000F): BNE 15 [193BH] |
| Files.WriteString(R,m obj.namen)o;p Files.WriteInt(R,q obj.valr)s |
| 192C | m(40E8004C): ADD R0, SP, 4CH |
| 192D | m .FIXUP D |
| 192D | m(8D100005): LDR SB, MT, MOD1 [Files] |
| 192E | m(41D80001): ADD R1, SB, VAR1 |
| 192F | n(82E00010): LDR R2, SP, 10H |
| 1930 | n(D195984C): BLEQ MT [trap=4, pos=38296] |
| 1931 | o(42280014): ADD R2, R2, 14H |
| 1932 | o(43000020): MOV R3, R0, 20H |
| 1933 | p .FIXUP P |
| 1933 | p(F711C031): BL MOD1 [Files] PROC28 |
| 1934 | q(40E8004C): ADD R0, SP, 4CH |
| 1935 | q .FIXUP D |
| 1935 | q(8D100008): LDR SB, MT, MOD1 [Files] |
| 1936 | q(41D80001): ADD R1, SB, VAR1 |
| 1937 | r(82E00010): LDR R2, SP, 10H |
| 1938 | r(D195B44C): BLEQ MT [trap=4, pos=38324] |
| 1939 | s(82200034): LDR R2, R2, 34H |
| ENDt ; |
| 193A | t .FIXUP P |
| 193A | t(F7119007): BL MOD1 [Files] PROC25 |
| obj := obj.nextu |
| 193B | u(80E00010): LDR R0, SP, 10H |
| 193C | u(D195D74C): BLEQ MT [trap=4, pos=38359] |
| ENDv ; |
| 193D | v(80000008): LDR R0, R0, 8H |
| 193E | v(A0E00010): STR R0, SP, 10H |
| 193F | v(E7FFFFCB): B -53 [190BH] |
| Files.Write(R,w 0X)x;y |
| 1940 | w(40E8004C): ADD R0, SP, 4CH |
| 1941 | w .FIXUP D |
| 1941 | w(8D10000C): LDR SB, MT, MOD1 [Files] |
| 1942 | w(41D80001): ADD R1, SB, VAR1 |
| 1943 | x(42000000): MOV R2, R0, 0H |
| 1944 | y .FIXUP P |
| 1944 | y(F711800A): BL MOD1 [Files] PROC24 |
| Files.WriteInt(R,z nofent)a;b Files.WriteInt(R,c entry)d;e |
| 1945 | z(40E8004C): ADD R0, SP, 4CH |
| 1946 | z .FIXUP D |
| 1946 | z(8D100005): LDR SB, MT, MOD1 [Files] |
| 1947 | z(41D80001): ADD R1, SB, VAR1 |
| 1948 | a(82E0000C): LDR R2, SP, CH |
| 1949 | b .FIXUP P |
| 1949 | b(F7119005): BL MOD1 [Files] PROC25 |
| 194A | c(40E8004C): ADD R0, SP, 4CH |
| 194B | c .FIXUP D |
| 194B | c(8D100005): LDR SB, MT, MOD1 [Files] |
| 194C | c(41D80001): ADD R1, SB, VAR1 |
| 194D | d .FIXUP D |
| 194D | d(8D000002): LDR SB, MT, MOD0 [ORG] |
| 194E | d(82D00028): LDR R2, SB, 28H [data] |
| 194F | e .FIXUP P |
| 194F | e(F7119006): BL MOD1 [Files] PROC25 |
| obj := ORB.topScope.nextf;g |
| 1950 | f .FIXUP D |
| 1950 | f(8D400003): LDR SB, MT, MOD4 [ORB] |
| 1951 | f(80D00004): LDR R0, SB, VAR4 |
| 1952 | f(D1964F4C): BLEQ MT [trap=4, pos=38479] |
| 1953 | g(80000008): LDR R0, R0, 8H |
| 1954 | g(A0E00010): STR R0, SP, 10H |
| WHILE obj # NIL DOh (*entries*) |
| 1955 | h(80E00010): LDR R0, SP, 10H |
| 1956 | h(E100005E): BEQ 94 [19B5H] |
| IF obj.exnoi # 0 THENj |
| 1957 | i(80E00010): LDR R0, SP, 10H |
| 1958 | i(D196864C): BLEQ MT [trap=4, pos=38534] |
| 1959 | j(90000001): LDR R0, R0, 1H |
| 195A | j(E1000055): BEQ 85 [19B0H] |
| IF (obj.classk = ORB.Const)l & (mobj.typen.formo = ORB.Proc)p OR (qobj.classr = ORB.Var)s THENt |
| 195B | k(80E00010): LDR R0, SP, 10H |
| 195C | k(D196A54C): BLEQ MT [trap=4, pos=38565] |
| 195D | l(90000000): LDR R0, R0, 0H |
| 195E | l(40090001): SUB R0, R0, 1H |
| 195F | m(E9000007): BNE 7 [1967H] |
| 1960 | n(80E00010): LDR R0, SP, 10H |
| 1961 | n(D196BE4C): BLEQ MT [trap=4, pos=38590] |
| 1962 | o(80000010): LDR R0, R0, 10H |
| 1963 | o(D196C34C): BLEQ MT [trap=4, pos=38595] |
| 1964 | p(80000000): LDR R0, R0, 0H |
| 1965 | p(4009000A): SUB R0, R0, AH |
| 1966 | q(E1000005): BEQ 5 [196CH] |
| 1967 | r(80E00010): LDR R0, SP, 10H |
| 1968 | r(D196DD4C): BLEQ MT [trap=4, pos=38621] |
| 1969 | s(90000000): LDR R0, R0, 0H |
| 196A | s(40090002): SUB R0, R0, 2H |
| 196B | t(E9000008): BNE 8 [1974H] |
| Files.WriteInt(R,u obj.valv)w |
| 196C | u(40E8004C): ADD R0, SP, 4CH |
| 196D | u .FIXUP D |
| 196D | u(8D10001D): LDR SB, MT, MOD1 [Files] |
| 196E | u(41D80001): ADD R1, SB, VAR1 |
| 196F | v(82E00010): LDR R2, SP, 10H |
| 1970 | v(D197114C): BLEQ MT [trap=4, pos=38673] |
| 1971 | w(82200034): LDR R2, R2, 34H |
| ELSIFx objy.classz = ORB.Typ THENa |
| 1972 | x .FIXUP P |
| 1972 | x(F7119023): BL MOD1 [Files] PROC25 |
| 1973 | y(E700003C): B 60 [19B0H] |
| 1974 | z(80E00010): LDR R0, SP, 10H |
| 1975 | z(D1972A4C): BLEQ MT [trap=4, pos=38698] |
| 1976 | a(90000000): LDR R0, R0, 0H |
| 1977 | a(40090005): SUB R0, R0, 5H |
| 1978 | a(E9000037): BNE 55 [19B0H] |
| IF obj.typeb.formc = ORB.Record THENd Files.WriteInt(R,e obj.typef.leng MOD 10000H)h |
| 1979 | b(80E00010): LDR R0, SP, 10H |
| 197A | b(D1974F4C): BLEQ MT [trap=4, pos=38735] |
| 197B | c(80000010): LDR R0, R0, 10H |
| 197C | c(D197544C): BLEQ MT [trap=4, pos=38740] |
| 197D | d(80000000): LDR R0, R0, 0H |
| 197E | d(4009000D): SUB R0, R0, DH |
| 197F | d(E900000B): BNE 11 [198BH] |
| 1980 | e(40E8004C): ADD R0, SP, 4CH |
| 1981 | e .FIXUP D |
| 1981 | e(8D100014): LDR SB, MT, MOD1 [Files] |
| 1982 | e(41D80001): ADD R1, SB, VAR1 |
| 1983 | f(82E00010): LDR R2, SP, 10H |
| 1984 | f(D197824C): BLEQ MT [trap=4, pos=38786] |
| 1985 | g(82200010): LDR R2, R2, 10H |
| 1986 | g(D197864C): BLEQ MT [trap=4, pos=38790] |
| 1987 | h(82200010): LDR R2, R2, 10H |
| 1988 | h(4224FFFF): AND R2, R2, FFFFFFFFH |
| ELSIFi (jobj.typek.forml = ORB.Pointer)m & (n(obj.typeo.basep.typobjq = NIL)r OR (sobj.typet.baseu.typobjv.exnow = 0)x) THENy |
| 1989 | i .FIXUP P |
| 1989 | i(F7119017): BL MOD1 [Files] PROC25 |
| 198A | j(E7000025): B 37 [19B0H] |
| 198B | k(80E00010): LDR R0, SP, 10H |
| 198C | k(D197AC4C): BLEQ MT [trap=4, pos=38828] |
| 198D | l(80000010): LDR R0, R0, 10H |
| 198E | l(D197B14C): BLEQ MT [trap=4, pos=38833] |
| 198F | m(80000000): LDR R0, R0, 0H |
| 1990 | m(40090007): SUB R0, R0, 7H |
| 1991 | n(E900001E): BNE 30 [19B0H] |
| 1992 | o(80E00010): LDR R0, SP, 10H |
| 1993 | o(D197CD4C): BLEQ MT [trap=4, pos=38861] |
| 1994 | p(80000010): LDR R0, R0, 10H |
| 1995 | p(D197D24C): BLEQ MT [trap=4, pos=38866] |
| 1996 | q(8000001C): LDR R0, R0, 1CH |
| 1997 | q(D197D94C): BLEQ MT [trap=4, pos=38873] |
| 1998 | r(80000018): LDR R0, R0, 18H |
| 1999 | s(E100000A): BEQ 10 [19A4H] |
| 199A | t(80E00010): LDR R0, SP, 10H |
| 199B | t(D197ED4C): BLEQ MT [trap=4, pos=38893] |
| 199C | u(80000010): LDR R0, R0, 10H |
| 199D | u(D197F24C): BLEQ MT [trap=4, pos=38898] |
| 199E | v(8000001C): LDR R0, R0, 1CH |
| 199F | v(D197F94C): BLEQ MT [trap=4, pos=38905] |
| 19A0 | w(80000018): LDR R0, R0, 18H |
| 19A1 | w(D197FE4C): BLEQ MT [trap=4, pos=38910] |
| 19A2 | x(90000001): LDR R0, R0, 1H |
| 19A3 | y(E900000C): BNE 12 [19B0H] |
| Files.WriteInt(R,z obj.typea.baseb.lenc MOD 10000H)d |
| 19A4 | z(40E8004C): ADD R0, SP, 4CH |
| 19A5 | z .FIXUP D |
| 19A5 | z(8D100024): LDR SB, MT, MOD1 [Files] |
| 19A6 | z(41D80001): ADD R1, SB, VAR1 |
| 19A7 | a(82E00010): LDR R2, SP, 10H |
| 19A8 | a(D198304C): BLEQ MT [trap=4, pos=38960] |
| 19A9 | b(82200010): LDR R2, R2, 10H |
| 19AA | b(D198354C): BLEQ MT [trap=4, pos=38965] |
| 19AB | c(8220001C): LDR R2, R2, 1CH |
| 19AC | c(D198394C): BLEQ MT [trap=4, pos=38969] |
| 19AD | d(82200010): LDR R2, R2, 10H |
| 19AE | d(4224FFFF): AND R2, R2, FFFFFFFFH |
| ENDe |
| 19AF | e .FIXUP P |
| 19AF | e(F7119026): BL MOD1 [Files] PROC25 |
| END |
| END ; |
| obj := obj.nextf |
| 19B0 | f(80E00010): LDR R0, SP, 10H |
| 19B1 | f(D198814C): BLEQ MT [trap=4, pos=39041] |
| ENDg ; |
| 19B2 | g(80000008): LDR R0, R0, 8H |
| 19B3 | g(A0E00010): STR R0, SP, 10H |
| 19B4 | g(E7FFFFA0): B -96 [1955H] |
| obj := ORB.topScope.nexth;i |
| 19B5 | h .FIXUP D |
| 19B5 | h(8D400010): LDR SB, MT, MOD4 [ORB] |
| 19B6 | h(80D00004): LDR R0, SB, VAR4 |
| 19B7 | h(D198A84C): BLEQ MT [trap=4, pos=39080] |
| 19B8 | i(80000008): LDR R0, R0, 8H |
| 19B9 | i(A0E00010): STR R0, SP, 10H |
| WHILE obj # NIL DOj (*pointer variables*) |
| 19BA | j(80E00010): LDR R0, SP, 10H |
| 19BB | j(E1000014): BEQ 20 [19D0H] |
| IF obj.classk = ORB.Var THENl FindPtrs(R,m obj.typen,o obj.valp)q ENDr ; |
| 19BC | k(80E00010): LDR R0, SP, 10H |
| 19BD | k(D198EA4C): BLEQ MT [trap=4, pos=39146] |
| 19BE | l(90000000): LDR R0, R0, 0H |
| 19BF | l(40090002): SUB R0, R0, 2H |
| 19C0 | l(E900000A): BNE 10 [19CBH] |
| 19C1 | m(40E8004C): ADD R0, SP, 4CH |
| 19C2 | m .FIXUP D |
| 19C2 | m(8D10000D): LDR SB, MT, MOD1 [Files] |
| 19C3 | m(41D80001): ADD R1, SB, VAR1 |
| 19C4 | n(82E00010): LDR R2, SP, 10H |
| 19C5 | n(D1990E4C): BLEQ MT [trap=4, pos=39182] |
| 19C6 | o(82200010): LDR R2, R2, 10H |
| 19C7 | p(83E00010): LDR R3, SP, 10H |
| 19C8 | p(D199174C): BLEQ MT [trap=4, pos=39191] |
| 19C9 | q(83300034): LDR R3, R3, 34H |
| 19CA | r(F7FFFD9C): BL -612 [1767H] |
| obj := obj.nexts |
| 19CB | s(80E00010): LDR R0, SP, 10H |
| 19CC | s(D199344C): BLEQ MT [trap=4, pos=39220] |
| ENDt ; |
| 19CD | t(80000008): LDR R0, R0, 8H |
| 19CE | t(A0E00010): STR R0, SP, 10H |
| 19CF | t(E7FFFFEA): B -22 [19BAH] |
| Files.WriteInt(R,u -1)v;w |
| 19D0 | u(40E8004C): ADD R0, SP, 4CH |
| 19D1 | u .FIXUP D |
| 19D1 | u(8D10000F): LDR SB, MT, MOD1 [Files] |
| 19D2 | u(41D80001): ADD R1, SB, VAR1 |
| 19D3 | v(5200FFFF): MOV R2, R0, FFFFFFFFH |
| 19D4 | w .FIXUP P |
| 19D4 | w(F7119025): BL MOD1 [Files] PROC25 |
| Files.WriteInt(R,x fixorgP)y;z Files.WriteInt(R,a fixorgD)b;c Files.WriteInt(R,d fixorgT)e;f Files.WriteInt(R,g entry)h;i |
| 19D5 | x(40E8004C): ADD R0, SP, 4CH |
| 19D6 | x .FIXUP D |
| 19D6 | x(8D100005): LDR SB, MT, MOD1 [Files] |
| 19D7 | x(41D80001): ADD R1, SB, VAR1 |
| 19D8 | y .FIXUP D |
| 19D8 | y(8D000002): LDR SB, MT, MOD0 [ORG] |
| 19D9 | y(82D00038): LDR R2, SB, 38H [data] |
| 19DA | z .FIXUP P |
| 19DA | z(F7119006): BL MOD1 [Files] PROC25 |
| 19DB | a(40E8004C): ADD R0, SP, 4CH |
| 19DC | a .FIXUP D |
| 19DC | a(8D100004): LDR SB, MT, MOD1 [Files] |
| 19DD | a(41D80001): ADD R1, SB, VAR1 |
| 19DE | b .FIXUP D |
| 19DE | b(8D000002): LDR SB, MT, MOD0 [ORG] |
| 19DF | b(82D0003C): LDR R2, SB, 3CH [data] |
| 19E0 | c .FIXUP P |
| 19E0 | c(F7119006): BL MOD1 [Files] PROC25 |
| 19E1 | d(40E8004C): ADD R0, SP, 4CH |
| 19E2 | d .FIXUP D |
| 19E2 | d(8D100004): LDR SB, MT, MOD1 [Files] |
| 19E3 | d(41D80001): ADD R1, SB, VAR1 |
| 19E4 | e .FIXUP D |
| 19E4 | e(8D000002): LDR SB, MT, MOD0 [ORG] |
| 19E5 | e(82D00040): LDR R2, SB, 40H [data] |
| 19E6 | f .FIXUP P |
| 19E6 | f(F7119006): BL MOD1 [Files] PROC25 |
| 19E7 | g(40E8004C): ADD R0, SP, 4CH |
| 19E8 | g .FIXUP D |
| 19E8 | g(8D100004): LDR SB, MT, MOD1 [Files] |
| 19E9 | g(41D80001): ADD R1, SB, VAR1 |
| 19EA | h .FIXUP D |
| 19EA | h(8D000002): LDR SB, MT, MOD0 [ORG] |
| 19EB | h(82D00028): LDR R2, SB, 28H [data] |
| 19EC | i .FIXUP P |
| 19EC | i(F7119006): BL MOD1 [Files] PROC25 |
| Files.Write(R,j "O")k;l Files.Register(F)m |
| 19ED | j(40E8004C): ADD R0, SP, 4CH |
| 19EE | j .FIXUP D |
| 19EE | j(8D100004): LDR SB, MT, MOD1 [Files] |
| 19EF | j(41D80001): ADD R1, SB, VAR1 |
| 19F0 | k(4200004F): MOV R2, R0, 4FH |
| 19F1 | l .FIXUP P |
| 19F1 | l(F7118005): BL MOD1 [Files] PROC24 |
| 19F2 | m(80E00048): LDR R0, SP, 48H |
| ENDn Close; |
| 19F3 | n .FIXUP P |
| 19F3 | n(F7104002): BL MOD1 [Files] PROC4 |
| 19F4 | n(8FE00000): LDR LNK, SP, 0H |
| 19F5 | n(4EE80064): ADD SP, SP, 64H |
| 19F6 | n(C700000F): B LNK |
| |
| BEGINo |
| 19F7 | o .PROC 0 |
| 19F7 | o .ENTRYPOINT |
| 19F7 | o(4EE90004): SUB SP, SP, 4H |
| 19F8 | o(AFE00000): STR LNK, SP, 0H |
| relmap[0] := 1;p relmap[1] := 9;q relmap[2] := 5;r relmap[3] := 6;s relmap[4] := 14;t relmap[5] := 13 |
| 19F9 | p(40000001): MOV R0, R0, 1H |
| 19FA | p .FIXUP D |
| 19FA | p(8D00000C): LDR SB, MT, MOD0 [ORG] |
| 19FB | p(A0D0004C): STR R0, SB, 4CH [data] |
| 19FC | q(40000009): MOV R0, R0, 9H |
| 19FD | q(A0D00050): STR R0, SB, 50H |
| 19FE | r(40000005): MOV R0, R0, 5H |
| 19FF | r(A0D00054): STR R0, SB, 54H |
| 1A00 | s(40000006): MOV R0, R0, 6H |
| 1A01 | s(A0D00058): STR R0, SB, 58H |
| 1A02 | t(4000000E): MOV R0, R0, EH |
| 1A03 | t(A0D0005C): STR R0, SB, 5CH |
| ENDu ORG.v |
| 1A04 | u(4000000D): MOV R0, R0, DH |
| 1A05 | u(A0D00060): STR R0, SB, 60H |
| 1A06 | v(8FE00000): LDR LNK, SP, 0H |
| 1A07 | v(4EE80004): ADD SP, SP, 4H |
| 1A08 | v(C700000F): B LNK |