ORG

Used Exports

BUILTINS: ABS BOOLEAN CHAR DEC INC INTEGER LONGINT LSL ODD ORD REAL SET
Files: File New Register Rider Set Write WriteByte WriteInt WriteString
ORB: Array Bool Const Int MakeFileName Mod ModDesc.orgname Module NilTyp NoTyp ObjDesc.class ObjDesc.dsc ObjDesc.exno ObjDesc.lev ObjDesc.name ObjDesc.next ObjDesc.rdo ObjDesc.type ObjDesc.val Object Par Pointer Proc Real Record String Typ Type TypeDesc.base TypeDesc.dsc TypeDesc.form TypeDesc.len TypeDesc.mno TypeDesc.nofpar TypeDesc.size TypeDesc.typobj Var byteType charType intType noType realType strType system topScope
ORS: Ident Mark Pos div eql minus neq plus rdiv str times
SYSTEM: VAL

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*)
0000a .PROC 1
0000a(4EE90014): SUB SP, SP, 14H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
0003a(A1E00008): STR R1, SP, 8H
0004a(A2E0000C): STR R2, SP, CH
0005a(A3E00010): STR R3, SP, 10H
code[pc]b := ((a*10H +c b)d * 10H +e op)f * 10000H +g c;h INC(pc)
0006b .PROC 2
0006b .FIXUP D
0006b(8D000006): LDR SB, MT, MOD0 [ORG]
0007b(80D00018): LDR R0, SB, 18H [data]
0008b(41091F40): SUB R1, R0, 1F40H
0009b(DA08CA1C): BLCC MT [trap=1, pos=2250]
000Ab(40010002): LSL R0, R0, 2H
000Bb(00D80000): ADD R0, SB, R0
000Cc(81E00008): LDR R1, SP, 8H
000Dc(41110004): LSL R1, R1, 4H
000Ed(82E0000C): LDR R2, SP, CH
000Fd(01180002): ADD R1, R1, R2
0010e(41110004): LSL R1, R1, 4H
0011f(82E00004): LDR R2, SP, 4H
0012f(01180002): ADD R1, R1, R2
0013g(41110010): LSL R1, R1, 10H
0014h(82E00010): LDR R2, SP, 10H
0015h(01180002): ADD R1, R1, R2
0016h(A1000064): STR R1, R0, 64H
ENDi Put0;
0017i(40D80018): ADD R0, SB, 18H
0018i(81000000): LDR R1, R0, 0H
0019i(41180001): ADD R1, R1, 1H
001Ai(A1000000): STR R1, R0, 0H
001Bi(8FE00000): LDR LNK, SP, 0H
001Ci(4EE80014): ADD SP, SP, 14H
001Di(C700000F): B LNK
PROCEDURE Put1(op, a, b, im: LONGINT);
BEGINj (*emit format-1 instruction, -10000H <= im < 10000H*)
001Ej(4EE90014): SUB SP, SP, 14H
001Fj(AFE00000): STR LNK, SP, 0H
0020j(A0E00004): STR R0, SP, 4H
0021j(A1E00008): STR R1, SP, 8H
0022j(A2E0000C): STR R2, SP, CH
0023j(A3E00010): STR R3, SP, 10H
IF im < 0 THENk INC(op, V) ENDl ;
0024k(80E00010): LDR R0, SP, 10H
0025k(40090000): SUB R0, R0, 0H
0026k(ED000003): BGE 3 [002AH]
0027l(80E00004): LDR R0, SP, 4H
0028l(40081000): ADD R0, R0, 1000H
0029l(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)
002Am .FIXUP D
002Am(8D000024): LDR SB, MT, MOD0 [ORG]
002Bm(80D00018): LDR R0, SB, 18H [data]
002Cm(41091F40): SUB R1, R0, 1F40H
002Dm(DA09A21C): BLCC MT [trap=1, pos=2466]
002Em(40010002): LSL R0, R0, 2H
002Fm(00D80000): ADD R0, SB, R0
0030n(81E00008): LDR R1, SP, 8H
0031n(41180040): ADD R1, R1, 40H
0032o(41110004): LSL R1, R1, 4H
0033p(82E0000C): LDR R2, SP, CH
0034p(01180002): ADD R1, R1, R2
0035q(41110004): LSL R1, R1, 4H
0036r(82E00004): LDR R2, SP, 4H
0037r(01180002): ADD R1, R1, R2
0038s(41110010): LSL R1, R1, 10H
0039t(82E00010): LDR R2, SP, 10H
003At(4224FFFF): AND R2, R2, FFFFFFFFH
003Bu(01180002): ADD R1, R1, R2
003Cu(A1000064): STR R1, R0, 64H
ENDv Put1;
003Dv(40D80018): ADD R0, SB, 18H
003Ev(81000000): LDR R1, R0, 0H
003Fv(41180001): ADD R1, R1, 1H
0040v(A1000000): STR R1, R0, 0H
0041v(8FE00000): LDR LNK, SP, 0H
0042v(4EE80014): ADD SP, SP, 14H
0043v(C700000F): B LNK
PROCEDURE Put1a(op, a, b, im: LONGINT);
BEGINw (*same as Put1, but with range test -10000H <= im < 10000H*)
0044w(4EE90014): SUB SP, SP, 14H
0045w(AFE00000): STR LNK, SP, 0H
0046w(A0E00004): STR R0, SP, 4H
0047w(A1E00008): STR R1, SP, 8H
0048w(A2E0000C): STR R2, SP, CH
0049w(A3E00010): STR R3, SP, 10H
IF (im >= -10000H)x & (yim <= 0FFFFH)z THENa Put1(op,b a,c b,d im)e
004Ax(80E00010): LDR R0, SP, 10H
004Bx(50090000): SUB R0, R0, 0H
004Cy(E5000009): BLT 9 [0056H]
004Dz(80E00010): LDR R0, SP, 10H
004Ez(4009FFFF): SUB R0, R0, FFFFFFFFH
004Fa(EE000006): BGT 6 [0056H]
0050b(80E00004): LDR R0, SP, 4H
0051c(81E00008): LDR R1, SP, 8H
0052d(82E0000C): LDR R2, SP, CH
0053e(83E00010): LDR R3, SP, 10H
ELSEf Put1g(Mov+U,h RH,i 0,j im DIV 10000H)k;l
0054f(F7FFFFC9): BL -55 [001EH]
0055g(E7000018): B 24 [006EH]
0056h(40002000): MOV R0, R0, 2000H
0057i .FIXUP D
0057i(8D00002D): LDR SB, MT, MOD0 [ORG]
0058i(81D0002C): LDR R1, SB, 2CH [data]
0059j(42000000): MOV R2, R0, 0H
005Ak(83E00010): LDR R3, SP, 10H
005Bk(43320010): ASR R3, R3, 10H
005Cl(F7FFFFC1): BL -63 [001EH]
IF im MOD 10000H #m 0 THENn Put1(Ior,o RH,p RH,q im MOD 10000H)r ENDs ;
005Dm(80E00010): LDR R0, SP, 10H
005Em(4004FFFF): AND R0, R0, FFFFFFFFH
005Fn(40090000): SUB R0, R0, 0H
0060n(E1000007): BEQ 7 [0068H]
0061o(40000006): MOV R0, R0, 6H
0062p .FIXUP D
0062p(8D00000B): LDR SB, MT, MOD0 [ORG]
0063p(81D0002C): LDR R1, SB, 2CH [data]
0064q(82D0002C): LDR R2, SB, 2CH
0065r(83E00010): LDR R3, SP, 10H
0066r(4334FFFF): AND R3, R3, FFFFFFFFH
0067s(F7FFFFB6): BL -74 [001EH]
Put0(op,t a,u b,v RH)w
0068t(80E00004): LDR R0, SP, 4H
0069u(81E00008): LDR R1, SP, 8H
006Av(82E0000C): LDR R2, SP, CH
006Bw .FIXUP D
006Bw(8D000009): LDR SB, MT, MOD0 [ORG]
006Cw(83D0002C): LDR R3, SB, 2CH [data]
ENDx
006Dx(F7FFFF92): BL -110 [0000H]
ENDy Put1a;
006Ey(8FE00000): LDR LNK, SP, 0H
006Fy(4EE80014): ADD SP, SP, 14H
0070y(C700000F): B LNK
PROCEDURE Put2(op, a, b, off: LONGINT);
BEGINz (*emit load/store instruction*)
0071z(4EE90014): SUB SP, SP, 14H
0072z(AFE00000): STR LNK, SP, 0H
0073z(A0E00004): STR R0, SP, 4H
0074z(A1E00008): STR R1, SP, 8H
0075z(A2E0000C): STR R2, SP, CH
0076z(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)
0077a .FIXUP D
0077a(8D00000C): LDR SB, MT, MOD0 [ORG]
0078a(80D00018): LDR R0, SB, 18H [data]
0079a(41091F40): SUB R1, R0, 1F40H
007Aa(DA0BA81C): BLCC MT [trap=1, pos=2984]
007Ba(40010002): LSL R0, R0, 2H
007Ca(00D80000): ADD R0, SB, R0
007Db(81E00004): LDR R1, SP, 4H
007Eb(41110004): LSL R1, R1, 4H
007Fc(82E00008): LDR R2, SP, 8H
0080c(01180002): ADD R1, R1, R2
0081d(41110004): LSL R1, R1, 4H
0082e(82E0000C): LDR R2, SP, CH
0083e(01180002): ADD R1, R1, R2
0084f(41110014): LSL R1, R1, 14H
0085g(82E00010): LDR R2, SP, 10H
0086g(4221000C): LSL R2, R2, CH
0087g(4223000C): ROR R2, R2, CH
0088h(01180002): ADD R1, R1, R2
0089h(A1000064): STR R1, R0, 64H
ENDi Put2;
008Ai(40D80018): ADD R0, SB, 18H
008Bi(81000000): LDR R1, R0, 0H
008Ci(41180001): ADD R1, R1, 1H
008Di(A1000000): STR R1, R0, 0H
008Ei(8FE00000): LDR LNK, SP, 0H
008Fi(4EE80014): ADD SP, SP, 14H
0090i(C700000F): B LNK
PROCEDURE Put3(op, cond, off: LONGINT);
BEGINj (*emit branch instruction*)
0091j(4EE90010): SUB SP, SP, 10H
0092j(AFE00000): STR LNK, SP, 0H
0093j(A0E00004): STR R0, SP, 4H
0094j(A1E00008): STR R1, SP, 8H
0095j(A2E0000C): STR R2, SP, CH
code[pc]k := ((op+12)l * 10H +m cond)n * 1000000H +o (off MOD 1000000H)p;q INC(pc)
0096k .FIXUP D
0096k(8D00001F): LDR SB, MT, MOD0 [ORG]
0097k(80D00018): LDR R0, SB, 18H [data]
0098k(41091F40): SUB R1, R0, 1F40H
0099k(DA0C551C): BLCC MT [trap=1, pos=3157]
009Ak(40010002): LSL R0, R0, 2H
009Bk(00D80000): ADD R0, SB, R0
009Cl(81E00004): LDR R1, SP, 4H
009Dl(4118000C): ADD R1, R1, CH
009Em(41110004): LSL R1, R1, 4H
009Fn(82E00008): LDR R2, SP, 8H
00A0n(01180002): ADD R1, R1, R2
00A1o(41110018): LSL R1, R1, 18H
00A2p(82E0000C): LDR R2, SP, CH
00A3p(42210008): LSL R2, R2, 8H
00A4p(42230008): ROR R2, R2, 8H
00A5q(01180002): ADD R1, R1, R2
00A6q(A1000064): STR R1, R0, 64H
ENDr Put3;
00A7r(40D80018): ADD R0, SB, 18H
00A8r(81000000): LDR R1, R0, 0H
00A9r(41180001): ADD R1, R1, 1H
00AAr(A1000000): STR R1, R0, 0H
00ABr(8FE00000): LDR LNK, SP, 0H
00ACr(4EE80010): ADD SP, SP, 10H
00ADr(C700000F): B LNK
PROCEDURE incR;
BEGINs
00AEs(4EE90004): SUB SP, SP, 4H
00AFs(AFE00000): STR LNK, SP, 0H
IF RH < MT-1 THENt INC(RH) ELSEu ORSv.Mark("register stack overflow")w ENDx
00B0t .FIXUP D
00B0t(8D00001A): LDR SB, MT, MOD0 [ORG]
00B1t(80D0002C): LDR R0, SB, 2CH [data]
00B2t(4009000B): SUB R0, R0, BH
00B3t(ED000006): BGE 6 [00BAH]
00B4u .FIXUP D
00B4u(8D000004): LDR SB, MT, MOD0 [ORG]
00B5u(40D8002C): ADD R0, SB, 2CH [data]
00B6u(81000000): LDR R1, R0, 0H
00B7u(41180001): ADD R1, R1, 1H
00B8u(A1000000): STR R1, R0, 0H
00B9v(E7000004): B 4 [00BEH]
00BAw .FIXUP D
00BAw(8D000006): LDR SB, MT, MOD0 [ORG]
00BBw(40D888A4): ADD R0, SB, FFFF88A4H [data]
00BCw(41000018): MOV R1, R0, 18H
00BDx .FIXUP P
00BDx(F72090BD): BL MOD2 [ORS] PROC9
ENDy incR;
00BEy(8FE00000): LDR LNK, SP, 0H
00BFy(4EE80004): ADD SP, SP, 4H
00C0y(C700000F): B LNK
PROCEDURE CheckRegs*;
BEGINz
00C1z .PROC 3
00C1z .COMMAND CheckRegs
00C1z(4EE90004): SUB SP, SP, 4H
00C2z(AFE00000): STR LNK, SP, 0H
IF RH # 0 THENa ORS.Mark("Reg Stack")b;c RH := 0 ENDd ;
00C3a .FIXUP D
00C3a(8D000009): LDR SB, MT, MOD0 [ORG]
00C4a(80D0002C): LDR R0, SB, 2CH [data]
00C5a(E1000007): BEQ 7 [00CDH]
00C6b .FIXUP D
00C6b(8D000003): LDR SB, MT, MOD0 [ORG]
00C7b(40D888BC): ADD R0, SB, FFFF88BCH [data]
00C8b(4100000A): MOV R1, R0, AH
00C9c .FIXUP P
00C9c(F720900C): BL MOD2 [ORS] PROC9
00CAd(40000000): MOV R0, R0, 0H
00CBd .FIXUP D
00CBd(8D000005): LDR SB, MT, MOD0 [ORG]
00CCd(A0D0002C): STR R0, SB, 2CH [data]
IF pc >= maxCode - 40 THENe ORS.Mark("program too long")f ENDg
00CDe .FIXUP D
00CDe(8D000002): LDR SB, MT, MOD0 [ORG]
00CEe(80D00018): LDR R0, SB, 18H [data]
00CFe(40091F18): SUB R0, R0, 1F18H
00D0e(E5000004): BLT 4 [00D5H]
00D1f .FIXUP D
00D1f(8D000004): LDR SB, MT, MOD0 [ORG]
00D2f(40D888C8): ADD R0, SB, FFFF88C8H [data]
00D3f(41000011): MOV R1, R0, 11H
00D4g .FIXUP P
00D4g(F720900B): BL MOD2 [ORS] PROC9
ENDh CheckRegs;
00D5h(8FE00000): LDR LNK, SP, 0H
00D6h(4EE80004): ADD SP, SP, 4H
00D7h(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
00D8i(4EE90010): SUB SP, SP, 10H
00D9i(AFE00000): STR LNK, SP, 0H
00DAi(A0E00004): STR R0, SP, 4H
00DBi(A1E00008): STR R1, SP, 8H
00DCi(A2E0000C): STR R2, SP, CH
00DDj(4000000C): MOV R0, R0, CH
00DEj(81E00004): LDR R1, SP, 4H
00DFj(A0100000): STR R0, R1, 0H
00E0k(40000000): MOV R0, R0, 0H
00E1k(81E00004): LDR R1, SP, 4H
00E2k(A0100008): STR R0, R1, 8H
00E3l(40000000): MOV R0, R0, 0H
00E4l(81E00004): LDR R1, SP, 4H
00E5l(A010000C): STR R0, R1, CH
ENDm SetCC;
00E6m(80E0000C): LDR R0, SP, CH
00E7m(81E00004): LDR R1, SP, 4H
00E8m(A0100010): STR R0, R1, 10H
00E9m(8FE00000): LDR LNK, SP, 0H
00EAm(4EE80010): ADD SP, SP, 10H
00EBm(C700000F): B LNK
PROCEDURE Trap(cond, num: LONGINT);
BEGINn Put3(BLR,o cond,p ORS.Pos()q*r100H +s num*10H +t MT)u
00ECn(4EE9000C): SUB SP, SP, CH
00EDn(AFE00000): STR LNK, SP, 0H
00EEn(A0E00004): STR R0, SP, 4H
00EFn(A1E00008): STR R1, SP, 8H
00F0o(40000001): MOV R0, R0, 1H
00F1p(81E00004): LDR R1, SP, 4H
00F2q(4EE90008): SUB SP, SP, 8H
00F3q(A0E00004): STR R0, SP, 4H
00F4q(A1E00000): STR R1, SP, 0H
00F5r .FIXUP P
00F5r(F7208021): BL MOD2 [ORS] PROC8
00F6r(02000000): MOV R2, R0, R0
00F7r(81E00000): LDR R1, SP, 0H
00F8r(80E00004): LDR R0, SP, 4H
00F9r(4EE80008): ADD SP, SP, 8H
00FAs(42210008): LSL R2, R2, 8H
00FBt(83E00008): LDR R3, SP, 8H
00FCt(43310004): LSL R3, R3, 4H
00FDt(02280003): ADD R2, R2, R3
00FEu(4228000C): ADD R2, R2, CH
ENDv Trap;
00FFv(F7FFFF91): BL -111 [0091H]
0100v(8FE00000): LDR LNK, SP, 0H
0101v(4EE8000C): ADD SP, SP, CH
0102v(C700000F): B LNK
(*handling of forward reference, fixups of branch addresses and constant tables*)
PROCEDURE negated(cond: LONGINT): LONGINT;
BEGINw
0103w(4EE90008): SUB SP, SP, 8H
0104w(AFE00000): STR LNK, SP, 0H
0105w(A0E00004): STR R0, SP, 4H
IF cond < 8 THENx cond := cond+8 ELSEy condz := cond-8 ENDa ;
0106x(80E00004): LDR R0, SP, 4H
0107x(40090008): SUB R0, R0, 8H
0108x(ED000004): BGE 4 [010DH]
0109y(80E00004): LDR R0, SP, 4H
010Ay(40080008): ADD R0, R0, 8H
010By(A0E00004): STR R0, SP, 4H
010Cz(E7000003): B 3 [0110H]
010Da(80E00004): LDR R0, SP, 4H
010Ea(40090008): SUB R0, R0, 8H
010Fa(A0E00004): STR R0, SP, 4H
RETURN cond
ENDb negated;
0110b(80E00004): LDR R0, SP, 4H
0111b(8FE00000): LDR LNK, SP, 0H
0112b(4EE80008): ADD SP, SP, 8H
0113b(C700000F): B LNK
PROCEDURE invalSB;
BEGINc curSB := 1
0114c(4EE90004): SUB SP, SP, 4H
0115c(AFE00000): STR LNK, SP, 0H
ENDd invalSB;
0116d(40000001): MOV R0, R0, 1H
0117d .FIXUP D
0117d(8D000046): LDR SB, MT, MOD0 [ORG]
0118d(A0D00030): STR R0, SB, 30H [data]
0119d(8FE00000): LDR LNK, SP, 0H
011Ad(4EE80004): ADD SP, SP, 4H
011Bd(C700000F): B LNK
PROCEDURE fix(at, with: LONGINT);
BEGINe code[at]f := code[at]g DIV C24 *h C24 +i (with MOD C24)j
011Ce(4EE9000C): SUB SP, SP, CH
011De(AFE00000): STR LNK, SP, 0H
011Ee(A0E00004): STR R0, SP, 4H
011Fe(A1E00008): STR R1, SP, 8H
0120f(80E00004): LDR R0, SP, 4H
0121f(41091F40): SUB R1, R0, 1F40H
0122f(DA0FEF1C): BLCC MT [trap=1, pos=4079]
0123f(40010002): LSL R0, R0, 2H
0124f .FIXUP D
0124f(8D00000D): LDR SB, MT, MOD0 [ORG]
0125f(00D80000): ADD R0, SB, R0 [global array]
0126g(81E00004): LDR R1, SP, 4H
0127g(42191F40): SUB R2, R1, 1F40H
0128g(DA0FFB1C): BLCC MT [trap=1, pos=4091]
0129g(41110002): LSL R1, R1, 2H
012Ag(01D80001): ADD R1, SB, R1
012Bh(81100064): LDR R1, R1, 64H
012Ch(41120018): ASR R1, R1, 18H
012Di(41110018): LSL R1, R1, 18H
012Ej(82E00008): LDR R2, SP, 8H
012Fj(42210008): LSL R2, R2, 8H
0130j(42230008): ROR R2, R2, 8H
ENDk fix;
0131k(01180002): ADD R1, R1, R2
0132k(A1000064): STR R1, R0, 64H
0133k(8FE00000): LDR LNK, SP, 0H
0134k(4EE8000C): ADD SP, SP, CH
0135k(C700000F): B LNK
PROCEDURE FixLink*(L: LONGINT);
VAR L1: LONGINT;
BEGINl invalSB;m
0136l .PROC 4
0136l(4EE9000C): SUB SP, SP, CH
0137l(AFE00000): STR LNK, SP, 0H
0138l(A0E00004): STR R0, SP, 4H
0139m(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
013An(80E00004): LDR R0, SP, 4H
013Bn(E1000013): BEQ 19 [014FH]
013Co(80E00004): LDR R0, SP, 4H
013Do(41091F40): SUB R1, R0, 1F40H
013Eo(DA108F1C): BLCC MT [trap=1, pos=4239]
013Fo(40010002): LSL R0, R0, 2H
0140o .FIXUP D
0140o(8D00001C): LDR SB, MT, MOD0 [ORG]
0141o(00D80000): ADD R0, SB, R0 [global array]
0142p(80000064): LDR R0, R0, 64H
0143p(4001000E): LSL R0, R0, EH
0144p(4003000E): ROR R0, R0, EH
0145p(A0E00008): STR R0, SP, 8H
0146q(80E00004): LDR R0, SP, 4H
0147r(81D00018): LDR R1, SB, 18H
0148r(82E00004): LDR R2, SP, 4H
0149r(01190002): SUB R1, R1, R2
014As(41190001): SUB R1, R1, 1H
014Bt(F7FFFFD0): BL -48 [011CH]
014Cu(80E00008): LDR R0, SP, 8H
014Du(A0E00004): STR R0, SP, 4H
014Eu(E7FFFFEB): B -21 [013AH]
ENDv FixLink;
014Fv(8FE00000): LDR LNK, SP, 0H
0150v(4EE8000C): ADD SP, SP, CH
0151v(C700000F): B LNK
PROCEDURE FixLinkWith(L0, dst: LONGINT);
VAR L1: LONGINT;
BEGINw
0152w(4EE90010): SUB SP, SP, 10H
0153w(AFE00000): STR LNK, SP, 0H
0154w(A0E00004): STR R0, SP, 4H
0155w(A1E00008): STR R1, SP, 8H
WHILE L0 # 0 DOx
0156x(80E00004): LDR R0, SP, 4H
0157x(E1000022): BEQ 34 [017AH]
L1 := code[L0]y MOD C24;z
0158y(80E00004): LDR R0, SP, 4H
0159y(41091F40): SUB R1, R0, 1F40H
015Ay(DA11381C): BLCC MT [trap=1, pos=4408]
015By(40010002): LSL R0, R0, 2H
015Cy .FIXUP D
015Cy(8D00001C): LDR SB, MT, MOD0 [ORG]
015Dy(00D80000): ADD R0, SB, R0 [global array]
015Ez(80000064): LDR R0, R0, 64H
015Fz(40010008): LSL R0, R0, 8H
0160z(40030008): ROR R0, R0, 8H
0161z(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
0162a(80E00004): LDR R0, SP, 4H
0163a(41091F40): SUB R1, R0, 1F40H
0164a(DA11501C): BLCC MT [trap=1, pos=4432]
0165a(40010002): LSL R0, R0, 2H
0166a(00D80000): ADD R0, SB, R0
0167b(81E00004): LDR R1, SP, 4H
0168b(42191F40): SUB R2, R1, 1F40H
0169b(DA115C1C): BLCC MT [trap=1, pos=4444]
016Ab(41110002): LSL R1, R1, 2H
016Bb(01D80001): ADD R1, SB, R1
016Cc(81100064): LDR R1, R1, 64H
016Dc(41120018): ASR R1, R1, 18H
016Ed(41110018): LSL R1, R1, 18H
016Fe(82E00008): LDR R2, SP, 8H
0170e(83E00004): LDR R3, SP, 4H
0171e(02290003): SUB R2, R2, R3
0172f(42290001): SUB R2, R2, 1H
0173g(42210008): LSL R2, R2, 8H
0174g(42230008): ROR R2, R2, 8H
0175h(01180002): ADD R1, R1, R2
0176h(A1000064): STR R1, R0, 64H
ENDi
0177i(80E0000C): LDR R0, SP, CH
0178i(A0E00004): STR R0, SP, 4H
0179i(E7FFFFDC): B -36 [0156H]
ENDj FixLinkWith;
017Aj(8FE00000): LDR LNK, SP, 0H
017Bj(4EE80010): ADD SP, SP, 10H
017Cj(C700000F): B LNK
PROCEDURE merged(L0, L1: LONGINT): LONGINT;
VAR L2, L3: LONGINT;
BEGINk
017Dk(4EE90014): SUB SP, SP, 14H
017Ek(AFE00000): STR LNK, SP, 0H
017Fk(A0E00004): STR R0, SP, 4H
0180k(A1E00008): STR R1, SP, 8H
IF L0 # 0 THENl L3 := L0;m
0181l(80E00004): LDR R0, SP, 4H
0182l(E1000021): BEQ 33 [01A4H]
0183m(80E00004): LDR R0, SP, 4H
0184m(A0E00010): STR R0, SP, 10H
REPEAT L2 := L3;n L3 := code[L2]o MOD 40000H UNTILp L3 = 0;q
0185n(80E00010): LDR R0, SP, 10H
0186n(A0E0000C): STR R0, SP, CH
0187o(80E0000C): LDR R0, SP, CH
0188o(41091F40): SUB R1, R0, 1F40H
0189o(DA123E1C): BLCC MT [trap=1, pos=4670]
018Ao(40010002): LSL R0, R0, 2H
018Bo .FIXUP D
018Bo(8D00002F): LDR SB, MT, MOD0 [ORG]
018Co(00D80000): ADD R0, SB, R0 [global array]
018Dp(80000064): LDR R0, R0, 64H
018Ep(4001000E): LSL R0, R0, EH
018Fp(4003000E): ROR R0, R0, EH
0190p(A0E00010): STR R0, SP, 10H
0191q(80E00010): LDR R0, SP, 10H
0192q(E9FFFFF2): BNE -14 [0185H]
code[L2]r := code[L2]s + L1;t L1 := L0
0193r(80E0000C): LDR R0, SP, CH
0194r(41091F40): SUB R1, R0, 1F40H
0195r(DA12661C): BLCC MT [trap=1, pos=4710]
0196r(40010002): LSL R0, R0, 2H
0197r .FIXUP D
0197r(8D00000C): LDR SB, MT, MOD0 [ORG]
0198r(00D80000): ADD R0, SB, R0 [global array]
0199s(81E0000C): LDR R1, SP, CH
019As(42191F40): SUB R2, R1, 1F40H
019Bs(DA12721C): BLCC MT [trap=1, pos=4722]
019Cs(41110002): LSL R1, R1, 2H
019Ds(01D80001): ADD R1, SB, R1
019Et(81100064): LDR R1, R1, 64H
019Ft(82E00008): LDR R2, SP, 8H
01A0t(01180002): ADD R1, R1, R2
01A1t(A1000064): STR R1, R0, 64H
ENDu ;
01A2u(80E00004): LDR R0, SP, 4H
01A3u(A0E00008): STR R0, SP, 8H
RETURN L1
ENDv merged;
01A4v(80E00008): LDR R0, SP, 8H
01A5v(8FE00000): LDR LNK, SP, 0H
01A6v(4EE80014): ADD SP, SP, 14H
01A7v(C700000F): B LNK
(* loading of operands and addresses into registers *)
PROCEDURE GetSB(base: LONGINT);
BEGINw
01A8w(4EE90008): SUB SP, SP, 8H
01A9w(AFE00000): STR LNK, SP, 0H
01AAw(A0E00004): STR R0, SP, 4H
IF (version # 0)x & (y(base # curSB)z OR (abase # 0)b) THENc
01ABx .FIXUP D
01ABx(8D000014): LDR SB, MT, MOD0 [ORG]
01ACx(80D00048): LDR R0, SB, 48H [data]
01ADy(E1000017): BEQ 23 [01C5H]
01AEz(80E00004): LDR R0, SP, 4H
01AFz .FIXUP D
01AFz(8D000004): LDR SB, MT, MOD0 [ORG]
01B0z(81D00030): LDR R1, SB, 30H [data]
01B1z(00090001): SUB R0, R0, R1
01B2a(E9000002): BNE 2 [01B5H]
01B3b(80E00004): LDR R0, SP, 4H
01B4c(E1000010): BEQ 16 [01C5H]
Put2(Ldr,d SB,e -base,f pc-fixorgD)g;h fixorgD := pc-1;i curSB := base
01B5d(40000008): MOV R0, R0, 8H
01B6e(4100000D): MOV R1, R0, DH
01B7f(82E00004): LDR R2, SP, 4H
01B8f(43000000): MOV R3, R0, 0H
01B9f(02390002): SUB R2, R3, R2
01BAg .FIXUP D
01BAg(8D00000B): LDR SB, MT, MOD0 [ORG]
01BBg(83D00018): LDR R3, SB, 18H [data]
01BCg(84D0003C): LDR R4, SB, 3CH
01BDg(03390004): SUB R3, R3, R4
01BEh(F7FFFEB2): BL -334 [0071H]
01BFi .FIXUP D
01BFi(8D000005): LDR SB, MT, MOD0 [ORG]
01C0i(80D00018): LDR R0, SB, 18H [data]
01C1i(40090001): SUB R0, R0, 1H
01C2i(A0D0003C): STR R0, SB, 3CH
ENDj
01C3j(80E00004): LDR R0, SP, 4H
01C4j(A0D00030): STR R0, SB, 30H
ENDk GetSB;
01C5k(8FE00000): LDR LNK, SP, 0H
01C6k(4EE80008): ADD SP, SP, 8H
01C7k(C700000F): B LNK
PROCEDURE NilCheck;
BEGINl IF check THENm Trap(EQ,n 4)o ENDp
01C8l(4EE90004): SUB SP, SP, 4H
01C9l(AFE00000): STR LNK, SP, 0H
01CAm .FIXUP D
01CAm(8D00000B): LDR SB, MT, MOD0 [ORG]
01CBm(90D00044): LDR R0, SB, 44H [data]
01CCm(E1000003): BEQ 3 [01D0H]
01CDn(40000001): MOV R0, R0, 1H
01CEo(41000004): MOV R1, R0, 4H
01CFp(F7FFFF1C): BL -228 [00ECH]
ENDq NilCheck;
01D0q(8FE00000): LDR LNK, SP, 0H
01D1q(4EE80004): ADD SP, SP, 4H
01D2q(C700000F): B LNK
PROCEDURE load(VAR x: Item);
VAR op: LONGINT;
BEGINr
01D3r(4EE90010): SUB SP, SP, 10H
01D4r(AFE00000): STR LNK, SP, 0H
01D5r(A0E00004): STR R0, SP, 4H
01D6r(A1E00008): STR R1, SP, 8H
IF x.type.sizes = 1 THENt op := Ldr+1 ELSEu opv := Ldr ENDw ;
01D7s(80E00004): LDR R0, SP, 4H
01D8s(80000004): LDR R0, R0, 4H
01D9s(D114404C): BLEQ MT [trap=4, pos=5184]
01DAt(80000020): LDR R0, R0, 20H
01DBt(40090001): SUB R0, R0, 1H
01DCt(E9000003): BNE 3 [01E0H]
01DDu(40000009): MOV R0, R0, 9H
01DEu(A0E0000C): STR R0, SP, CH
01DFv(E7000002): B 2 [01E2H]
01E0w(40000008): MOV R0, R0, 8H
01E1w(A0E0000C): STR R0, SP, CH
IF x.mode # Reg THENx
01E2x(80E00004): LDR R0, SP, 4H
01E3x(80000000): LDR R0, R0, 0H
01E4x(4009000A): SUB R0, R0, AH
01E5x(E10000D3): BEQ 211 [02B9H]
IF x.mode = ORB.Const THENy
01E6y(80E00004): LDR R0, SP, 4H
01E7y(80000000): LDR R0, R0, 0H
01E8y(40090001): SUB R0, R0, 1H
01E9y(E9000059): BNE 89 [0243H]
IF x.type.formz = ORB.Proc THENa
01EAz(80E00004): LDR R0, SP, 4H
01EBz(80000004): LDR R0, R0, 4H
01ECz(D114BB4C): BLEQ MT [trap=4, pos=5307]
01EDa(80000000): LDR R0, R0, 0H
01EEa(4009000A): SUB R0, R0, AH
01EFa(E9000027): BNE 39 [0217H]
IF x.r > 0 THENb ORS.Mark("not allowed")c
01F0b(80E00004): LDR R0, SP, 4H
01F1b(80000010): LDR R0, R0, 10H
01F2b(40090000): SUB R0, R0, 0H
01F3b(E6000005): BLE 5 [01F9H]
01F4c .FIXUP D
01F4c(8D00002A): LDR SB, MT, MOD0 [ORG]
01F5c(40D888DC): ADD R0, SB, FFFF88DCH [data]
01F6c(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
01F7d .FIXUP P
01F7d(F7209102): BL MOD2 [ORS] PROC9
01F8e(E700001D): B 29 [0216H]
01F9f(80E00004): LDR R0, SP, 4H
01FAf(80000010): LDR R0, R0, 10H
01FBf(E900000F): BNE 15 [020BH]
01FCg(40000003): MOV R0, R0, 3H
01FDh(41000007): MOV R1, R0, 7H
01FEi(42000000): MOV R2, R0, 0H
01FFj(F7FFFE91): BL -367 [0091H]
0200k(40000009): MOV R0, R0, 9H
0201l .FIXUP D
0201l(8D00000D): LDR SB, MT, MOD0 [ORG]
0202l(81D0002C): LDR R1, SB, 2CH [data]
0203m(4200000F): MOV R2, R0, FH
0204n(83D00018): LDR R3, SB, 18H
0205n(43310002): LSL R3, R3, 2H
0206o(84E00004): LDR R4, SP, 4H
0207o(84400008): LDR R4, R4, 8H
0208o(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*)
0209p(F7FFFE3A): BL -454 [0044H]
020Aq(E700000B): B 11 [0216H]
020Br(80E00004): LDR R0, SP, 4H
020Cr(80000010): LDR R0, R0, 10H
020Ds(F7FFFF9A): BL -102 [01A8H]
020Et(40000008): MOV R0, R0, 8H
020Fu .FIXUP D
020Fu(8D00000E): LDR SB, MT, MOD0 [ORG]
0210u(81D0002C): LDR R1, SB, 2CH [data]
0211v(4200000D): MOV R2, R0, DH
0212w(83E00004): LDR R3, SP, 4H
0213w(83300008): LDR R3, R3, 8H
0214w(43380100): ADD R3, R3, 100H
ENDx
0215x(F7FFFE08): BL -504 [001EH]
ELSIF (yx.a <= 0FFFFH)z & (ax.a >= -10000H)b THENc Put1(Mov,d RH,e 0,f x.a)g
0216y(E7000026): B 38 [023DH]
0217z(80E00004): LDR R0, SP, 4H
0218z(80000008): LDR R0, R0, 8H
0219z(4009FFFF): SUB R0, R0, FFFFFFFFH
021Aa(EE00000C): BGT 12 [0227H]
021Bb(80E00004): LDR R0, SP, 4H
021Cb(80000008): LDR R0, R0, 8H
021Db(50090000): SUB R0, R0, 0H
021Ec(E5000008): BLT 8 [0227H]
021Fd(40000000): MOV R0, R0, 0H
0220e .FIXUP D
0220e(8D000011): LDR SB, MT, MOD0 [ORG]
0221e(81D0002C): LDR R1, SB, 2CH [data]
0222f(42000000): MOV R2, R0, 0H
0223g(83E00004): LDR R3, SP, 4H
0224g(83300008): LDR R3, R3, 8H
ELSEh Put1i(Mov+U,j RH,k 0,l x.a DIV 10000H MODm 10000H)n;o
0225h(F7FFFDF8): BL -520 [001EH]
0226i(E7000016): B 22 [023DH]
0227j(40002000): MOV R0, R0, 2000H
0228k .FIXUP D
0228k(8D000008): LDR SB, MT, MOD0 [ORG]
0229k(81D0002C): LDR R1, SB, 2CH [data]
022Al(42000000): MOV R2, R0, 0H
022Bm(83E00004): LDR R3, SP, 4H
022Cm(83300008): LDR R3, R3, 8H
022Dm(43320010): ASR R3, R3, 10H
022En(4334FFFF): AND R3, R3, FFFFFFFFH
022Fo(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
0230p(80E00004): LDR R0, SP, 4H
0231p(80000008): LDR R0, R0, 8H
0232p(4004FFFF): AND R0, R0, FFFFFFFFH
0233q(40090000): SUB R0, R0, 0H
0234q(E1000008): BEQ 8 [023DH]
0235r(40000006): MOV R0, R0, 6H
0236s .FIXUP D
0236s(8D00000E): LDR SB, MT, MOD0 [ORG]
0237s(81D0002C): LDR R1, SB, 2CH [data]
0238t(82D0002C): LDR R2, SB, 2CH
0239u(83E00004): LDR R3, SP, 4H
023Au(83300008): LDR R3, R3, 8H
023Bu(4334FFFF): AND R3, R3, FFFFFFFFH
023Cv(F7FFFDE1): BL -543 [001EH]
END ;
x.r := RH;w incR
023Dw .FIXUP D
023Dw(8D000007): LDR SB, MT, MOD0 [ORG]
023Ew(80D0002C): LDR R0, SB, 2CH [data]
023Fw(81E00004): LDR R1, SP, 4H
0240w(A0100010): STR R0, R1, 10H
ELSIFx xy.mode = ORB.Var THENz
0241x(F7FFFE6C): BL -404 [00AEH]
0242y(E7000073): B 115 [02B6H]
0243z(80E00004): LDR R0, SP, 4H
0244z(80000000): LDR R0, R0, 0H
0245z(40090002): SUB R0, R0, 2H
0246z(E900001E): BNE 30 [0265H]
IF x.r > 0 THENa (*local*) Put2(op,b RH,c SP,d x.a + frame)e
0247a(80E00004): LDR R0, SP, 4H
0248a(80000010): LDR R0, R0, 10H
0249a(40090000): SUB R0, R0, 0H
024Aa(E600000A): BLE 10 [0255H]
024Bb(80E0000C): LDR R0, SP, CH
024Cc .FIXUP D
024Cc(8D00000F): LDR SB, MT, MOD0 [ORG]
024Dc(81D0002C): LDR R1, SB, 2CH [data]
024Ed(4200000E): MOV R2, R0, EH
024Fe(83E00004): LDR R3, SP, 4H
0250e(83300008): LDR R3, R3, 8H
0251e(84D00034): LDR R4, SB, 34H
0252e(03380004): ADD R3, R3, R4
ELSEf GetSBg(x.r)h;i Put2(op,j RH,k SB,l x.a)m
0253f(F7FFFE1D): BL -483 [0071H]
0254g(E700000A): B 10 [025FH]
0255h(80E00004): LDR R0, SP, 4H
0256h(80000010): LDR R0, R0, 10H
0257i(F7FFFF50): BL -176 [01A8H]
0258j(80E0000C): LDR R0, SP, CH
0259k .FIXUP D
0259k(8D00000D): LDR SB, MT, MOD0 [ORG]
025Ak(81D0002C): LDR R1, SB, 2CH [data]
025Bl(4200000D): MOV R2, R0, DH
025Cm(83E00004): LDR R3, SP, 4H
025Dm(83300008): LDR R3, R3, 8H
ENDn ;
025En(F7FFFE12): BL -494 [0071H]
x.r := RH;o incR
025Fo .FIXUP D
025Fo(8D000006): LDR SB, MT, MOD0 [ORG]
0260o(80D0002C): LDR R0, SB, 2CH [data]
0261o(81E00004): LDR R1, SP, 4H
0262o(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
0263p(F7FFFE4A): BL -438 [00AEH]
0264q(E7000051): B 81 [02B6H]
0265r(80E00004): LDR R0, SP, 4H
0266r(80000000): LDR R0, R0, 0H
0267r(40090003): SUB R0, R0, 3H
0268r(E9000016): BNE 22 [027FH]
0269s(40000008): MOV R0, R0, 8H
026At .FIXUP D
026At(8D00000B): LDR SB, MT, MOD0 [ORG]
026Bt(81D0002C): LDR R1, SB, 2CH [data]
026Cu(4200000E): MOV R2, R0, EH
026Dv(83E00004): LDR R3, SP, 4H
026Ev(83300008): LDR R3, R3, 8H
026Fv(84D00034): LDR R4, SB, 34H
0270v(03380004): ADD R3, R3, R4
0271w(F7FFFDFF): BL -513 [0071H]
0272x(80E0000C): LDR R0, SP, CH
0273y .FIXUP D
0273y(8D000009): LDR SB, MT, MOD0 [ORG]
0274y(81D0002C): LDR R1, SB, 2CH [data]
0275z(82D0002C): LDR R2, SB, 2CH
0276a(83E00004): LDR R3, SP, 4H
0277a(8330000C): LDR R3, R3, CH
0278b(F7FFFDF8): BL -520 [0071H]
0279c .FIXUP D
0279c(8D000006): LDR SB, MT, MOD0 [ORG]
027Ac(80D0002C): LDR R0, SB, 2CH [data]
027Bc(81E00004): LDR R1, SP, 4H
027Cc(A0100010): STR R0, R1, 10H
ELSIFd xe.mode = RegI THENf Put2(op,g x.r,h x.r,i x.a)j
027Dd(F7FFFE30): BL -464 [00AEH]
027Ee(E7000037): B 55 [02B6H]
027Ff(80E00004): LDR R0, SP, 4H
0280f(80000000): LDR R0, R0, 0H
0281f(4009000B): SUB R0, R0, BH
0282f(E9000009): BNE 9 [028CH]
0283g(80E0000C): LDR R0, SP, CH
0284h(81E00004): LDR R1, SP, 4H
0285h(81100010): LDR R1, R1, 10H
0286i(82E00004): LDR R2, SP, 4H
0287i(82200010): LDR R2, R2, 10H
0288j(83E00004): LDR R3, SP, 4H
0289j(83300008): LDR R3, R3, 8H
ELSIFk xl.mode = Cond THENm
028Ak(F7FFFDE6): BL -538 [0071H]
028Bl(E700002A): B 42 [02B6H]
028Cm(80E00004): LDR R0, SP, 4H
028Dm(80000000): LDR R0, R0, 0H
028Em(4009000C): SUB R0, R0, CH
028Fm(E9000026): BNE 38 [02B6H]
Put3(BC,n negated(xo.r)p,q 2)r;s
0290n(40000002): MOV R0, R0, 2H
0291o(4EE90004): SUB SP, SP, 4H
0292o(A0E00000): STR R0, SP, 0H
0293p(80E00008): LDR R0, SP, 8H
0294p(80000010): LDR R0, R0, 10H
0295q(F7FFFE6D): BL -403 [0103H]
0296q(01000000): MOV R1, R0, R0
0297q(80E00000): LDR R0, SP, 0H
0298q(4EE80004): ADD SP, SP, 4H
0299r(42000002): MOV R2, R0, 2H
029As(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
029Bt(80E00004): LDR R0, SP, 4H
029Ct(8000000C): LDR R0, R0, CH
029Du(F7FFFE98): BL -360 [0136H]
029Ev(40000000): MOV R0, R0, 0H
029Fw .FIXUP D
029Fw(8D000026): LDR SB, MT, MOD0 [ORG]
02A0w(81D0002C): LDR R1, SB, 2CH [data]
02A1x(42000000): MOV R2, R0, 0H
02A2y(43000001): MOV R3, R0, 1H
02A3z(F7FFFD7A): BL -646 [001EH]
02A4a(40000002): MOV R0, R0, 2H
02A5b(41000007): MOV R1, R0, 7H
02A6c(42000001): MOV R2, R0, 1H
02A7d(F7FFFDE9): BL -535 [0091H]
FixLink(x.a)e;f Put1(Mov,g RH,h 0,i 0)j;k x.r := RH;l incR
02A8e(80E00004): LDR R0, SP, 4H
02A9e(80000008): LDR R0, R0, 8H
02AAf(F7FFFE8B): BL -373 [0136H]
02ABg(40000000): MOV R0, R0, 0H
02ACh .FIXUP D
02ACh(8D00000D): LDR SB, MT, MOD0 [ORG]
02ADh(81D0002C): LDR R1, SB, 2CH [data]
02AEi(42000000): MOV R2, R0, 0H
02AFj(43000000): MOV R3, R0, 0H
02B0k(F7FFFD6D): BL -659 [001EH]
02B1l .FIXUP D
02B1l(8D000005): LDR SB, MT, MOD0 [ORG]
02B2l(80D0002C): LDR R0, SB, 2CH [data]
02B3l(81E00004): LDR R1, SP, 4H
02B4l(A0100010): STR R0, R1, 10H
ENDm ;
02B5m(F7FFFDF8): BL -520 [00AEH]
x.mode := Reg
ENDn
02B6n(4000000A): MOV R0, R0, AH
02B7n(81E00004): LDR R1, SP, 4H
02B8n(A0100000): STR R0, R1, 0H
ENDo load;
02B9o(8FE00000): LDR LNK, SP, 0H
02BAo(4EE80010): ADD SP, SP, 10H
02BBo(C700000F): B LNK
PROCEDURE loadAdr(VAR x: Item);
BEGINp
02BCp(4EE9000C): SUB SP, SP, CH
02BDp(AFE00000): STR LNK, SP, 0H
02BEp(A0E00004): STR R0, SP, 4H
02BFp(A1E00008): STR R1, SP, 8H
IF x.mode = ORB.Var THENq
02C0q(80E00004): LDR R0, SP, 4H
02C1q(80000000): LDR R0, R0, 0H
02C2q(40090002): SUB R0, R0, 2H
02C3q(E900001E): BNE 30 [02E2H]
IF x.r > 0 THENr (*local*) Put1a(Add,s RH,t SP,u x.a + frame)v
02C4r(80E00004): LDR R0, SP, 4H
02C5r(80000010): LDR R0, R0, 10H
02C6r(40090000): SUB R0, R0, 0H
02C7r(E600000A): BLE 10 [02D2H]
02C8s(40000008): MOV R0, R0, 8H
02C9t .FIXUP D
02C9t(8D000018): LDR SB, MT, MOD0 [ORG]
02CAt(81D0002C): LDR R1, SB, 2CH [data]
02CBu(4200000E): MOV R2, R0, EH
02CCv(83E00004): LDR R3, SP, 4H
02CDv(83300008): LDR R3, R3, 8H
02CEv(84D00034): LDR R4, SB, 34H
02CFv(03380004): ADD R3, R3, R4
ELSEw GetSBx(x.r)y;z Put1a(Add,a RH,b SB,c x.a)d
02D0w(F7FFFD73): BL -653 [0044H]
02D1x(E700000A): B 10 [02DCH]
02D2y(80E00004): LDR R0, SP, 4H
02D3y(80000010): LDR R0, R0, 10H
02D4z(F7FFFED3): BL -301 [01A8H]
02D5a(40000008): MOV R0, R0, 8H
02D6b .FIXUP D
02D6b(8D00000D): LDR SB, MT, MOD0 [ORG]
02D7b(81D0002C): LDR R1, SB, 2CH [data]
02D8c(4200000D): MOV R2, R0, DH
02D9d(83E00004): LDR R3, SP, 4H
02DAd(83300008): LDR R3, R3, 8H
ENDe ;
02DBe(F7FFFD68): BL -664 [0044H]
x.r := RH;f incR
02DCf .FIXUP D
02DCf(8D000006): LDR SB, MT, MOD0 [ORG]
02DDf(80D0002C): LDR R0, SB, 2CH [data]
02DEf(81E00004): LDR R1, SP, 4H
02DFf(A0100010): STR R0, R1, 10H
ELSIFg xh.mode = ORB.Par THENi Put2(Ldr,j RH,k SP,l x.a + frame)m;n
02E0g(F7FFFDCD): BL -563 [00AEH]
02E1h(E7000031): B 49 [0313H]
02E2i(80E00004): LDR R0, SP, 4H
02E3i(80000000): LDR R0, R0, 0H
02E4i(40090003): SUB R0, R0, 3H
02E5i(E9000019): BNE 25 [02FFH]
02E6j(40000008): MOV R0, R0, 8H
02E7k .FIXUP D
02E7k(8D00000B): LDR SB, MT, MOD0 [ORG]
02E8k(81D0002C): LDR R1, SB, 2CH [data]
02E9l(4200000E): MOV R2, R0, EH
02EAm(83E00004): LDR R3, SP, 4H
02EBm(83300008): LDR R3, R3, 8H
02ECm(84D00034): LDR R4, SB, 34H
02EDm(03380004): ADD R3, R3, R4
02EEn(F7FFFD82): BL -638 [0071H]
IF x.b # 0 THENo Put1a(Add,p RH,q RH,r x.b)s ENDt ;
02EFo(80E00004): LDR R0, SP, 4H
02F0o(8000000C): LDR R0, R0, CH
02F1o(E1000007): BEQ 7 [02F9H]
02F2p(40000008): MOV R0, R0, 8H
02F3q .FIXUP D
02F3q(8D00000C): LDR SB, MT, MOD0 [ORG]
02F4q(81D0002C): LDR R1, SB, 2CH [data]
02F5r(82D0002C): LDR R2, SB, 2CH
02F6s(83E00004): LDR R3, SP, 4H
02F7s(8330000C): LDR R3, R3, CH
02F8t(F7FFFD4B): BL -693 [0044H]
x.r := RH;u incR
02F9u .FIXUP D
02F9u(8D000006): LDR SB, MT, MOD0 [ORG]
02FAu(80D0002C): LDR R0, SB, 2CH [data]
02FBu(81E00004): LDR R1, SP, 4H
02FCu(A0100010): STR R0, R1, 10H
ELSIFv xw.mode = RegI THENx
02FDv(F7FFFDB0): BL -592 [00AEH]
02FEw(E7000014): B 20 [0313H]
02FFx(80E00004): LDR R0, SP, 4H
0300x(80000000): LDR R0, R0, 0H
0301x(4009000B): SUB R0, R0, BH
0302x(E900000C): BNE 12 [030FH]
IF x.a # 0 THENy Put1a(Add,z x.r,a x.r,b x.a)c ENDd
0303y(80E00004): LDR R0, SP, 4H
0304y(80000008): LDR R0, R0, 8H
0305y(E1000008): BEQ 8 [030EH]
0306z(40000008): MOV R0, R0, 8H
0307a(81E00004): LDR R1, SP, 4H
0308a(81100010): LDR R1, R1, 10H
0309b(82E00004): LDR R2, SP, 4H
030Ab(82200010): LDR R2, R2, 10H
030Bc(83E00004): LDR R3, SP, 4H
030Cc(83300008): LDR R3, R3, 8H
030Dd(F7FFFD36): BL -714 [0044H]
ELSE ORSe.Mark("address error")f
030Ee(E7000004): B 4 [0313H]
030Ff .FIXUP D
030Ff(8D000016): LDR SB, MT, MOD0 [ORG]
0310f(40D888E8): ADD R0, SB, FFFF88E8H [data]
0311f(4100000E): MOV R1, R0, EH
ENDg ;
0312g .FIXUP P
0312g(F720911B): BL MOD2 [ORS] PROC9
x.mode := Reg
ENDh loadAdr;
0313h(4000000A): MOV R0, R0, AH
0314h(81E00004): LDR R1, SP, 4H
0315h(A0100000): STR R0, R1, 0H
0316h(8FE00000): LDR LNK, SP, 0H
0317h(4EE8000C): ADD SP, SP, CH
0318h(C700000F): B LNK
PROCEDURE loadCond(VAR x: Item);
BEGINi
0319i(4EE9000C): SUB SP, SP, CH
031Ai(AFE00000): STR LNK, SP, 0H
031Bi(A0E00004): STR R0, SP, 4H
031Ci(A1E00008): STR R1, SP, 8H
IF x.type.formj = ORB.Bool THENk
031Dj(80E00004): LDR R0, SP, 4H
031Ej(80000004): LDR R0, R0, 4H
031Fj(D11B2C4C): BLEQ MT [trap=4, pos=6956]
0320k(80000000): LDR R0, R0, 0H
0321k(40090002): SUB R0, R0, 2H
0322k(E9000033): BNE 51 [0356H]
IF x.mode = ORB.Const THENl x.r := 15 - x.a*8
0323l(80E00004): LDR R0, SP, 4H
0324l(80000000): LDR R0, R0, 0H
0325l(40090001): SUB R0, R0, 1H
0326l(E9000008): BNE 8 [032FH]
ELSEm loadn(x)o;p
0327m(80E00004): LDR R0, SP, 4H
0328m(80000008): LDR R0, R0, 8H
0329m(40010003): LSL R0, R0, 3H
032Am(4100000F): MOV R1, R0, FH
032Bm(00190000): SUB R0, R1, R0
032Cm(81E00004): LDR R1, SP, 4H
032Dm(A0100010): STR R0, R1, 10H
032En(E700001D): B 29 [034CH]
032Fo(80E00004): LDR R0, SP, 4H
0330o(81E00008): LDR R1, SP, 8H
0331p(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 ;
0332q .FIXUP D
0332q(8D000023): LDR SB, MT, MOD0 [ORG]
0333q(80D00018): LDR R0, SB, 18H [data]
0334q(40090001): SUB R0, R0, 1H
0335q(41091F40): SUB R1, R0, 1F40H
0336q(DA1B991C): BLCC MT [trap=1, pos=7065]
0337q(40010002): LSL R0, R0, 2H
0338q(00D80000): ADD R0, SB, R0
0339r(80000064): LDR R0, R0, 64H
033Ar(4002001E): ASR R0, R0, 1EH
033Bs(5009FFFE): SUB R0, R0, FFFFFFFEH
033Cs(E1000007): BEQ 7 [0344H]
033Dt(40000009): MOV R0, R0, 9H
033Eu(81E00004): LDR R1, SP, 4H
033Fu(81100010): LDR R1, R1, 10H
0340v(82E00004): LDR R2, SP, 4H
0341v(82200010): LDR R2, R2, 10H
0342w(43000000): MOV R3, R0, 0H
0343x(F7FFFCDA): BL -806 [001EH]
x.r := NE;y DEC(RH)
0344y(40000009): MOV R0, R0, 9H
0345y(81E00004): LDR R1, SP, 4H
0346y(A0100010): STR R0, R1, 10H
ENDz ;
0347z .FIXUP D
0347z(8D000015): LDR SB, MT, MOD0 [ORG]
0348z(40D8002C): ADD R0, SB, 2CH [data]
0349z(81000000): LDR R1, R0, 0H
034Az(41190001): SUB R1, R1, 1H
034Bz(A1000000): STR R1, R0, 0H
x.mode := Cond;a x.a := 0;b x.b := 0
034Ca(4000000C): MOV R0, R0, CH
034Da(81E00004): LDR R1, SP, 4H
034Ea(A0100000): STR R0, R1, 0H
034Fb(40000000): MOV R0, R0, 0H
0350b(81E00004): LDR R1, SP, 4H
0351b(A0100008): STR R0, R1, 8H
ELSEc ORSd.Mark("not Boolean?")e
0352c(40000000): MOV R0, R0, 0H
0353c(81E00004): LDR R1, SP, 4H
0354c(A010000C): STR R0, R1, CH
0355d(E7000004): B 4 [035AH]
0356e .FIXUP D
0356e(8D00000F): LDR SB, MT, MOD0 [ORG]
0357e(40D888F8): ADD R0, SB, FFFF88F8H [data]
0358e(4100000D): MOV R1, R0, DH
ENDf
0359f .FIXUP P
0359f(F7209047): BL MOD2 [ORS] PROC9
ENDg loadCond;
035Ag(8FE00000): LDR LNK, SP, 0H
035Bg(4EE8000C): ADD SP, SP, CH
035Cg(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
035Dh(4EE90020): SUB SP, SP, 20H
035Eh(AFE00000): STR LNK, SP, 0H
035Fh(A0E00004): STR R0, SP, 4H
0360i(40000002): MOV R0, R0, 2H
0361i(A0E00008): STR R0, SP, 8H
0362j(80E00004): LDR R0, SP, 4H
0363j(D11CBA4C): BLEQ MT [trap=4, pos=7354]
0364k(80000010): LDR R0, R0, 10H
0365k(A0E00010): STR R0, SP, 10H
0366l(80E00004): LDR R0, SP, 4H
0367l(D11CC94C): BLEQ MT [trap=4, pos=7369]
0368m(80000008): LDR R0, R0, 8H
0369m(41000000): MOV R1, R0, 0H
036Am(00190000): SUB R0, R1, R0
036Bm(A0E00018): STR R0, SP, 18H
036Cn(40E80008): ADD R0, SP, 8H
036Dn .FIXUP D
036Dn(8D000017): LDR SB, MT, MOD0 [ORG]
036En(41D80000): ADD R1, SB, 0H [data]
ENDo loadTypTagAdr;
036Fo(F7FFFF4C): BL -180 [02BCH]
0370o(8FE00000): LDR LNK, SP, 0H
0371o(4EE80020): ADD SP, SP, 20H
0372o(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
0373p(4EE9000C): SUB SP, SP, CH
0374p(AFE00000): STR LNK, SP, 0H
0375p(A0E00004): STR R0, SP, 4H
0376p(A1E00008): STR R1, SP, 8H
0377q(40000000): MOV R0, R0, 0H
0378r(F7FFFE2F): BL -465 [01A8H]
0379s(40000008): MOV R0, R0, 8H
037At .FIXUP D
037At(8D00000D): LDR SB, MT, MOD0 [ORG]
037Bt(81D0002C): LDR R1, SB, 2CH [data]
037Cu(4200000D): MOV R2, R0, DH
037Dv(83D0001C): LDR R3, SB, 1CH
037Ev(84E00004): LDR R4, SP, 4H
037Fv(84400008): LDR R4, R4, 8H
0380v(03380004): ADD R3, R3, R4
0381w(F7FFFCC2): BL -830 [0044H]
0382x(4000000A): MOV R0, R0, AH
0383x(81E00004): LDR R1, SP, 4H
0384x(A0100000): STR R0, R1, 0H
0385y .FIXUP D
0385y(8D00000B): LDR SB, MT, MOD0 [ORG]
0386y(80D0002C): LDR R0, SB, 2CH [data]
0387y(81E00004): LDR R1, SP, 4H
0388y(A0100010): STR R0, R1, 10H
ENDz loadStringAdr;
0389z(F7FFFD24): BL -732 [00AEH]
038Az(8FE00000): LDR LNK, SP, 0H
038Bz(4EE8000C): ADD SP, SP, CH
038Cz(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
038Da .PROC 5
038Da(4EE90014): SUB SP, SP, 14H
038Ea(AFE00000): STR LNK, SP, 0H
038Fa(A0E00004): STR R0, SP, 4H
0390a(A1E00008): STR R1, SP, 8H
0391a(A2E0000C): STR R2, SP, CH
0392a(A3E00010): STR R3, SP, 10H
0393b(40000001): MOV R0, R0, 1H
0394b(81E00004): LDR R1, SP, 4H
0395b(A0100000): STR R0, R1, 0H
0396c(80E0000C): LDR R0, SP, CH
0397c(81E00004): LDR R1, SP, 4H
0398c(A0100004): STR R0, R1, 4H
ENDd MakeConstItem;
0399d(80E00010): LDR R0, SP, 10H
039Ad(81E00004): LDR R1, SP, 4H
039Bd(A0100008): STR R0, R1, 8H
039Cd(8FE00000): LDR LNK, SP, 0H
039Dd(4EE80014): ADD SP, SP, 14H
039Ed(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)
039Fe .PROC 6
039Fe(4EE90010): SUB SP, SP, 10H
03A0e(AFE00000): STR LNK, SP, 0H
03A1e(A0E00004): STR R0, SP, 4H
03A2e(A1E00008): STR R1, SP, 8H
03A3e(A2E0000C): STR R2, SP, CH
03A4f(40000001): MOV R0, R0, 1H
03A5f(81E00004): LDR R1, SP, 4H
03A6f(A0100000): STR R0, R1, 0H
03A7g .FIXUP D
03A7g(8D400022): LDR SB, MT, MOD4 [ORB]
03A8g(80D0000A): LDR R0, SB, VAR10
03A9g(81E00004): LDR R1, SP, 4H
03AAg(A0100004): STR R0, R1, 4H
ENDh MakeRealItem;
03ABh(80E0000C): LDR R0, SP, CH
03ACh(81E00004): LDR R1, SP, 4H
03ADh(A0100008): STR R0, R1, 8H
03AEh(8FE00000): LDR LNK, SP, 0H
03AFh(4EE80010): ADD SP, SP, 10H
03B0h(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
03B1i .PROC 7
03B1i(4EE90014): SUB SP, SP, 14H
03B2i(AFE00000): STR LNK, SP, 0H
03B3i(A0E00004): STR R0, SP, 4H
03B4i(A1E00008): STR R1, SP, 8H
03B5i(A2E0000C): STR R2, SP, CH
03B6j(40000001): MOV R0, R0, 1H
03B7j(81E00004): LDR R1, SP, 4H
03B8j(A0100000): STR R0, R1, 0H
03B9k .FIXUP D
03B9k(8D400012): LDR SB, MT, MOD4 [ORB]
03BAk(80D0000E): LDR R0, SB, VAR14
03BBk(81E00004): LDR R1, SP, 4H
03BCk(A0100004): STR R0, R1, 4H
03BDl .FIXUP D
03BDl(8D000004): LDR SB, MT, MOD0 [ORG]
03BEl(80D00024): LDR R0, SB, 24H [data]
03BFl(81E00004): LDR R1, SP, 4H
03C0l(A0100008): STR R0, R1, 8H
03C1m(80E0000C): LDR R0, SP, CH
03C2m(81E00004): LDR R1, SP, 4H
03C3m(A010000C): STR R0, R1, CH
03C4n(40000000): MOV R0, R0, 0H
03C5n(A0E00010): STR R0, SP, 10H
IF strx + len +o 4 <p maxStrx THENq
03C6o(80D00024): LDR R0, SB, 24H
03C7o(81E0000C): LDR R1, SP, CH
03C8o(00080001): ADD R0, R0, R1
03C9p(40080004): ADD R0, R0, 4H
03CAq(40090960): SUB R0, R0, 960H
03CBq(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 ;
03CCr(80E0000C): LDR R0, SP, CH
03CDr(40090000): SUB R0, R0, 0H
03CEr(E6000019): BLE 25 [03E8H]
03CFs .FIXUP D
03CFs(8D000012): LDR SB, MT, MOD0 [ORG]
03D0s(80D00024): LDR R0, SB, 24H [data]
03D1s(41090960): SUB R1, R0, 960H
03D2s(DA20231C): BLCC MT [trap=1, pos=8227]
03D3s(00D80000): ADD R0, SB, R0
03D4t(81E00010): LDR R1, SP, 10H
03D5t(42190100): SUB R2, R1, 100H
03D6t(DA20311C): BLCC MT [trap=1, pos=8241]
03D7t .FIXUP D
03D7t(8D200008): LDR SB, MT, MOD2 [ORS]
03D8t(42D80005): ADD R2, SB, VAR5
03D9t(01280001): ADD R1, R2, R1
03DAu(91100000): LDR R1, R1, 0H
03DBu(B1007F44): STR R1, R0, 7F44H
03DCv .FIXUP D
03DCv(8D000005): LDR SB, MT, MOD0 [ORG]
03DDv(40D80024): ADD R0, SB, 24H [data]
03DEv(81000000): LDR R1, R0, 0H
03DFv(41180001): ADD R1, R1, 1H
03E0v(A1000000): STR R1, R0, 0H
03E1w(80E00010): LDR R0, SP, 10H
03E2w(40080001): ADD R0, R0, 1H
03E3w(A0E00010): STR R0, SP, 10H
03E4x(80E0000C): LDR R0, SP, CH
03E5x(40090001): SUB R0, R0, 1H
03E6x(A0E0000C): STR R0, SP, CH
03E7x(E7FFFFE4): B -28 [03CCH]
WHILE strx MOD 4 #y 0 DOz str[strx]a := 0X;b INC(strx) ENDc
03E8y .FIXUP D
03E8y(8D00000C): LDR SB, MT, MOD0 [ORG]
03E9y(80D00024): LDR R0, SB, 24H [data]
03EAy(40040003): AND R0, R0, 3H
03EBz(40090000): SUB R0, R0, 0H
03ECz(E100000C): BEQ 12 [03F9H]
03EDa .FIXUP D
03EDa(8D000005): LDR SB, MT, MOD0 [ORG]
03EEa(80D00024): LDR R0, SB, 24H [data]
03EFa(41090960): SUB R1, R0, 960H
03F0a(DA207C1C): BLCC MT [trap=1, pos=8316]
03F1a(00D80000): ADD R0, SB, R0
03F2b(41000000): MOV R1, R0, 0H
03F3b(B1007F44): STR R1, R0, 7F44H
03F4c(40D80024): ADD R0, SB, 24H
03F5c(81000000): LDR R1, R0, 0H
03F6c(41180001): ADD R1, R1, 1H
03F7c(A1000000): STR R1, R0, 0H
03F8c(E7FFFFEF): B -17 [03E8H]
ELSE ORSd.Mark("too many strings")e
03F9d(E7000004): B 4 [03FEH]
03FAe .FIXUP D
03FAe(8D00000D): LDR SB, MT, MOD0 [ORG]
03FBe(40D88908): ADD R0, SB, FFFF8908H [data]
03FCe(41000011): MOV R1, R0, 11H
ENDf
03FDf .FIXUP P
03FDf(F72090A4): BL MOD2 [ORS] PROC9
ENDg MakeStringItem;
03FEg(8FE00000): LDR LNK, SP, 0H
03FFg(4EE80014): ADD SP, SP, 14H
0400g(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
0401h .PROC 8
0401h(4EE90014): SUB SP, SP, 14H
0402h(AFE00000): STR LNK, SP, 0H
0403h(A0E00004): STR R0, SP, 4H
0404h(A1E00008): STR R1, SP, 8H
0405h(A2E0000C): STR R2, SP, CH
0406h(A3E00010): STR R3, SP, 10H
0407i(80E0000C): LDR R0, SP, CH
0408i(D121344C): BLEQ MT [trap=4, pos=8500]
0409j(90000000): LDR R0, R0, 0H
040Aj(81E00004): LDR R1, SP, 4H
040Bj(A0100000): STR R0, R1, 0H
040Ck(80E0000C): LDR R0, SP, CH
040Dk(D121464C): BLEQ MT [trap=4, pos=8518]
040El(80000010): LDR R0, R0, 10H
040Fl(81E00004): LDR R1, SP, 4H
0410l(A0100004): STR R0, R1, 4H
0411m(80E0000C): LDR R0, SP, CH
0412m(D121544C): BLEQ MT [trap=4, pos=8532]
0413n(80000034): LDR R0, R0, 34H
0414n(81E00004): LDR R1, SP, 4H
0415n(A0100008): STR R0, R1, 8H
0416o(80E0000C): LDR R0, SP, CH
0417o(D121644C): BLEQ MT [trap=4, pos=8548]
0418p(90000003): LDR R0, R0, 3H
0419p(81E00004): LDR R1, SP, 4H
041Ap(B0100014): STR R0, R1, 14H
IF y.classq = ORB.Par THENr x.b := 0
041Bq(80E0000C): LDR R0, SP, CH
041Cq(D121744C): BLEQ MT [trap=4, pos=8564]
041Dr(90000000): LDR R0, R0, 0H
041Er(40090003): SUB R0, R0, 3H
041Fr(E9000004): BNE 4 [0424H]
ELSIFs yt.classu = ORB.Typ THENv x.a := y.typew.lenx;y x.r := -y.levz
0420s(40000000): MOV R0, R0, 0H
0421s(81E00004): LDR R1, SP, 4H
0422s(A010000C): STR R0, R1, CH
0423t(E700002B): B 43 [044FH]
0424u(80E0000C): LDR R0, SP, CH
0425u(D1219E4C): BLEQ MT [trap=4, pos=8606]
0426v(90000000): LDR R0, R0, 0H
0427v(40090005): SUB R0, R0, 5H
0428v(E900000F): BNE 15 [0438H]
0429w(80E0000C): LDR R0, SP, CH
042Aw(D121BB4C): BLEQ MT [trap=4, pos=8635]
042Bx(80000010): LDR R0, R0, 10H
042Cx(D121BF4C): BLEQ MT [trap=4, pos=8639]
042Dy(80000010): LDR R0, R0, 10H
042Ey(81E00004): LDR R1, SP, 4H
042Fy(A0100008): STR R0, R1, 8H
0430z(80E0000C): LDR R0, SP, CH
0431z(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*)
0432a(80000004): LDR R0, R0, 4H
0433a(41000000): MOV R1, R0, 0H
0434a(00190000): SUB R0, R1, R0
0435a(81E00004): LDR R1, SP, 4H
0436a(A0100010): STR R0, R1, 10H
0437b(E7000017): B 23 [044FH]
0438c(80E0000C): LDR R0, SP, CH
0439c(D121E14C): BLEQ MT [trap=4, pos=8673]
043Ad(90000000): LDR R0, R0, 0H
043Bd(40090001): SUB R0, R0, 1H
043Ce(E900000D): BNE 13 [044AH]
043Df(80E0000C): LDR R0, SP, CH
043Ef(D121F84C): BLEQ MT [trap=4, pos=8696]
043Fg(80000010): LDR R0, R0, 10H
0440g(D121FD4C): BLEQ MT [trap=4, pos=8701]
0441h(80000000): LDR R0, R0, 0H
0442h(4009000B): SUB R0, R0, BH
0443i(E9000006): BNE 6 [044AH]
0444j(80E0000C): LDR R0, SP, CH
0445j(D1221D4C): BLEQ MT [trap=4, pos=8733]
ELSEk xl.r := y.levm
0446k(80000004): LDR R0, R0, 4H
0447k(81E00004): LDR R1, SP, 4H
0448k(A010000C): STR R0, R1, CH
0449l(E7000005): B 5 [044FH]
044Am(80E0000C): LDR R0, SP, CH
044Bm(D1223C4C): BLEQ MT [trap=4, pos=8764]
ENDn ;
044Cn(80000004): LDR R0, R0, 4H
044Dn(81E00004): LDR R1, SP, 4H
044En(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
044Fo(80E0000C): LDR R0, SP, CH
0450o(D122544C): BLEQ MT [trap=4, pos=8788]
0451p(80000004): LDR R0, R0, 4H
0452p(40090000): SUB R0, R0, 0H
0453q(E600000F): BLE 15 [0463H]
0454r(80E0000C): LDR R0, SP, CH
0455r(D122624C): BLEQ MT [trap=4, pos=8802]
0456s(80000004): LDR R0, R0, 4H
0457s(81E00010): LDR R1, SP, 10H
0458s(00090001): SUB R0, R0, R1
0459t(E1000009): BEQ 9 [0463H]
045Au(80E0000C): LDR R0, SP, CH
045Bu(D122774C): BLEQ MT [trap=4, pos=8823]
045Cv(90000000): LDR R0, R0, 0H
045Dv(40090001): SUB R0, R0, 1H
045Ew(E1000004): BEQ 4 [0463H]
045Fx .FIXUP D
045Fx(8D000065): LDR SB, MT, MOD0 [ORG]
0460x(40D8891C): ADD R0, SB, FFFF891CH [data]
0461x(4100001C): MOV R1, R0, 1CH
0462y .FIXUP P
0462y(F7209065): BL MOD2 [ORS] PROC9
ENDz MakeItem;
0463z(8FE00000): LDR LNK, SP, 0H
0464z(4EE80014): ADD SP, SP, 14H
0465z(C700000F): B LNK
(* Code generation for Selectors, Variables, Constants *)
PROCEDURE Field*(VAR x: Item; y: ORB.Object); (* x := x.y *)
BEGINa;
0466a .PROC 9
0466a(4EE90010): SUB SP, SP, 10H
0467a(AFE00000): STR LNK, SP, 0H
0468a(A0E00004): STR R0, SP, 4H
0469a(A1E00008): STR R1, SP, 8H
046Aa(A2E0000C): STR R2, SP, CH
IF x.mode = ORB.Var THENb
046Bb(80E00004): LDR R0, SP, 4H
046Cb(80000000): LDR R0, R0, 0H
046Db(40090002): SUB R0, R0, 2H
046Eb(E9000019): BNE 25 [0488H]
IF x.r >= 0 THENc x.a := x.a + y.vald
046Fc(80E00004): LDR R0, SP, 4H
0470c(80000010): LDR R0, R0, 10H
0471c(40090000): SUB R0, R0, 0H
0472c(E5000009): BLT 9 [047CH]
0473d(80E0000C): LDR R0, SP, CH
0474d(D123944C): BLEQ MT [trap=4, pos=9108]
ELSEe loadAdrf(x)g;h x.mode := RegI;i x.a := y.valj
0475e(81E00004): LDR R1, SP, 4H
0476e(81100008): LDR R1, R1, 8H
0477e(80000034): LDR R0, R0, 34H
0478e(00180000): ADD R0, R1, R0
0479e(81E00004): LDR R1, SP, 4H
047Ae(A0100008): STR R0, R1, 8H
047Bf(E700000B): B 11 [0487H]
047Cg(80E00004): LDR R0, SP, 4H
047Dg(81E00008): LDR R1, SP, 8H
047Eh(F7FFFE3D): BL -451 [02BCH]
047Fi(4000000B): MOV R0, R0, BH
0480i(81E00004): LDR R1, SP, 4H
0481i(A0100000): STR R0, R1, 0H
0482j(80E0000C): LDR R0, SP, CH
0483j(D123C84C): BLEQ MT [trap=4, pos=9160]
ENDk
0484k(80000034): LDR R0, R0, 34H
0485k(81E00004): LDR R1, SP, 4H
0486k(A0100008): STR R0, R1, 8H
ELSIF xl.mode = RegI THENm x.a := x.a + y.valn
0487l(E7000019): B 25 [04A1H]
0488m(80E00004): LDR R0, SP, 4H
0489m(80000000): LDR R0, R0, 0H
048Am(4009000B): SUB R0, R0, BH
048Bm(E9000009): BNE 9 [0495H]
048Cn(80E0000C): LDR R0, SP, CH
048Dn(D124024C): BLEQ MT [trap=4, pos=9218]
ELSIFo xp.mode = ORB.Par THENq x.b := x.b + y.valr
048Eo(81E00004): LDR R1, SP, 4H
048Fo(81100008): LDR R1, R1, 8H
0490o(80000034): LDR R0, R0, 34H
0491o(00180000): ADD R0, R1, R0
0492o(81E00004): LDR R1, SP, 4H
0493o(A0100008): STR R0, R1, 8H
0494p(E700000C): B 12 [04A1H]
0495q(80E00004): LDR R0, SP, 4H
0496q(80000000): LDR R0, R0, 0H
0497q(40090003): SUB R0, R0, 3H
0498q(E9000008): BNE 8 [04A1H]
0499r(80E0000C): LDR R0, SP, CH
049Ar(D124354C): BLEQ MT [trap=4, pos=9269]
ENDs
049Bs(81E00004): LDR R1, SP, 4H
049Cs(8110000C): LDR R1, R1, CH
049Ds(80000034): LDR R0, R0, 34H
049Es(00180000): ADD R0, R1, R0
049Fs(81E00004): LDR R1, SP, 4H
04A0s(A010000C): STR R0, R1, CH
ENDt Field;
04A1t(8FE00000): LDR LNK, SP, 0H
04A2t(4EE80010): ADD SP, SP, 10H
04A3t(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
04A4u .PROC 10
04A4u(4EE9001C): SUB SP, SP, 1CH
04A5u(AFE00000): STR LNK, SP, 0H
04A6u(A0E00004): STR R0, SP, 4H
04A7u(A1E00008): STR R1, SP, 8H
04A8u(A2E0000C): STR R2, SP, CH
04A9u(A3E00010): STR R3, SP, 10H
04AAv(80E00004): LDR R0, SP, 4H
04ABv(80000004): LDR R0, R0, 4H
04ACv(D124B34C): BLEQ MT [trap=4, pos=9395]
04ADw(8000001C): LDR R0, R0, 1CH
04AEw(D124B84C): BLEQ MT [trap=4, pos=9400]
04AFx(80000020): LDR R0, R0, 20H
04B0x(A0E00014): STR R0, SP, 14H
04B1y(80E00004): LDR R0, SP, 4H
04B2y(80000004): LDR R0, R0, 4H
04B3y(D124CB4C): BLEQ MT [trap=4, pos=9419]
04B4z(80000010): LDR R0, R0, 10H
04B5z(A0E00018): STR R0, SP, 18H
IF (y.mode = ORB.Const)a & (blim >= 0)c THENd
04B6a(80E0000C): LDR R0, SP, CH
04B7a(80000000): LDR R0, R0, 0H
04B8a(40090001): SUB R0, R0, 1H
04B9b(E900002E): BNE 46 [04E8H]
04BAc(80E00018): LDR R0, SP, 18H
04BBc(40090000): SUB R0, R0, 0H
04BCd(E500002B): BLT 43 [04E8H]
IF (y.a < 0)e OR (fy.a >= lim)g THENh ORS.Mark("bad index")i ENDj ;
04BDe(80E0000C): LDR R0, SP, CH
04BEe(80000008): LDR R0, R0, 8H
04BFe(40090000): SUB R0, R0, 0H
04C0f(E5000005): BLT 5 [04C6H]
04C1g(80E0000C): LDR R0, SP, CH
04C2g(80000008): LDR R0, R0, 8H
04C3g(81E00018): LDR R1, SP, 18H
04C4g(00090001): SUB R0, R0, R1
04C5h(E5000004): BLT 4 [04CAH]
04C6i .FIXUP D
04C6i(8D000067): LDR SB, MT, MOD0 [ORG]
04C7i(40D88938): ADD R0, SB, FFFF8938H [data]
04C8i(4100000A): MOV R1, R0, AH
04C9j .FIXUP P
04C9j(F7209067): BL MOD2 [ORS] PROC9
IF x.mode IN {ORB.Var, RegI} THENk x.a := y.a * s +l x.a
04CAk(40000804): MOV R0, R0, 804H
04CBk(81E00004): LDR R1, SP, 4H
04CCk(81100000): LDR R1, R1, 0H
04CDk(41180001): ADD R1, R1, 1H
04CEk(00030001): ROR R0, R0, R1
04CFk(E800000A): BPL 10 [04DAH]
04D0l(80E0000C): LDR R0, SP, CH
04D1l(80000008): LDR R0, R0, 8H
04D2l(81E00014): LDR R1, SP, 14H
04D3l(000A0001): MUL R0, R0, R1
ELSIFm xn.mode = ORB.Par THENo x.b := y.a * s +p x.b
04D4m(81E00004): LDR R1, SP, 4H
04D5m(81100008): LDR R1, R1, 8H
04D6m(00080001): ADD R0, R0, R1
04D7m(81E00004): LDR R1, SP, 4H
04D8m(A0100008): STR R0, R1, 8H
04D9n(E700000D): B 13 [04E7H]
04DAo(80E00004): LDR R0, SP, 4H
04DBo(80000000): LDR R0, R0, 0H
04DCo(40090003): SUB R0, R0, 3H
04DDo(E9000009): BNE 9 [04E7H]
04DEp(80E0000C): LDR R0, SP, CH
04DFp(80000008): LDR R0, R0, 8H
04E0p(81E00014): LDR R1, SP, 14H
04E1p(000A0001): MUL R0, R0, R1
ENDq
04E2q(81E00004): LDR R1, SP, 4H
04E3q(8110000C): LDR R1, R1, CH
04E4q(00080001): ADD R0, R0, R1
04E5q(81E00004): LDR R1, SP, 4H
04E6q(A010000C): STR R0, R1, CH
ELSE loadr(y)s;t
04E7r(E70000B6): B 182 [059EH]
04E8s(80E0000C): LDR R0, SP, CH
04E9s(81E00010): LDR R1, SP, 10H
04EAt(F7FFFCE8): BL -792 [01D3H]
IF check THENu (*check array bounds*)
04EBu .FIXUP D
04EBu(8D000025): LDR SB, MT, MOD0 [ORG]
04ECu(90D00044): LDR R0, SB, 44H [data]
04EDu(E100002A): BEQ 42 [0518H]
IF lim >= 0 THENv Put1a(Cmp,w RH,x y.r,y lim)z
04EEv(80E00018): LDR R0, SP, 18H
04EFv(40090000): SUB R0, R0, 0H
04F0v(E5000008): BLT 8 [04F9H]
04F1w(40000009): MOV R0, R0, 9H
04F2x .FIXUP D
04F2x(8D000007): LDR SB, MT, MOD0 [ORG]
04F3x(81D0002C): LDR R1, SB, 2CH [data]
04F4y(82E0000C): LDR R2, SP, CH
04F5y(82200010): LDR R2, R2, 10H
04F6z(83E00018): LDR R3, SP, 18H
ELSEa (*open array*)
04F7a(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
04F8b(E700001C): B 28 [0515H]
04F9c(4000000C): MOV R0, R0, CH
04FAc(81E00004): LDR R1, SP, 4H
04FBc(81100000): LDR R1, R1, 0H
04FCc(41180001): ADD R1, R1, 1H
04FDc(00030001): ROR R0, R0, R1
04FEc(E8000012): BPL 18 [0511H]
04FFd(40000008): MOV R0, R0, 8H
0500e .FIXUP D
0500e(8D00000E): LDR SB, MT, MOD0 [ORG]
0501e(81D0002C): LDR R1, SB, 2CH [data]
0502f(4200000E): MOV R2, R0, EH
0503g(83E00004): LDR R3, SP, 4H
0504g(83300008): LDR R3, R3, 8H
0505g(43380004): ADD R3, R3, 4H
0506h(84D00034): LDR R4, SB, 34H
0507h(03380004): ADD R3, R3, R4
0508i(F7FFFB68): BL -1176 [0071H]
0509j(40000009): MOV R0, R0, 9H
050Ak .FIXUP D
050Ak(8D00000A): LDR SB, MT, MOD0 [ORG]
050Bk(81D0002C): LDR R1, SB, 2CH [data]
050Cl(82E0000C): LDR R2, SP, CH
050Dl(82200010): LDR R2, R2, 10H
050Em(83D0002C): LDR R3, SB, 2CH
ELSEn ORSo.Mark("error in Index")p
050Fn(F7FFFAF0): BL -1296 [0000H]
0510o(E7000004): B 4 [0515H]
0511p .FIXUP D
0511p(8D000007): LDR SB, MT, MOD0 [ORG]
0512p(40D88944): ADD R0, SB, FFFF8944H [data]
0513p(4100000F): MOV R1, R0, FH
ENDq
0514q .FIXUP P
0514q(F720904B): BL MOD2 [ORS] PROC9
END ;
Trap(10,r 1)s (*BCC*)
0515r(4000000A): MOV R0, R0, AH
0516s(41000001): MOV R1, R0, 1H
ENDt ;
0517t(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 ;
0518u(80E00014): LDR R0, SP, 14H
0519u(40090004): SUB R0, R0, 4H
051Au(E9000008): BNE 8 [0523H]
051Bv(40000001): MOV R0, R0, 1H
051Cw(81E0000C): LDR R1, SP, CH
051Dw(81100010): LDR R1, R1, 10H
051Ex(82E0000C): LDR R2, SP, CH
051Fx(82200010): LDR R2, R2, 10H
0520y(43000002): MOV R3, R0, 2H
0521z(F7FFFAFC): BL -1284 [001EH]
0522a(E700000A): B 10 [052DH]
0523b(80E00014): LDR R0, SP, 14H
0524b(40090001): SUB R0, R0, 1H
0525b(E6000007): BLE 7 [052DH]
0526c(4000000A): MOV R0, R0, AH
0527d(81E0000C): LDR R1, SP, CH
0528d(81100010): LDR R1, R1, 10H
0529e(82E0000C): LDR R2, SP, CH
052Ae(82200010): LDR R2, R2, 10H
052Bf(83E00014): LDR R3, SP, 14H
052Cg(F7FFFB17): BL -1257 [0044H]
IF x.mode = ORB.Var THENh
052Dh(80E00004): LDR R0, SP, 4H
052Eh(80000000): LDR R0, R0, 0H
052Fh(40090002): SUB R0, R0, 2H
0530h(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)
0531i(80E00004): LDR R0, SP, 4H
0532i(80000010): LDR R0, R0, 10H
0533i(40090000): SUB R0, R0, 0H
0534i(E600000F): BLE 15 [0544H]
0535j(40000008): MOV R0, R0, 8H
0536k(81E0000C): LDR R1, SP, CH
0537k(81100010): LDR R1, R1, 10H
0538l(4200000E): MOV R2, R0, EH
0539m(83E0000C): LDR R3, SP, CH
053Am(83300010): LDR R3, R3, 10H
053Bn(F7FFFAC4): BL -1340 [0000H]
ELSEo GetSBp(x.r)q;r
053Co(80E00004): LDR R0, SP, 4H
053Do(40080008): ADD R0, R0, 8H
053Eo(81000000): LDR R1, R0, 0H
053Fo .FIXUP D
053Fo(8D00002E): LDR SB, MT, MOD0 [ORG]
0540o(82D00034): LDR R2, SB, 34H [data]
0541o(01180002): ADD R1, R1, R2
0542o(A1000000): STR R1, R0, 0H
0543p(E7000020): B 32 [0564H]
0544q(80E00004): LDR R0, SP, 4H
0545q(80000010): LDR R0, R0, 10H
0546r(F7FFFC61): BL -927 [01A8H]
IF x.r = 0 THENs Put0(Add,t y.r,u SB,v y.r)w
0547s(80E00004): LDR R0, SP, 4H
0548s(80000010): LDR R0, R0, 10H
0549s(E9000008): BNE 8 [0552H]
054At(40000008): MOV R0, R0, 8H
054Bu(81E0000C): LDR R1, SP, CH
054Cu(81100010): LDR R1, R1, 10H
054Dv(4200000D): MOV R2, R0, DH
054Ew(83E0000C): LDR R3, SP, CH
054Fw(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
0550x(F7FFFAAF): BL -1361 [0000H]
0551y(E7000012): B 18 [0564H]
0552z(40000008): MOV R0, R0, 8H
0553a .FIXUP D
0553a(8D000014): LDR SB, MT, MOD0 [ORG]
0554a(81D0002C): LDR R1, SB, 2CH [data]
0555b(4200000D): MOV R2, R0, DH
0556c(83E00004): LDR R3, SP, 4H
0557c(83300008): LDR R3, R3, 8H
0558d(F7FFFAEB): BL -1301 [0044H]
0559e(40000008): MOV R0, R0, 8H
055Af(81E0000C): LDR R1, SP, CH
055Bf(81100010): LDR R1, R1, 10H
055Cg .FIXUP D
055Cg(8D000009): LDR SB, MT, MOD0 [ORG]
055Dg(82D0002C): LDR R2, SB, 2CH [data]
055Eh(83E0000C): LDR R3, SP, CH
055Fh(83300010): LDR R3, R3, 10H
0560i(F7FFFA9F): BL -1377 [0000H]
ENDj
0561j(40000000): MOV R0, R0, 0H
0562j(81E00004): LDR R1, SP, 4H
0563j(A0100008): STR R0, R1, 8H
END ;
x.r := y.r;k x.mode := RegI
0564k(80E0000C): LDR R0, SP, CH
0565k(80000010): LDR R0, R0, 10H
0566k(81E00004): LDR R1, SP, 4H
0567k(A0100010): STR R0, R1, 10H
ELSIFl xm.mode = ORB.Par THENn
0568l(4000000B): MOV R0, R0, BH
0569l(81E00004): LDR R1, SP, 4H
056Al(A0100000): STR R0, R1, 0H
056Bm(E7000032): B 50 [059EH]
056Cn(80E00004): LDR R0, SP, 4H
056Dn(80000000): LDR R0, R0, 0H
056En(40090003): SUB R0, R0, 3H
056Fn(E900001D): BNE 29 [058DH]
Put2(Ldr,o RH,p SP,q x.a + frame)r;s
0570o(40000008): MOV R0, R0, 8H
0571p .FIXUP D
0571p(8D000015): LDR SB, MT, MOD0 [ORG]
0572p(81D0002C): LDR R1, SB, 2CH [data]
0573q(4200000E): MOV R2, R0, EH
0574r(83E00004): LDR R3, SP, 4H
0575r(83300008): LDR R3, R3, 8H
0576r(84D00034): LDR R4, SB, 34H
0577r(03380004): ADD R3, R3, R4
0578s(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
0579t(40000008): MOV R0, R0, 8H
057Au(81E0000C): LDR R1, SP, CH
057Bu(81100010): LDR R1, R1, 10H
057Cv .FIXUP D
057Cv(8D00000B): LDR SB, MT, MOD0 [ORG]
057Dv(82D0002C): LDR R2, SB, 2CH [data]
057Ew(83E0000C): LDR R3, SP, CH
057Fw(83300010): LDR R3, R3, 10H
0580x(F7FFFA7F): BL -1409 [0000H]
0581y(4000000B): MOV R0, R0, BH
0582y(81E00004): LDR R1, SP, 4H
0583y(A0100000): STR R0, R1, 0H
0584z(80E0000C): LDR R0, SP, CH
0585z(80000010): LDR R0, R0, 10H
0586z(81E00004): LDR R1, SP, 4H
0587z(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)
0588a(80E00004): LDR R0, SP, 4H
0589a(8000000C): LDR R0, R0, CH
058Aa(81E00004): LDR R1, SP, 4H
058Ba(A0100008): STR R0, R1, 8H
058Cb(E7000011): B 17 [059EH]
058Dc(80E00004): LDR R0, SP, 4H
058Ec(80000000): LDR R0, R0, 0H
058Fc(4009000B): SUB R0, R0, BH
0590c(E900000D): BNE 13 [059EH]
0591d(40000008): MOV R0, R0, 8H
0592e(81E00004): LDR R1, SP, 4H
0593e(81100010): LDR R1, R1, 10H
0594f(82E00004): LDR R2, SP, 4H
0595f(82200010): LDR R2, R2, 10H
0596g(83E0000C): LDR R3, SP, CH
0597g(83300010): LDR R3, R3, 10H
0598h(F7FFFA67): BL -1433 [0000H]
ENDi
0599i .FIXUP D
0599i(8D00001D): LDR SB, MT, MOD0 [ORG]
059Ai(40D8002C): ADD R0, SB, 2CH [data]
059Bi(81000000): LDR R1, R0, 0H
059Ci(41190001): SUB R1, R1, 1H
059Di(A1000000): STR R1, R0, 0H
END
ENDj Index;
059Ej(8FE00000): LDR LNK, SP, 0H
059Fj(4EE8001C): ADD SP, SP, 1CH
05A0j(C700000F): B LNK
PROCEDURE DeRef*(VAR x: Item);
BEGINk
05A1k .PROC 11
05A1k(4EE9000C): SUB SP, SP, CH
05A2k(AFE00000): STR LNK, SP, 0H
05A3k(A0E00004): STR R0, SP, 4H
05A4k(A1E00008): STR R1, SP, 8H
IF x.mode = ORB.Var THENl
05A5l(80E00004): LDR R0, SP, 4H
05A6l(80000000): LDR R0, R0, 0H
05A7l(40090002): SUB R0, R0, 2H
05A8l(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 ;
05A9m(80E00004): LDR R0, SP, 4H
05AAm(80000010): LDR R0, R0, 10H
05ABm(40090000): SUB R0, R0, 0H
05ACm(E600000A): BLE 10 [05B7H]
05ADn(40000008): MOV R0, R0, 8H
05AEo .FIXUP D
05AEo(8D000015): LDR SB, MT, MOD0 [ORG]
05AFo(81D0002C): LDR R1, SB, 2CH [data]
05B0p(4200000E): MOV R2, R0, EH
05B1q(83E00004): LDR R3, SP, 4H
05B2q(83300008): LDR R3, R3, 8H
05B3q(84D00034): LDR R4, SB, 34H
05B4q(03380004): ADD R3, R3, R4
05B5r(F7FFFABB): BL -1349 [0071H]
05B6s(E700000A): B 10 [05C1H]
05B7t(80E00004): LDR R0, SP, 4H
05B8t(80000010): LDR R0, R0, 10H
05B9u(F7FFFBEE): BL -1042 [01A8H]
05BAv(40000008): MOV R0, R0, 8H
05BBw .FIXUP D
05BBw(8D00000D): LDR SB, MT, MOD0 [ORG]
05BCw(81D0002C): LDR R1, SB, 2CH [data]
05BDx(4200000D): MOV R2, R0, DH
05BEy(83E00004): LDR R3, SP, 4H
05BFy(83300008): LDR R3, R3, 8H
05C0z(F7FFFAB0): BL -1360 [0071H]
NilCheck;a x.r := RH;b incR
05C1a(F7FFFC06): BL -1018 [01C8H]
05C2b .FIXUP D
05C2b(8D000007): LDR SB, MT, MOD0 [ORG]
05C3b(80D0002C): LDR R0, SB, 2CH [data]
05C4b(81E00004): LDR R1, SP, 4H
05C5b(A0100010): STR R0, R1, 10H
ELSIFc xd.mode = ORB.Par THENe
05C6c(F7FFFAE7): BL -1305 [00AEH]
05C7d(E7000031): B 49 [05F9H]
05C8e(80E00004): LDR R0, SP, 4H
05C9e(80000000): LDR R0, R0, 0H
05CAe(40090003): SUB R0, R0, 3H
05CBe(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
05CCf(40000008): MOV R0, R0, 8H
05CDg .FIXUP D
05CDg(8D00000B): LDR SB, MT, MOD0 [ORG]
05CEg(81D0002C): LDR R1, SB, 2CH [data]
05CFh(4200000E): MOV R2, R0, EH
05D0i(83E00004): LDR R3, SP, 4H
05D1i(83300008): LDR R3, R3, 8H
05D2i(84D00034): LDR R4, SB, 34H
05D3i(03380004): ADD R3, R3, R4
05D4j(F7FFFA9C): BL -1380 [0071H]
05D5k(40000008): MOV R0, R0, 8H
05D6l .FIXUP D
05D6l(8D000009): LDR SB, MT, MOD0 [ORG]
05D7l(81D0002C): LDR R1, SB, 2CH [data]
05D8m(82D0002C): LDR R2, SB, 2CH
05D9n(83E00004): LDR R3, SP, 4H
05DAn(8330000C): LDR R3, R3, CH
05DBo(F7FFFA95): BL -1387 [0071H]
05DCp(F7FFFBEB): BL -1045 [01C8H]
05DDq .FIXUP D
05DDq(8D000007): LDR SB, MT, MOD0 [ORG]
05DEq(80D0002C): LDR R0, SB, 2CH [data]
05DFq(81E00004): LDR R1, SP, 4H
05E0q(A0100010): STR R0, R1, 10H
ELSIFr xs.mode = RegI THENt Put2(Ldr,u x.r,v x.r,w x.a)x;y NilCheck
05E1r(F7FFFACC): BL -1332 [00AEH]
05E2s(E7000016): B 22 [05F9H]
05E3t(80E00004): LDR R0, SP, 4H
05E4t(80000000): LDR R0, R0, 0H
05E5t(4009000B): SUB R0, R0, BH
05E6t(E900000A): BNE 10 [05F1H]
05E7u(40000008): MOV R0, R0, 8H
05E8v(81E00004): LDR R1, SP, 4H
05E9v(81100010): LDR R1, R1, 10H
05EAw(82E00004): LDR R2, SP, 4H
05EBw(82200010): LDR R2, R2, 10H
05ECx(83E00004): LDR R3, SP, 4H
05EDx(83300008): LDR R3, R3, 8H
05EEy(F7FFFA82): BL -1406 [0071H]
ELSIFz xa.mode # Reg THENb ORS.Mark("bad mode in DeRef")c
05EFz(F7FFFBD8): BL -1064 [01C8H]
05F0a(E7000008): B 8 [05F9H]
05F1b(80E00004): LDR R0, SP, 4H
05F2b(80000000): LDR R0, R0, 0H
05F3b(4009000A): SUB R0, R0, AH
05F4b(E1000004): BEQ 4 [05F9H]
05F5c .FIXUP D
05F5c(8D000018): LDR SB, MT, MOD0 [ORG]
05F6c(40D88954): ADD R0, SB, FFFF8954H [data]
05F7c(41000012): MOV R1, R0, 12H
ENDd ;
05F8d .FIXUP P
05F8d(F72090E4): BL MOD2 [ORS] PROC9
x.mode := RegI;e x.a := 0;f x.b := 0
05F9e(4000000B): MOV R0, R0, BH
05FAe(81E00004): LDR R1, SP, 4H
05FBe(A0100000): STR R0, R1, 0H
05FCf(40000000): MOV R0, R0, 0H
05FDf(81E00004): LDR R1, SP, 4H
05FEf(A0100008): STR R0, R1, 8H
ENDg DeRef;
05FFg(40000000): MOV R0, R0, 0H
0600g(81E00004): LDR R1, SP, 4H
0601g(A010000C): STR R0, R1, CH
0602g(8FE00000): LDR LNK, SP, 0H
0603g(4EE8000C): ADD SP, SP, CH
0604g(C700000F): B LNK
PROCEDURE Q(T: ORB.Type; VAR dcw: LONGINT);
BEGINh (*one entry of type descriptor extension table*)
0605h(4EE9000C): SUB SP, SP, CH
0606h(AFE00000): STR LNK, SP, 0H
0607h(A0E00004): STR R0, SP, 4H
0608h(A1E00008): STR R1, SP, 8H
IF T.basei # NIL THENj
0609i(80E00004): LDR R0, SP, 4H
060Ai(D12C174C): BLEQ MT [trap=4, pos=11287]
060Bj(8000001C): LDR R0, R0, 1CH
060Cj(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
060Dk(80E00004): LDR R0, SP, 4H
060Ek(D12C314C): BLEQ MT [trap=4, pos=11313]
060Fl(8000001C): LDR R0, R0, 1CH
0610m(81E00008): LDR R1, SP, 8H
0611n(F7FFFFF3): BL -13 [0605H]
0612o(80E00008): LDR R0, SP, 8H
0613o(80000000): LDR R0, R0, 0H
0614o(41090078): SUB R1, R0, 78H
0615o(DA2C421C): BLCC MT [trap=1, pos=11330]
0616o(40010002): LSL R0, R0, 2H
0617o .FIXUP D
0617o(8D000022): LDR SB, MT, MOD0 [ORG]
0618o(00D80000): ADD R0, SB, R0 [global array]
0619p(81E00004): LDR R1, SP, 4H
061Ap(D12C4C4C): BLEQ MT [trap=4, pos=11340]
061Bq(81100008): LDR R1, R1, 8H
061Cq(4111000C): LSL R1, R1, CH
061Dr(82E00004): LDR R2, SP, 4H
061Er(D12C5A4C): BLEQ MT [trap=4, pos=11354]
061Fs(82200010): LDR R2, R2, 10H
0620s(01180002): ADD R1, R1, R2
0621t(4111000C): LSL R1, R1, CH
0622u(82E00008): LDR R2, SP, 8H
0623u(82200000): LDR R2, R2, 0H
0624u(01180002): ADD R1, R1, R2
0625v(82D00040): LDR R2, SB, 40H
0626v(01190002): SUB R1, R1, R2
0627v(A1007D64): STR R1, R0, 7D64H
fixorgT := dcw;w INC(dcw)
0628w(80E00008): LDR R0, SP, 8H
0629w(80000000): LDR R0, R0, 0H
062Aw(A0D00040): STR R0, SB, 40H
ENDx
062Bx(80E00008): LDR R0, SP, 8H
062Cx(81000000): LDR R1, R0, 0H
062Dx(41180001): ADD R1, R1, 1H
062Ex(A1000000): STR R1, R0, 0H
ENDy Q;
062Fy(8FE00000): LDR LNK, SP, 0H
0630y(4EE8000C): ADD SP, SP, CH
0631y(C700000F): B LNK
PROCEDURE FindPtrFlds(typ: ORB.Type; off: LONGINT; VAR dcw: LONGINT);
VAR fld: ORB.Object; i, s: LONGINT;
BEGINz
0632z(4EE9001C): SUB SP, SP, 1CH
0633z(AFE00000): STR LNK, SP, 0H
0634z(A0E00004): STR R0, SP, 4H
0635z(A1E00008): STR R1, SP, 8H
0636z(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)
0637a(80E00004): LDR R0, SP, 4H
0638a(D12D2E4C): BLEQ MT [trap=4, pos=11566]
0639b(80000000): LDR R0, R0, 0H
063Ab(40090007): SUB R0, R0, 7H
063Bc(E1000005): BEQ 5 [0641H]
063Cd(80E00004): LDR R0, SP, 4H
063Dd(D12D4A4C): BLEQ MT [trap=4, pos=11594]
063Ee(80000000): LDR R0, R0, 0H
063Fe(40090008): SUB R0, R0, 8H
0640f(E900000E): BNE 14 [064FH]
0641g(80E0000C): LDR R0, SP, CH
0642g(80000000): LDR R0, R0, 0H
0643g(41090078): SUB R1, R0, 78H
0644g(DA2D671C): BLCC MT [trap=1, pos=11623]
0645g(40010002): LSL R0, R0, 2H
0646g .FIXUP D
0646g(8D00002F): LDR SB, MT, MOD0 [ORG]
0647g(00D80000): ADD R0, SB, R0 [global array]
0648h(81E00008): LDR R1, SP, 8H
0649h(A1007D64): STR R1, R0, 7D64H
ELSIFi typj.formk = ORB.Record THENl
064Ai(80E0000C): LDR R0, SP, CH
064Bi(81000000): LDR R1, R0, 0H
064Ci(41180001): ADD R1, R1, 1H
064Di(A1000000): STR R1, R0, 0H
064Ej(E700003B): B 59 [068AH]
064Fk(80E00004): LDR R0, SP, 4H
0650k(D12D8B4C): BLEQ MT [trap=4, pos=11659]
0651l(80000000): LDR R0, R0, 0H
0652l(4009000D): SUB R0, R0, DH
0653l(E9000016): BNE 22 [066AH]
fld := typ.dscm;n
0654m(80E00004): LDR R0, SP, 4H
0655m(D12DB24C): BLEQ MT [trap=4, pos=11698]
0656n(80000014): LDR R0, R0, 14H
0657n(A0E00010): STR R0, SP, 10H
WHILE fld # NIL DOo FindPtrFlds(fld.typep,q fld.valr + off,s dcw)t;u fld := fld.nextv ENDw
0658o(80E00010): LDR R0, SP, 10H
0659o(E100000F): BEQ 15 [0669H]
065Ap(80E00010): LDR R0, SP, 10H
065Bp(D12DE14C): BLEQ MT [trap=4, pos=11745]
065Cq(80000010): LDR R0, R0, 10H
065Dr(81E00010): LDR R1, SP, 10H
065Er(D12DEA4C): BLEQ MT [trap=4, pos=11754]
065Fs(81100034): LDR R1, R1, 34H
0660s(82E00008): LDR R2, SP, 8H
0661s(01180002): ADD R1, R1, R2
0662t(82E0000C): LDR R2, SP, CH
0663u(F7FFFFCE): BL -50 [0632H]
0664v(80E00010): LDR R0, SP, 10H
0665v(D12E074C): BLEQ MT [trap=4, pos=11783]
0666w(80000008): LDR R0, R0, 8H
0667w(A0E00010): STR R0, SP, 10H
0668w(E7FFFFEF): B -17 [0658H]
ELSIF typx.formy = ORB.Array THENz
0669x(E7000020): B 32 [068AH]
066Ay(80E00004): LDR R0, SP, 4H
066By(D12E1E4C): BLEQ MT [trap=4, pos=11806]
066Cz(80000000): LDR R0, R0, 0H
066Dz(4009000C): SUB R0, R0, CH
066Ez(E900001B): BNE 27 [068AH]
s := typ.basea.sizeb;c
066Fa(80E00004): LDR R0, SP, 4H
0670a(D12E434C): BLEQ MT [trap=4, pos=11843]
0671b(8000001C): LDR R0, R0, 1CH
0672b(D12E484C): BLEQ MT [trap=4, pos=11848]
0673c(80000020): LDR R0, R0, 20H
0674c(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
0675d(40000000): MOV R0, R0, 0H
0676e(81E00004): LDR R1, SP, 4H
0677e(D12E654C): BLEQ MT [trap=4, pos=11877]
0678f(81100010): LDR R1, R1, 10H
0679f(41190001): SUB R1, R1, 1H
067Ag(01090001): SUB R1, R0, R1
067Bg(EE00000E): BGT 14 [068AH]
067Cg(A0E00014): STR R0, SP, 14H
067Dh(80E00004): LDR R0, SP, 4H
067Eh(D12E7F4C): BLEQ MT [trap=4, pos=11903]
067Fi(8000001C): LDR R0, R0, 1CH
0680j(81E00014): LDR R1, SP, 14H
0681j(82E00018): LDR R2, SP, 18H
0682j(011A0002): MUL R1, R1, R2
0683k(82E00008): LDR R2, SP, 8H
0684k(01180002): ADD R1, R1, R2
0685l(82E0000C): LDR R2, SP, CH
0686m(F7FFFFAB): BL -85 [0632H]
ENDn
0687n(80E00014): LDR R0, SP, 14H
0688n(40080001): ADD R0, R0, 1H
0689n(E7FFFFEC): B -20 [0676H]
ENDo FindPtrFlds;
068Ao(8FE00000): LDR LNK, SP, 0H
068Bo(4EE8001C): ADD SP, SP, 1CH
068Co(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*)
068Dp .PROC 12
068Dp(4EE90018): SUB SP, SP, 18H
068Ep(AFE00000): STR LNK, SP, 0H
068Fp(A0E00004): STR R0, SP, 4H
0690p(A1E00008): STR R1, SP, 8H
0691q(80E00008): LDR R0, SP, 8H
0692q(80000000): LDR R0, R0, 0H
0693q(40020002): ASR R0, R0, 2H
0694q(A0E0000C): STR R0, SP, CH
0695r(80E00004): LDR R0, SP, 4H
0696r(D12F3D4C): BLEQ MT [trap=4, pos=12093]
0697s(80000020): LDR R0, R0, 20H
0698s(A0E00014): STR R0, SP, 14H
IF s <= 24 THENt s := 32 ELSIFu sv <= 56 THENw s := 64 ELSIFx sy <= 120 THENz s := 128
0699t(80E00014): LDR R0, SP, 14H
069At(40090018): SUB R0, R0, 18H
069Bt(EE000003): BGT 3 [069FH]
069Cu(40000020): MOV R0, R0, 20H
069Du(A0E00014): STR R0, SP, 14H
069Ev(E7000011): B 17 [06B0H]
069Fw(80E00014): LDR R0, SP, 14H
06A0w(40090038): SUB R0, R0, 38H
06A1w(EE000003): BGT 3 [06A5H]
06A2x(40000040): MOV R0, R0, 40H
06A3x(A0E00014): STR R0, SP, 14H
06A4y(E700000B): B 11 [06B0H]
06A5z(80E00014): LDR R0, SP, 14H
06A6z(40090078): SUB R0, R0, 78H
06A7z(EE000003): BGT 3 [06ABH]
ELSEa sb := (s+263)c DIV 256 *d 256
06A8a(40000080): MOV R0, R0, 80H
06A9a(A0E00014): STR R0, SP, 14H
06AAb(E7000005): B 5 [06B0H]
06ABc(80E00014): LDR R0, SP, 14H
06ACc(40080107): ADD R0, R0, 107H
06ADd(40020008): ASR R0, R0, 8H
ENDe ;
06AEe(40010008): LSL R0, R0, 8H
06AFe(A0E00014): STR R0, SP, 14H
T.lenf := dc;g data[dcw]h := s;i INC(dcw);j (*len used as address*)
06B0f(80E00004): LDR R0, SP, 4H
06B1f(D12FEF4C): BLEQ MT [trap=4, pos=12271]
06B2g(81E00008): LDR R1, SP, 8H
06B3g(81100000): LDR R1, R1, 0H
06B4g(A1000010): STR R1, R0, 10H
06B5h(80E0000C): LDR R0, SP, CH
06B6h(41090078): SUB R1, R0, 78H
06B7h(DA30001C): BLCC MT [trap=1, pos=12288]
06B8h(40010002): LSL R0, R0, 2H
06B9h .FIXUP D
06B9h(8D000073): LDR SB, MT, MOD0 [ORG]
06BAh(00D80000): ADD R0, SB, R0 [global array]
06BBi(81E00014): LDR R1, SP, 14H
06BCi(A1007D64): STR R1, R0, 7D64H
06BDj(80E0000C): LDR R0, SP, CH
06BEj(40080001): ADD R0, R0, 1H
06BFj(A0E0000C): STR R0, SP, CH
k := T.nofpark;l (*extension level!*)
06C0k(80E00004): LDR R0, SP, 4H
06C1k(D1303B4C): BLEQ MT [trap=4, pos=12347]
06C2l(8000000C): LDR R0, R0, CH
06C3l(A0E00010): STR R0, SP, 10H
IF k > 3 THENm ORS.Mark("ext level too large")n
06C4m(80E00010): LDR R0, SP, 10H
06C5m(40090003): SUB R0, R0, 3H
06C6m(E6000005): BLE 5 [06CCH]
06C7n .FIXUP D
06C7n(8D00000E): LDR SB, MT, MOD0 [ORG]
06C8n(40D88968): ADD R0, SB, FFFF8968H [data]
06C9n(41000014): MOV R1, R0, 14H
ELSEo Qp(T,q dcw)r;s
06CAo .FIXUP P
06CAo(F72090D2): BL MOD2 [ORS] PROC9
06CBp(E7000015): B 21 [06E1H]
06CCq(80E00004): LDR R0, SP, 4H
06CDr(41E8000C): ADD R1, SP, CH
06CEs(F7FFFF36): BL -202 [0605H]
WHILE k < 3 DOt data[dcw]u := -1;v INC(dcw);w INC(k) ENDx
06CFt(80E00010): LDR R0, SP, 10H
06D0t(40090003): SUB R0, R0, 3H
06D1t(ED00000F): BGE 15 [06E1H]
06D2u(80E0000C): LDR R0, SP, CH
06D3u(41090078): SUB R1, R0, 78H
06D4u(DA30B81C): BLCC MT [trap=1, pos=12472]
06D5u(40010002): LSL R0, R0, 2H
06D6u .FIXUP D
06D6u(8D00000F): LDR SB, MT, MOD0 [ORG]
06D7u(00D80000): ADD R0, SB, R0 [global array]
06D8v(5100FFFF): MOV R1, R0, FFFFFFFFH
06D9v(A1007D64): STR R1, R0, 7D64H
06DAw(80E0000C): LDR R0, SP, CH
06DBw(40080001): ADD R0, R0, 1H
06DCw(A0E0000C): STR R0, SP, CH
06DDx(80E00010): LDR R0, SP, 10H
06DEx(40080001): ADD R0, R0, 1H
06DFx(A0E00010): STR R0, SP, 10H
06E0x(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
06E1y(80E00004): LDR R0, SP, 4H
06E2z(41000000): MOV R1, R0, 0H
06E3a(42E8000C): ADD R2, SP, CH
06E4b(F7FFFF4D): BL -179 [0632H]
06E5c(80E0000C): LDR R0, SP, CH
06E6c(41090078): SUB R1, R0, 78H
06E7c(DA31041C): BLCC MT [trap=1, pos=12548]
06E8c(40010002): LSL R0, R0, 2H
06E9c .FIXUP D
06E9c(8D000013): LDR SB, MT, MOD0 [ORG]
06EAc(00D80000): ADD R0, SB, R0 [global array]
06EBd(5100FFFF): MOV R1, R0, FFFFFFFFH
06ECd(A1007D64): STR R1, R0, 7D64H
06EDe(80E0000C): LDR R0, SP, CH
06EEe(40080001): ADD R0, R0, 1H
06EFe(A0E0000C): STR R0, SP, CH
06F0f(80E0000C): LDR R0, SP, CH
06F1f(A0D00020): STR R0, SB, 20H
06F2g(80E0000C): LDR R0, SP, CH
06F3g(40010002): LSL R0, R0, 2H
06F4g(81E00008): LDR R1, SP, 8H
06F5g(A0100000): STR R0, R1, 0H
IF tdx >= maxTD THENh ORS.Mark("too many record types")i;j tdx := 0 ENDk
06F6h(80D00020): LDR R0, SB, 20H
06F7h(40090078): SUB R0, R0, 78H
06F8h(E5000007): BLT 7 [0700H]
06F9i .FIXUP D
06F9i(8D000010): LDR SB, MT, MOD0 [ORG]
06FAi(40D8897C): ADD R0, SB, FFFF897CH [data]
06FBi(41000016): MOV R1, R0, 16H
06FCj .FIXUP P
06FCj(F7209032): BL MOD2 [ORS] PROC9
06FDk(40000000): MOV R0, R0, 0H
06FEk .FIXUP D
06FEk(8D000005): LDR SB, MT, MOD0 [ORG]
06FFk(A0D00020): STR R0, SB, 20H [data]
ENDl BuildTD;
0700l(8FE00000): LDR LNK, SP, 0H
0701l(4EE80018): ADD SP, SP, 18H
0702l(C700000F): B LNK
PROCEDURE TypeTest*(VAR x: Item; T: ORB.Type; varpar, isguard: BOOLEAN);
VAR pc0: LONGINT;
BEGINm (*fetch tag into RH*)
0703m .PROC 13
0703m(4EE9001C): SUB SP, SP, 1CH
0704m(AFE00000): STR LNK, SP, 0H
0705m(A0E00004): STR R0, SP, 4H
0706m(A1E00008): STR R1, SP, 8H
0707m(A2E0000C): STR R2, SP, CH
0708m(A3E00010): STR R3, SP, 10H
0709m(A4E00014): STR R4, SP, 14H
IF varpar THENn Put2(Ldr,o RH,p SP,q x.a+4+rframe)s
070An(90E00010): LDR R0, SP, 10H
070Bn(E100000B): BEQ 11 [0717H]
070Co(40000008): MOV R0, R0, 8H
070Dp .FIXUP D
070Dp(8D00000F): LDR SB, MT, MOD0 [ORG]
070Ep(81D0002C): LDR R1, SB, 2CH [data]
070Fq(4200000E): MOV R2, R0, EH
0710r(83E00004): LDR R3, SP, 4H
0711r(83300008): LDR R3, R3, 8H
0712r(43380004): ADD R3, R3, 4H
0713s(84D00034): LDR R4, SB, 34H
0714s(03380004): ADD R3, R3, R4
ELSEt loadu(x)v;w
0715t(F7FFF95B): BL -1701 [0071H]
0716u(E7000011): B 17 [0728H]
0717v(80E00004): LDR R0, SP, 4H
0718v(81E00008): LDR R1, SP, 8H
0719w(F7FFFAB9): BL -1351 [01D3H]
pc0 := pc;x Put3(BC,y EQ,z 0)a;b (*NIL belongs to every pointer type*)
071Ax .FIXUP D
071Ax(8D00000D): LDR SB, MT, MOD0 [ORG]
071Bx(80D00018): LDR R0, SB, 18H [data]
071Cx(A0E00018): STR R0, SP, 18H
071Dy(40000002): MOV R0, R0, 2H
071Ez(41000001): MOV R1, R0, 1H
071Fa(42000000): MOV R2, R0, 0H
0720b(F7FFF970): BL -1680 [0091H]
Put2(Ldr,c RH,d x.r,e -8)f
0721c(40000008): MOV R0, R0, 8H
0722d .FIXUP D
0722d(8D000008): LDR SB, MT, MOD0 [ORG]
0723d(81D0002C): LDR R1, SB, 2CH [data]
0724e(82E00004): LDR R2, SP, 4H
0725e(82200010): LDR R2, R2, 10H
0726f(5300FFF8): MOV R3, R0, FFFFFFF8H
ENDg ;
0727g(F7FFF949): BL -1719 [0071H]
Put2(Ldr,h RH,i RH,j T.nofpark*4)l;m incR;n
0728h(40000008): MOV R0, R0, 8H
0729i .FIXUP D
0729i(8D000007): LDR SB, MT, MOD0 [ORG]
072Ai(81D0002C): LDR R1, SB, 2CH [data]
072Bj(82D0002C): LDR R2, SB, 2CH
072Ck(83E0000C): LDR R3, SP, CH
072Dk(D132D94C): BLEQ MT [trap=4, pos=13017]
072El(8330000C): LDR R3, R3, CH
072Fl(43310002): LSL R3, R3, 2H
0730m(F7FFF940): BL -1728 [0071H]
0731n(F7FFF97C): BL -1668 [00AEH]
loadTypTagAdr(T)o;p (*tag of T*)
0732o(80E0000C): LDR R0, SP, CH
0733p(F7FFFC29): BL -983 [035DH]
Put0(Cmp,q RH-1,r RH-1,s RH-2)t;u DEC(RH, 2);v
0734q(40000009): MOV R0, R0, 9H
0735r .FIXUP D
0735r(8D00000C): LDR SB, MT, MOD0 [ORG]
0736r(81D0002C): LDR R1, SB, 2CH [data]
0737r(41190001): SUB R1, R1, 1H
0738s(82D0002C): LDR R2, SB, 2CH
0739s(42290001): SUB R2, R2, 1H
073At(83D0002C): LDR R3, SB, 2CH
073Bt(43390002): SUB R3, R3, 2H
073Cu(F7FFF8C3): BL -1853 [0000H]
073Dv .FIXUP D
073Dv(8D000008): LDR SB, MT, MOD0 [ORG]
073Ev(40D8002C): ADD R0, SB, 2CH [data]
073Fv(81000000): LDR R1, R0, 0H
0740v(41190002): SUB R1, R1, 2H
0741v(A1000000): STR R1, R0, 0H
IF ~varpar THENw fix(pc0,x pc - pc0 -y 1)z ENDa ;
0742w(90E00010): LDR R0, SP, 10H
0743w(E9000007): BNE 7 [074BH]
0744x(80E00018): LDR R0, SP, 18H
0745y .FIXUP D
0745y(8D000008): LDR SB, MT, MOD0 [ORG]
0746y(81D00018): LDR R1, SB, 18H [data]
0747y(82E00018): LDR R2, SP, 18H
0748y(01190002): SUB R1, R1, R2
0749z(41190001): SUB R1, R1, 1H
074Aa(F7FFF9D1): BL -1583 [011CH]
IF isguard THENb
074Bb(90E00014): LDR R0, SP, 14H
074Cb(E1000007): BEQ 7 [0754H]
IF check THENc Trap(NE,d 2)e ENDf
074Dc .FIXUP D
074Dc(8D000008): LDR SB, MT, MOD0 [ORG]
074Ec(90D00044): LDR R0, SB, 44H [data]
074Fc(E1000003): BEQ 3 [0753H]
0750d(40000009): MOV R0, R0, 9H
0751e(41000002): MOV R1, R0, 2H
0752f(F7FFF999): BL -1639 [00ECH]
ELSE SetCCg(x,h EQ)i;j
0753g(E700000B): B 11 [075FH]
0754h(80E00004): LDR R0, SP, 4H
0755h(81E00008): LDR R1, SP, 8H
0756i(42000001): MOV R2, R0, 1H
0757j(F7FFF980): BL -1664 [00D8H]
IF ~varpar THENk DEC(RH) ENDl
0758k(90E00010): LDR R0, SP, 10H
0759k(E9000005): BNE 5 [075FH]
075Al .FIXUP D
075Al(8D00000D): LDR SB, MT, MOD0 [ORG]
075Bl(40D8002C): ADD R0, SB, 2CH [data]
075Cl(81000000): LDR R1, R0, 0H
075Dl(41190001): SUB R1, R1, 1H
075El(A1000000): STR R1, R0, 0H
END
ENDm TypeTest;
075Fm(8FE00000): LDR LNK, SP, 0H
0760m(4EE8001C): ADD SP, SP, 1CH
0761m(C700000F): B LNK
(* Code generation for Boolean operators *)
PROCEDURE Not*(VAR x: Item); (* x := ~x *)
VAR t: LONGINT;
BEGINn
0762n .PROC 14
0762n(4EE90010): SUB SP, SP, 10H
0763n(AFE00000): STR LNK, SP, 0H
0764n(A0E00004): STR R0, SP, 4H
0765n(A1E00008): STR R1, SP, 8H
IF x.mode # Cond THENo loadCond(x)p ENDq ;
0766o(80E00004): LDR R0, SP, 4H
0767o(80000000): LDR R0, R0, 0H
0768o(4009000C): SUB R0, R0, CH
0769o(E1000003): BEQ 3 [076DH]
076Ap(80E00004): LDR R0, SP, 4H
076Bp(81E00008): LDR R1, SP, 8H
076Cq(F7FFFBAC): BL -1108 [0319H]
x.r := negated(x.r)r;s t := x.a;t x.a := x.b;u x.b := t
076Dr(80E00004): LDR R0, SP, 4H
076Er(80000010): LDR R0, R0, 10H
076Fs(F7FFF993): BL -1645 [0103H]
0770s(81E00004): LDR R1, SP, 4H
0771s(A0100010): STR R0, R1, 10H
0772t(80E00004): LDR R0, SP, 4H
0773t(80000008): LDR R0, R0, 8H
0774t(A0E0000C): STR R0, SP, CH
0775u(80E00004): LDR R0, SP, 4H
0776u(8000000C): LDR R0, R0, CH
0777u(81E00004): LDR R1, SP, 4H
0778u(A0100008): STR R0, R1, 8H
ENDv Not;
0779v(80E0000C): LDR R0, SP, CH
077Av(81E00004): LDR R1, SP, 4H
077Bv(A010000C): STR R0, R1, CH
077Cv(8FE00000): LDR LNK, SP, 0H
077Dv(4EE80010): ADD SP, SP, 10H
077Ev(C700000F): B LNK
PROCEDURE And1*(VAR x: Item); (* x := x & *)
BEGINw
077Fw .PROC 15
077Fw(4EE9000C): SUB SP, SP, CH
0780w(AFE00000): STR LNK, SP, 0H
0781w(A0E00004): STR R0, SP, 4H
0782w(A1E00008): STR R1, SP, 8H
IF x.mode # Cond THENx loadCond(x)y ENDz ;
0783x(80E00004): LDR R0, SP, 4H
0784x(80000000): LDR R0, R0, 0H
0785x(4009000C): SUB R0, R0, CH
0786x(E1000003): BEQ 3 [078AH]
0787y(80E00004): LDR R0, SP, 4H
0788y(81E00008): LDR R1, SP, 8H
0789z(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
078Aa(40000002): MOV R0, R0, 2H
078Bb(4EE90004): SUB SP, SP, 4H
078Cb(A0E00000): STR R0, SP, 0H
078Dc(80E00008): LDR R0, SP, 8H
078Ec(80000010): LDR R0, R0, 10H
078Fd(F7FFF973): BL -1677 [0103H]
0790d(01000000): MOV R1, R0, R0
0791d(80E00000): LDR R0, SP, 0H
0792d(4EE80004): ADD SP, SP, 4H
0793e(82E00004): LDR R2, SP, 4H
0794e(82200008): LDR R2, R2, 8H
0795f(F7FFF8FB): BL -1797 [0091H]
0796g .FIXUP D
0796g(8D00003C): LDR SB, MT, MOD0 [ORG]
0797g(80D00018): LDR R0, SB, 18H [data]
0798g(40090001): SUB R0, R0, 1H
0799g(81E00004): LDR R1, SP, 4H
079Ag(A0100008): STR R0, R1, 8H
079Bh(80E00004): LDR R0, SP, 4H
079Ch(8000000C): LDR R0, R0, CH
079Di(F7FFF998): BL -1640 [0136H]
ENDj And1;
079Ej(40000000): MOV R0, R0, 0H
079Fj(81E00004): LDR R1, SP, 4H
07A0j(A010000C): STR R0, R1, CH
07A1j(8FE00000): LDR LNK, SP, 0H
07A2j(4EE8000C): ADD SP, SP, CH
07A3j(C700000F): B LNK
PROCEDURE And2*(VAR x, y: Item);
BEGINk
07A4k .PROC 16
07A4k(4EE90014): SUB SP, SP, 14H
07A5k(AFE00000): STR LNK, SP, 0H
07A6k(A0E00004): STR R0, SP, 4H
07A7k(A1E00008): STR R1, SP, 8H
07A8k(A2E0000C): STR R2, SP, CH
07A9k(A3E00010): STR R3, SP, 10H
IF y.mode # Cond THENl loadCond(y)m ENDn ;
07AAl(80E0000C): LDR R0, SP, CH
07ABl(80000000): LDR R0, R0, 0H
07ACl(4009000C): SUB R0, R0, CH
07ADl(E1000003): BEQ 3 [07B1H]
07AEm(80E0000C): LDR R0, SP, CH
07AFm(81E00010): LDR R1, SP, 10H
07B0n(F7FFFB68): BL -1176 [0319H]
x.a := merged(y.a,o x.a)p;q x.b := y.b;r x.r := y.r
07B1o(80E0000C): LDR R0, SP, CH
07B2o(80000008): LDR R0, R0, 8H
07B3p(81E00004): LDR R1, SP, 4H
07B4p(81100008): LDR R1, R1, 8H
07B5q(F7FFF9C7): BL -1593 [017DH]
07B6q(81E00004): LDR R1, SP, 4H
07B7q(A0100008): STR R0, R1, 8H
07B8r(80E0000C): LDR R0, SP, CH
07B9r(8000000C): LDR R0, R0, CH
07BAr(81E00004): LDR R1, SP, 4H
07BBr(A010000C): STR R0, R1, CH
ENDs And2;
07BCs(80E0000C): LDR R0, SP, CH
07BDs(80000010): LDR R0, R0, 10H
07BEs(81E00004): LDR R1, SP, 4H
07BFs(A0100010): STR R0, R1, 10H
07C0s(8FE00000): LDR LNK, SP, 0H
07C1s(4EE80014): ADD SP, SP, 14H
07C2s(C700000F): B LNK
PROCEDURE Or1*(VAR x: Item); (* x := x OR *)
BEGINt
07C3t .PROC 17
07C3t(4EE9000C): SUB SP, SP, CH
07C4t(AFE00000): STR LNK, SP, 0H
07C5t(A0E00004): STR R0, SP, 4H
07C6t(A1E00008): STR R1, SP, 8H
IF x.mode # Cond THENu loadCond(x)v ENDw ;
07C7u(80E00004): LDR R0, SP, 4H
07C8u(80000000): LDR R0, R0, 0H
07C9u(4009000C): SUB R0, R0, CH
07CAu(E1000003): BEQ 3 [07CEH]
07CBv(80E00004): LDR R0, SP, 4H
07CCv(81E00008): LDR R1, SP, 8H
07CDw(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
07CEx(40000002): MOV R0, R0, 2H
07CFy(81E00004): LDR R1, SP, 4H
07D0y(81100010): LDR R1, R1, 10H
07D1z(82E00004): LDR R2, SP, 4H
07D2z(8220000C): LDR R2, R2, CH
07D3a(F7FFF8BD): BL -1859 [0091H]
07D4b .FIXUP D
07D4b(8D00003E): LDR SB, MT, MOD0 [ORG]
07D5b(80D00018): LDR R0, SB, 18H [data]
07D6b(40090001): SUB R0, R0, 1H
07D7b(81E00004): LDR R1, SP, 4H
07D8b(A010000C): STR R0, R1, CH
07D9c(80E00004): LDR R0, SP, 4H
07DAc(80000008): LDR R0, R0, 8H
07DBd(F7FFF95A): BL -1702 [0136H]
ENDe Or1;
07DCe(40000000): MOV R0, R0, 0H
07DDe(81E00004): LDR R1, SP, 4H
07DEe(A0100008): STR R0, R1, 8H
07DFe(8FE00000): LDR LNK, SP, 0H
07E0e(4EE8000C): ADD SP, SP, CH
07E1e(C700000F): B LNK
PROCEDURE Or2*(VAR x, y: Item);
BEGINf
07E2f .PROC 18
07E2f(4EE90014): SUB SP, SP, 14H
07E3f(AFE00000): STR LNK, SP, 0H
07E4f(A0E00004): STR R0, SP, 4H
07E5f(A1E00008): STR R1, SP, 8H
07E6f(A2E0000C): STR R2, SP, CH
07E7f(A3E00010): STR R3, SP, 10H
IF y.mode # Cond THENg loadCond(y)h ENDi ;
07E8g(80E0000C): LDR R0, SP, CH
07E9g(80000000): LDR R0, R0, 0H
07EAg(4009000C): SUB R0, R0, CH
07EBg(E1000003): BEQ 3 [07EFH]
07ECh(80E0000C): LDR R0, SP, CH
07EDh(81E00010): LDR R1, SP, 10H
07EEi(F7FFFB2A): BL -1238 [0319H]
x.a := y.a;j x.b := merged(y.b,k x.b)l;m x.r := y.r
07EFj(80E0000C): LDR R0, SP, CH
07F0j(80000008): LDR R0, R0, 8H
07F1j(81E00004): LDR R1, SP, 4H
07F2j(A0100008): STR R0, R1, 8H
07F3k(80E0000C): LDR R0, SP, CH
07F4k(8000000C): LDR R0, R0, CH
07F5l(81E00004): LDR R1, SP, 4H
07F6l(8110000C): LDR R1, R1, CH
07F7m(F7FFF985): BL -1659 [017DH]
07F8m(81E00004): LDR R1, SP, 4H
07F9m(A010000C): STR R0, R1, CH
ENDn Or2;
07FAn(80E0000C): LDR R0, SP, CH
07FBn(80000010): LDR R0, R0, 10H
07FCn(81E00004): LDR R1, SP, 4H
07FDn(A0100010): STR R0, R1, 10H
07FEn(8FE00000): LDR LNK, SP, 0H
07FFn(4EE80014): ADD SP, SP, 14H
0800n(C700000F): B LNK
(* Code generation for arithmetic operators *)
PROCEDURE Neg*(VAR x: Item); (* x := -x *)
BEGINo
0801o .PROC 19
0801o(4EE9000C): SUB SP, SP, CH
0802o(AFE00000): STR LNK, SP, 0H
0803o(A0E00004): STR R0, SP, 4H
0804o(A1E00008): STR R1, SP, 8H
IF x.type.formp = ORB.Int THENq
0805p(80E00004): LDR R0, SP, 4H
0806p(80000004): LDR R0, R0, 4H
0807p(D137E84C): BLEQ MT [trap=4, pos=14312]
0808q(80000000): LDR R0, R0, 0H
0809q(40090004): SUB R0, R0, 4H
080Aq(E900001D): BNE 29 [0828H]
IF x.mode = ORB.Const THENr x.a := -x.a
080Br(80E00004): LDR R0, SP, 4H
080Cr(80000000): LDR R0, R0, 0H
080Dr(40090001): SUB R0, R0, 1H
080Er(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
080Fs(80E00004): LDR R0, SP, 4H
0810s(80000008): LDR R0, R0, 8H
0811s(41000000): MOV R1, R0, 0H
0812s(00190000): SUB R0, R1, R0
0813s(81E00004): LDR R1, SP, 4H
0814s(A0100008): STR R0, R1, 8H
0815t(E7000011): B 17 [0827H]
0816u(80E00004): LDR R0, SP, 4H
0817u(81E00008): LDR R1, SP, 8H
0818v(F7FFF9BA): BL -1606 [01D3H]
0819w(40000000): MOV R0, R0, 0H
081Ax .FIXUP D
081Ax(8D000046): LDR SB, MT, MOD0 [ORG]
081Bx(81D0002C): LDR R1, SB, 2CH [data]
081Cy(42000000): MOV R2, R0, 0H
081Dz(43000000): MOV R3, R0, 0H
081Ea(F7FFF7FF): BL -2049 [001EH]
081Fb(40000009): MOV R0, R0, 9H
0820c(81E00004): LDR R1, SP, 4H
0821c(81100010): LDR R1, R1, 10H
0822d .FIXUP D
0822d(8D000008): LDR SB, MT, MOD0 [ORG]
0823d(82D0002C): LDR R2, SB, 2CH [data]
0824e(83E00004): LDR R3, SP, 4H
0825e(83300010): LDR R3, R3, 10H
ENDf
0826f(F7FFF7D9): BL -2087 [0000H]
ELSIF xg.type.formh = ORB.Real THENi
0827g(E700003B): B 59 [0863H]
0828h(80E00004): LDR R0, SP, 4H
0829h(80000004): LDR R0, R0, 4H
082Ah(D138854C): BLEQ MT [trap=4, pos=14469]
082Bi(80000000): LDR R0, R0, 0H
082Ci(40090005): SUB R0, R0, 5H
082Di(E900001F): BNE 31 [084DH]
IF x.mode = ORB.Const THENj x.a := x.a + 7FFFFFFFH +k 1
082Ej(80E00004): LDR R0, SP, 4H
082Fj(80000000): LDR R0, R0, 0H
0830j(40090001): SUB R0, R0, 1H
0831j(E9000009): BNE 9 [083BH]
0832k(80E00004): LDR R0, SP, 4H
0833k(80000008): LDR R0, R0, 8H
0834k(61007FFF): MOV' R1, R0, 7FFFH
0835k(4116FFFF): IOR R1, R1, FFFFFFFFH
0836k(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
0837l(40080001): ADD R0, R0, 1H
0838l(81E00004): LDR R1, SP, 4H
0839l(A0100008): STR R0, R1, 8H
083Am(E7000011): B 17 [084CH]
083Bn(80E00004): LDR R0, SP, 4H
083Cn(81E00008): LDR R1, SP, 8H
083Do(F7FFF995): BL -1643 [01D3H]
083Ep(40000000): MOV R0, R0, 0H
083Fq .FIXUP D
083Fq(8D00001D): LDR SB, MT, MOD0 [ORG]
0840q(81D0002C): LDR R1, SB, 2CH [data]
0841r(42000000): MOV R2, R0, 0H
0842s(43000000): MOV R3, R0, 0H
0843t(F7FFF7DA): BL -2086 [001EH]
0844u(4000000D): MOV R0, R0, DH
0845v(81E00004): LDR R1, SP, 4H
0846v(81100010): LDR R1, R1, 10H
0847w .FIXUP D
0847w(8D000008): LDR SB, MT, MOD0 [ORG]
0848w(82D0002C): LDR R2, SB, 2CH [data]
0849x(83E00004): LDR R3, SP, 4H
084Ax(83300010): LDR R3, R3, 10H
ENDy
084By(F7FFF7B4): BL -2124 [0000H]
ELSE (*form = Set*)
IFz x.mode = ORB.Const THENa x.a := -x.a-b1
084Cz(E7000016): B 22 [0863H]
084Da(80E00004): LDR R0, SP, 4H
084Ea(80000000): LDR R0, R0, 0H
084Fa(40090001): SUB R0, R0, 1H
0850a(E9000008): BNE 8 [0859H]
0851b(80E00004): LDR R0, SP, 4H
0852b(80000008): LDR R0, R0, 8H
0853b(41000000): MOV R1, R0, 0H
0854b(00190000): SUB R0, R1, R0
ELSEc loadd(x)e;f Put1(Xor,g x.r,h x.r,i -1)j
0855c(40090001): SUB R0, R0, 1H
0856c(81E00004): LDR R1, SP, 4H
0857c(A0100008): STR R0, R1, 8H
0858d(E700000A): B 10 [0863H]
0859e(80E00004): LDR R0, SP, 4H
085Ae(81E00008): LDR R1, SP, 8H
085Bf(F7FFF977): BL -1673 [01D3H]
085Cg(40000007): MOV R0, R0, 7H
085Dh(81E00004): LDR R1, SP, 4H
085Eh(81100010): LDR R1, R1, 10H
085Fi(82E00004): LDR R2, SP, 4H
0860i(82200010): LDR R2, R2, 10H
0861j(5300FFFF): MOV R3, R0, FFFFFFFFH
ENDk
0862k(F7FFF7BB): BL -2117 [001EH]
END
ENDl Neg;
0863l(8FE00000): LDR LNK, SP, 0H
0864l(4EE8000C): ADD SP, SP, CH
0865l(C700000F): B LNK
PROCEDURE AddOp*(op: LONGINT; VAR x, y: Item); (* x := x +- y *)
BEGINm
0866m .PROC 20
0866m(4EE90018): SUB SP, SP, 18H
0867m(AFE00000): STR LNK, SP, 0H
0868m(A0E00004): STR R0, SP, 4H
0869m(A1E00008): STR R1, SP, 8H
086Am(A2E0000C): STR R2, SP, CH
086Bm(A3E00010): STR R3, SP, 10H
086Cm(A4E00014): STR R4, SP, 14H
IF op = ORS.plus THENn
086Dn(80E00004): LDR R0, SP, 4H
086En(40090006): SUB R0, R0, 6H
086Fn(E900003C): BNE 60 [08ACH]
IF (x.mode = ORB.Const)o & (py.mode = ORB.Const)q THENr x.a := x.a + y.a
0870o(80E00008): LDR R0, SP, 8H
0871o(80000000): LDR R0, R0, 0H
0872o(40090001): SUB R0, R0, 1H
0873p(E900000C): BNE 12 [0880H]
0874q(80E00010): LDR R0, SP, 10H
0875q(80000000): LDR R0, R0, 0H
0876q(40090001): SUB R0, R0, 1H
0877r(E9000008): BNE 8 [0880H]
ELSIFs yt.mode = ORB.Const THENu load(x)v;w
0878s(80E00008): LDR R0, SP, 8H
0879s(80000008): LDR R0, R0, 8H
087As(81E00010): LDR R1, SP, 10H
087Bs(81100008): LDR R1, R1, 8H
087Cs(00080001): ADD R0, R0, R1
087Ds(81E00008): LDR R1, SP, 8H
087Es(A0100008): STR R0, R1, 8H
087Ft(E700002B): B 43 [08ABH]
0880u(80E00010): LDR R0, SP, 10H
0881u(80000000): LDR R0, R0, 0H
0882u(40090001): SUB R0, R0, 1H
0883u(E900000F): BNE 15 [0893H]
0884v(80E00008): LDR R0, SP, 8H
0885v(81E0000C): LDR R1, SP, CH
0886w(F7FFF94C): BL -1716 [01D3H]
IF y.a # 0 THENx Put1a(Add,y x.r,z x.r,a y.a)b ENDc
0887x(80E00010): LDR R0, SP, 10H
0888x(80000008): LDR R0, R0, 8H
0889x(E1000008): BEQ 8 [0892H]
088Ay(40000008): MOV R0, R0, 8H
088Bz(81E00008): LDR R1, SP, 8H
088Cz(81100010): LDR R1, R1, 10H
088Da(82E00008): LDR R2, SP, 8H
088Ea(82200010): LDR R2, R2, 10H
088Fb(83E00010): LDR R3, SP, 10H
0890b(83300008): LDR R3, R3, 8H
0891c(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
0892d(E7000018): B 24 [08ABH]
0893e(80E00008): LDR R0, SP, 8H
0894e(81E0000C): LDR R1, SP, CH
0895f(F7FFF93D): BL -1731 [01D3H]
0896g(80E00010): LDR R0, SP, 10H
0897g(81E00014): LDR R1, SP, 14H
0898h(F7FFF93A): BL -1734 [01D3H]
0899i(40000008): MOV R0, R0, 8H
089Aj .FIXUP D
089Aj(8D000053): LDR SB, MT, MOD0 [ORG]
089Bj(81D0002C): LDR R1, SB, 2CH [data]
089Cj(41190002): SUB R1, R1, 2H
089Dk(82E00008): LDR R2, SP, 8H
089Ek(82200010): LDR R2, R2, 10H
089Fl(83E00010): LDR R3, SP, 10H
08A0l(83300010): LDR R3, R3, 10H
08A1m(F7FFF75E): BL -2210 [0000H]
08A2n .FIXUP D
08A2n(8D000008): LDR SB, MT, MOD0 [ORG]
08A3n(40D8002C): ADD R0, SB, 2CH [data]
08A4n(81000000): LDR R1, R0, 0H
08A5n(41190001): SUB R1, R1, 1H
08A6n(A1000000): STR R1, R0, 0H
ENDo
08A7o(80D0002C): LDR R0, SB, 2CH
08A8o(40090001): SUB R0, R0, 1H
08A9o(81E00008): LDR R1, SP, 8H
08AAo(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
08ABp(E700003B): B 59 [08E7H]
08ACq(80E00008): LDR R0, SP, 8H
08ADq(80000000): LDR R0, R0, 0H
08AEq(40090001): SUB R0, R0, 1H
08AFr(E900000C): BNE 12 [08BCH]
08B0s(80E00010): LDR R0, SP, 10H
08B1s(80000000): LDR R0, R0, 0H
08B2s(40090001): SUB R0, R0, 1H
08B3t(E9000008): BNE 8 [08BCH]
ELSIFu yv.mode = ORB.Const THENw load(x)x;y
08B4u(80E00008): LDR R0, SP, 8H
08B5u(80000008): LDR R0, R0, 8H
08B6u(81E00010): LDR R1, SP, 10H
08B7u(81100008): LDR R1, R1, 8H
08B8u(00090001): SUB R0, R0, R1
08B9u(81E00008): LDR R1, SP, 8H
08BAu(A0100008): STR R0, R1, 8H
08BBv(E700002B): B 43 [08E7H]
08BCw(80E00010): LDR R0, SP, 10H
08BDw(80000000): LDR R0, R0, 0H
08BEw(40090001): SUB R0, R0, 1H
08BFw(E900000F): BNE 15 [08CFH]
08C0x(80E00008): LDR R0, SP, 8H
08C1x(81E0000C): LDR R1, SP, CH
08C2y(F7FFF910): BL -1776 [01D3H]
IF y.a # 0 THENz Put1a(Sub,a x.r,b x.r,c y.a)d ENDe
08C3z(80E00010): LDR R0, SP, 10H
08C4z(80000008): LDR R0, R0, 8H
08C5z(E1000008): BEQ 8 [08CEH]
08C6a(40000009): MOV R0, R0, 9H
08C7b(81E00008): LDR R1, SP, 8H
08C8b(81100010): LDR R1, R1, 10H
08C9c(82E00008): LDR R2, SP, 8H
08CAc(82200010): LDR R2, R2, 10H
08CBd(83E00010): LDR R3, SP, 10H
08CCd(83300008): LDR R3, R3, 8H
08CDe(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
08CEf(E7000018): B 24 [08E7H]
08CFg(80E00008): LDR R0, SP, 8H
08D0g(81E0000C): LDR R1, SP, CH
08D1h(F7FFF901): BL -1791 [01D3H]
08D2i(80E00010): LDR R0, SP, 10H
08D3i(81E00014): LDR R1, SP, 14H
08D4j(F7FFF8FE): BL -1794 [01D3H]
08D5k(40000009): MOV R0, R0, 9H
08D6l .FIXUP D
08D6l(8D000034): LDR SB, MT, MOD0 [ORG]
08D7l(81D0002C): LDR R1, SB, 2CH [data]
08D8l(41190002): SUB R1, R1, 2H
08D9m(82E00008): LDR R2, SP, 8H
08DAm(82200010): LDR R2, R2, 10H
08DBn(83E00010): LDR R3, SP, 10H
08DCn(83300010): LDR R3, R3, 10H
08DDo(F7FFF722): BL -2270 [0000H]
08DEp .FIXUP D
08DEp(8D000008): LDR SB, MT, MOD0 [ORG]
08DFp(40D8002C): ADD R0, SB, 2CH [data]
08E0p(81000000): LDR R1, R0, 0H
08E1p(41190001): SUB R1, R1, 1H
08E2p(A1000000): STR R1, R0, 0H
ENDq
08E3q(80D0002C): LDR R0, SB, 2CH
08E4q(40090001): SUB R0, R0, 1H
08E5q(81E00008): LDR R1, SP, 8H
08E6q(A0100010): STR R0, R1, 10H
END
ENDr AddOp;
08E7r(8FE00000): LDR LNK, SP, 0H
08E8r(4EE80018): ADD SP, SP, 18H
08E9r(C700000F): B LNK
PROCEDURE log2(m: LONGINT; VAR e: LONGINT): LONGINT;
BEGINs e := 0;t
08EAs(4EE9000C): SUB SP, SP, CH
08EBs(AFE00000): STR LNK, SP, 0H
08ECs(A0E00004): STR R0, SP, 4H
08EDs(A1E00008): STR R1, SP, 8H
08EEt(40000000): MOV R0, R0, 0H
08EFt(81E00008): LDR R1, SP, 8H
08F0t(A0100000): STR R0, R1, 0H
WHILE ~ODD(m) DOu m := m DIV 2;v INC(e) ENDw ;
08F1u(80E00004): LDR R0, SP, 4H
08F2u(40040001): AND R0, R0, 1H
08F3u(E9000008): BNE 8 [08FCH]
08F4v(80E00004): LDR R0, SP, 4H
08F5v(40020001): ASR R0, R0, 1H
08F6v(A0E00004): STR R0, SP, 4H
08F7w(80E00008): LDR R0, SP, 8H
08F8w(81000000): LDR R1, R0, 0H
08F9w(41180001): ADD R1, R1, 1H
08FAw(A1000000): STR R1, R0, 0H
08FBw(E7FFFFF5): B -11 [08F1H]
RETURN m
ENDx log2;
08FCx(80E00004): LDR R0, SP, 4H
08FDx(8FE00000): LDR LNK, SP, 0H
08FEx(4EE8000C): ADD SP, SP, CH
08FFx(C700000F): B LNK
PROCEDURE MulOp*(VAR x, y: Item); (* x := x * y *)
VAR e: LONGINT;
BEGINy
0900y .PROC 21
0900y(4EE90018): SUB SP, SP, 18H
0901y(AFE00000): STR LNK, SP, 0H
0902y(A0E00004): STR R0, SP, 4H
0903y(A1E00008): STR R1, SP, 8H
0904y(A2E0000C): STR R2, SP, CH
0905y(A3E00010): STR R3, SP, 10H
IF (x.mode = ORB.Const)z & (ay.mode = ORB.Const)b THENc x.a := x.a * y.a
0906z(80E00004): LDR R0, SP, 4H
0907z(80000000): LDR R0, R0, 0H
0908z(40090001): SUB R0, R0, 1H
0909a(E900000C): BNE 12 [0916H]
090Ab(80E0000C): LDR R0, SP, CH
090Bb(80000000): LDR R0, R0, 0H
090Cb(40090001): SUB R0, R0, 1H
090Dc(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
090Ed(80E00004): LDR R0, SP, 4H
090Fd(80000008): LDR R0, R0, 8H
0910d(81E0000C): LDR R1, SP, CH
0911d(81100008): LDR R1, R1, 8H
0912d(000A0001): MUL R0, R0, R1
0913d(81E00004): LDR R1, SP, 4H
0914d(A0100008): STR R0, R1, 8H
0915e(E7000078): B 120 [098EH]
0916f(80E0000C): LDR R0, SP, CH
0917f(80000000): LDR R0, R0, 0H
0918f(40090001): SUB R0, R0, 1H
0919g(E9000015): BNE 21 [092FH]
091Ah(80E0000C): LDR R0, SP, CH
091Bh(80000008): LDR R0, R0, 8H
091Ch(40090002): SUB R0, R0, 2H
091Di(E5000011): BLT 17 [092FH]
091Ej(80E0000C): LDR R0, SP, CH
091Fj(80000008): LDR R0, R0, 8H
0920k(41E80014): ADD R1, SP, 14H
0921l(F7FFFFC8): BL -56 [08EAH]
0922m(40090001): SUB R0, R0, 1H
0923n(E900000B): BNE 11 [092FH]
0924o(80E00004): LDR R0, SP, 4H
0925o(81E00008): LDR R1, SP, 8H
0926p(F7FFF8AC): BL -1876 [01D3H]
0927q(40000001): MOV R0, R0, 1H
0928r(81E00004): LDR R1, SP, 4H
0929r(81100010): LDR R1, R1, 10H
092As(82E00004): LDR R2, SP, 4H
092Bs(82200010): LDR R2, R2, 10H
092Ct(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
092Du(F7FFF6F0): BL -2320 [001EH]
092Ev(E700005F): B 95 [098EH]
092Fw(80E0000C): LDR R0, SP, CH
0930w(80000000): LDR R0, R0, 0H
0931w(40090001): SUB R0, R0, 1H
0932w(E900000C): BNE 12 [093FH]
0933x(80E00004): LDR R0, SP, 4H
0934x(81E00008): LDR R1, SP, 8H
0935y(F7FFF89D): BL -1891 [01D3H]
0936z(4000000A): MOV R0, R0, AH
0937a(81E00004): LDR R1, SP, 4H
0938a(81100010): LDR R1, R1, 10H
0939b(82E00004): LDR R2, SP, 4H
093Ab(82200010): LDR R2, R2, 10H
093Bc(83E0000C): LDR R3, SP, CH
093Cc(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
093Dd(F7FFF706): BL -2298 [0044H]
093Ee(E700004F): B 79 [098EH]
093Ff(80E00004): LDR R0, SP, 4H
0940f(80000000): LDR R0, R0, 0H
0941f(40090001): SUB R0, R0, 1H
0942g(E900001C): BNE 28 [095FH]
0943h(80E00004): LDR R0, SP, 4H
0944h(80000008): LDR R0, R0, 8H
0945h(40090002): SUB R0, R0, 2H
0946i(E5000018): BLT 24 [095FH]
0947j(80E00004): LDR R0, SP, 4H
0948j(80000008): LDR R0, R0, 8H
0949k(41E80014): ADD R1, SP, 14H
094Al(F7FFFF9F): BL -97 [08EAH]
094Bm(40090001): SUB R0, R0, 1H
094Cn(E9000012): BNE 18 [095FH]
094Do(80E0000C): LDR R0, SP, CH
094Eo(81E00010): LDR R1, SP, 10H
094Fp(F7FFF883): BL -1917 [01D3H]
0950q(40000001): MOV R0, R0, 1H
0951r(81E0000C): LDR R1, SP, CH
0952r(81100010): LDR R1, R1, 10H
0953s(82E0000C): LDR R2, SP, CH
0954s(82200010): LDR R2, R2, 10H
0955t(83E00014): LDR R3, SP, 14H
0956u(F7FFF6C7): BL -2361 [001EH]
0957v(4000000A): MOV R0, R0, AH
0958v(81E00004): LDR R1, SP, 4H
0959v(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
095Aw(80E0000C): LDR R0, SP, CH
095Bw(80000010): LDR R0, R0, 10H
095Cw(81E00004): LDR R1, SP, 4H
095Dw(A0100010): STR R0, R1, 10H
095Ex(E700002F): B 47 [098EH]
095Fy(80E00004): LDR R0, SP, 4H
0960y(80000000): LDR R0, R0, 0H
0961y(40090001): SUB R0, R0, 1H
0962y(E9000013): BNE 19 [0976H]
0963z(80E0000C): LDR R0, SP, CH
0964z(81E00010): LDR R1, SP, 10H
0965a(F7FFF86D): BL -1939 [01D3H]
0966b(4000000A): MOV R0, R0, AH
0967c(81E0000C): LDR R1, SP, CH
0968c(81100010): LDR R1, R1, 10H
0969d(82E0000C): LDR R2, SP, CH
096Ad(82200010): LDR R2, R2, 10H
096Be(83E00004): LDR R3, SP, 4H
096Ce(83300008): LDR R3, R3, 8H
096Df(F7FFF6D6): BL -2346 [0044H]
096Eg(4000000A): MOV R0, R0, AH
096Fg(81E00004): LDR R1, SP, 4H
0970g(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
0971h(80E0000C): LDR R0, SP, CH
0972h(80000010): LDR R0, R0, 10H
0973h(81E00004): LDR R1, SP, 4H
0974h(A0100010): STR R0, R1, 10H
0975i(E7000018): B 24 [098EH]
0976j(80E00004): LDR R0, SP, 4H
0977j(81E00008): LDR R1, SP, 8H
0978k(F7FFF85A): BL -1958 [01D3H]
0979l(80E0000C): LDR R0, SP, CH
097Al(81E00010): LDR R1, SP, 10H
097Bm(F7FFF857): BL -1961 [01D3H]
097Cn(4000000A): MOV R0, R0, AH
097Do .FIXUP D
097Do(8D00009F): LDR SB, MT, MOD0 [ORG]
097Eo(81D0002C): LDR R1, SB, 2CH [data]
097Fo(41190002): SUB R1, R1, 2H
0980p(82E00004): LDR R2, SP, 4H
0981p(82200010): LDR R2, R2, 10H
0982q(83E0000C): LDR R3, SP, CH
0983q(83300010): LDR R3, R3, 10H
0984r(F7FFF67B): BL -2437 [0000H]
0985s .FIXUP D
0985s(8D000008): LDR SB, MT, MOD0 [ORG]
0986s(40D8002C): ADD R0, SB, 2CH [data]
0987s(81000000): LDR R1, R0, 0H
0988s(41190001): SUB R1, R1, 1H
0989s(A1000000): STR R1, R0, 0H
ENDt
098At(80D0002C): LDR R0, SB, 2CH
098Bt(40090001): SUB R0, R0, 1H
098Ct(81E00004): LDR R1, SP, 4H
098Dt(A0100010): STR R0, R1, 10H
ENDu MulOp;
098Eu(8FE00000): LDR LNK, SP, 0H
098Fu(4EE80018): ADD SP, SP, 18H
0990u(C700000F): B LNK
PROCEDURE DivOp*(op: LONGINT; VAR x, y: Item); (* x := x op y *)
VAR e: LONGINT;
BEGINv
0991v .PROC 22
0991v(4EE9001C): SUB SP, SP, 1CH
0992v(AFE00000): STR LNK, SP, 0H
0993v(A0E00004): STR R0, SP, 4H
0994v(A1E00008): STR R1, SP, 8H
0995v(A2E0000C): STR R2, SP, CH
0996v(A3E00010): STR R3, SP, 10H
0997v(A4E00014): STR R4, SP, 14H
IF op = ORS.div THENw
0998w(80E00004): LDR R0, SP, 4H
0999w(40090003): SUB R0, R0, 3H
099Aw(E900006B): BNE 107 [0A06H]
IF (x.mode = ORB.Const)x & (yy.mode = ORB.Const)z THENa
099Bx(80E00008): LDR R0, SP, 8H
099Cx(80000000): LDR R0, R0, 0H
099Dx(40090001): SUB R0, R0, 1H
099Ey(E9000016): BNE 22 [09B5H]
099Fz(80E00010): LDR R0, SP, 10H
09A0z(80000000): LDR R0, R0, 0H
09A1z(40090001): SUB R0, R0, 1H
09A2a(E9000012): BNE 18 [09B5H]
IF y.a > 0 THENb x.a := x.a DIV y.a ELSEc ORSd.Mark("bad divisor")e ENDf
09A3b(80E00010): LDR R0, SP, 10H
09A4b(80000008): LDR R0, R0, 8H
09A5b(40090000): SUB R0, R0, 0H
09A6b(E6000009): BLE 9 [09B0H]
09A7c(80E00010): LDR R0, SP, 10H
09A8c(80000008): LDR R0, R0, 8H
09A9c(D640516C): BLLE MT [trap=6, pos=16465]
09AAc(81E00008): LDR R1, SP, 8H
09ABc(81100008): LDR R1, R1, 8H
09ACc(001B0000): DIV R0, R1, R0
09ADc(81E00008): LDR R1, SP, 8H
09AEc(A0100008): STR R0, R1, 8H
09AFd(E7000004): B 4 [09B4H]
09B0e .FIXUP D
09B0e(8D00002B): LDR SB, MT, MOD0 [ORG]
09B1e(40D88994): ADD R0, SB, FFFF8994H [data]
09B2e(4100000C): MOV R1, R0, CH
09B3f .FIXUP P
09B3f(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
09B4g(E7000050): B 80 [0A05H]
09B5h(80E00010): LDR R0, SP, 10H
09B6h(80000000): LDR R0, R0, 0H
09B7h(40090001): SUB R0, R0, 1H
09B8i(E9000015): BNE 21 [09CEH]
09B9j(80E00010): LDR R0, SP, 10H
09BAj(80000008): LDR R0, R0, 8H
09BBj(40090002): SUB R0, R0, 2H
09BCk(E5000011): BLT 17 [09CEH]
09BDl(80E00010): LDR R0, SP, 10H
09BEl(80000008): LDR R0, R0, 8H
09BFm(41E80018): ADD R1, SP, 18H
09C0n(F7FFFF29): BL -215 [08EAH]
09C1o(40090001): SUB R0, R0, 1H
09C2p(E900000B): BNE 11 [09CEH]
09C3q(80E00008): LDR R0, SP, 8H
09C4q(81E0000C): LDR R1, SP, CH
09C5r(F7FFF80D): BL -2035 [01D3H]
09C6s(40000002): MOV R0, R0, 2H
09C7t(81E00008): LDR R1, SP, 8H
09C8t(81100010): LDR R1, R1, 10H
09C9u(82E00008): LDR R2, SP, 8H
09CAu(82200010): LDR R2, R2, 10H
09CBv(83E00018): LDR R3, SP, 18H
ELSIFw yx.mode = ORB.Const THENy
09CCw(F7FFF651): BL -2479 [001EH]
09CDx(E7000037): B 55 [0A05H]
09CEy(80E00010): LDR R0, SP, 10H
09CFy(80000000): LDR R0, R0, 0H
09D0y(40090001): SUB R0, R0, 1H
09D1y(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
09D2z(80E00010): LDR R0, SP, 10H
09D3z(80000008): LDR R0, R0, 8H
09D4z(40090000): SUB R0, R0, 0H
09D5z(E600000C): BLE 12 [09E2H]
09D6a(80E00008): LDR R0, SP, 8H
09D7a(81E0000C): LDR R1, SP, CH
09D8b(F7FFF7FA): BL -2054 [01D3H]
09D9c(4000000B): MOV R0, R0, BH
09DAd(81E00008): LDR R1, SP, 8H
09DBd(81100010): LDR R1, R1, 10H
09DCe(82E00008): LDR R2, SP, 8H
09DDe(82200010): LDR R2, R2, 10H
09DEf(83E00010): LDR R3, SP, 10H
09DFf(83300008): LDR R3, R3, 8H
09E0g(F7FFF663): BL -2461 [0044H]
09E1h(E7000004): B 4 [09E6H]
09E2i .FIXUP D
09E2i(8D000032): LDR SB, MT, MOD0 [ORG]
09E3i(40D889A0): ADD R0, SB, FFFF89A0H [data]
09E4i(4100000C): MOV R1, R0, CH
09E5j .FIXUP P
09E5j(F7209032): BL MOD2 [ORS] PROC9
ELSE loadk(y)l;m
09E6k(E700001E): B 30 [0A05H]
09E7l(80E00010): LDR R0, SP, 10H
09E8l(81E00014): LDR R1, SP, 14H
09E9m(F7FFF7E9): BL -2071 [01D3H]
IF check THENn Trap(LE,o 6)p ENDq ;
09EAn .FIXUP D
09EAn(8D000008): LDR SB, MT, MOD0 [ORG]
09EBn(90D00044): LDR R0, SB, 44H [data]
09ECn(E1000003): BEQ 3 [09F0H]
09EDo(40000006): MOV R0, R0, 6H
09EEp(41000006): MOV R1, R0, 6H
09EFq(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
09F0r(80E00008): LDR R0, SP, 8H
09F1r(81E0000C): LDR R1, SP, CH
09F2s(F7FFF7E0): BL -2080 [01D3H]
09F3t(4000000B): MOV R0, R0, BH
09F4u .FIXUP D
09F4u(8D00000A): LDR SB, MT, MOD0 [ORG]
09F5u(81D0002C): LDR R1, SB, 2CH [data]
09F6u(41190002): SUB R1, R1, 2H
09F7v(82E00008): LDR R2, SP, 8H
09F8v(82200010): LDR R2, R2, 10H
09F9w(83E00010): LDR R3, SP, 10H
09FAw(83300010): LDR R3, R3, 10H
09FBx(F7FFF604): BL -2556 [0000H]
09FCy .FIXUP D
09FCy(8D000008): LDR SB, MT, MOD0 [ORG]
09FDy(40D8002C): ADD R0, SB, 2CH [data]
09FEy(81000000): LDR R1, R0, 0H
09FFy(41190001): SUB R1, R1, 1H
0A00y(A1000000): STR R1, R0, 0H
ENDz
0A01z(80D0002C): LDR R0, SB, 2CH
0A02z(40090001): SUB R0, R0, 1H
0A03z(81E00008): LDR R1, SP, 8H
0A04z(A0100010): STR R0, R1, 10H
ELSE (*op = ORS.mod*)
IFa (x.mode = ORB.Const)b & (cy.mode = ORB.Const)d THENe
0A05a(E7000090): B 144 [0A96H]
0A06b(80E00008): LDR R0, SP, 8H
0A07b(80000000): LDR R0, R0, 0H
0A08b(40090001): SUB R0, R0, 1H
0A09c(E9000017): BNE 23 [0A21H]
0A0Ad(80E00010): LDR R0, SP, 10H
0A0Bd(80000000): LDR R0, R0, 0H
0A0Cd(40090001): SUB R0, R0, 1H
0A0De(E9000013): BNE 19 [0A21H]
IF y.a > 0 THENf x.a := x.a MOD y.a ELSEg ORSh.Mark("bad modulus")i ENDj
0A0Ef(80E00010): LDR R0, SP, 10H
0A0Ff(80000008): LDR R0, R0, 8H
0A10f(40090000): SUB R0, R0, 0H
0A11f(E600000A): BLE 10 [0A1CH]
0A12g(80E00010): LDR R0, SP, 10H
0A13g(80000008): LDR R0, R0, 8H
0A14g(D642606C): BLLE MT [trap=6, pos=16992]
0A15g(81E00008): LDR R1, SP, 8H
0A16g(81100008): LDR R1, R1, 8H
0A17g(001B0000): DIV R0, R1, R0
0A18g(20000000): MOV' R0, R0, R0
0A19g(81E00008): LDR R1, SP, 8H
0A1Ag(A0100008): STR R0, R1, 8H
0A1Bh(E7000004): B 4 [0A20H]
0A1Ci .FIXUP D
0A1Ci(8D000020): LDR SB, MT, MOD0 [ORG]
0A1Di(40D889AC): ADD R0, SB, FFFF89ACH [data]
0A1Ei(4100000C): MOV R1, R0, CH
0A1Fj .FIXUP P
0A1Fj(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
0A20k(E7000075): B 117 [0A96H]
0A21l(80E00010): LDR R0, SP, 10H
0A22l(80000000): LDR R0, R0, 0H
0A23l(40090001): SUB R0, R0, 1H
0A24m(E900002D): BNE 45 [0A52H]
0A25n(80E00010): LDR R0, SP, 10H
0A26n(80000008): LDR R0, R0, 8H
0A27n(40090002): SUB R0, R0, 2H
0A28o(E5000029): BLT 41 [0A52H]
0A29p(80E00010): LDR R0, SP, 10H
0A2Ap(80000008): LDR R0, R0, 8H
0A2Bq(41E80018): ADD R1, SP, 18H
0A2Cr(F7FFFEBD): BL -323 [08EAH]
0A2Ds(40090001): SUB R0, R0, 1H
0A2Et(E9000023): BNE 35 [0A52H]
0A2Fu(80E00008): LDR R0, SP, 8H
0A30u(81E0000C): LDR R1, SP, CH
0A31v(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
0A32w(80E00018): LDR R0, SP, 18H
0A33w(40090010): SUB R0, R0, 10H
0A34w(EE00000A): BGT 10 [0A3FH]
0A35x(40000004): MOV R0, R0, 4H
0A36y(81E00008): LDR R1, SP, 8H
0A37y(81100010): LDR R1, R1, 10H
0A38z(82E00008): LDR R2, SP, 8H
0A39z(82200010): LDR R2, R2, 10H
0A3Aa(83E00010): LDR R3, SP, 10H
0A3Ba(83300008): LDR R3, R3, 8H
0A3Ca(43390001): SUB R3, R3, 1H
0A3Db(F7FFF5E0): BL -2592 [001EH]
0A3Ec(E7000012): B 18 [0A51H]
0A3Fd(40000001): MOV R0, R0, 1H
0A40e(81E00008): LDR R1, SP, 8H
0A41e(81100010): LDR R1, R1, 10H
0A42f(82E00008): LDR R2, SP, 8H
0A43f(82200010): LDR R2, R2, 10H
0A44g(43000020): MOV R3, R0, 20H
0A45g(84E00018): LDR R4, SP, 18H
0A46g(03390004): SUB R3, R3, R4
0A47h(F7FFF5D6): BL -2602 [001EH]
0A48i(40000003): MOV R0, R0, 3H
0A49j(81E00008): LDR R1, SP, 8H
0A4Aj(81100010): LDR R1, R1, 10H
0A4Bk(82E00008): LDR R2, SP, 8H
0A4Ck(82200010): LDR R2, R2, 10H
0A4Dl(43000020): MOV R3, R0, 20H
0A4El(84E00018): LDR R4, SP, 18H
0A4Fl(03390004): SUB R3, R3, R4
0A50m(F7FFF5CD): BL -2611 [001EH]
ELSIF yn.mode = ORB.Const THENo
0A51n(E7000044): B 68 [0A96H]
0A52o(80E00010): LDR R0, SP, 10H
0A53o(80000000): LDR R0, R0, 0H
0A54o(40090001): SUB R0, R0, 1H
0A55o(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
0A56p(80E00010): LDR R0, SP, 10H
0A57p(80000008): LDR R0, R0, 8H
0A58p(40090000): SUB R0, R0, 0H
0A59p(E6000012): BLE 18 [0A6CH]
0A5Aq(80E00008): LDR R0, SP, 8H
0A5Bq(81E0000C): LDR R1, SP, CH
0A5Cr(F7FFF776): BL -2186 [01D3H]
0A5Ds(4000000B): MOV R0, R0, BH
0A5Et(81E00008): LDR R1, SP, 8H
0A5Ft(81100010): LDR R1, R1, 10H
0A60u(82E00008): LDR R2, SP, 8H
0A61u(82200010): LDR R2, R2, 10H
0A62v(83E00010): LDR R3, SP, 10H
0A63v(83300008): LDR R3, R3, 8H
0A64w(F7FFF5DF): BL -2593 [0044H]
0A65x(40002000): MOV R0, R0, 2000H
0A66y(81E00008): LDR R1, SP, 8H
0A67y(81100010): LDR R1, R1, 10H
0A68z(42000000): MOV R2, R0, 0H
0A69a(43000000): MOV R3, R0, 0H
0A6Ab(F7FFF595): BL -2667 [0000H]
0A6Bc(E7000004): B 4 [0A70H]
0A6Cd .FIXUP D
0A6Cd(8D000050): LDR SB, MT, MOD0 [ORG]
0A6Dd(40D889B8): ADD R0, SB, FFFF89B8H [data]
0A6Ed(4100000C): MOV R1, R0, CH
0A6Fe .FIXUP P
0A6Fe(F7209050): BL MOD2 [ORS] PROC9
ELSE loadf(y)g;h
0A70f(E7000025): B 37 [0A96H]
0A71g(80E00010): LDR R0, SP, 10H
0A72g(81E00014): LDR R1, SP, 14H
0A73h(F7FFF75F): BL -2209 [01D3H]
IF check THENi Trap(LE,j 6)k ENDl ;
0A74i .FIXUP D
0A74i(8D000008): LDR SB, MT, MOD0 [ORG]
0A75i(90D00044): LDR R0, SB, 44H [data]
0A76i(E1000003): BEQ 3 [0A7AH]
0A77j(40000006): MOV R0, R0, 6H
0A78k(41000006): MOV R1, R0, 6H
0A79l(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
0A7Am(80E00008): LDR R0, SP, 8H
0A7Bm(81E0000C): LDR R1, SP, CH
0A7Cn(F7FFF756): BL -2218 [01D3H]
0A7Do(4000000B): MOV R0, R0, BH
0A7Ep .FIXUP D
0A7Ep(8D00000A): LDR SB, MT, MOD0 [ORG]
0A7Fp(81D0002C): LDR R1, SB, 2CH [data]
0A80p(41190002): SUB R1, R1, 2H
0A81q(82E00008): LDR R2, SP, 8H
0A82q(82200010): LDR R2, R2, 10H
0A83r(83E00010): LDR R3, SP, 10H
0A84r(83300010): LDR R3, R3, 10H
0A85s(F7FFF57A): BL -2694 [0000H]
0A86t(40002000): MOV R0, R0, 2000H
0A87u .FIXUP D
0A87u(8D000009): LDR SB, MT, MOD0 [ORG]
0A88u(81D0002C): LDR R1, SB, 2CH [data]
0A89u(41190002): SUB R1, R1, 2H
0A8Av(42000000): MOV R2, R0, 0H
0A8Bw(43000000): MOV R3, R0, 0H
0A8Cx(F7FFF573): BL -2701 [0000H]
0A8Dy .FIXUP D
0A8Dy(8D000006): LDR SB, MT, MOD0 [ORG]
0A8Ey(40D8002C): ADD R0, SB, 2CH [data]
0A8Fy(81000000): LDR R1, R0, 0H
0A90y(41190001): SUB R1, R1, 1H
0A91y(A1000000): STR R1, R0, 0H
ENDz
0A92z(80D0002C): LDR R0, SB, 2CH
0A93z(40090001): SUB R0, R0, 1H
0A94z(81E00008): LDR R1, SP, 8H
0A95z(A0100010): STR R0, R1, 10H
END
ENDa DivOp;
0A96a(8FE00000): LDR LNK, SP, 0H
0A97a(4EE8001C): ADD SP, SP, 1CH
0A98a(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
0A99b .PROC 23
0A99b(4EE90018): SUB SP, SP, 18H
0A9Ab(AFE00000): STR LNK, SP, 0H
0A9Bb(A0E00004): STR R0, SP, 4H
0A9Cb(A1E00008): STR R1, SP, 8H
0A9Db(A2E0000C): STR R2, SP, CH
0A9Eb(A3E00010): STR R3, SP, 10H
0A9Fb(A4E00014): STR R4, SP, 14H
0AA0c(80E00008): LDR R0, SP, 8H
0AA1c(81E0000C): LDR R1, SP, CH
0AA2d(F7FFF730): BL -2256 [01D3H]
0AA3e(80E00010): LDR R0, SP, 10H
0AA4e(81E00014): LDR R1, SP, 14H
0AA5f(F7FFF72D): BL -2259 [01D3H]
IF op = ORS.plus THENg Put0(Fad,h RH-2,i x.r,j y.r)k
0AA6g(80E00004): LDR R0, SP, 4H
0AA7g(40090006): SUB R0, R0, 6H
0AA8g(E900000A): BNE 10 [0AB3H]
0AA9h(4000000C): MOV R0, R0, CH
0AAAi .FIXUP D
0AAAi(8D00001D): LDR SB, MT, MOD0 [ORG]
0AABi(81D0002C): LDR R1, SB, 2CH [data]
0AACi(41190002): SUB R1, R1, 2H
0AADj(82E00008): LDR R2, SP, 8H
0AAEj(82200010): LDR R2, R2, 10H
0AAFk(83E00010): LDR R3, SP, 10H
0AB0k(83300010): LDR R3, R3, 10H
ELSIFl opm = ORS.minus THENn Put0(Fsb,o RH-2,p x.r,q y.r)r
0AB1l(F7FFF54E): BL -2738 [0000H]
0AB2m(E7000026): B 38 [0AD9H]
0AB3n(80E00004): LDR R0, SP, 4H
0AB4n(40090007): SUB R0, R0, 7H
0AB5n(E900000A): BNE 10 [0AC0H]
0AB6o(4000000D): MOV R0, R0, DH
0AB7p .FIXUP D
0AB7p(8D00000D): LDR SB, MT, MOD0 [ORG]
0AB8p(81D0002C): LDR R1, SB, 2CH [data]
0AB9p(41190002): SUB R1, R1, 2H
0ABAq(82E00008): LDR R2, SP, 8H
0ABBq(82200010): LDR R2, R2, 10H
0ABCr(83E00010): LDR R3, SP, 10H
0ABDr(83300010): LDR R3, R3, 10H
ELSIFs opt = ORS.times THENu Put0(Fml,v RH-2,w x.r,x y.r)y
0ABEs(F7FFF541): BL -2751 [0000H]
0ABFt(E7000019): B 25 [0AD9H]
0AC0u(80E00004): LDR R0, SP, 4H
0AC1u(40090001): SUB R0, R0, 1H
0AC2u(E900000A): BNE 10 [0ACDH]
0AC3v(4000000E): MOV R0, R0, EH
0AC4w .FIXUP D
0AC4w(8D00000D): LDR SB, MT, MOD0 [ORG]
0AC5w(81D0002C): LDR R1, SB, 2CH [data]
0AC6w(41190002): SUB R1, R1, 2H
0AC7x(82E00008): LDR R2, SP, 8H
0AC8x(82200010): LDR R2, R2, 10H
0AC9y(83E00010): LDR R3, SP, 10H
0ACAy(83300010): LDR R3, R3, 10H
ELSIFz opa = ORS.rdiv THENb Put0(Fdv,c RH-2,d x.r,e y.r)f
0ACBz(F7FFF534): BL -2764 [0000H]
0ACCa(E700000C): B 12 [0AD9H]
0ACDb(80E00004): LDR R0, SP, 4H
0ACEb(40090002): SUB R0, R0, 2H
0ACFb(E9000009): BNE 9 [0AD9H]
0AD0c(4000000F): MOV R0, R0, FH
0AD1d .FIXUP D
0AD1d(8D00000D): LDR SB, MT, MOD0 [ORG]
0AD2d(81D0002C): LDR R1, SB, 2CH [data]
0AD3d(41190002): SUB R1, R1, 2H
0AD4e(82E00008): LDR R2, SP, 8H
0AD5e(82200010): LDR R2, R2, 10H
0AD6f(83E00010): LDR R3, SP, 10H
0AD7f(83300010): LDR R3, R3, 10H
ENDg ;
0AD8g(F7FFF527): BL -2777 [0000H]
DEC(RH);h x.r := RH-1
0AD9h .FIXUP D
0AD9h(8D000008): LDR SB, MT, MOD0 [ORG]
0ADAh(40D8002C): ADD R0, SB, 2CH [data]
0ADBh(81000000): LDR R1, R0, 0H
0ADCh(41190001): SUB R1, R1, 1H
0ADDh(A1000000): STR R1, R0, 0H
ENDi RealOp;
0ADEi(80D0002C): LDR R0, SB, 2CH
0ADFi(40090001): SUB R0, R0, 1H
0AE0i(81E00008): LDR R1, SP, 8H
0AE1i(A0100010): STR R0, R1, 10H
0AE2i(8FE00000): LDR LNK, SP, 0H
0AE3i(4EE80018): ADD SP, SP, 18H
0AE4i(C700000F): B LNK
(* Code generation for set operators *)
PROCEDURE Singleton*(VAR x: Item); (* x := {x} *)
BEGINj
0AE5j .PROC 24
0AE5j(4EE9000C): SUB SP, SP, CH
0AE6j(AFE00000): STR LNK, SP, 0H
0AE7j(A0E00004): STR R0, SP, 4H
0AE8j(A1E00008): STR R1, SP, 8H
IF x.mode = ORB.Const THENk x.a := LSL(1, x.a)
0AE9k(80E00004): LDR R0, SP, 4H
0AEAk(80000000): LDR R0, R0, 0H
0AEBk(40090001): SUB R0, R0, 1H
0AECk(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
0AEDl(40000001): MOV R0, R0, 1H
0AEEl(81E00004): LDR R1, SP, 4H
0AEFl(81100008): LDR R1, R1, 8H
0AF0l(00010001): LSL R0, R0, R1
0AF1l(81E00004): LDR R1, SP, 4H
0AF2l(A0100008): STR R0, R1, 8H
0AF3m(E7000011): B 17 [0B05H]
0AF4n(80E00004): LDR R0, SP, 4H
0AF5n(81E00008): LDR R1, SP, 8H
0AF6o(F7FFF6DC): BL -2340 [01D3H]
0AF7p(40000000): MOV R0, R0, 0H
0AF8q .FIXUP D
0AF8q(8D00001F): LDR SB, MT, MOD0 [ORG]
0AF9q(81D0002C): LDR R1, SB, 2CH [data]
0AFAr(42000000): MOV R2, R0, 0H
0AFBs(43000001): MOV R3, R0, 1H
0AFCt(F7FFF521): BL -2783 [001EH]
0AFDu(40000001): MOV R0, R0, 1H
0AFEv(81E00004): LDR R1, SP, 4H
0AFFv(81100010): LDR R1, R1, 10H
0B00w .FIXUP D
0B00w(8D000008): LDR SB, MT, MOD0 [ORG]
0B01w(82D0002C): LDR R2, SB, 2CH [data]
0B02x(83E00004): LDR R3, SP, 4H
0B03x(83300010): LDR R3, R3, 10H
ENDy
0B04y(F7FFF4FB): BL -2821 [0000H]
ENDz Singleton;
0B05z(8FE00000): LDR LNK, SP, 0H
0B06z(4EE8000C): ADD SP, SP, CH
0B07z(C700000F): B LNK
PROCEDURE Set*(VAR x, y: Item); (* x := {x .. y} *)
BEGINa
0B08a .PROC 25
0B08a(4EE90014): SUB SP, SP, 14H
0B09a(AFE00000): STR LNK, SP, 0H
0B0Aa(A0E00004): STR R0, SP, 4H
0B0Ba(A1E00008): STR R1, SP, 8H
0B0Ca(A2E0000C): STR R2, SP, CH
0B0Da(A3E00010): STR R3, SP, 10H
IF (x.mode = ORB.Const)b & (c y.mode = ORB.Const)d THENe
0B0Eb(80E00004): LDR R0, SP, 4H
0B0Fb(80000000): LDR R0, R0, 0H
0B10b(40090001): SUB R0, R0, 1H
0B11c(E900001A): BNE 26 [0B2CH]
0B12d(80E0000C): LDR R0, SP, CH
0B13d(80000000): LDR R0, R0, 0H
0B14d(40090001): SUB R0, R0, 1H
0B15e(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
0B16f(80E00004): LDR R0, SP, 4H
0B17f(80000008): LDR R0, R0, 8H
0B18f(81E0000C): LDR R1, SP, CH
0B19f(81100008): LDR R1, R1, 8H
0B1Af(00090001): SUB R0, R0, R1
0B1Bf(EE00000C): BGT 12 [0B28H]
0B1Cg(40000002): MOV R0, R0, 2H
0B1Dg(81E0000C): LDR R1, SP, CH
0B1Eg(81100008): LDR R1, R1, 8H
0B1Fg(00010001): LSL R0, R0, R1
0B20h(41000001): MOV R1, R0, 1H
0B21h(82E00004): LDR R2, SP, 4H
0B22h(82200008): LDR R2, R2, 8H
0B23h(01110002): LSL R1, R1, R2
0B24h(00090001): SUB R0, R0, R1
0B25h(81E00004): LDR R1, SP, 4H
0B26h(A0100008): STR R0, R1, 8H
0B27i(E7000003): B 3 [0B2BH]
0B28j(40000000): MOV R0, R0, 0H
0B29j(81E00004): LDR R1, SP, 4H
0B2Aj(A0100008): STR R0, R1, 8H
ELSE
IFk (x.mode = ORB.Const)l & (mx.a <= 16)n THENo x.a := LSL(-1, x.a)
0B2Bk(E7000078): B 120 [0BA4H]
0B2Cl(80E00004): LDR R0, SP, 4H
0B2Dl(80000000): LDR R0, R0, 0H
0B2El(40090001): SUB R0, R0, 1H
0B2Fm(E900000B): BNE 11 [0B3BH]
0B30n(80E00004): LDR R0, SP, 4H
0B31n(80000008): LDR R0, R0, 8H
0B32n(40090010): SUB R0, R0, 10H
0B33o(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
0B34p(5000FFFF): MOV R0, R0, FFFFFFFFH
0B35p(81E00004): LDR R1, SP, 4H
0B36p(81100008): LDR R1, R1, 8H
0B37p(00010001): LSL R0, R0, R1
0B38p(81E00004): LDR R1, SP, 4H
0B39p(A0100008): STR R0, R1, 8H
0B3Aq(E7000011): B 17 [0B4CH]
0B3Br(80E00004): LDR R0, SP, 4H
0B3Cr(81E00008): LDR R1, SP, 8H
0B3Ds(F7FFF695): BL -2411 [01D3H]
0B3Et(40000000): MOV R0, R0, 0H
0B3Fu .FIXUP D
0B3Fu(8D00003F): LDR SB, MT, MOD0 [ORG]
0B40u(81D0002C): LDR R1, SB, 2CH [data]
0B41v(42000000): MOV R2, R0, 0H
0B42w(5300FFFF): MOV R3, R0, FFFFFFFFH
0B43x(F7FFF4DA): BL -2854 [001EH]
0B44y(40000001): MOV R0, R0, 1H
0B45z(81E00004): LDR R1, SP, 4H
0B46z(81100010): LDR R1, R1, 10H
0B47a .FIXUP D
0B47a(8D000008): LDR SB, MT, MOD0 [ORG]
0B48a(82D0002C): LDR R2, SB, 2CH [data]
0B49b(83E00004): LDR R3, SP, 4H
0B4Ab(83300010): LDR R3, R3, 10H
ENDc ;
0B4Bc(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
0B4Cd(80E0000C): LDR R0, SP, CH
0B4Dd(80000000): LDR R0, R0, 0H
0B4Ed(40090001): SUB R0, R0, 1H
0B4Fe(E9000016): BNE 22 [0B66H]
0B50f(80E0000C): LDR R0, SP, CH
0B51f(80000008): LDR R0, R0, 8H
0B52f(40090010): SUB R0, R0, 10H
0B53g(ED000012): BGE 18 [0B66H]
0B54h(40000000): MOV R0, R0, 0H
0B55i .FIXUP D
0B55i(8D00000E): LDR SB, MT, MOD0 [ORG]
0B56i(81D0002C): LDR R1, SB, 2CH [data]
0B57j(42000000): MOV R2, R0, 0H
0B58k(5300FFFE): MOV R3, R0, FFFFFFFEH
0B59k(84E0000C): LDR R4, SP, CH
0B5Ak(84400008): LDR R4, R4, 8H
0B5Bk(03310004): LSL R3, R3, R4
0B5Cl(F7FFF4C1): BL -2879 [001EH]
0B5Dm(4000000A): MOV R0, R0, AH
0B5Em(81E0000C): LDR R1, SP, CH
0B5Fm(A0100000): STR R0, R1, 0H
0B60n .FIXUP D
0B60n(8D00000B): LDR SB, MT, MOD0 [ORG]
0B61n(80D0002C): LDR R0, SB, 2CH [data]
0B62n(81E0000C): LDR R1, SP, CH
0B63n(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
0B64o(F7FFF549): BL -2743 [00AEH]
0B65p(E7000011): B 17 [0B77H]
0B66q(80E0000C): LDR R0, SP, CH
0B67q(81E00010): LDR R1, SP, 10H
0B68r(F7FFF66A): BL -2454 [01D3H]
0B69s(40000000): MOV R0, R0, 0H
0B6At .FIXUP D
0B6At(8D00000A): LDR SB, MT, MOD0 [ORG]
0B6Bt(81D0002C): LDR R1, SB, 2CH [data]
0B6Cu(42000000): MOV R2, R0, 0H
0B6Dv(5300FFFE): MOV R3, R0, FFFFFFFEH
0B6Ew(F7FFF4AF): BL -2897 [001EH]
0B6Fx(40000001): MOV R0, R0, 1H
0B70y(81E0000C): LDR R1, SP, CH
0B71y(81100010): LDR R1, R1, 10H
0B72z .FIXUP D
0B72z(8D000008): LDR SB, MT, MOD0 [ORG]
0B73z(82D0002C): LDR R2, SB, 2CH [data]
0B74a(83E0000C): LDR R3, SP, CH
0B75a(83300010): LDR R3, R3, 10H
ENDb ;
0B76b(F7FFF489): BL -2935 [0000H]
IF x.mode = ORB.Const THENc
0B77c(80E00004): LDR R0, SP, 4H
0B78c(80000000): LDR R0, R0, 0H
0B79c(40090001): SUB R0, R0, 1H
0B7Ac(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 ;
0B7Bd(80E00004): LDR R0, SP, 4H
0B7Cd(80000008): LDR R0, R0, 8H
0B7Dd(E1000010): BEQ 16 [0B8EH]
0B7Ee(40000007): MOV R0, R0, 7H
0B7Ff(81E0000C): LDR R1, SP, CH
0B80f(81100010): LDR R1, R1, 10H
0B81g(82E0000C): LDR R2, SP, CH
0B82g(82200010): LDR R2, R2, 10H
0B83h(5300FFFF): MOV R3, R0, FFFFFFFFH
0B84i(F7FFF499): BL -2919 [001EH]
0B85j(40000004): MOV R0, R0, 4H
0B86k .FIXUP D
0B86k(8D000014): LDR SB, MT, MOD0 [ORG]
0B87k(81D0002C): LDR R1, SB, 2CH [data]
0B88k(41190001): SUB R1, R1, 1H
0B89l(82E0000C): LDR R2, SP, CH
0B8Al(82200010): LDR R2, R2, 10H
0B8Bm(83E00004): LDR R3, SP, 4H
0B8Cm(83300008): LDR R3, R3, 8H
0B8Dn(F7FFF4B6): BL -2890 [0044H]
x.mode := Reg;o x.r := RH-1
0B8Eo(4000000A): MOV R0, R0, AH
0B8Fo(81E00004): LDR R1, SP, 4H
0B90o(A0100000): STR R0, R1, 0H
ELSEp DECq(RH);r Put0(Ann,s RH-1,t x.r,u y.r)v
0B91p .FIXUP D
0B91p(8D00000B): LDR SB, MT, MOD0 [ORG]
0B92p(80D0002C): LDR R0, SB, 2CH [data]
0B93p(40090001): SUB R0, R0, 1H
0B94p(81E00004): LDR R1, SP, 4H
0B95p(A0100010): STR R0, R1, 10H
0B96q(E700000D): B 13 [0BA4H]
0B97r .FIXUP D
0B97r(8D000006): LDR SB, MT, MOD0 [ORG]
0B98r(40D8002C): ADD R0, SB, 2CH [data]
0B99r(81000000): LDR R1, R0, 0H
0B9Ar(41190001): SUB R1, R1, 1H
0B9Br(A1000000): STR R1, R0, 0H
0B9Cs(40000005): MOV R0, R0, 5H
0B9Dt(81D0002C): LDR R1, SB, 2CH
0B9Et(41190001): SUB R1, R1, 1H
0B9Fu(82E00004): LDR R2, SP, 4H
0BA0u(82200010): LDR R2, R2, 10H
0BA1v(83E0000C): LDR R3, SP, CH
0BA2v(83300010): LDR R3, R3, 10H
ENDw
0BA3w(F7FFF45C): BL -2980 [0000H]
END
ENDx Set;
0BA4x(8FE00000): LDR LNK, SP, 0H
0BA5x(4EE80014): ADD SP, SP, 14H
0BA6x(C700000F): B LNK
PROCEDURE In*(VAR x, y: Item); (* x := x IN y *)
BEGINy load(y)z;a
0BA7y .PROC 26
0BA7y(4EE90014): SUB SP, SP, 14H
0BA8y(AFE00000): STR LNK, SP, 0H
0BA9y(A0E00004): STR R0, SP, 4H
0BAAy(A1E00008): STR R1, SP, 8H
0BABy(A2E0000C): STR R2, SP, CH
0BACy(A3E00010): STR R3, SP, 10H
0BADz(80E0000C): LDR R0, SP, CH
0BAEz(81E00010): LDR R1, SP, 10H
0BAFa(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)
0BB0b(80E00004): LDR R0, SP, 4H
0BB1b(80000000): LDR R0, R0, 0H
0BB2b(40090001): SUB R0, R0, 1H
0BB3b(E9000010): BNE 16 [0BC4H]
0BB4c(40000003): MOV R0, R0, 3H
0BB5d(81E0000C): LDR R1, SP, CH
0BB6d(81100010): LDR R1, R1, 10H
0BB7e(82E0000C): LDR R2, SP, CH
0BB8e(82200010): LDR R2, R2, 10H
0BB9f(83E00004): LDR R3, SP, 4H
0BBAf(83300008): LDR R3, R3, 8H
0BBBf(43380001): ADD R3, R3, 1H
0BBCg(4334001F): AND R3, R3, 1FH
0BBDh(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)
0BBEi .FIXUP D
0BBEi(8D000027): LDR SB, MT, MOD0 [ORG]
0BBFi(40D8002C): ADD R0, SB, 2CH [data]
0BC0i(81000000): LDR R1, R0, 0H
0BC1i(41190001): SUB R1, R1, 1H
0BC2i(A1000000): STR R1, R0, 0H
0BC3j(E7000017): B 23 [0BDBH]
0BC4k(80E00004): LDR R0, SP, 4H
0BC5k(81E00008): LDR R1, SP, 8H
0BC6l(F7FFF60C): BL -2548 [01D3H]
0BC7m(40000008): MOV R0, R0, 8H
0BC8n(81E00004): LDR R1, SP, 4H
0BC9n(81100010): LDR R1, R1, 10H
0BCAo(82E00004): LDR R2, SP, 4H
0BCBo(82200010): LDR R2, R2, 10H
0BCCp(43000001): MOV R3, R0, 1H
0BCDq(F7FFF450): BL -2992 [001EH]
0BCEr(40000003): MOV R0, R0, 3H
0BCFs(81E0000C): LDR R1, SP, CH
0BD0s(81100010): LDR R1, R1, 10H
0BD1t(82E0000C): LDR R2, SP, CH
0BD2t(82200010): LDR R2, R2, 10H
0BD3u(83E00004): LDR R3, SP, 4H
0BD4u(83300010): LDR R3, R3, 10H
0BD5v(F7FFF42A): BL -3030 [0000H]
ENDw ;
0BD6w .FIXUP D
0BD6w(8D000018): LDR SB, MT, MOD0 [ORG]
0BD7w(40D8002C): ADD R0, SB, 2CH [data]
0BD8w(81000000): LDR R1, R0, 0H
0BD9w(41190002): SUB R1, R1, 2H
0BDAw(A1000000): STR R1, R0, 0H
SetCC(x,x MI)y
0BDBx(80E00004): LDR R0, SP, 4H
0BDCx(81E00008): LDR R1, SP, 8H
0BDDy(42000000): MOV R2, R0, 0H
ENDz In;
0BDEz(F7FFF4F9): BL -2823 [00D8H]
0BDFz(8FE00000): LDR LNK, SP, 0H
0BE0z(4EE80014): ADD SP, SP, 14H
0BE1z(C700000F): B LNK
PROCEDURE SetOp*(op: LONGINT; VAR x, y: Item); (* x := x op y *)
VAR xset, yset: SET; (*x.type.form = Set*)
BEGINa
0BE2a .PROC 27
0BE2a(4EE90020): SUB SP, SP, 20H
0BE3a(AFE00000): STR LNK, SP, 0H
0BE4a(A0E00004): STR R0, SP, 4H
0BE5a(A1E00008): STR R1, SP, 8H
0BE6a(A2E0000C): STR R2, SP, CH
0BE7a(A3E00010): STR R3, SP, 10H
0BE8a(A4E00014): STR R4, SP, 14H
IF (x.mode = ORB.Const)b & (cy.mode = ORB.Const)d THENe
0BE9b(80E00008): LDR R0, SP, 8H
0BEAb(80000000): LDR R0, R0, 0H
0BEBb(40090001): SUB R0, R0, 1H
0BECc(E900002D): BNE 45 [0C1AH]
0BEDd(80E00010): LDR R0, SP, 10H
0BEEd(80000000): LDR R0, R0, 0H
0BEFd(40090001): SUB R0, R0, 1H
0BF0e(E9000029): BNE 41 [0C1AH]
xset := SYSTEM.VAL(SET, x.a);f yset := SYSTEM.VAL(SET, y.a);g
0BF1f(80E00008): LDR R0, SP, 8H
0BF2f(80000008): LDR R0, R0, 8H
0BF3f(A0E00018): STR R0, SP, 18H
0BF4g(80E00010): LDR R0, SP, 10H
0BF5g(80000008): LDR R0, R0, 8H
0BF6g(A0E0001C): STR R0, SP, 1CH
IF op = ORS.plus THENh xset := xset + yset
0BF7h(80E00004): LDR R0, SP, 4H
0BF8h(40090006): SUB R0, R0, 6H
0BF9h(E9000005): BNE 5 [0BFFH]
ELSIFi opj = ORS.minus THENk xset := xset - yset
0BFAi(80E00018): LDR R0, SP, 18H
0BFBi(81E0001C): LDR R1, SP, 1CH
0BFCi(00060001): IOR R0, R0, R1
0BFDi(A0E00018): STR R0, SP, 18H
0BFEj(E7000017): B 23 [0C16H]
0BFFk(80E00004): LDR R0, SP, 4H
0C00k(40090007): SUB R0, R0, 7H
0C01k(E9000005): BNE 5 [0C07H]
ELSIFl opm = ORS.times THENn xset := xset * yset
0C02l(80E00018): LDR R0, SP, 18H
0C03l(81E0001C): LDR R1, SP, 1CH
0C04l(00050001): ANN R0, R0, R1
0C05l(A0E00018): STR R0, SP, 18H
0C06m(E700000F): B 15 [0C16H]
0C07n(80E00004): LDR R0, SP, 4H
0C08n(40090001): SUB R0, R0, 1H
0C09n(E9000005): BNE 5 [0C0FH]
ELSIFo opp = ORS.rdiv THENq xset := xset / yset
0C0Ao(80E00018): LDR R0, SP, 18H
0C0Bo(81E0001C): LDR R1, SP, 1CH
0C0Co(00040001): AND R0, R0, R1
0C0Do(A0E00018): STR R0, SP, 18H
0C0Ep(E7000007): B 7 [0C16H]
0C0Fq(80E00004): LDR R0, SP, 4H
0C10q(40090002): SUB R0, R0, 2H
0C11q(E9000004): BNE 4 [0C16H]
ENDr ;
0C12r(80E00018): LDR R0, SP, 18H
0C13r(81E0001C): LDR R1, SP, 1CH
0C14r(00070001): XOR R0, R0, R1
0C15r(A0E00018): STR R0, SP, 18H
x.a := SYSTEM.VAL(LONGINT, xset)
ELSIFs yt.mode = ORB.Const THENu
0C16s(80E00018): LDR R0, SP, 18H
0C17s(81E00008): LDR R1, SP, 8H
0C18s(A0100008): STR R0, R1, 8H
0C19t(E7000079): B 121 [0C93H]
0C1Au(80E00010): LDR R0, SP, 10H
0C1Bu(80000000): LDR R0, R0, 0H
0C1Cu(40090001): SUB R0, R0, 1H
0C1Du(E9000033): BNE 51 [0C51H]
load(x)v;w
0C1Ev(80E00008): LDR R0, SP, 8H
0C1Fv(81E0000C): LDR R1, SP, CH
0C20w(F7FFF5B2): BL -2638 [01D3H]
IF op = ORS.plus THENx Put1a(Ior,y x.r,z x.r,a y.a)b
0C21x(80E00004): LDR R0, SP, 4H
0C22x(40090006): SUB R0, R0, 6H
0C23x(E9000009): BNE 9 [0C2DH]
0C24y(40000006): MOV R0, R0, 6H
0C25z(81E00008): LDR R1, SP, 8H
0C26z(81100010): LDR R1, R1, 10H
0C27a(82E00008): LDR R2, SP, 8H
0C28a(82200010): LDR R2, R2, 10H
0C29b(83E00010): LDR R3, SP, 10H
0C2Ab(83300008): LDR R3, R3, 8H
ELSIFc opd = ORS.minus THENe Put1a(Ann,f x.r,g x.r,h y.a)i
0C2Bc(F7FFF418): BL -3048 [0044H]
0C2Cd(E7000023): B 35 [0C50H]
0C2De(80E00004): LDR R0, SP, 4H
0C2Ee(40090007): SUB R0, R0, 7H
0C2Fe(E9000009): BNE 9 [0C39H]
0C30f(40000005): MOV R0, R0, 5H
0C31g(81E00008): LDR R1, SP, 8H
0C32g(81100010): LDR R1, R1, 10H
0C33h(82E00008): LDR R2, SP, 8H
0C34h(82200010): LDR R2, R2, 10H
0C35i(83E00010): LDR R3, SP, 10H
0C36i(83300008): LDR R3, R3, 8H
ELSIFj opk = ORS.times THENl Put1a(And,m x.r,n x.r,o y.a)p
0C37j(F7FFF40C): BL -3060 [0044H]
0C38k(E7000017): B 23 [0C50H]
0C39l(80E00004): LDR R0, SP, 4H
0C3Al(40090001): SUB R0, R0, 1H
0C3Bl(E9000009): BNE 9 [0C45H]
0C3Cm(40000004): MOV R0, R0, 4H
0C3Dn(81E00008): LDR R1, SP, 8H
0C3En(81100010): LDR R1, R1, 10H
0C3Fo(82E00008): LDR R2, SP, 8H
0C40o(82200010): LDR R2, R2, 10H
0C41p(83E00010): LDR R3, SP, 10H
0C42p(83300008): LDR R3, R3, 8H
ELSIFq opr = ORS.rdiv THENs Put1a(Xor,t x.r,u x.r,v y.a)w
0C43q(F7FFF400): BL -3072 [0044H]
0C44r(E700000B): B 11 [0C50H]
0C45s(80E00004): LDR R0, SP, 4H
0C46s(40090002): SUB R0, R0, 2H
0C47s(E9000008): BNE 8 [0C50H]
0C48t(40000007): MOV R0, R0, 7H
0C49u(81E00008): LDR R1, SP, 8H
0C4Au(81100010): LDR R1, R1, 10H
0C4Bv(82E00008): LDR R2, SP, 8H
0C4Cv(82200010): LDR R2, R2, 10H
0C4Dw(83E00010): LDR R3, SP, 10H
0C4Ew(83300008): LDR R3, R3, 8H
ENDx ;
0C4Fx(F7FFF3F4): BL -3084 [0044H]
ELSE loady(x)z;a load(y)b;c
0C50y(E7000042): B 66 [0C93H]
0C51z(80E00008): LDR R0, SP, 8H
0C52z(81E0000C): LDR R1, SP, CH
0C53a(F7FFF57F): BL -2689 [01D3H]
0C54b(80E00010): LDR R0, SP, 10H
0C55b(81E00014): LDR R1, SP, 14H
0C56c(F7FFF57C): BL -2692 [01D3H]
IF op = ORS.plus THENd Put0(Ior,e RH-2,f x.r,g y.r)h
0C57d(80E00004): LDR R0, SP, 4H
0C58d(40090006): SUB R0, R0, 6H
0C59d(E900000A): BNE 10 [0C64H]
0C5Ae(40000006): MOV R0, R0, 6H
0C5Bf .FIXUP D
0C5Bf(8D000085): LDR SB, MT, MOD0 [ORG]
0C5Cf(81D0002C): LDR R1, SB, 2CH [data]
0C5Df(41190002): SUB R1, R1, 2H
0C5Eg(82E00008): LDR R2, SP, 8H
0C5Fg(82200010): LDR R2, R2, 10H
0C60h(83E00010): LDR R3, SP, 10H
0C61h(83300010): LDR R3, R3, 10H
ELSIFi opj = ORS.minus THENk Put0(Ann,l RH-2,m x.r,n y.r)o
0C62i(F7FFF39D): BL -3171 [0000H]
0C63j(E7000026): B 38 [0C8AH]
0C64k(80E00004): LDR R0, SP, 4H
0C65k(40090007): SUB R0, R0, 7H
0C66k(E900000A): BNE 10 [0C71H]
0C67l(40000005): MOV R0, R0, 5H
0C68m .FIXUP D
0C68m(8D00000D): LDR SB, MT, MOD0 [ORG]
0C69m(81D0002C): LDR R1, SB, 2CH [data]
0C6Am(41190002): SUB R1, R1, 2H
0C6Bn(82E00008): LDR R2, SP, 8H
0C6Cn(82200010): LDR R2, R2, 10H
0C6Do(83E00010): LDR R3, SP, 10H
0C6Eo(83300010): LDR R3, R3, 10H
ELSIFp opq = ORS.times THENr Put0(And,s RH-2,t x.r,u y.r)v
0C6Fp(F7FFF390): BL -3184 [0000H]
0C70q(E7000019): B 25 [0C8AH]
0C71r(80E00004): LDR R0, SP, 4H
0C72r(40090001): SUB R0, R0, 1H
0C73r(E900000A): BNE 10 [0C7EH]
0C74s(40000004): MOV R0, R0, 4H
0C75t .FIXUP D
0C75t(8D00000D): LDR SB, MT, MOD0 [ORG]
0C76t(81D0002C): LDR R1, SB, 2CH [data]
0C77t(41190002): SUB R1, R1, 2H
0C78u(82E00008): LDR R2, SP, 8H
0C79u(82200010): LDR R2, R2, 10H
0C7Av(83E00010): LDR R3, SP, 10H
0C7Bv(83300010): LDR R3, R3, 10H
ELSIFw opx = ORS.rdiv THENy Put0(Xor,z RH-2,a x.r,b y.r)c
0C7Cw(F7FFF383): BL -3197 [0000H]
0C7Dx(E700000C): B 12 [0C8AH]
0C7Ey(80E00004): LDR R0, SP, 4H
0C7Fy(40090002): SUB R0, R0, 2H
0C80y(E9000009): BNE 9 [0C8AH]
0C81z(40000007): MOV R0, R0, 7H
0C82a .FIXUP D
0C82a(8D00000D): LDR SB, MT, MOD0 [ORG]
0C83a(81D0002C): LDR R1, SB, 2CH [data]
0C84a(41190002): SUB R1, R1, 2H
0C85b(82E00008): LDR R2, SP, 8H
0C86b(82200010): LDR R2, R2, 10H
0C87c(83E00010): LDR R3, SP, 10H
0C88c(83300010): LDR R3, R3, 10H
ENDd ;
0C89d(F7FFF376): BL -3210 [0000H]
DEC(RH);e x.r := RH-1
0C8Ae .FIXUP D
0C8Ae(8D000008): LDR SB, MT, MOD0 [ORG]
0C8Be(40D8002C): ADD R0, SB, 2CH [data]
0C8Ce(81000000): LDR R1, R0, 0H
0C8De(41190001): SUB R1, R1, 1H
0C8Ee(A1000000): STR R1, R0, 0H
ENDf
0C8Ff(80D0002C): LDR R0, SB, 2CH
0C90f(40090001): SUB R0, R0, 1H
0C91f(81E00008): LDR R1, SP, 8H
0C92f(A0100010): STR R0, R1, 10H
ENDg SetOp;
0C93g(8FE00000): LDR LNK, SP, 0H
0C94g(4EE80020): ADD SP, SP, 20H
0C95g(C700000F): B LNK
(* Code generation for relations *)
PROCEDURE IntRelation*(op: INTEGER; VAR x, y: Item); (* x := x < y *)
BEGINh
0C96h .PROC 28
0C96h(4EE90018): SUB SP, SP, 18H
0C97h(AFE00000): STR LNK, SP, 0H
0C98h(A0E00004): STR R0, SP, 4H
0C99h(A1E00008): STR R1, SP, 8H
0C9Ah(A2E0000C): STR R2, SP, CH
0C9Bh(A3E00010): STR R3, SP, 10H
0C9Ch(A4E00014): STR R4, SP, 14H
IF (y.mode = ORB.Const)i & (jy.type.formk # ORB.Proc)l THENm
0C9Di(80E00010): LDR R0, SP, 10H
0C9Ei(80000000): LDR R0, R0, 0H
0C9Fi(40090001): SUB R0, R0, 1H
0CA0j(E900002A): BNE 42 [0CCBH]
0CA1k(80E00010): LDR R0, SP, 10H
0CA2k(80000004): LDR R0, R0, 4H
0CA3k(D150164C): BLEQ MT [trap=4, pos=20502]
0CA4l(80000000): LDR R0, R0, 0H
0CA5l(4009000A): SUB R0, R0, AH
0CA6m(E1000024): BEQ 36 [0CCBH]
load(x)n;o
0CA7n(80E00008): LDR R0, SP, 8H
0CA8n(81E0000C): LDR R1, SP, CH
0CA9o(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 ;
0CAAp(80E00010): LDR R0, SP, 10H
0CABp(80000008): LDR R0, R0, 8H
0CACq(E9000010): BNE 16 [0CBDH]
0CADr(40000600): MOV R0, R0, 600H
0CAEr(81E00004): LDR R1, SP, 4H
0CAFr(41180001): ADD R1, R1, 1H
0CB0r(00030001): ROR R0, R0, R1
0CB1s(E800000B): BPL 11 [0CBDH]
0CB2t .FIXUP D
0CB2t(8D000028): LDR SB, MT, MOD0 [ORG]
0CB3t(80D00018): LDR R0, SB, 18H [data]
0CB4t(40090001): SUB R0, R0, 1H
0CB5t(41091F40): SUB R1, R0, 1F40H
0CB6t(DA50771C): BLCC MT [trap=1, pos=20599]
0CB7t(40010002): LSL R0, R0, 2H
0CB8t(00D80000): ADD R0, SB, R0
0CB9u(80000064): LDR R0, R0, 64H
0CBAu(4002001E): ASR R0, R0, 1EH
0CBBv(5009FFFE): SUB R0, R0, FFFFFFFEH
0CBCw(E1000008): BEQ 8 [0CC5H]
0CBDx(40000009): MOV R0, R0, 9H
0CBEy(81E00008): LDR R1, SP, 8H
0CBFy(81100010): LDR R1, R1, 10H
0CC0z(82E00008): LDR R2, SP, 8H
0CC1z(82200010): LDR R2, R2, 10H
0CC2a(83E00010): LDR R3, SP, 10H
0CC3a(83300008): LDR R3, R3, 8H
0CC4b(F7FFF37F): BL -3201 [0044H]
DEC(RH)
ELSEc
0CC5c .FIXUP D
0CC5c(8D000013): LDR SB, MT, MOD0 [ORG]
0CC6c(40D8002C): ADD R0, SB, 2CH [data]
0CC7c(81000000): LDR R1, R0, 0H
0CC8c(41190001): SUB R1, R1, 1H
0CC9c(A1000000): STR R1, R0, 0H
IFd (x.mode = Cond)e OR (fy.mode = Cond)g THENh ORS.Mark("not implemented")i ENDj ;
0CCAd(E700001F): B 31 [0CEAH]
0CCBe(80E00008): LDR R0, SP, 8H
0CCCe(80000000): LDR R0, R0, 0H
0CCDe(4009000C): SUB R0, R0, CH
0CCEf(E1000004): BEQ 4 [0CD3H]
0CCFg(80E00010): LDR R0, SP, 10H
0CD0g(80000000): LDR R0, R0, 0H
0CD1g(4009000C): SUB R0, R0, CH
0CD2h(E9000004): BNE 4 [0CD7H]
0CD3i .FIXUP D
0CD3i(8D00000E): LDR SB, MT, MOD0 [ORG]
0CD4i(40D889C4): ADD R0, SB, FFFF89C4H [data]
0CD5i(41000010): MOV R1, R0, 10H
0CD6j .FIXUP P
0CD6j(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)
0CD7k(80E00008): LDR R0, SP, 8H
0CD8k(81E0000C): LDR R1, SP, CH
0CD9l(F7FFF4F9): BL -2823 [01D3H]
0CDAm(80E00010): LDR R0, SP, 10H
0CDBm(81E00014): LDR R1, SP, 14H
0CDCn(F7FFF4F6): BL -2826 [01D3H]
0CDDo(40000009): MOV R0, R0, 9H
0CDEp(81E00008): LDR R1, SP, 8H
0CDFp(81100010): LDR R1, R1, 10H
0CE0q(82E00008): LDR R2, SP, 8H
0CE1q(82200010): LDR R2, R2, 10H
0CE2r(83E00010): LDR R3, SP, 10H
0CE3r(83300010): LDR R3, R3, 10H
0CE4s(F7FFF31B): BL -3301 [0000H]
ENDt ;
0CE5t .FIXUP D
0CE5t(8D000012): LDR SB, MT, MOD0 [ORG]
0CE6t(40D8002C): ADD R0, SB, 2CH [data]
0CE7t(81000000): LDR R1, R0, 0H
0CE8t(41190002): SUB R1, R1, 2H
0CE9t(A1000000): STR R1, R0, 0H
SetCC(x,u relmap[op - ORS.eql]v)w
0CEAu(80E00008): LDR R0, SP, 8H
0CEBu(81E0000C): LDR R1, SP, CH
0CECv(82E00004): LDR R2, SP, 4H
0CEDv(42290009): SUB R2, R2, 9H
0CEEv(43290006): SUB R3, R2, 6H
0CEFv(DA51831C): BLCC MT [trap=1, pos=20867]
0CF0v(42210002): LSL R2, R2, 2H
0CF1v .FIXUP D
0CF1v(8D00000C): LDR SB, MT, MOD0 [ORG]
0CF2v(02D80002): ADD R2, SB, R2 [global array]
0CF3w(8220004C): LDR R2, R2, 4CH
ENDx IntRelation;
0CF4x(F7FFF3E3): BL -3101 [00D8H]
0CF5x(8FE00000): LDR LNK, SP, 0H
0CF6x(4EE80018): ADD SP, SP, 18H
0CF7x(C700000F): B LNK
PROCEDURE RealRelation*(op: INTEGER; VAR x, y: Item); (* x := x < y *)
BEGINy load(x)z;a
0CF8y .PROC 29
0CF8y(4EE90018): SUB SP, SP, 18H
0CF9y(AFE00000): STR LNK, SP, 0H
0CFAy(A0E00004): STR R0, SP, 4H
0CFBy(A1E00008): STR R1, SP, 8H
0CFCy(A2E0000C): STR R2, SP, CH
0CFDy(A3E00010): STR R3, SP, 10H
0CFEy(A4E00014): STR R4, SP, 14H
0CFFz(80E00008): LDR R0, SP, 8H
0D00z(81E0000C): LDR R1, SP, CH
0D01a(F7FFF4D1): BL -2863 [01D3H]
IF (y.mode = ORB.Const)b & (cy.a = 0)d THENe DEC(RH)
0D02b(80E00010): LDR R0, SP, 10H
0D03b(80000000): LDR R0, R0, 0H
0D04b(40090001): SUB R0, R0, 1H
0D05c(E9000009): BNE 9 [0D0FH]
0D06d(80E00010): LDR R0, SP, 10H
0D07d(80000008): LDR R0, R0, 8H
0D08e(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)
0D09f .FIXUP D
0D09f(8D000018): LDR SB, MT, MOD0 [ORG]
0D0Af(40D8002C): ADD R0, SB, 2CH [data]
0D0Bf(81000000): LDR R1, R0, 0H
0D0Cf(41190001): SUB R1, R1, 1H
0D0Df(A1000000): STR R1, R0, 0H
0D0Eg(E7000010): B 16 [0D1FH]
0D0Fh(80E00010): LDR R0, SP, 10H
0D10h(81E00014): LDR R1, SP, 14H
0D11i(F7FFF4C1): BL -2879 [01D3H]
0D12j(4000000D): MOV R0, R0, DH
0D13k(81E00008): LDR R1, SP, 8H
0D14k(81100010): LDR R1, R1, 10H
0D15l(82E00008): LDR R2, SP, 8H
0D16l(82200010): LDR R2, R2, 10H
0D17m(83E00010): LDR R3, SP, 10H
0D18m(83300010): LDR R3, R3, 10H
0D19n(F7FFF2E6): BL -3354 [0000H]
ENDo ;
0D1Ao .FIXUP D
0D1Ao(8D000011): LDR SB, MT, MOD0 [ORG]
0D1Bo(40D8002C): ADD R0, SB, 2CH [data]
0D1Co(81000000): LDR R1, R0, 0H
0D1Do(41190002): SUB R1, R1, 2H
0D1Eo(A1000000): STR R1, R0, 0H
SetCC(x,p relmap[op - ORS.eql]q)r
0D1Fp(80E00008): LDR R0, SP, 8H
0D20p(81E0000C): LDR R1, SP, CH
0D21q(82E00004): LDR R2, SP, 4H
0D22q(42290009): SUB R2, R2, 9H
0D23q(43290006): SUB R3, R2, 6H
0D24q(DA528C1C): BLCC MT [trap=1, pos=21132]
0D25q(42210002): LSL R2, R2, 2H
0D26q .FIXUP D
0D26q(8D00000C): LDR SB, MT, MOD0 [ORG]
0D27q(02D80002): ADD R2, SB, R2 [global array]
0D28r(8220004C): LDR R2, R2, 4CH
ENDs RealRelation;
0D29s(F7FFF3AE): BL -3154 [00D8H]
0D2As(8FE00000): LDR LNK, SP, 0H
0D2Bs(4EE80018): ADD SP, SP, 18H
0D2Cs(C700000F): B LNK
PROCEDURE StringRelation*(op: INTEGER; VAR x, y: Item); (* x := x < y *)
(*x, y are char arrays or strings*)
BEGINt
0D2Dt .PROC 30
0D2Dt(4EE90018): SUB SP, SP, 18H
0D2Et(AFE00000): STR LNK, SP, 0H
0D2Ft(A0E00004): STR R0, SP, 4H
0D30t(A1E00008): STR R1, SP, 8H
0D31t(A2E0000C): STR R2, SP, CH
0D32t(A3E00010): STR R3, SP, 10H
0D33t(A4E00014): STR R4, SP, 14H
IF x.type.formu = ORB.String THENv loadStringAdr(x)w ELSEx loadAdry(x)z ENDa ;
0D34u(80E00008): LDR R0, SP, 8H
0D35u(80000004): LDR R0, R0, 4H
0D36u(D153324C): BLEQ MT [trap=4, pos=21298]
0D37v(80000000): LDR R0, R0, 0H
0D38v(4009000B): SUB R0, R0, BH
0D39v(E9000004): BNE 4 [0D3EH]
0D3Aw(80E00008): LDR R0, SP, 8H
0D3Bw(81E0000C): LDR R1, SP, CH
0D3Cx(F7FFF636): BL -2506 [0373H]
0D3Dy(E7000003): B 3 [0D41H]
0D3Ez(80E00008): LDR R0, SP, 8H
0D3Fz(81E0000C): LDR R1, SP, CH
0D40a(F7FFF57B): BL -2693 [02BCH]
IF y.type.formb = ORB.String THENc loadStringAdr(y)d ELSEe loadAdrf(y)g ENDh ;
0D41b(80E00010): LDR R0, SP, 10H
0D42b(80000004): LDR R0, R0, 4H
0D43b(D1537E4C): BLEQ MT [trap=4, pos=21374]
0D44c(80000000): LDR R0, R0, 0H
0D45c(4009000B): SUB R0, R0, BH
0D46c(E9000004): BNE 4 [0D4BH]
0D47d(80E00010): LDR R0, SP, 10H
0D48d(81E00014): LDR R1, SP, 14H
0D49e(F7FFF629): BL -2519 [0373H]
0D4Af(E7000003): B 3 [0D4EH]
0D4Bg(80E00010): LDR R0, SP, 10H
0D4Cg(81E00014): LDR R1, SP, 14H
0D4Dh(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
0D4Ei(40000009): MOV R0, R0, 9H
0D4Fj .FIXUP D
0D4Fj(8D000029): LDR SB, MT, MOD0 [ORG]
0D50j(81D0002C): LDR R1, SB, 2CH [data]
0D51k(82E00008): LDR R2, SP, 8H
0D52k(82200010): LDR R2, R2, 10H
0D53l(43000000): MOV R3, R0, 0H
0D54m(F7FFF31C): BL -3300 [0071H]
0D55n(40000008): MOV R0, R0, 8H
0D56o(81E00008): LDR R1, SP, 8H
0D57o(81100010): LDR R1, R1, 10H
0D58p(82E00008): LDR R2, SP, 8H
0D59p(82200010): LDR R2, R2, 10H
0D5Aq(43000001): MOV R3, R0, 1H
0D5Br(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
0D5Cs(40000009): MOV R0, R0, 9H
0D5Dt .FIXUP D
0D5Dt(8D00000E): LDR SB, MT, MOD0 [ORG]
0D5Et(81D0002C): LDR R1, SB, 2CH [data]
0D5Ft(41180001): ADD R1, R1, 1H
0D60u(82E00010): LDR R2, SP, 10H
0D61u(82200010): LDR R2, R2, 10H
0D62v(43000000): MOV R3, R0, 0H
0D63w(F7FFF30D): BL -3315 [0071H]
0D64x(40000008): MOV R0, R0, 8H
0D65y(81E00010): LDR R1, SP, 10H
0D66y(81100010): LDR R1, R1, 10H
0D67z(82E00010): LDR R2, SP, 10H
0D68z(82200010): LDR R2, R2, 10H
0D69a(43000001): MOV R3, R0, 1H
0D6Ab(F7FFF2B3): BL -3405 [001EH]
Put0(Cmp,c RH+2,d RH,e RH+1)f;g Put3(BC,h NE,i 2)j;k
0D6Bc(40000009): MOV R0, R0, 9H
0D6Cd .FIXUP D
0D6Cd(8D00000F): LDR SB, MT, MOD0 [ORG]
0D6Dd(81D0002C): LDR R1, SB, 2CH [data]
0D6Ed(41180002): ADD R1, R1, 2H
0D6Fe(82D0002C): LDR R2, SB, 2CH
0D70f(83D0002C): LDR R3, SB, 2CH
0D71f(43380001): ADD R3, R3, 1H
0D72g(F7FFF28D): BL -3443 [0000H]
0D73h(40000002): MOV R0, R0, 2H
0D74i(41000009): MOV R1, R0, 9H
0D75j(42000002): MOV R2, R0, 2H
0D76k(F7FFF31A): BL -3302 [0091H]
Put1(Cmp,l RH+2,m RH,n 0)o;p Put3(BC,q NE,r -8)s;t
0D77l(40000009): MOV R0, R0, 9H
0D78m .FIXUP D
0D78m(8D00000C): LDR SB, MT, MOD0 [ORG]
0D79m(81D0002C): LDR R1, SB, 2CH [data]
0D7Am(41180002): ADD R1, R1, 2H
0D7Bn(82D0002C): LDR R2, SB, 2CH
0D7Co(43000000): MOV R3, R0, 0H
0D7Dp(F7FFF2A0): BL -3424 [001EH]
0D7Eq(40000002): MOV R0, R0, 2H
0D7Fr(41000009): MOV R1, R0, 9H
0D80s(5200FFF8): MOV R2, R0, FFFFFFF8H
0D81t(F7FFF30F): BL -3313 [0091H]
DEC(RH, 2);u SetCC(x,v relmap[op - ORS.eql]w)x
0D82u .FIXUP D
0D82u(8D00000A): LDR SB, MT, MOD0 [ORG]
0D83u(40D8002C): ADD R0, SB, 2CH [data]
0D84u(81000000): LDR R1, R0, 0H
0D85u(41190002): SUB R1, R1, 2H
0D86u(A1000000): STR R1, R0, 0H
0D87v(80E00008): LDR R0, SP, 8H
0D88v(81E0000C): LDR R1, SP, CH
0D89w(82E00004): LDR R2, SP, 4H
0D8Aw(42290009): SUB R2, R2, 9H
0D8Bw(43290006): SUB R3, R2, 6H
0D8Cw(DA54AF1C): BLCC MT [trap=1, pos=21679]
0D8Dw(42210002): LSL R2, R2, 2H
0D8Ew(02D80002): ADD R2, SB, R2
0D8Fx(8220004C): LDR R2, R2, 4CH
ENDy StringRelation;
0D90y(F7FFF347): BL -3257 [00D8H]
0D91y(8FE00000): LDR LNK, SP, 0H
0D92y(4EE80018): ADD SP, SP, 18H
0D93y(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)
0D94z .PROC 31
0D94z(4EE9000C): SUB SP, SP, CH
0D95z(AFE00000): STR LNK, SP, 0H
0D96z(A0E00004): STR R0, SP, 4H
0D97z(A1E00008): STR R1, SP, 8H
0D98a .FIXUP D
0D98a(8D400016): LDR SB, MT, MOD4 [ORB]
0D99a(80D00008): LDR R0, SB, VAR8
0D9Aa(81E00004): LDR R1, SP, 4H
0D9Ba(A0100004): STR R0, R1, 4H
0D9Cb .FIXUP D
0D9Cb(8D000004): LDR SB, MT, MOD0 [ORG]
0D9Db(40D80024): ADD R0, SB, 24H [data]
0D9Eb(81000000): LDR R1, R0, 0H
0D9Fb(41190004): SUB R1, R1, 4H
0DA0b(A1000000): STR R1, R0, 0H
0DA1c(80E00004): LDR R0, SP, 4H
0DA2c(80000008): LDR R0, R0, 8H
0DA3c(41090960): SUB R1, R0, 960H
0DA4c(DA55561C): BLCC MT [trap=1, pos=21846]
0DA5c(00D80000): ADD R0, SB, R0
ENDd StrToChar;
0DA6d(90007F44): LDR R0, R0, 7F44H
0DA7d(81E00004): LDR R1, SP, 4H
0DA8d(A0100008): STR R0, R1, 8H
0DA9d(8FE00000): LDR LNK, SP, 0H
0DAAd(4EE8000C): ADD SP, SP, CH
0DABd(C700000F): B LNK
PROCEDURE Store*(VAR x, y: Item); (* x := y *)
VAR op: LONGINT;
BEGINe load(y)f;g
0DACe .PROC 32
0DACe(4EE90018): SUB SP, SP, 18H
0DADe(AFE00000): STR LNK, SP, 0H
0DAEe(A0E00004): STR R0, SP, 4H
0DAFe(A1E00008): STR R1, SP, 8H
0DB0e(A2E0000C): STR R2, SP, CH
0DB1e(A3E00010): STR R3, SP, 10H
0DB2f(80E0000C): LDR R0, SP, CH
0DB3f(81E00010): LDR R1, SP, 10H
0DB4g(F7FFF41E): BL -3042 [01D3H]
IF x.type.sizeh = 1 THENi op := Str+1 ELSEj opk := Str ENDl ;
0DB5h(80E00004): LDR R0, SP, 4H
0DB6h(80000004): LDR R0, R0, 4H
0DB7h(D155D44C): BLEQ MT [trap=4, pos=21972]
0DB8i(80000020): LDR R0, R0, 20H
0DB9i(40090001): SUB R0, R0, 1H
0DBAi(E9000003): BNE 3 [0DBEH]
0DBBj(4000000B): MOV R0, R0, BH
0DBCj(A0E00014): STR R0, SP, 14H
0DBDk(E7000002): B 2 [0DC0H]
0DBEl(4000000A): MOV R0, R0, AH
0DBFl(A0E00014): STR R0, SP, 14H
IF x.mode = ORB.Var THENm
0DC0m(80E00004): LDR R0, SP, 4H
0DC1m(80000000): LDR R0, R0, 0H
0DC2m(40090002): SUB R0, R0, 2H
0DC3m(E900001A): BNE 26 [0DDEH]
IF x.r > 0 THENn (*local*) Put2(op,o y.r,p SP,q x.a + frame)r
0DC4n(80E00004): LDR R0, SP, 4H
0DC5n(80000010): LDR R0, R0, 10H
0DC6n(40090000): SUB R0, R0, 0H
0DC7n(E600000B): BLE 11 [0DD3H]
0DC8o(80E00014): LDR R0, SP, 14H
0DC9p(81E0000C): LDR R1, SP, CH
0DCAp(81100010): LDR R1, R1, 10H
0DCBq(4200000E): MOV R2, R0, EH
0DCCr(83E00004): LDR R3, SP, 4H
0DCDr(83300008): LDR R3, R3, 8H
0DCEr .FIXUP D
0DCEr(8D000032): LDR SB, MT, MOD0 [ORG]
0DCFr(84D00034): LDR R4, SB, 34H [data]
0DD0r(03380004): ADD R3, R3, R4
ELSEs GetSBt(x.r)u;v Put2(op,w y.r,x SB,y x.a)z
0DD1s(F7FFF29F): BL -3425 [0071H]
0DD2t(E700000A): B 10 [0DDDH]
0DD3u(80E00004): LDR R0, SP, 4H
0DD4u(80000010): LDR R0, R0, 10H
0DD5v(F7FFF3D2): BL -3118 [01A8H]
0DD6w(80E00014): LDR R0, SP, 14H
0DD7x(81E0000C): LDR R1, SP, CH
0DD8x(81100010): LDR R1, R1, 10H
0DD9y(4200000D): MOV R2, R0, DH
0DDAz(83E00004): LDR R3, SP, 4H
0DDBz(83300008): LDR R3, R3, 8H
ENDa
0DDCa(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
0DDDb(E700002C): B 44 [0E0AH]
0DDEc(80E00004): LDR R0, SP, 4H
0DDFc(80000000): LDR R0, R0, 0H
0DE0c(40090003): SUB R0, R0, 3H
0DE1c(E9000012): BNE 18 [0DF4H]
0DE2d(40000008): MOV R0, R0, 8H
0DE3e .FIXUP D
0DE3e(8D000015): LDR SB, MT, MOD0 [ORG]
0DE4e(81D0002C): LDR R1, SB, 2CH [data]
0DE5f(4200000E): MOV R2, R0, EH
0DE6g(83E00004): LDR R3, SP, 4H
0DE7g(83300008): LDR R3, R3, 8H
0DE8g(84D00034): LDR R4, SB, 34H
0DE9g(03380004): ADD R3, R3, R4
0DEAh(F7FFF286): BL -3450 [0071H]
0DEBi(80E00014): LDR R0, SP, 14H
0DECj(81E0000C): LDR R1, SP, CH
0DEDj(81100010): LDR R1, R1, 10H
0DEEk .FIXUP D
0DEEk(8D00000B): LDR SB, MT, MOD0 [ORG]
0DEFk(82D0002C): LDR R2, SB, 2CH [data]
0DF0l(83E00004): LDR R3, SP, 4H
0DF1l(8330000C): LDR R3, R3, CH
0DF2m(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
0DF3n(E7000016): B 22 [0E0AH]
0DF4o(80E00004): LDR R0, SP, 4H
0DF5o(80000000): LDR R0, R0, 0H
0DF6o(4009000B): SUB R0, R0, BH
0DF7o(E900000E): BNE 14 [0E06H]
0DF8p(80E00014): LDR R0, SP, 14H
0DF9q(81E0000C): LDR R1, SP, CH
0DFAq(81100010): LDR R1, R1, 10H
0DFBr(82E00004): LDR R2, SP, 4H
0DFCr(82200010): LDR R2, R2, 10H
0DFDs(83E00004): LDR R3, SP, 4H
0DFEs(83300008): LDR R3, R3, 8H
0DFFt(F7FFF271): BL -3471 [0071H]
0E00u .FIXUP D
0E00u(8D000012): LDR SB, MT, MOD0 [ORG]
0E01u(40D8002C): ADD R0, SB, 2CH [data]
0E02u(81000000): LDR R1, R0, 0H
0E03u(41190001): SUB R1, R1, 1H
0E04u(A1000000): STR R1, R0, 0H
ELSE ORSv.Mark("bad mode in Store")w
0E05v(E7000004): B 4 [0E0AH]
0E06w .FIXUP D
0E06w(8D000006): LDR SB, MT, MOD0 [ORG]
0E07w(40D889D4): ADD R0, SB, FFFF89D4H [data]
0E08w(41000012): MOV R1, R0, 12H
ENDx ;
0E09x .FIXUP P
0E09x(F7209133): BL MOD2 [ORS] PROC9
DEC(RH)
ENDy Store;
0E0Ay .FIXUP D
0E0Ay(8D000004): LDR SB, MT, MOD0 [ORG]
0E0By(40D8002C): ADD R0, SB, 2CH [data]
0E0Cy(81000000): LDR R1, R0, 0H
0E0Dy(41190001): SUB R1, R1, 1H
0E0Ey(A1000000): STR R1, R0, 0H
0E0Fy(8FE00000): LDR LNK, SP, 0H
0E10y(4EE80018): ADD SP, SP, 18H
0E11y(C700000F): B LNK
PROCEDURE StoreStruct*(VAR x, y: Item); (* x := y, frame = 0 *)
VAR s, pc0: LONGINT;
BEGINz
0E12z .PROC 33
0E12z(4EE9001C): SUB SP, SP, 1CH
0E13z(AFE00000): STR LNK, SP, 0H
0E14z(A0E00004): STR R0, SP, 4H
0E15z(A1E00008): STR R1, SP, 8H
0E16z(A2E0000C): STR R2, SP, CH
0E17z(A3E00010): STR R3, SP, 10H
IF y.type.sizea # 0 THENb
0E18a(80E0000C): LDR R0, SP, CH
0E19a(80000004): LDR R0, R0, 4H
0E1Aa(D157EA4C): BLEQ MT [trap=4, pos=22506]
0E1Bb(80000020): LDR R0, R0, 20H
0E1Cb(E10000C2): BEQ 194 [0EDFH]
loadAdr(x)c;d loadAdr(y)e;f
0E1Dc(80E00004): LDR R0, SP, 4H
0E1Ec(81E00008): LDR R1, SP, 8H
0E1Fd(F7FFF49C): BL -2916 [02BCH]
0E20e(80E0000C): LDR R0, SP, CH
0E21e(81E00010): LDR R1, SP, 10H
0E22f(F7FFF499): BL -2919 [02BCH]
IF (x.type.formg = ORB.Array)h & (ix.type.lenj > 0)k THENl
0E23g(80E00004): LDR R0, SP, 4H
0E24g(80000004): LDR R0, R0, 4H
0E25g(D158274C): BLEQ MT [trap=4, pos=22567]
0E26h(80000000): LDR R0, R0, 0H
0E27h(4009000C): SUB R0, R0, CH
0E28i(E9000079): BNE 121 [0EA2H]
0E29j(80E00004): LDR R0, SP, 4H
0E2Aj(80000004): LDR R0, R0, 4H
0E2Bj(D158434C): BLEQ MT [trap=4, pos=22595]
0E2Ck(80000010): LDR R0, R0, 10H
0E2Dk(40090000): SUB R0, R0, 0H
0E2El(E6000073): BLE 115 [0EA2H]
IF y.type.lenm >= 0 THENn
0E2Fm(80E0000C): LDR R0, SP, CH
0E30m(80000004): LDR R0, R0, 4H
0E31m(D158634C): BLEQ MT [trap=4, pos=22627]
0E32n(80000010): LDR R0, R0, 10H
0E33n(40090000): SUB R0, R0, 0H
0E34n(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
0E35o(80E00004): LDR R0, SP, 4H
0E36o(80000004): LDR R0, R0, 4H
0E37o(D158874C): BLEQ MT [trap=4, pos=22663]
0E38p(81E0000C): LDR R1, SP, CH
0E39p(81100004): LDR R1, R1, 4H
0E3Ap(D158954C): BLEQ MT [trap=4, pos=22677]
0E3Bq(80000020): LDR R0, R0, 20H
0E3Cq(81100020): LDR R1, R1, 20H
0E3Dq(00090001): SUB R0, R0, R1
0E3Eq(E900000C): BNE 12 [0E4BH]
0E3Fr(40000000): MOV R0, R0, 0H
0E40s .FIXUP D
0E40s(8D000036): LDR SB, MT, MOD0 [ORG]
0E41s(81D0002C): LDR R1, SB, 2CH [data]
0E42t(42000000): MOV R2, R0, 0H
0E43u(83E0000C): LDR R3, SP, CH
0E44u(83300004): LDR R3, R3, 4H
0E45u(D158B94C): BLEQ MT [trap=4, pos=22713]
0E46v(83300020): LDR R3, R3, 20H
0E47v(43380003): ADD R3, R3, 3H
0E48w(43320002): ASR R3, R3, 2H
ELSEx ORSy.Mark("different length/size, not implemented")z
0E49x(F7FFF1FA): BL -3590 [0044H]
0E4Ay(E7000004): B 4 [0E4FH]
0E4Bz .FIXUP D
0E4Bz(8D00000B): LDR SB, MT, MOD0 [ORG]
0E4Cz(40D889E8): ADD R0, SB, FFFF89E8H [data]
0E4Dz(41000027): MOV R1, R0, 27H
ENDa
0E4Ea .FIXUP P
0E4Ea(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*)
0E4Fb(E7000051): B 81 [0EA1H]
0E50c(40000008): MOV R0, R0, 8H
0E51d .FIXUP D
0E51d(8D000006): LDR SB, MT, MOD0 [ORG]
0E52d(81D0002C): LDR R1, SB, 2CH [data]
0E53e(4200000E): MOV R2, R0, EH
0E54f(83E0000C): LDR R3, SP, CH
0E55f(83300008): LDR R3, R3, 8H
0E56f(43380004): ADD R3, R3, 4H
0E57g(F7FFF219): BL -3559 [0071H]
0E58h(80E0000C): LDR R0, SP, CH
0E59h(80000004): LDR R0, R0, 4H
0E5Ah(D1595D4C): BLEQ MT [trap=4, pos=22877]
0E5Bi(8000001C): LDR R0, R0, 1CH
0E5Ci(D159624C): BLEQ MT [trap=4, pos=22882]
0E5Dj(80000020): LDR R0, R0, 20H
0E5Ej(A0E00014): STR R0, SP, 14H
pc0 := pc;k Put3(BC,l EQ,m 0)n;o
0E5Fk .FIXUP D
0E5Fk(8D00000E): LDR SB, MT, MOD0 [ORG]
0E60k(80D00018): LDR R0, SB, 18H [data]
0E61k(A0E00018): STR R0, SP, 18H
0E62l(40000002): MOV R0, R0, 2H
0E63m(41000001): MOV R1, R0, 1H
0E64n(42000000): MOV R2, R0, 0H
0E65o(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
0E66p(80E00014): LDR R0, SP, 14H
0E67p(40090001): SUB R0, R0, 1H
0E68p(E900000D): BNE 13 [0E76H]
0E69q(40000008): MOV R0, R0, 8H
0E6Ar .FIXUP D
0E6Ar(8D00000B): LDR SB, MT, MOD0 [ORG]
0E6Br(81D0002C): LDR R1, SB, 2CH [data]
0E6Cs(82D0002C): LDR R2, SB, 2CH
0E6Dt(43000003): MOV R3, R0, 3H
0E6Eu(F7FFF1AF): BL -3665 [001EH]
0E6Fv(40000002): MOV R0, R0, 2H
0E70w .FIXUP D
0E70w(8D000006): LDR SB, MT, MOD0 [ORG]
0E71w(81D0002C): LDR R1, SB, 2CH [data]
0E72x(82D0002C): LDR R2, SB, 2CH
0E73y(43000002): MOV R3, R0, 2H
ELSIFz sa # 4 THENb Put1a(Mul,c RH,d RH,e s DIV 4)f
0E74z(F7FFF1A9): BL -3671 [001EH]
0E75a(E700000A): B 10 [0E80H]
0E76b(80E00014): LDR R0, SP, 14H
0E77b(40090004): SUB R0, R0, 4H
0E78b(E1000007): BEQ 7 [0E80H]
0E79c(4000000A): MOV R0, R0, AH
0E7Ad .FIXUP D
0E7Ad(8D00000A): LDR SB, MT, MOD0 [ORG]
0E7Bd(81D0002C): LDR R1, SB, 2CH [data]
0E7Ce(82D0002C): LDR R2, SB, 2CH
0E7Df(83E00014): LDR R3, SP, 14H
0E7Ef(43320002): ASR R3, R3, 2H
ENDg ;
0E7Fg(F7FFF1C4): BL -3644 [0044H]
IF check THENh
0E80h .FIXUP D
0E80h(8D000006): LDR SB, MT, MOD0 [ORG]
0E81h(90D00044): LDR R0, SB, 44H [data]
0E82h(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
0E83i(40000000): MOV R0, R0, 0H
0E84j .FIXUP D
0E84j(8D000004): LDR SB, MT, MOD0 [ORG]
0E85j(81D0002C): LDR R1, SB, 2CH [data]
0E86j(41180001): ADD R1, R1, 1H
0E87k(42000000): MOV R2, R0, 0H
0E88l(83E00004): LDR R3, SP, 4H
0E89l(83300004): LDR R3, R3, 4H
0E8Al(D15A6A4C): BLEQ MT [trap=4, pos=23146]
0E8Bm(83300020): LDR R3, R3, 20H
0E8Cm(43380003): ADD R3, R3, 3H
0E8Dn(43320002): ASR R3, R3, 2H
0E8Eo(F7FFF1B5): BL -3659 [0044H]
0E8Fp(40000009): MOV R0, R0, 9H
0E90q .FIXUP D
0E90q(8D00000C): LDR SB, MT, MOD0 [ORG]
0E91q(81D0002C): LDR R1, SB, 2CH [data]
0E92q(41180001): ADD R1, R1, 1H
0E93r(82D0002C): LDR R2, SB, 2CH
0E94s(83D0002C): LDR R3, SB, 2CH
0E95s(43380001): ADD R3, R3, 1H
0E96t(F7FFF169): BL -3735 [0000H]
0E97u(4000000E): MOV R0, R0, EH
0E98v(41000003): MOV R1, R0, 3H
ENDw ;
0E99w(F7FFF252): BL -3502 [00ECH]
fix(pc0,x pc + 5 -y pc0)z
0E9Ax(80E00018): LDR R0, SP, 18H
0E9By .FIXUP D
0E9By(8D00000B): LDR SB, MT, MOD0 [ORG]
0E9Cy(81D00018): LDR R1, SB, 18H [data]
0E9Dy(41180005): ADD R1, R1, 5H
0E9Ez(82E00018): LDR R2, SP, 18H
0E9Fz(01190002): SUB R1, R1, R2
ENDa
0EA0a(F7FFF27B): BL -3461 [011CH]
ELSIF xb.type.formc = ORB.Record THENd Put1a(Mov,e RH,f 0,g x.type.sizeh DIV 4)i
0EA1b(E7000015): B 21 [0EB7H]
0EA2c(80E00004): LDR R0, SP, 4H
0EA3c(80000004): LDR R0, R0, 4H
0EA4c(D15AF14C): BLEQ MT [trap=4, pos=23281]
0EA5d(80000000): LDR R0, R0, 0H
0EA6d(4009000D): SUB R0, R0, DH
0EA7d(E900000B): BNE 11 [0EB3H]
0EA8e(40000000): MOV R0, R0, 0H
0EA9f .FIXUP D
0EA9f(8D00000E): LDR SB, MT, MOD0 [ORG]
0EAAf(81D0002C): LDR R1, SB, 2CH [data]
0EABg(42000000): MOV R2, R0, 0H
0EACh(83E00004): LDR R3, SP, 4H
0EADh(83300004): LDR R3, R3, 4H
0EAEh(D15B214C): BLEQ MT [trap=4, pos=23329]
0EAFi(83300020): LDR R3, R3, 20H
0EB0i(43320002): ASR R3, R3, 2H
ELSEj ORSk.Mark("inadmissible assignment")l
0EB1j(F7FFF192): BL -3694 [0044H]
0EB2k(E7000004): B 4 [0EB7H]
0EB3l .FIXUP D
0EB3l(8D00000A): LDR SB, MT, MOD0 [ORG]
0EB4l(40D88A10): ADD R0, SB, FFFF8A10H [data]
0EB5l(41000018): MOV R1, R0, 18H
ENDm ;
0EB6m .FIXUP P
0EB6m(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
0EB7n(40000008): MOV R0, R0, 8H
0EB8o .FIXUP D
0EB8o(8D000005): LDR SB, MT, MOD0 [ORG]
0EB9o(81D0002C): LDR R1, SB, 2CH [data]
0EBAo(41180001): ADD R1, R1, 1H
0EBBp(82E0000C): LDR R2, SP, CH
0EBCp(82200010): LDR R2, R2, 10H
0EBDq(43000000): MOV R3, R0, 0H
0EBEr(F7FFF1B2): BL -3662 [0071H]
0EBFs(40000008): MOV R0, R0, 8H
0EC0t(81E0000C): LDR R1, SP, CH
0EC1t(81100010): LDR R1, R1, 10H
0EC2u(82E0000C): LDR R2, SP, CH
0EC3u(82200010): LDR R2, R2, 10H
0EC4v(43000004): MOV R3, R0, 4H
0EC5w(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
0EC6x(4000000A): MOV R0, R0, AH
0EC7y .FIXUP D
0EC7y(8D00000F): LDR SB, MT, MOD0 [ORG]
0EC8y(81D0002C): LDR R1, SB, 2CH [data]
0EC9y(41180001): ADD R1, R1, 1H
0ECAz(82E00004): LDR R2, SP, 4H
0ECBz(82200010): LDR R2, R2, 10H
0ECCa(43000000): MOV R3, R0, 0H
0ECDb(F7FFF1A3): BL -3677 [0071H]
0ECEc(40000008): MOV R0, R0, 8H
0ECFd(81E00004): LDR R1, SP, 4H
0ED0d(81100010): LDR R1, R1, 10H
0ED1e(82E00004): LDR R2, SP, 4H
0ED2e(82200010): LDR R2, R2, 10H
0ED3f(43000004): MOV R3, R0, 4H
0ED4g(F7FFF149): BL -3767 [001EH]
Put1(Sub,h RH,i RH,j 1)k;l Put3(BC,m NE,n -6)o
0ED5h(40000009): MOV R0, R0, 9H
0ED6i .FIXUP D
0ED6i(8D00000F): LDR SB, MT, MOD0 [ORG]
0ED7i(81D0002C): LDR R1, SB, 2CH [data]
0ED8j(82D0002C): LDR R2, SB, 2CH
0ED9k(43000001): MOV R3, R0, 1H
0EDAl(F7FFF143): BL -3773 [001EH]
0EDBm(40000002): MOV R0, R0, 2H
0EDCn(41000009): MOV R1, R0, 9H
0EDDo(5200FFFA): MOV R2, R0, FFFFFFFAH
ENDp ;
0EDEp(F7FFF1B2): BL -3662 [0091H]
RH := 0
ENDq StoreStruct;
0EDFq(40000000): MOV R0, R0, 0H
0EE0q .FIXUP D
0EE0q(8D00000A): LDR SB, MT, MOD0 [ORG]
0EE1q(A0D0002C): STR R0, SB, 2CH [data]
0EE2q(8FE00000): LDR LNK, SP, 0H
0EE3q(4EE8001C): ADD SP, SP, 1CH
0EE4q(C700000F): B LNK
PROCEDURE CopyString*(VAR x, y: Item); (* x := y *)
VAR len: LONGINT;
BEGINr loadAdr(x)s;t len := x.type.lenu;v
0EE5r .PROC 34
0EE5r(4EE90018): SUB SP, SP, 18H
0EE6r(AFE00000): STR LNK, SP, 0H
0EE7r(A0E00004): STR R0, SP, 4H
0EE8r(A1E00008): STR R1, SP, 8H
0EE9r(A2E0000C): STR R2, SP, CH
0EEAr(A3E00010): STR R3, SP, 10H
0EEBs(80E00004): LDR R0, SP, 4H
0EECs(81E00008): LDR R1, SP, 8H
0EEDt(F7FFF3CE): BL -3122 [02BCH]
0EEEu(80E00004): LDR R0, SP, 4H
0EEFu(80000004): LDR R0, R0, 4H
0EF0u(D15C9E4C): BLEQ MT [trap=4, pos=23710]
0EF1v(80000010): LDR R0, R0, 10H
0EF2v(A0E00014): STR R0, SP, 14H
IF len >= 0 THENw
0EF3w(80E00014): LDR R0, SP, 14H
0EF4w(40090000): SUB R0, R0, 0H
0EF5w(E500000A): BLT 10 [0F00H]
IF len < y.b THENx ORS.Mark("string too long")y ENDz
0EF6x(80E00014): LDR R0, SP, 14H
0EF7x(81E0000C): LDR R1, SP, CH
0EF8x(8110000C): LDR R1, R1, CH
0EF9x(00090001): SUB R0, R0, R1
0EFAx(ED000004): BGE 4 [0EFFH]
0EFBy .FIXUP D
0EFBy(8D00001B): LDR SB, MT, MOD0 [ORG]
0EFCy(40D88A28): ADD R0, SB, FFFF8A28H [data]
0EFDy(41000010): MOV R1, R0, 10H
0EFEz .FIXUP P
0EFEz(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*)
0EFFa(E7000015): B 21 [0F15H]
0F00b .FIXUP D
0F00b(8D000005): LDR SB, MT, MOD0 [ORG]
0F01b(90D00044): LDR R0, SB, 44H [data]
0F02b(E1000012): BEQ 18 [0F15H]
0F03c(40000008): MOV R0, R0, 8H
0F04d .FIXUP D
0F04d(8D000004): LDR SB, MT, MOD0 [ORG]
0F05d(81D0002C): LDR R1, SB, 2CH [data]
0F06e(4200000E): MOV R2, R0, EH
0F07f(83E00004): LDR R3, SP, 4H
0F08f(83300008): LDR R3, R3, 8H
0F09f(43380004): ADD R3, R3, 4H
0F0Ag(F7FFF166): BL -3738 [0071H]
Put1(Cmp,hRH,i RH,j y.b)k;l Trap(LT,m 3)n
0F0Bh(40000009): MOV R0, R0, 9H
0F0Ci .FIXUP D
0F0Ci(8D000008): LDR SB, MT, MOD0 [ORG]
0F0Di(81D0002C): LDR R1, SB, 2CH [data]
0F0Ej(82D0002C): LDR R2, SB, 2CH
0F0Fk(83E0000C): LDR R3, SP, CH
0F10k(8330000C): LDR R3, R3, CH
0F11l(F7FFF10C): BL -3828 [001EH]
0F12m(40000005): MOV R0, R0, 5H
0F13n(41000003): MOV R1, R0, 3H
ENDo ;
0F14o(F7FFF1D7): BL -3625 [00ECH]
loadStringAdr(y)p;q
0F15p(80E0000C): LDR R0, SP, CH
0F16p(81E00010): LDR R1, SP, 10H
0F17q(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
0F18r(40000008): MOV R0, R0, 8H
0F19s .FIXUP D
0F19s(8D00000D): LDR SB, MT, MOD0 [ORG]
0F1As(81D0002C): LDR R1, SB, 2CH [data]
0F1Bt(82E0000C): LDR R2, SP, CH
0F1Ct(82200010): LDR R2, R2, 10H
0F1Du(43000000): MOV R3, R0, 0H
0F1Ev(F7FFF152): BL -3758 [0071H]
0F1Fw(40000008): MOV R0, R0, 8H
0F20x(81E0000C): LDR R1, SP, CH
0F21x(81100010): LDR R1, R1, 10H
0F22y(82E0000C): LDR R2, SP, CH
0F23y(82200010): LDR R2, R2, 10H
0F24z(43000004): MOV R3, R0, 4H
0F25a(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
0F26b(4000000A): MOV R0, R0, AH
0F27c .FIXUP D
0F27c(8D00000E): LDR SB, MT, MOD0 [ORG]
0F28c(81D0002C): LDR R1, SB, 2CH [data]
0F29d(82E00004): LDR R2, SP, 4H
0F2Ad(82200010): LDR R2, R2, 10H
0F2Be(43000000): MOV R3, R0, 0H
0F2Cf(F7FFF144): BL -3772 [0071H]
0F2Dg(40000008): MOV R0, R0, 8H
0F2Eh(81E00004): LDR R1, SP, 4H
0F2Fh(81100010): LDR R1, R1, 10H
0F30i(82E00004): LDR R2, SP, 4H
0F31i(82200010): LDR R2, R2, 10H
0F32j(43000004): MOV R3, R0, 4H
0F33k(F7FFF0EA): BL -3862 [001EH]
Put1(Asr,l RH,m RH,n 24)o;p Put3(BC,q NE,r -6)s;t RH := 0
0F34l(40000002): MOV R0, R0, 2H
0F35m .FIXUP D
0F35m(8D00000E): LDR SB, MT, MOD0 [ORG]
0F36m(81D0002C): LDR R1, SB, 2CH [data]
0F37n(82D0002C): LDR R2, SB, 2CH
0F38o(43000018): MOV R3, R0, 18H
0F39p(F7FFF0E4): BL -3868 [001EH]
0F3Aq(40000002): MOV R0, R0, 2H
0F3Br(41000009): MOV R1, R0, 9H
0F3Cs(5200FFFA): MOV R2, R0, FFFFFFFAH
0F3Dt(F7FFF153): BL -3757 [0091H]
ENDu CopyString;
0F3Eu(40000000): MOV R0, R0, 0H
0F3Fu .FIXUP D
0F3Fu(8D00000A): LDR SB, MT, MOD0 [ORG]
0F40u(A0D0002C): STR R0, SB, 2CH [data]
0F41u(8FE00000): LDR LNK, SP, 0H
0F42u(4EE80018): ADD SP, SP, 18H
0F43u(C700000F): B LNK
(* Code generation for parameters *)
PROCEDURE OpenArrayParam*(VAR x: Item);
BEGINv loadAdr(x)w;x
0F44v .PROC 35
0F44v(4EE9000C): SUB SP, SP, CH
0F45v(AFE00000): STR LNK, SP, 0H
0F46v(A0E00004): STR R0, SP, 4H
0F47v(A1E00008): STR R1, SP, 8H
0F48w(80E00004): LDR R0, SP, 4H
0F49w(81E00008): LDR R1, SP, 8H
0F4Ax(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 ;
0F4By(80E00004): LDR R0, SP, 4H
0F4Cy(80000004): LDR R0, R0, 4H
0F4Dy(D15EAF4C): BLEQ MT [trap=4, pos=24239]
0F4Ez(80000010): LDR R0, R0, 10H
0F4Fz(40090000): SUB R0, R0, 0H
0F50z(E500000A): BLT 10 [0F5BH]
0F51a(40000000): MOV R0, R0, 0H
0F52b .FIXUP D
0F52b(8D000013): LDR SB, MT, MOD0 [ORG]
0F53b(81D0002C): LDR R1, SB, 2CH [data]
0F54c(42000000): MOV R2, R0, 0H
0F55d(83E00004): LDR R3, SP, 4H
0F56d(83300004): LDR R3, R3, 4H
0F57d(D15ED64C): BLEQ MT [trap=4, pos=24278]
0F58e(83300010): LDR R3, R3, 10H
0F59f(F7FFF0EA): BL -3862 [0044H]
0F5Ag(E700000A): B 10 [0F65H]
0F5Bh(40000008): MOV R0, R0, 8H
0F5Ci .FIXUP D
0F5Ci(8D00000A): LDR SB, MT, MOD0 [ORG]
0F5Di(81D0002C): LDR R1, SB, 2CH [data]
0F5Ej(4200000E): MOV R2, R0, EH
0F5Fk(83E00004): LDR R3, SP, 4H
0F60k(83300008): LDR R3, R3, 8H
0F61k(43380004): ADD R3, R3, 4H
0F62l(84D00034): LDR R4, SB, 34H
0F63l(03380004): ADD R3, R3, R4
0F64m(F7FFF10C): BL -3828 [0071H]
incR
ENDn OpenArrayParam;
0F65n(F7FFF148): BL -3768 [00AEH]
0F66n(8FE00000): LDR LNK, SP, 0H
0F67n(4EE8000C): ADD SP, SP, CH
0F68n(C700000F): B LNK
PROCEDURE VarParam*(VAR x: Item; ftype: ORB.Type);
VAR xmd: INTEGER;
BEGINo xmd := x.mode;p loadAdr(x)q;r
0F69o .PROC 36
0F69o(4EE90014): SUB SP, SP, 14H
0F6Ao(AFE00000): STR LNK, SP, 0H
0F6Bo(A0E00004): STR R0, SP, 4H
0F6Co(A1E00008): STR R1, SP, 8H
0F6Do(A2E0000C): STR R2, SP, CH
0F6Ep(80E00004): LDR R0, SP, 4H
0F6Fp(80000000): LDR R0, R0, 0H
0F70p(A0E00010): STR R0, SP, 10H
0F71q(80E00004): LDR R0, SP, 4H
0F72q(81E00008): LDR R1, SP, 8H
0F73r(F7FFF348): BL -3256 [02BCH]
IF (ftype.forms = ORB.Array)t & (uftype.lenv < 0)w THENx (*open array*)
0F74s(80E0000C): LDR R0, SP, CH
0F75s(D15FA24C): BLEQ MT [trap=4, pos=24482]
0F76t(80000000): LDR R0, R0, 0H
0F77t(4009000C): SUB R0, R0, CH
0F78u(E9000021): BNE 33 [0F9AH]
0F79v(80E0000C): LDR R0, SP, CH
0F7Av(D15FBC4C): BLEQ MT [trap=4, pos=24508]
0F7Bw(80000010): LDR R0, R0, 10H
0F7Cw(40090000): SUB R0, R0, 0H
0F7Dx(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 ;
0F7Ey(80E00004): LDR R0, SP, 4H
0F7Fy(80000004): LDR R0, R0, 4H
0F80y(D15FE94C): BLEQ MT [trap=4, pos=24553]
0F81z(80000010): LDR R0, R0, 10H
0F82z(40090000): SUB R0, R0, 0H
0F83z(E500000A): BLT 10 [0F8EH]
0F84a(40000000): MOV R0, R0, 0H
0F85b .FIXUP D
0F85b(8D000029): LDR SB, MT, MOD0 [ORG]
0F86b(81D0002C): LDR R1, SB, 2CH [data]
0F87c(42000000): MOV R2, R0, 0H
0F88d(83E00004): LDR R3, SP, 4H
0F89d(83300004): LDR R3, R3, 4H
0F8Ad(D160104C): BLEQ MT [trap=4, pos=24592]
0F8Be(83300010): LDR R3, R3, 10H
0F8Cf(F7FFF0B7): BL -3913 [0044H]
0F8Dg(E700000A): B 10 [0F98H]
0F8Eh(40000008): MOV R0, R0, 8H
0F8Fi .FIXUP D
0F8Fi(8D00000A): LDR SB, MT, MOD0 [ORG]
0F90i(81D0002C): LDR R1, SB, 2CH [data]
0F91j(4200000E): MOV R2, R0, EH
0F92k(83E00004): LDR R3, SP, 4H
0F93k(83300008): LDR R3, R3, 8H
0F94k(43380004): ADD R3, R3, 4H
0F95l(84D00034): LDR R4, SB, 34H
0F96l(03380004): ADD R3, R3, R4
0F97m(F7FFF0D9): BL -3879 [0071H]
incR
ELSIFn ftypeo.formp = ORB.Record THENq
0F98n(F7FFF115): BL -3819 [00AEH]
0F99o(E7000017): B 23 [0FB1H]
0F9Ap(80E0000C): LDR R0, SP, CH
0F9Bp(D1605C4C): BLEQ MT [trap=4, pos=24668]
0F9Cq(80000000): LDR R0, R0, 0H
0F9Dq(4009000D): SUB R0, R0, DH
0F9Eq(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
0F9Fr(80E00010): LDR R0, SP, 10H
0FA0r(40090003): SUB R0, R0, 3H
0FA1r(E900000C): BNE 12 [0FAEH]
0FA2s(40000008): MOV R0, R0, 8H
0FA3t .FIXUP D
0FA3t(8D000014): LDR SB, MT, MOD0 [ORG]
0FA4t(81D0002C): LDR R1, SB, 2CH [data]
0FA5u(4200000E): MOV R2, R0, EH
0FA6v(83E00004): LDR R3, SP, 4H
0FA7v(83300008): LDR R3, R3, 8H
0FA8v(43380004): ADD R3, R3, 4H
0FA9w(84D00034): LDR R4, SB, 34H
0FAAw(03380004): ADD R3, R3, R4
0FABx(F7FFF0C5): BL -3899 [0071H]
0FACy(F7FFF101): BL -3839 [00AEH]
0FADz(E7000003): B 3 [0FB1H]
0FAEa(80E00004): LDR R0, SP, 4H
0FAFa(80000004): LDR R0, R0, 4H
0FB0b(F7FFF3AC): BL -3156 [035DH]
END
ENDc VarParam;
0FB1c(8FE00000): LDR LNK, SP, 0H
0FB2c(4EE80014): ADD SP, SP, 14H
0FB3c(C700000F): B LNK
PROCEDURE ValueParam*(VAR x: Item);
BEGINd load(x)e
0FB4d .PROC 37
0FB4d(4EE9000C): SUB SP, SP, CH
0FB5d(AFE00000): STR LNK, SP, 0H
0FB6d(A0E00004): STR R0, SP, 4H
0FB7d(A1E00008): STR R1, SP, 8H
0FB8e(80E00004): LDR R0, SP, 4H
0FB9e(81E00008): LDR R1, SP, 8H
ENDf ValueParam;
0FBAf(F7FFF218): BL -3560 [01D3H]
0FBBf(8FE00000): LDR LNK, SP, 0H
0FBCf(4EE8000C): ADD SP, SP, CH
0FBDf(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*)
0FBEg .PROC 38
0FBEg(4EE9000C): SUB SP, SP, CH
0FBFg(AFE00000): STR LNK, SP, 0H
0FC0g(A0E00004): STR R0, SP, 4H
0FC1g(A1E00008): STR R1, SP, 8H
0FC2h(80E00004): LDR R0, SP, 4H
0FC3h(81E00008): LDR R1, SP, 8H
0FC4i(F7FFF3AE): BL -3154 [0373H]
0FC5j(40000000): MOV R0, R0, 0H
0FC6k .FIXUP D
0FC6k(8D000023): LDR SB, MT, MOD0 [ORG]
0FC7k(81D0002C): LDR R1, SB, 2CH [data]
0FC8l(42000000): MOV R2, R0, 0H
0FC9m(83E00004): LDR R3, SP, 4H
0FCAm(8330000C): LDR R3, R3, CH
0FCBn(F7FFF052): BL -4014 [001EH]
ENDo StringParam;
0FCCo(F7FFF0E1): BL -3871 [00AEH]
0FCDo(8FE00000): LDR LNK, SP, 0H
0FCEo(4EE8000C): ADD SP, SP, CH
0FCFo(C700000F): B LNK
(*For Statements*)
PROCEDURE For0*(VAR x, y: Item);
BEGINp load(y)q
0FD0p .PROC 39
0FD0p(4EE90014): SUB SP, SP, 14H
0FD1p(AFE00000): STR LNK, SP, 0H
0FD2p(A0E00004): STR R0, SP, 4H
0FD3p(A1E00008): STR R1, SP, 8H
0FD4p(A2E0000C): STR R2, SP, CH
0FD5p(A3E00010): STR R3, SP, 10H
0FD6q(80E0000C): LDR R0, SP, CH
0FD7q(81E00010): LDR R1, SP, 10H
ENDr For0;
0FD8r(F7FFF1FA): BL -3590 [01D3H]
0FD9r(8FE00000): LDR LNK, SP, 0H
0FDAr(4EE80014): ADD SP, SP, 14H
0FDBr(C700000F): B LNK
PROCEDURE For1*(VAR x, y, z, w: Item; VAR L: LONGINT);
BEGINs
0FDCs .PROC 40
0FDCs(4EE90028): SUB SP, SP, 28H
0FDDs(AFE00000): STR LNK, SP, 0H
0FDEs(A0E00004): STR R0, SP, 4H
0FDFs(A1E00008): STR R1, SP, 8H
0FE0s(A2E0000C): STR R2, SP, CH
0FE1s(A3E00010): STR R3, SP, 10H
0FE2s(A4E00014): STR R4, SP, 14H
0FE3s(A5E00018): STR R5, SP, 18H
0FE4s(A6E0001C): STR R6, SP, 1CH
0FE5s(A7E00020): STR R7, SP, 20H
0FE6s(A8E00024): STR R8, SP, 24H
IF z.mode = ORB.Const THENt Put1a(Cmp,u RH,v y.r,w z.a)x
0FE7t(80E00014): LDR R0, SP, 14H
0FE8t(80000000): LDR R0, R0, 0H
0FE9t(40090001): SUB R0, R0, 1H
0FEAt(E9000009): BNE 9 [0FF4H]
0FEBu(40000009): MOV R0, R0, 9H
0FECv .FIXUP D
0FECv(8D000026): LDR SB, MT, MOD0 [ORG]
0FEDv(81D0002C): LDR R1, SB, 2CH [data]
0FEEw(82E0000C): LDR R2, SP, CH
0FEFw(82200010): LDR R2, R2, 10H
0FF0x(83E00014): LDR R3, SP, 14H
0FF1x(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)
0FF2y(F7FFF051): BL -4015 [0044H]
0FF3z(E7000011): B 17 [1005H]
0FF4a(80E00014): LDR R0, SP, 14H
0FF5a(81E00018): LDR R1, SP, 18H
0FF6b(F7FFF1DC): BL -3620 [01D3H]
0FF7c(40000009): MOV R0, R0, 9H
0FF8d .FIXUP D
0FF8d(8D00000C): LDR SB, MT, MOD0 [ORG]
0FF9d(81D0002C): LDR R1, SB, 2CH [data]
0FFAd(41190001): SUB R1, R1, 1H
0FFBe(82E0000C): LDR R2, SP, CH
0FFCe(82200010): LDR R2, R2, 10H
0FFDf(83E00014): LDR R3, SP, 14H
0FFEf(83300010): LDR R3, R3, 10H
0FFFg(F7FFF000): BL -4096 [0000H]
ENDh ;
1000h .FIXUP D
1000h(8D000008): LDR SB, MT, MOD0 [ORG]
1001h(40D8002C): ADD R0, SB, 2CH [data]
1002h(81000000): LDR R1, R0, 0H
1003h(41190001): SUB R1, R1, 1H
1004h(A1000000): STR R1, R0, 0H
L := pc;i
1005i .FIXUP D
1005i(8D000005): LDR SB, MT, MOD0 [ORG]
1006i(80D00018): LDR R0, SB, 18H [data]
1007i(81E00024): LDR R1, SP, 24H
1008i(A0100000): STR R0, R1, 0H
IF w.a > 0 THENj Put3(BC,k GT,l 0)m
1009j(80E0001C): LDR R0, SP, 1CH
100Aj(80000008): LDR R0, R0, 8H
100Bj(40090000): SUB R0, R0, 0H
100Cj(E6000005): BLE 5 [1012H]
100Dk(40000002): MOV R0, R0, 2H
100El(4100000E): MOV R1, R0, EH
100Fm(42000000): MOV R2, R0, 0H
ELSIFn wo.a < 0 THENp Put3(BC,q LT,r 0)s
1010n(F7FFF080): BL -3968 [0091H]
1011o(E7000011): B 17 [1023H]
1012p(80E0001C): LDR R0, SP, 1CH
1013p(80000008): LDR R0, R0, 8H
1014p(40090000): SUB R0, R0, 0H
1015p(ED000005): BGE 5 [101BH]
1016q(40000002): MOV R0, R0, 2H
1017r(41000005): MOV R1, R0, 5H
1018s(42000000): MOV R2, R0, 0H
ELSEt ORSu.Mark("zero increment")v;w Put3(BC,x MI,y 0)z
1019t(F7FFF077): BL -3977 [0091H]
101Au(E7000008): B 8 [1023H]
101Bv .FIXUP D
101Bv(8D000016): LDR SB, MT, MOD0 [ORG]
101Cv(40D88A38): ADD R0, SB, FFFF8A38H [data]
101Dv(4100000F): MOV R1, R0, FH
101Ew .FIXUP P
101Ew(F7209120): BL MOD2 [ORS] PROC9
101Fx(40000002): MOV R0, R0, 2H
1020y(41000000): MOV R1, R0, 0H
1021z(42000000): MOV R2, R0, 0H
ENDa ;
1022a(F7FFF06E): BL -3986 [0091H]
Store(x,b y)c
1023b(80E00004): LDR R0, SP, 4H
1024b(81E00008): LDR R1, SP, 8H
1025c(82E0000C): LDR R2, SP, CH
1026c(83E00010): LDR R3, SP, 10H
ENDd For1;
1027d(F7FFFD84): BL -636 [0DACH]
1028d(8FE00000): LDR LNK, SP, 0H
1029d(4EE80028): ADD SP, SP, 28H
102Ad(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
102Be .PROC 41
102Be(4EE9001C): SUB SP, SP, 1CH
102Ce(AFE00000): STR LNK, SP, 0H
102De(A0E00004): STR R0, SP, 4H
102Ee(A1E00008): STR R1, SP, 8H
102Fe(A2E0000C): STR R2, SP, CH
1030e(A3E00010): STR R3, SP, 10H
1031e(A4E00014): STR R4, SP, 14H
1032e(A5E00018): STR R5, SP, 18H
1033f(80E00004): LDR R0, SP, 4H
1034f(81E00008): LDR R1, SP, 8H
1035g(F7FFF19D): BL -3683 [01D3H]
1036h .FIXUP D
1036h(8D00001B): LDR SB, MT, MOD0 [ORG]
1037h(40D8002C): ADD R0, SB, 2CH [data]
1038h(81000000): LDR R1, R0, 0H
1039h(41190001): SUB R1, R1, 1H
103Ah(A1000000): STR R1, R0, 0H
103Bi(40000008): MOV R0, R0, 8H
103Cj(81E00004): LDR R1, SP, 4H
103Dj(81100010): LDR R1, R1, 10H
103Ek(82E00004): LDR R2, SP, 4H
103Fk(82200010): LDR R2, R2, 10H
1040l(83E00014): LDR R3, SP, 14H
1041l(83300008): LDR R3, R3, 8H
ENDm For2;
1042m(F7FFF001): BL -4095 [0044H]
1043m(8FE00000): LDR LNK, SP, 0H
1044m(4EE8001C): ADD SP, SP, 1CH
1045m(C700000F): B LNK
(* Branches, procedure calls, procedure prolog and epilog *)
PROCEDURE Here*(): LONGINT;
BEGINn invalSB;o RETURN pc
1046n .PROC 42
1046n(4EE90004): SUB SP, SP, 4H
1047n(AFE00000): STR LNK, SP, 0H
1048o(F7FFF0CB): BL -3893 [0114H]
ENDp Here;
1049p .FIXUP D
1049p(8D000013): LDR SB, MT, MOD0 [ORG]
104Ap(80D00018): LDR R0, SB, 18H [data]
104Bp(8FE00000): LDR LNK, SP, 0H
104Cp(4EE80004): ADD SP, SP, 4H
104Dp(C700000F): B LNK
PROCEDURE FJump*(VAR L: LONGINT);
BEGINq Put3(BC,r 7,s L)t;u L := pc-1
104Eq .PROC 43
104Eq(4EE90008): SUB SP, SP, 8H
104Fq(AFE00000): STR LNK, SP, 0H
1050q(A0E00004): STR R0, SP, 4H
1051r(40000002): MOV R0, R0, 2H
1052s(41000007): MOV R1, R0, 7H
1053t(82E00004): LDR R2, SP, 4H
1054t(82200000): LDR R2, R2, 0H
1055u(F7FFF03B): BL -4037 [0091H]
ENDv FJump;
1056v .FIXUP D
1056v(8D00000D): LDR SB, MT, MOD0 [ORG]
1057v(80D00018): LDR R0, SB, 18H [data]
1058v(40090001): SUB R0, R0, 1H
1059v(81E00004): LDR R1, SP, 4H
105Av(A0100000): STR R0, R1, 0H
105Bv(8FE00000): LDR LNK, SP, 0H
105Cv(4EE80008): ADD SP, SP, 8H
105Dv(C700000F): B LNK
PROCEDURE CFJump*(VAR x: Item);
BEGINw
105Ew .PROC 44
105Ew(4EE9000C): SUB SP, SP, CH
105Fw(AFE00000): STR LNK, SP, 0H
1060w(A0E00004): STR R0, SP, 4H
1061w(A1E00008): STR R1, SP, 8H
IF x.mode # Cond THENx loadCond(x)y ENDz ;
1062x(80E00004): LDR R0, SP, 4H
1063x(80000000): LDR R0, R0, 0H
1064x(4009000C): SUB R0, R0, CH
1065x(E1000003): BEQ 3 [1069H]
1066y(80E00004): LDR R0, SP, 4H
1067y(81E00008): LDR R1, SP, 8H
1068z(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
1069a(40000002): MOV R0, R0, 2H
106Ab(4EE90004): SUB SP, SP, 4H
106Bb(A0E00000): STR R0, SP, 0H
106Cc(80E00008): LDR R0, SP, 8H
106Dc(80000010): LDR R0, R0, 10H
106Ed(F7FFF094): BL -3948 [0103H]
106Fd(01000000): MOV R1, R0, R0
1070d(80E00000): LDR R0, SP, 0H
1071d(4EE80004): ADD SP, SP, 4H
1072e(82E00004): LDR R2, SP, 4H
1073e(82200008): LDR R2, R2, 8H
1074f(F7FFF01C): BL -4068 [0091H]
1075g(80E00004): LDR R0, SP, 4H
1076g(8000000C): LDR R0, R0, CH
1077h(F7FFF0BE): BL -3906 [0136H]
ENDi CFJump;
1078i .FIXUP D
1078i(8D000022): LDR SB, MT, MOD0 [ORG]
1079i(80D00018): LDR R0, SB, 18H [data]
107Ai(40090001): SUB R0, R0, 1H
107Bi(81E00004): LDR R1, SP, 4H
107Ci(A0100008): STR R0, R1, 8H
107Di(8FE00000): LDR LNK, SP, 0H
107Ei(4EE8000C): ADD SP, SP, CH
107Fi(C700000F): B LNK
PROCEDURE BJump*(L: LONGINT);
BEGINj Put3(BC,k 7,l L-pc-m1)n
1080j .PROC 45
1080j(4EE90008): SUB SP, SP, 8H
1081j(AFE00000): STR LNK, SP, 0H
1082j(A0E00004): STR R0, SP, 4H
1083k(40000002): MOV R0, R0, 2H
1084l(41000007): MOV R1, R0, 7H
1085m(82E00004): LDR R2, SP, 4H
1086m .FIXUP D
1086m(8D00000E): LDR SB, MT, MOD0 [ORG]
1087m(83D00018): LDR R3, SB, 18H [data]
1088m(02290003): SUB R2, R2, R3
1089n(42290001): SUB R2, R2, 1H
ENDo BJump;
108Ao(F7FFF006): BL -4090 [0091H]
108Bo(8FE00000): LDR LNK, SP, 0H
108Co(4EE80008): ADD SP, SP, 8H
108Do(C700000F): B LNK
PROCEDURE CBJump*(VAR x: Item; L: LONGINT);
BEGINp
108Ep .PROC 46
108Ep(4EE90010): SUB SP, SP, 10H
108Fp(AFE00000): STR LNK, SP, 0H
1090p(A0E00004): STR R0, SP, 4H
1091p(A1E00008): STR R1, SP, 8H
1092p(A2E0000C): STR R2, SP, CH
IF x.mode # Cond THENq loadCond(x)r ENDs ;
1093q(80E00004): LDR R0, SP, 4H
1094q(80000000): LDR R0, R0, 0H
1095q(4009000C): SUB R0, R0, CH
1096q(E1000003): BEQ 3 [109AH]
1097r(80E00004): LDR R0, SP, 4H
1098r(81E00008): LDR R1, SP, 8H
1099s(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
109At(40000002): MOV R0, R0, 2H
109Bu(4EE90004): SUB SP, SP, 4H
109Cu(A0E00000): STR R0, SP, 0H
109Dv(80E00008): LDR R0, SP, 8H
109Ev(80000010): LDR R0, R0, 10H
109Fw(F7FFF063): BL -3997 [0103H]
10A0w(01000000): MOV R1, R0, R0
10A1w(80E00000): LDR R0, SP, 0H
10A2w(4EE80004): ADD SP, SP, 4H
10A3x(82E0000C): LDR R2, SP, CH
10A4x .FIXUP D
10A4x(8D00001E): LDR SB, MT, MOD0 [ORG]
10A5x(83D00018): LDR R3, SB, 18H [data]
10A6x(02290003): SUB R2, R2, R3
10A7y(42290001): SUB R2, R2, 1H
10A8z(F7FFEFE8): BL -4120 [0091H]
10A9a(80E00004): LDR R0, SP, 4H
10AAa(8000000C): LDR R0, R0, CH
10ABb(F7FFF08A): BL -3958 [0136H]
10ACc(80E00004): LDR R0, SP, 4H
10ADc(80000008): LDR R0, R0, 8H
10AEd(81E0000C): LDR R1, SP, CH
ENDe CBJump;
10AFe(F7FFF0A2): BL -3934 [0152H]
10B0e(8FE00000): LDR LNK, SP, 0H
10B1e(4EE80010): ADD SP, SP, 10H
10B2e(C700000F): B LNK
PROCEDURE Fixup*(VAR x: Item);
BEGINf FixLink(x.a)g
10B3f .PROC 47
10B3f(4EE9000C): SUB SP, SP, CH
10B4f(AFE00000): STR LNK, SP, 0H
10B5f(A0E00004): STR R0, SP, 4H
10B6f(A1E00008): STR R1, SP, 8H
10B7g(80E00004): LDR R0, SP, 4H
10B8g(80000008): LDR R0, R0, 8H
ENDh Fixup;
10B9h(F7FFF07C): BL -3972 [0136H]
10BAh(8FE00000): LDR LNK, SP, 0H
10BBh(4EE8000C): ADD SP, SP, CH
10BCh(C700000F): B LNK
PROCEDURE SaveRegs(r: LONGINT); (* R[0 .. r-1]*)
VAR r0: LONGINT;
BEGINi (*r > 0*) r0 := 0;j
10BDi(4EE9000C): SUB SP, SP, CH
10BEi(AFE00000): STR LNK, SP, 0H
10BFi(A0E00004): STR R0, SP, 4H
10C0j(40000000): MOV R0, R0, 0H
10C1j(A0E00008): STR R0, SP, 8H
Put1(Sub,k SP,l SP,m r*4)n;o INC(frame, 4*r)p;q
10C2k(40000009): MOV R0, R0, 9H
10C3l(4100000E): MOV R1, R0, EH
10C4m(4200000E): MOV R2, R0, EH
10C5n(83E00004): LDR R3, SP, 4H
10C6n(43310002): LSL R3, R3, 2H
10C7o(F7FFEF56): BL -4266 [001EH]
10C8p(80E00004): LDR R0, SP, 4H
10C9p(40010002): LSL R0, R0, 2H
10CAq .FIXUP D
10CAq(8D000026): LDR SB, MT, MOD0 [ORG]
10CBq(41D80034): ADD R1, SB, 34H [data]
10CCq(82100000): LDR R2, R1, 0H
10CDq(02280000): ADD R2, R2, R0
10CEq(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
10CFr(4000000A): MOV R0, R0, AH
10D0s(81E00008): LDR R1, SP, 8H
10D1t(4200000E): MOV R2, R0, EH
10D2u(83E00004): LDR R3, SP, 4H
10D3u(84E00008): LDR R4, SP, 8H
10D4u(03390004): SUB R3, R3, R4
10D5v(43390001): SUB R3, R3, 1H
10D6w(43310002): LSL R3, R3, 2H
10D7x(F7FFEF99): BL -4199 [0071H]
10D8y(80E00008): LDR R0, SP, 8H
10D9y(40080001): ADD R0, R0, 1H
10DAy(A0E00008): STR R0, SP, 8H
ENDz SaveRegs;
10DBz(80E00008): LDR R0, SP, 8H
10DCz(81E00004): LDR R1, SP, 4H
10DDz(00090001): SUB R0, R0, R1
10DEz(E9FFFFF0): BNE -16 [10CFH]
10DFz(8FE00000): LDR LNK, SP, 0H
10E0z(4EE8000C): ADD SP, SP, CH
10E1z(C700000F): B LNK
PROCEDURE RestoreRegs(r: LONGINT); (*R[0 .. r-1]*)
VAR r0: LONGINT;
BEGINa (*r > 0*) r0 := r;b
10E2a(4EE9000C): SUB SP, SP, CH
10E3a(AFE00000): STR LNK, SP, 0H
10E4a(A0E00004): STR R0, SP, 4H
10E5b(80E00004): LDR R0, SP, 4H
10E6b(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
10E7c(80E00008): LDR R0, SP, 8H
10E8c(40090001): SUB R0, R0, 1H
10E9c(A0E00008): STR R0, SP, 8H
10EAd(40000008): MOV R0, R0, 8H
10EBe(81E00008): LDR R1, SP, 8H
10ECf(4200000E): MOV R2, R0, EH
10EDg(83E00004): LDR R3, SP, 4H
10EEg(84E00008): LDR R4, SP, 8H
10EFg(03390004): SUB R3, R3, R4
10F0h(43390001): SUB R3, R3, 1H
10F1i(43310002): LSL R3, R3, 2H
10F2j(F7FFEF7E): BL -4226 [0071H]
10F3k(80E00008): LDR R0, SP, 8H
10F4k(E9FFFFF2): BNE -14 [10E7H]
Put1(Add,l SP,m SP,n r*4)o;p DEC(frame, 4*r)q
10F5l(40000008): MOV R0, R0, 8H
10F6m(4100000E): MOV R1, R0, EH
10F7n(4200000E): MOV R2, R0, EH
10F8o(83E00004): LDR R3, SP, 4H
10F9o(43310002): LSL R3, R3, 2H
10FAp(F7FFEF23): BL -4317 [001EH]
10FBq(80E00004): LDR R0, SP, 4H
10FCq(40010002): LSL R0, R0, 2H
ENDr RestoreRegs;
10FDr .FIXUP D
10FDr(8D000033): LDR SB, MT, MOD0 [ORG]
10FEr(41D80034): ADD R1, SB, 34H [data]
10FFr(82100000): LDR R2, R1, 0H
1100r(02290000): SUB R2, R2, R0
1101r(A2100000): STR R2, R1, 0H
1102r(8FE00000): LDR LNK, SP, 0H
1103r(4EE8000C): ADD SP, SP, CH
1104r(C700000F): B LNK
PROCEDURE PrepCall*(VAR x: Item; VAR r: LONGINT);
BEGINs (*x.type.form = ORB.Proc*)
1105s .PROC 48
1105s(4EE90010): SUB SP, SP, 10H
1106s(AFE00000): STR LNK, SP, 0H
1107s(A0E00004): STR R0, SP, 4H
1108s(A1E00008): STR R1, SP, 8H
1109s(A2E0000C): STR R2, SP, CH
IF x.mode > ORB.Par THENt load(x)u ENDv ;
110At(80E00004): LDR R0, SP, 4H
110Bt(80000000): LDR R0, R0, 0H
110Ct(40090003): SUB R0, R0, 3H
110Dt(E6000003): BLE 3 [1111H]
110Eu(80E00004): LDR R0, SP, 4H
110Fu(81E00008): LDR R1, SP, 8H
1110v(F7FFF0C2): BL -3902 [01D3H]
r := RH;w
1111w .FIXUP D
1111w(8D000014): LDR SB, MT, MOD0 [ORG]
1112w(80D0002C): LDR R0, SB, 2CH [data]
1113w(81E0000C): LDR R1, SP, CH
1114w(A0100000): STR R0, R1, 0H
IF RH > 0 THENx SaveRegs(RH)y;z RH := 0 ENDa
1115x(80D0002C): LDR R0, SB, 2CH
1116x(40090000): SUB R0, R0, 0H
1117x(E6000006): BLE 6 [111EH]
1118y .FIXUP D
1118y(8D000007): LDR SB, MT, MOD0 [ORG]
1119y(80D0002C): LDR R0, SB, 2CH [data]
111Az(F7FFFFA2): BL -94 [10BDH]
111Ba(40000000): MOV R0, R0, 0H
111Ca .FIXUP D
111Ca(8D000004): LDR SB, MT, MOD0 [ORG]
111Da(A0D0002C): STR R0, SB, 2CH [data]
ENDb PrepCall;
111Eb(8FE00000): LDR LNK, SP, 0H
111Fb(4EE80010): ADD SP, SP, 10H
1120b(C700000F): B LNK
PROCEDURE Call*(VAR x: Item; r: LONGINT);
BEGINc (*x.type.form = ORB.Proc*)
1121c .PROC 49
1121c(4EE90010): SUB SP, SP, 10H
1122c(AFE00000): STR LNK, SP, 0H
1123c(A0E00004): STR R0, SP, 4H
1124c(A1E00008): STR R1, SP, 8H
1125c(A2E0000C): STR R2, SP, CH
IF x.mode = ORB.Const THENd
1126d(80E00004): LDR R0, SP, 4H
1127d(80000000): LDR R0, R0, 0H
1128d(40090001): SUB R0, R0, 1H
1129d(E9000030): BNE 48 [115AH]
IF x.r >= 0 THENe Put3(BL,f 7,g (x.a DIV 4)h-pc-i1)j
112Ae(80E00004): LDR R0, SP, 4H
112Be(80000010): LDR R0, R0, 10H
112Ce(40090000): SUB R0, R0, 0H
112De(E500000B): BLT 11 [1139H]
112Ef(40000003): MOV R0, R0, 3H
112Fg(41000007): MOV R1, R0, 7H
1130h(82E00004): LDR R2, SP, 4H
1131h(82200008): LDR R2, R2, 8H
1132h(42220002): ASR R2, R2, 2H
1133i .FIXUP D
1133i(8D000017): LDR SB, MT, MOD0 [ORG]
1134i(83D00018): LDR R3, SB, 18H [data]
1135i(02290003): SUB R2, R2, R3
1136j(42290001): SUB R2, R2, 1H
ELSEk (*imported*)
1137k(F7FFEF59): BL -4263 [0091H]
IFl pc - fixorgP <m 1000H THENn
1138l(E7000020): B 32 [1159H]
1139m .FIXUP D
1139m(8D000006): LDR SB, MT, MOD0 [ORG]
113Am(80D00018): LDR R0, SB, 18H [data]
113Bm(81D00038): LDR R1, SB, 38H
113Cm(00090001): SUB R0, R0, R1
113Dn(40091000): SUB R0, R0, 1000H
113En(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
113Fo(40000003): MOV R0, R0, 3H
1140p(41000007): MOV R1, R0, 7H
1141q(82E00004): LDR R2, SP, 4H
1142q(82200010): LDR R2, R2, 10H
1143q(43000000): MOV R3, R0, 0H
1144q(02390002): SUB R2, R3, R2
1145r(42210008): LSL R2, R2, 8H
1146s(83E00004): LDR R3, SP, 4H
1147s(83300008): LDR R3, R3, 8H
1148s(02280003): ADD R2, R2, R3
1149t(4221000C): LSL R2, R2, CH
114Au .FIXUP D
114Au(8D000011): LDR SB, MT, MOD0 [ORG]
114Bu(83D00018): LDR R3, SB, 18H [data]
114Cu(02280003): ADD R2, R2, R3
114Dv(83D00038): LDR R3, SB, 38H
114Ev(02290003): SUB R2, R2, R3
114Fw(F7FFEF41): BL -4287 [0091H]
ELSEx ORSy.Mark("fixup impossible")z
1150x .FIXUP D
1150x(8D000006): LDR SB, MT, MOD0 [ORG]
1151x(80D00018): LDR R0, SB, 18H [data]
1152x(40090001): SUB R0, R0, 1H
1153x(A0D00038): STR R0, SB, 38H
1154y(E7000004): B 4 [1159H]
1155z .FIXUP D
1155z(8D000005): LDR SB, MT, MOD0 [ORG]
1156z(40D88A48): ADD R0, SB, FFFF8A48H [data]
1157z(41000011): MOV R1, R0, 11H
ENDa
1158a .FIXUP P
1158a(F720913A): BL MOD2 [ORS] PROC9
END
ELSE
IFb x.mode <= ORB.Par THENc load(x)d;e DEC(RH)
1159b(E700002B): B 43 [1185H]
115Ac(80E00004): LDR R0, SP, 4H
115Bc(80000000): LDR R0, R0, 0H
115Cc(40090003): SUB R0, R0, 3H
115Dc(EE000009): BGT 9 [1167H]
115Ed(80E00004): LDR R0, SP, 4H
115Fd(81E00008): LDR R1, SP, 8H
1160e(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)
1161f .FIXUP D
1161f(8D00000C): LDR SB, MT, MOD0 [ORG]
1162f(40D8002C): ADD R0, SB, 2CH [data]
1163f(81000000): LDR R1, R0, 0H
1164f(41190001): SUB R1, R1, 1H
1165f(A1000000): STR R1, R0, 0H
1166g(E7000013): B 19 [117AH]
1167h(40000008): MOV R0, R0, 8H
1168i .FIXUP D
1168i(8D000007): LDR SB, MT, MOD0 [ORG]
1169i(81D0002C): LDR R1, SB, 2CH [data]
116Aj(4200000E): MOV R2, R0, EH
116Bk(43000000): MOV R3, R0, 0H
116Cl(F7FFEF04): BL -4348 [0071H]
116Dm(40000008): MOV R0, R0, 8H
116En(4100000E): MOV R1, R0, EH
116Fo(4200000E): MOV R2, R0, EH
1170p(43000004): MOV R3, R0, 4H
1171q(F7FFEEAC): BL -4436 [001EH]
1172r(80E0000C): LDR R0, SP, CH
1173r(40090001): SUB R0, R0, 1H
1174r(A0E0000C): STR R0, SP, CH
ENDs ;
1175s .FIXUP D
1175s(8D00000D): LDR SB, MT, MOD0 [ORG]
1176s(40D80034): ADD R0, SB, 34H [data]
1177s(81000000): LDR R1, R0, 0H
1178s(41190004): SUB R1, R1, 4H
1179s(A1000000): STR R1, R0, 0H
IF check THENt Trap(EQ,u 5)v ENDw ;
117At .FIXUP D
117At(8D000005): LDR SB, MT, MOD0 [ORG]
117Bt(90D00044): LDR R0, SB, 44H [data]
117Ct(E1000003): BEQ 3 [1180H]
117Du(40000001): MOV R0, R0, 1H
117Ev(41000005): MOV R1, R0, 5H
117Fw(F7FFEF6C): BL -4244 [00ECH]
Put3(BLR,x 7,y RH)z
1180x(40000001): MOV R0, R0, 1H
1181y(41000007): MOV R1, R0, 7H
1182z .FIXUP D
1182z(8D000008): LDR SB, MT, MOD0 [ORG]
1183z(82D0002C): LDR R2, SB, 2CH [data]
ENDa ;
1184a(F7FFEF0C): BL -4340 [0091H]
IF x.type.baseb.formc = ORB.NoTyp THENd (*procedure*) RH := 0
1185b(80E00004): LDR R0, SP, 4H
1186b(80000004): LDR R0, R0, 4H
1187b(D16B864C): BLEQ MT [trap=4, pos=27526]
1188c(8000001C): LDR R0, R0, 1CH
1189c(D16B8B4C): BLEQ MT [trap=4, pos=27531]
118Ad(80000000): LDR R0, R0, 0H
118Bd(40090009): SUB R0, R0, 9H
118Cd(E9000004): BNE 4 [1191H]
ELSEe (*function*)
118De(40000000): MOV R0, R0, 0H
118Ee .FIXUP D
118Ee(8D00000C): LDR SB, MT, MOD0 [ORG]
118Fe(A0D0002C): STR R0, SB, 2CH [data]
IFf r > 0 THENg Put0(Mov,h r,i 0,j 0)k;l RestoreRegs(r)m ENDn ;
1190f(E7000014): B 20 [11A5H]
1191g(80E0000C): LDR R0, SP, CH
1192g(40090000): SUB R0, R0, 0H
1193g(E6000007): BLE 7 [119BH]
1194h(40000000): MOV R0, R0, 0H
1195i(81E0000C): LDR R1, SP, CH
1196j(42000000): MOV R2, R0, 0H
1197k(43000000): MOV R3, R0, 0H
1198l(F7FFEE67): BL -4505 [0000H]
1199m(80E0000C): LDR R0, SP, CH
119An(F7FFFF47): BL -185 [10E2H]
x.mode := Reg;o x.r := r;p RH := r+1
119Bo(4000000A): MOV R0, R0, AH
119Co(81E00004): LDR R1, SP, 4H
119Do(A0100000): STR R0, R1, 0H
119Ep(80E0000C): LDR R0, SP, CH
119Fp(81E00004): LDR R1, SP, 4H
11A0p(A0100010): STR R0, R1, 10H
ENDq ;
11A1q(80E0000C): LDR R0, SP, CH
11A2q(40080001): ADD R0, R0, 1H
11A3q .FIXUP D
11A3q(8D000015): LDR SB, MT, MOD0 [ORG]
11A4q(A0D0002C): STR R0, SB, 2CH [data]
invalSB
ENDr Call;
11A5r(F7FFEF6E): BL -4242 [0114H]
11A6r(8FE00000): LDR LNK, SP, 0H
11A7r(4EE80010): ADD SP, SP, 10H
11A8r(C700000F): B LNK
PROCEDURE Enter*(parblksize, locblksize: LONGINT; int: BOOLEAN);
VAR a, r: LONGINT;
BEGINs invalSB;t frame := 0;u
11A9s .PROC 50
11A9s(4EE90018): SUB SP, SP, 18H
11AAs(AFE00000): STR LNK, SP, 0H
11ABs(A0E00004): STR R0, SP, 4H
11ACs(A1E00008): STR R1, SP, 8H
11ADs(A2E0000C): STR R2, SP, CH
11AEt(F7FFEF65): BL -4251 [0114H]
11AFu(40000000): MOV R0, R0, 0H
11B0u .FIXUP D
11B0u(8D00000D): LDR SB, MT, MOD0 [ORG]
11B1u(A0D00034): STR R0, SB, 34H [data]
IF ~int THENv (*procedure prolog*)
11B2v(90E0000C): LDR R0, SP, CH
11B3v(E9000027): BNE 39 [11DBH]
IF locblksize >= 10000H THENw ORS.Mark("too many locals")x ENDy ;
11B4w(80E00008): LDR R0, SP, 8H
11B5w(61000001): MOV' R1, R0, 1H
11B6w(00090001): SUB R0, R0, R1
11B7w(E5000004): BLT 4 [11BCH]
11B8x .FIXUP D
11B8x(8D000008): LDR SB, MT, MOD0 [ORG]
11B9x(40D88A5C): ADD R0, SB, FFFF8A5CH [data]
11BAx(41000010): MOV R1, R0, 10H
11BBy .FIXUP P
11BBy(F7209063): BL MOD2 [ORS] PROC9
a := 4;z r := 0;a
11BCz(40000004): MOV R0, R0, 4H
11BDz(A0E00010): STR R0, SP, 10H
11BEa(40000000): MOV R0, R0, 0H
11BFa(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
11C0b(40000009): MOV R0, R0, 9H
11C1c(4100000E): MOV R1, R0, EH
11C2d(4200000E): MOV R2, R0, EH
11C3e(83E00008): LDR R3, SP, 8H
11C4f(F7FFEE59): BL -4519 [001EH]
11C5g(4000000A): MOV R0, R0, AH
11C6h(4100000F): MOV R1, R0, FH
11C7i(4200000E): MOV R2, R0, EH
11C8j(43000000): MOV R3, R0, 0H
11C9k(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
11CAl(80E00010): LDR R0, SP, 10H
11CBl(81E00004): LDR R1, SP, 4H
11CCl(00090001): SUB R0, R0, R1
11CDl(ED00000C): BGE 12 [11DAH]
11CEm(4000000A): MOV R0, R0, AH
11CFn(81E00014): LDR R1, SP, 14H
11D0o(4200000E): MOV R2, R0, EH
11D1p(83E00010): LDR R3, SP, 10H
11D2q(F7FFEE9E): BL -4450 [0071H]
11D3r(80E00014): LDR R0, SP, 14H
11D4r(40080001): ADD R0, R0, 1H
11D5r(A0E00014): STR R0, SP, 14H
11D6s(80E00010): LDR R0, SP, 10H
11D7s(40080004): ADD R0, R0, 4H
11D8s(A0E00010): STR R0, SP, 10H
11D9s(E7FFFFF0): B -16 [11CAH]
ELSE (*interrupt procedure*)
IFt locblksize > 0H THENu ORS.Mark("locals not allowed")v ENDw ;
11DAt(E700001B): B 27 [11F6H]
11DBu(80E00008): LDR R0, SP, 8H
11DCu(40090000): SUB R0, R0, 0H
11DDu(E6000004): BLE 4 [11E2H]
11DEv .FIXUP D
11DEv(8D000026): LDR SB, MT, MOD0 [ORG]
11DFv(40D88A6C): ADD R0, SB, FFFF8A6CH [data]
11E0v(41000013): MOV R1, R0, 13H
11E1w .FIXUP P
11E1w(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
11E2x(40000009): MOV R0, R0, 9H
11E3y(4100000E): MOV R1, R0, EH
11E4z(4200000E): MOV R2, R0, EH
11E5a(4300000C): MOV R3, R0, CH
11E6b(F7FFEE37): BL -4553 [001EH]
11E7c(4000000A): MOV R0, R0, AH
11E8d(41000000): MOV R1, R0, 0H
11E9e(4200000E): MOV R2, R0, EH
11EAf(43000000): MOV R3, R0, 0H
11EBg(F7FFEE85): BL -4475 [0071H]
11ECh(4000000A): MOV R0, R0, AH
11EDi(41000001): MOV R1, R0, 1H
11EEj(4200000E): MOV R2, R0, EH
11EFk(43000004): MOV R3, R0, 4H
11F0l(F7FFEE80): BL -4480 [0071H]
11F1m(4000000A): MOV R0, R0, AH
11F2n(4100000D): MOV R1, R0, DH
11F3o(4200000E): MOV R2, R0, EH
11F4p(43000008): MOV R3, R0, 8H
(*R0, R1, SB saved on stack*)
ENDq
11F5q(F7FFEE7B): BL -4485 [0071H]
ENDr Enter;
11F6r(8FE00000): LDR LNK, SP, 0H
11F7r(4EE80018): ADD SP, SP, 18H
11F8r(C700000F): B LNK
PROCEDURE Return*(form: INTEGER; VAR x: Item; size: LONGINT; int: BOOLEAN);
BEGINs
11F9s .PROC 51
11F9s(4EE90018): SUB SP, SP, 18H
11FAs(AFE00000): STR LNK, SP, 0H
11FBs(A0E00004): STR R0, SP, 4H
11FCs(A1E00008): STR R1, SP, 8H
11FDs(A2E0000C): STR R2, SP, CH
11FEs(A3E00010): STR R3, SP, 10H
11FFs(A4E00014): STR R4, SP, 14H
IF form # ORB.NoTyp THENt load(x)u ENDv ;
1200t(80E00004): LDR R0, SP, 4H
1201t(40090009): SUB R0, R0, 9H
1202t(E1000003): BEQ 3 [1206H]
1203u(80E00008): LDR R0, SP, 8H
1204u(81E0000C): LDR R1, SP, CH
1205v(F7FFEFCD): BL -4147 [01D3H]
IF ~int THENw (*procedure epilog*)
1206w(90E00014): LDR R0, SP, 14H
1207w(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
1208x(40000008): MOV R0, R0, 8H
1209y(4100000F): MOV R1, R0, FH
120Az(4200000E): MOV R2, R0, EH
120Ba(43000000): MOV R3, R0, 0H
120Cb(F7FFEE64): BL -4508 [0071H]
120Dc(40000008): MOV R0, R0, 8H
120Ed(4100000E): MOV R1, R0, EH
120Fe(4200000E): MOV R2, R0, EH
1210f(83E00010): LDR R3, SP, 10H
1211g(F7FFEE0C): BL -4596 [001EH]
1212h(40000000): MOV R0, R0, 0H
1213i(41000007): MOV R1, R0, 7H
1214j(4200000F): MOV R2, R0, FH
ELSEk (*interrupt return, restore SB, R1, R0*)
1215k(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
1216l(E7000018): B 24 [122FH]
1217m(40000008): MOV R0, R0, 8H
1218n(4100000D): MOV R1, R0, DH
1219o(4200000E): MOV R2, R0, EH
121Ap(43000008): MOV R3, R0, 8H
121Bq(F7FFEE55): BL -4523 [0071H]
121Cr(40000008): MOV R0, R0, 8H
121Ds(41000001): MOV R1, R0, 1H
121Et(4200000E): MOV R2, R0, EH
121Fu(43000004): MOV R3, R0, 4H
1220v(F7FFEE50): BL -4528 [0071H]
1221w(40000008): MOV R0, R0, 8H
1222x(41000000): MOV R1, R0, 0H
1223y(4200000E): MOV R2, R0, EH
1224z(43000000): MOV R3, R0, 0H
1225a(F7FFEE4B): BL -4533 [0071H]
1226b(40000008): MOV R0, R0, 8H
1227c(4100000E): MOV R1, R0, EH
1228d(4200000E): MOV R2, R0, EH
1229e(4300000C): MOV R3, R0, CH
122Af(F7FFEDF3): BL -4621 [001EH]
122Bg(40000000): MOV R0, R0, 0H
122Ch(41000007): MOV R1, R0, 7H
122Di(42000010): MOV R2, R0, 10H
ENDj ;
122Ej(F7FFEE62): BL -4510 [0091H]
RH := 0
ENDk Return;
122Fk(40000000): MOV R0, R0, 0H
1230k .FIXUP D
1230k(8D000052): LDR SB, MT, MOD0 [ORG]
1231k(A0D0002C): STR R0, SB, 2CH [data]
1232k(8FE00000): LDR LNK, SP, 0H
1233k(4EE80018): ADD SP, SP, 18H
1234k(C700000F): B LNK
(* In-line code procedures*)
PROCEDURE Increment*(upordown: LONGINT; VAR x, y: Item);
VAR op, zr, v: LONGINT;
BEGINl (*frame = 0*)
1235l .PROC 52
1235l(4EE90024): SUB SP, SP, 24H
1236l(AFE00000): STR LNK, SP, 0H
1237l(A0E00004): STR R0, SP, 4H
1238l(A1E00008): STR R1, SP, 8H
1239l(A2E0000C): STR R2, SP, CH
123Al(A3E00010): STR R3, SP, 10H
123Bl(A4E00014): STR R4, SP, 14H
IF upordown = 0 THENm op := Add ELSEn opo := Sub ENDp ;
123Cm(80E00004): LDR R0, SP, 4H
123Dm(E9000003): BNE 3 [1241H]
123En(40000008): MOV R0, R0, 8H
123Fn(A0E00018): STR R0, SP, 18H
1240o(E7000002): B 2 [1243H]
1241p(40000009): MOV R0, R0, 9H
1242p(A0E00018): STR R0, SP, 18H
IF x.type = ORB.byteType THENq v := 1 ELSEr vs := 0 ENDt ;
1243q(80E00008): LDR R0, SP, 8H
1244q(80000004): LDR R0, R0, 4H
1245q .FIXUP D
1245q(8D400015): LDR SB, MT, MOD4 [ORB]
1246q(81D00006): LDR R1, SB, VAR6
1247q(00090001): SUB R0, R0, R1
1248q(E9000003): BNE 3 [124CH]
1249r(40000001): MOV R0, R0, 1H
124Ar(A0E00020): STR R0, SP, 20H
124Bs(E7000002): B 2 [124EH]
124Ct(40000000): MOV R0, R0, 0H
124Dt(A0E00020): STR R0, SP, 20H
IF y.type.formu = ORB.NoTyp THENv y.mode := ORB.Const;w y.a := 1 ENDx ;
124Eu(80E00010): LDR R0, SP, 10H
124Fu(80000004): LDR R0, R0, 4H
1250u(D1718E4C): BLEQ MT [trap=4, pos=29070]
1251v(80000000): LDR R0, R0, 0H
1252v(40090009): SUB R0, R0, 9H
1253v(E9000006): BNE 6 [125AH]
1254w(40000001): MOV R0, R0, 1H
1255w(81E00010): LDR R1, SP, 10H
1256w(A0100000): STR R0, R1, 0H
1257x(40000001): MOV R0, R0, 1H
1258x(81E00010): LDR R1, SP, 10H
1259x(A0100008): STR R0, R1, 8H
IF (x.mode = ORB.Var)y & (zx.r > 0)a THENb
125Ay(80E00008): LDR R0, SP, 8H
125By(80000000): LDR R0, R0, 0H
125Cy(40090002): SUB R0, R0, 2H
125Dz(E9000037): BNE 55 [1295H]
125Ea(80E00008): LDR R0, SP, 8H
125Fa(80000010): LDR R0, R0, 10H
1260a(40090000): SUB R0, R0, 0H
1261b(E6000033): BLE 51 [1295H]
zr := RH;c Put2(Ldr+v,d zr,e SP,f x.a)g;h incR;i
1262c .FIXUP D
1262c(8D00001D): LDR SB, MT, MOD0 [ORG]
1263c(80D0002C): LDR R0, SB, 2CH [data]
1264c(A0E0001C): STR R0, SP, 1CH
1265d(40000008): MOV R0, R0, 8H
1266d(81E00020): LDR R1, SP, 20H
1267d(00080001): ADD R0, R0, R1
1268e(81E0001C): LDR R1, SP, 1CH
1269f(4200000E): MOV R2, R0, EH
126Ag(83E00008): LDR R3, SP, 8H
126Bg(83300008): LDR R3, R3, 8H
126Ch(F7FFEE04): BL -4604 [0071H]
126Di(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 ;
126Ej(80E00010): LDR R0, SP, 10H
126Fj(80000000): LDR R0, R0, 0H
1270j(40090001): SUB R0, R0, 1H
1271j(E9000007): BNE 7 [1279H]
1272k(80E00018): LDR R0, SP, 18H
1273l(81E0001C): LDR R1, SP, 1CH
1274m(82E0001C): LDR R2, SP, 1CH
1275n(83E00010): LDR R3, SP, 10H
1276n(83300008): LDR R3, R3, 8H
1277o(F7FFEDCC): BL -4660 [0044H]
1278p(E700000E): B 14 [1287H]
1279q(80E00010): LDR R0, SP, 10H
127Aq(81E00014): LDR R1, SP, 14H
127Br(F7FFEF57): BL -4265 [01D3H]
127Cs(80E00018): LDR R0, SP, 18H
127Dt(81E0001C): LDR R1, SP, 1CH
127Eu(82E0001C): LDR R2, SP, 1CH
127Fv(83E00010): LDR R3, SP, 10H
1280v(83300010): LDR R3, R3, 10H
1281w(F7FFED7E): BL -4738 [0000H]
1282x .FIXUP D
1282x(8D000020): LDR SB, MT, MOD0 [ORG]
1283x(40D8002C): ADD R0, SB, 2CH [data]
1284x(81000000): LDR R1, R0, 0H
1285x(41190001): SUB R1, R1, 1H
1286x(A1000000): STR R1, R0, 0H
Put2(Str+v,y zr,z SP,a x.a)b;c DEC(RH)
1287y(4000000A): MOV R0, R0, AH
1288y(81E00020): LDR R1, SP, 20H
1289y(00080001): ADD R0, R0, R1
128Az(81E0001C): LDR R1, SP, 1CH
128Ba(4200000E): MOV R2, R0, EH
128Cb(83E00008): LDR R3, SP, 8H
128Db(83300008): LDR R3, R3, 8H
128Ec(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
128Fd .FIXUP D
128Fd(8D00000D): LDR SB, MT, MOD0 [ORG]
1290d(40D8002C): ADD R0, SB, 2CH [data]
1291d(81000000): LDR R1, R0, 0H
1292d(41190001): SUB R1, R1, 1H
1293d(A1000000): STR R1, R0, 0H
1294e(E7000035): B 53 [12CAH]
1295f(80E00008): LDR R0, SP, 8H
1296f(81E0000C): LDR R1, SP, CH
1297g(F7FFF024): BL -4060 [02BCH]
1298h .FIXUP D
1298h(8D000009): LDR SB, MT, MOD0 [ORG]
1299h(80D0002C): LDR R0, SB, 2CH [data]
129Ah(A0E0001C): STR R0, SP, 1CH
129Bi(40000008): MOV R0, R0, 8H
129Ci(81E00020): LDR R1, SP, 20H
129Di(00080001): ADD R0, R0, R1
129Ej(81D0002C): LDR R1, SB, 2CH
129Fk(82E00008): LDR R2, SP, 8H
12A0k(82200010): LDR R2, R2, 10H
12A1l(43000000): MOV R3, R0, 0H
12A2m(F7FFEDCE): BL -4658 [0071H]
12A3n(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 ;
12A4o(80E00010): LDR R0, SP, 10H
12A5o(80000000): LDR R0, R0, 0H
12A6o(40090001): SUB R0, R0, 1H
12A7o(E9000007): BNE 7 [12AFH]
12A8p(80E00018): LDR R0, SP, 18H
12A9q(81E0001C): LDR R1, SP, 1CH
12AAr(82E0001C): LDR R2, SP, 1CH
12ABs(83E00010): LDR R3, SP, 10H
12ACs(83300008): LDR R3, R3, 8H
12ADt(F7FFED96): BL -4714 [0044H]
12AEu(E700000E): B 14 [12BDH]
12AFv(80E00010): LDR R0, SP, 10H
12B0v(81E00014): LDR R1, SP, 14H
12B1w(F7FFEF21): BL -4319 [01D3H]
12B2x(80E00018): LDR R0, SP, 18H
12B3y(81E0001C): LDR R1, SP, 1CH
12B4z(82E0001C): LDR R2, SP, 1CH
12B5a(83E00010): LDR R3, SP, 10H
12B6a(83300010): LDR R3, R3, 10H
12B7b(F7FFED48): BL -4792 [0000H]
12B8c .FIXUP D
12B8c(8D000020): LDR SB, MT, MOD0 [ORG]
12B9c(40D8002C): ADD R0, SB, 2CH [data]
12BAc(81000000): LDR R1, R0, 0H
12BBc(41190001): SUB R1, R1, 1H
12BCc(A1000000): STR R1, R0, 0H
Put2(Str+v,d zr,e x.r,f 0)g;h DEC(RH, 2)
12BDd(4000000A): MOV R0, R0, AH
12BEd(81E00020): LDR R1, SP, 20H
12BFd(00080001): ADD R0, R0, R1
12C0e(81E0001C): LDR R1, SP, 1CH
12C1f(82E00008): LDR R2, SP, 8H
12C2f(82200010): LDR R2, R2, 10H
12C3g(43000000): MOV R3, R0, 0H
12C4h(F7FFEDAC): BL -4692 [0071H]
ENDi
12C5i .FIXUP D
12C5i(8D00000D): LDR SB, MT, MOD0 [ORG]
12C6i(40D8002C): ADD R0, SB, 2CH [data]
12C7i(81000000): LDR R1, R0, 0H
12C8i(41190002): SUB R1, R1, 2H
12C9i(A1000000): STR R1, R0, 0H
ENDj Increment;
12CAj(8FE00000): LDR LNK, SP, 0H
12CBj(4EE80024): ADD SP, SP, 24H
12CCj(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
12CDk .PROC 53
12CDk(4EE90020): SUB SP, SP, 20H
12CEk(AFE00000): STR LNK, SP, 0H
12CFk(A0E00004): STR R0, SP, 4H
12D0k(A1E00008): STR R1, SP, 8H
12D1k(A2E0000C): STR R2, SP, CH
12D2k(A3E00010): STR R3, SP, 10H
12D3k(A4E00014): STR R4, SP, 14H
12D4l(80E00008): LDR R0, SP, 8H
12D5l(81E0000C): LDR R1, SP, CH
12D6m(F7FFEFE5): BL -4123 [02BCH]
12D7n .FIXUP D
12D7n(8D000012): LDR SB, MT, MOD0 [ORG]
12D8n(80D0002C): LDR R0, SB, 2CH [data]
12D9n(A0E0001C): STR R0, SP, 1CH
12DAo(40000008): MOV R0, R0, 8H
12DBp(81D0002C): LDR R1, SB, 2CH
12DCq(82E00008): LDR R2, SP, 8H
12DDq(82200010): LDR R2, R2, 10H
12DEr(43000000): MOV R3, R0, 0H
12DFs(F7FFED91): BL -4719 [0071H]
12E0t(F7FFEDCD): BL -4659 [00AEH]
IF inorex = 0 THENu op := Ior ELSEv opw := Ann ENDx ;
12E1u(80E00004): LDR R0, SP, 4H
12E2u(E9000003): BNE 3 [12E6H]
12E3v(40000006): MOV R0, R0, 6H
12E4v(A0E00018): STR R0, SP, 18H
12E5w(E7000002): B 2 [12E8H]
12E6x(40000005): MOV R0, R0, 5H
12E7x(A0E00018): STR R0, SP, 18H
IF y.mode = ORB.Const THENy Put1a(op,z zr,a zr,b LSL(1, y.a))c
12E8y(80E00010): LDR R0, SP, 10H
12E9y(80000000): LDR R0, R0, 0H
12EAy(40090001): SUB R0, R0, 1H
12EBy(E9000009): BNE 9 [12F5H]
12ECz(80E00018): LDR R0, SP, 18H
12EDa(81E0001C): LDR R1, SP, 1CH
12EEb(82E0001C): LDR R2, SP, 1CH
12EFc(43000001): MOV R3, R0, 1H
12F0c(84E00010): LDR R4, SP, 10H
12F1c(84400008): LDR R4, R4, 8H
12F2c(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)
12F3d(F7FFED50): BL -4784 [0044H]
12F4e(E700001C): B 28 [1311H]
12F5f(80E00010): LDR R0, SP, 10H
12F6f(81E00014): LDR R1, SP, 14H
12F7g(F7FFEEDB): BL -4389 [01D3H]
12F8h(40000000): MOV R0, R0, 0H
12F9i .FIXUP D
12F9i(8D000022): LDR SB, MT, MOD0 [ORG]
12FAi(81D0002C): LDR R1, SB, 2CH [data]
12FBj(42000000): MOV R2, R0, 0H
12FCk(43000001): MOV R3, R0, 1H
12FDl(F7FFED20): BL -4832 [001EH]
12FEm(40000001): MOV R0, R0, 1H
12FFn(81E00010): LDR R1, SP, 10H
1300n(81100010): LDR R1, R1, 10H
1301o .FIXUP D
1301o(8D000008): LDR SB, MT, MOD0 [ORG]
1302o(82D0002C): LDR R2, SB, 2CH [data]
1303p(83E00010): LDR R3, SP, 10H
1304p(83300010): LDR R3, R3, 10H
1305q(F7FFECFA): BL -4870 [0000H]
1306r(80E00018): LDR R0, SP, 18H
1307s(81E0001C): LDR R1, SP, 1CH
1308t(82E0001C): LDR R2, SP, 1CH
1309u(83E00010): LDR R3, SP, 10H
130Au(83300010): LDR R3, R3, 10H
130Bv(F7FFECF4): BL -4876 [0000H]
ENDw ;
130Cw .FIXUP D
130Cw(8D00000B): LDR SB, MT, MOD0 [ORG]
130Dw(40D8002C): ADD R0, SB, 2CH [data]
130Ew(81000000): LDR R1, R0, 0H
130Fw(41190001): SUB R1, R1, 1H
1310w(A1000000): STR R1, R0, 0H
Put2(Str,x zr,y x.r,z 0)a;b DEC(RH, 2)
1311x(4000000A): MOV R0, R0, AH
1312y(81E0001C): LDR R1, SP, 1CH
1313z(82E00008): LDR R2, SP, 8H
1314z(82200010): LDR R2, R2, 10H
1315a(43000000): MOV R3, R0, 0H
1316b(F7FFED5A): BL -4774 [0071H]
ENDc Include;
1317c .FIXUP D
1317c(8D00000B): LDR SB, MT, MOD0 [ORG]
1318c(40D8002C): ADD R0, SB, 2CH [data]
1319c(81000000): LDR R1, R0, 0H
131Ac(41190002): SUB R1, R1, 2H
131Bc(A1000000): STR R1, R0, 0H
131Cc(8FE00000): LDR LNK, SP, 0H
131Dc(4EE80020): ADD SP, SP, 20H
131Ec(C700000F): B LNK
PROCEDURE Assert*(VAR x: Item);
VAR cond: LONGINT;
BEGINd
131Fd .PROC 54
131Fd(4EE90010): SUB SP, SP, 10H
1320d(AFE00000): STR LNK, SP, 0H
1321d(A0E00004): STR R0, SP, 4H
1322d(A1E00008): STR R1, SP, 8H
IF x.mode # Cond THENe loadCond(x)f ENDg ;
1323e(80E00004): LDR R0, SP, 4H
1324e(80000000): LDR R0, R0, 0H
1325e(4009000C): SUB R0, R0, CH
1326e(E1000003): BEQ 3 [132AH]
1327f(80E00004): LDR R0, SP, 4H
1328f(81E00008): LDR R1, SP, 8H
1329g(F7FFEFEF): BL -4113 [0319H]
IF x.a = 0 THENh cond := negated(x.r)i
132Ah(80E00004): LDR R0, SP, 4H
132Bh(80000008): LDR R0, R0, 8H
132Ch(E9000005): BNE 5 [1332H]
132Di(80E00004): LDR R0, SP, 4H
132Ei(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
132Fj(F7FFEDD3): BL -4653 [0103H]
1330j(A0E0000C): STR R0, SP, CH
1331k(E7000010): B 16 [1342H]
1332l(40000002): MOV R0, R0, 2H
1333m(81E00004): LDR R1, SP, 4H
1334m(81100010): LDR R1, R1, 10H
1335n(82E00004): LDR R2, SP, 4H
1336n(8220000C): LDR R2, R2, CH
1337o(F7FFED59): BL -4775 [0091H]
1338p(80E00004): LDR R0, SP, 4H
1339p(80000008): LDR R0, R0, 8H
133Aq(F7FFEDFB): BL -4613 [0136H]
133Br .FIXUP D
133Br(8D000024): LDR SB, MT, MOD0 [ORG]
133Cr(80D00018): LDR R0, SB, 18H [data]
133Dr(40090001): SUB R0, R0, 1H
133Er(81E00004): LDR R1, SP, 4H
133Fr(A010000C): STR R0, R1, CH
ENDs ;
1340s(40000007): MOV R0, R0, 7H
1341s(A0E0000C): STR R0, SP, CH
Trap(cond,t 7)u;v FixLink(x.b)w
1342t(80E0000C): LDR R0, SP, CH
1343u(41000007): MOV R1, R0, 7H
1344v(F7FFEDA7): BL -4697 [00ECH]
1345w(80E00004): LDR R0, SP, 4H
1346w(8000000C): LDR R0, R0, CH
ENDx Assert;
1347x(F7FFEDEE): BL -4626 [0136H]
1348x(8FE00000): LDR LNK, SP, 0H
1349x(4EE80010): ADD SP, SP, 10H
134Ax(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
134By .PROC 55
134By(4EE9000C): SUB SP, SP, CH
134Cy(AFE00000): STR LNK, SP, 0H
134Dy(A0E00004): STR R0, SP, 4H
134Ey(A1E00008): STR R1, SP, 8H
134Fz(80E00004): LDR R0, SP, 4H
1350z(81E00008): LDR R1, SP, 8H
1351a(F7FFEF6A): BL -4246 [02BCH]
1352b(80E00004): LDR R0, SP, 4H
1353b(80000004): LDR R0, R0, 4H
1354b(D1769B4C): BLEQ MT [trap=4, pos=30363]
1355c(8000001C): LDR R0, R0, 1CH
1356d(F7FFF006): BL -4090 [035DH]
1357e(40000007): MOV R0, R0, 7H
1358f(41000000): MOV R1, R0, 0H
1359g(F7FFED92): BL -4718 [00ECH]
135Ah(40000000): MOV R0, R0, 0H
135Bh .FIXUP D
135Bh(8D000020): LDR SB, MT, MOD0 [ORG]
135Ch(A0D0002C): STR R0, SB, 2CH [data]
ENDi New;
135Di(F7FFEDB6): BL -4682 [0114H]
135Ei(8FE00000): LDR LNK, SP, 0H
135Fi(4EE8000C): ADD SP, SP, CH
1360i(C700000F): B LNK
PROCEDURE Pack*(VAR x, y: Item);
VAR z: Item;
BEGINj z := x;k load(x)l;m load(y)n;o
1361j .PROC 56
1361j(4EE9002C): SUB SP, SP, 2CH
1362j(AFE00000): STR LNK, SP, 0H
1363j(A0E00004): STR R0, SP, 4H
1364j(A1E00008): STR R1, SP, 8H
1365j(A2E0000C): STR R2, SP, CH
1366j(A3E00010): STR R3, SP, 10H
1367k(40E80014): ADD R0, SP, 14H
1368k(81E00004): LDR R1, SP, 4H
1369k(42000006): MOV R2, R0, 6H
136Ak(83100000): LDR R3, R1, 0H
136Bk(41180004): ADD R1, R1, 4H
136Ck(A3000000): STR R3, R0, 0H
136Dk(40080004): ADD R0, R0, 4H
136Ek(42290001): SUB R2, R2, 1H
136Fk(E9FFFFFA): BNE -6 [136AH]
1370l(80E00004): LDR R0, SP, 4H
1371l(81E00008): LDR R1, SP, 8H
1372m(F7FFEE60): BL -4512 [01D3H]
1373n(80E0000C): LDR R0, SP, CH
1374n(81E00010): LDR R1, SP, 10H
1375o(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
1376p(40000001): MOV R0, R0, 1H
1377q(81E0000C): LDR R1, SP, CH
1378q(81100010): LDR R1, R1, 10H
1379r(82E0000C): LDR R2, SP, CH
137Ar(82200010): LDR R2, R2, 10H
137Bs(43000017): MOV R3, R0, 17H
137Ct(F7FFECA1): BL -4959 [001EH]
137Du(40000008): MOV R0, R0, 8H
137Ev(81E00004): LDR R1, SP, 4H
137Fv(81100010): LDR R1, R1, 10H
1380w(82E00004): LDR R2, SP, 4H
1381w(82200010): LDR R2, R2, 10H
1382x(83E0000C): LDR R3, SP, CH
1383x(83300010): LDR R3, R3, 10H
1384y(F7FFEC7B): BL -4997 [0000H]
1385z .FIXUP D
1385z(8D00002A): LDR SB, MT, MOD0 [ORG]
1386z(40D8002C): ADD R0, SB, 2CH [data]
1387z(81000000): LDR R1, R0, 0H
1388z(41190001): SUB R1, R1, 1H
1389z(A1000000): STR R1, R0, 0H
138Aa(40E80014): ADD R0, SP, 14H
138Ba(41D80000): ADD R1, SB, 0H
138Cb(82E00004): LDR R2, SP, 4H
138Db(83E00008): LDR R3, SP, 8H
ENDc Pack;
138Ec(F7FFFA1D): BL -1507 [0DACH]
138Fc(8FE00000): LDR LNK, SP, 0H
1390c(4EE8002C): ADD SP, SP, 2CH
1391c(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
1392d .PROC 57
1392d(4EE90044): SUB SP, SP, 44H
1393d(AFE00000): STR LNK, SP, 0H
1394d(A0E00004): STR R0, SP, 4H
1395d(A1E00008): STR R1, SP, 8H
1396d(A2E0000C): STR R2, SP, CH
1397d(A3E00010): STR R3, SP, 10H
1398e(40E80014): ADD R0, SP, 14H
1399e(81E00004): LDR R1, SP, 4H
139Ae(42000006): MOV R2, R0, 6H
139Be(83100000): LDR R3, R1, 0H
139Ce(41180004): ADD R1, R1, 4H
139De(A3000000): STR R3, R0, 0H
139Ee(40080004): ADD R0, R0, 4H
139Fe(42290001): SUB R2, R2, 1H
13A0e(E9FFFFFA): BNE -6 [139BH]
13A1f(80E00004): LDR R0, SP, 4H
13A2f(81E00008): LDR R1, SP, 8H
13A3g(F7FFEE2F): BL -4561 [01D3H]
13A4h(4000000A): MOV R0, R0, AH
13A5h(A0E0002C): STR R0, SP, 2CH
13A6i .FIXUP D
13A6i(8D000021): LDR SB, MT, MOD0 [ORG]
13A7i(80D0002C): LDR R0, SB, 2CH [data]
13A8i(A0E0003C): STR R0, SP, 3CH
13A9j .FIXUP D
13A9j(8D400003): LDR SB, MT, MOD4 [ORB]
13AAj(80D00009): LDR R0, SB, VAR9
13ABj(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
13ACk(40000002): MOV R0, R0, 2H
13ADl .FIXUP D
13ADl(8D000004): LDR SB, MT, MOD0 [ORG]
13AEl(81D0002C): LDR R1, SB, 2CH [data]
13AFm(82E00004): LDR R2, SP, 4H
13B0m(82200010): LDR R2, R2, 10H
13B1n(43000017): MOV R3, R0, 17H
13B2o(F7FFEC6B): BL -5013 [001EH]
13B3p(40000009): MOV R0, R0, 9H
13B4q .FIXUP D
13B4q(8D000007): LDR SB, MT, MOD0 [ORG]
13B5q(81D0002C): LDR R1, SB, 2CH [data]
13B6r(82D0002C): LDR R2, SB, 2CH
13B7s(4300007F): MOV R3, R0, 7FH
13B8t(F7FFEC65): BL -5019 [001EH]
13B9u(80E0000C): LDR R0, SP, CH
13BAu(81E00010): LDR R1, SP, 10H
13BBv(42E8002C): ADD R2, SP, 2CH
13BCv .FIXUP D
13BCv(8D000008): LDR SB, MT, MOD0 [ORG]
13BDv(43D80000): ADD R3, SB, 0H [data]
13BEw(F7FFF9ED): BL -1555 [0DACH]
13BFx(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
13C0y(40000001): MOV R0, R0, 1H
13C1z .FIXUP D
13C1z(8D000005): LDR SB, MT, MOD0 [ORG]
13C2z(81D0002C): LDR R1, SB, 2CH [data]
13C3a(82D0002C): LDR R2, SB, 2CH
13C4b(43000017): MOV R3, R0, 17H
13C5c(F7FFEC58): BL -5032 [001EH]
13C6d(40000009): MOV R0, R0, 9H
13C7e(81E00004): LDR R1, SP, 4H
13C8e(81100010): LDR R1, R1, 10H
13C9f(82E00004): LDR R2, SP, 4H
13CAf(82200010): LDR R2, R2, 10H
13CBg .FIXUP D
13CBg(8D00000A): LDR SB, MT, MOD0 [ORG]
13CCg(83D0002C): LDR R3, SB, 2CH [data]
13CDh(F7FFEC32): BL -5070 [0000H]
13CEi(40E80014): ADD R0, SP, 14H
13CFi .FIXUP D
13CFi(8D000004): LDR SB, MT, MOD0 [ORG]
13D0i(41D80000): ADD R1, SB, 0H [data]
13D1j(82E00004): LDR R2, SP, 4H
13D2j(83E00008): LDR R3, SP, 8H
ENDk Unpk;
13D3k(F7FFF9D8): BL -1576 [0DACH]
13D4k(8FE00000): LDR LNK, SP, 0H
13D5k(4EE80044): ADD SP, SP, 44H
13D6k(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)
13D7l .PROC 58
13D7l(4EE9000C): SUB SP, SP, CH
13D8l(AFE00000): STR LNK, SP, 0H
13D9l(A0E00004): STR R0, SP, 4H
13DAl(A1E00008): STR R1, SP, 8H
13DBm(80E00004): LDR R0, SP, 4H
13DCm(81E00008): LDR R1, SP, 8H
13DDn(F7FFEDF5): BL -4619 [01D3H]
13DEo(40000000): MOV R0, R0, 0H
13DFp .FIXUP D
13DFp(8D000010): LDR SB, MT, MOD0 [ORG]
13E0p(81D0002C): LDR R1, SB, 2CH [data]
13E1q(42000000): MOV R2, R0, 0H
13E2r(5300FFC4): MOV R3, R0, FFFFFFC4H
13E3s(F7FFEC3A): BL -5062 [001EH]
13E4t(4000000A): MOV R0, R0, AH
13E5u(81E00004): LDR R1, SP, 4H
13E6u(81100010): LDR R1, R1, 10H
13E7v .FIXUP D
13E7v(8D000008): LDR SB, MT, MOD0 [ORG]
13E8v(82D0002C): LDR R2, SB, 2CH [data]
13E9w(43000000): MOV R3, R0, 0H
13EAx(F7FFEC86): BL -4986 [0071H]
ENDy Led;
13EBy .FIXUP D
13EBy(8D000004): LDR SB, MT, MOD0 [ORG]
13ECy(40D8002C): ADD R0, SB, 2CH [data]
13EDy(81000000): LDR R1, R0, 0H
13EEy(41190001): SUB R1, R1, 1H
13EFy(A1000000): STR R1, R0, 0H
13F0y(8FE00000): LDR LNK, SP, 0H
13F1y(4EE8000C): ADD SP, SP, CH
13F2y(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
13F3z .PROC 59
13F3z(4EE90014): SUB SP, SP, 14H
13F4z(AFE00000): STR LNK, SP, 0H
13F5z(A0E00004): STR R0, SP, 4H
13F6z(A1E00008): STR R1, SP, 8H
13F7z(A2E0000C): STR R2, SP, CH
13F8z(A3E00010): STR R3, SP, 10H
13F9a(80E00004): LDR R0, SP, 4H
13FAa(81E00008): LDR R1, SP, 8H
13FBb(F7FFEDD7): BL -4649 [01D3H]
13FCc(80E0000C): LDR R0, SP, CH
13FDc(80000004): LDR R0, R0, 4H
13FEc(81E00004): LDR R1, SP, 4H
13FFc(A0100004): STR R0, R1, 4H
1400d(4000000B): MOV R0, R0, BH
1401d(81E00004): LDR R1, SP, 4H
1402d(A0100000): STR R0, R1, 0H
1403e(40000000): MOV R0, R0, 0H
1404e(81E00004): LDR R1, SP, 4H
1405e(A0100008): STR R0, R1, 8H
1406f(80E0000C): LDR R0, SP, CH
1407f(81E00010): LDR R1, SP, 10H
1408g(82E00004): LDR R2, SP, 4H
1409g(83E00008): LDR R3, SP, 8H
ENDh Get;
140Ah(F7FFF9A1): BL -1631 [0DACH]
140Bh(8FE00000): LDR LNK, SP, 0H
140Ch(4EE80014): ADD SP, SP, 14H
140Dh(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
140Ei .PROC 60
140Ei(4EE90014): SUB SP, SP, 14H
140Fi(AFE00000): STR LNK, SP, 0H
1410i(A0E00004): STR R0, SP, 4H
1411i(A1E00008): STR R1, SP, 8H
1412i(A2E0000C): STR R2, SP, CH
1413i(A3E00010): STR R3, SP, 10H
1414j(80E00004): LDR R0, SP, 4H
1415j(81E00008): LDR R1, SP, 8H
1416k(F7FFEDBC): BL -4676 [01D3H]
1417l(80E0000C): LDR R0, SP, CH
1418l(80000004): LDR R0, R0, 4H
1419l(81E00004): LDR R1, SP, 4H
141Al(A0100004): STR R0, R1, 4H
141Bm(4000000B): MOV R0, R0, BH
141Cm(81E00004): LDR R1, SP, 4H
141Dm(A0100000): STR R0, R1, 0H
141En(40000000): MOV R0, R0, 0H
141Fn(81E00004): LDR R1, SP, 4H
1420n(A0100008): STR R0, R1, 8H
1421o(80E00004): LDR R0, SP, 4H
1422o(81E00008): LDR R1, SP, 8H
1423p(82E0000C): LDR R2, SP, CH
1424p(83E00010): LDR R3, SP, 10H
ENDq Put;
1425q(F7FFF986): BL -1658 [0DACH]
1426q(8FE00000): LDR LNK, SP, 0H
1427q(4EE80014): ADD SP, SP, 14H
1428q(C700000F): B LNK
PROCEDURE Copy*(VAR x, y, z: Item);
BEGINr load(x)s;t load(y)u;v
1429r .PROC 61
1429r(4EE9001C): SUB SP, SP, 1CH
142Ar(AFE00000): STR LNK, SP, 0H
142Br(A0E00004): STR R0, SP, 4H
142Cr(A1E00008): STR R1, SP, 8H
142Dr(A2E0000C): STR R2, SP, CH
142Er(A3E00010): STR R3, SP, 10H
142Fr(A4E00014): STR R4, SP, 14H
1430r(A5E00018): STR R5, SP, 18H
1431s(80E00004): LDR R0, SP, 4H
1432s(81E00008): LDR R1, SP, 8H
1433t(F7FFED9F): BL -4705 [01D3H]
1434u(80E0000C): LDR R0, SP, CH
1435u(81E00010): LDR R1, SP, 10H
1436v(F7FFED9C): BL -4708 [01D3H]
IF z.mode = ORB.Const THENw
1437w(80E00014): LDR R0, SP, 14H
1438w(80000000): LDR R0, R0, 0H
1439w(40090001): SUB R0, R0, 1H
143Aw(E900000D): BNE 13 [1448H]
IF z.a > 0 THENx load(z)y ELSEz ORSa.Mark("bad count")b ENDc
143Bx(80E00014): LDR R0, SP, 14H
143Cx(80000008): LDR R0, R0, 8H
143Dx(40090000): SUB R0, R0, 0H
143Ex(E6000004): BLE 4 [1443H]
143Fy(80E00014): LDR R0, SP, 14H
1440y(81E00018): LDR R1, SP, 18H
1441z(F7FFED91): BL -4719 [01D3H]
1442a(E7000004): B 4 [1447H]
1443b .FIXUP D
1443b(8D000058): LDR SB, MT, MOD0 [ORG]
1444b(40D88A80): ADD R0, SB, FFFF8A80H [data]
1445b(4100000A): MOV R1, R0, AH
1446c .FIXUP P
1446c(F7209265): BL MOD2 [ORS] PROC9
ELSE loadd(z)e;f
1447d(E700000D): B 13 [1455H]
1448e(80E00014): LDR R0, SP, 14H
1449e(81E00018): LDR R1, SP, 18H
144Af(F7FFED88): BL -4728 [01D3H]
IF check THENg Trap(LT,h 3)i ENDj ;
144Bg .FIXUP D
144Bg(8D000008): LDR SB, MT, MOD0 [ORG]
144Cg(90D00044): LDR R0, SB, 44H [data]
144Dg(E1000003): BEQ 3 [1451H]
144Eh(40000005): MOV R0, R0, 5H
144Fi(41000003): MOV R1, R0, 3H
1450j(F7FFEC9B): BL -4965 [00ECH]
Put3(BC,k EQ,l 6)m
1451k(40000002): MOV R0, R0, 2H
1452l(41000001): MOV R1, R0, 1H
1453m(42000006): MOV R2, R0, 6H
ENDn ;
1454n(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
1455o(40000008): MOV R0, R0, 8H
1456p .FIXUP D
1456p(8D00000B): LDR SB, MT, MOD0 [ORG]
1457p(81D0002C): LDR R1, SB, 2CH [data]
1458q(82E00004): LDR R2, SP, 4H
1459q(82200010): LDR R2, R2, 10H
145Ar(43000000): MOV R3, R0, 0H
145Bs(F7FFEC15): BL -5099 [0071H]
145Ct(40000008): MOV R0, R0, 8H
145Du(81E00004): LDR R1, SP, 4H
145Eu(81100010): LDR R1, R1, 10H
145Fv(82E00004): LDR R2, SP, 4H
1460v(82200010): LDR R2, R2, 10H
1461w(43000004): MOV R3, R0, 4H
1462x(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
1463y(4000000A): MOV R0, R0, AH
1464z .FIXUP D
1464z(8D00000E): LDR SB, MT, MOD0 [ORG]
1465z(81D0002C): LDR R1, SB, 2CH [data]
1466a(82E0000C): LDR R2, SP, CH
1467a(82200010): LDR R2, R2, 10H
1468b(43000000): MOV R3, R0, 0H
1469c(F7FFEC07): BL -5113 [0071H]
146Ad(40000008): MOV R0, R0, 8H
146Be(81E0000C): LDR R1, SP, CH
146Ce(81100010): LDR R1, R1, 10H
146Df(82E0000C): LDR R2, SP, CH
146Ef(82200010): LDR R2, R2, 10H
146Fg(43000004): MOV R3, R0, 4H
1470h(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)
1471i(40000009): MOV R0, R0, 9H
1472j(81E00014): LDR R1, SP, 14H
1473j(81100010): LDR R1, R1, 10H
1474k(82E00014): LDR R2, SP, 14H
1475k(82200010): LDR R2, R2, 10H
1476l(43000001): MOV R3, R0, 1H
1477m(F7FFEBA6): BL -5210 [001EH]
1478n(40000002): MOV R0, R0, 2H
1479o(41000009): MOV R1, R0, 9H
147Ap(5200FFFA): MOV R2, R0, FFFFFFFAH
147Bq(F7FFEC15): BL -5099 [0091H]
ENDr Copy;
147Cr .FIXUP D
147Cr(8D000018): LDR SB, MT, MOD0 [ORG]
147Dr(40D8002C): ADD R0, SB, 2CH [data]
147Er(81000000): LDR R1, R0, 0H
147Fr(41190003): SUB R1, R1, 3H
1480r(A1000000): STR R1, R0, 0H
1481r(8FE00000): LDR LNK, SP, 0H
1482r(4EE8001C): ADD SP, SP, 1CH
1483r(C700000F): B LNK
PROCEDURE LDPSR*(VAR x: Item);
BEGINs (*x.mode = Const*) Put3(0,t 15,u x.a + 20H)v
1484s .PROC 62
1484s(4EE9000C): SUB SP, SP, CH
1485s(AFE00000): STR LNK, SP, 0H
1486s(A0E00004): STR R0, SP, 4H
1487s(A1E00008): STR R1, SP, 8H
1488t(40000000): MOV R0, R0, 0H
1489u(4100000F): MOV R1, R0, FH
148Av(82E00004): LDR R2, SP, 4H
148Bv(82200008): LDR R2, R2, 8H
148Cv(42280020): ADD R2, R2, 20H
ENDw LDPSR;
148Dw(F7FFEC03): BL -5117 [0091H]
148Ew(8FE00000): LDR LNK, SP, 0H
148Fw(4EE8000C): ADD SP, SP, CH
1490w(C700000F): B LNK
PROCEDURE LDREG*(VAR x, y: Item);
BEGINx
1491x .PROC 63
1491x(4EE90014): SUB SP, SP, 14H
1492x(AFE00000): STR LNK, SP, 0H
1493x(A0E00004): STR R0, SP, 4H
1494x(A1E00008): STR R1, SP, 8H
1495x(A2E0000C): STR R2, SP, CH
1496x(A3E00010): STR R3, SP, 10H
IF y.mode = ORB.Const THENy Put1a(Mov,z x.a,a 0,b y.a)c
1497y(80E0000C): LDR R0, SP, CH
1498y(80000000): LDR R0, R0, 0H
1499y(40090001): SUB R0, R0, 1H
149Ay(E9000008): BNE 8 [14A3H]
149Bz(40000000): MOV R0, R0, 0H
149Ca(81E00004): LDR R1, SP, 4H
149Da(81100008): LDR R1, R1, 8H
149Eb(42000000): MOV R2, R0, 0H
149Fc(83E0000C): LDR R3, SP, CH
14A0c(83300008): LDR R3, R3, 8H
ELSEd loade(y)f;g Put0(Mov,h x.a,i 0,j y.r)k;l DEC(RH)
14A1d(F7FFEBA2): BL -5214 [0044H]
14A2e(E700000F): B 15 [14B2H]
14A3f(80E0000C): LDR R0, SP, CH
14A4f(81E00010): LDR R1, SP, 10H
14A5g(F7FFED2D): BL -4819 [01D3H]
14A6h(40000000): MOV R0, R0, 0H
14A7i(81E00004): LDR R1, SP, 4H
14A8i(81100008): LDR R1, R1, 8H
14A9j(42000000): MOV R2, R0, 0H
14AAk(83E0000C): LDR R3, SP, CH
14ABk(83300010): LDR R3, R3, 10H
14ACl(F7FFEB53): BL -5293 [0000H]
ENDm
14ADm .FIXUP D
14ADm(8D000031): LDR SB, MT, MOD0 [ORG]
14AEm(40D8002C): ADD R0, SB, 2CH [data]
14AFm(81000000): LDR R1, R0, 0H
14B0m(41190001): SUB R1, R1, 1H
14B1m(A1000000): STR R1, R0, 0H
ENDn LDREG;
14B2n(8FE00000): LDR LNK, SP, 0H
14B3n(4EE80014): ADD SP, SP, 14H
14B4n(C700000F): B LNK
(*In-line code functions*)
PROCEDURE Abs*(VAR x: Item);
BEGINo
14B5o .PROC 64
14B5o(4EE9000C): SUB SP, SP, CH
14B6o(AFE00000): STR LNK, SP, 0H
14B7o(A0E00004): STR R0, SP, 4H
14B8o(A1E00008): STR R1, SP, 8H
IF x.mode = ORB.Const THENp x.a := ABS(x.a)
14B9p(80E00004): LDR R0, SP, 4H
14BAp(80000000): LDR R0, R0, 0H
14BBp(40090001): SUB R0, R0, 1H
14BCp(E9000009): BNE 9 [14C6H]
ELSEq loadr(x)s;t
14BDq(80E00004): LDR R0, SP, 4H
14BEq(80000008): LDR R0, R0, 8H
14BFq(40090000): SUB R0, R0, 0H
14C0q(ED000002): BGE 2 [14C3H]
14C1q(41000000): MOV R1, R0, 0H
14C2q(00190000): SUB R0, R1, R0
14C3q(81E00004): LDR R1, SP, 4H
14C4q(A0100008): STR R0, R1, 8H
14C5r(E7000031): B 49 [14F7H]
14C6s(80E00004): LDR R0, SP, 4H
14C7s(81E00008): LDR R1, SP, 8H
14C8t(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
14C9u(80E00004): LDR R0, SP, 4H
14CAu(80000004): LDR R0, R0, 4H
14CBu(D17D384C): BLEQ MT [trap=4, pos=32056]
14CCv(80000000): LDR R0, R0, 0H
14CDv(40090005): SUB R0, R0, 5H
14CEv(E900000F): BNE 15 [14DEH]
14CFw(40000001): MOV R0, R0, 1H
14D0x(81E00004): LDR R1, SP, 4H
14D1x(81100010): LDR R1, R1, 10H
14D2y(82E00004): LDR R2, SP, 4H
14D3y(82200010): LDR R2, R2, 10H
14D4z(43000001): MOV R3, R0, 1H
14D5a(F7FFEB48): BL -5304 [001EH]
14D6b(40000003): MOV R0, R0, 3H
14D7c(81E00004): LDR R1, SP, 4H
14D8c(81100010): LDR R1, R1, 10H
14D9d(82E00004): LDR R2, SP, 4H
14DAd(82200010): LDR R2, R2, 10H
14DBe(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
14DCf(F7FFEB41): BL -5311 [001EH]
14DDg(E7000019): B 25 [14F7H]
14DEh(40000009): MOV R0, R0, 9H
14DFi(81E00004): LDR R1, SP, 4H
14E0i(81100010): LDR R1, R1, 10H
14E1j(82E00004): LDR R2, SP, 4H
14E2j(82200010): LDR R2, R2, 10H
14E3k(43000000): MOV R3, R0, 0H
14E4l(F7FFEB39): BL -5319 [001EH]
14E5m(40000002): MOV R0, R0, 2H
14E6n(4100000D): MOV R1, R0, DH
14E7o(42000002): MOV R2, R0, 2H
14E8p(F7FFEBA8): BL -5208 [0091H]
14E9q(40000000): MOV R0, R0, 0H
14EAr .FIXUP D
14EAr(8D00003D): LDR SB, MT, MOD0 [ORG]
14EBr(81D0002C): LDR R1, SB, 2CH [data]
14ECs(42000000): MOV R2, R0, 0H
14EDt(43000000): MOV R3, R0, 0H
14EEu(F7FFEB2F): BL -5329 [001EH]
14EFv(40000009): MOV R0, R0, 9H
14F0w(81E00004): LDR R1, SP, 4H
14F1w(81100010): LDR R1, R1, 10H
14F2x .FIXUP D
14F2x(8D000008): LDR SB, MT, MOD0 [ORG]
14F3x(82D0002C): LDR R2, SB, 2CH [data]
14F4y(83E00004): LDR R3, SP, 4H
14F5y(83300010): LDR R3, R3, 10H
ENDz
14F6z(F7FFEB09): BL -5367 [0000H]
END
ENDa Abs;
14F7a(8FE00000): LDR LNK, SP, 0H
14F8a(4EE8000C): ADD SP, SP, CH
14F9a(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)
14FAb .PROC 65
14FAb(4EE9000C): SUB SP, SP, CH
14FBb(AFE00000): STR LNK, SP, 0H
14FCb(A0E00004): STR R0, SP, 4H
14FDb(A1E00008): STR R1, SP, 8H
14FEc(80E00004): LDR R0, SP, 4H
14FFc(81E00008): LDR R1, SP, 8H
1500d(F7FFECD2): BL -4910 [01D3H]
1501e(40000004): MOV R0, R0, 4H
1502f(81E00004): LDR R1, SP, 4H
1503f(81100010): LDR R1, R1, 10H
1504g(82E00004): LDR R2, SP, 4H
1505g(82200010): LDR R2, R2, 10H
1506h(43000001): MOV R3, R0, 1H
1507i(F7FFEB16): BL -5354 [001EH]
1508j(80E00004): LDR R0, SP, 4H
1509j(81E00008): LDR R1, SP, 8H
150Ak(42000009): MOV R2, R0, 9H
150Bl(F7FFEBCC): BL -5172 [00D8H]
ENDm Odd;
150Cm .FIXUP D
150Cm(8D00001A): LDR SB, MT, MOD0 [ORG]
150Dm(40D8002C): ADD R0, SB, 2CH [data]
150Em(81000000): LDR R1, R0, 0H
150Fm(41190001): SUB R1, R1, 1H
1510m(A1000000): STR R1, R0, 0H
1511m(8FE00000): LDR LNK, SP, 0H
1512m(4EE8000C): ADD SP, SP, CH
1513m(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
1514n .PROC 66
1514n(4EE9000C): SUB SP, SP, CH
1515n(AFE00000): STR LNK, SP, 0H
1516n(A0E00004): STR R0, SP, 4H
1517n(A1E00008): STR R1, SP, 8H
1518o(80E00004): LDR R0, SP, 4H
1519o(81E00008): LDR R1, SP, 8H
151Ap(F7FFECB8): BL -4936 [01D3H]
151Bq(40002000): MOV R0, R0, 2000H
151Cr .FIXUP D
151Cr(8D000010): LDR SB, MT, MOD0 [ORG]
151Dr(81D0002C): LDR R1, SB, 2CH [data]
151Es(42000000): MOV R2, R0, 0H
151Ft(43004B00): MOV R3, R0, 4B00H
1520u(F7FFEAFD): BL -5379 [001EH]
1521v(4000100C): MOV R0, R0, 100CH
1522w(81E00004): LDR R1, SP, 4H
1523w(81100010): LDR R1, R1, 10H
1524x(82E00004): LDR R2, SP, 4H
1525x(82200010): LDR R2, R2, 10H
1526y .FIXUP D
1526y(8D00000A): LDR SB, MT, MOD0 [ORG]
1527y(83D0002C): LDR R3, SB, 2CH [data]
ENDz Floor;
1528z(F7FFEAD7): BL -5417 [0000H]
1529z(8FE00000): LDR LNK, SP, 0H
152Az(4EE8000C): ADD SP, SP, CH
152Bz(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
152Ca .PROC 67
152Ca(4EE9000C): SUB SP, SP, CH
152Da(AFE00000): STR LNK, SP, 0H
152Ea(A0E00004): STR R0, SP, 4H
152Fa(A1E00008): STR R1, SP, 8H
1530b(80E00004): LDR R0, SP, 4H
1531b(81E00008): LDR R1, SP, 8H
1532c(F7FFECA0): BL -4960 [01D3H]
1533d(40002000): MOV R0, R0, 2000H
1534e .FIXUP D
1534e(8D00000E): LDR SB, MT, MOD0 [ORG]
1535e(81D0002C): LDR R1, SB, 2CH [data]
1536f(42000000): MOV R2, R0, 0H
1537g(43004B00): MOV R3, R0, 4B00H
1538h(F7FFEAE5): BL -5403 [001EH]
1539i(4000200C): MOV R0, R0, 200CH
153Aj(81E00004): LDR R1, SP, 4H
153Bj(81100010): LDR R1, R1, 10H
153Ck(82E00004): LDR R2, SP, 4H
153Dk(82200010): LDR R2, R2, 10H
153El .FIXUP D
153El(8D00000A): LDR SB, MT, MOD0 [ORG]
153Fl(83D0002C): LDR R3, SB, 2CH [data]
ENDm Float;
1540m(F7FFEABF): BL -5441 [0000H]
1541m(8FE00000): LDR LNK, SP, 0H
1542m(4EE8000C): ADD SP, SP, CH
1543m(C700000F): B LNK
PROCEDURE Ord*(VAR x: Item);
BEGINn
1544n .PROC 68
1544n(4EE9000C): SUB SP, SP, CH
1545n(AFE00000): STR LNK, SP, 0H
1546n(A0E00004): STR R0, SP, 4H
1547n(A1E00008): STR R1, SP, 8H
IF x.mode IN {ORB.Var, ORB.Par, RegI, Cond} THENo load(x)p ENDq
1548o(4000180C): MOV R0, R0, 180CH
1549o(81E00004): LDR R1, SP, 4H
154Ao(81100000): LDR R1, R1, 0H
154Bo(41180001): ADD R1, R1, 1H
154Co(00030001): ROR R0, R0, R1
154Do(E8000003): BPL 3 [1551H]
154Ep(80E00004): LDR R0, SP, 4H
154Fp(81E00008): LDR R1, SP, 8H
1550q(F7FFEC82): BL -4990 [01D3H]
ENDr Ord;
1551r(8FE00000): LDR LNK, SP, 0H
1552r(4EE8000C): ADD SP, SP, CH
1553r(C700000F): B LNK
PROCEDURE Len*(VAR x: Item);
BEGINs
1554s .PROC 69
1554s(4EE9000C): SUB SP, SP, CH
1555s(AFE00000): STR LNK, SP, 0H
1556s(A0E00004): STR R0, SP, 4H
1557s(A1E00008): STR R1, SP, 8H
IF x.type.lent >= 0 THENu
1558t(80E00004): LDR R0, SP, 4H
1559t(80000004): LDR R0, R0, 4H
155At(D17FF84C): BLEQ MT [trap=4, pos=32760]
155Bu(80000010): LDR R0, R0, 10H
155Cu(40090000): SUB R0, R0, 0H
155Du(E5000013): BLT 19 [1571H]
IF x.mode = RegI THENv DEC(RH) ENDw ;
155Ev(80E00004): LDR R0, SP, 4H
155Fv(80000000): LDR R0, R0, 0H
1560v(4009000B): SUB R0, R0, BH
1561v(E9000005): BNE 5 [1567H]
1562w .FIXUP D
1562w(8D000024): LDR SB, MT, MOD0 [ORG]
1563w(40D8002C): ADD R0, SB, 2CH [data]
1564w(81000000): LDR R1, R0, 0H
1565w(41190001): SUB R1, R1, 1H
1566w(A1000000): STR R1, R0, 0H
x.mode := ORB.Const;x x.a := x.type.leny
1567x(40000001): MOV R0, R0, 1H
1568x(81E00004): LDR R1, SP, 4H
1569x(A0100000): STR R0, R1, 0H
156Ay(80E00004): LDR R0, SP, 4H
156By(80000004): LDR R0, R0, 4H
156Cy(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
156Dz(80000010): LDR R0, R0, 10H
156Ez(81E00004): LDR R1, SP, 4H
156Fz(A0100008): STR R0, R1, 8H
1570a(E7000012): B 18 [1583H]
1571b(40000008): MOV R0, R0, 8H
1572c .FIXUP D
1572c(8D000010): LDR SB, MT, MOD0 [ORG]
1573c(81D0002C): LDR R1, SB, 2CH [data]
1574d(4200000E): MOV R2, R0, EH
1575e(83E00004): LDR R3, SP, 4H
1576e(83300008): LDR R3, R3, 8H
1577e(43380004): ADD R3, R3, 4H
1578f(84D00034): LDR R4, SB, 34H
1579f(03380004): ADD R3, R3, R4
157Ag(F7FFEAF6): BL -5386 [0071H]
157Bh(4000000A): MOV R0, R0, AH
157Ch(81E00004): LDR R1, SP, 4H
157Dh(A0100000): STR R0, R1, 0H
157Ei .FIXUP D
157Ei(8D00000C): LDR SB, MT, MOD0 [ORG]
157Fi(80D0002C): LDR R0, SB, 2CH [data]
1580i(81E00004): LDR R1, SP, 4H
1581i(A0100010): STR R0, R1, 10H
ENDj
1582j(F7FFEB2B): BL -5333 [00AEH]
ENDk Len;
1583k(8FE00000): LDR LNK, SP, 0H
1584k(4EE8000C): ADD SP, SP, CH
1585k(C700000F): B LNK
PROCEDURE Shift*(fct: LONGINT; VAR x, y: Item);
VAR op: LONGINT;
BEGINl load(x)m;n
1586l .PROC 70
1586l(4EE9001C): SUB SP, SP, 1CH
1587l(AFE00000): STR LNK, SP, 0H
1588l(A0E00004): STR R0, SP, 4H
1589l(A1E00008): STR R1, SP, 8H
158Al(A2E0000C): STR R2, SP, CH
158Bl(A3E00010): STR R3, SP, 10H
158Cl(A4E00014): STR R4, SP, 14H
158Dm(80E00008): LDR R0, SP, 8H
158Em(81E0000C): LDR R1, SP, CH
158Fn(F7FFEC43): BL -5053 [01D3H]
IF fct = 0 THENo op := Lsl ELSIFp fctq = 1 THENr op := Asr ELSEs opt := Ror ENDu ;
1590o(80E00004): LDR R0, SP, 4H
1591o(E9000003): BNE 3 [1595H]
1592p(40000001): MOV R0, R0, 1H
1593p(A0E00018): STR R0, SP, 18H
1594q(E7000008): B 8 [159DH]
1595r(80E00004): LDR R0, SP, 4H
1596r(40090001): SUB R0, R0, 1H
1597r(E9000003): BNE 3 [159BH]
1598s(40000002): MOV R0, R0, 2H
1599s(A0E00018): STR R0, SP, 18H
159At(E7000002): B 2 [159DH]
159Bu(40000003): MOV R0, R0, 3H
159Cu(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
159Dv(80E00010): LDR R0, SP, 10H
159Ev(80000000): LDR R0, R0, 0H
159Fv(40090001): SUB R0, R0, 1H
15A0v(E900000A): BNE 10 [15ABH]
15A1w(80E00018): LDR R0, SP, 18H
15A2x(81E00008): LDR R1, SP, 8H
15A3x(81100010): LDR R1, R1, 10H
15A4y(82E00008): LDR R2, SP, 8H
15A5y(82200010): LDR R2, R2, 10H
15A6z(83E00010): LDR R3, SP, 10H
15A7z(83300008): LDR R3, R3, 8H
15A8z(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
15A9a(F7FFEA74): BL -5516 [001EH]
15AAb(E7000015): B 21 [15C0H]
15ABc(80E00010): LDR R0, SP, 10H
15ACc(81E00014): LDR R1, SP, 14H
15ADd(F7FFEC25): BL -5083 [01D3H]
15AEe(80E00018): LDR R0, SP, 18H
15AFf .FIXUP D
15AFf(8D000031): LDR SB, MT, MOD0 [ORG]
15B0f(81D0002C): LDR R1, SB, 2CH [data]
15B1f(41190002): SUB R1, R1, 2H
15B2g(82E00008): LDR R2, SP, 8H
15B3g(82200010): LDR R2, R2, 10H
15B4h(83E00010): LDR R3, SP, 10H
15B5h(83300010): LDR R3, R3, 10H
15B6i(F7FFEA49): BL -5559 [0000H]
15B7j .FIXUP D
15B7j(8D000008): LDR SB, MT, MOD0 [ORG]
15B8j(40D8002C): ADD R0, SB, 2CH [data]
15B9j(81000000): LDR R1, R0, 0H
15BAj(41190001): SUB R1, R1, 1H
15BBj(A1000000): STR R1, R0, 0H
ENDk
15BCk(80D0002C): LDR R0, SB, 2CH
15BDk(40090001): SUB R0, R0, 1H
15BEk(81E00008): LDR R1, SP, 8H
15BFk(A0100010): STR R0, R1, 10H
ENDl Shift;
15C0l(8FE00000): LDR LNK, SP, 0H
15C1l(4EE8001C): ADD SP, SP, 1CH
15C2l(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)
15C3m .PROC 71
15C3m(4EE90014): SUB SP, SP, 14H
15C4m(AFE00000): STR LNK, SP, 0H
15C5m(A0E00004): STR R0, SP, 4H
15C6m(A1E00008): STR R1, SP, 8H
15C7m(A2E0000C): STR R2, SP, CH
15C8m(A3E00010): STR R3, SP, 10H
15C9n(80E00004): LDR R0, SP, 4H
15CAn(81E00008): LDR R1, SP, 8H
15CBo(F7FFEC07): BL -5113 [01D3H]
15CCp(80E0000C): LDR R0, SP, CH
15CDp(81E00010): LDR R1, SP, 10H
15CEq(F7FFEC04): BL -5116 [01D3H]
15CFr(40002008): MOV R0, R0, 2008H
15D0s(81E00004): LDR R1, SP, 4H
15D1s(81100010): LDR R1, R1, 10H
15D2t(82E00004): LDR R2, SP, 4H
15D3t(82200010): LDR R2, R2, 10H
15D4u(83E0000C): LDR R3, SP, CH
15D5u(83300010): LDR R3, R3, 10H
15D6v(F7FFEA29): BL -5591 [0000H]
ENDw ADC;
15D7w .FIXUP D
15D7w(8D000020): LDR SB, MT, MOD0 [ORG]
15D8w(40D8002C): ADD R0, SB, 2CH [data]
15D9w(81000000): LDR R1, R0, 0H
15DAw(41190001): SUB R1, R1, 1H
15DBw(A1000000): STR R1, R0, 0H
15DCw(8FE00000): LDR LNK, SP, 0H
15DDw(4EE80014): ADD SP, SP, 14H
15DEw(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)
15DFx .PROC 72
15DFx(4EE90014): SUB SP, SP, 14H
15E0x(AFE00000): STR LNK, SP, 0H
15E1x(A0E00004): STR R0, SP, 4H
15E2x(A1E00008): STR R1, SP, 8H
15E3x(A2E0000C): STR R2, SP, CH
15E4x(A3E00010): STR R3, SP, 10H
15E5y(80E00004): LDR R0, SP, 4H
15E6y(81E00008): LDR R1, SP, 8H
15E7z(F7FFEBEB): BL -5141 [01D3H]
15E8a(80E0000C): LDR R0, SP, CH
15E9a(81E00010): LDR R1, SP, 10H
15EAb(F7FFEBE8): BL -5144 [01D3H]
15EBc(40002009): MOV R0, R0, 2009H
15ECd(81E00004): LDR R1, SP, 4H
15EDd(81100010): LDR R1, R1, 10H
15EEe(82E00004): LDR R2, SP, 4H
15EFe(82200010): LDR R2, R2, 10H
15F0f(83E0000C): LDR R3, SP, CH
15F1f(83300010): LDR R3, R3, 10H
15F2g(F7FFEA0D): BL -5619 [0000H]
ENDh SBC;
15F3h .FIXUP D
15F3h(8D00001C): LDR SB, MT, MOD0 [ORG]
15F4h(40D8002C): ADD R0, SB, 2CH [data]
15F5h(81000000): LDR R1, R0, 0H
15F6h(41190001): SUB R1, R1, 1H
15F7h(A1000000): STR R1, R0, 0H
15F8h(8FE00000): LDR LNK, SP, 0H
15F9h(4EE80014): ADD SP, SP, 14H
15FAh(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)
15FBi .PROC 73
15FBi(4EE90014): SUB SP, SP, 14H
15FCi(AFE00000): STR LNK, SP, 0H
15FDi(A0E00004): STR R0, SP, 4H
15FEi(A1E00008): STR R1, SP, 8H
15FFi(A2E0000C): STR R2, SP, CH
1600i(A3E00010): STR R3, SP, 10H
1601j(80E00004): LDR R0, SP, 4H
1602j(81E00008): LDR R1, SP, 8H
1603k(F7FFEBCF): BL -5169 [01D3H]
1604l(80E0000C): LDR R0, SP, CH
1605l(81E00010): LDR R1, SP, 10H
1606m(F7FFEBCC): BL -5172 [01D3H]
1607n(4000200A): MOV R0, R0, 200AH
1608o(81E00004): LDR R1, SP, 4H
1609o(81100010): LDR R1, R1, 10H
160Ap(82E00004): LDR R2, SP, 4H
160Bp(82200010): LDR R2, R2, 10H
160Cq(83E0000C): LDR R3, SP, CH
160Dq(83300010): LDR R3, R3, 10H
160Er(F7FFE9F1): BL -5647 [0000H]
ENDs UML;
160Fs .FIXUP D
160Fs(8D00001C): LDR SB, MT, MOD0 [ORG]
1610s(40D8002C): ADD R0, SB, 2CH [data]
1611s(81000000): LDR R1, R0, 0H
1612s(41190001): SUB R1, R1, 1H
1613s(A1000000): STR R1, R0, 0H
1614s(8FE00000): LDR LNK, SP, 0H
1615s(4EE80014): ADD SP, SP, 14H
1616s(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
1617t .PROC 74
1617t(4EE90014): SUB SP, SP, 14H
1618t(AFE00000): STR LNK, SP, 0H
1619t(A0E00004): STR R0, SP, 4H
161At(A1E00008): STR R1, SP, 8H
161Bt(A2E0000C): STR R2, SP, CH
161Ct(A3E00010): STR R3, SP, 10H
161Du(80E00004): LDR R0, SP, 4H
161Eu(81E00008): LDR R1, SP, 8H
161Fv(F7FFEBB3): BL -5197 [01D3H]
1620w(40000008): MOV R0, R0, 8H
1621x(81E00004): LDR R1, SP, 4H
1622x(81100010): LDR R1, R1, 10H
1623y(82E00004): LDR R2, SP, 4H
1624y(82200010): LDR R2, R2, 10H
1625z(43000000): MOV R3, R0, 0H
1626a(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)
1627b(80E0000C): LDR R0, SP, CH
1628b(80000000): LDR R0, R0, 0H
1629b(40090001): SUB R0, R0, 1H
162Ab(E900000F): BNE 15 [163AH]
162Bc(40000003): MOV R0, R0, 3H
162Cd(81E00004): LDR R1, SP, 4H
162Dd(81100010): LDR R1, R1, 10H
162Ee(82E00004): LDR R2, SP, 4H
162Fe(82200010): LDR R2, R2, 10H
1630f(83E0000C): LDR R3, SP, CH
1631f(83300008): LDR R3, R3, 8H
1632f(43380001): ADD R3, R3, 1H
1633g(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)
1634h .FIXUP D
1634h(8D000025): LDR SB, MT, MOD0 [ORG]
1635h(40D8002C): ADD R0, SB, 2CH [data]
1636h(81000000): LDR R1, R0, 0H
1637h(41190001): SUB R1, R1, 1H
1638h(A1000000): STR R1, R0, 0H
1639i(E7000017): B 23 [1651H]
163Aj(80E0000C): LDR R0, SP, CH
163Bj(81E00010): LDR R1, SP, 10H
163Ck(F7FFEB96): BL -5226 [01D3H]
163Dl(40000008): MOV R0, R0, 8H
163Em(81E0000C): LDR R1, SP, CH
163Fm(81100010): LDR R1, R1, 10H
1640n(82E0000C): LDR R2, SP, CH
1641n(82200010): LDR R2, R2, 10H
1642o(43000001): MOV R3, R0, 1H
1643p(F7FFE9DA): BL -5670 [001EH]
1644q(40000003): MOV R0, R0, 3H
1645r(81E00004): LDR R1, SP, 4H
1646r(81100010): LDR R1, R1, 10H
1647s(82E00004): LDR R2, SP, 4H
1648s(82200010): LDR R2, R2, 10H
1649t(83E0000C): LDR R3, SP, CH
164At(83300010): LDR R3, R3, 10H
164Bu(F7FFE9B4): BL -5708 [0000H]
ENDv ;
164Cv .FIXUP D
164Cv(8D000018): LDR SB, MT, MOD0 [ORG]
164Dv(40D8002C): ADD R0, SB, 2CH [data]
164Ev(81000000): LDR R1, R0, 0H
164Fv(41190002): SUB R1, R1, 2H
1650v(A1000000): STR R1, R0, 0H
SetCC(x,w MI)x
1651w(80E00004): LDR R0, SP, 4H
1652w(81E00008): LDR R1, SP, 8H
1653x(42000000): MOV R2, R0, 0H
ENDy Bit;
1654y(F7FFEA83): BL -5501 [00D8H]
1655y(8FE00000): LDR LNK, SP, 0H
1656y(4EE80014): ADD SP, SP, 14H
1657y(C700000F): B LNK
PROCEDURE Register*(VAR x: Item);
BEGINz (*x.mode = Const*)
1658z .PROC 75
1658z(4EE9000C): SUB SP, SP, CH
1659z(AFE00000): STR LNK, SP, 0H
165Az(A0E00004): STR R0, SP, 4H
165Bz(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
165Ca(40000000): MOV R0, R0, 0H
165Db .FIXUP D
165Db(8D000011): LDR SB, MT, MOD0 [ORG]
165Eb(81D0002C): LDR R1, SB, 2CH [data]
165Fc(42000000): MOV R2, R0, 0H
1660d(83E00004): LDR R3, SP, 4H
1661d(83300008): LDR R3, R3, 8H
1662d(4334000F): AND R3, R3, FH
1663e(F7FFE99C): BL -5732 [0000H]
1664f(4000000A): MOV R0, R0, AH
1665f(81E00004): LDR R1, SP, 4H
1666f(A0100000): STR R0, R1, 0H
1667g .FIXUP D
1667g(8D00000A): LDR SB, MT, MOD0 [ORG]
1668g(80D0002C): LDR R0, SB, 2CH [data]
1669g(81E00004): LDR R1, SP, 4H
166Ag(A0100010): STR R0, R1, 10H
ENDh Register;
166Bh(F7FFEA42): BL -5566 [00AEH]
166Ch(8FE00000): LDR LNK, SP, 0H
166Dh(4EE8000C): ADD SP, SP, CH
166Eh(C700000F): B LNK
PROCEDURE H*(VAR x: Item);
BEGINi (*x.mode = Const*)
166Fi .PROC 76
166Fi(4EE9000C): SUB SP, SP, CH
1670i(AFE00000): STR LNK, SP, 0H
1671i(A0E00004): STR R0, SP, 4H
1672i(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
1673j(80E00004): LDR R0, SP, 4H
1674j(80000008): LDR R0, R0, 8H
1675j(40040001): AND R0, R0, 1H
1676k(4001000C): LSL R0, R0, CH
1677k(41002000): MOV R1, R0, 2000H
1678k(00180000): ADD R0, R1, R0
1679l .FIXUP D
1679l(8D000012): LDR SB, MT, MOD0 [ORG]
167Al(81D0002C): LDR R1, SB, 2CH [data]
167Bm(42000000): MOV R2, R0, 0H
167Cn(43000000): MOV R3, R0, 0H
167Do(F7FFE982): BL -5758 [0000H]
167Ep(4000000A): MOV R0, R0, AH
167Fp(81E00004): LDR R1, SP, 4H
1680p(A0100000): STR R0, R1, 0H
1681q .FIXUP D
1681q(8D000008): LDR SB, MT, MOD0 [ORG]
1682q(80D0002C): LDR R0, SB, 2CH [data]
1683q(81E00004): LDR R1, SP, 4H
1684q(A0100010): STR R0, R1, 10H
ENDr H;
1685r(F7FFEA28): BL -5592 [00AEH]
1686r(8FE00000): LDR LNK, SP, 0H
1687r(4EE8000C): ADD SP, SP, CH
1688r(C700000F): B LNK
PROCEDURE Adr*(VAR x: Item);
BEGINs
1689s .PROC 77
1689s(4EE9000C): SUB SP, SP, CH
168As(AFE00000): STR LNK, SP, 0H
168Bs(A0E00004): STR R0, SP, 4H
168Cs(A1E00008): STR R1, SP, 8H
IF x.mode IN {ORB.Var, ORB.Par, RegI} THENt loadAdr(x)u
168Dt(4000080C): MOV R0, R0, 80CH
168Et(81E00004): LDR R1, SP, 4H
168Ft(81100000): LDR R1, R1, 0H
1690t(41180001): ADD R1, R1, 1H
1691t(00030001): ROR R0, R0, R1
1692t(E8000004): BPL 4 [1697H]
1693u(80E00004): LDR R0, SP, 4H
1694u(81E00008): LDR R1, SP, 8H
ELSIFv (wx.mode = ORB.Const)x & (yx.type.formz = ORB.Proc)a THENb load(x)c
1695v(F7FFEC26): BL -5082 [02BCH]
1696w(E7000020): B 32 [16B7H]
1697x(80E00004): LDR R0, SP, 4H
1698x(80000000): LDR R0, R0, 0H
1699x(40090001): SUB R0, R0, 1H
169Ay(E900000A): BNE 10 [16A5H]
169Bz(80E00004): LDR R0, SP, 4H
169Cz(80000004): LDR R0, R0, 4H
169Dz(D1860B4C): BLEQ MT [trap=4, pos=34315]
169Ea(80000000): LDR R0, R0, 0H
169Fa(4009000A): SUB R0, R0, AH
16A0b(E9000004): BNE 4 [16A5H]
16A1c(80E00004): LDR R0, SP, 4H
16A2c(81E00008): LDR R1, SP, 8H
ELSIFd (ex.mode = ORB.Const)f & (gx.type.formh = ORB.String)i THENj loadStringAdr(x)k
16A3d(F7FFEB2F): BL -5329 [01D3H]
16A4e(E7000012): B 18 [16B7H]
16A5f(80E00004): LDR R0, SP, 4H
16A6f(80000000): LDR R0, R0, 0H
16A7f(40090001): SUB R0, R0, 1H
16A8g(E900000A): BNE 10 [16B3H]
16A9h(80E00004): LDR R0, SP, 4H
16AAh(80000004): LDR R0, R0, 4H
16ABh(D186524C): BLEQ MT [trap=4, pos=34386]
16ACi(80000000): LDR R0, R0, 0H
16ADi(4009000B): SUB R0, R0, BH
16AEj(E9000004): BNE 4 [16B3H]
16AFk(80E00004): LDR R0, SP, 4H
16B0k(81E00008): LDR R1, SP, 8H
ELSEl ORSm.Mark("not addressable")n
16B1l(F7FFECC1): BL -4927 [0373H]
16B2m(E7000004): B 4 [16B7H]
16B3n .FIXUP D
16B3n(8D000032): LDR SB, MT, MOD0 [ORG]
16B4n(40D88A8C): ADD R0, SB, FFFF8A8CH [data]
16B5n(41000010): MOV R1, R0, 10H
ENDo
16B6o .FIXUP P
16B6o(F7209270): BL MOD2 [ORS] PROC9
ENDp Adr;
16B7p(8FE00000): LDR LNK, SP, 0H
16B8p(4EE8000C): ADD SP, SP, CH
16B9p(C700000F): B LNK
PROCEDURE Condition*(VAR x: Item);
BEGINq (*x.mode = Const*) SetCC(x,r x.a)s
16BAq .PROC 78
16BAq(4EE9000C): SUB SP, SP, CH
16BBq(AFE00000): STR LNK, SP, 0H
16BCq(A0E00004): STR R0, SP, 4H
16BDq(A1E00008): STR R1, SP, 8H
16BEr(80E00004): LDR R0, SP, 4H
16BFr(81E00008): LDR R1, SP, 8H
16C0s(82E00004): LDR R2, SP, 4H
16C1s(82200008): LDR R2, R2, 8H
ENDt Condition;
16C2t(F7FFEA15): BL -5611 [00D8H]
16C3t(8FE00000): LDR LNK, SP, 0H
16C4t(4EE8000C): ADD SP, SP, CH
16C5t(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
16C6u .PROC 79
16C6u(4EE90008): SUB SP, SP, 8H
16C7u(AFE00000): STR LNK, SP, 0H
16C8u(A0E00004): STR R0, SP, 4H
16C9v(40000000): MOV R0, R0, 0H
16CAv .FIXUP D
16CAv(8D000017): LDR SB, MT, MOD0 [ORG]
16CBv(A0D00018): STR R0, SB, 18H [data]
16CCw(40000000): MOV R0, R0, 0H
16CDw(A0D00020): STR R0, SB, 20H
16CEx(40000000): MOV R0, R0, 0H
16CFx(A0D00024): STR R0, SB, 24H
16D0y(40000000): MOV R0, R0, 0H
16D1y(A0D0002C): STR R0, SB, 2CH
16D2z(40000000): MOV R0, R0, 0H
16D3z(A0D00038): STR R0, SB, 38H
16D4a(40000000): MOV R0, R0, 0H
16D5a(A0D0003C): STR R0, SB, 3CH
16D6b(40000000): MOV R0, R0, 0H
16D7b(A0D00040): STR R0, SB, 40H
16D8c(80E00004): LDR R0, SP, 4H
16D9c(E1000002): BEQ 2 [16DCH]
16DAc(40000001): MOV R0, R0, 1H
16DBc(E7000001): B 1 [16DDH]
16DCc(40000000): MOV R0, R0, 0H
16DDc .FIXUP D
16DDc(8D000013): LDR SB, MT, MOD0 [ORG]
16DEc(B0D00044): STR R0, SB, 44H [data]
16DFd(80E00004): LDR R0, SP, 4H
16E0d(A0D00048): STR R0, SB, 48H
IF v = 0 THENe pc := 1;f
16E1e(80E00004): LDR R0, SP, 4H
16E2e(E9000012): BNE 18 [16F5H]
16E3f(40000001): MOV R0, R0, 1H
16E4f .FIXUP D
16E4f(8D000007): LDR SB, MT, MOD0 [ORG]
16E5f(A0D00018): STR R0, SB, 18H [data]
REPEAT code[pc]g := 0;h INC(pc) UNTILi pc = 8
16E6g .FIXUP D
16E6g(8D000002): LDR SB, MT, MOD0 [ORG]
16E7g(80D00018): LDR R0, SB, 18H [data]
16E8g(41091F40): SUB R1, R0, 1F40H
16E9g(DA87D61C): BLCC MT [trap=1, pos=34774]
16EAg(40010002): LSL R0, R0, 2H
16EBg(00D80000): ADD R0, SB, R0
16ECh(41000000): MOV R1, R0, 0H
16EDh(A1000064): STR R1, R0, 64H
16EEi(40D80018): ADD R0, SB, 18H
16EFi(81000000): LDR R1, R0, 0H
16F0i(41180001): ADD R1, R1, 1H
16F1i(A1000000): STR R1, R0, 0H
ENDj
16F2j(80D00018): LDR R0, SB, 18H
16F3j(40090008): SUB R0, R0, 8H
16F4j(E9FFFFF1): BNE -15 [16E6H]
ENDk Open;
16F5k(8FE00000): LDR LNK, SP, 0H
16F6k(4EE80008): ADD SP, SP, 8H
16F7k(C700000F): B LNK
PROCEDURE SetDataSize*(dc: LONGINT);
BEGINl varsize := dc
16F8l .PROC 80
16F8l(4EE90008): SUB SP, SP, 8H
16F9l(AFE00000): STR LNK, SP, 0H
16FAl(A0E00004): STR R0, SP, 4H
ENDm SetDataSize;
16FBm(80E00004): LDR R0, SP, 4H
16FCm .FIXUP D
16FCm(8D000016): LDR SB, MT, MOD0 [ORG]
16FDm(A0D0001C): STR R0, SB, 1CH [data]
16FEm(8FE00000): LDR LNK, SP, 0H
16FFm(4EE80008): ADD SP, SP, 8H
1700m(C700000F): B LNK
PROCEDURE Header*;
BEGINn entry := pc*4;o
1701n .PROC 81
1701n .COMMAND Header
1701n(4EE90004): SUB SP, SP, 4H
1702n(AFE00000): STR LNK, SP, 0H
1703o .FIXUP D
1703o(8D000007): LDR SB, MT, MOD0 [ORG]
1704o(80D00018): LDR R0, SB, 18H [data]
1705o(40010002): LSL R0, R0, 2H
1706o(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*)
1707p(80D00048): LDR R0, SB, 48H
1708p(E9000011): BNE 17 [171AH]
1709q(6000E6FF): MOV' R0, R0, FFFFE6FFH
170Aq(4006FFFF): IOR R0, R0, FFFFFFFFH
170Bq .FIXUP D
170Bq(8D000008): LDR SB, MT, MOD0 [ORG]
170Cq(81D00018): LDR R1, SB, 18H [data]
170Dq(00080001): ADD R0, R0, R1
170Eq(A0D00064): STR R0, SB, 64H
170Fr(40000000): MOV R0, R0, 0H
1710s(4100000D): MOV R1, R0, DH
1711t(42000000): MOV R2, R0, 0H
1712u(43000000): MOV R3, R0, 0H
1713v(F7FFE930): BL -5840 [0044H]
1714w(40000000): MOV R0, R0, 0H
1715x(4100000E): MOV R1, R0, EH
1716y(42000000): MOV R2, R0, 0H
1717z(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
1718a(F7FFE92B): BL -5845 [0044H]
1719b(E700000B): B 11 [1725H]
171Ac(40000009): MOV R0, R0, 9H
171Bd(4100000E): MOV R1, R0, EH
171Ce(4200000E): MOV R2, R0, EH
171Df(43000004): MOV R3, R0, 4H
171Eg(F7FFE8FF): BL -5889 [001EH]
171Fh(4000000A): MOV R0, R0, AH
1720i(4100000F): MOV R1, R0, FH
1721j(4200000E): MOV R2, R0, EH
1722k(43000000): MOV R3, R0, 0H
1723l(F7FFE94D): BL -5811 [0071H]
ENDm
1724m(F7FFE9EF): BL -5649 [0114H]
ENDn Header;
1725n(8FE00000): LDR LNK, SP, 0H
1726n(4EE80004): ADD SP, SP, 4H
1727n(C700000F): B LNK
PROCEDURE NofPtrs(typ: ORB.Type): LONGINT;
VAR fld: ORB.Object; n: LONGINT;
BEGINo
1728o(4EE90010): SUB SP, SP, 10H
1729o(AFE00000): STR LNK, SP, 0H
172Ao(A0E00004): STR R0, SP, 4H
IF (typ.formp = ORB.Pointer)q OR (rtyp.forms = ORB.NilTyp)t THENu n := 1
172Bp(80E00004): LDR R0, SP, 4H
172Cp(D189BC4C): BLEQ MT [trap=4, pos=35260]
172Dq(80000000): LDR R0, R0, 0H
172Eq(40090007): SUB R0, R0, 7H
172Fr(E1000005): BEQ 5 [1735H]
1730s(80E00004): LDR R0, SP, 4H
1731s(D189D84C): BLEQ MT [trap=4, pos=35288]
1732t(80000000): LDR R0, R0, 0H
1733t(40090008): SUB R0, R0, 8H
1734u(E9000003): BNE 3 [1738H]
ELSIFv typw.formx = ORB.Record THENy
1735v(40000001): MOV R0, R0, 1H
1736v(A0E0000C): STR R0, SP, CH
1737w(E700002B): B 43 [1763H]
1738x(80E00004): LDR R0, SP, 4H
1739x(D18A054C): BLEQ MT [trap=4, pos=35333]
173Ay(80000000): LDR R0, R0, 0H
173By(4009000D): SUB R0, R0, DH
173Cy(E9000015): BNE 21 [1752H]
fld := typ.dscz;a n := 0;b
173Dz(80E00004): LDR R0, SP, 4H
173Ez(D18A2C4C): BLEQ MT [trap=4, pos=35372]
173Fa(80000014): LDR R0, R0, 14H
1740a(A0E00008): STR R0, SP, 8H
1741b(40000000): MOV R0, R0, 0H
1742b(A0E0000C): STR R0, SP, CH
WHILE fld # NIL DOc n := NofPtrs(fld.typed)e +f n;g fld := fld.nexth ENDi
1743c(80E00008): LDR R0, SP, 8H
1744c(E100000C): BEQ 12 [1751H]
1745d(80E00008): LDR R0, SP, 8H
1746d(D18A644C): BLEQ MT [trap=4, pos=35428]
1747e(80000010): LDR R0, R0, 10H
1748f(F7FFFFDF): BL -33 [1728H]
1749g(81E0000C): LDR R1, SP, CH
174Ag(00080001): ADD R0, R0, R1
174Bg(A0E0000C): STR R0, SP, CH
174Ch(80E00008): LDR R0, SP, 8H
174Dh(D18A7A4C): BLEQ MT [trap=4, pos=35450]
174Ei(80000008): LDR R0, R0, 8H
174Fi(A0E00008): STR R0, SP, 8H
1750i(E7FFFFF2): B -14 [1743H]
ELSIF typj.formk = ORB.Array THENl n := NofPtrs(typ.basem)n *o typ.lenp
1751j(E7000011): B 17 [1763H]
1752k(80E00004): LDR R0, SP, 4H
1753k(D18A914C): BLEQ MT [trap=4, pos=35473]
1754l(80000000): LDR R0, R0, 0H
1755l(4009000C): SUB R0, R0, CH
1756l(E900000A): BNE 10 [1761H]
1757m(80E00004): LDR R0, SP, 4H
1758m(D18AB84C): BLEQ MT [trap=4, pos=35512]
1759n(8000001C): LDR R0, R0, 1CH
175Ao(F7FFFFCD): BL -51 [1728H]
175Bp(81E00004): LDR R1, SP, 4H
175Cp(D18AC34C): BLEQ MT [trap=4, pos=35523]
ELSEq nr := 0
175Dq(81100010): LDR R1, R1, 10H
175Eq(000A0001): MUL R0, R0, R1
175Fq(A0E0000C): STR R0, SP, CH
1760r(E7000002): B 2 [1763H]
ENDs ;
1761s(40000000): MOV R0, R0, 0H
1762s(A0E0000C): STR R0, SP, CH
RETURN n
ENDt NofPtrs;
1763t(80E0000C): LDR R0, SP, CH
1764t(8FE00000): LDR LNK, SP, 0H
1765t(4EE80010): ADD SP, SP, 10H
1766t(C700000F): B LNK
PROCEDURE FindPtrs(VAR R: Files.Rider; typ: ORB.Type; adr: LONGINT);
VAR fld: ORB.Object; i, s: LONGINT;
BEGINu
1767u(4EE90020): SUB SP, SP, 20H
1768u(AFE00000): STR LNK, SP, 0H
1769u(A0E00004): STR R0, SP, 4H
176Au(A1E00008): STR R1, SP, 8H
176Bu(A2E0000C): STR R2, SP, CH
176Cu(A3E00010): STR R3, SP, 10H
IF (typ.formv = ORB.Pointer)w OR (xtyp.formy = ORB.NilTyp)z THENa Files.WriteInt(R,b adr)c
176Dv(80E0000C): LDR R0, SP, CH
176Ev(D18B824C): BLEQ MT [trap=4, pos=35714]
176Fw(80000000): LDR R0, R0, 0H
1770w(40090007): SUB R0, R0, 7H
1771x(E1000005): BEQ 5 [1777H]
1772y(80E0000C): LDR R0, SP, CH
1773y(D18B9E4C): BLEQ MT [trap=4, pos=35742]
1774z(80000000): LDR R0, R0, 0H
1775z(40090008): SUB R0, R0, 8H
1776a(E9000005): BNE 5 [177CH]
1777b(80E00004): LDR R0, SP, 4H
1778b(81E00008): LDR R1, SP, 8H
1779c(82E00010): LDR R2, SP, 10H
ELSIFd type.formf = ORB.Record THENg
177Ad .FIXUP P
177Ad(F71190C4): BL MOD1 [Files] PROC25
177Be(E700003D): B 61 [17B9H]
177Cf(80E0000C): LDR R0, SP, CH
177Df(D18BDB4C): BLEQ MT [trap=4, pos=35803]
177Eg(80000000): LDR R0, R0, 0H
177Fg(4009000D): SUB R0, R0, DH
1780g(E9000017): BNE 23 [1798H]
fld := typ.dsch;i
1781h(80E0000C): LDR R0, SP, CH
1782h(D18C024C): BLEQ MT [trap=4, pos=35842]
1783i(80000014): LDR R0, R0, 14H
1784i(A0E00014): STR R0, SP, 14H
WHILE fld # NIL DOj FindPtrs(R,k fld.typel,m fld.valn + adr)o;p fld := fld.nextq ENDr
1785j(80E00014): LDR R0, SP, 14H
1786j(E1000010): BEQ 16 [1797H]
1787k(80E00004): LDR R0, SP, 4H
1788k(81E00008): LDR R1, SP, 8H
1789l(82E00014): LDR R2, SP, 14H
178Al(D18C314C): BLEQ MT [trap=4, pos=35889]
178Bm(82200010): LDR R2, R2, 10H
178Cn(83E00014): LDR R3, SP, 14H
178Dn(D18C3A4C): BLEQ MT [trap=4, pos=35898]
178Eo(83300034): LDR R3, R3, 34H
178Fo(84E00010): LDR R4, SP, 10H
1790o(03380004): ADD R3, R3, R4
1791p(F7FFFFD5): BL -43 [1767H]
1792q(80E00014): LDR R0, SP, 14H
1793q(D18C524C): BLEQ MT [trap=4, pos=35922]
1794r(80000008): LDR R0, R0, 8H
1795r(A0E00014): STR R0, SP, 14H
1796r(E7FFFFEE): B -18 [1785H]
ELSIF typs.formt = ORB.Array THENu
1797s(E7000021): B 33 [17B9H]
1798t(80E0000C): LDR R0, SP, CH
1799t(D18C694C): BLEQ MT [trap=4, pos=35945]
179Au(80000000): LDR R0, R0, 0H
179Bu(4009000C): SUB R0, R0, CH
179Cu(E900001C): BNE 28 [17B9H]
s := typ.basev.sizew;x
179Dv(80E0000C): LDR R0, SP, CH
179Ev(D18C8E4C): BLEQ MT [trap=4, pos=35982]
179Fw(8000001C): LDR R0, R0, 1CH
17A0w(D18C934C): BLEQ MT [trap=4, pos=35987]
17A1x(80000020): LDR R0, R0, 20H
17A2x(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
17A3y(40000000): MOV R0, R0, 0H
17A4z(81E0000C): LDR R1, SP, CH
17A5z(D18CB04C): BLEQ MT [trap=4, pos=36016]
17A6a(81100010): LDR R1, R1, 10H
17A7a(41190001): SUB R1, R1, 1H
17A8b(01090001): SUB R1, R0, R1
17A9b(EE00000F): BGT 15 [17B9H]
17AAb(A0E00018): STR R0, SP, 18H
17ABc(80E00004): LDR R0, SP, 4H
17ACc(81E00008): LDR R1, SP, 8H
17ADd(82E0000C): LDR R2, SP, CH
17AEd(D18CCA4C): BLEQ MT [trap=4, pos=36042]
17AFe(8220001C): LDR R2, R2, 1CH
17B0f(83E00018): LDR R3, SP, 18H
17B1f(84E0001C): LDR R4, SP, 1CH
17B2f(033A0004): MUL R3, R3, R4
17B3g(84E00010): LDR R4, SP, 10H
17B4g(03380004): ADD R3, R3, R4
17B5h(F7FFFFB1): BL -79 [1767H]
ENDi
17B6i(80E00018): LDR R0, SP, 18H
17B7i(40080001): ADD R0, R0, 1H
17B8i(E7FFFFEB): B -21 [17A4H]
ENDj FindPtrs;
17B9j(8FE00000): LDR LNK, SP, 0H
17BAj(4EE80020): ADD SP, SP, 20H
17BBj(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*)
17BCk .PROC 82
17BCk(4EE90064): SUB SP, SP, 64H
17BDk(AFE00000): STR LNK, SP, 0H
17BEk(A0E00004): STR R0, SP, 4H
17BFk(A1E00008): STR R1, SP, 8H
17C0k(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*)
17C1l .FIXUP D
17C1l(8D0000B6): LDR SB, MT, MOD0 [ORG]
17C2l(80D00048): LDR R0, SB, 48H [data]
17C3l(E900000A): BNE 10 [17CEH]
17C4m(40000000): MOV R0, R0, 0H
17C5n(41000000): MOV R1, R0, 0H
17C6o(42000000): MOV R2, R0, 0H
17C7p(43000000): MOV R3, R0, 0H
17C8q(F7FFE855): BL -6059 [001EH]
17C9r(40000000): MOV R0, R0, 0H
17CAs(41000007): MOV R1, R0, 7H
17CBt(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
17CCu(F7FFE8C4): BL -5948 [0091H]
17CDv(E700000E): B 14 [17DCH]
17CEw(40000008): MOV R0, R0, 8H
17CFx(4100000F): MOV R1, R0, FH
17D0y(4200000E): MOV R2, R0, EH
17D1z(43000000): MOV R3, R0, 0H
17D2a(F7FFE89E): BL -5986 [0071H]
17D3b(40000008): MOV R0, R0, 8H
17D4c(4100000E): MOV R1, R0, EH
17D5d(4200000E): MOV R2, R0, EH
17D6e(43000004): MOV R3, R0, 4H
17D7f(F7FFE846): BL -6074 [001EH]
17D8g(40000000): MOV R0, R0, 0H
17D9h(41000007): MOV R1, R0, 7H
17DAi(4200000F): MOV R2, R0, FH
ENDj ;
17DBj(F7FFE8B5): BL -5963 [0091H]
obj := ORB.topScope.nextk;l nofimps := 0;m comsize := 4;n nofptrs := 0;o
17DCk .FIXUP D
17DCk(8D40001B): LDR SB, MT, MOD4 [ORB]
17DDk(80D00004): LDR R0, SB, VAR4
17DEk(D18E874C): BLEQ MT [trap=4, pos=36487]
17DFl(80000008): LDR R0, R0, 8H
17E0l(A0E00010): STR R0, SP, 10H
17E1m(40000000): MOV R0, R0, 0H
17E2m(A0E0001C): STR R0, SP, 1CH
17E3n(40000004): MOV R0, R0, 4H
17E4n(A0E00018): STR R0, SP, 18H
17E5o(40000000): MOV R0, R0, 0H
17E6o(A0E00020): STR R0, SP, 20H
WHILE obj # NIL DOp
17E7p(80E00010): LDR R0, SP, 10H
17E8p(E1000059): BEQ 89 [1842H]
IF (obj.classq = ORB.Mod)r & (sobj.dsct # ORB.system)u THENv INC(nofimps) (*count imports*)
17E9q(80E00010): LDR R0, SP, 10H
17EAq(D18EDD4C): BLEQ MT [trap=4, pos=36573]
17EBr(90000000): LDR R0, R0, 0H
17ECr(40090008): SUB R0, R0, 8H
17EDs(E900000B): BNE 11 [17F9H]
17EEt(80E00010): LDR R0, SP, 10H
17EFt(D18EF34C): BLEQ MT [trap=4, pos=36595]
17F0u(8000000C): LDR R0, R0, CH
17F1u .FIXUP D
17F1u(8D400015): LDR SB, MT, MOD4 [ORB]
17F2u(81D00005): LDR R1, SB, VAR5
17F3u(00090001): SUB R0, R0, R1
17F4v(E1000004): BEQ 4 [17F9H]
ELSIFw (xobj.exnoy # 0)z & (aobj.classb = ORB.Const)c & (dobj.typee.formf = ORB.Proc)g
17F5w(80E0001C): LDR R0, SP, 1CH
17F6w(40080001): ADD R0, R0, 1H
17F7w(A0E0001C): STR R0, SP, 1CH
17F8x(E7000044): B 68 [183DH]
17F9y(80E00010): LDR R0, SP, 10H
17FAy(D18F3B4C): BLEQ MT [trap=4, pos=36667]
17FBz(90000001): LDR R0, R0, 1H
17FCa(E1000034): BEQ 52 [1831H]
17FDb(80E00010): LDR R0, SP, 10H
17FEb(D18F4D4C): BLEQ MT [trap=4, pos=36685]
17FFc(90000000): LDR R0, R0, 0H
1800c(40090001): SUB R0, R0, 1H
1801d(E900002F): BNE 47 [1831H]
1802e(80E00010): LDR R0, SP, 10H
1803e(D18F664C): BLEQ MT [trap=4, pos=36710]
1804f(80000010): LDR R0, R0, 10H
1805f(D18F6B4C): BLEQ MT [trap=4, pos=36715]
1806g(80000000): LDR R0, R0, 0H
1807g(4009000A): SUB R0, R0, AH
& (hobj.typei.nofparj = 0)k & (lobj.typem.basen = ORB.noType)o THENp i := 0;q (*count commands*)
1808h(E9000028): BNE 40 [1831H]
1809i(80E00010): LDR R0, SP, 10H
180Ai(D18F8D4C): BLEQ MT [trap=4, pos=36749]
180Bj(80000010): LDR R0, R0, 10H
180Cj(D18F944C): BLEQ MT [trap=4, pos=36756]
180Dk(8000000C): LDR R0, R0, CH
180El(E9000022): BNE 34 [1831H]
180Fm(80E00010): LDR R0, SP, 10H
1810m(D18FA54C): BLEQ MT [trap=4, pos=36773]
1811n(80000010): LDR R0, R0, 10H
1812n(D18FAA4C): BLEQ MT [trap=4, pos=36778]
1813o(8000001C): LDR R0, R0, 1CH
1814o .FIXUP D
1814o(8D400023): LDR SB, MT, MOD4 [ORB]
1815o(81D0000D): LDR R1, SB, VAR13
1816o(00090001): SUB R0, R0, R1
1817p(E9000019): BNE 25 [1831H]
1818q(40000000): MOV R0, R0, 0H
1819q(A0E00014): STR R0, SP, 14H
WHILE obj.namer[i]s # 0X DOt INC(i) ENDu ;
181Ar(80E00010): LDR R0, SP, 10H
181Br(D18FEF4C): BLEQ MT [trap=4, pos=36847]
181Cs(81E00014): LDR R1, SP, 14H
181Ds(42190020): SUB R2, R1, 20H
181Es(DA8FF21C): BLCC MT [trap=1, pos=36850]
181Fs(00080001): ADD R0, R0, R1
1820t(90000014): LDR R0, R0, 14H
1821t(E1000004): BEQ 4 [1826H]
1822u(80E00014): LDR R0, SP, 14H
1823u(40080001): ADD R0, R0, 1H
1824u(A0E00014): STR R0, SP, 14H
1825u(E7FFFFF4): B -12 [181AH]
i := (i+4)v DIV 4 *w 4;x INC(comsize, i+4)y
1826v(80E00014): LDR R0, SP, 14H
1827v(40080004): ADD R0, R0, 4H
1828w(40020002): ASR R0, R0, 2H
1829x(40010002): LSL R0, R0, 2H
182Ax(A0E00014): STR R0, SP, 14H
182By(80E00014): LDR R0, SP, 14H
182Cy(40080004): ADD R0, R0, 4H
ELSIFz obja.classb = ORB.Var THENc INC(nofptrs, NofPtrs(obj.typed)e)f (*count pointers*)
182Dz(81E00018): LDR R1, SP, 18H
182Ez(01180000): ADD R1, R1, R0
182Fz(A1E00018): STR R1, SP, 18H
1830a(E700000C): B 12 [183DH]
1831b(80E00010): LDR R0, SP, 10H
1832b(D1904D4C): BLEQ MT [trap=4, pos=36941]
1833c(90000000): LDR R0, R0, 0H
1834c(40090002): SUB R0, R0, 2H
1835c(E9000007): BNE 7 [183DH]
1836d(80E00010): LDR R0, SP, 10H
1837d(D1907A4C): BLEQ MT [trap=4, pos=36986]
1838e(80000010): LDR R0, R0, 10H
1839f(F7FFFEEE): BL -274 [1728H]
ENDg ;
183Ag(81E00020): LDR R1, SP, 20H
183Bg(01180000): ADD R1, R1, R0
183Cg(A1E00020): STR R1, SP, 20H
obj := obj.nexth
183Dh(80E00010): LDR R0, SP, 10H
183Eh(D190B24C): BLEQ MT [trap=4, pos=37042]
ENDi ;
183Fi(80000008): LDR R0, R0, 8H
1840i(A0E00010): STR R0, SP, 10H
1841i(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*)
1842j .FIXUP D
1842j(8D00002E): LDR SB, MT, MOD0 [ORG]
1843j(80D0001C): LDR R0, SB, 1CH [data]
1844j(81D00024): LDR R1, SB, 24H
1845j(00080001): ADD R0, R0, R1
1846k(81E00018): LDR R1, SP, 18H
1847k(00080001): ADD R0, R0, R1
1848l(81D00018): LDR R1, SB, 18H
1849l(82E0001C): LDR R2, SP, 1CH
184Al(01180002): ADD R1, R1, R2
184Bm(82E0000C): LDR R2, SP, CH
184Cm(01180002): ADD R1, R1, R2
184Dn(82E00020): LDR R2, SP, 20H
184En(01180002): ADD R1, R1, R2
184Fo(41180001): ADD R1, R1, 1H
1850p(41110002): LSL R1, R1, 2H
1851p(00080001): ADD R0, R0, R1
1852p(A0E00024): STR R0, SP, 24H
ORB.MakeFileName(name,q modid,r ".rsc")s;t (*write code file*)
1853q(40E80028): ADD R0, SP, 28H
1854r(81E00004): LDR R1, SP, 4H
1855r(42000020): MOV R2, R0, 20H
1856s(43D88A9C): ADD R3, SB, FFFF8A9CH
1857s(44000005): MOV R4, R0, 5H
1858t .FIXUP P
1858t(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
1859u(40E80028): ADD R0, SP, 28H
185Au(41000020): MOV R1, R0, 20H
185Bv .FIXUP P
185Bv(F7103003): BL MOD1 [Files] PROC3
185Cv(A0E00048): STR R0, SP, 48H
185Dw(40E8004C): ADD R0, SP, 4CH
185Ew .FIXUP D
185Ew(8D10001C): LDR SB, MT, MOD1 [Files]
185Fw(41D80001): ADD R1, SB, VAR1
1860x(82E00048): LDR R2, SP, 48H
1861y(43000000): MOV R3, R0, 0H
1862z .FIXUP P
1862z(F710B007): BL MOD1 [Files] PROC11
1863a(40E8004C): ADD R0, SP, 4CH
1864a .FIXUP D
1864a(8D100006): LDR SB, MT, MOD1 [Files]
1865a(41D80001): ADD R1, SB, VAR1
1866b(82E00004): LDR R2, SP, 4H
1867b(43000020): MOV R3, R0, 20H
1868c .FIXUP P
1868c(F711C006): BL MOD1 [Files] PROC28
1869d(40E8004C): ADD R0, SP, 4CH
186Ad .FIXUP D
186Ad(8D100006): LDR SB, MT, MOD1 [Files]
186Bd(41D80001): ADD R1, SB, VAR1
186Ce(82E00008): LDR R2, SP, 8H
186Df .FIXUP P
186Df(F7119005): BL MOD1 [Files] PROC25
186Eg(40E8004C): ADD R0, SP, 4CH
186Fg .FIXUP D
186Fg(8D100005): LDR SB, MT, MOD1 [Files]
1870g(41D80001): ADD R1, SB, VAR1
1871h .FIXUP D
1871h(8D000002): LDR SB, MT, MOD0 [ORG]
1872h(82D00048): LDR R2, SB, 48H [data]
1873i .FIXUP P
1873i(F7116006): BL MOD1 [Files] PROC22
Files.WriteInt(R,j size)k;l
1874j(40E8004C): ADD R0, SP, 4CH
1875j .FIXUP D
1875j(8D100004): LDR SB, MT, MOD1 [Files]
1876j(41D80001): ADD R1, SB, VAR1
1877k(82E00024): LDR R2, SP, 24H
1878l .FIXUP P
1878l(F7119005): BL MOD1 [Files] PROC25
obj := ORB.topScope.nextm;n
1879m .FIXUP D
1879m(8D400004): LDR SB, MT, MOD4 [ORB]
187Am(80D00004): LDR R0, SB, VAR4
187Bm(D1922D4C): BLEQ MT [trap=4, pos=37421]
187Cn(80000008): LDR R0, R0, 8H
187Dn(A0E00010): STR R0, SP, 10H
WHILE (obj # NIL)o & (pobj.classq = ORB.Mod)r DOs (*imports*)
187Eo(80E00010): LDR R0, SP, 10H
187Fp(E1000026): BEQ 38 [18A6H]
1880q(80E00010): LDR R0, SP, 10H
1881q(D192514C): BLEQ MT [trap=4, pos=37457]
1882r(90000000): LDR R0, R0, 0H
1883r(40090008): SUB R0, R0, 8H
1884s(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 ;
1885t(80E00010): LDR R0, SP, 10H
1886t(D1927D4C): BLEQ MT [trap=4, pos=37501]
1887u(8000000C): LDR R0, R0, CH
1888u .FIXUP D
1888u(8D40000F): LDR SB, MT, MOD4 [ORB]
1889u(81D00005): LDR R1, SB, VAR5
188Au(00090001): SUB R0, R0, R1
188Bu(E1000015): BEQ 21 [18A1H]
188Cv(40E8004C): ADD R0, SP, 4CH
188Dv .FIXUP D
188Dv(8D100005): LDR SB, MT, MOD1 [Files]
188Ev(41D80001): ADD R1, SB, VAR1
188Fw(82E00010): LDR R2, SP, 10H
1890w(E1000005): BEQ 5 [1896H]
1891w(832FFFF8): LDR R3, R2, FFFFFFF8H
1892w(83300004): LDR R3, R3, 4H
1893w .FIXUP D
1893w(8D400006): LDR SB, MT, MOD4 [ORB]
1894w(44D80002): ADD R4, SB, VAR2
1895w(04490003): SUB R4, R4, R3
1896w(D992B42C): BLNE MT [trap=2, pos=37556]
1897x(42280038): ADD R2, R2, 38H
1898x(43000020): MOV R3, R0, 20H
1899y .FIXUP P
1899y(F711C021): BL MOD1 [Files] PROC28
189Az(40E8004C): ADD R0, SP, 4CH
189Bz .FIXUP D
189Bz(8D100008): LDR SB, MT, MOD1 [Files]
189Cz(41D80001): ADD R1, SB, VAR1
189Da(82E00010): LDR R2, SP, 10H
189Ea(D192D84C): BLEQ MT [trap=4, pos=37592]
189Fb(82200034): LDR R2, R2, 34H
18A0c .FIXUP P
18A0c(F7119007): BL MOD1 [Files] PROC25
obj := obj.nextd
18A1d(80E00010): LDR R0, SP, 10H
18A2d(D192F54C): BLEQ MT [trap=4, pos=37621]
ENDe ;
18A3e(80000008): LDR R0, R0, 8H
18A4e(A0E00010): STR R0, SP, 10H
18A5e(E7FFFFD8): B -40 [187EH]
Files.Write(R,f 0X)g;h
18A6f(40E8004C): ADD R0, SP, 4CH
18A7f .FIXUP D
18A7f(8D10000C): LDR SB, MT, MOD1 [Files]
18A8f(41D80001): ADD R1, SB, VAR1
18A9g(42000000): MOV R2, R0, 0H
18AAh .FIXUP P
18AAh(F711800A): BL MOD1 [Files] PROC24
Files.WriteInt(R,i tdx*4)j;k
18ABi(40E8004C): ADD R0, SP, 4CH
18ACi .FIXUP D
18ACi(8D100005): LDR SB, MT, MOD1 [Files]
18ADi(41D80001): ADD R1, SB, VAR1
18AEj .FIXUP D
18AEj(8D000002): LDR SB, MT, MOD0 [ORG]
18AFj(82D00020): LDR R2, SB, 20H [data]
18B0j(42210002): LSL R2, R2, 2H
18B1k .FIXUP P
18B1k(F7119007): BL MOD1 [Files] PROC25
i := 0;l
18B2l(40000000): MOV R0, R0, 0H
18B3l(A0E00014): STR R0, SP, 14H
WHILE i < tdx DOm Files.WriteInt(R,n data[i]o)p;q INC(i) ENDr ; (*type descriptors*)
18B4m(80E00014): LDR R0, SP, 14H
18B5m .FIXUP D
18B5m(8D000007): LDR SB, MT, MOD0 [ORG]
18B6m(81D00020): LDR R1, SB, 20H [data]
18B7m(00090001): SUB R0, R0, R1
18B8m(ED00000F): BGE 15 [18C8H]
18B9n(40E8004C): ADD R0, SP, 4CH
18BAn .FIXUP D
18BAn(8D100005): LDR SB, MT, MOD1 [Files]
18BBn(41D80001): ADD R1, SB, VAR1
18BCo(82E00014): LDR R2, SP, 14H
18BDo(43290078): SUB R3, R2, 78H
18BEo(DA93701C): BLCC MT [trap=1, pos=37744]
18BFo(42210002): LSL R2, R2, 2H
18C0o .FIXUP D
18C0o(8D000006): LDR SB, MT, MOD0 [ORG]
18C1o(02D80002): ADD R2, SB, R2 [global array]
18C2p(82207D64): LDR R2, R2, 7D64H
18C3q .FIXUP P
18C3q(F7119012): BL MOD1 [Files] PROC25
18C4r(80E00014): LDR R0, SP, 14H
18C5r(40080001): ADD R0, R0, 1H
18C6r(A0E00014): STR R0, SP, 14H
18C7r(E7FFFFEC): B -20 [18B4H]
Files.WriteInt(R,s varsize - tdx*4)t;u (*data*)
18C8s(40E8004C): ADD R0, SP, 4CH
18C9s .FIXUP D
18C9s(8D100009): LDR SB, MT, MOD1 [Files]
18CAs(41D80001): ADD R1, SB, VAR1
18CBt .FIXUP D
18CBt(8D000002): LDR SB, MT, MOD0 [ORG]
18CCt(82D00020): LDR R2, SB, 20H [data]
18CDt(42210002): LSL R2, R2, 2H
18CEt(83D0001C): LDR R3, SB, 1CH
18CFt(02390002): SUB R2, R3, R2
18D0u .FIXUP P
18D0u(F711900D): BL MOD1 [Files] PROC25
Files.WriteInt(R,v strx)w;x
18D1v(40E8004C): ADD R0, SP, 4CH
18D2v .FIXUP D
18D2v(8D100007): LDR SB, MT, MOD1 [Files]
18D3v(41D80001): ADD R1, SB, VAR1
18D4w .FIXUP D
18D4w(8D000002): LDR SB, MT, MOD0 [ORG]
18D5w(82D00024): LDR R2, SB, 24H [data]
18D6x .FIXUP P
18D6x(F7119006): BL MOD1 [Files] PROC25
FOR i := 0 TOy strx-1 DOz Filesa.Write(R,b str[i]c)d ENDe ;f (*strings*)
18D7y(40000000): MOV R0, R0, 0H
18D8z .FIXUP D
18D8z(8D000004): LDR SB, MT, MOD0 [ORG]
18D9z(81D00024): LDR R1, SB, 24H [data]
18DAz(41190001): SUB R1, R1, 1H
18DBa(01090001): SUB R1, R0, R1
18DCa(EE00000E): BGT 14 [18EBH]
18DDa(A0E00014): STR R0, SP, 14H
18DEb(40E8004C): ADD R0, SP, 4CH
18DFb .FIXUP D
18DFb(8D100007): LDR SB, MT, MOD1 [Files]
18E0b(41D80001): ADD R1, SB, VAR1
18E1c(82E00014): LDR R2, SP, 14H
18E2c(43290960): SUB R3, R2, 960H
18E3c(DA94151C): BLCC MT [trap=1, pos=37909]
18E4c .FIXUP D
18E4c(8D000005): LDR SB, MT, MOD0 [ORG]
18E5c(02D80002): ADD R2, SB, R2 [global array]
18E6d(92207F44): LDR R2, R2, 7F44H
18E7e .FIXUP P
18E7e(F7118011): BL MOD1 [Files] PROC24
18E8f(80E00014): LDR R0, SP, 14H
18E9f(40080001): ADD R0, R0, 1H
18EAf(E7FFFFED): B -19 [18D8H]
Files.WriteInt(R,g pc)h;i (*code len*)
18EBg(40E8004C): ADD R0, SP, 4CH
18ECg .FIXUP D
18ECg(8D100008): LDR SB, MT, MOD1 [Files]
18EDg(41D80001): ADD R1, SB, VAR1
18EEh .FIXUP D
18EEh(8D000002): LDR SB, MT, MOD0 [ORG]
18EFh(82D00018): LDR R2, SB, 18H [data]
18F0i .FIXUP P
18F0i(F7119009): BL MOD1 [Files] PROC25
FOR i := 0 TOj pc-1 DOk Filesl.WriteInt(R,m code[i]n)o ENDp ;q (*program*)
18F1j(40000000): MOV R0, R0, 0H
18F2k .FIXUP D
18F2k(8D000004): LDR SB, MT, MOD0 [ORG]
18F3k(81D00018): LDR R1, SB, 18H [data]
18F4k(41190001): SUB R1, R1, 1H
18F5l(01090001): SUB R1, R0, R1
18F6l(EE00000F): BGT 15 [1906H]
18F7l(A0E00014): STR R0, SP, 14H
18F8m(40E8004C): ADD R0, SP, 4CH
18F9m .FIXUP D
18F9m(8D100007): LDR SB, MT, MOD1 [Files]
18FAm(41D80001): ADD R1, SB, VAR1
18FBn(82E00014): LDR R2, SP, 14H
18FCn(43291F40): SUB R3, R2, 1F40H
18FDn(DA94861C): BLCC MT [trap=1, pos=38022]
18FEn(42210002): LSL R2, R2, 2H
18FFn .FIXUP D
18FFn(8D000006): LDR SB, MT, MOD0 [ORG]
1900n(02D80002): ADD R2, SB, R2 [global array]
1901o(82200064): LDR R2, R2, 64H
1902p .FIXUP P
1902p(F7119012): BL MOD1 [Files] PROC25
1903q(80E00014): LDR R0, SP, 14H
1904q(40080001): ADD R0, R0, 1H
1905q(E7FFFFEC): B -20 [18F2H]
obj := ORB.topScope.nextr;s
1906r .FIXUP D
1906r(8D400007): LDR SB, MT, MOD4 [ORB]
1907r(80D00004): LDR R0, SB, VAR4
1908r(D194B74C): BLEQ MT [trap=4, pos=38071]
1909s(80000008): LDR R0, R0, 8H
190As(A0E00010): STR R0, SP, 10H
WHILE obj # NIL DOt (*commands*)
190Bt(80E00010): LDR R0, SP, 10H
190Ct(E1000033): BEQ 51 [1940H]
IF (obj.exnou # 0)v & (wobj.classx = ORB.Const)y & (zobj.typea.formb = ORB.Proc)c &
190Du(80E00010): LDR R0, SP, 10H
190Eu(D194F04C): BLEQ MT [trap=4, pos=38128]
190Fv(90000001): LDR R0, R0, 1H
1910w(E100002A): BEQ 42 [193BH]
1911x(80E00010): LDR R0, SP, 10H
1912x(D195024C): BLEQ MT [trap=4, pos=38146]
1913y(90000000): LDR R0, R0, 0H
1914y(40090001): SUB R0, R0, 1H
1915z(E9000025): BNE 37 [193BH]
1916a(80E00010): LDR R0, SP, 10H
1917a(D1951B4C): BLEQ MT [trap=4, pos=38171]
1918b(80000010): LDR R0, R0, 10H
1919b(D195204C): BLEQ MT [trap=4, pos=38176]
191Ac(80000000): LDR R0, R0, 0H
191Bc(4009000A): SUB R0, R0, AH
(dobj.typee.nofparf = 0)g & (hobj.typei.basej = ORB.noType)k THENl
191Cd(E900001E): BNE 30 [193BH]
191De(80E00010): LDR R0, SP, 10H
191Ee(D195424C): BLEQ MT [trap=4, pos=38210]
191Ff(80000010): LDR R0, R0, 10H
1920f(D195494C): BLEQ MT [trap=4, pos=38217]
1921g(8000000C): LDR R0, R0, CH
1922h(E9000018): BNE 24 [193BH]
1923i(80E00010): LDR R0, SP, 10H
1924i(D1955A4C): BLEQ MT [trap=4, pos=38234]
1925j(80000010): LDR R0, R0, 10H
1926j(D1955F4C): BLEQ MT [trap=4, pos=38239]
1927k(8000001C): LDR R0, R0, 1CH
1928k .FIXUP D
1928k(8D400022): LDR SB, MT, MOD4 [ORB]
1929k(81D0000D): LDR R1, SB, VAR13
192Ak(00090001): SUB R0, R0, R1
192Bl(E900000F): BNE 15 [193BH]
Files.WriteString(R,m obj.namen)o;p Files.WriteInt(R,q obj.valr)s
192Cm(40E8004C): ADD R0, SP, 4CH
192Dm .FIXUP D
192Dm(8D100005): LDR SB, MT, MOD1 [Files]
192Em(41D80001): ADD R1, SB, VAR1
192Fn(82E00010): LDR R2, SP, 10H
1930n(D195984C): BLEQ MT [trap=4, pos=38296]
1931o(42280014): ADD R2, R2, 14H
1932o(43000020): MOV R3, R0, 20H
1933p .FIXUP P
1933p(F711C031): BL MOD1 [Files] PROC28
1934q(40E8004C): ADD R0, SP, 4CH
1935q .FIXUP D
1935q(8D100008): LDR SB, MT, MOD1 [Files]
1936q(41D80001): ADD R1, SB, VAR1
1937r(82E00010): LDR R2, SP, 10H
1938r(D195B44C): BLEQ MT [trap=4, pos=38324]
1939s(82200034): LDR R2, R2, 34H
ENDt ;
193At .FIXUP P
193At(F7119007): BL MOD1 [Files] PROC25
obj := obj.nextu
193Bu(80E00010): LDR R0, SP, 10H
193Cu(D195D74C): BLEQ MT [trap=4, pos=38359]
ENDv ;
193Dv(80000008): LDR R0, R0, 8H
193Ev(A0E00010): STR R0, SP, 10H
193Fv(E7FFFFCB): B -53 [190BH]
Files.Write(R,w 0X)x;y
1940w(40E8004C): ADD R0, SP, 4CH
1941w .FIXUP D
1941w(8D10000C): LDR SB, MT, MOD1 [Files]
1942w(41D80001): ADD R1, SB, VAR1
1943x(42000000): MOV R2, R0, 0H
1944y .FIXUP P
1944y(F711800A): BL MOD1 [Files] PROC24
Files.WriteInt(R,z nofent)a;b Files.WriteInt(R,c entry)d;e
1945z(40E8004C): ADD R0, SP, 4CH
1946z .FIXUP D
1946z(8D100005): LDR SB, MT, MOD1 [Files]
1947z(41D80001): ADD R1, SB, VAR1
1948a(82E0000C): LDR R2, SP, CH
1949b .FIXUP P
1949b(F7119005): BL MOD1 [Files] PROC25
194Ac(40E8004C): ADD R0, SP, 4CH
194Bc .FIXUP D
194Bc(8D100005): LDR SB, MT, MOD1 [Files]
194Cc(41D80001): ADD R1, SB, VAR1
194Dd .FIXUP D
194Dd(8D000002): LDR SB, MT, MOD0 [ORG]
194Ed(82D00028): LDR R2, SB, 28H [data]
194Fe .FIXUP P
194Fe(F7119006): BL MOD1 [Files] PROC25
obj := ORB.topScope.nextf;g
1950f .FIXUP D
1950f(8D400003): LDR SB, MT, MOD4 [ORB]
1951f(80D00004): LDR R0, SB, VAR4
1952f(D1964F4C): BLEQ MT [trap=4, pos=38479]
1953g(80000008): LDR R0, R0, 8H
1954g(A0E00010): STR R0, SP, 10H
WHILE obj # NIL DOh (*entries*)
1955h(80E00010): LDR R0, SP, 10H
1956h(E100005E): BEQ 94 [19B5H]
IF obj.exnoi # 0 THENj
1957i(80E00010): LDR R0, SP, 10H
1958i(D196864C): BLEQ MT [trap=4, pos=38534]
1959j(90000001): LDR R0, R0, 1H
195Aj(E1000055): BEQ 85 [19B0H]
IF (obj.classk = ORB.Const)l & (mobj.typen.formo = ORB.Proc)p OR (qobj.classr = ORB.Var)s THENt
195Bk(80E00010): LDR R0, SP, 10H
195Ck(D196A54C): BLEQ MT [trap=4, pos=38565]
195Dl(90000000): LDR R0, R0, 0H
195El(40090001): SUB R0, R0, 1H
195Fm(E9000007): BNE 7 [1967H]
1960n(80E00010): LDR R0, SP, 10H
1961n(D196BE4C): BLEQ MT [trap=4, pos=38590]
1962o(80000010): LDR R0, R0, 10H
1963o(D196C34C): BLEQ MT [trap=4, pos=38595]
1964p(80000000): LDR R0, R0, 0H
1965p(4009000A): SUB R0, R0, AH
1966q(E1000005): BEQ 5 [196CH]
1967r(80E00010): LDR R0, SP, 10H
1968r(D196DD4C): BLEQ MT [trap=4, pos=38621]
1969s(90000000): LDR R0, R0, 0H
196As(40090002): SUB R0, R0, 2H
196Bt(E9000008): BNE 8 [1974H]
Files.WriteInt(R,u obj.valv)w
196Cu(40E8004C): ADD R0, SP, 4CH
196Du .FIXUP D
196Du(8D10001D): LDR SB, MT, MOD1 [Files]
196Eu(41D80001): ADD R1, SB, VAR1
196Fv(82E00010): LDR R2, SP, 10H
1970v(D197114C): BLEQ MT [trap=4, pos=38673]
1971w(82200034): LDR R2, R2, 34H
ELSIFx objy.classz = ORB.Typ THENa
1972x .FIXUP P
1972x(F7119023): BL MOD1 [Files] PROC25
1973y(E700003C): B 60 [19B0H]
1974z(80E00010): LDR R0, SP, 10H
1975z(D1972A4C): BLEQ MT [trap=4, pos=38698]
1976a(90000000): LDR R0, R0, 0H
1977a(40090005): SUB R0, R0, 5H
1978a(E9000037): BNE 55 [19B0H]
IF obj.typeb.formc = ORB.Record THENd Files.WriteInt(R,e obj.typef.leng MOD 10000H)h
1979b(80E00010): LDR R0, SP, 10H
197Ab(D1974F4C): BLEQ MT [trap=4, pos=38735]
197Bc(80000010): LDR R0, R0, 10H
197Cc(D197544C): BLEQ MT [trap=4, pos=38740]
197Dd(80000000): LDR R0, R0, 0H
197Ed(4009000D): SUB R0, R0, DH
197Fd(E900000B): BNE 11 [198BH]
1980e(40E8004C): ADD R0, SP, 4CH
1981e .FIXUP D
1981e(8D100014): LDR SB, MT, MOD1 [Files]
1982e(41D80001): ADD R1, SB, VAR1
1983f(82E00010): LDR R2, SP, 10H
1984f(D197824C): BLEQ MT [trap=4, pos=38786]
1985g(82200010): LDR R2, R2, 10H
1986g(D197864C): BLEQ MT [trap=4, pos=38790]
1987h(82200010): LDR R2, R2, 10H
1988h(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
1989i .FIXUP P
1989i(F7119017): BL MOD1 [Files] PROC25
198Aj(E7000025): B 37 [19B0H]
198Bk(80E00010): LDR R0, SP, 10H
198Ck(D197AC4C): BLEQ MT [trap=4, pos=38828]
198Dl(80000010): LDR R0, R0, 10H
198El(D197B14C): BLEQ MT [trap=4, pos=38833]
198Fm(80000000): LDR R0, R0, 0H
1990m(40090007): SUB R0, R0, 7H
1991n(E900001E): BNE 30 [19B0H]
1992o(80E00010): LDR R0, SP, 10H
1993o(D197CD4C): BLEQ MT [trap=4, pos=38861]
1994p(80000010): LDR R0, R0, 10H
1995p(D197D24C): BLEQ MT [trap=4, pos=38866]
1996q(8000001C): LDR R0, R0, 1CH
1997q(D197D94C): BLEQ MT [trap=4, pos=38873]
1998r(80000018): LDR R0, R0, 18H
1999s(E100000A): BEQ 10 [19A4H]
199At(80E00010): LDR R0, SP, 10H
199Bt(D197ED4C): BLEQ MT [trap=4, pos=38893]
199Cu(80000010): LDR R0, R0, 10H
199Du(D197F24C): BLEQ MT [trap=4, pos=38898]
199Ev(8000001C): LDR R0, R0, 1CH
199Fv(D197F94C): BLEQ MT [trap=4, pos=38905]
19A0w(80000018): LDR R0, R0, 18H
19A1w(D197FE4C): BLEQ MT [trap=4, pos=38910]
19A2x(90000001): LDR R0, R0, 1H
19A3y(E900000C): BNE 12 [19B0H]
Files.WriteInt(R,z obj.typea.baseb.lenc MOD 10000H)d
19A4z(40E8004C): ADD R0, SP, 4CH
19A5z .FIXUP D
19A5z(8D100024): LDR SB, MT, MOD1 [Files]
19A6z(41D80001): ADD R1, SB, VAR1
19A7a(82E00010): LDR R2, SP, 10H
19A8a(D198304C): BLEQ MT [trap=4, pos=38960]
19A9b(82200010): LDR R2, R2, 10H
19AAb(D198354C): BLEQ MT [trap=4, pos=38965]
19ABc(8220001C): LDR R2, R2, 1CH
19ACc(D198394C): BLEQ MT [trap=4, pos=38969]
19ADd(82200010): LDR R2, R2, 10H
19AEd(4224FFFF): AND R2, R2, FFFFFFFFH
ENDe
19AFe .FIXUP P
19AFe(F7119026): BL MOD1 [Files] PROC25
END
END ;
obj := obj.nextf
19B0f(80E00010): LDR R0, SP, 10H
19B1f(D198814C): BLEQ MT [trap=4, pos=39041]
ENDg ;
19B2g(80000008): LDR R0, R0, 8H
19B3g(A0E00010): STR R0, SP, 10H
19B4g(E7FFFFA0): B -96 [1955H]
obj := ORB.topScope.nexth;i
19B5h .FIXUP D
19B5h(8D400010): LDR SB, MT, MOD4 [ORB]
19B6h(80D00004): LDR R0, SB, VAR4
19B7h(D198A84C): BLEQ MT [trap=4, pos=39080]
19B8i(80000008): LDR R0, R0, 8H
19B9i(A0E00010): STR R0, SP, 10H
WHILE obj # NIL DOj (*pointer variables*)
19BAj(80E00010): LDR R0, SP, 10H
19BBj(E1000014): BEQ 20 [19D0H]
IF obj.classk = ORB.Var THENl FindPtrs(R,m obj.typen,o obj.valp)q ENDr ;
19BCk(80E00010): LDR R0, SP, 10H
19BDk(D198EA4C): BLEQ MT [trap=4, pos=39146]
19BEl(90000000): LDR R0, R0, 0H
19BFl(40090002): SUB R0, R0, 2H
19C0l(E900000A): BNE 10 [19CBH]
19C1m(40E8004C): ADD R0, SP, 4CH
19C2m .FIXUP D
19C2m(8D10000D): LDR SB, MT, MOD1 [Files]
19C3m(41D80001): ADD R1, SB, VAR1
19C4n(82E00010): LDR R2, SP, 10H
19C5n(D1990E4C): BLEQ MT [trap=4, pos=39182]
19C6o(82200010): LDR R2, R2, 10H
19C7p(83E00010): LDR R3, SP, 10H
19C8p(D199174C): BLEQ MT [trap=4, pos=39191]
19C9q(83300034): LDR R3, R3, 34H
19CAr(F7FFFD9C): BL -612 [1767H]
obj := obj.nexts
19CBs(80E00010): LDR R0, SP, 10H
19CCs(D199344C): BLEQ MT [trap=4, pos=39220]
ENDt ;
19CDt(80000008): LDR R0, R0, 8H
19CEt(A0E00010): STR R0, SP, 10H
19CFt(E7FFFFEA): B -22 [19BAH]
Files.WriteInt(R,u -1)v;w
19D0u(40E8004C): ADD R0, SP, 4CH
19D1u .FIXUP D
19D1u(8D10000F): LDR SB, MT, MOD1 [Files]
19D2u(41D80001): ADD R1, SB, VAR1
19D3v(5200FFFF): MOV R2, R0, FFFFFFFFH
19D4w .FIXUP P
19D4w(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
19D5x(40E8004C): ADD R0, SP, 4CH
19D6x .FIXUP D
19D6x(8D100005): LDR SB, MT, MOD1 [Files]
19D7x(41D80001): ADD R1, SB, VAR1
19D8y .FIXUP D
19D8y(8D000002): LDR SB, MT, MOD0 [ORG]
19D9y(82D00038): LDR R2, SB, 38H [data]
19DAz .FIXUP P
19DAz(F7119006): BL MOD1 [Files] PROC25
19DBa(40E8004C): ADD R0, SP, 4CH
19DCa .FIXUP D
19DCa(8D100004): LDR SB, MT, MOD1 [Files]
19DDa(41D80001): ADD R1, SB, VAR1
19DEb .FIXUP D
19DEb(8D000002): LDR SB, MT, MOD0 [ORG]
19DFb(82D0003C): LDR R2, SB, 3CH [data]
19E0c .FIXUP P
19E0c(F7119006): BL MOD1 [Files] PROC25
19E1d(40E8004C): ADD R0, SP, 4CH
19E2d .FIXUP D
19E2d(8D100004): LDR SB, MT, MOD1 [Files]
19E3d(41D80001): ADD R1, SB, VAR1
19E4e .FIXUP D
19E4e(8D000002): LDR SB, MT, MOD0 [ORG]
19E5e(82D00040): LDR R2, SB, 40H [data]
19E6f .FIXUP P
19E6f(F7119006): BL MOD1 [Files] PROC25
19E7g(40E8004C): ADD R0, SP, 4CH
19E8g .FIXUP D
19E8g(8D100004): LDR SB, MT, MOD1 [Files]
19E9g(41D80001): ADD R1, SB, VAR1
19EAh .FIXUP D
19EAh(8D000002): LDR SB, MT, MOD0 [ORG]
19EBh(82D00028): LDR R2, SB, 28H [data]
19ECi .FIXUP P
19ECi(F7119006): BL MOD1 [Files] PROC25
Files.Write(R,j "O")k;l Files.Register(F)m
19EDj(40E8004C): ADD R0, SP, 4CH
19EEj .FIXUP D
19EEj(8D100004): LDR SB, MT, MOD1 [Files]
19EFj(41D80001): ADD R1, SB, VAR1
19F0k(4200004F): MOV R2, R0, 4FH
19F1l .FIXUP P
19F1l(F7118005): BL MOD1 [Files] PROC24
19F2m(80E00048): LDR R0, SP, 48H
ENDn Close;
19F3n .FIXUP P
19F3n(F7104002): BL MOD1 [Files] PROC4
19F4n(8FE00000): LDR LNK, SP, 0H
19F5n(4EE80064): ADD SP, SP, 64H
19F6n(C700000F): B LNK
BEGINo
19F7o .PROC 0
19F7o .ENTRYPOINT
19F7o(4EE90004): SUB SP, SP, 4H
19F8o(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
19F9p(40000001): MOV R0, R0, 1H
19FAp .FIXUP D
19FAp(8D00000C): LDR SB, MT, MOD0 [ORG]
19FBp(A0D0004C): STR R0, SB, 4CH [data]
19FCq(40000009): MOV R0, R0, 9H
19FDq(A0D00050): STR R0, SB, 50H
19FEr(40000005): MOV R0, R0, 5H
19FFr(A0D00054): STR R0, SB, 54H
1A00s(40000006): MOV R0, R0, 6H
1A01s(A0D00058): STR R0, SB, 58H
1A02t(4000000E): MOV R0, R0, EH
1A03t(A0D0005C): STR R0, SB, 5CH
ENDu ORG.v
1A04u(4000000D): MOV R0, R0, DH
1A05u(A0D00060): STR R0, SB, 60H
1A06v(8FE00000): LDR LNK, SP, 0H
1A07v(4EE80004): ADD SP, SP, 4H
1A08v(C700000F): B LNK