ORP

Used Exports

BUILTINS: BOOLEAN CHAR DEC INC INTEGER LONGINT NEW
ORB: Array Bool Byte Char CloseScope Const Export Fld Import Init Int Mod NewObj NilTyp NoTyp ObjDesc.class ObjDesc.exno ObjDesc.expo ObjDesc.lev ObjDesc.name ObjDesc.next ObjDesc.rdo ObjDesc.type ObjDesc.val Object OpenScope Par Pointer Proc Real Record SFunc SProc Set String Typ Type TypeDesc.base TypeDesc.dsc TypeDesc.form TypeDesc.len TypeDesc.mno TypeDesc.nofpar TypeDesc.size TypeDesc.typobj Var boolType byteType charType intType nilType noType realType setType thisObj thisfield thisimport topScope
ORG: ADC Abs AddOp Adr And1 And2 Assert BJump Bit BuildTD CBJump CFJump Call CheckRegs Close Condition Copy CopyString DeRef DivOp Enter FJump Field FixLink Fixup Float Floor For0 For1 For2 Get H Header Here In Include Increment Index IntRelation Item Item.a Item.b Item.mode Item.rdo Item.type LDPSR LDREG Led Len MakeConstItem MakeItem MakeRealItem MakeStringItem MulOp Neg New Not Odd Open OpenArrayParam Or1 Or2 Ord Pack PrepCall Put RealOp RealRelation Register Return SBC Set SetDataSize SetOp Shift Singleton Store StoreStruct StrToChar StringParam StringRelation TypeTest UML Unpk ValueParam VarParam WordSize pc
ORS: CopyId Get Ident Init Mark and array arrow bar becomes begin by case char colon comma const div do else elsif end eql errcnt false for geq id ident if import in int is ival lbrace lbrak lparen minus mod module neq nil not of or period plus pointer procedure rbrace rbrak rdiv real record repeat return rparen rval semicolon slen string then times to true type until upto var while
Oberon: Collect GetSelection Log Par Par.pos Par.text
Texts: Append Char Name Open OpenScanner OpenWriter Scan Scanner Scanner.c Scanner.class Scanner.nextCh Scanner.s Text TextDesc.len Write WriteHex WriteInt WriteLn WriteString Writer Writer.buf

MODULE ORP; (*N. Wirth 1.7.97 / 23.9.2017 Oberon compiler for RISC in Oberon-07*)
.MODULE ORP (KEY E6FCC519, VERSION 1, SIZE 00006ADC)
.IMPORT Texts (KEY 0B9E9984)
.IMPORT Fonts (KEY F4C9F557)
.IMPORT Files (KEY 73F5D686)
.IMPORT Oberon (KEY A89CCEE2)
.IMPORT Display (KEY 4C08D3EA)
.IMPORT Viewers (KEY 25ABF199)
.IMPORT ORS (KEY 76547166)
.IMPORT ORB (KEY 8A2CD362)
.IMPORT ORG (KEY 98F2A948)
.TYPEDESC 00000040 FFFFFFFF FFFFFFFF FFFFFFFF 00000024 00000020 FFFFFFFF
.DATA 74H
.STRING 90H "undef"
.STRING 98H "undef"
.STRING A0H "identifier expected"
.STRING B4H "not Boolean"
.STRING C0H "not Integer"
.STRING CCH "not Real"
.STRING D8H "not Set"
.STRING E0H "not Int"
.STRING E8H "invalid set"
.STRING F4H "not a constant"
.STRING 104H "read-only"
.STRING 110H "remove asterisk"
.STRING 120H "not an extension"
.STRING 134H "not an extension"
.STRING 148H "incompatible types"
.STRING 15CH "type mismatch"
.STRING 16CH "not an array"
.STRING 17CH "no ]"
.STRING 184H "undef"
.STRING 18CH "not a record"
.STRING 19CH "ident?"
.STRING 1A4H "not a pointer"
.STRING 1B4H "guard type expected"
.STRING 1C8H "not an identifier"
.STRING 1DCH " ) missing"
.STRING 1E8H "incompatible parameters"
.STRING 200H "comma?"
.STRING 208H ") missing"
.STRING 214H "too few params"
.STRING 224H "too many params"
.STRING 234H "no ("
.STRING 23CH "no )"
.STRING 244H "bad type"
.STRING 250H "bad type"
.STRING 25CH "not an array"
.STRING 26CH "bad type"
.STRING 278H "casting not allowed"
.STRING 28CH "must be a type"
.STRING 29CH "wrong nof params"
.STRING 2B0H " } missing"
.STRING 2BCH "missing comma"
.STRING 2CCH "expression expected"
.STRING 2E0H "not a function"
.STRING 2F0H "no )"
.STRING 2F8H "no }"
.STRING 300H "not a factor"
.STRING 310H "bad type"
.STRING 31CH "bad type"
.STRING 328H "only = or #"
.STRING 334H "illegal comparison"
.STRING 348H "only = or #"
.STRING 354H "only = or #"
.STRING 360H "illegal comparison"
.STRING 374H "no ("
.STRING 37CH "no )"
.STRING 384H "not a pointer to record"
.STRING 39CH "bad type"
.STRING 3A8H "wrong nof parameters"
.STRING 3C0H "not a type"
.STRING 3CCH ": expected"
.STRING 3D8H "type id expected"
.STRING 3ECH "statement expected"
.STRING 400H "illegal assignment"
.STRING 414H "should be :="
.STRING 424H "not a procedure"
.STRING 434H "missing parameters"
.STRING 448H "not a procedure"
.STRING 458H "illegal assignment"
.STRING 46CH "not a procedure"
.STRING 47CH "no THEN"
.STRING 484H "no THEN"
.STRING 48CH "no END"
.STRING 494H "no DO"
.STRING 49CH "no DO"
.STRING 4A4H "no END"
.STRING 4ACH "missing UNTIL"
.STRING 4BCH "no TO"
.STRING 4C4H "no DO"
.STRING 4CCH "no END"
.STRING 4D4H ":= expected"
.STRING 4E0H "identifier expected"
.STRING 4F4H "OF expected"
.STRING 500H "numeric case not implemented"
.STRING 520H "OF expected"
.STRING 52CH "ident expected"
.STRING 53CH "no END"
.STRING 544H "missing semicolon?"
.STRING 558H "ident?"
.STRING 560H ":?"
.STRING 564H "not a valid length"
.STRING 578H "dyn array not allowed"
.STRING 590H "missing OF"
.STRING 59CH "extension of local types not implemented"
.STRING 5C8H "invalid extension"
.STRING 5DCH "type expected"
.STRING 5ECH "ident expected"
.STRING 5FCH "no )"
.STRING 604H "mult def"
.STRING 610H "comma expected"
.STRING 620H "colon expected"
.STRING 630H "dyn array not allowed"
.STRING 648H " ; or END"
.STRING 654H "too many parameters"
.STRING 668H "no )"
.STRING 670H "illegal function type"
.STRING 688H "type identifier expected"
.STRING 6A4H "not a type"
.STRING 6B0H "OF ?"
.STRING 6B8H "multi-dimensional open arrays not implemented"
.STRING 6E8H "identifier expected"
.STRING 6FCH "ptr base must be global"
.STRING 714H "not a type"
.STRING 720H "not a type or undefined"
.STRING 738H "no END"
.STRING 740H "no TO"
.STRING 748H "external base type not implemented"
.STRING 76CH "no valid base type"
.STRING 780H "must point to named record"
.STRING 79CH "illegal type"
.STRING 7ACH "declaration?"
.STRING 7BCH "= ?"
.STRING 7C0H "expression not constant"
.STRING 7D8H "; missing"
.STRING 7E4H "=?"
.STRING 7E8H "; missing"
.STRING 7F4H "; missing"
.STRING 800H "undefined pointer base of"
.STRING 81CH "declaration in bad order"
.STRING 838H "no ;"
.STRING 840H "no ;"
.STRING 848H "this is not a function"
.STRING 860H "wrong result type"
.STRING 874H "function without result"
.STRING 88CH "no END"
.STRING 894H "no match"
.STRING 8A0H "no proc id"
.STRING 8ACH " compiling "
.STRING 8BCH "identifier expected"
.STRING 8D0H "no ;"
.STRING 8D8H "id expected"
.STRING 8E4H "comma missing"
.STRING 8F4H "no ;"
.STRING 8FCH "no ;"
.STRING 904H "no END"
.STRING 90CH "no match"
.STRING 918H "identifier missing"
.STRING 92CH "period missing"
.STRING 93CH " new symbol file"
.STRING 950H "compilation FAILED"
.STRING 964H "must start with MODULE"
.STRING 97CH " not found"
.STRING 988H "OR Compiler 4.4.2017"
.POINTER_REFERENCES 60H 64H 68H 6CH 8CH 80H
.FIXUP T 0H
IMPORT Texts, Oberon, ORS, ORB, ORG;
(*Author: Niklaus Wirth, 2014.
Parser of Oberon-RISC compiler. Uses Scanner ORS to obtain symbols (tokens),
ORB for definition of data structures and for handling import and export, and
ORG to produce binary code. ORP performs type checking and data allocation.
Parser is target-independent, except for part of the handling of allocations.*)
TYPE PtrBase = POINTER TO PtrBaseDesc;
PtrBaseDesc = RECORD (*list of names of pointer base types*)
name: ORS.Ident; type: ORB.Type; next: PtrBase
END ;
VAR sym: INTEGER; (*last symbol read*)
dc: LONGINT; (*data counter*)
level, exno, version: INTEGER;
newSF: BOOLEAN; (*option flag*)
expression: PROCEDURE (VAR x: ORG.Item); (*to avoid forward reference*)
Type: PROCEDURE (VAR type: ORB.Type);
FormalType: PROCEDURE (VAR typ: ORB.Type; dim: INTEGER);
modid: ORS.Ident;
pbsList: PtrBase; (*list of names of pointer base types*)
dummy: ORB.Object;
W: Texts.Writer;
PROCEDURE Check(s: INTEGER; msg: ARRAY OF CHAR);
BEGINa
0000a(4EE90010): SUB SP, SP, 10H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
0003a(A1E00008): STR R1, SP, 8H
0004a(A2E0000C): STR R2, SP, CH
IF sym = s THENb ORS.Get(sym)c ELSEd ORSe.Mark(msg)f ENDg
0005b .FIXUP D
0005b(8D000005): LDR SB, MT, MOD0 [ORP]
0006b(80D0001C): LDR R0, SB, 1CH [data]
0007b(81E00004): LDR R1, SP, 4H
0008b(00090001): SUB R0, R0, R1
0009b(E9000004): BNE 4 [000EH]
000Ac .FIXUP D
000Ac(8D000005): LDR SB, MT, MOD0 [ORP]
000Bc(40D8001C): ADD R0, SB, 1CH [data]
000Cd .FIXUP P
000Cd(F770A00C): BL MOD7 [ORS] PROC10
000De(E7000003): B 3 [0011H]
000Ef(80E00008): LDR R0, SP, 8H
000Ff(81E0000C): LDR R1, SP, CH
0010g .FIXUP P
0010g(F7709004): BL MOD7 [ORS] PROC9
ENDh Check;
0011h(8FE00000): LDR LNK, SP, 0H
0012h(4EE80010): ADD SP, SP, 10H
0013h(C700000F): B LNK
PROCEDURE qualident(VAR obj: ORB.Object);
BEGINi obj := ORB.thisObj();j ORS.Get(sym)k;l
0014i(4EE90008): SUB SP, SP, 8H
0015i(AFE00000): STR LNK, SP, 0H
0016i(A0E00004): STR R0, SP, 4H
0017j .FIXUP P
0017j(F7810007): BL MOD8 [ORB] PROC16
0018j(81E00004): LDR R1, SP, 4H
0019j(A0100000): STR R0, R1, 0H
001Ak .FIXUP D
001Ak(8D000010): LDR SB, MT, MOD0 [ORP]
001Bk(40D8001C): ADD R0, SB, 1CH [data]
001Cl .FIXUP P
001Cl(F770A005): BL MOD7 [ORS] PROC10
IF obj = NIL THENm ORS.Mark("undef")n;o obj := dummy ENDp ;
001Dm(80E00004): LDR R0, SP, 4H
001Em(80000000): LDR R0, R0, 0H
001Fm(E9000008): BNE 8 [0028H]
0020n .FIXUP D
0020n(8D000006): LDR SB, MT, MOD0 [ORP]
0021n(40D80090): ADD R0, SB, 90H ["undef"]
0022n(41000006): MOV R1, R0, 6H
0023o .FIXUP P
0023o(F7709007): BL MOD7 [ORS] PROC9
0024p .FIXUP D
0024p(8D000004): LDR SB, MT, MOD0 [ORP]
0025p(80D00064): LDR R0, SB, 64H [data]
0026p(81E00004): LDR R1, SP, 4H
0027p(A0100000): STR R0, R1, 0H
IF (sym = ORS.period)q & (robj.classs = ORB.Mod)t THENu
0028q .FIXUP D
0028q(8D000004): LDR SB, MT, MOD0 [ORP]
0029q(80D0001C): LDR R0, SB, 1CH [data]
002Aq(40090012): SUB R0, R0, 12H
002Br(E9000029): BNE 41 [0055H]
002Cs(80E00004): LDR R0, SP, 4H
002Ds(80000000): LDR R0, R0, 0H
002Es(D1059A4C): BLEQ MT [trap=4, pos=1434]
002Ft(90000000): LDR R0, R0, 0H
0030t(40090008): SUB R0, R0, 8H
0031u(E9000023): BNE 35 [0055H]
ORS.Get(sym)v;w
0032v .FIXUP D
0032v(8D00000A): LDR SB, MT, MOD0 [ORP]
0033v(40D8001C): ADD R0, SB, 1CH [data]
0034w .FIXUP P
0034w(F770A011): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENx obj := ORB.thisimport(obj)y;z ORS.Get(sym)a;b
0035x .FIXUP D
0035x(8D000003): LDR SB, MT, MOD0 [ORP]
0036x(80D0001C): LDR R0, SB, 1CH [data]
0037x(4009001F): SUB R0, R0, 1FH
0038x(E9000014): BNE 20 [004DH]
0039y(80E00004): LDR R0, SP, 4H
003Ay(80000000): LDR R0, R0, 0H
003Bz .FIXUP P
003Bz(F7811007): BL MOD8 [ORB] PROC17
003Cz(81E00004): LDR R1, SP, 4H
003Dz(A0100000): STR R0, R1, 0H
003Ea .FIXUP D
003Ea(8D000009): LDR SB, MT, MOD0 [ORP]
003Fa(40D8001C): ADD R0, SB, 1CH [data]
0040b .FIXUP P
0040b(F770A005): BL MOD7 [ORS] PROC10
IF obj = NIL THENc ORS.Mark("undef")d;e obj := dummy ENDf
0041c(80E00004): LDR R0, SP, 4H
0042c(80000000): LDR R0, R0, 0H
0043c(E9000008): BNE 8 [004CH]
0044d .FIXUP D
0044d(8D000006): LDR SB, MT, MOD0 [ORP]
0045d(40D80098): ADD R0, SB, 98H ["undef"]
0046d(41000006): MOV R1, R0, 6H
0047e .FIXUP P
0047e(F7709007): BL MOD7 [ORS] PROC9
0048f .FIXUP D
0048f(8D000004): LDR SB, MT, MOD0 [ORP]
0049f(80D00064): LDR R0, SB, 64H [data]
004Af(81E00004): LDR R1, SP, 4H
004Bf(A0100000): STR R0, R1, 0H
ELSE ORSg.Mark("identifier expected")h;i obj := dummy
004Cg(E7000008): B 8 [0055H]
004Dh .FIXUP D
004Dh(8D000005): LDR SB, MT, MOD0 [ORP]
004Eh(40D800A0): ADD R0, SB, A0H ["identifier expected"]
004Fh(41000014): MOV R1, R0, 14H
0050i .FIXUP P
0050i(F7709009): BL MOD7 [ORS] PROC9
ENDj
0051j .FIXUP D
0051j(8D000004): LDR SB, MT, MOD0 [ORP]
0052j(80D00064): LDR R0, SB, 64H [data]
0053j(81E00004): LDR R1, SP, 4H
0054j(A0100000): STR R0, R1, 0H
END
ENDk qualident;
0055k(8FE00000): LDR LNK, SP, 0H
0056k(4EE80008): ADD SP, SP, 8H
0057k(C700000F): B LNK
PROCEDURE CheckBool(VAR x: ORG.Item);
BEGINl
0058l(4EE9000C): SUB SP, SP, CH
0059l(AFE00000): STR LNK, SP, 0H
005Al(A0E00004): STR R0, SP, 4H
005Bl(A1E00008): STR R1, SP, 8H
IF x.type.formm # ORB.Bool THENn ORS.Mark("not Boolean")o;p x.type := ORB.boolType ENDq
005Cm(80E00004): LDR R0, SP, 4H
005Dm(80000004): LDR R0, R0, 4H
005Em(D106E44C): BLEQ MT [trap=4, pos=1764]
005Fn(80000000): LDR R0, R0, 0H
0060n(40090002): SUB R0, R0, 2H
0061n(E1000008): BEQ 8 [006AH]
0062o .FIXUP D
0062o(8D000011): LDR SB, MT, MOD0 [ORP]
0063o(40D800B4): ADD R0, SB, B4H ["not Boolean"]
0064o(4100000C): MOV R1, R0, CH
0065p .FIXUP P
0065p(F7709015): BL MOD7 [ORS] PROC9
0066q .FIXUP D
0066q(8D800004): LDR SB, MT, MOD8 [ORB]
0067q(80D00007): LDR R0, SB, VAR7
0068q(81E00004): LDR R1, SP, 4H
0069q(A0100004): STR R0, R1, 4H
ENDr CheckBool;
006Ar(8FE00000): LDR LNK, SP, 0H
006Br(4EE8000C): ADD SP, SP, CH
006Cr(C700000F): B LNK
PROCEDURE CheckInt(VAR x: ORG.Item);
BEGINs
006Ds(4EE9000C): SUB SP, SP, CH
006Es(AFE00000): STR LNK, SP, 0H
006Fs(A0E00004): STR R0, SP, 4H
0070s(A1E00008): STR R1, SP, 8H
IF x.type.formt # ORB.Int THENu ORS.Mark("not Integer")v;w x.type := ORB.intType ENDx
0071t(80E00004): LDR R0, SP, 4H
0072t(80000004): LDR R0, R0, 4H
0073t(D1077C4C): BLEQ MT [trap=4, pos=1916]
0074u(80000000): LDR R0, R0, 0H
0075u(40090004): SUB R0, R0, 4H
0076u(E1000008): BEQ 8 [007FH]
0077v .FIXUP D
0077v(8D000011): LDR SB, MT, MOD0 [ORP]
0078v(40D800C0): ADD R0, SB, C0H ["not Integer"]
0079v(4100000C): MOV R1, R0, CH
007Aw .FIXUP P
007Aw(F7709015): BL MOD7 [ORS] PROC9
007Bx .FIXUP D
007Bx(8D800004): LDR SB, MT, MOD8 [ORB]
007Cx(80D00009): LDR R0, SB, VAR9
007Dx(81E00004): LDR R1, SP, 4H
007Ex(A0100004): STR R0, R1, 4H
ENDy CheckInt;
007Fy(8FE00000): LDR LNK, SP, 0H
0080y(4EE8000C): ADD SP, SP, CH
0081y(C700000F): B LNK
PROCEDURE CheckReal(VAR x: ORG.Item);
BEGINz
0082z(4EE9000C): SUB SP, SP, CH
0083z(AFE00000): STR LNK, SP, 0H
0084z(A0E00004): STR R0, SP, 4H
0085z(A1E00008): STR R1, SP, 8H
IF x.type.forma # ORB.Real THENb ORS.Mark("not Real")c;d x.type := ORB.realType ENDe
0086a(80E00004): LDR R0, SP, 4H
0087a(80000004): LDR R0, R0, 4H
0088a(D108124C): BLEQ MT [trap=4, pos=2066]
0089b(80000000): LDR R0, R0, 0H
008Ab(40090005): SUB R0, R0, 5H
008Bb(E1000008): BEQ 8 [0094H]
008Cc .FIXUP D
008Cc(8D000011): LDR SB, MT, MOD0 [ORP]
008Dc(40D800CC): ADD R0, SB, CCH ["not Real"]
008Ec(41000009): MOV R1, R0, 9H
008Fd .FIXUP P
008Fd(F7709015): BL MOD7 [ORS] PROC9
0090e .FIXUP D
0090e(8D800004): LDR SB, MT, MOD8 [ORB]
0091e(80D0000A): LDR R0, SB, VAR10
0092e(81E00004): LDR R1, SP, 4H
0093e(A0100004): STR R0, R1, 4H
ENDf CheckReal;
0094f(8FE00000): LDR LNK, SP, 0H
0095f(4EE8000C): ADD SP, SP, CH
0096f(C700000F): B LNK
PROCEDURE CheckSet(VAR x: ORG.Item);
BEGINg
0097g(4EE9000C): SUB SP, SP, CH
0098g(AFE00000): STR LNK, SP, 0H
0099g(A0E00004): STR R0, SP, 4H
009Ag(A1E00008): STR R1, SP, 8H
IF x.type.formh # ORB.Set THENi ORS.Mark("not Set")j;k x.type := ORB.setType ENDl
009Bh(80E00004): LDR R0, SP, 4H
009Ch(80000004): LDR R0, R0, 4H
009Dh(D108A74C): BLEQ MT [trap=4, pos=2215]
009Ei(80000000): LDR R0, R0, 0H
009Fi(40090006): SUB R0, R0, 6H
00A0i(E1000008): BEQ 8 [00A9H]
00A1j .FIXUP D
00A1j(8D000011): LDR SB, MT, MOD0 [ORP]
00A2j(40D800D8): ADD R0, SB, D8H ["not Set"]
00A3j(41000008): MOV R1, R0, 8H
00A4k .FIXUP P
00A4k(F7709015): BL MOD7 [ORS] PROC9
00A5l .FIXUP D
00A5l(8D800004): LDR SB, MT, MOD8 [ORB]
00A6l(80D0000B): LDR R0, SB, VAR11
00A7l(81E00004): LDR R1, SP, 4H
00A8l(A0100004): STR R0, R1, 4H
ENDm CheckSet;
00A9m(8FE00000): LDR LNK, SP, 0H
00AAm(4EE8000C): ADD SP, SP, CH
00ABm(C700000F): B LNK
PROCEDURE CheckSetVal(VAR x: ORG.Item);
BEGINn
00ACn(4EE9000C): SUB SP, SP, CH
00ADn(AFE00000): STR LNK, SP, 0H
00AEn(A0E00004): STR R0, SP, 4H
00AFn(A1E00008): STR R1, SP, 8H
IF x.type.formo # ORB.Int THENp ORS.Mark("not Int")q;r x.type := ORB.setType
00B0o(80E00004): LDR R0, SP, 4H
00B1o(80000004): LDR R0, R0, 4H
00B2o(D1093C4C): BLEQ MT [trap=4, pos=2364]
00B3p(80000000): LDR R0, R0, 0H
00B4p(40090004): SUB R0, R0, 4H
00B5p(E1000009): BEQ 9 [00BFH]
00B6q .FIXUP D
00B6q(8D000011): LDR SB, MT, MOD0 [ORP]
00B7q(40D800E0): ADD R0, SB, E0H ["not Int"]
00B8q(41000008): MOV R1, R0, 8H
00B9r .FIXUP P
00B9r(F7709015): BL MOD7 [ORS] PROC9
ELSIFs xt.mode = ORB.Const THENu
00BAs .FIXUP D
00BAs(8D800004): LDR SB, MT, MOD8 [ORB]
00BBs(80D0000B): LDR R0, SB, VAR11
00BCs(81E00004): LDR R1, SP, 4H
00BDs(A0100004): STR R0, R1, 4H
00BEt(E7000010): B 16 [00CFH]
00BFu(80E00004): LDR R0, SP, 4H
00C0u(80000000): LDR R0, R0, 0H
00C1u(40090001): SUB R0, R0, 1H
00C2u(E900000C): BNE 12 [00CFH]
IF (x.a < 0)v OR (wx.a >= 32)x THENy ORS.Mark("invalid set")z ENDa
00C3v(80E00004): LDR R0, SP, 4H
00C4v(80000008): LDR R0, R0, 8H
00C5v(40090000): SUB R0, R0, 0H
00C6w(E5000004): BLT 4 [00CBH]
00C7x(80E00004): LDR R0, SP, 4H
00C8x(80000008): LDR R0, R0, 8H
00C9x(40090020): SUB R0, R0, 20H
00CAy(E5000004): BLT 4 [00CFH]
00CBz .FIXUP D
00CBz(8D000011): LDR SB, MT, MOD0 [ORP]
00CCz(40D800E8): ADD R0, SB, E8H ["invalid set"]
00CDz(4100000C): MOV R1, R0, CH
00CEa .FIXUP P
00CEa(F7709015): BL MOD7 [ORS] PROC9
END
ENDb CheckSetVal;
00CFb(8FE00000): LDR LNK, SP, 0H
00D0b(4EE8000C): ADD SP, SP, CH
00D1b(C700000F): B LNK
PROCEDURE CheckConst(VAR x: ORG.Item);
BEGINc
00D2c(4EE9000C): SUB SP, SP, CH
00D3c(AFE00000): STR LNK, SP, 0H
00D4c(A0E00004): STR R0, SP, 4H
00D5c(A1E00008): STR R1, SP, 8H
IF x.mode # ORB.Const THENd ORS.Mark("not a constant")e;f x.mode := ORB.Const ENDg
00D6d(80E00004): LDR R0, SP, 4H
00D7d(80000000): LDR R0, R0, 0H
00D8d(40090001): SUB R0, R0, 1H
00D9d(E1000007): BEQ 7 [00E1H]
00DAe .FIXUP D
00DAe(8D00000F): LDR SB, MT, MOD0 [ORP]
00DBe(40D800F4): ADD R0, SB, F4H ["not a constant"]
00DCe(4100000F): MOV R1, R0, FH
00DDf .FIXUP P
00DDf(F770900F): BL MOD7 [ORS] PROC9
00DEg(40000001): MOV R0, R0, 1H
00DFg(81E00004): LDR R1, SP, 4H
00E0g(A0100000): STR R0, R1, 0H
ENDh CheckConst;
00E1h(8FE00000): LDR LNK, SP, 0H
00E2h(4EE8000C): ADD SP, SP, CH
00E3h(C700000F): B LNK
PROCEDURE CheckReadOnly(VAR x: ORG.Item);
BEGINi
00E4i(4EE9000C): SUB SP, SP, CH
00E5i(AFE00000): STR LNK, SP, 0H
00E6i(A0E00004): STR R0, SP, 4H
00E7i(A1E00008): STR R1, SP, 8H
IF x.rdo THENj ORS.Mark("read-only")k ENDl
00E8j(80E00004): LDR R0, SP, 4H
00E9j(90000014): LDR R0, R0, 14H
00EAj(E1000004): BEQ 4 [00EFH]
00EBk .FIXUP D
00EBk(8D000011): LDR SB, MT, MOD0 [ORP]
00ECk(40D80104): ADD R0, SB, 104H ["read-only"]
00EDk(4100000A): MOV R1, R0, AH
00EEl .FIXUP P
00EEl(F7709011): BL MOD7 [ORS] PROC9
ENDm CheckReadOnly;
00EFm(8FE00000): LDR LNK, SP, 0H
00F0m(4EE8000C): ADD SP, SP, CH
00F1m(C700000F): B LNK
PROCEDURE CheckExport(VAR expo: BOOLEAN);
BEGINn
00F2n(4EE90008): SUB SP, SP, 8H
00F3n(AFE00000): STR LNK, SP, 0H
00F4n(A0E00004): STR R0, SP, 4H
IF sym = ORS.times THENo
00F5o .FIXUP D
00F5o(8D00000A): LDR SB, MT, MOD0 [ORP]
00F6o(80D0001C): LDR R0, SB, 1CH [data]
00F7o(40090001): SUB R0, R0, 1H
00F8o(E900000E): BNE 14 [0107H]
expo := TRUE;p ORS.Get(sym)q;r
00F9p(40000001): MOV R0, R0, 1H
00FAp(81E00004): LDR R1, SP, 4H
00FBp(B0100000): STR R0, R1, 0H
00FCq .FIXUP D
00FCq(8D000007): LDR SB, MT, MOD0 [ORP]
00FDq(40D8001C): ADD R0, SB, 1CH [data]
00FEr .FIXUP P
00FEr(F770A010): BL MOD7 [ORS] PROC10
IF level # 0 THENs ORS.Mark("remove asterisk")t ENDu
00FFs .FIXUP D
00FFs(8D000003): LDR SB, MT, MOD0 [ORP]
0100s(80D00024): LDR R0, SB, 24H [data]
0101s(E1000004): BEQ 4 [0106H]
0102t .FIXUP D
0102t(8D000003): LDR SB, MT, MOD0 [ORP]
0103t(40D80110): ADD R0, SB, 110H ["remove asterisk"]
0104t(41000010): MOV R1, R0, 10H
0105u .FIXUP P
0105u(F7709007): BL MOD7 [ORS] PROC9
ELSE expov := FALSE
0106v(E7000003): B 3 [010AH]
ENDw
0107w(40000000): MOV R0, R0, 0H
0108w(81E00004): LDR R1, SP, 4H
0109w(B0100000): STR R0, R1, 0H
ENDx CheckExport;
010Ax(8FE00000): LDR LNK, SP, 0H
010Bx(4EE80008): ADD SP, SP, 8H
010Cx(C700000F): B LNK
PROCEDURE IsExtension(t0, t1: ORB.Type): BOOLEAN;
BEGINy (*t1 is an extension of t0*)
010Dy(4EE9000C): SUB SP, SP, CH
010Ey(AFE00000): STR LNK, SP, 0H
010Fy(A0E00004): STR R0, SP, 4H
0110y(A1E00008): STR R1, SP, 8H
RETURN (t0 = t1)z OR (at1 # NIL)b & IsExtensionc(t0,d t1.basee)f
0111z(80E00004): LDR R0, SP, 4H
0112z(81E00008): LDR R1, SP, 8H
0113z(00090001): SUB R0, R0, R1
0114a(E1000009): BEQ 9 [011EH]
0115b(80E00008): LDR R0, SP, 8H
0116c(E1000009): BEQ 9 [0120H]
0117d(80E00004): LDR R0, SP, 4H
0118e(81E00008): LDR R1, SP, 8H
0119e(D10C784C): BLEQ MT [trap=4, pos=3192]
011Af(8110001C): LDR R1, R1, 1CH
ENDg IsExtension;
011Bg(F7FFFFF1): BL -15 [010DH]
011Cg(40090000): SUB R0, R0, 0H
011Dg(E1000002): BEQ 2 [0120H]
011Eg(40000001): MOV R0, R0, 1H
011Fg(E7000001): B 1 [0121H]
0120g(40000000): MOV R0, R0, 0H
0121g(8FE00000): LDR LNK, SP, 0H
0122g(4EE8000C): ADD SP, SP, CH
0123g(C700000F): B LNK
(* expressions *)
PROCEDURE TypeTest(VAR x: ORG.Item; T: ORB.Type; guard: BOOLEAN);
VAR xt: ORB.Type;
BEGINh xt := x.type;i
0124h(4EE90018): SUB SP, SP, 18H
0125h(AFE00000): STR LNK, SP, 0H
0126h(A0E00004): STR R0, SP, 4H
0127h(A1E00008): STR R1, SP, 8H
0128h(A2E0000C): STR R2, SP, CH
0129h(A3E00010): STR R3, SP, 10H
012Ai(80E00004): LDR R0, SP, 4H
012Bi(80000004): LDR R0, R0, 4H
012Ci(A0E00014): STR R0, SP, 14H
IF (T.formj IN {ORB.Pointer, ORB.Record})k & (lT.formm = xt.formn)o THENp
012Dj(80E0000C): LDR R0, SP, CH
012Ej(D10D214C): BLEQ MT [trap=4, pos=3361]
012Fk(41002080): MOV R1, R0, 2080H
0130k(80000000): LDR R0, R0, 0H
0131k(40080001): ADD R0, R0, 1H
0132k(01130000): ROR R1, R1, R0
0133l(E8000064): BPL 100 [0198H]
0134m(80E0000C): LDR R0, SP, CH
0135m(D10D494C): BLEQ MT [trap=4, pos=3401]
0136n(81E00014): LDR R1, SP, 14H
0137n(D10D534C): BLEQ MT [trap=4, pos=3411]
0138o(80000000): LDR R0, R0, 0H
0139o(81100000): LDR R1, R1, 0H
013Ao(00090001): SUB R0, R0, R1
013Bp(E900005C): BNE 92 [0198H]
WHILE (xt # T)q & (rxt # NIL)s DOt xt := xt.baseu ENDv ;
013Cq(80E00014): LDR R0, SP, 14H
013Dq(81E0000C): LDR R1, SP, CH
013Eq(00090001): SUB R0, R0, R1
013Fr(E1000007): BEQ 7 [0147H]
0140s(80E00014): LDR R0, SP, 14H
0141t(E1000005): BEQ 5 [0147H]
0142u(80E00014): LDR R0, SP, 14H
0143u(D10D8C4C): BLEQ MT [trap=4, pos=3468]
0144v(8000001C): LDR R0, R0, 1CH
0145v(A0E00014): STR R0, SP, 14H
0146v(E7FFFFF5): B -11 [013CH]
IF xt # T THENw xt := x.type;x
0147w(80E00014): LDR R0, SP, 14H
0148w(81E0000C): LDR R1, SP, CH
0149w(00090001): SUB R0, R0, R1
014Aw(E1000044): BEQ 68 [018FH]
014Bx(80E00004): LDR R0, SP, 4H
014Cx(80000004): LDR R0, R0, 4H
014Dx(A0E00014): STR R0, SP, 14H
IF xt.formy = ORB.Pointer THENz
014Ey(80E00014): LDR R0, SP, 14H
014Fy(D10DC84C): BLEQ MT [trap=4, pos=3528]
0150z(80000000): LDR R0, R0, 0H
0151z(40090007): SUB R0, R0, 7H
0152z(E900001A): BNE 26 [016DH]
IF IsExtension(xt.basea,b T.basec)d THENe ORG.TypeTest(x,f T.baseg,h FALSE,i guard)j;k x.type := T
0153a(80E00014): LDR R0, SP, 14H
0154a(D10DFC4C): BLEQ MT [trap=4, pos=3580]
0155b(8000001C): LDR R0, R0, 1CH
0156c(81E0000C): LDR R1, SP, CH
0157c(D10E044C): BLEQ MT [trap=4, pos=3588]
0158d(8110001C): LDR R1, R1, 1CH
0159e(F7FFFFB3): BL -77 [010DH]
015Ae(40090000): SUB R0, R0, 0H
015Be(E100000C): BEQ 12 [0168H]
015Cf(80E00004): LDR R0, SP, 4H
015Df(81E00008): LDR R1, SP, 8H
015Eg(82E0000C): LDR R2, SP, CH
015Fg(D10E214C): BLEQ MT [trap=4, pos=3617]
0160h(8220001C): LDR R2, R2, 1CH
0161i(43000000): MOV R3, R0, 0H
0162j(94E00010): LDR R4, SP, 10H
0163k .FIXUP P
0163k(F790D05E): BL MOD9 [ORG] PROC13
ELSEl ORSm.Mark("not an extension")n
0164l(80E0000C): LDR R0, SP, CH
0165l(81E00004): LDR R1, SP, 4H
0166l(A0100004): STR R0, R1, 4H
0167m(E7000004): B 4 [016CH]
0168n .FIXUP D
0168n(8D000066): LDR SB, MT, MOD0 [ORP]
0169n(40D80120): ADD R0, SB, 120H ["not an extension"]
016An(41000011): MOV R1, R0, 11H
ENDo
016Bo .FIXUP P
016Bo(F7709008): BL MOD7 [ORS] PROC9
ELSIF (pxt.formq = ORB.Record)r & (sx.mode = ORB.Par)t THENu
016Cp(E7000021): B 33 [018EH]
016Dq(80E00014): LDR R0, SP, 14H
016Eq(D10E8E4C): BLEQ MT [trap=4, pos=3726]
016Fr(80000000): LDR R0, R0, 0H
0170r(4009000D): SUB R0, R0, DH
0171s(E9000018): BNE 24 [018AH]
0172t(80E00004): LDR R0, SP, 4H
0173t(80000000): LDR R0, R0, 0H
0174t(40090003): SUB R0, R0, 3H
0175u(E9000014): BNE 20 [018AH]
IF IsExtension(xt,v T)w THENx ORG.TypeTest(x,y T,z TRUE,a guard)b;c x.type := T
0176v(80E00014): LDR R0, SP, 14H
0177w(81E0000C): LDR R1, SP, CH
0178x(F7FFFF94): BL -108 [010DH]
0179x(40090000): SUB R0, R0, 0H
017Ax(E100000A): BEQ 10 [0185H]
017By(80E00004): LDR R0, SP, 4H
017Cy(81E00008): LDR R1, SP, 8H
017Dz(82E0000C): LDR R2, SP, CH
017Ea(43000001): MOV R3, R0, 1H
017Fb(94E00010): LDR R4, SP, 10H
0180c .FIXUP P
0180c(F790D015): BL MOD9 [ORG] PROC13
ELSEd ORSe.Mark("not an extension")f
0181d(80E0000C): LDR R0, SP, CH
0182d(81E00004): LDR R1, SP, 4H
0183d(A0100004): STR R0, R1, 4H
0184e(E7000004): B 4 [0189H]
0185f .FIXUP D
0185f(8D00001D): LDR SB, MT, MOD0 [ORP]
0186f(40D80134): ADD R0, SB, 134H ["not an extension"]
0187f(41000011): MOV R1, R0, 11H
ENDg
0188g .FIXUP P
0188g(F7709008): BL MOD7 [ORS] PROC9
ELSE ORSh.Mark("incompatible types")i
0189h(E7000004): B 4 [018EH]
018Ai .FIXUP D
018Ai(8D000005): LDR SB, MT, MOD0 [ORP]
018Bi(40D80148): ADD R0, SB, 148H ["incompatible types"]
018Ci(41000013): MOV R1, R0, 13H
ENDj
018Dj .FIXUP P
018Dj(F7709005): BL MOD7 [ORS] PROC9
ELSIF ~kguard THENl ORG.MakeConstItem(x,m ORB.boolType,n 1)o
018Ek(E7000008): B 8 [0197H]
018Fl(90E00010): LDR R0, SP, 10H
0190l(E9000006): BNE 6 [0197H]
0191m(80E00004): LDR R0, SP, 4H
0192m(81E00008): LDR R1, SP, 8H
0193n .FIXUP D
0193n(8D800009): LDR SB, MT, MOD8 [ORB]
0194n(82D00007): LDR R2, SB, VAR7
0195o(43000001): MOV R3, R0, 1H
ENDp
0196p .FIXUP P
0196p(F7905009): BL MOD9 [ORG] PROC5
ELSE ORSq.Mark("type mismatch")r
0197q(E7000004): B 4 [019CH]
0198r .FIXUP D
0198r(8D000005): LDR SB, MT, MOD0 [ORP]
0199r(40D8015C): ADD R0, SB, 15CH ["type mismatch"]
019Ar(4100000E): MOV R1, R0, EH
ENDs ;
019Bs .FIXUP P
019Bs(F7709005): BL MOD7 [ORS] PROC9
IF ~guard THENt x.type := ORB.boolType ENDu
019Ct(90E00010): LDR R0, SP, 10H
019Dt(E9000004): BNE 4 [01A2H]
019Eu .FIXUP D
019Eu(8D800006): LDR SB, MT, MOD8 [ORB]
019Fu(80D00007): LDR R0, SB, VAR7
01A0u(81E00004): LDR R1, SP, 4H
01A1u(A0100004): STR R0, R1, 4H
ENDv TypeTest;
01A2v(8FE00000): LDR LNK, SP, 0H
01A3v(4EE80018): ADD SP, SP, 18H
01A4v(C700000F): B LNK
PROCEDURE selector(VAR x: ORG.Item);
VAR y: ORG.Item; obj: ORB.Object;
BEGINw
01A5w(4EE90028): SUB SP, SP, 28H
01A6w(AFE00000): STR LNK, SP, 0H
01A7w(A0E00004): STR R0, SP, 4H
01A8w(A1E00008): STR R1, SP, 8H
WHILE (sym = ORS.lbrak)x OR (ysym = ORS.period)z OR (asym = ORS.arrow)b
01A9x .FIXUP D
01A9x(8D00000B): LDR SB, MT, MOD0 [ORP]
01AAx(80D0001C): LDR R0, SB, 1CH [data]
01ABx(4009001D): SUB R0, R0, 1DH
01ACy(E1000014): BEQ 20 [01C1H]
01ADz .FIXUP D
01ADz(8D000004): LDR SB, MT, MOD0 [ORP]
01AEz(80D0001C): LDR R0, SB, 1CH [data]
01AFz(40090012): SUB R0, R0, 12H
01B0a(E1000010): BEQ 16 [01C1H]
01B1b .FIXUP D
01B1b(8D000004): LDR SB, MT, MOD0 [ORP]
01B2b(80D0001C): LDR R0, SB, 1CH [data]
01B3b(40090011): SUB R0, R0, 11H
OR (csym = ORS.lparen)d & (ex.type.formf IN {ORB.Record, ORB.Pointer})g DOh
01B4c(E100000C): BEQ 12 [01C1H]
01B5d .FIXUP D
01B5d(8D000004): LDR SB, MT, MOD0 [ORP]
01B6d(80D0001C): LDR R0, SB, 1CH [data]
01B7d(4009001C): SUB R0, R0, 1CH
01B8e(E90000CA): BNE 202 [0283H]
01B9f(80E00004): LDR R0, SP, 4H
01BAf(80000004): LDR R0, R0, 4H
01BBf(D110F84C): BLEQ MT [trap=4, pos=4344]
01BCg(41002080): MOV R1, R0, 2080H
01BDg(80000000): LDR R0, R0, 0H
01BEg(40080001): ADD R0, R0, 1H
01BFg(01130000): ROR R1, R1, R0
01C0h(E80000C2): BPL 194 [0283H]
IF sym = ORS.lbrak THENi
01C1i .FIXUP D
01C1i(8D00000C): LDR SB, MT, MOD0 [ORP]
01C2i(80D0001C): LDR R0, SB, 1CH [data]
01C3i(4009001D): SUB R0, R0, 1DH
01C4i(E900002F): BNE 47 [01F4H]
REPEAT ORS.Get(sym)j;k expression(y)l;m
01C5j .FIXUP D
01C5j(8D000004): LDR SB, MT, MOD0 [ORP]
01C6j(40D8001C): ADD R0, SB, 1CH [data]
01C7k .FIXUP P
01C7k(F770A02C): BL MOD7 [ORS] PROC10
01C8l(40E8000C): ADD R0, SP, CH
01C9l .FIXUP D
01C9l(8D900004): LDR SB, MT, MOD9 [ORG]
01CAl(41D80001): ADD R1, SB, VAR1
01CBm .FIXUP D
01CBm(8D000002): LDR SB, MT, MOD0 [ORP]
01CCm(82D00034): LDR R2, SB, 34H [data]
01CDm(D111635C): BLEQ MT [trap=5, pos=4451]
01CEm(D7000002): BL R2
IF x.type.formn = ORB.Array THENo
01CFn(80E00004): LDR R0, SP, 4H
01D0n(80000004): LDR R0, R0, 4H
01D1n(D1117C4C): BLEQ MT [trap=4, pos=4476]
01D2o(80000000): LDR R0, R0, 0H
01D3o(4009000C): SUB R0, R0, CH
01D4o(E9000011): BNE 17 [01E6H]
CheckInt(y)p;q ORG.Index(x,r y)s;t x.type := x.type.baseu
01D5p(40E8000C): ADD R0, SP, CH
01D6p .FIXUP D
01D6p(8D90000B): LDR SB, MT, MOD9 [ORG]
01D7p(41D80001): ADD R1, SB, VAR1
01D8q(F7FFFE94): BL -364 [006DH]
01D9r(80E00004): LDR R0, SP, 4H
01DAr(81E00008): LDR R1, SP, 8H
01DBs(42E8000C): ADD R2, SP, CH
01DCs .FIXUP D
01DCs(8D900006): LDR SB, MT, MOD9 [ORG]
01DDs(43D80001): ADD R3, SB, VAR1
01DEt .FIXUP P
01DEt(F790A017): BL MOD9 [ORG] PROC10
01DFu(80E00004): LDR R0, SP, 4H
01E0u(80000004): LDR R0, R0, 4H
01E1u(D111CD4C): BLEQ MT [trap=4, pos=4557]
ELSEv ORSw.Mark("not an array")x
01E2v(8000001C): LDR R0, R0, 1CH
01E3v(81E00004): LDR R1, SP, 4H
01E4v(A0100004): STR R0, R1, 4H
01E5w(E7000004): B 4 [01EAH]
01E6x .FIXUP D
01E6x(8D00000A): LDR SB, MT, MOD0 [ORP]
01E7x(40D8016C): ADD R0, SB, 16CH ["not an array"]
01E8x(4100000D): MOV R1, R0, DH
ENDy
01E9y .FIXUP P
01E9y(F770900B): BL MOD7 [ORS] PROC9
UNTIL sym # ORS.comma;z
01EAz .FIXUP D
01EAz(8D000004): LDR SB, MT, MOD0 [ORP]
01EBz(80D0001C): LDR R0, SB, 1CH [data]
01ECz(40090028): SUB R0, R0, 28H
01EDz(E1FFFFD7): BEQ -41 [01C5H]
Check(ORS.rbrak,a "no ]")b
01EEa(4000002D): MOV R0, R0, 2DH
01EFb .FIXUP D
01EFb(8D000005): LDR SB, MT, MOD0 [ORP]
01F0b(41D8017C): ADD R1, SB, 17CH ["no ]"]
01F1b(42000005): MOV R2, R0, 5H
ELSIFc symd = ORS.period THENe ORS.Get(sym)f;g
01F2c(F7FFFE0D): BL -499 [0000H]
01F3d(E700008E): B 142 [0282H]
01F4e .FIXUP D
01F4e(8D000005): LDR SB, MT, MOD0 [ORP]
01F5e(80D0001C): LDR R0, SB, 1CH [data]
01F6e(40090012): SUB R0, R0, 12H
01F7e(E900003E): BNE 62 [0236H]
01F8f .FIXUP D
01F8f(8D000004): LDR SB, MT, MOD0 [ORP]
01F9f(40D8001C): ADD R0, SB, 1CH [data]
01FAg .FIXUP P
01FAg(F770A011): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENh
01FBh .FIXUP D
01FBh(8D000003): LDR SB, MT, MOD0 [ORP]
01FCh(80D0001C): LDR R0, SB, 1CH [data]
01FDh(4009001F): SUB R0, R0, 1FH
01FEh(E9000032): BNE 50 [0231H]
IF x.type.formi = ORB.Pointer THENj ORG.DeRef(x)k;l x.type := x.type.basem ENDn ;
01FFi(80E00004): LDR R0, SP, 4H
0200i(80000004): LDR R0, R0, 4H
0201i(D112AC4C): BLEQ MT [trap=4, pos=4780]
0202j(80000000): LDR R0, R0, 0H
0203j(40090007): SUB R0, R0, 7H
0204j(E9000009): BNE 9 [020EH]
0205k(80E00004): LDR R0, SP, 4H
0206k(81E00008): LDR R1, SP, 8H
0207l .FIXUP P
0207l(F790B00D): BL MOD9 [ORG] PROC11
0208m(80E00004): LDR R0, SP, 4H
0209m(80000004): LDR R0, R0, 4H
020Am(D112E34C): BLEQ MT [trap=4, pos=4835]
020Bn(8000001C): LDR R0, R0, 1CH
020Cn(81E00004): LDR R1, SP, 4H
020Dn(A0100004): STR R0, R1, 4H
IF x.type.formo = ORB.Record THENp
020Eo(80E00004): LDR R0, SP, 4H
020Fo(80000004): LDR R0, R0, 4H
0210o(D113024C): BLEQ MT [trap=4, pos=4866]
0211p(80000000): LDR R0, R0, 0H
0212p(4009000D): SUB R0, R0, DH
0213p(E9000018): BNE 24 [022CH]
obj := ORB.thisfield(x.type)q;r ORS.Get(sym)s;t
0214q(80E00004): LDR R0, SP, 4H
0215q(80000004): LDR R0, R0, 4H
0216r .FIXUP P
0216r(F781200F): BL MOD8 [ORB] PROC18
0217r(A0E00024): STR R0, SP, 24H
0218s .FIXUP D
0218s(8D00001D): LDR SB, MT, MOD0 [ORP]
0219s(40D8001C): ADD R0, SB, 1CH [data]
021At .FIXUP P
021At(F770A004): BL MOD7 [ORS] PROC10
IF obj # NIL THENu ORG.Field(x,v obj)w;x x.type := obj.typey
021Bu(80E00024): LDR R0, SP, 24H
021Cu(E100000A): BEQ 10 [0227H]
021Dv(80E00004): LDR R0, SP, 4H
021Ev(81E00008): LDR R1, SP, 8H
021Fw(82E00024): LDR R2, SP, 24H
0220x .FIXUP P
0220x(F7909006): BL MOD9 [ORG] PROC9
0221y(80E00024): LDR R0, SP, 24H
0222y(D113904C): BLEQ MT [trap=4, pos=5008]
ELSEz ORSa.Mark("undef")b
0223z(80000010): LDR R0, R0, 10H
0224z(81E00004): LDR R1, SP, 4H
0225z(A0100004): STR R0, R1, 4H
0226a(E7000004): B 4 [022BH]
0227b .FIXUP D
0227b(8D00000F): LDR SB, MT, MOD0 [ORP]
0228b(40D80184): ADD R0, SB, 184H ["undef"]
0229b(41000006): MOV R1, R0, 6H
ENDc
022Ac .FIXUP P
022Ac(F770900A): BL MOD7 [ORS] PROC9
ELSE ORSd.Mark("not a record")e
022Bd(E7000004): B 4 [0230H]
022Ce .FIXUP D
022Ce(8D000005): LDR SB, MT, MOD0 [ORP]
022De(40D8018C): ADD R0, SB, 18CH ["not a record"]
022Ee(4100000D): MOV R1, R0, DH
ENDf
022Ff .FIXUP P
022Ff(F7709005): BL MOD7 [ORS] PROC9
ELSE ORSg.Mark("ident?")h
0230g(E7000004): B 4 [0235H]
0231h .FIXUP D
0231h(8D000005): LDR SB, MT, MOD0 [ORP]
0232h(40D8019C): ADD R0, SB, 19CH ["ident?"]
0233h(41000007): MOV R1, R0, 7H
ENDi
0234i .FIXUP P
0234i(F7709005): BL MOD7 [ORS] PROC9
ELSIF symj = ORS.arrow THENk
0235j(E700004C): B 76 [0282H]
0236k .FIXUP D
0236k(8D000005): LDR SB, MT, MOD0 [ORP]
0237k(80D0001C): LDR R0, SB, 1CH [data]
0238k(40090011): SUB R0, R0, 11H
0239k(E9000018): BNE 24 [0252H]
ORS.Get(sym)l;m
023Al .FIXUP D
023Al(8D000004): LDR SB, MT, MOD0 [ORP]
023Bl(40D8001C): ADD R0, SB, 1CH [data]
023Cm .FIXUP P
023Cm(F770A008): BL MOD7 [ORS] PROC10
IF x.type.formn = ORB.Pointer THENo ORG.DeRef(x)p;q x.type := x.type.baser
023Dn(80E00004): LDR R0, SP, 4H
023En(80000004): LDR R0, R0, 4H
023Fn(D114734C): BLEQ MT [trap=4, pos=5235]
0240o(80000000): LDR R0, R0, 0H
0241o(40090007): SUB R0, R0, 7H
0242o(E900000A): BNE 10 [024DH]
0243p(80E00004): LDR R0, SP, 4H
0244p(81E00008): LDR R1, SP, 8H
0245q .FIXUP P
0245q(F790B009): BL MOD9 [ORG] PROC11
0246r(80E00004): LDR R0, SP, 4H
0247r(80000004): LDR R0, R0, 4H
0248r(D114AA4C): BLEQ MT [trap=4, pos=5290]
ELSEs ORSt.Mark("not a pointer")u
0249s(8000001C): LDR R0, R0, 1CH
024As(81E00004): LDR R1, SP, 4H
024Bs(A0100004): STR R0, R1, 4H
024Ct(E7000004): B 4 [0251H]
024Du .FIXUP D
024Du(8D000013): LDR SB, MT, MOD0 [ORP]
024Eu(40D801A4): ADD R0, SB, 1A4H ["not a pointer"]
024Fu(4100000E): MOV R1, R0, EH
ENDv
0250v .FIXUP P
0250v(F770900B): BL MOD7 [ORS] PROC9
ELSIF (wsym = ORS.lparen)x & (yx.type.formz IN {ORB.Record, ORB.Pointer})a THENb (*type guard*)
0251w(E7000030): B 48 [0282H]
0252x .FIXUP D
0252x(8D000005): LDR SB, MT, MOD0 [ORP]
0253x(80D0001C): LDR R0, SB, 1CH [data]
0254x(4009001C): SUB R0, R0, 1CH
0255y(E900002C): BNE 44 [0282H]
0256z(80E00004): LDR R0, SP, 4H
0257z(80000004): LDR R0, R0, 4H
0258z(D1150B4C): BLEQ MT [trap=4, pos=5387]
0259a(41002080): MOV R1, R0, 2080H
025Aa(80000000): LDR R0, R0, 0H
025Ba(40080001): ADD R0, R0, 1H
025Ca(01130000): ROR R1, R1, R0
025Db(E8000024): BPL 36 [0282H]
ORS.Get(sym)c;d
025Ec .FIXUP D
025Ec(8D00000C): LDR SB, MT, MOD0 [ORP]
025Fc(40D8001C): ADD R0, SB, 1CH [data]
0260d .FIXUP P
0260d(F770A010): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENe
0261e .FIXUP D
0261e(8D000003): LDR SB, MT, MOD0 [ORP]
0262e(80D0001C): LDR R0, SB, 1CH [data]
0263e(4009001F): SUB R0, R0, 1FH
0264e(E9000014): BNE 20 [0279H]
qualident(obj)f;g
0265f(40E80024): ADD R0, SP, 24H
0266g(F7FFFDAD): BL -595 [0014H]
IF obj.classh = ORB.Typ THENi TypeTest(x,j obj.typek,l TRUE)m
0267h(80E00024): LDR R0, SP, 24H
0268h(D115A44C): BLEQ MT [trap=4, pos=5540]
0269i(90000000): LDR R0, R0, 0H
026Ai(40090005): SUB R0, R0, 5H
026Bi(E9000008): BNE 8 [0274H]
026Cj(80E00004): LDR R0, SP, 4H
026Dj(81E00008): LDR R1, SP, 8H
026Ek(82E00024): LDR R2, SP, 24H
026Fk(D115C84C): BLEQ MT [trap=4, pos=5576]
0270l(82200010): LDR R2, R2, 10H
0271m(43000001): MOV R3, R0, 1H
ELSEn ORSo.Mark("guard type expected")p
0272n(F7FFFEB1): BL -335 [0124H]
0273o(E7000004): B 4 [0278H]
0274p .FIXUP D
0274p(8D000013): LDR SB, MT, MOD0 [ORP]
0275p(40D801B4): ADD R0, SB, 1B4H ["guard type expected"]
0276p(41000014): MOV R1, R0, 14H
ENDq
0277q .FIXUP P
0277q(F7709017): BL MOD7 [ORS] PROC9
ELSE ORSr.Mark("not an identifier")s
0278r(E7000004): B 4 [027DH]
0279s .FIXUP D
0279s(8D000005): LDR SB, MT, MOD0 [ORP]
027As(40D801C8): ADD R0, SB, 1C8H ["not an identifier"]
027Bs(41000012): MOV R1, R0, 12H
ENDt ;
027Ct .FIXUP P
027Ct(F7709005): BL MOD7 [ORS] PROC9
Check(ORS.rparen,u " ) missing")v
027Du(4000002C): MOV R0, R0, 2CH
027Ev .FIXUP D
027Ev(8D000005): LDR SB, MT, MOD0 [ORP]
027Fv(41D801DC): ADD R1, SB, 1DCH [" ) missing"]
0280v(4200000B): MOV R2, R0, BH
ENDw
0281w(F7FFFD7E): BL -642 [0000H]
ENDx
0282x(E7FFFF26): B -218 [01A9H]
ENDy selector;
0283y(8FE00000): LDR LNK, SP, 0H
0284y(4EE80028): ADD SP, SP, 28H
0285y(C700000F): B LNK
PROCEDURE EqualSignatures(t0, t1: ORB.Type): BOOLEAN;
VAR p0, p1: ORB.Object; com: BOOLEAN;
BEGINz com := TRUE;a
0286z(4EE90018): SUB SP, SP, 18H
0287z(AFE00000): STR LNK, SP, 0H
0288z(A0E00004): STR R0, SP, 4H
0289z(A1E00008): STR R1, SP, 8H
028Aa(40000001): MOV R0, R0, 1H
028Ba(B0E00014): STR R0, SP, 14H
IF (t0.baseb = t1.basec)d & (et0.nofparf = t1.nofparg)h THENi
028Cb(80E00004): LDR R0, SP, 4H
028Db(D117174C): BLEQ MT [trap=4, pos=5911]
028Ec(81E00008): LDR R1, SP, 8H
028Fc(D117214C): BLEQ MT [trap=4, pos=5921]
0290d(8000001C): LDR R0, R0, 1CH
0291d(8110001C): LDR R1, R1, 1CH
0292d(00090001): SUB R0, R0, R1
0293e(E9000076): BNE 118 [030AH]
0294f(80E00004): LDR R0, SP, 4H
0295f(D1172F4C): BLEQ MT [trap=4, pos=5935]
0296g(81E00008): LDR R1, SP, 8H
0297g(D1173B4C): BLEQ MT [trap=4, pos=5947]
0298h(8000000C): LDR R0, R0, CH
0299h(8110000C): LDR R1, R1, CH
029Ah(00090001): SUB R0, R0, R1
029Bi(E900006E): BNE 110 [030AH]
p0 := t0.dscj;k p1 := t1.dscl;m
029Cj(80E00004): LDR R0, SP, 4H
029Dj(D117544C): BLEQ MT [trap=4, pos=5972]
029Ek(80000014): LDR R0, R0, 14H
029Fk(A0E0000C): STR R0, SP, CH
02A0l(80E00008): LDR R0, SP, 8H
02A1l(D117624C): BLEQ MT [trap=4, pos=5986]
02A2m(80000014): LDR R0, R0, 14H
02A3m(A0E00010): STR R0, SP, 10H
WHILE p0 # NIL DOn
02A4n(80E0000C): LDR R0, SP, CH
02A5n(E1000063): BEQ 99 [0309H]
IF (p0.classo = p1.classp)q & (rp0.rdos = p1.rdot)u &
02A6o(80E0000C): LDR R0, SP, CH
02A7o(D117904C): BLEQ MT [trap=4, pos=6032]
02A8p(81E00010): LDR R1, SP, 10H
02A9p(D1179B4C): BLEQ MT [trap=4, pos=6043]
02AAq(90000000): LDR R0, R0, 0H
02ABq(91100000): LDR R1, R1, 0H
02ACq(00090001): SUB R0, R0, R1
02ADr(E9000056): BNE 86 [0304H]
02AEs(80E0000C): LDR R0, SP, CH
02AFs(D117A74C): BLEQ MT [trap=4, pos=6055]
02B0t(81E00010): LDR R1, SP, 10H
02B1t(D117B04C): BLEQ MT [trap=4, pos=6064]
02B2u(90000003): LDR R0, R0, 3H
02B3u(91100003): LDR R1, R1, 3H
02B4u(00090001): SUB R0, R0, R1
(v(p0.typew = p1.typex)y OR
02B5v(E900004E): BNE 78 [0304H]
02B6w(80E0000C): LDR R0, SP, CH
02B7w(D117C74C): BLEQ MT [trap=4, pos=6087]
02B8x(81E00010): LDR R1, SP, 10H
02B9x(D117D14C): BLEQ MT [trap=4, pos=6097]
02BAy(80000010): LDR R0, R0, 10H
02BBy(81100010): LDR R1, R1, 10H
02BCy(00090001): SUB R0, R0, R1
(zp0.typea.formb = ORB.Array)c & (dp1.typee.formf = ORB.Array)g & (hp0.typei.lenj = p1.typek.lenl)m & (np0.typeo.basep = p1.typeq.baser)s OR
02BDz(E100003D): BEQ 61 [02FBH]
02BEa(80E0000C): LDR R0, SP, CH
02BFa(D117E84C): BLEQ MT [trap=4, pos=6120]
02C0b(80000010): LDR R0, R0, 10H
02C1b(D117ED4C): BLEQ MT [trap=4, pos=6125]
02C2c(80000000): LDR R0, R0, 0H
02C3c(4009000C): SUB R0, R0, CH
02C4d(E900001F): BNE 31 [02E4H]
02C5e(80E00010): LDR R0, SP, 10H
02C6e(D118054C): BLEQ MT [trap=4, pos=6149]
02C7f(80000010): LDR R0, R0, 10H
02C8f(D1180A4C): BLEQ MT [trap=4, pos=6154]
02C9g(80000000): LDR R0, R0, 0H
02CAg(4009000C): SUB R0, R0, CH
02CBh(E9000018): BNE 24 [02E4H]
02CCi(80E0000C): LDR R0, SP, CH
02CDi(D118224C): BLEQ MT [trap=4, pos=6178]
02CEj(80000010): LDR R0, R0, 10H
02CFj(D118264C): BLEQ MT [trap=4, pos=6182]
02D0k(81E00010): LDR R1, SP, 10H
02D1k(D118304C): BLEQ MT [trap=4, pos=6192]
02D2l(81100010): LDR R1, R1, 10H
02D3l(D118344C): BLEQ MT [trap=4, pos=6196]
02D4m(80000010): LDR R0, R0, 10H
02D5m(81100010): LDR R1, R1, 10H
02D6m(00090001): SUB R0, R0, R1
02D7n(E900000C): BNE 12 [02E4H]
02D8o(80E0000C): LDR R0, SP, CH
02D9o(D118404C): BLEQ MT [trap=4, pos=6208]
02DAp(80000010): LDR R0, R0, 10H
02DBp(D118454C): BLEQ MT [trap=4, pos=6213]
02DCq(81E00010): LDR R1, SP, 10H
02DDq(D1184F4C): BLEQ MT [trap=4, pos=6223]
02DEr(81100010): LDR R1, R1, 10H
02DFr(D118544C): BLEQ MT [trap=4, pos=6228]
02E0s(8000001C): LDR R0, R0, 1CH
02E1s(8110001C): LDR R1, R1, 1CH
02E2s(00090001): SUB R0, R0, R1
(tp0.typeu.formv = ORB.Proc)w & (xp1.typey.formz = ORB.Proc)a & EqualSignaturesb(p0.typec,d p1.typee)f)g
02E3t(E1000017): BEQ 23 [02FBH]
02E4u(80E0000C): LDR R0, SP, CH
02E5u(D1186B4C): BLEQ MT [trap=4, pos=6251]
02E6v(80000010): LDR R0, R0, 10H
02E7v(D118704C): BLEQ MT [trap=4, pos=6256]
02E8w(80000000): LDR R0, R0, 0H
02E9w(4009000A): SUB R0, R0, AH
02EAx(E9000019): BNE 25 [0304H]
02EBy(80E00010): LDR R0, SP, 10H
02ECy(D118874C): BLEQ MT [trap=4, pos=6279]
02EDz(80000010): LDR R0, R0, 10H
02EEz(D1188C4C): BLEQ MT [trap=4, pos=6284]
02EFa(80000000): LDR R0, R0, 0H
02F0a(4009000A): SUB R0, R0, AH
02F1b(E9000012): BNE 18 [0304H]
02F2c(80E0000C): LDR R0, SP, CH
02F3c(D118B24C): BLEQ MT [trap=4, pos=6322]
02F4d(80000010): LDR R0, R0, 10H
02F5e(81E00010): LDR R1, SP, 10H
02F6e(D118BB4C): BLEQ MT [trap=4, pos=6331]
02F7f(81100010): LDR R1, R1, 10H
02F8g(F7FFFF8D): BL -115 [0286H]
02F9g(40090000): SUB R0, R0, 0H
THENh p0 := p0.nexti;j p1 := p1.nextk
02FAh(E1000009): BEQ 9 [0304H]
02FBi(80E0000C): LDR R0, SP, CH
02FCi(D118D84C): BLEQ MT [trap=4, pos=6360]
02FDj(80000008): LDR R0, R0, 8H
02FEj(A0E0000C): STR R0, SP, CH
02FFk(80E00010): LDR R0, SP, 10H
0300k(D118E74C): BLEQ MT [trap=4, pos=6375]
ELSEl p0m := NIL;n com := FALSE
0301l(80000008): LDR R0, R0, 8H
0302l(A0E00010): STR R0, SP, 10H
0303m(E7000004): B 4 [0308H]
0304n(40000000): MOV R0, R0, 0H
0305n(A0E0000C): STR R0, SP, CH
ENDo
0306o(40000000): MOV R0, R0, 0H
0307o(B0E00014): STR R0, SP, 14H
ENDp
0308p(E7FFFF9B): B -101 [02A4H]
ELSE comq := FALSE
0309q(E7000002): B 2 [030CH]
ENDr ;
030Ar(40000000): MOV R0, R0, 0H
030Br(B0E00014): STR R0, SP, 14H
RETURN com
ENDs EqualSignatures;
030Cs(90E00014): LDR R0, SP, 14H
030Ds(8FE00000): LDR LNK, SP, 0H
030Es(4EE80018): ADD SP, SP, 18H
030Fs(C700000F): B LNK
PROCEDURE CompTypes(t0, t1: ORB.Type; varpar: BOOLEAN): BOOLEAN;
BEGINt (*check for assignment compatibility*)
0310t(4EE90010): SUB SP, SP, 10H
0311t(AFE00000): STR LNK, SP, 0H
0312t(A0E00004): STR R0, SP, 4H
0313t(A1E00008): STR R1, SP, 8H
0314t(A2E0000C): STR R2, SP, CH
RETURN (t0 = t1)u (*openarray assignment disallowed in ORG*)
0315u(80E00004): LDR R0, SP, 4H
0316u(81E00008): LDR R1, SP, 8H
0317u(00090001): SUB R0, R0, R1
OR (vt0.formw = ORB.Array)x & (yt1.formz = ORB.Array)a & (bt0.basec = t1.based)e & (ft0.leng = t1.lenh)i
0318v(E1000059): BEQ 89 [0372H]
0319w(80E00004): LDR R0, SP, 4H
031Aw(D11A324C): BLEQ MT [trap=4, pos=6706]
031Bx(80000000): LDR R0, R0, 0H
031Cx(4009000C): SUB R0, R0, CH
031Dy(E9000015): BNE 21 [0333H]
031Ez(80E00008): LDR R0, SP, 8H
031Fz(D11A4A4C): BLEQ MT [trap=4, pos=6730]
0320a(80000000): LDR R0, R0, 0H
0321a(4009000C): SUB R0, R0, CH
0322b(E9000010): BNE 16 [0333H]
0323c(80E00004): LDR R0, SP, 4H
0324c(D11A624C): BLEQ MT [trap=4, pos=6754]
0325d(81E00008): LDR R1, SP, 8H
0326d(D11A6D4C): BLEQ MT [trap=4, pos=6765]
0327e(8000001C): LDR R0, R0, 1CH
0328e(8110001C): LDR R1, R1, 1CH
0329e(00090001): SUB R0, R0, R1
032Af(E9000008): BNE 8 [0333H]
032Bg(80E00004): LDR R0, SP, 4H
032Cg(D11A784C): BLEQ MT [trap=4, pos=6776]
032Dh(81E00008): LDR R1, SP, 8H
032Eh(D11A814C): BLEQ MT [trap=4, pos=6785]
032Fi(80000010): LDR R0, R0, 10H
0330i(81100010): LDR R1, R1, 10H
0331i(00090001): SUB R0, R0, R1
OR (jt0.formk = ORB.Record)l & (mt1.formn = ORB.Record)o & IsExtensionp(t0,q t1)r
0332j(E100003F): BEQ 63 [0372H]
0333k(80E00004): LDR R0, SP, 4H
0334k(D11A944C): BLEQ MT [trap=4, pos=6804]
0335l(80000000): LDR R0, R0, 0H
0336l(4009000D): SUB R0, R0, DH
0337m(E900000A): BNE 10 [0342H]
0338n(80E00008): LDR R0, SP, 8H
0339n(D11AAD4C): BLEQ MT [trap=4, pos=6829]
033Ao(80000000): LDR R0, R0, 0H
033Bo(4009000D): SUB R0, R0, DH
033Cp(E9000005): BNE 5 [0342H]
033Dq(80E00004): LDR R0, SP, 4H
033Er(81E00008): LDR R1, SP, 8H
ORs ~tvarpar &u
033Fs(F7FFFDCD): BL -563 [010DH]
0340s(40090000): SUB R0, R0, 0H
0341t(E9000030): BNE 48 [0372H]
0342u(90E0000C): LDR R0, SP, CH
(v(t0.formw = ORB.Pointer)x & (yt1.formz = ORB.Pointer)a & IsExtensionb(t0.basec,d t1.basee)f
0343v(E9000030): BNE 48 [0374H]
0344w(80E00004): LDR R0, SP, 4H
0345w(D11AF74C): BLEQ MT [trap=4, pos=6903]
0346x(80000000): LDR R0, R0, 0H
0347x(40090007): SUB R0, R0, 7H
0348y(E900000E): BNE 14 [0357H]
0349z(80E00008): LDR R0, SP, 8H
034Az(D11B114C): BLEQ MT [trap=4, pos=6929]
034Ba(80000000): LDR R0, R0, 0H
034Ca(40090007): SUB R0, R0, 7H
034Db(E9000009): BNE 9 [0357H]
034Ec(80E00004): LDR R0, SP, 4H
034Fc(D11B374C): BLEQ MT [trap=4, pos=6967]
0350d(8000001C): LDR R0, R0, 1CH
0351e(81E00008): LDR R1, SP, 8H
0352e(D11B404C): BLEQ MT [trap=4, pos=6976]
0353f(8110001C): LDR R1, R1, 1CH
ORg (ht0.formi = ORB.Proc)j & (kt1.forml = ORB.Proc)m & EqualSignaturesn(t0,o t1)p
0354g(F7FFFDB8): BL -584 [010DH]
0355g(40090000): SUB R0, R0, 0H
0356h(E900001B): BNE 27 [0372H]
0357i(80E00004): LDR R0, SP, 4H
0358i(D11B554C): BLEQ MT [trap=4, pos=6997]
0359j(80000000): LDR R0, R0, 0H
035Aj(4009000A): SUB R0, R0, AH
035Bk(E900000A): BNE 10 [0366H]
035Cl(80E00008): LDR R0, SP, 8H
035Dl(D11B6C4C): BLEQ MT [trap=4, pos=7020]
035Em(80000000): LDR R0, R0, 0H
035Fm(4009000A): SUB R0, R0, AH
0360n(E9000005): BNE 5 [0366H]
0361o(80E00004): LDR R0, SP, 4H
0362p(81E00008): LDR R1, SP, 8H
ORq (rt0.forms IN {ORB.Pointer, ORB.Proc})t & (ut1.formv = ORB.NilTyp)w)
0363q(F7FFFF22): BL -222 [0286H]
0364q(40090000): SUB R0, R0, 0H
0365r(E900000C): BNE 12 [0372H]
0366s(80E00004): LDR R0, SP, 4H
0367s(D11BA64C): BLEQ MT [trap=4, pos=7078]
0368t(41000480): MOV R1, R0, 480H
0369t(80000000): LDR R0, R0, 0H
036At(40080001): ADD R0, R0, 1H
036Bt(01130000): ROR R1, R1, R0
036Cu(E8000007): BPL 7 [0374H]
036Dv(80E00008): LDR R0, SP, 8H
036Ev(D11BCD4C): BLEQ MT [trap=4, pos=7117]
036Fw(80000000): LDR R0, R0, 0H
0370w(40090008): SUB R0, R0, 8H
ENDx CompTypes;
0371x(E9000002): BNE 2 [0374H]
0372x(40000001): MOV R0, R0, 1H
0373x(E7000001): B 1 [0375H]
0374x(40000000): MOV R0, R0, 0H
0375x(8FE00000): LDR LNK, SP, 0H
0376x(4EE80010): ADD SP, SP, 10H
0377x(C700000F): B LNK
PROCEDURE Parameter(par: ORB.Object);
VAR x: ORG.Item; varpar: BOOLEAN;
BEGINy expression(x)z;a
0378y(4EE90024): SUB SP, SP, 24H
0379y(AFE00000): STR LNK, SP, 0H
037Ay(A0E00004): STR R0, SP, 4H
037Bz(40E80008): ADD R0, SP, 8H
037Cz .FIXUP D
037Cz(8D9000FE): LDR SB, MT, MOD9 [ORG]
037Dz(41D80001): ADD R1, SB, VAR1
037Ea .FIXUP D
037Ea(8D000002): LDR SB, MT, MOD0 [ORP]
037Fa(82D00034): LDR R2, SB, 34H [data]
0380a(D11C535C): BLEQ MT [trap=5, pos=7251]
0381a(D7000002): BL R2
IF par # NIL THENb
0382b(80E00004): LDR R0, SP, 4H
0383b(E10000D6): BEQ 214 [045AH]
varpar := par.classc = ORB.Par;d
0384c(80E00004): LDR R0, SP, 4H
0385c(D11C834C): BLEQ MT [trap=4, pos=7299]
0386d(90000000): LDR R0, R0, 0H
0387d(40090003): SUB R0, R0, 3H
0388d(E9000002): BNE 2 [038BH]
0389d(40000001): MOV R0, R0, 1H
038Ad(E7000001): B 1 [038CH]
038Bd(40000000): MOV R0, R0, 0H
038Cd(B0E00020): STR R0, SP, 20H
IF CompTypes(par.typee,f x.type,g varpar)h THENi
038De(80E00004): LDR R0, SP, 4H
038Ee(D11CAA4C): BLEQ MT [trap=4, pos=7338]
038Ff(80000010): LDR R0, R0, 10H
0390g(81E0000C): LDR R1, SP, CH
0391h(92E00020): LDR R2, SP, 20H
0392i(F7FFFF7D): BL -131 [0310H]
0393i(40090000): SUB R0, R0, 0H
0394i(E1000017): BEQ 23 [03ACH]
IF ~varpar THENj ORG.ValueParam(x)k
0395j(90E00020): LDR R0, SP, 20H
0396j(E9000005): BNE 5 [039CH]
0397k(40E80008): ADD R0, SP, 8H
0398k .FIXUP D
0398k(8D90001A): LDR SB, MT, MOD9 [ORG]
0399k(41D80001): ADD R1, SB, VAR1
ELSEl (*par.class = Par*)
039Al .FIXUP P
039Al(F792511E): BL MOD9 [ORG] PROC37
IFm ~par.rdon THENo CheckReadOnly(x)p ENDq ;
039Bm(E700000F): B 15 [03ABH]
039Cn(80E00004): LDR R0, SP, 4H
039Dn(D11D214C): BLEQ MT [trap=4, pos=7457]
039Eo(90000003): LDR R0, R0, 3H
039Fo(E9000004): BNE 4 [03A4H]
03A0p(40E80008): ADD R0, SP, 8H
03A1p .FIXUP D
03A1p(8D900009): LDR SB, MT, MOD9 [ORG]
03A2p(41D80001): ADD R1, SB, VAR1
03A3q(F7FFFD40): BL -704 [00E4H]
ORG.VarParam(x,r par.types)t
03A4r(40E80008): ADD R0, SP, 8H
03A5r .FIXUP D
03A5r(8D900004): LDR SB, MT, MOD9 [ORG]
03A6r(41D80001): ADD R1, SB, VAR1
03A7s(82E00004): LDR R2, SP, 4H
03A8s(D11D604C): BLEQ MT [trap=4, pos=7520]
03A9t(82200010): LDR R2, R2, 10H
ENDu
03AAu .FIXUP P
03AAu(F7924010): BL MOD9 [ORG] PROC36
ELSIF (vx.type.formw = ORB.Array)x & (ypar.typez.forma = ORB.Array)b &
03ABv(E70000AE): B 174 [045AH]
03ACw(80E0000C): LDR R0, SP, CH
03ADw(D11D864C): BLEQ MT [trap=4, pos=7558]
03AEx(80000000): LDR R0, R0, 0H
03AFx(4009000C): SUB R0, R0, CH
03B0y(E9000025): BNE 37 [03D6H]
03B1z(80E00004): LDR R0, SP, 4H
03B2z(D11D9F4C): BLEQ MT [trap=4, pos=7583]
03B3a(80000010): LDR R0, R0, 10H
03B4a(D11DA44C): BLEQ MT [trap=4, pos=7588]
03B5b(80000000): LDR R0, R0, 0H
03B6b(4009000C): SUB R0, R0, CH
(cx.type.based = par.typee.basef)g & (hpar.typei.lenj < 0)k THENl
03B7c(E900001E): BNE 30 [03D6H]
03B8d(80E0000C): LDR R0, SP, CH
03B9d(D11DCA4C): BLEQ MT [trap=4, pos=7626]
03BAe(81E00004): LDR R1, SP, 4H
03BBe(D11DD54C): BLEQ MT [trap=4, pos=7637]
03BCf(81100010): LDR R1, R1, 10H
03BDf(D11DDA4C): BLEQ MT [trap=4, pos=7642]
03BEg(8000001C): LDR R0, R0, 1CH
03BFg(8110001C): LDR R1, R1, 1CH
03C0g(00090001): SUB R0, R0, R1
03C1h(E9000014): BNE 20 [03D6H]
03C2i(80E00004): LDR R0, SP, 4H
03C3i(D11DE74C): BLEQ MT [trap=4, pos=7655]
03C4j(80000010): LDR R0, R0, 10H
03C5j(D11DEB4C): BLEQ MT [trap=4, pos=7659]
03C6k(80000010): LDR R0, R0, 10H
03C7k(40090000): SUB R0, R0, 0H
03C8l(ED00000D): BGE 13 [03D6H]
IF ~par.rdom THENn CheckReadOnly(x)o ENDp ;
03C9m(80E00004): LDR R0, SP, 4H
03CAm(D11E094C): BLEQ MT [trap=4, pos=7689]
03CBn(90000003): LDR R0, R0, 3H
03CCn(E9000004): BNE 4 [03D1H]
03CDo(40E80008): ADD R0, SP, 8H
03CEo .FIXUP D
03CEo(8D900029): LDR SB, MT, MOD9 [ORG]
03CFo(41D80001): ADD R1, SB, VAR1
03D0p(F7FFFD13): BL -749 [00E4H]
ORG.OpenArrayParam(x)q
03D1q(40E80008): ADD R0, SP, 8H
03D2q .FIXUP D
03D2q(8D900004): LDR SB, MT, MOD9 [ORG]
03D3q(41D80001): ADD R1, SB, VAR1
ELSIFr (sx.type.formt = ORB.String)u & varparv &w parx.rdoy &z (apar.typeb.formc = ORB.Array)d &
03D4r .FIXUP P
03D4r(F792302A): BL MOD9 [ORG] PROC35
03D5s(E7000084): B 132 [045AH]
03D6t(80E0000C): LDR R0, SP, CH
03D7t(D11E5C4C): BLEQ MT [trap=4, pos=7772]
03D8u(80000000): LDR R0, R0, 0H
03D9u(4009000B): SUB R0, R0, BH
03DAv(E9000022): BNE 34 [03FDH]
03DBw(90E00020): LDR R0, SP, 20H
03DCx(E1000020): BEQ 32 [03FDH]
03DDy(80E00004): LDR R0, SP, 4H
03DEy(D11E7D4C): BLEQ MT [trap=4, pos=7805]
03DFz(90000003): LDR R0, R0, 3H
03E0a(E100001C): BEQ 28 [03FDH]
03E1b(80E00004): LDR R0, SP, 4H
03E2b(D11E894C): BLEQ MT [trap=4, pos=7817]
03E3c(80000010): LDR R0, R0, 10H
03E4c(D11E8E4C): BLEQ MT [trap=4, pos=7822]
03E5d(80000000): LDR R0, R0, 0H
03E6d(4009000C): SUB R0, R0, CH
(epar.typef.baseg.formh = ORB.Char)i & (jpar.typek.lenl < 0)m THENn ORG.StringParam(x)o
03E7e(E9000015): BNE 21 [03FDH]
03E8f(80E00004): LDR R0, SP, 4H
03E9f(D11EB24C): BLEQ MT [trap=4, pos=7858]
03EAg(80000010): LDR R0, R0, 10H
03EBg(D11EB74C): BLEQ MT [trap=4, pos=7863]
03ECh(8000001C): LDR R0, R0, 1CH
03EDh(D11EBC4C): BLEQ MT [trap=4, pos=7868]
03EEi(80000000): LDR R0, R0, 0H
03EFi(40090003): SUB R0, R0, 3H
03F0j(E900000C): BNE 12 [03FDH]
03F1k(80E00004): LDR R0, SP, 4H
03F2k(D11ED44C): BLEQ MT [trap=4, pos=7892]
03F3l(80000010): LDR R0, R0, 10H
03F4l(D11ED84C): BLEQ MT [trap=4, pos=7896]
03F5m(80000010): LDR R0, R0, 10H
03F6m(40090000): SUB R0, R0, 0H
03F7n(ED000005): BGE 5 [03FDH]
03F8o(40E80008): ADD R0, SP, 8H
03F9o .FIXUP D
03F9o(8D900027): LDR SB, MT, MOD9 [ORG]
03FAo(41D80001): ADD R1, SB, VAR1
ELSIFp ~qvarpar &r (spar.typet.formu = ORB.Int)v & (wx.type.formx = ORB.Int)y THENz ORG.ValueParam(x)a (*BYTE*)
03FBp .FIXUP P
03FBp(F7926027): BL MOD9 [ORG] PROC38
03FCq(E700005D): B 93 [045AH]
03FDr(90E00020): LDR R0, SP, 20H
03FEs(E9000011): BNE 17 [0410H]
03FFt(80E00004): LDR R0, SP, 4H
0400t(D11F154C): BLEQ MT [trap=4, pos=7957]
0401u(80000010): LDR R0, R0, 10H
0402u(D11F1A4C): BLEQ MT [trap=4, pos=7962]
0403v(80000000): LDR R0, R0, 0H
0404v(40090004): SUB R0, R0, 4H
0405w(E900000A): BNE 10 [0410H]
0406x(80E0000C): LDR R0, SP, CH
0407x(D11F344C): BLEQ MT [trap=4, pos=7988]
0408y(80000000): LDR R0, R0, 0H
0409y(40090004): SUB R0, R0, 4H
040Az(E9000005): BNE 5 [0410H]
040Ba(40E80008): ADD R0, SP, 8H
040Ca .FIXUP D
040Ca(8D900013): LDR SB, MT, MOD9 [ORG]
040Da(41D80001): ADD R1, SB, VAR1
ELSIFb (cx.type.formd = ORB.String)e & (fx.b = 2)g & (hpar.classi = ORB.Var)j & (kpar.typel.formm = ORB.Char)n THENo
040Eb .FIXUP P
040Eb(F7925013): BL MOD9 [ORG] PROC37
040Fc(E700004A): B 74 [045AH]
0410d(80E0000C): LDR R0, SP, CH
0411d(D11F794C): BLEQ MT [trap=4, pos=8057]
0412e(80000000): LDR R0, R0, 0H
0413e(4009000B): SUB R0, R0, BH
0414f(E9000018): BNE 24 [042DH]
0415g(80E00014): LDR R0, SP, 14H
0416g(40090002): SUB R0, R0, 2H
0417h(E9000015): BNE 21 [042DH]
0418i(80E00004): LDR R0, SP, 4H
0419i(D11FA04C): BLEQ MT [trap=4, pos=8096]
041Aj(90000000): LDR R0, R0, 0H
041Bj(40090002): SUB R0, R0, 2H
041Ck(E9000010): BNE 16 [042DH]
041Dl(80E00004): LDR R0, SP, 4H
041El(D11FB74C): BLEQ MT [trap=4, pos=8119]
041Fm(80000010): LDR R0, R0, 10H
0420m(D11FBC4C): BLEQ MT [trap=4, pos=8124]
0421n(80000000): LDR R0, R0, 0H
0422n(40090003): SUB R0, R0, 3H
0423o(E9000009): BNE 9 [042DH]
ORG.StrToChar(x)p;q ORG.ValueParam(x)r
0424p(40E80008): ADD R0, SP, 8H
0425p .FIXUP D
0425p(8D900019): LDR SB, MT, MOD9 [ORG]
0426p(41D80001): ADD R1, SB, VAR1
0427q .FIXUP P
0427q(F791F019): BL MOD9 [ORG] PROC31
0428r(40E80008): ADD R0, SP, 8H
0429r .FIXUP D
0429r(8D900004): LDR SB, MT, MOD9 [ORG]
042Ar(41D80001): ADD R1, SB, VAR1
ELSIFs (tpar.typeu.formv = ORB.Array)w & (xpar.typey.basez = ORB.byteType)a &
042Bs .FIXUP P
042Bs(F7925004): BL MOD9 [ORG] PROC37
042Ct(E700002D): B 45 [045AH]
042Du(80E00004): LDR R0, SP, 4H
042Eu(D1200F4C): BLEQ MT [trap=4, pos=8207]
042Fv(80000010): LDR R0, R0, 10H
0430v(D120144C): BLEQ MT [trap=4, pos=8212]
0431w(80000000): LDR R0, R0, 0H
0432w(4009000C): SUB R0, R0, CH
0433x(E9000022): BNE 34 [0456H]
0434y(80E00004): LDR R0, SP, 4H
0435y(D1202D4C): BLEQ MT [trap=4, pos=8237]
0436z(80000010): LDR R0, R0, 10H
0437z(D120324C): BLEQ MT [trap=4, pos=8242]
0438a(8000001C): LDR R0, R0, 1CH
0439a .FIXUP D
0439a(8D800010): LDR SB, MT, MOD8 [ORB]
043Aa(81D00006): LDR R1, SB, VAR6
043Ba(00090001): SUB R0, R0, R1
(bpar.typec.lend >= 0)e & (fpar.typeg.sizeh = x.type.sizei)j THENk
043Cb(E9000019): BNE 25 [0456H]
043Dc(80E00004): LDR R0, SP, 4H
043Ec(D120594C): BLEQ MT [trap=4, pos=8281]
043Fd(80000010): LDR R0, R0, 10H
0440d(D1205D4C): BLEQ MT [trap=4, pos=8285]
0441e(80000010): LDR R0, R0, 10H
0442e(40090000): SUB R0, R0, 0H
0443f(E5000012): BLT 18 [0456H]
0444g(80E00004): LDR R0, SP, 4H
0445g(D1206F4C): BLEQ MT [trap=4, pos=8303]
0446h(80000010): LDR R0, R0, 10H
0447h(D120744C): BLEQ MT [trap=4, pos=8308]
0448i(81E0000C): LDR R1, SP, CH
0449i(D120824C): BLEQ MT [trap=4, pos=8322]
044Aj(80000020): LDR R0, R0, 20H
044Bj(81100020): LDR R1, R1, 20H
044Cj(00090001): SUB R0, R0, R1
044Dk(E9000008): BNE 8 [0456H]
ORG.VarParam(x,l par.typem)n
044El(40E80008): ADD R0, SP, 8H
044Fl .FIXUP D
044Fl(8D900016): LDR SB, MT, MOD9 [ORG]
0450l(41D80001): ADD R1, SB, VAR1
0451m(82E00004): LDR R2, SP, 4H
0452m(D120A94C): BLEQ MT [trap=4, pos=8361]
0453n(82200010): LDR R2, R2, 10H
ELSEo ORSp.Mark("incompatible parameters")q
0454o .FIXUP P
0454o(F7924029): BL MOD9 [ORG] PROC36
0455p(E7000004): B 4 [045AH]
0456q .FIXUP D
0456q(8D000007): LDR SB, MT, MOD0 [ORP]
0457q(40D801E8): ADD R0, SB, 1E8H ["incompatible parameters"]
0458q(41000018): MOV R1, R0, 18H
ENDr
0459r .FIXUP P
0459r(F7709005): BL MOD7 [ORS] PROC9
END
ENDs Parameter;
045As(8FE00000): LDR LNK, SP, 0H
045Bs(4EE80024): ADD SP, SP, 24H
045Cs(C700000F): B LNK
PROCEDURE ParamList(VAR x: ORG.Item);
VAR n: INTEGER; par: ORB.Object;
BEGINt par := x.type.dscu;v n := 0;w
045Dt(4EE90014): SUB SP, SP, 14H
045Et(AFE00000): STR LNK, SP, 0H
045Ft(A0E00004): STR R0, SP, 4H
0460t(A1E00008): STR R1, SP, 8H
0461u(80E00004): LDR R0, SP, 4H
0462u(80000004): LDR R0, R0, 4H
0463u(D121644C): BLEQ MT [trap=4, pos=8548]
0464v(80000014): LDR R0, R0, 14H
0465v(A0E00010): STR R0, SP, 10H
0466w(40000000): MOV R0, R0, 0H
0467w(A0E0000C): STR R0, SP, CH
IF sym # ORS.rparen THENx
0468x .FIXUP D
0468x(8D000012): LDR SB, MT, MOD0 [ORP]
0469x(80D0001C): LDR R0, SB, 1CH [data]
046Ax(4009002C): SUB R0, R0, 2CH
046Bx(E100001F): BEQ 31 [048BH]
Parameter(par)y;z n := 1;a
046Cy(80E00010): LDR R0, SP, 10H
046Dz(F7FFFF0A): BL -246 [0378H]
046Ea(40000001): MOV R0, R0, 1H
046Fa(A0E0000C): STR R0, SP, CH
WHILE sym <= ORS.comma DOb
0470b .FIXUP D
0470b(8D000008): LDR SB, MT, MOD0 [ORP]
0471b(80D0001C): LDR R0, SB, 1CH [data]
0472b(40090028): SUB R0, R0, 28H
0473b(EE000011): BGT 17 [0485H]
Check(sym,c "comma?")d;e
0474c .FIXUP D
0474c(8D000004): LDR SB, MT, MOD0 [ORP]
0475c(80D0001C): LDR R0, SB, 1CH [data]
0476d(41D80200): ADD R1, SB, 200H
0477d(42000007): MOV R2, R0, 7H
0478e(F7FFFB87): BL -1145 [0000H]
IF par # NIL THENf par := par.nextg ENDh ;
0479f(80E00010): LDR R0, SP, 10H
047Af(E1000004): BEQ 4 [047FH]
047Bg(80E00010): LDR R0, SP, 10H
047Cg(D122104C): BLEQ MT [trap=4, pos=8720]
047Dh(80000008): LDR R0, R0, 8H
047Eh(A0E00010): STR R0, SP, 10H
INC(n);i Parameter(par)j
047Fi(80E0000C): LDR R0, SP, CH
0480i(40080001): ADD R0, R0, 1H
0481i(A0E0000C): STR R0, SP, CH
0482j(80E00010): LDR R0, SP, 10H
ENDk ;
0483k(F7FFFEF4): BL -268 [0378H]
0484k(E7FFFFEB): B -21 [0470H]
Check(ORS.rparen,l ") missing")m
0485l(4000002C): MOV R0, R0, 2CH
0486m .FIXUP D
0486m(8D000012): LDR SB, MT, MOD0 [ORP]
0487m(41D80208): ADD R1, SB, 208H [") missing"]
0488m(4200000A): MOV R2, R0, AH
ELSEn ORSo.Get(sym)p;q
0489n(F7FFFB76): BL -1162 [0000H]
048Ao(E7000003): B 3 [048EH]
048Bp .FIXUP D
048Bp(8D000005): LDR SB, MT, MOD0 [ORP]
048Cp(40D8001C): ADD R0, SB, 1CH [data]
048Dq .FIXUP P
048Dq(F770A034): BL MOD7 [ORS] PROC10
END ;
IF n < x.type.nofparr THENs ORS.Mark("too few params")t
048Er(80E00004): LDR R0, SP, 4H
048Fr(80000004): LDR R0, R0, 4H
0490r(D122A04C): BLEQ MT [trap=4, pos=8864]
0491s(81E0000C): LDR R1, SP, CH
0492s(8000000C): LDR R0, R0, CH
0493s(01190000): SUB R1, R1, R0
0494s(ED000005): BGE 5 [049AH]
0495t .FIXUP D
0495t(8D00000A): LDR SB, MT, MOD0 [ORP]
0496t(40D80214): ADD R0, SB, 214H ["too few params"]
0497t(4100000F): MOV R1, R0, FH
ELSIFu nv > x.type.nofparw THENx ORS.Mark("too many params")y
0498u .FIXUP P
0498u(F770900B): BL MOD7 [ORS] PROC9
0499v(E700000B): B 11 [04A5H]
049Aw(80E00004): LDR R0, SP, 4H
049Bw(80000004): LDR R0, R0, 4H
049Cw(D122DC4C): BLEQ MT [trap=4, pos=8924]
049Dx(81E0000C): LDR R1, SP, CH
049Ex(8000000C): LDR R0, R0, CH
049Fx(01190000): SUB R1, R1, R0
04A0x(E6000004): BLE 4 [04A5H]
04A1y .FIXUP D
04A1y(8D00000C): LDR SB, MT, MOD0 [ORP]
04A2y(40D80224): ADD R0, SB, 224H ["too many params"]
04A3y(41000010): MOV R1, R0, 10H
ENDz
04A4z .FIXUP P
04A4z(F770900C): BL MOD7 [ORS] PROC9
ENDa ParamList;
04A5a(8FE00000): LDR LNK, SP, 0H
04A6a(4EE80014): ADD SP, SP, 14H
04A7a(C700000F): B LNK
PROCEDURE StandFunc(VAR x: ORG.Item; fct: LONGINT; restyp: ORB.Type);
VAR y: ORG.Item; n, npar: LONGINT;
BEGINb Check(ORS.lparen,c "no (")d;e
04A8b(4EE90034): SUB SP, SP, 34H
04A9b(AFE00000): STR LNK, SP, 0H
04AAb(A0E00004): STR R0, SP, 4H
04ABb(A1E00008): STR R1, SP, 8H
04ACb(A2E0000C): STR R2, SP, CH
04ADb(A3E00010): STR R3, SP, 10H
04AEc(4000001C): MOV R0, R0, 1CH
04AFd .FIXUP D
04AFd(8D00000E): LDR SB, MT, MOD0 [ORP]
04B0d(41D80234): ADD R1, SB, 234H ["no ("]
04B1d(42000005): MOV R2, R0, 5H
04B2e(F7FFFB4D): BL -1203 [0000H]
npar := fct MOD 10;f fct := fct DIV 10;g expression(x)h;i n := 1;j
04B3f(80E0000C): LDR R0, SP, CH
04B4f(400B000A): DIV R0, R0, AH
04B5f(20000000): MOV' R0, R0, R0
04B6f(A0E00030): STR R0, SP, 30H
04B7g(80E0000C): LDR R0, SP, CH
04B8g(400B000A): DIV R0, R0, AH
04B9g(A0E0000C): STR R0, SP, CH
04BAh(80E00004): LDR R0, SP, 4H
04BBh(81E00008): LDR R1, SP, 8H
04BCi .FIXUP D
04BCi(8D00000D): LDR SB, MT, MOD0 [ORP]
04BDi(82D00034): LDR R2, SB, 34H [data]
04BEi(D123E35C): BLEQ MT [trap=5, pos=9187]
04BFi(D7000002): BL R2
04C0j(40000001): MOV R0, R0, 1H
04C1j(A0E0002C): STR R0, SP, 2CH
WHILE sym = ORS.comma DOk ORS.Get(sym)l;m expression(y)n;o INC(n) ENDp ;
04C2k .FIXUP D
04C2k(8D000006): LDR SB, MT, MOD0 [ORP]
04C3k(80D0001C): LDR R0, SB, 1CH [data]
04C4k(40090028): SUB R0, R0, 28H
04C5k(E900000E): BNE 14 [04D4H]
04C6l .FIXUP D
04C6l(8D000004): LDR SB, MT, MOD0 [ORP]
04C7l(40D8001C): ADD R0, SB, 1CH [data]
04C8m .FIXUP P
04C8m(F770A024): BL MOD7 [ORS] PROC10
04C9n(40E80014): ADD R0, SP, 14H
04CAn .FIXUP D
04CAn(8D900004): LDR SB, MT, MOD9 [ORG]
04CBn(41D80001): ADD R1, SB, VAR1
04CCo .FIXUP D
04CCo(8D000002): LDR SB, MT, MOD0 [ORP]
04CDo(82D00034): LDR R2, SB, 34H [data]
04CEo(D124255C): BLEQ MT [trap=5, pos=9253]
04CFo(D7000002): BL R2
04D0p(80E0002C): LDR R0, SP, 2CH
04D1p(40080001): ADD R0, R0, 1H
04D2p(A0E0002C): STR R0, SP, 2CH
04D3p(E7FFFFEE): B -18 [04C2H]
Check(ORS.rparen,q "no )")r;s
04D4q(4000002C): MOV R0, R0, 2CH
04D5r .FIXUP D
04D5r(8D000009): LDR SB, MT, MOD0 [ORP]
04D6r(41D8023C): ADD R1, SB, 23CH ["no )"]
04D7r(42000005): MOV R2, R0, 5H
04D8s(F7FFFB27): BL -1241 [0000H]
IF n = npar THENt
04D9t(80E0002C): LDR R0, SP, 2CH
04DAt(81E00030): LDR R1, SP, 30H
04DBt(00090001): SUB R0, R0, R1
04DCt(E900012A): BNE 298 [0607H]
IF fct = 0 THENu (*ABS*)
04DDu(80E0000C): LDR R0, SP, CH
04DEu(E9000014): BNE 20 [04F3H]
IF x.type.formv IN {ORB.Int, ORB.Real} THENw ORG.Abs(x)x;y restyp := x.type ELSEz ORSa.Mark("bad type")b ENDc
04DFv(80E00004): LDR R0, SP, 4H
04E0v(80000004): LDR R0, R0, 4H
04E1v(D1249B4C): BLEQ MT [trap=4, pos=9371]
04E2w(41000030): MOV R1, R0, 30H
04E3w(80000000): LDR R0, R0, 0H
04E4w(40080001): ADD R0, R0, 1H
04E5w(01130000): ROR R1, R1, R0
04E6w(E8000007): BPL 7 [04EEH]
04E7x(80E00004): LDR R0, SP, 4H
04E8x(81E00008): LDR R1, SP, 8H
04E9y .FIXUP P
04E9y(F7940021): BL MOD9 [ORG] PROC64
04EAz(80E00004): LDR R0, SP, 4H
04EBz(80000004): LDR R0, R0, 4H
04ECz(A0E00010): STR R0, SP, 10H
04EDa(E7000004): B 4 [04F2H]
04EEb .FIXUP D
04EEb(8D000019): LDR SB, MT, MOD0 [ORP]
04EFb(40D80244): ADD R0, SB, 244H ["bad type"]
04F0b(41000009): MOV R1, R0, 9H
04F1c .FIXUP P
04F1c(F7709008): BL MOD7 [ORS] PROC9
ELSIF fctd = 1 THENe (*ODD*) CheckInt(x)f;g ORG.Odd(x)h
04F2d(E7000110): B 272 [0603H]
04F3e(80E0000C): LDR R0, SP, CH
04F4e(40090001): SUB R0, R0, 1H
04F5e(E9000007): BNE 7 [04FDH]
04F6f(80E00004): LDR R0, SP, 4H
04F7f(81E00008): LDR R1, SP, 8H
04F8g(F7FFFB74): BL -1164 [006DH]
04F9h(80E00004): LDR R0, SP, 4H
04FAh(81E00008): LDR R1, SP, 8H
ELSIFi fctj = 2 THENk (*FLOOR*) CheckReal(x)l;m ORG.Floor(x)n
04FBi .FIXUP P
04FBi(F794100A): BL MOD9 [ORG] PROC65
04FCj(E7000106): B 262 [0603H]
04FDk(80E0000C): LDR R0, SP, CH
04FEk(40090002): SUB R0, R0, 2H
04FFk(E9000007): BNE 7 [0507H]
0500l(80E00004): LDR R0, SP, 4H
0501l(81E00008): LDR R1, SP, 8H
0502m(F7FFFB7F): BL -1153 [0082H]
0503n(80E00004): LDR R0, SP, 4H
0504n(81E00008): LDR R1, SP, 8H
ELSIFo fctp = 3 THENq (*FLT*) CheckInt(x)r;s ORG.Float(x)t
0505o .FIXUP P
0505o(F794200A): BL MOD9 [ORG] PROC66
0506p(E70000FC): B 252 [0603H]
0507q(80E0000C): LDR R0, SP, CH
0508q(40090003): SUB R0, R0, 3H
0509q(E9000007): BNE 7 [0511H]
050Ar(80E00004): LDR R0, SP, 4H
050Br(81E00008): LDR R1, SP, 8H
050Cs(F7FFFB60): BL -1184 [006DH]
050Dt(80E00004): LDR R0, SP, 4H
050Et(81E00008): LDR R1, SP, 8H
ELSIFu fctv = 4 THENw (*ORD*)
050Fu .FIXUP P
050Fu(F794300A): BL MOD9 [ORG] PROC67
0510v(E70000F2): B 242 [0603H]
0511w(80E0000C): LDR R0, SP, CH
0512w(40090004): SUB R0, R0, 4H
0513w(E900001D): BNE 29 [0531H]
IF x.type.formx <= ORB.Proc THENy ORG.Ord(x)z
0514x(80E00004): LDR R0, SP, 4H
0515x(80000004): LDR R0, R0, 4H
0516x(D125DC4C): BLEQ MT [trap=4, pos=9692]
0517y(80000000): LDR R0, R0, 0H
0518y(4009000A): SUB R0, R0, AH
0519y(EE000004): BGT 4 [051EH]
051Az(80E00004): LDR R0, SP, 4H
051Bz(81E00008): LDR R1, SP, 8H
ELSIFa (bx.type.formc = ORB.String)d & (ex.b = 2)f THENg ORG.StrToChar(x)h
051Ca .FIXUP P
051Ca(F794400D): BL MOD9 [ORG] PROC68
051Db(E7000012): B 18 [0530H]
051Ec(80E00004): LDR R0, SP, 4H
051Fc(80000004): LDR R0, R0, 4H
0520c(D126134C): BLEQ MT [trap=4, pos=9747]
0521d(80000000): LDR R0, R0, 0H
0522d(4009000B): SUB R0, R0, BH
0523e(E9000008): BNE 8 [052CH]
0524f(80E00004): LDR R0, SP, 4H
0525f(8000000C): LDR R0, R0, CH
0526f(40090002): SUB R0, R0, 2H
0527g(E9000004): BNE 4 [052CH]
0528h(80E00004): LDR R0, SP, 4H
0529h(81E00008): LDR R1, SP, 8H
ELSEi ORSj.Mark("bad type")k
052Ai .FIXUP P
052Ai(F791F00E): BL MOD9 [ORG] PROC31
052Bj(E7000004): B 4 [0530H]
052Ck .FIXUP D
052Ck(8D00003E): LDR SB, MT, MOD0 [ORP]
052Dk(40D80250): ADD R0, SB, 250H ["bad type"]
052Ek(41000009): MOV R1, R0, 9H
ENDl
052Fl .FIXUP P
052Fl(F7709005): BL MOD7 [ORS] PROC9
ELSIF fctm = 5 THENn (*CHR*) CheckInt(x)o;p ORG.Ord(x)q
0530m(E70000D2): B 210 [0603H]
0531n(80E0000C): LDR R0, SP, CH
0532n(40090005): SUB R0, R0, 5H
0533n(E9000007): BNE 7 [053BH]
0534o(80E00004): LDR R0, SP, 4H
0535o(81E00008): LDR R1, SP, 8H
0536p(F7FFFB36): BL -1226 [006DH]
0537q(80E00004): LDR R0, SP, 4H
0538q(81E00008): LDR R1, SP, 8H
ELSIFr fcts = 6 THENt (*LEN*)
0539r .FIXUP P
0539r(F794400A): BL MOD9 [ORG] PROC68
053As(E70000C8): B 200 [0603H]
053Bt(80E0000C): LDR R0, SP, CH
053Ct(40090006): SUB R0, R0, 6H
053Dt(E900000F): BNE 15 [054DH]
IF x.type.formu = ORB.Array THENv ORG.Len(x)w ELSEx ORSy.Mark("not an array")z ENDa
053Eu(80E00004): LDR R0, SP, 4H
053Fu(80000004): LDR R0, R0, 4H
0540u(D126E44C): BLEQ MT [trap=4, pos=9956]
0541v(80000000): LDR R0, R0, 0H
0542v(4009000C): SUB R0, R0, CH
0543v(E9000004): BNE 4 [0548H]
0544w(80E00004): LDR R0, SP, 4H
0545w(81E00008): LDR R1, SP, 8H
0546x .FIXUP P
0546x(F794500D): BL MOD9 [ORG] PROC69
0547y(E7000004): B 4 [054CH]
0548z .FIXUP D
0548z(8D00001C): LDR SB, MT, MOD0 [ORP]
0549z(40D8025C): ADD R0, SB, 25CH ["not an array"]
054Az(4100000D): MOV R1, R0, DH
054Ba .FIXUP P
054Ba(F7709005): BL MOD7 [ORS] PROC9
ELSIF fctb IN {7, 8, 9} THENc (*LSL, ASR, ROR*) CheckInt(y)d;e
054Cb(E70000B6): B 182 [0603H]
054Dc(40000380): MOV R0, R0, 380H
054Ec(81E0000C): LDR R1, SP, CH
054Fc(41180001): ADD R1, R1, 1H
0550c(00030001): ROR R0, R0, R1
0551c(E800001D): BPL 29 [056FH]
0552d(40E80014): ADD R0, SP, 14H
0553d .FIXUP D
0553d(8D90000B): LDR SB, MT, MOD9 [ORG]
0554d(41D80001): ADD R1, SB, VAR1
0555e(F7FFFB17): BL -1257 [006DH]
IF x.type.formf IN {ORB.Int, ORB.Set} THENg ORG.Shift(fct-7,h x,i y)j;k restyp := x.type ELSEl ORSm.Mark("bad type")n ENDo
0556f(80E00004): LDR R0, SP, 4H
0557f(80000004): LDR R0, R0, 4H
0558f(D1277A4C): BLEQ MT [trap=4, pos=10106]
0559g(41000050): MOV R1, R0, 50H
055Ag(80000000): LDR R0, R0, 0H
055Bg(40080001): ADD R0, R0, 1H
055Cg(01130000): ROR R1, R1, R0
055Dg(E800000C): BPL 12 [056AH]
055Eh(80E0000C): LDR R0, SP, CH
055Fh(40090007): SUB R0, R0, 7H
0560i(81E00004): LDR R1, SP, 4H
0561i(82E00008): LDR R2, SP, 8H
0562j(43E80014): ADD R3, SP, 14H
0563j .FIXUP D
0563j(8D900010): LDR SB, MT, MOD9 [ORG]
0564j(44D80001): ADD R4, SB, VAR1
0565k .FIXUP P
0565k(F794601A): BL MOD9 [ORG] PROC70
0566l(80E00004): LDR R0, SP, 4H
0567l(80000004): LDR R0, R0, 4H
0568l(A0E00010): STR R0, SP, 10H
0569m(E7000004): B 4 [056EH]
056An .FIXUP D
056An(8D000007): LDR SB, MT, MOD0 [ORP]
056Bn(40D8026C): ADD R0, SB, 26CH ["bad type"]
056Cn(41000009): MOV R1, R0, 9H
056Do .FIXUP P
056Do(F7709008): BL MOD7 [ORS] PROC9
ELSIF fctp = 11 THENq (*ADC*) ORG.ADC(x,r y)s
056Ep(E7000094): B 148 [0603H]
056Fq(80E0000C): LDR R0, SP, CH
0570q(4009000B): SUB R0, R0, BH
0571q(E9000007): BNE 7 [0579H]
0572r(80E00004): LDR R0, SP, 4H
0573r(81E00008): LDR R1, SP, 8H
0574s(42E80014): ADD R2, SP, 14H
0575s .FIXUP D
0575s(8D90000B): LDR SB, MT, MOD9 [ORG]
0576s(43D80001): ADD R3, SB, VAR1
ELSIFt fctu = 12 THENv (*SBC*) ORG.SBC(x,w y)x
0577t .FIXUP P
0577t(F794700A): BL MOD9 [ORG] PROC71
0578u(E700008A): B 138 [0603H]
0579v(80E0000C): LDR R0, SP, CH
057Av(4009000C): SUB R0, R0, CH
057Bv(E9000007): BNE 7 [0583H]
057Cw(80E00004): LDR R0, SP, 4H
057Dw(81E00008): LDR R1, SP, 8H
057Ex(42E80014): ADD R2, SP, 14H
057Fx .FIXUP D
057Fx(8D90000A): LDR SB, MT, MOD9 [ORG]
0580x(43D80001): ADD R3, SB, VAR1
ELSIFy fctz = 13 THENa (*UML*) ORG.UML(x,b y)c
0581y .FIXUP P
0581y(F794800A): BL MOD9 [ORG] PROC72
0582z(E7000080): B 128 [0603H]
0583a(80E0000C): LDR R0, SP, CH
0584a(4009000D): SUB R0, R0, DH
0585a(E9000007): BNE 7 [058DH]
0586b(80E00004): LDR R0, SP, 4H
0587b(81E00008): LDR R1, SP, 8H
0588c(42E80014): ADD R2, SP, 14H
0589c .FIXUP D
0589c(8D90000A): LDR SB, MT, MOD9 [ORG]
058Ac(43D80001): ADD R3, SB, VAR1
ELSIFd fcte = 14 THENf (*BIT*) CheckInt(x)g;h CheckInt(y)i;j ORG.Bit(x,k y)l
058Bd .FIXUP P
058Bd(F794900A): BL MOD9 [ORG] PROC73
058Ce(E7000076): B 118 [0603H]
058Df(80E0000C): LDR R0, SP, CH
058Ef(4009000E): SUB R0, R0, EH
058Ff(E900000E): BNE 14 [059EH]
0590g(80E00004): LDR R0, SP, 4H
0591g(81E00008): LDR R1, SP, 8H
0592h(F7FFFADA): BL -1318 [006DH]
0593i(40E80014): ADD R0, SP, 14H
0594i .FIXUP D
0594i(8D90000B): LDR SB, MT, MOD9 [ORG]
0595i(41D80001): ADD R1, SB, VAR1
0596j(F7FFFAD6): BL -1322 [006DH]
0597k(80E00004): LDR R0, SP, 4H
0598k(81E00008): LDR R1, SP, 8H
0599l(42E80014): ADD R2, SP, 14H
059Al .FIXUP D
059Al(8D900006): LDR SB, MT, MOD9 [ORG]
059Bl(43D80001): ADD R3, SB, VAR1
ELSIFm fctn = 15 THENo (*REG*) CheckConst(x)p;q CheckInt(x)r;s ORG.Register(x)t
059Cm .FIXUP P
059Cm(F794A011): BL MOD9 [ORG] PROC74
059Dn(E7000065): B 101 [0603H]
059Eo(80E0000C): LDR R0, SP, CH
059Fo(4009000F): SUB R0, R0, FH
05A0o(E900000A): BNE 10 [05ABH]
05A1p(80E00004): LDR R0, SP, 4H
05A2p(81E00008): LDR R1, SP, 8H
05A3q(F7FFFB2E): BL -1234 [00D2H]
05A4r(80E00004): LDR R0, SP, 4H
05A5r(81E00008): LDR R1, SP, 8H
05A6s(F7FFFAC6): BL -1338 [006DH]
05A7t(80E00004): LDR R0, SP, 4H
05A8t(81E00008): LDR R1, SP, 8H
ELSIFu fctv = 16 THENw (*VAL*)
05A9u .FIXUP P
05A9u(F794B00D): BL MOD9 [ORG] PROC75
05AAv(E7000058): B 88 [0603H]
05ABw(80E0000C): LDR R0, SP, CH
05ACw(40090010): SUB R0, R0, 10H
05ADw(E900001F): BNE 31 [05CDH]
IF (x.mode= ORB.Typ)x & (yx.type.sizez <= y.type.sizea)b THENc restyp := x.type;d x := y
05AEx(80E00004): LDR R0, SP, 4H
05AFx(80000000): LDR R0, R0, 0H
05B0x(40090005): SUB R0, R0, 5H
05B1y(E9000016): BNE 22 [05C8H]
05B2z(80E00004): LDR R0, SP, 4H
05B3z(80000004): LDR R0, R0, 4H
05B4z(D129524C): BLEQ MT [trap=4, pos=10578]
05B5a(81E00018): LDR R1, SP, 18H
05B6a(D129614C): BLEQ MT [trap=4, pos=10593]
05B7b(80000020): LDR R0, R0, 20H
05B8b(81100020): LDR R1, R1, 20H
05B9b(00090001): SUB R0, R0, R1
05BAc(EE00000D): BGT 13 [05C8H]
05BBd(80E00004): LDR R0, SP, 4H
05BCd(80000004): LDR R0, R0, 4H
05BDd(A0E00010): STR R0, SP, 10H
ELSEe ORSf.Mark("casting not allowed")g
05BEe(80E00004): LDR R0, SP, 4H
05BFe(41E80014): ADD R1, SP, 14H
05C0e(42000006): MOV R2, R0, 6H
05C1e(83100000): LDR R3, R1, 0H
05C2e(41180004): ADD R1, R1, 4H
05C3e(A3000000): STR R3, R0, 0H
05C4e(40080004): ADD R0, R0, 4H
05C5e(42290001): SUB R2, R2, 1H
05C6e(E9FFFFFA): BNE -6 [05C1H]
05C7f(E7000004): B 4 [05CCH]
05C8g .FIXUP D
05C8g(8D00002E): LDR SB, MT, MOD0 [ORP]
05C9g(40D80278): ADD R0, SB, 278H ["casting not allowed"]
05CAg(41000014): MOV R1, R0, 14H
ENDh
05CBh .FIXUP P
05CBh(F7709022): BL MOD7 [ORS] PROC9
ELSIF fcti = 17 THENj (*ADR*) ORG.Adr(x)k
05CCi(E7000036): B 54 [0603H]
05CDj(80E0000C): LDR R0, SP, CH
05CEj(40090011): SUB R0, R0, 11H
05CFj(E9000004): BNE 4 [05D4H]
05D0k(80E00004): LDR R0, SP, 4H
05D1k(81E00008): LDR R1, SP, 8H
ELSIFl fctm = 18 THENn (*SIZE*)
05D2l .FIXUP P
05D2l(F794D007): BL MOD9 [ORG] PROC77
05D3m(E700002F): B 47 [0603H]
05D4n(80E0000C): LDR R0, SP, CH
05D5n(40090012): SUB R0, R0, 12H
05D6n(E9000013): BNE 19 [05EAH]
IF x.mode = ORB.Typ THENo ORG.MakeConstItem(x,p ORB.intType,q x.type.sizer)s
05D7o(80E00004): LDR R0, SP, 4H
05D8o(80000000): LDR R0, R0, 0H
05D9o(40090005): SUB R0, R0, 5H
05DAo(E900000A): BNE 10 [05E5H]
05DBp(80E00004): LDR R0, SP, 4H
05DCp(81E00008): LDR R1, SP, 8H
05DDq .FIXUP D
05DDq(8D800015): LDR SB, MT, MOD8 [ORB]
05DEq(82D00009): LDR R2, SB, VAR9
05DFr(83E00004): LDR R3, SP, 4H
05E0r(83300004): LDR R3, R3, 4H
05E1r(D12A584C): BLEQ MT [trap=4, pos=10840]
05E2s(83300020): LDR R3, R3, 20H
ELSEt ORSu.Mark("must be a type")v
05E3t .FIXUP P
05E3t(F7905011): BL MOD9 [ORG] PROC5
05E4u(E7000004): B 4 [05E9H]
05E5v .FIXUP D
05E5v(8D000008): LDR SB, MT, MOD0 [ORP]
05E6v(40D8028C): ADD R0, SB, 28CH ["must be a type"]
05E7v(4100000F): MOV R1, R0, FH
ENDw
05E8w .FIXUP P
05E8w(F7709005): BL MOD7 [ORS] PROC9
ELSIF fctx = 19 THENy (*COND*) CheckConst(x)z;a CheckInt(x)b;c ORG.Condition(x)d
05E9x(E7000019): B 25 [0603H]
05EAy(80E0000C): LDR R0, SP, CH
05EBy(40090013): SUB R0, R0, 13H
05ECy(E900000A): BNE 10 [05F7H]
05EDz(80E00004): LDR R0, SP, 4H
05EEz(81E00008): LDR R1, SP, 8H
05EFa(F7FFFAE2): BL -1310 [00D2H]
05F0b(80E00004): LDR R0, SP, 4H
05F1b(81E00008): LDR R1, SP, 8H
05F2c(F7FFFA7A): BL -1414 [006DH]
05F3d(80E00004): LDR R0, SP, 4H
05F4d(81E00008): LDR R1, SP, 8H
ELSIFe fctf = 20 THENg (*H*) CheckConst(x)h;i CheckInt(x)j;k ORG.H(x)l
05F5e .FIXUP P
05F5e(F794E00D): BL MOD9 [ORG] PROC78
05F6f(E700000C): B 12 [0603H]
05F7g(80E0000C): LDR R0, SP, CH
05F8g(40090014): SUB R0, R0, 14H
05F9g(E9000009): BNE 9 [0603H]
05FAh(80E00004): LDR R0, SP, 4H
05FBh(81E00008): LDR R1, SP, 8H
05FCi(F7FFFAD5): BL -1323 [00D2H]
05FDj(80E00004): LDR R0, SP, 4H
05FEj(81E00008): LDR R1, SP, 8H
05FFk(F7FFFA6D): BL -1427 [006DH]
0600l(80E00004): LDR R0, SP, 4H
0601l(81E00008): LDR R1, SP, 8H
ENDm ;
0602m .FIXUP P
0602m(F794C00D): BL MOD9 [ORG] PROC76
x.type := restyp
ELSEn ORSo.Mark("wrong nof params")p
0603n(80E00010): LDR R0, SP, 10H
0604n(81E00004): LDR R1, SP, 4H
0605n(A0100004): STR R0, R1, 4H
0606o(E7000004): B 4 [060BH]
0607p .FIXUP D
0607p(8D000022): LDR SB, MT, MOD0 [ORP]
0608p(40D8029C): ADD R0, SB, 29CH ["wrong nof params"]
0609p(41000011): MOV R1, R0, 11H
ENDq
060Aq .FIXUP P
060Aq(F7709008): BL MOD7 [ORS] PROC9
ENDr StandFunc;
060Br(8FE00000): LDR LNK, SP, 0H
060Cr(4EE80034): ADD SP, SP, 34H
060Dr(C700000F): B LNK
PROCEDURE element(VAR x: ORG.Item);
VAR y: ORG.Item;
BEGINs expression(x)t;u CheckSetVal(x)v;w
060Es(4EE90024): SUB SP, SP, 24H
060Fs(AFE00000): STR LNK, SP, 0H
0610s(A0E00004): STR R0, SP, 4H
0611s(A1E00008): STR R1, SP, 8H
0612t(80E00004): LDR R0, SP, 4H
0613t(81E00008): LDR R1, SP, 8H
0614u .FIXUP D
0614u(8D00000D): LDR SB, MT, MOD0 [ORP]
0615u(82D00034): LDR R2, SB, 34H [data]
0616u(D12BD75C): BLEQ MT [trap=5, pos=11223]
0617u(D7000002): BL R2
0618v(80E00004): LDR R0, SP, 4H
0619v(81E00008): LDR R1, SP, 8H
061Aw(F7FFFA91): BL -1391 [00ACH]
IF sym = ORS.upto THENx ORS.Get(sym)y;z expression(y)a;b CheckSetVal(y)c;d ORG.Set(x,e y)f
061Bx .FIXUP D
061Bx(8D000007): LDR SB, MT, MOD0 [ORP]
061Cx(80D0001C): LDR R0, SB, 1CH [data]
061Dx(4009002B): SUB R0, R0, 2BH
061Ex(E9000015): BNE 21 [0634H]
061Fy .FIXUP D
061Fy(8D000004): LDR SB, MT, MOD0 [ORP]
0620y(40D8001C): ADD R0, SB, 1CH [data]
0621z .FIXUP P
0621z(F770A017): BL MOD7 [ORS] PROC10
0622a(40E8000C): ADD R0, SP, CH
0623a .FIXUP D
0623a(8D900004): LDR SB, MT, MOD9 [ORG]
0624a(41D80001): ADD R1, SB, VAR1
0625b .FIXUP D
0625b(8D000002): LDR SB, MT, MOD0 [ORP]
0626b(82D00034): LDR R2, SB, 34H [data]
0627b(D12C1F5C): BLEQ MT [trap=5, pos=11295]
0628b(D7000002): BL R2
0629c(40E8000C): ADD R0, SP, CH
062Ac .FIXUP D
062Ac(8D900005): LDR SB, MT, MOD9 [ORG]
062Bc(41D80001): ADD R1, SB, VAR1
062Cd(F7FFFA7F): BL -1409 [00ACH]
062De(80E00004): LDR R0, SP, 4H
062Ee(81E00008): LDR R1, SP, 8H
062Ff(42E8000C): ADD R2, SP, CH
0630f .FIXUP D
0630f(8D900006): LDR SB, MT, MOD9 [ORG]
0631f(43D80001): ADD R3, SB, VAR1
ELSEg ORGh.Singleton(x)i
0632g .FIXUP P
0632g(F7919011): BL MOD9 [ORG] PROC25
0633h(E7000003): B 3 [0637H]
0634i(80E00004): LDR R0, SP, 4H
0635i(81E00008): LDR R1, SP, 8H
ENDj ;
0636j .FIXUP P
0636j(F7918004): BL MOD9 [ORG] PROC24
x.type := ORB.setType
ENDk element;
0637k .FIXUP D
0637k(8D800007): LDR SB, MT, MOD8 [ORB]
0638k(80D0000B): LDR R0, SB, VAR11
0639k(81E00004): LDR R1, SP, 4H
063Ak(A0100004): STR R0, R1, 4H
063Bk(8FE00000): LDR LNK, SP, 0H
063Ck(4EE80024): ADD SP, SP, 24H
063Dk(C700000F): B LNK
PROCEDURE set(VAR x: ORG.Item);
VAR y: ORG.Item;
BEGINl
063El(4EE90024): SUB SP, SP, 24H
063Fl(AFE00000): STR LNK, SP, 0H
0640l(A0E00004): STR R0, SP, 4H
0641l(A1E00008): STR R1, SP, 8H
IF sym >= ORS.if THENm
0642m .FIXUP D
0642m(8D00000B): LDR SB, MT, MOD0 [ORP]
0643m(80D0001C): LDR R0, SB, 1CH [data]
0644m(40090020): SUB R0, R0, 20H
0645m(E500000F): BLT 15 [0655H]
IF sym # ORS.rbrace THENn ORS.Mark(" } missing")o ENDp ;
0646n .FIXUP D
0646n(8D000004): LDR SB, MT, MOD0 [ORP]
0647n(80D0001C): LDR R0, SB, 1CH [data]
0648n(4009002E): SUB R0, R0, 2EH
0649n(E1000004): BEQ 4 [064EH]
064Ao .FIXUP D
064Ao(8D000004): LDR SB, MT, MOD0 [ORP]
064Bo(40D802B0): ADD R0, SB, 2B0H [" } missing"]
064Co(4100000B): MOV R1, R0, BH
064Dp .FIXUP P
064Dp(F7709017): BL MOD7 [ORS] PROC9
ORG.MakeConstItem(x,q ORB.setType,r 0)s (*empty set*)
064Eq(80E00004): LDR R0, SP, 4H
064Fq(81E00008): LDR R1, SP, 8H
0650r .FIXUP D
0650r(8D800006): LDR SB, MT, MOD8 [ORB]
0651r(82D0000B): LDR R2, SB, VAR11
0652s(43000000): MOV R3, R0, 0H
ELSEt elementu(x)v;w
0653t .FIXUP P
0653t(F7905006): BL MOD9 [ORG] PROC5
0654u(E7000027): B 39 [067CH]
0655v(80E00004): LDR R0, SP, 4H
0656v(81E00008): LDR R1, SP, 8H
0657w(F7FFFFB6): BL -74 [060EH]
WHILE (sym < ORS.rparen)x OR (ysym > ORS.rbrace)z DOa
0658x .FIXUP D
0658x(8D000008): LDR SB, MT, MOD0 [ORP]
0659x(80D0001C): LDR R0, SB, 1CH [data]
065Ax(4009002C): SUB R0, R0, 2CH
065By(E5000004): BLT 4 [0660H]
065Cz .FIXUP D
065Cz(8D000004): LDR SB, MT, MOD0 [ORP]
065Dz(80D0001C): LDR R0, SB, 1CH [data]
065Ez(4009002E): SUB R0, R0, 2EH
065Fa(E600001C): BLE 28 [067CH]
IF sym = ORS.comma THENb ORS.Get(sym)c
0660b .FIXUP D
0660b(8D000004): LDR SB, MT, MOD0 [ORP]
0661b(80D0001C): LDR R0, SB, 1CH [data]
0662b(40090028): SUB R0, R0, 28H
0663b(E9000004): BNE 4 [0668H]
0664c .FIXUP D
0664c(8D000004): LDR SB, MT, MOD0 [ORP]
0665c(40D8001C): ADD R0, SB, 1CH [data]
ELSIFd syme # ORS.rbrace THENf ORS.Mark("missing comma")g
0666d .FIXUP P
0666d(F770A013): BL MOD7 [ORS] PROC10
0667e(E7000008): B 8 [0670H]
0668f .FIXUP D
0668f(8D000004): LDR SB, MT, MOD0 [ORP]
0669f(80D0001C): LDR R0, SB, 1CH [data]
066Af(4009002E): SUB R0, R0, 2EH
066Bf(E1000004): BEQ 4 [0670H]
066Cg .FIXUP D
066Cg(8D000004): LDR SB, MT, MOD0 [ORP]
066Dg(40D802BC): ADD R0, SB, 2BCH ["missing comma"]
066Eg(4100000E): MOV R1, R0, EH
ENDh ;
066Fh .FIXUP P
066Fh(F7709009): BL MOD7 [ORS] PROC9
element(y)i;j ORG.SetOp(ORS.plus,k x,l y)m
0670i(40E8000C): ADD R0, SP, CH
0671i .FIXUP D
0671i(8D900005): LDR SB, MT, MOD9 [ORG]
0672i(41D80001): ADD R1, SB, VAR1
0673j(F7FFFF9A): BL -102 [060EH]
0674k(40000006): MOV R0, R0, 6H
0675l(81E00004): LDR R1, SP, 4H
0676l(82E00008): LDR R2, SP, 8H
0677m(43E8000C): ADD R3, SP, CH
0678m .FIXUP D
0678m(8D900007): LDR SB, MT, MOD9 [ORG]
0679m(44D80001): ADD R4, SB, VAR1
ENDn
067An .FIXUP P
067An(F791B00B): BL MOD9 [ORG] PROC27
067Bn(E7FFFFDC): B -36 [0658H]
END
ENDo set;
067Co(8FE00000): LDR LNK, SP, 0H
067Do(4EE80024): ADD SP, SP, 24H
067Eo(C700000F): B LNK
PROCEDURE factor(VAR x: ORG.Item);
VAR obj: ORB.Object; rx: LONGINT;
BEGINp (*sync*)
067Fp(4EE90014): SUB SP, SP, 14H
0680p(AFE00000): STR LNK, SP, 0H
0681p(A0E00004): STR R0, SP, 4H
0682p(A1E00008): STR R1, SP, 8H
IF (sym < ORS.char)q OR (rsym > ORS.ident)s THENt ORS.Mark("expression expected")u;v
0683q .FIXUP D
0683q(8D00000B): LDR SB, MT, MOD0 [ORP]
0684q(80D0001C): LDR R0, SB, 1CH [data]
0685q(40090014): SUB R0, R0, 14H
0686r(E5000004): BLT 4 [068BH]
0687s .FIXUP D
0687s(8D000004): LDR SB, MT, MOD0 [ORP]
0688s(80D0001C): LDR R0, SB, 1CH [data]
0689s(4009001F): SUB R0, R0, 1FH
068At(E600000F): BLE 15 [069AH]
068Bu .FIXUP D
068Bu(8D000004): LDR SB, MT, MOD0 [ORP]
068Cu(40D802CC): ADD R0, SB, 2CCH ["expression expected"]
068Du(41000014): MOV R1, R0, 14H
068Ev .FIXUP P
068Ev(F7709014): BL MOD7 [ORS] PROC9
REPEAT ORS.Get(sym)w UNTILx (sym >= ORS.char)y & (zsym <= ORS.ident)a
068Fw .FIXUP D
068Fw(8D000004): LDR SB, MT, MOD0 [ORP]
0690w(40D8001C): ADD R0, SB, 1CH [data]
0691x .FIXUP P
0691x(F770A003): BL MOD7 [ORS] PROC10
0692y .FIXUP D
0692y(8D000003): LDR SB, MT, MOD0 [ORP]
0693y(80D0001C): LDR R0, SB, 1CH [data]
0694y(40090014): SUB R0, R0, 14H
0695z(E5FFFFF9): BLT -7 [068FH]
0696a .FIXUP D
0696a(8D000004): LDR SB, MT, MOD0 [ORP]
0697a(80D0001C): LDR R0, SB, 1CH [data]
0698a(4009001F): SUB R0, R0, 1FH
ENDb ;
0699b(EEFFFFF5): BGT -11 [068FH]
IF sym = ORS.ident THENc
069Ac .FIXUP D
069Ac(8D000004): LDR SB, MT, MOD0 [ORP]
069Bc(80D0001C): LDR R0, SB, 1CH [data]
069Cc(4009001F): SUB R0, R0, 1FH
069Dc(E9000049): BNE 73 [06E7H]
qualident(obj)d;e
069Ed(40E8000C): ADD R0, SP, CH
069Fe(F7FFF974): BL -1676 [0014H]
IF obj.classf = ORB.SFunc THENg StandFunc(x,h obj.vali,j obj.typek)l
06A0f(80E0000C): LDR R0, SP, CH
06A1f(D12FB54C): BLEQ MT [trap=4, pos=12213]
06A2g(90000000): LDR R0, R0, 0H
06A3g(40090007): SUB R0, R0, 7H
06A4g(E900000A): BNE 10 [06AFH]
06A5h(80E00004): LDR R0, SP, 4H
06A6h(81E00008): LDR R1, SP, 8H
06A7i(82E0000C): LDR R2, SP, CH
06A8i(D12FDB4C): BLEQ MT [trap=4, pos=12251]
06A9j(82200034): LDR R2, R2, 34H
06AAk(83E0000C): LDR R3, SP, CH
06ABk(D12FE54C): BLEQ MT [trap=4, pos=12261]
06ACl(83300010): LDR R3, R3, 10H
ELSEm ORGn.MakeItem(x,o obj,p level)q;r selector(x)s;t
06ADm(F7FFFDFA): BL -518 [04A8H]
06AEn(E7000037): B 55 [06E6H]
06AFo(80E00004): LDR R0, SP, 4H
06B0o(81E00008): LDR R1, SP, 8H
06B1p(82E0000C): LDR R2, SP, CH
06B2q .FIXUP D
06B2q(8D000018): LDR SB, MT, MOD0 [ORP]
06B3q(83D00024): LDR R3, SB, 24H [data]
06B4r .FIXUP P
06B4r(F7908023): BL MOD9 [ORG] PROC8
06B5s(80E00004): LDR R0, SP, 4H
06B6s(81E00008): LDR R1, SP, 8H
06B7t(F7FFFAED): BL -1299 [01A5H]
IF sym = ORS.lparen THENu
06B8u .FIXUP D
06B8u(8D000006): LDR SB, MT, MOD0 [ORP]
06B9u(80D0001C): LDR R0, SB, 1CH [data]
06BAu(4009001C): SUB R0, R0, 1CH
06BBu(E900002A): BNE 42 [06E6H]
ORS.Get(sym)v;w
06BCv .FIXUP D
06BCv(8D000004): LDR SB, MT, MOD0 [ORP]
06BDv(40D8001C): ADD R0, SB, 1CH [data]
06BEw .FIXUP P
06BEw(F770A00A): BL MOD7 [ORS] PROC10
IF (x.type.formx = ORB.Proc)y & (zx.type.basea.formb # ORB.NoTyp)c THENd
06BFx(80E00004): LDR R0, SP, 4H
06C0x(80000004): LDR R0, R0, 4H
06C1x(D1306E4C): BLEQ MT [trap=4, pos=12398]
06C2y(80000000): LDR R0, R0, 0H
06C3y(4009000A): SUB R0, R0, AH
06C4z(E900001A): BNE 26 [06DFH]
06C5a(80E00004): LDR R0, SP, 4H
06C6a(80000004): LDR R0, R0, 4H
06C7a(D130894C): BLEQ MT [trap=4, pos=12425]
06C8b(8000001C): LDR R0, R0, 1CH
06C9b(D1308E4C): BLEQ MT [trap=4, pos=12430]
06CAc(80000000): LDR R0, R0, 0H
06CBc(40090009): SUB R0, R0, 9H
06CCd(E1000012): BEQ 18 [06DFH]
ORG.PrepCall(x,e rx)f;g ParamList(x)h;i ORG.Call(x,j rx)k;l x.type := x.type.basem
06CDe(80E00004): LDR R0, SP, 4H
06CEe(81E00008): LDR R1, SP, 8H
06CFf(42E80010): ADD R2, SP, 10H
06D0g .FIXUP P
06D0g(F7930012): BL MOD9 [ORG] PROC48
06D1h(80E00004): LDR R0, SP, 4H
06D2h(81E00008): LDR R1, SP, 8H
06D3i(F7FFFD89): BL -631 [045DH]
06D4j(80E00004): LDR R0, SP, 4H
06D5j(81E00008): LDR R1, SP, 8H
06D6k(82E00010): LDR R2, SP, 10H
06D7l .FIXUP P
06D7l(F7931007): BL MOD9 [ORG] PROC49
06D8m(80E00004): LDR R0, SP, 4H
06D9m(80000004): LDR R0, R0, 4H
06DAm(D130F64C): BLEQ MT [trap=4, pos=12534]
ELSEn ORSo.Mark("not a function")p;q ParamList(x)r
06DBn(8000001C): LDR R0, R0, 1CH
06DCn(81E00004): LDR R1, SP, 4H
06DDn(A0100004): STR R0, R1, 4H
06DEo(E7000007): B 7 [06E6H]
06DFp .FIXUP D
06DFp(8D000023): LDR SB, MT, MOD0 [ORP]
06E0p(40D802E0): ADD R0, SB, 2E0H ["not a function"]
06E1p(4100000F): MOV R1, R0, FH
06E2q .FIXUP P
06E2q(F770900B): BL MOD7 [ORS] PROC9
06E3r(80E00004): LDR R0, SP, 4H
06E4r(81E00008): LDR R1, SP, 8H
ENDs
06E5s(F7FFFD77): BL -649 [045DH]
END
END
ELSIF symt = ORS.int THENu ORG.MakeConstItem(x,v ORB.intType,w ORS.ival)x;y ORS.Get(sym)z
06E6t(E70000A0): B 160 [0787H]
06E7u .FIXUP D
06E7u(8D000008): LDR SB, MT, MOD0 [ORP]
06E8u(80D0001C): LDR R0, SB, 1CH [data]
06E9u(40090015): SUB R0, R0, 15H
06EAu(E900000B): BNE 11 [06F6H]
06EBv(80E00004): LDR R0, SP, 4H
06ECv(81E00008): LDR R1, SP, 8H
06EDw .FIXUP D
06EDw(8D800006): LDR SB, MT, MOD8 [ORB]
06EEw(82D00009): LDR R2, SB, VAR9
06EFx .FIXUP D
06EFx(8D700002): LDR SB, MT, MOD7 [ORS]
06F0x(83D00001): LDR R3, SB, VAR1
06F1y .FIXUP P
06F1y(F790500F): BL MOD9 [ORG] PROC5
06F2z .FIXUP D
06F2z(8D000003): LDR SB, MT, MOD0 [ORP]
06F3z(40D8001C): ADD R0, SB, 1CH [data]
ELSIFa symb = ORS.real THENc ORG.MakeRealItem(x,d ORS.rval)e;f ORS.Get(sym)g
06F4a .FIXUP P
06F4a(F770A003): BL MOD7 [ORS] PROC10
06F5b(E7000091): B 145 [0787H]
06F6c .FIXUP D
06F6c(8D000004): LDR SB, MT, MOD0 [ORP]
06F7c(80D0001C): LDR R0, SB, 1CH [data]
06F8c(40090016): SUB R0, R0, 16H
06F9c(E9000009): BNE 9 [0703H]
06FAd(80E00004): LDR R0, SP, 4H
06FBd(81E00008): LDR R1, SP, 8H
06FCe .FIXUP D
06FCe(8D700006): LDR SB, MT, MOD7 [ORS]
06FDe(82D00003): LDR R2, SB, VAR3
06FEf .FIXUP P
06FEf(F790600A): BL MOD9 [ORG] PROC6
06FFg .FIXUP D
06FFg(8D000003): LDR SB, MT, MOD0 [ORP]
0700g(40D8001C): ADD R0, SB, 1CH [data]
ELSIFh symi = ORS.char THENj ORG.MakeConstItem(x,k ORB.charType,l ORS.ival)m;n ORS.Get(sym)o
0701h .FIXUP P
0701h(F770A003): BL MOD7 [ORS] PROC10
0702i(E7000084): B 132 [0787H]
0703j .FIXUP D
0703j(8D000004): LDR SB, MT, MOD0 [ORP]
0704j(80D0001C): LDR R0, SB, 1CH [data]
0705j(40090014): SUB R0, R0, 14H
0706j(E900000B): BNE 11 [0712H]
0707k(80E00004): LDR R0, SP, 4H
0708k(81E00008): LDR R1, SP, 8H
0709l .FIXUP D
0709l(8D800006): LDR SB, MT, MOD8 [ORB]
070Al(82D00008): LDR R2, SB, VAR8
070Bm .FIXUP D
070Bm(8D700002): LDR SB, MT, MOD7 [ORS]
070Cm(83D00001): LDR R3, SB, VAR1
070Dn .FIXUP P
070Dn(F790500C): BL MOD9 [ORG] PROC5
070Eo .FIXUP D
070Eo(8D000003): LDR SB, MT, MOD0 [ORP]
070Fo(40D8001C): ADD R0, SB, 1CH [data]
ELSIFp symq = ORS.nil THENr ORS.Get(sym)s;t ORG.MakeConstItem(x,u ORB.nilType,v 0)w
0710p .FIXUP P
0710p(F770A003): BL MOD7 [ORS] PROC10
0711q(E7000075): B 117 [0787H]
0712r .FIXUP D
0712r(8D000004): LDR SB, MT, MOD0 [ORP]
0713r(80D0001C): LDR R0, SB, 1CH [data]
0714r(40090019): SUB R0, R0, 19H
0715r(E900000A): BNE 10 [0720H]
0716s .FIXUP D
0716s(8D000004): LDR SB, MT, MOD0 [ORP]
0717s(40D8001C): ADD R0, SB, 1CH [data]
0718t .FIXUP P
0718t(F770A008): BL MOD7 [ORS] PROC10
0719u(80E00004): LDR R0, SP, 4H
071Au(81E00008): LDR R1, SP, 8H
071Bv .FIXUP D
071Bv(8D800005): LDR SB, MT, MOD8 [ORB]
071Cv(82D0000C): LDR R2, SB, VAR12
071Dw(43000000): MOV R3, R0, 0H
ELSIFx symy = ORS.string THENz ORG.MakeStringItem(x,a ORS.slen)b;c ORS.Get(sym)d
071Ex .FIXUP P
071Ex(F7905006): BL MOD9 [ORG] PROC5
071Fy(E7000067): B 103 [0787H]
0720z .FIXUP D
0720z(8D000005): LDR SB, MT, MOD0 [ORP]
0721z(80D0001C): LDR R0, SB, 1CH [data]
0722z(4009001A): SUB R0, R0, 1AH
0723z(E9000009): BNE 9 [072DH]
0724a(80E00004): LDR R0, SP, 4H
0725a(81E00008): LDR R1, SP, 8H
0726b .FIXUP D
0726b(8D700006): LDR SB, MT, MOD7 [ORS]
0727b(82D00002): LDR R2, SB, VAR2
0728c .FIXUP P
0728c(F790700A): BL MOD9 [ORG] PROC7
0729d .FIXUP D
0729d(8D000003): LDR SB, MT, MOD0 [ORP]
072Ad(40D8001C): ADD R0, SB, 1CH [data]
ELSIFe symf = ORS.lparen THENg ORS.Get(sym)h;i expression(x)j;k Check(ORS.rparen,l "no )")m
072Be .FIXUP P
072Be(F770A003): BL MOD7 [ORS] PROC10
072Cf(E700005A): B 90 [0787H]
072Dg .FIXUP D
072Dg(8D000004): LDR SB, MT, MOD0 [ORP]
072Eg(80D0001C): LDR R0, SB, 1CH [data]
072Fg(4009001C): SUB R0, R0, 1CH
0730g(E900000F): BNE 15 [0740H]
0731h .FIXUP D
0731h(8D000004): LDR SB, MT, MOD0 [ORP]
0732h(40D8001C): ADD R0, SB, 1CH [data]
0733i .FIXUP P
0733i(F770A008): BL MOD7 [ORS] PROC10
0734j(80E00004): LDR R0, SP, 4H
0735j(81E00008): LDR R1, SP, 8H
0736k .FIXUP D
0736k(8D000005): LDR SB, MT, MOD0 [ORP]
0737k(82D00034): LDR R2, SB, 34H [data]
0738k(D133275C): BLEQ MT [trap=5, pos=13095]
0739k(D7000002): BL R2
073Al(4000002C): MOV R0, R0, 2CH
073Bm .FIXUP D
073Bm(8D000005): LDR SB, MT, MOD0 [ORP]
073Cm(41D802F0): ADD R1, SB, 2F0H ["no )"]
073Dm(42000005): MOV R2, R0, 5H
ELSIFn symo = ORS.lbrace THENp ORS.Get(sym)q;r set(x)s;t Check(ORS.rbrace,u "no }")v
073En(F7FFF8C1): BL -1855 [0000H]
073Fo(E7000047): B 71 [0787H]
0740p .FIXUP D
0740p(8D000005): LDR SB, MT, MOD0 [ORP]
0741p(80D0001C): LDR R0, SB, 1CH [data]
0742p(4009001E): SUB R0, R0, 1EH
0743p(E900000C): BNE 12 [0750H]
0744q .FIXUP D
0744q(8D000004): LDR SB, MT, MOD0 [ORP]
0745q(40D8001C): ADD R0, SB, 1CH [data]
0746r .FIXUP P
0746r(F770A013): BL MOD7 [ORS] PROC10
0747s(80E00004): LDR R0, SP, 4H
0748s(81E00008): LDR R1, SP, 8H
0749t(F7FFFEF4): BL -268 [063EH]
074Au(4000002E): MOV R0, R0, 2EH
074Bv .FIXUP D
074Bv(8D000007): LDR SB, MT, MOD0 [ORP]
074Cv(41D802F8): ADD R1, SB, 2F8H ["no }"]
074Dv(42000005): MOV R2, R0, 5H
ELSIFw symx = ORS.not THENy ORS.Get(sym)z;a factor(x)b;c CheckBool(x)d;e ORG.Not(x)f
074Ew(F7FFF8B1): BL -1871 [0000H]
074Fx(E7000037): B 55 [0787H]
0750y .FIXUP D
0750y(8D000005): LDR SB, MT, MOD0 [ORP]
0751y(80D0001C): LDR R0, SB, 1CH [data]
0752y(4009001B): SUB R0, R0, 1BH
0753y(E900000D): BNE 13 [0761H]
0754z .FIXUP D
0754z(8D000004): LDR SB, MT, MOD0 [ORP]
0755z(40D8001C): ADD R0, SB, 1CH [data]
0756a .FIXUP P
0756a(F770A010): BL MOD7 [ORS] PROC10
0757b(80E00004): LDR R0, SP, 4H
0758b(81E00008): LDR R1, SP, 8H
0759c(F7FFFF25): BL -219 [067FH]
075Ad(80E00004): LDR R0, SP, 4H
075Bd(81E00008): LDR R1, SP, 8H
075Ce(F7FFF8FB): BL -1797 [0058H]
075Df(80E00004): LDR R0, SP, 4H
075Ef(81E00008): LDR R1, SP, 8H
ELSIFg symh = ORS.false THENi ORS.Get(sym)j;k ORG.MakeConstItem(x,l ORB.boolType,m 0)n
075Fg .FIXUP P
075Fg(F790E009): BL MOD9 [ORG] PROC14
0760h(E7000026): B 38 [0787H]
0761i .FIXUP D
0761i(8D00000D): LDR SB, MT, MOD0 [ORP]
0762i(80D0001C): LDR R0, SB, 1CH [data]
0763i(40090017): SUB R0, R0, 17H
0764i(E900000A): BNE 10 [076FH]
0765j .FIXUP D
0765j(8D000004): LDR SB, MT, MOD0 [ORP]
0766j(40D8001C): ADD R0, SB, 1CH [data]
0767k .FIXUP P
0767k(F770A008): BL MOD7 [ORS] PROC10
0768l(80E00004): LDR R0, SP, 4H
0769l(81E00008): LDR R1, SP, 8H
076Am .FIXUP D
076Am(8D800005): LDR SB, MT, MOD8 [ORB]
076Bm(82D00007): LDR R2, SB, VAR7
076Cn(43000000): MOV R3, R0, 0H
ELSIFo symp = ORS.true THENq ORS.Get(sym)r;s ORG.MakeConstItem(x,t ORB.boolType,u 1)v
076Do .FIXUP P
076Do(F7905006): BL MOD9 [ORG] PROC5
076Ep(E7000018): B 24 [0787H]
076Fq .FIXUP D
076Fq(8D000005): LDR SB, MT, MOD0 [ORP]
0770q(80D0001C): LDR R0, SB, 1CH [data]
0771q(40090018): SUB R0, R0, 18H
0772q(E900000A): BNE 10 [077DH]
0773r .FIXUP D
0773r(8D000004): LDR SB, MT, MOD0 [ORP]
0774r(40D8001C): ADD R0, SB, 1CH [data]
0775s .FIXUP P
0775s(F770A008): BL MOD7 [ORS] PROC10
0776t(80E00004): LDR R0, SP, 4H
0777t(81E00008): LDR R1, SP, 8H
0778u .FIXUP D
0778u(8D800005): LDR SB, MT, MOD8 [ORB]
0779u(82D00007): LDR R2, SB, VAR7
077Av(43000001): MOV R3, R0, 1H
ELSEw ORSx.Mark("not a factor")y;z ORG.MakeConstItem(x,a ORB.intType,b 0)c
077Bw .FIXUP P
077Bw(F7905006): BL MOD9 [ORG] PROC5
077Cx(E700000A): B 10 [0787H]
077Dy .FIXUP D
077Dy(8D000005): LDR SB, MT, MOD0 [ORP]
077Ey(40D80300): ADD R0, SB, 300H ["not a factor"]
077Fy(4100000D): MOV R1, R0, DH
0780z .FIXUP P
0780z(F7709005): BL MOD7 [ORS] PROC9
0781a(80E00004): LDR R0, SP, 4H
0782a(81E00008): LDR R1, SP, 8H
0783b .FIXUP D
0783b(8D800006): LDR SB, MT, MOD8 [ORB]
0784b(82D00009): LDR R2, SB, VAR9
0785c(43000000): MOV R3, R0, 0H
ENDd
0786d .FIXUP P
0786d(F7905006): BL MOD9 [ORG] PROC5
ENDe factor;
0787e(8FE00000): LDR LNK, SP, 0H
0788e(4EE80014): ADD SP, SP, 14H
0789e(C700000F): B LNK
PROCEDURE term(VAR x: ORG.Item);
VAR y: ORG.Item; op, f: INTEGER;
BEGINf factor(x)g;h f := x.type.formi;j
078Af(4EE9002C): SUB SP, SP, 2CH
078Bf(AFE00000): STR LNK, SP, 0H
078Cf(A0E00004): STR R0, SP, 4H
078Df(A1E00008): STR R1, SP, 8H
078Eg(80E00004): LDR R0, SP, 4H
078Fg(81E00008): LDR R1, SP, 8H
0790h(F7FFFEEE): BL -274 [067FH]
0791i(80E00004): LDR R0, SP, 4H
0792i(80000004): LDR R0, R0, 4H
0793i(D135504C): BLEQ MT [trap=4, pos=13648]
0794j(80000000): LDR R0, R0, 0H
0795j(A0E00028): STR R0, SP, 28H
WHILE (sym >= ORS.times)k & (lsym <= ORS.and)m DOn
0796k .FIXUP D
0796k(8D000013): LDR SB, MT, MOD0 [ORP]
0797k(80D0001C): LDR R0, SB, 1CH [data]
0798k(40090001): SUB R0, R0, 1H
0799l(E50000A5): BLT 165 [083FH]
079Am .FIXUP D
079Am(8D000004): LDR SB, MT, MOD0 [ORP]
079Bm(80D0001C): LDR R0, SB, 1CH [data]
079Cm(40090005): SUB R0, R0, 5H
079Dn(EE0000A1): BGT 161 [083FH]
op := sym;o ORS.Get(sym)p;q
079Eo .FIXUP D
079Eo(8D000004): LDR SB, MT, MOD0 [ORP]
079Fo(80D0001C): LDR R0, SB, 1CH [data]
07A0o(A0E00024): STR R0, SP, 24H
07A1p(40D8001C): ADD R0, SB, 1CH
07A2q .FIXUP P
07A2q(F770A01C): BL MOD7 [ORS] PROC10
IF op = ORS.times THENr
07A3r(80E00024): LDR R0, SP, 24H
07A4r(40090001): SUB R0, R0, 1H
07A5r(E900003D): BNE 61 [07E3H]
IF f = ORB.Int THENs factor(y)t;u CheckInt(y)v;w ORG.MulOp(x,x y)y
07A6s(80E00028): LDR R0, SP, 28H
07A7s(40090004): SUB R0, R0, 4H
07A8s(E900000F): BNE 15 [07B8H]
07A9t(40E8000C): ADD R0, SP, CH
07AAt .FIXUP D
07AAt(8D90000C): LDR SB, MT, MOD9 [ORG]
07ABt(41D80001): ADD R1, SB, VAR1
07ACu(F7FFFED2): BL -302 [067FH]
07ADv(40E8000C): ADD R0, SP, CH
07AEv .FIXUP D
07AEv(8D900004): LDR SB, MT, MOD9 [ORG]
07AFv(41D80001): ADD R1, SB, VAR1
07B0w(F7FFF8BC): BL -1860 [006DH]
07B1x(80E00004): LDR R0, SP, 4H
07B2x(81E00008): LDR R1, SP, 8H
07B3y(42E8000C): ADD R2, SP, CH
07B4y .FIXUP D
07B4y(8D900006): LDR SB, MT, MOD9 [ORG]
07B5y(43D80001): ADD R3, SB, VAR1
ELSIFz fa = ORB.Real THENb factor(y)c;d CheckReal(y)e;f ORG.RealOp(op,g x,h y)i
07B6z .FIXUP P
07B6z(F7915014): BL MOD9 [ORG] PROC21
07B7a(E700002A): B 42 [07E2H]
07B8b(80E00028): LDR R0, SP, 28H
07B9b(40090005): SUB R0, R0, 5H
07BAb(E9000010): BNE 16 [07CBH]
07BBc(40E8000C): ADD R0, SP, CH
07BCc .FIXUP D
07BCc(8D900008): LDR SB, MT, MOD9 [ORG]
07BDc(41D80001): ADD R1, SB, VAR1
07BEd(F7FFFEC0): BL -320 [067FH]
07BFe(40E8000C): ADD R0, SP, CH
07C0e .FIXUP D
07C0e(8D900004): LDR SB, MT, MOD9 [ORG]
07C1e(41D80001): ADD R1, SB, VAR1
07C2f(F7FFF8BF): BL -1857 [0082H]
07C3g(80E00024): LDR R0, SP, 24H
07C4h(81E00004): LDR R1, SP, 4H
07C5h(82E00008): LDR R2, SP, 8H
07C6i(43E8000C): ADD R3, SP, CH
07C7i .FIXUP D
07C7i(8D900007): LDR SB, MT, MOD9 [ORG]
07C8i(44D80001): ADD R4, SB, VAR1
ELSIFj fk = ORB.Set THENl factor(y)m;n CheckSet(y)o;p ORG.SetOp(op,q x,r y)s
07C9j .FIXUP P
07C9j(F7917013): BL MOD9 [ORG] PROC23
07CAk(E7000017): B 23 [07E2H]
07CBl(80E00028): LDR R0, SP, 28H
07CCl(40090006): SUB R0, R0, 6H
07CDl(E9000010): BNE 16 [07DEH]
07CEm(40E8000C): ADD R0, SP, CH
07CFm .FIXUP D
07CFm(8D900008): LDR SB, MT, MOD9 [ORG]
07D0m(41D80001): ADD R1, SB, VAR1
07D1n(F7FFFEAD): BL -339 [067FH]
07D2o(40E8000C): ADD R0, SP, CH
07D3o .FIXUP D
07D3o(8D900004): LDR SB, MT, MOD9 [ORG]
07D4o(41D80001): ADD R1, SB, VAR1
07D5p(F7FFF8C1): BL -1855 [0097H]
07D6q(80E00024): LDR R0, SP, 24H
07D7r(81E00004): LDR R1, SP, 4H
07D8r(82E00008): LDR R2, SP, 8H
07D9s(43E8000C): ADD R3, SP, CH
07DAs .FIXUP D
07DAs(8D900007): LDR SB, MT, MOD9 [ORG]
07DBs(44D80001): ADD R4, SB, VAR1
ELSEt ORSu.Mark("bad type")v
07DCt .FIXUP P
07DCt(F791B013): BL MOD9 [ORG] PROC27
07DDu(E7000004): B 4 [07E2H]
07DEv .FIXUP D
07DEv(8D000004): LDR SB, MT, MOD0 [ORP]
07DFv(40D80310): ADD R0, SB, 310H ["bad type"]
07E0v(41000009): MOV R1, R0, 9H
ENDw
07E1w .FIXUP P
07E1w(F7709005): BL MOD7 [ORS] PROC9
ELSIF (xop = ORS.div)y OR (zop = ORS.mod)a THENb
07E2x(E700005B): B 91 [083EH]
07E3y(80E00024): LDR R0, SP, 24H
07E4y(40090003): SUB R0, R0, 3H
07E5z(E1000003): BEQ 3 [07E9H]
07E6a(80E00024): LDR R0, SP, 24H
07E7a(40090004): SUB R0, R0, 4H
07E8b(E9000013): BNE 19 [07FCH]
CheckInt(x)c;d factor(y)e;f CheckInt(y)g;h ORG.DivOp(op,i x,j y)k
07E9c(80E00004): LDR R0, SP, 4H
07EAc(81E00008): LDR R1, SP, 8H
07EBd(F7FFF881): BL -1919 [006DH]
07ECe(40E8000C): ADD R0, SP, CH
07EDe .FIXUP D
07EDe(8D90000F): LDR SB, MT, MOD9 [ORG]
07EEe(41D80001): ADD R1, SB, VAR1
07EFf(F7FFFE8F): BL -369 [067FH]
07F0g(40E8000C): ADD R0, SP, CH
07F1g .FIXUP D
07F1g(8D900004): LDR SB, MT, MOD9 [ORG]
07F2g(41D80001): ADD R1, SB, VAR1
07F3h(F7FFF879): BL -1927 [006DH]
07F4i(80E00024): LDR R0, SP, 24H
07F5j(81E00004): LDR R1, SP, 4H
07F6j(82E00008): LDR R2, SP, 8H
07F7k(43E8000C): ADD R3, SP, CH
07F8k .FIXUP D
07F8k(8D900007): LDR SB, MT, MOD9 [ORG]
07F9k(44D80001): ADD R4, SB, VAR1
ELSIFl opm = ORS.rdiv THENn
07FAl .FIXUP P
07FAl(F7916019): BL MOD9 [ORG] PROC22
07FBm(E7000042): B 66 [083EH]
07FCn(80E00024): LDR R0, SP, 24H
07FDn(40090002): SUB R0, R0, 2H
07FEn(E900002B): BNE 43 [082AH]
IF f = ORB.Real THENo factor(y)p;q CheckReal(y)r;s ORG.RealOp(op,t x,u y)v
07FFo(80E00028): LDR R0, SP, 28H
0800o(40090005): SUB R0, R0, 5H
0801o(E9000010): BNE 16 [0812H]
0802p(40E8000C): ADD R0, SP, CH
0803p .FIXUP D
0803p(8D90000B): LDR SB, MT, MOD9 [ORG]
0804p(41D80001): ADD R1, SB, VAR1
0805q(F7FFFE79): BL -391 [067FH]
0806r(40E8000C): ADD R0, SP, CH
0807r .FIXUP D
0807r(8D900004): LDR SB, MT, MOD9 [ORG]
0808r(41D80001): ADD R1, SB, VAR1
0809s(F7FFF878): BL -1928 [0082H]
080At(80E00024): LDR R0, SP, 24H
080Bu(81E00004): LDR R1, SP, 4H
080Cu(82E00008): LDR R2, SP, 8H
080Dv(43E8000C): ADD R3, SP, CH
080Ev .FIXUP D
080Ev(8D900007): LDR SB, MT, MOD9 [ORG]
080Fv(44D80001): ADD R4, SB, VAR1
ELSIFw fx = ORB.Set THENy factor(y)z;a CheckSet(y)b;c ORG.SetOp(op,d x,e y)f
0810w .FIXUP P
0810w(F7917016): BL MOD9 [ORG] PROC23
0811x(E7000017): B 23 [0829H]
0812y(80E00028): LDR R0, SP, 28H
0813y(40090006): SUB R0, R0, 6H
0814y(E9000010): BNE 16 [0825H]
0815z(40E8000C): ADD R0, SP, CH
0816z .FIXUP D
0816z(8D900008): LDR SB, MT, MOD9 [ORG]
0817z(41D80001): ADD R1, SB, VAR1
0818a(F7FFFE66): BL -410 [067FH]
0819b(40E8000C): ADD R0, SP, CH
081Ab .FIXUP D
081Ab(8D900004): LDR SB, MT, MOD9 [ORG]
081Bb(41D80001): ADD R1, SB, VAR1
081Cc(F7FFF87A): BL -1926 [0097H]
081Dd(80E00024): LDR R0, SP, 24H
081Ee(81E00004): LDR R1, SP, 4H
081Fe(82E00008): LDR R2, SP, 8H
0820f(43E8000C): ADD R3, SP, CH
0821f .FIXUP D
0821f(8D900007): LDR SB, MT, MOD9 [ORG]
0822f(44D80001): ADD R4, SB, VAR1
ELSEg ORSh.Mark("bad type")i
0823g .FIXUP P
0823g(F791B013): BL MOD9 [ORG] PROC27
0824h(E7000004): B 4 [0829H]
0825i .FIXUP D
0825i(8D000004): LDR SB, MT, MOD0 [ORP]
0826i(40D8031C): ADD R0, SB, 31CH ["bad type"]
0827i(41000009): MOV R1, R0, 9H
ENDj
0828j .FIXUP P
0828j(F7709005): BL MOD7 [ORS] PROC9
ELSE (*op = and*) CheckBoolk(x)l;m ORG.And1(x)n;o factor(y)p;q CheckBool(y)r;s ORG.And2(x,t y)u
0829k(E7000014): B 20 [083EH]
082Al(80E00004): LDR R0, SP, 4H
082Bl(81E00008): LDR R1, SP, 8H
082Cm(F7FFF82B): BL -2005 [0058H]
082Dn(80E00004): LDR R0, SP, 4H
082En(81E00008): LDR R1, SP, 8H
082Fo .FIXUP P
082Fo(F790F007): BL MOD9 [ORG] PROC15
0830p(40E8000C): ADD R0, SP, CH
0831p .FIXUP D
0831p(8D90000C): LDR SB, MT, MOD9 [ORG]
0832p(41D80001): ADD R1, SB, VAR1
0833q(F7FFFE4B): BL -437 [067FH]
0834r(40E8000C): ADD R0, SP, CH
0835r .FIXUP D
0835r(8D900004): LDR SB, MT, MOD9 [ORG]
0836r(41D80001): ADD R1, SB, VAR1
0837s(F7FFF820): BL -2016 [0058H]
0838t(80E00004): LDR R0, SP, 4H
0839t(81E00008): LDR R1, SP, 8H
083Au(42E8000C): ADD R2, SP, CH
083Bu .FIXUP D
083Bu(8D900006): LDR SB, MT, MOD9 [ORG]
083Cu(43D80001): ADD R3, SB, VAR1
ENDv
083Dv .FIXUP P
083Dv(F791000E): BL MOD9 [ORG] PROC16
ENDw
083Ew(E7FFFF57): B -169 [0796H]
ENDx term;
083Fx(8FE00000): LDR LNK, SP, 0H
0840x(4EE8002C): ADD SP, SP, 2CH
0841x(C700000F): B LNK
PROCEDURE SimpleExpression(VAR x: ORG.Item);
VAR y: ORG.Item; op: INTEGER;
BEGINy
0842y(4EE90028): SUB SP, SP, 28H
0843y(AFE00000): STR LNK, SP, 0H
0844y(A0E00004): STR R0, SP, 4H
0845y(A1E00008): STR R1, SP, 8H
IF sym = ORS.minus THENz ORS.Get(sym)a;b term(x)c;d
0846z .FIXUP D
0846z(8D00000B): LDR SB, MT, MOD0 [ORP]
0847z(80D0001C): LDR R0, SB, 1CH [data]
0848z(40090007): SUB R0, R0, 7H
0849z(E9000016): BNE 22 [0860H]
084Aa .FIXUP D
084Aa(8D000004): LDR SB, MT, MOD0 [ORP]
084Ba(40D8001C): ADD R0, SB, 1CH [data]
084Cb .FIXUP P
084Cb(F770A00F): BL MOD7 [ORS] PROC10
084Dc(80E00004): LDR R0, SP, 4H
084Ec(81E00008): LDR R1, SP, 8H
084Fd(F7FFFF3A): BL -198 [078AH]
IF x.type.forme IN {ORB.Int, ORB.Real, ORB.Set} THENf ORG.Neg(x)g ELSEh CheckInti(x)j ENDk
0850e(80E00004): LDR R0, SP, 4H
0851e(80000004): LDR R0, R0, 4H
0852e(D1393C4C): BLEQ MT [trap=4, pos=14652]
0853f(41000070): MOV R1, R0, 70H
0854f(80000000): LDR R0, R0, 0H
0855f(40080001): ADD R0, R0, 1H
0856f(01130000): ROR R1, R1, R0
0857f(E8000004): BPL 4 [085CH]
0858g(80E00004): LDR R0, SP, 4H
0859g(81E00008): LDR R1, SP, 8H
085Ah .FIXUP P
085Ah(F791300E): BL MOD9 [ORG] PROC19
085Bi(E7000003): B 3 [085FH]
085Cj(80E00004): LDR R0, SP, 4H
085Dj(81E00008): LDR R1, SP, 8H
085Ek(F7FFF80E): BL -2034 [006DH]
ELSIF syml = ORS.plus THENm ORS.Get(sym)n;o term(x)p;q
085Fl(E700000E): B 14 [086EH]
0860m .FIXUP D
0860m(8D000016): LDR SB, MT, MOD0 [ORP]
0861m(80D0001C): LDR R0, SB, 1CH [data]
0862m(40090006): SUB R0, R0, 6H
0863m(E9000007): BNE 7 [086BH]
0864n .FIXUP D
0864n(8D000004): LDR SB, MT, MOD0 [ORP]
0865n(40D8001C): ADD R0, SB, 1CH [data]
0866o .FIXUP P
0866o(F770A00C): BL MOD7 [ORS] PROC10
0867p(80E00004): LDR R0, SP, 4H
0868p(81E00008): LDR R1, SP, 8H
0869q(F7FFFF20): BL -224 [078AH]
ELSE termr(x)s
086Ar(E7000003): B 3 [086EH]
086Bs(80E00004): LDR R0, SP, 4H
086Cs(81E00008): LDR R1, SP, 8H
ENDt ;
086Dt(F7FFFF1C): BL -228 [078AH]
WHILE (sym >= ORS.plus)u & (vsym <= ORS.or)w DOx
086Eu .FIXUP D
086Eu(8D00000A): LDR SB, MT, MOD0 [ORP]
086Fu(80D0001C): LDR R0, SB, 1CH [data]
0870u(40090006): SUB R0, R0, 6H
0871v(E5000060): BLT 96 [08D2H]
0872w .FIXUP D
0872w(8D000004): LDR SB, MT, MOD0 [ORP]
0873w(80D0001C): LDR R0, SB, 1CH [data]
0874w(40090008): SUB R0, R0, 8H
0875x(EE00005C): BGT 92 [08D2H]
op := sym;y ORS.Get(sym)z;a
0876y .FIXUP D
0876y(8D000004): LDR SB, MT, MOD0 [ORP]
0877y(80D0001C): LDR R0, SB, 1CH [data]
0878y(A0E00024): STR R0, SP, 24H
0879z(40D8001C): ADD R0, SB, 1CH
087Aa .FIXUP P
087Aa(F770A014): BL MOD7 [ORS] PROC10
IF op = ORS.or THENb ORG.Or1(x)c;d CheckBool(x)e;f term(y)g;h CheckBool(y)i;j ORG.Or2(x,k y)l
087Bb(80E00024): LDR R0, SP, 24H
087Cb(40090008): SUB R0, R0, 8H
087Db(E9000015): BNE 21 [0893H]
087Ec(80E00004): LDR R0, SP, 4H
087Fc(81E00008): LDR R1, SP, 8H
0880d .FIXUP P
0880d(F7911006): BL MOD9 [ORG] PROC17
0881e(80E00004): LDR R0, SP, 4H
0882e(81E00008): LDR R1, SP, 8H
0883f(F7FFF7D4): BL -2092 [0058H]
0884g(40E8000C): ADD R0, SP, CH
0885g .FIXUP D
0885g(8D90000F): LDR SB, MT, MOD9 [ORG]
0886g(41D80001): ADD R1, SB, VAR1
0887h(F7FFFF02): BL -254 [078AH]
0888i(40E8000C): ADD R0, SP, CH
0889i .FIXUP D
0889i(8D900004): LDR SB, MT, MOD9 [ORG]
088Ai(41D80001): ADD R1, SB, VAR1
088Bj(F7FFF7CC): BL -2100 [0058H]
088Ck(80E00004): LDR R0, SP, 4H
088Dk(81E00008): LDR R1, SP, 8H
088El(42E8000C): ADD R2, SP, CH
088Fl .FIXUP D
088Fl(8D900006): LDR SB, MT, MOD9 [ORG]
0890l(43D80001): ADD R3, SB, VAR1
ELSIFm xn.type.formo = ORB.Int THENp term(y)q;r CheckInt(y)s;t ORG.AddOp(op,u x,v y)w
0891m .FIXUP P
0891m(F7912011): BL MOD9 [ORG] PROC18
0892n(E700003E): B 62 [08D1H]
0893o(80E00004): LDR R0, SP, 4H
0894o(80000004): LDR R0, R0, 4H
0895o(D13A924C): BLEQ MT [trap=4, pos=14994]
0896p(80000000): LDR R0, R0, 0H
0897p(40090004): SUB R0, R0, 4H
0898p(E9000010): BNE 16 [08A9H]
0899q(40E8000C): ADD R0, SP, CH
089Aq .FIXUP D
089Aq(8D90000B): LDR SB, MT, MOD9 [ORG]
089Bq(41D80001): ADD R1, SB, VAR1
089Cr(F7FFFEED): BL -275 [078AH]
089Ds(40E8000C): ADD R0, SP, CH
089Es .FIXUP D
089Es(8D900004): LDR SB, MT, MOD9 [ORG]
089Fs(41D80001): ADD R1, SB, VAR1
08A0t(F7FFF7CC): BL -2100 [006DH]
08A1u(80E00024): LDR R0, SP, 24H
08A2v(81E00004): LDR R1, SP, 4H
08A3v(82E00008): LDR R2, SP, 8H
08A4w(43E8000C): ADD R3, SP, CH
08A5w .FIXUP D
08A5w(8D900007): LDR SB, MT, MOD9 [ORG]
08A6w(44D80001): ADD R4, SB, VAR1
ELSIFx xy.type.formz = ORB.Real THENa term(y)b;c CheckReal(y)d;e ORG.RealOp(op,f x,g y)h
08A7x .FIXUP P
08A7x(F7914016): BL MOD9 [ORG] PROC20
08A8y(E7000028): B 40 [08D1H]
08A9z(80E00004): LDR R0, SP, 4H
08AAz(80000004): LDR R0, R0, 4H
08ABz(D13AE34C): BLEQ MT [trap=4, pos=15075]
08ACa(80000000): LDR R0, R0, 0H
08ADa(40090005): SUB R0, R0, 5H
08AEa(E9000010): BNE 16 [08BFH]
08AFb(40E8000C): ADD R0, SP, CH
08B0b .FIXUP D
08B0b(8D90000B): LDR SB, MT, MOD9 [ORG]
08B1b(41D80001): ADD R1, SB, VAR1
08B2c(F7FFFED7): BL -297 [078AH]
08B3d(40E8000C): ADD R0, SP, CH
08B4d .FIXUP D
08B4d(8D900004): LDR SB, MT, MOD9 [ORG]
08B5d(41D80001): ADD R1, SB, VAR1
08B6e(F7FFF7CB): BL -2101 [0082H]
08B7f(80E00024): LDR R0, SP, 24H
08B8g(81E00004): LDR R1, SP, 4H
08B9g(82E00008): LDR R2, SP, 8H
08BAh(43E8000C): ADD R3, SP, CH
08BBh .FIXUP D
08BBh(8D900007): LDR SB, MT, MOD9 [ORG]
08BCh(44D80001): ADD R4, SB, VAR1
ELSEi CheckSetj(x)k;l term(y)m;n CheckSet(y)o;p ORG.SetOp(op,q x,r y)s
08BDi .FIXUP P
08BDi(F7917016): BL MOD9 [ORG] PROC23
08BEj(E7000012): B 18 [08D1H]
08BFk(80E00004): LDR R0, SP, 4H
08C0k(81E00008): LDR R1, SP, 8H
08C1l(F7FFF7D5): BL -2091 [0097H]
08C2m(40E8000C): ADD R0, SP, CH
08C3m .FIXUP D
08C3m(8D900008): LDR SB, MT, MOD9 [ORG]
08C4m(41D80001): ADD R1, SB, VAR1
08C5n(F7FFFEC4): BL -316 [078AH]
08C6o(40E8000C): ADD R0, SP, CH
08C7o .FIXUP D
08C7o(8D900004): LDR SB, MT, MOD9 [ORG]
08C8o(41D80001): ADD R1, SB, VAR1
08C9p(F7FFF7CD): BL -2099 [0097H]
08CAq(80E00024): LDR R0, SP, 24H
08CBr(81E00004): LDR R1, SP, 4H
08CCr(82E00008): LDR R2, SP, 8H
08CDs(43E8000C): ADD R3, SP, CH
08CEs .FIXUP D
08CEs(8D900007): LDR SB, MT, MOD9 [ORG]
08CFs(44D80001): ADD R4, SB, VAR1
ENDt
08D0t .FIXUP P
08D0t(F791B013): BL MOD9 [ORG] PROC27
ENDu
08D1u(E7FFFF9C): B -100 [086EH]
ENDv SimpleExpression;
08D2v(8FE00000): LDR LNK, SP, 0H
08D3v(4EE80028): ADD SP, SP, 28H
08D4v(C700000F): B LNK
PROCEDURE expression0(VAR x: ORG.Item);
VAR y: ORG.Item; obj: ORB.Object; rel, xf, yf: INTEGER;
BEGINw SimpleExpression(x)x;y
08D5w(4EE90034): SUB SP, SP, 34H
08D6w(AFE00000): STR LNK, SP, 0H
08D7w(A0E00004): STR R0, SP, 4H
08D8w(A1E00008): STR R1, SP, 8H
08D9x(80E00004): LDR R0, SP, 4H
08DAx(81E00008): LDR R1, SP, 8H
08DBy(F7FFFF66): BL -154 [0842H]
IF (sym >= ORS.eql)z & (asym <= ORS.geq)b THENc
08DCz .FIXUP D
08DCz(8D00000E): LDR SB, MT, MOD0 [ORP]
08DDz(80D0001C): LDR R0, SB, 1CH [data]
08DEz(40090009): SUB R0, R0, 9H
08DFa(E5000127): BLT 295 [0A07H]
08E0b .FIXUP D
08E0b(8D000004): LDR SB, MT, MOD0 [ORP]
08E1b(80D0001C): LDR R0, SB, 1CH [data]
08E2b(4009000E): SUB R0, R0, EH
08E3c(EE000123): BGT 291 [0A07H]
rel := sym;d ORS.Get(sym)e;f SimpleExpression(y)g;h xf := x.type.formi;j yf := y.type.formk;l
08E4d .FIXUP D
08E4d(8D000004): LDR SB, MT, MOD0 [ORP]
08E5d(80D0001C): LDR R0, SB, 1CH [data]
08E6d(A0E00028): STR R0, SP, 28H
08E7e(40D8001C): ADD R0, SB, 1CH
08E8f .FIXUP P
08E8f(F770A018): BL MOD7 [ORS] PROC10
08E9g(40E8000C): ADD R0, SP, CH
08EAg .FIXUP D
08EAg(8D900006): LDR SB, MT, MOD9 [ORG]
08EBg(41D80001): ADD R1, SB, VAR1
08ECh(F7FFFF55): BL -171 [0842H]
08EDi(80E00004): LDR R0, SP, 4H
08EEi(80000004): LDR R0, R0, 4H
08EFi(D13C864C): BLEQ MT [trap=4, pos=15494]
08F0j(80000000): LDR R0, R0, 0H
08F1j(A0E0002C): STR R0, SP, 2CH
08F2k(80E00010): LDR R0, SP, 10H
08F3k(D13C994C): BLEQ MT [trap=4, pos=15513]
08F4l(80000000): LDR R0, R0, 0H
08F5l(A0E00030): STR R0, SP, 30H
IF x.type = y.type THENm
08F6m(80E00004): LDR R0, SP, 4H
08F7m(80000004): LDR R0, R0, 4H
08F8m(81E00010): LDR R1, SP, 10H
08F9m(00090001): SUB R0, R0, R1
08FAm(E9000048): BNE 72 [0943H]
IF (xf IN {ORB.Char, ORB.Int})n THENo ORG.IntRelation(rel,p x,q y)r
08FBn(40000018): MOV R0, R0, 18H
08FCn(81E0002C): LDR R1, SP, 2CH
08FDn(41180001): ADD R1, R1, 1H
08FEn(00030001): ROR R0, R0, R1
08FFo(E8000008): BPL 8 [0908H]
0900p(80E00028): LDR R0, SP, 28H
0901q(81E00004): LDR R1, SP, 4H
0902q(82E00008): LDR R2, SP, 8H
0903r(43E8000C): ADD R3, SP, CH
0904r .FIXUP D
0904r(8D90001A): LDR SB, MT, MOD9 [ORG]
0905r(44D80001): ADD R4, SB, VAR1
ELSIFs xft = ORB.Real THENu ORG.RealRelation(rel,v x,w y)x
0906s .FIXUP P
0906s(F791C01E): BL MOD9 [ORG] PROC28
0907t(E700003A): B 58 [0942H]
0908u(80E0002C): LDR R0, SP, 2CH
0909u(40090005): SUB R0, R0, 5H
090Au(E9000008): BNE 8 [0913H]
090Bv(80E00028): LDR R0, SP, 28H
090Cw(81E00004): LDR R1, SP, 4H
090Dw(82E00008): LDR R2, SP, 8H
090Ex(43E8000C): ADD R3, SP, CH
090Fx .FIXUP D
090Fx(8D90000B): LDR SB, MT, MOD9 [ORG]
0910x(44D80001): ADD R4, SB, VAR1
ELSIFy (zxf IN {ORB.Set, ORB.Pointer, ORB.Proc, ORB.NilTyp, ORB.Bool})a THENb
0911y .FIXUP P
0911y(F791D00B): BL MOD9 [ORG] PROC29
0912z(E700002F): B 47 [0942H]
0913a(400005C4): MOV R0, R0, 5C4H
0914a(81E0002C): LDR R1, SP, 2CH
0915a(41180001): ADD R1, R1, 1H
0916a(00030001): ROR R0, R0, R1
0917b(E8000010): BPL 16 [0928H]
IF rel <= ORS.neq THENc ORG.IntRelation(rel,d x,e y)f ELSEg ORSh.Mark("only = or #")i ENDj
0918c(80E00028): LDR R0, SP, 28H
0919c(4009000A): SUB R0, R0, AH
091Ac(EE000008): BGT 8 [0923H]
091Bd(80E00028): LDR R0, SP, 28H
091Ce(81E00004): LDR R1, SP, 4H
091De(82E00008): LDR R2, SP, 8H
091Ef(43E8000C): ADD R3, SP, CH
091Ff .FIXUP D
091Ff(8D900010): LDR SB, MT, MOD9 [ORG]
0920f(44D80001): ADD R4, SB, VAR1
0921g .FIXUP P
0921g(F791C010): BL MOD9 [ORG] PROC28
0922h(E7000004): B 4 [0927H]
0923i .FIXUP D
0923i(8D000004): LDR SB, MT, MOD0 [ORP]
0924i(40D80328): ADD R0, SB, 328H ["only = or #"]
0925i(4100000C): MOV R1, R0, CH
0926j .FIXUP P
0926j(F7709005): BL MOD7 [ORS] PROC9
ELSIF (kxf = ORB.Array)l & (mx.type.basen.formo = ORB.Char)p OR (qxf = ORB.String)r THENs
0927k(E700001A): B 26 [0942H]
0928l(80E0002C): LDR R0, SP, 2CH
0929l(4009000C): SUB R0, R0, CH
092Am(E9000008): BNE 8 [0933H]
092Bn(80E00004): LDR R0, SP, 4H
092Cn(80000004): LDR R0, R0, 4H
092Dn(D13E194C): BLEQ MT [trap=4, pos=15897]
092Eo(8000001C): LDR R0, R0, 1CH
092Fo(D13E1E4C): BLEQ MT [trap=4, pos=15902]
0930p(80000000): LDR R0, R0, 0H
0931p(40090003): SUB R0, R0, 3H
0932q(E1000003): BEQ 3 [0936H]
0933r(80E0002C): LDR R0, SP, 2CH
0934r(4009000B): SUB R0, R0, BH
0935s(E9000008): BNE 8 [093EH]
ORG.StringRelation(rel,t x,u y)v
0936t(80E00028): LDR R0, SP, 28H
0937u(81E00004): LDR R1, SP, 4H
0938u(82E00008): LDR R2, SP, 8H
0939v(43E8000C): ADD R3, SP, CH
093Av .FIXUP D
093Av(8D900017): LDR SB, MT, MOD9 [ORG]
093Bv(44D80001): ADD R4, SB, VAR1
ELSEw ORSx.Mark("illegal comparison")y
093Cw .FIXUP P
093Cw(F791E016): BL MOD9 [ORG] PROC30
093Dx(E7000004): B 4 [0942H]
093Ey .FIXUP D
093Ey(8D000004): LDR SB, MT, MOD0 [ORP]
093Fy(40D80334): ADD R0, SB, 334H ["illegal comparison"]
0940y(41000013): MOV R1, R0, 13H
ENDz
0941z .FIXUP P
0941z(F7709005): BL MOD7 [ORS] PROC9
ELSIF (axf IN {ORB.Pointer, ORB.Proc})b & (cyf = ORB.NilTyp)d
0942a(E70000BF): B 191 [0A02H]
0943b(40000480): MOV R0, R0, 480H
0944b(81E0002C): LDR R1, SP, 2CH
0945b(41180001): ADD R1, R1, 1H
0946b(00030001): ROR R0, R0, R1
0947c(E8000003): BPL 3 [094BH]
0948d(80E00030): LDR R0, SP, 30H
0949d(40090008): SUB R0, R0, 8H
OR (eyf IN {ORB.Pointer, ORB.Proc})f & (gxf = ORB.NilTyp)h THENi
094Ae(E1000008): BEQ 8 [0953H]
094Bf(40000480): MOV R0, R0, 480H
094Cf(81E00030): LDR R1, SP, 30H
094Df(41180001): ADD R1, R1, 1H
094Ef(00030001): ROR R0, R0, R1
094Fg(E8000013): BPL 19 [0963H]
0950h(80E0002C): LDR R0, SP, 2CH
0951h(40090008): SUB R0, R0, 8H
0952i(E9000010): BNE 16 [0963H]
IF rel <= ORS.neq THENj ORG.IntRelation(rel,k x,l y)m ELSEn ORSo.Mark("only = or #")p ENDq
0953j(80E00028): LDR R0, SP, 28H
0954j(4009000A): SUB R0, R0, AH
0955j(EE000008): BGT 8 [095EH]
0956k(80E00028): LDR R0, SP, 28H
0957l(81E00004): LDR R1, SP, 4H
0958l(82E00008): LDR R2, SP, 8H
0959m(43E8000C): ADD R3, SP, CH
095Am .FIXUP D
095Am(8D90001C): LDR SB, MT, MOD9 [ORG]
095Bm(44D80001): ADD R4, SB, VAR1
095Cn .FIXUP P
095Cn(F791C01B): BL MOD9 [ORG] PROC28
095Do(E7000004): B 4 [0962H]
095Ep .FIXUP D
095Ep(8D000004): LDR SB, MT, MOD0 [ORP]
095Fp(40D80348): ADD R0, SB, 348H ["only = or #"]
0960p(4100000C): MOV R1, R0, CH
0961q .FIXUP P
0961q(F7709005): BL MOD7 [ORS] PROC9
ELSIF (rxf = ORB.Pointer)s & (tyf = ORB.Pointer)u &
0962r(E700009F): B 159 [0A02H]
0963s(80E0002C): LDR R0, SP, 2CH
0964s(40090007): SUB R0, R0, 7H
0965t(E9000017): BNE 23 [097DH]
0966u(80E00030): LDR R0, SP, 30H
0967u(40090007): SUB R0, R0, 7H
(vIsExtension(x.type.basew,x y.type.basey)z ORa IsExtensionb(y.type.basec,d x.type.basee)f)g
0968v(E9000014): BNE 20 [097DH]
0969w(80E00004): LDR R0, SP, 4H
096Aw(80000004): LDR R0, R0, 4H
096Bw(D13FDF4C): BLEQ MT [trap=4, pos=16351]
096Cx(8000001C): LDR R0, R0, 1CH
096Dy(81E00010): LDR R1, SP, 10H
096Ey(D13FEC4C): BLEQ MT [trap=4, pos=16364]
096Fz(8110001C): LDR R1, R1, 1CH
0970a(F7FFF79C): BL -2148 [010DH]
0971b(40090000): SUB R0, R0, 0H
0972b(E9000016): BNE 22 [0989H]
0973c(80E00010): LDR R0, SP, 10H
0974c(D140084C): BLEQ MT [trap=4, pos=16392]
0975d(8000001C): LDR R0, R0, 1CH
0976e(81E00004): LDR R1, SP, 4H
0977e(81100004): LDR R1, R1, 4H
0978e(D140154C): BLEQ MT [trap=4, pos=16405]
0979f(8110001C): LDR R1, R1, 1CH
097Ag(F7FFF792): BL -2158 [010DH]
097Bg(40090000): SUB R0, R0, 0H
OR (hxf = ORB.Proc)i & (jyf = ORB.Proc)k & EqualSignaturesl(x.type,m y.type)n THENo
097Ch(E900000C): BNE 12 [0989H]
097Di(80E0002C): LDR R0, SP, 2CH
097Ei(4009000A): SUB R0, R0, AH
097Fj(E9000019): BNE 25 [0999H]
0980k(80E00030): LDR R0, SP, 30H
0981k(4009000A): SUB R0, R0, AH
0982l(E9000016): BNE 22 [0999H]
0983m(80E00004): LDR R0, SP, 4H
0984m(80000004): LDR R0, R0, 4H
0985n(81E00010): LDR R1, SP, 10H
0986o(F7FFF8FF): BL -1793 [0286H]
0987o(40090000): SUB R0, R0, 0H
0988o(E1000010): BEQ 16 [0999H]
IF rel <= ORS.neq THENp ORG.IntRelation(rel,q x,r y)s ELSEt ORSu.Mark("only = or #")v ENDw
0989p(80E00028): LDR R0, SP, 28H
098Ap(4009000A): SUB R0, R0, AH
098Bp(EE000008): BGT 8 [0994H]
098Cq(80E00028): LDR R0, SP, 28H
098Dr(81E00004): LDR R1, SP, 4H
098Er(82E00008): LDR R2, SP, 8H
098Fs(43E8000C): ADD R3, SP, CH
0990s .FIXUP D
0990s(8D900032): LDR SB, MT, MOD9 [ORG]
0991s(44D80001): ADD R4, SB, VAR1
0992t .FIXUP P
0992t(F791C031): BL MOD9 [ORG] PROC28
0993u(E7000004): B 4 [0998H]
0994v .FIXUP D
0994v(8D000004): LDR SB, MT, MOD0 [ORP]
0995v(40D80354): ADD R0, SB, 354H ["only = or #"]
0996v(4100000C): MOV R1, R0, CH
0997w .FIXUP P
0997w(F7709005): BL MOD7 [ORS] PROC9
ELSIF (xxf = ORB.Array)y & (zx.type.basea.formb = ORB.Char)c &
0998x(E7000069): B 105 [0A02H]
0999y(80E0002C): LDR R0, SP, 2CH
099Ay(4009000C): SUB R0, R0, CH
099Bz(E9000015): BNE 21 [09B1H]
099Ca(80E00004): LDR R0, SP, 4H
099Da(80000004): LDR R0, R0, 4H
099Ea(D140F54C): BLEQ MT [trap=4, pos=16629]
099Fb(8000001C): LDR R0, R0, 1CH
09A0b(D140FA4C): BLEQ MT [trap=4, pos=16634]
09A1c(80000000): LDR R0, R0, 0H
09A2c(40090003): SUB R0, R0, 3H
(d(yf = ORB.String)e OR (fyf = ORB.Array)g & (hy.type.basei.formj = ORB.Char)k)
09A3d(E900000D): BNE 13 [09B1H]
09A4e(80E00030): LDR R0, SP, 30H
09A5e(4009000B): SUB R0, R0, BH
09A6f(E1000017): BEQ 23 [09BEH]
09A7g(80E00030): LDR R0, SP, 30H
09A8g(4009000C): SUB R0, R0, CH
09A9h(E9000007): BNE 7 [09B1H]
09AAi(80E00010): LDR R0, SP, 10H
09ABi(D1414A4C): BLEQ MT [trap=4, pos=16714]
09ACj(8000001C): LDR R0, R0, 1CH
09ADj(D1414F4C): BLEQ MT [trap=4, pos=16719]
09AEk(80000000): LDR R0, R0, 0H
09AFk(40090003): SUB R0, R0, 3H
OR (lyf = ORB.Array)m & (ny.type.baseo.formp = ORB.Char)q & (rxf = ORB.String)s THENt
09B0l(E100000D): BEQ 13 [09BEH]
09B1m(80E00030): LDR R0, SP, 30H
09B2m(4009000C): SUB R0, R0, CH
09B3n(E9000012): BNE 18 [09C6H]
09B4o(80E00010): LDR R0, SP, 10H
09B5o(D141894C): BLEQ MT [trap=4, pos=16777]
09B6p(8000001C): LDR R0, R0, 1CH
09B7p(D1418E4C): BLEQ MT [trap=4, pos=16782]
09B8q(80000000): LDR R0, R0, 0H
09B9q(40090003): SUB R0, R0, 3H
09BAr(E900000B): BNE 11 [09C6H]
09BBs(80E0002C): LDR R0, SP, 2CH
09BCs(4009000B): SUB R0, R0, BH
09BDt(E9000008): BNE 8 [09C6H]
ORG.StringRelation(rel,u x,v y)w
09BEu(80E00028): LDR R0, SP, 28H
09BFv(81E00004): LDR R1, SP, 4H
09C0v(82E00008): LDR R2, SP, 8H
09C1w(43E8000C): ADD R3, SP, CH
09C2w .FIXUP D
09C2w(8D90002E): LDR SB, MT, MOD9 [ORG]
09C3w(44D80001): ADD R4, SB, VAR1
ELSIFx (yxf = ORB.Char)z & (ayf = ORB.String)b & (cy.b = 2)d THENe
09C4x .FIXUP P
09C4x(F791E02D): BL MOD9 [ORG] PROC30
09C5y(E700003C): B 60 [0A02H]
09C6z(80E0002C): LDR R0, SP, 2CH
09C7z(40090003): SUB R0, R0, 3H
09C8a(E9000012): BNE 18 [09DBH]
09C9b(80E00030): LDR R0, SP, 30H
09CAb(4009000B): SUB R0, R0, BH
09CBc(E900000F): BNE 15 [09DBH]
09CCd(80E00018): LDR R0, SP, 18H
09CDd(40090002): SUB R0, R0, 2H
09CEe(E900000C): BNE 12 [09DBH]
ORG.StrToChar(y)f;g ORG.IntRelation(rel,h x,i y)j
09CFf(40E8000C): ADD R0, SP, CH
09D0f .FIXUP D
09D0f(8D90000E): LDR SB, MT, MOD9 [ORG]
09D1f(41D80001): ADD R1, SB, VAR1
09D2g .FIXUP P
09D2g(F791F00E): BL MOD9 [ORG] PROC31
09D3h(80E00028): LDR R0, SP, 28H
09D4i(81E00004): LDR R1, SP, 4H
09D5i(82E00008): LDR R2, SP, 8H
09D6j(43E8000C): ADD R3, SP, CH
09D7j .FIXUP D
09D7j(8D900007): LDR SB, MT, MOD9 [ORG]
09D8j(44D80001): ADD R4, SB, VAR1
ELSIFk (lyf = ORB.Char)m & (nxf = ORB.String)o & (px.b = 2)q THENr
09D9k .FIXUP P
09D9k(F791C007): BL MOD9 [ORG] PROC28
09DAl(E7000027): B 39 [0A02H]
09DBm(80E00030): LDR R0, SP, 30H
09DCm(40090003): SUB R0, R0, 3H
09DDn(E9000012): BNE 18 [09F0H]
09DEo(80E0002C): LDR R0, SP, 2CH
09DFo(4009000B): SUB R0, R0, BH
09E0p(E900000F): BNE 15 [09F0H]
09E1q(80E00004): LDR R0, SP, 4H
09E2q(8000000C): LDR R0, R0, CH
09E3q(40090002): SUB R0, R0, 2H
09E4r(E900000B): BNE 11 [09F0H]
ORG.StrToChar(x)s;t ORG.IntRelation(rel,u x,v y)w
09E5s(80E00004): LDR R0, SP, 4H
09E6s(81E00008): LDR R1, SP, 8H
09E7t .FIXUP P
09E7t(F791F00E): BL MOD9 [ORG] PROC31
09E8u(80E00028): LDR R0, SP, 28H
09E9v(81E00004): LDR R1, SP, 4H
09EAv(82E00008): LDR R2, SP, 8H
09EBw(43E8000C): ADD R3, SP, CH
09ECw .FIXUP D
09ECw(8D900015): LDR SB, MT, MOD9 [ORG]
09EDw(44D80001): ADD R4, SB, VAR1
ELSIFx (yxf = ORB.Int)z & (ayf = ORB.Int)b THENc ORG.IntRelation(rel,d x,e y)f (*BYTE*)
09EEx .FIXUP P
09EEx(F791C007): BL MOD9 [ORG] PROC28
09EFy(E7000012): B 18 [0A02H]
09F0z(80E0002C): LDR R0, SP, 2CH
09F1z(40090004): SUB R0, R0, 4H
09F2a(E900000B): BNE 11 [09FEH]
09F3b(80E00030): LDR R0, SP, 30H
09F4b(40090004): SUB R0, R0, 4H
09F5c(E9000008): BNE 8 [09FEH]
09F6d(80E00028): LDR R0, SP, 28H
09F7e(81E00004): LDR R1, SP, 4H
09F8e(82E00008): LDR R2, SP, 8H
09F9f(43E8000C): ADD R3, SP, CH
09FAf .FIXUP D
09FAf(8D90000E): LDR SB, MT, MOD9 [ORG]
09FBf(44D80001): ADD R4, SB, VAR1
ELSEg ORSh.Mark("illegal comparison")i
09FCg .FIXUP P
09FCg(F791C00E): BL MOD9 [ORG] PROC28
09FDh(E7000004): B 4 [0A02H]
09FEi .FIXUP D
09FEi(8D000004): LDR SB, MT, MOD0 [ORP]
09FFi(40D80360): ADD R0, SB, 360H ["illegal comparison"]
0A00i(41000013): MOV R1, R0, 13H
ENDj ;
0A01j .FIXUP P
0A01j(F7709005): BL MOD7 [ORS] PROC9
x.type := ORB.boolType
ELSIFk syml = ORS.in THENm
0A02k .FIXUP D
0A02k(8D800004): LDR SB, MT, MOD8 [ORB]
0A03k(80D00007): LDR R0, SB, VAR7
0A04k(81E00004): LDR R1, SP, 4H
0A05k(A0100004): STR R0, R1, 4H
0A06l(E7000031): B 49 [0A38H]
0A07m .FIXUP D
0A07m(8D000005): LDR SB, MT, MOD0 [ORP]
0A08m(80D0001C): LDR R0, SB, 1CH [data]
0A09m(4009000F): SUB R0, R0, FH
0A0Am(E9000019): BNE 25 [0A24H]
ORS.Get(sym)n;o CheckInt(x)p;q SimpleExpression(y)r;s CheckSet(y)t;u ORG.In(x,v y)w ;x
0A0Bn .FIXUP D
0A0Bn(8D000004): LDR SB, MT, MOD0 [ORP]
0A0Cn(40D8001C): ADD R0, SB, 1CH [data]
0A0Do .FIXUP P
0A0Do(F770A00C): BL MOD7 [ORS] PROC10
0A0Ep(80E00004): LDR R0, SP, 4H
0A0Fp(81E00008): LDR R1, SP, 8H
0A10q(F7FFF65C): BL -2468 [006DH]
0A11r(40E8000C): ADD R0, SP, CH
0A12r .FIXUP D
0A12r(8D900007): LDR SB, MT, MOD9 [ORG]
0A13r(41D80001): ADD R1, SB, VAR1
0A14s(F7FFFE2D): BL -467 [0842H]
0A15t(40E8000C): ADD R0, SP, CH
0A16t .FIXUP D
0A16t(8D900004): LDR SB, MT, MOD9 [ORG]
0A17t(41D80001): ADD R1, SB, VAR1
0A18u(F7FFF67E): BL -2434 [0097H]
0A19v(80E00004): LDR R0, SP, 4H
0A1Av(81E00008): LDR R1, SP, 8H
0A1Bw(42E8000C): ADD R2, SP, CH
0A1Cw .FIXUP D
0A1Cw(8D900006): LDR SB, MT, MOD9 [ORG]
0A1Dw(43D80001): ADD R3, SB, VAR1
0A1Ex .FIXUP P
0A1Ex(F791A011): BL MOD9 [ORG] PROC26
x.type := ORB.boolType
ELSIFy symz = ORS.is THENa
0A1Fy .FIXUP D
0A1Fy(8D800003): LDR SB, MT, MOD8 [ORB]
0A20y(80D00007): LDR R0, SB, VAR7
0A21y(81E00004): LDR R1, SP, 4H
0A22y(A0100004): STR R0, R1, 4H
0A23z(E7000014): B 20 [0A38H]
0A24a .FIXUP D
0A24a(8D000005): LDR SB, MT, MOD0 [ORP]
0A25a(80D0001C): LDR R0, SB, 1CH [data]
0A26a(40090010): SUB R0, R0, 10H
0A27a(E9000010): BNE 16 [0A38H]
ORS.Get(sym)b;c qualident(obj)d;e TypeTest(x,f obj.typeg,h FALSE)i ;j
0A28b .FIXUP D
0A28b(8D000004): LDR SB, MT, MOD0 [ORP]
0A29b(40D8001C): ADD R0, SB, 1CH [data]
0A2Ac .FIXUP P
0A2Ac(F770A00C): BL MOD7 [ORS] PROC10
0A2Bd(40E80024): ADD R0, SP, 24H
0A2Ce(F7FFF5E7): BL -2585 [0014H]
0A2Df(80E00004): LDR R0, SP, 4H
0A2Ef(81E00008): LDR R1, SP, 8H
0A2Fg(82E00024): LDR R2, SP, 24H
0A30g(D1444F4C): BLEQ MT [trap=4, pos=17487]
0A31h(82200010): LDR R2, R2, 10H
0A32i(43000000): MOV R3, R0, 0H
0A33j(F7FFF6F0): BL -2320 [0124H]
x.type := ORB.boolType
ENDk
0A34k .FIXUP D
0A34k(8D80000C): LDR SB, MT, MOD8 [ORB]
0A35k(80D00007): LDR R0, SB, VAR7
0A36k(81E00004): LDR R1, SP, 4H
0A37k(A0100004): STR R0, R1, 4H
ENDl expression0;
0A38l(8FE00000): LDR LNK, SP, 0H
0A39l(4EE80034): ADD SP, SP, 34H
0A3Al(C700000F): B LNK
(* statements *)
PROCEDURE StandProc(pno: LONGINT);
VAR nap, npar: LONGINT; (*nof actual/formal parameters*)
x, y, z: ORG.Item;
BEGINm Check(ORS.lparen,n "no (")o;p
0A3Bm(4EE90058): SUB SP, SP, 58H
0A3Cm(AFE00000): STR LNK, SP, 0H
0A3Dm(A0E00004): STR R0, SP, 4H
0A3En(4000001C): MOV R0, R0, 1CH
0A3Fo .FIXUP D
0A3Fo(8D00000B): LDR SB, MT, MOD0 [ORP]
0A40o(41D80374): ADD R1, SB, 374H ["no ("]
0A41o(42000005): MOV R2, R0, 5H
0A42p(F7FFF5BD): BL -2627 [0000H]
npar := pno MOD 10;q pno := pno DIV 10;r expression(x)s;t nap := 1;u
0A43q(80E00004): LDR R0, SP, 4H
0A44q(400B000A): DIV R0, R0, AH
0A45q(20000000): MOV' R0, R0, R0
0A46q(A0E0000C): STR R0, SP, CH
0A47r(80E00004): LDR R0, SP, 4H
0A48r(400B000A): DIV R0, R0, AH
0A49r(A0E00004): STR R0, SP, 4H
0A4As(40E80010): ADD R0, SP, 10H
0A4Bs .FIXUP D
0A4Bs(8D90000C): LDR SB, MT, MOD9 [ORG]
0A4Cs(41D80001): ADD R1, SB, VAR1
0A4Dt .FIXUP D
0A4Dt(8D000002): LDR SB, MT, MOD0 [ORP]
0A4Et(82D00034): LDR R2, SB, 34H [data]
0A4Ft(D1457E5C): BLEQ MT [trap=5, pos=17790]
0A50t(D7000002): BL R2
0A51u(40000001): MOV R0, R0, 1H
0A52u(A0E00008): STR R0, SP, 8H
IF sym = ORS.comma THENv
0A53v .FIXUP D
0A53v(8D000006): LDR SB, MT, MOD0 [ORP]
0A54v(80D0001C): LDR R0, SB, 1CH [data]
0A55v(40090028): SUB R0, R0, 28H
0A56v(E9000022): BNE 34 [0A79H]
ORS.Get(sym)w;x expression(y)y;z nap := 2;a z.type := ORB.noType;b
0A57w .FIXUP D
0A57w(8D000004): LDR SB, MT, MOD0 [ORP]
0A58w(40D8001C): ADD R0, SB, 1CH [data]
0A59x .FIXUP P
0A59x(F770A02F): BL MOD7 [ORS] PROC10
0A5Ay(40E80028): ADD R0, SP, 28H
0A5By .FIXUP D
0A5By(8D900004): LDR SB, MT, MOD9 [ORG]
0A5Cy(41D80001): ADD R1, SB, VAR1
0A5Dz .FIXUP D
0A5Dz(8D000002): LDR SB, MT, MOD0 [ORP]
0A5Ez(82D00034): LDR R2, SB, 34H [data]
0A5Fz(D145C75C): BLEQ MT [trap=5, pos=17863]
0A60z(D7000002): BL R2
0A61a(40000002): MOV R0, R0, 2H
0A62a(A0E00008): STR R0, SP, 8H
0A63b .FIXUP D
0A63b(8D800006): LDR SB, MT, MOD8 [ORB]
0A64b(80D0000D): LDR R0, SB, VAR13
0A65b(A0E00044): STR R0, SP, 44H
WHILE sym = ORS.comma DOc ORS.Get(sym)d;e expression(z)f;g INC(nap) ENDh
0A66c .FIXUP D
0A66c(8D000003): LDR SB, MT, MOD0 [ORP]
0A67c(80D0001C): LDR R0, SB, 1CH [data]
0A68c(40090028): SUB R0, R0, 28H
0A69c(E900000E): BNE 14 [0A78H]
0A6Ad .FIXUP D
0A6Ad(8D000004): LDR SB, MT, MOD0 [ORP]
0A6Bd(40D8001C): ADD R0, SB, 1CH [data]
0A6Ce .FIXUP P
0A6Ce(F770A013): BL MOD7 [ORS] PROC10
0A6Df(40E80040): ADD R0, SP, 40H
0A6Ef .FIXUP D
0A6Ef(8D900004): LDR SB, MT, MOD9 [ORG]
0A6Ff(41D80001): ADD R1, SB, VAR1
0A70g .FIXUP D
0A70g(8D000002): LDR SB, MT, MOD0 [ORP]
0A71g(82D00034): LDR R2, SB, 34H [data]
0A72g(D146235C): BLEQ MT [trap=5, pos=17955]
0A73g(D7000002): BL R2
0A74h(80E00008): LDR R0, SP, 8H
0A75h(40080001): ADD R0, R0, 1H
0A76h(A0E00008): STR R0, SP, 8H
0A77h(E7FFFFEE): B -18 [0A66H]
ELSE yi.type := ORB.noType
0A78i(E7000003): B 3 [0A7CH]
ENDj ;
0A79j .FIXUP D
0A79j(8D800009): LDR SB, MT, MOD8 [ORB]
0A7Aj(80D0000D): LDR R0, SB, VAR13
0A7Bj(A0E0002C): STR R0, SP, 2CH
Check(ORS.rparen,k "no )")l;m
0A7Ck(4000002C): MOV R0, R0, 2CH
0A7Dl .FIXUP D
0A7Dl(8D000004): LDR SB, MT, MOD0 [ORP]
0A7El(41D8037C): ADD R1, SB, 37CH ["no )"]
0A7Fl(42000005): MOV R2, R0, 5H
0A80m(F7FFF57F): BL -2689 [0000H]
IF (npar = nap)n OR (opno IN {0, 1})p THENq
0A81n(80E0000C): LDR R0, SP, CH
0A82n(81E00008): LDR R1, SP, 8H
0A83n(00090001): SUB R0, R0, R1
0A84o(E1000005): BEQ 5 [0A8AH]
0A85p(40000003): MOV R0, R0, 3H
0A86p(81E00004): LDR R1, SP, 4H
0A87p(41180001): ADD R1, R1, 1H
0A88p(00030001): ROR R0, R0, R1
0A89q(E80000FA): BPL 250 [0B84H]
IF pno IN {0, 1} THENr (*INC, DEC*)
0A8Ar(40000003): MOV R0, R0, 3H
0A8Br(81E00004): LDR R1, SP, 4H
0A8Cr(41180001): ADD R1, R1, 1H
0A8Dr(00030001): ROR R0, R0, R1
0A8Er(E800001A): BPL 26 [0AA9H]
CheckInt(x)s;t CheckReadOnly(x)u;v
0A8Fs(40E80010): ADD R0, SP, 10H
0A90s .FIXUP D
0A90s(8D900013): LDR SB, MT, MOD9 [ORG]
0A91s(41D80001): ADD R1, SB, VAR1
0A92t(F7FFF5DA): BL -2598 [006DH]
0A93u(40E80010): ADD R0, SP, 10H
0A94u .FIXUP D
0A94u(8D900004): LDR SB, MT, MOD9 [ORG]
0A95u(41D80001): ADD R1, SB, VAR1
0A96v(F7FFF64D): BL -2483 [00E4H]
IF y.type # ORB.noType THENw CheckInt(y)x ENDy ;
0A97w(80E0002C): LDR R0, SP, 2CH
0A98w .FIXUP D
0A98w(8D800004): LDR SB, MT, MOD8 [ORB]
0A99w(81D0000D): LDR R1, SB, VAR13
0A9Aw(00090001): SUB R0, R0, R1
0A9Bw(E1000004): BEQ 4 [0AA0H]
0A9Cx(40E80028): ADD R0, SP, 28H
0A9Dx .FIXUP D
0A9Dx(8D900005): LDR SB, MT, MOD9 [ORG]
0A9Ex(41D80001): ADD R1, SB, VAR1
0A9Fy(F7FFF5CD): BL -2611 [006DH]
ORG.Increment(pno,z x,a y)b
0AA0z(80E00004): LDR R0, SP, 4H
0AA1a(41E80010): ADD R1, SP, 10H
0AA2a .FIXUP D
0AA2a(8D900005): LDR SB, MT, MOD9 [ORG]
0AA3a(42D80001): ADD R2, SB, VAR1
0AA4b(43E80028): ADD R3, SP, 28H
0AA5b .FIXUP D
0AA5b(8D900003): LDR SB, MT, MOD9 [ORG]
0AA6b(44D80001): ADD R4, SB, VAR1
ELSIFc pnod IN {2, 3} THENe (*INCL, EXCL*)
0AA7c .FIXUP P
0AA7c(F793403B): BL MOD9 [ORG] PROC52
0AA8d(E70000DA): B 218 [0B83H]
0AA9e(4000000C): MOV R0, R0, CH
0AAAe(81E00004): LDR R1, SP, 4H
0AABe(41180001): ADD R1, R1, 1H
0AACe(00030001): ROR R0, R0, R1
0AADe(E8000016): BPL 22 [0AC4H]
CheckSet(x)f;g CheckReadOnly(x)h;i CheckInt(y)j;k ORG.Include(pno-2,l x,m y)n
0AAEf(40E80010): ADD R0, SP, 10H
0AAFf .FIXUP D
0AAFf(8D90000A): LDR SB, MT, MOD9 [ORG]
0AB0f(41D80001): ADD R1, SB, VAR1
0AB1g(F7FFF5E5): BL -2587 [0097H]
0AB2h(40E80010): ADD R0, SP, 10H
0AB3h .FIXUP D
0AB3h(8D900004): LDR SB, MT, MOD9 [ORG]
0AB4h(41D80001): ADD R1, SB, VAR1
0AB5i(F7FFF62E): BL -2514 [00E4H]
0AB6j(40E80028): ADD R0, SP, 28H
0AB7j .FIXUP D
0AB7j(8D900004): LDR SB, MT, MOD9 [ORG]
0AB8j(41D80001): ADD R1, SB, VAR1
0AB9k(F7FFF5B3): BL -2637 [006DH]
0ABAl(80E00004): LDR R0, SP, 4H
0ABBl(40090002): SUB R0, R0, 2H
0ABCm(41E80010): ADD R1, SP, 10H
0ABDm .FIXUP D
0ABDm(8D900006): LDR SB, MT, MOD9 [ORG]
0ABEm(42D80001): ADD R2, SB, VAR1
0ABFn(43E80028): ADD R3, SP, 28H
0AC0n .FIXUP D
0AC0n(8D900003): LDR SB, MT, MOD9 [ORG]
0AC1n(44D80001): ADD R4, SB, VAR1
ELSIFo pnop = 4 THENq CheckBool(x)r;s ORG.Assert(x)t
0AC2o .FIXUP P
0AC2o(F793501B): BL MOD9 [ORG] PROC53
0AC3p(E70000BF): B 191 [0B83H]
0AC4q(80E00004): LDR R0, SP, 4H
0AC5q(40090004): SUB R0, R0, 4H
0AC6q(E9000009): BNE 9 [0AD0H]
0AC7r(40E80010): ADD R0, SP, 10H
0AC8r .FIXUP D
0AC8r(8D900008): LDR SB, MT, MOD9 [ORG]
0AC9r(41D80001): ADD R1, SB, VAR1
0ACAs(F7FFF58D): BL -2675 [0058H]
0ACBt(40E80010): ADD R0, SP, 10H
0ACCt .FIXUP D
0ACCt(8D900004): LDR SB, MT, MOD9 [ORG]
0ACDt(41D80001): ADD R1, SB, VAR1
ELSIFu pnov = 5 THENw(*NEW*) CheckReadOnly(x)x;y
0ACEu .FIXUP P
0ACEu(F793600C): BL MOD9 [ORG] PROC54
0ACFv(E70000B3): B 179 [0B83H]
0AD0w(80E00004): LDR R0, SP, 4H
0AD1w(40090005): SUB R0, R0, 5H
0AD2w(E900001A): BNE 26 [0AEDH]
0AD3x(40E80010): ADD R0, SP, 10H
0AD4x .FIXUP D
0AD4x(8D900008): LDR SB, MT, MOD9 [ORG]
0AD5x(41D80001): ADD R1, SB, VAR1
0AD6y(F7FFF60D): BL -2547 [00E4H]
IF (x.type.formz = ORB.Pointer)a & (bx.type.basec.formd = ORB.Record)e THENf ORG.New(x)g
0AD7z(80E00014): LDR R0, SP, 14H
0AD8z(D148464C): BLEQ MT [trap=4, pos=18502]
0AD9a(80000000): LDR R0, R0, 0H
0ADAa(40090007): SUB R0, R0, 7H
0ADBb(E900000C): BNE 12 [0AE8H]
0ADCc(80E00014): LDR R0, SP, 14H
0ADDc(D148644C): BLEQ MT [trap=4, pos=18532]
0ADEd(8000001C): LDR R0, R0, 1CH
0ADFd(D148694C): BLEQ MT [trap=4, pos=18537]
0AE0e(80000000): LDR R0, R0, 0H
0AE1e(4009000D): SUB R0, R0, DH
0AE2f(E9000005): BNE 5 [0AE8H]
0AE3g(40E80010): ADD R0, SP, 10H
0AE4g .FIXUP D
0AE4g(8D900010): LDR SB, MT, MOD9 [ORG]
0AE5g(41D80001): ADD R1, SB, VAR1
ELSEh ORSi.Mark("not a pointer to record")j
0AE6h .FIXUP P
0AE6h(F7937018): BL MOD9 [ORG] PROC55
0AE7i(E7000004): B 4 [0AECH]
0AE8j .FIXUP D
0AE8j(8D000004): LDR SB, MT, MOD0 [ORP]
0AE9j(40D80384): ADD R0, SB, 384H ["not a pointer to record"]
0AEAj(41000018): MOV R1, R0, 18H
ENDk
0AEBk .FIXUP P
0AEBk(F7709005): BL MOD7 [ORS] PROC9
ELSIF pnol = 6 THENm CheckReal(x)n;o CheckInt(y)p;q CheckReadOnly(x)r;s ORG.Pack(x,t y)u
0AECl(E7000096): B 150 [0B83H]
0AEDm(80E00004): LDR R0, SP, 4H
0AEEm(40090006): SUB R0, R0, 6H
0AEFm(E9000014): BNE 20 [0B04H]
0AF0n(40E80010): ADD R0, SP, 10H
0AF1n .FIXUP D
0AF1n(8D900009): LDR SB, MT, MOD9 [ORG]
0AF2n(41D80001): ADD R1, SB, VAR1
0AF3o(F7FFF58E): BL -2674 [0082H]
0AF4p(40E80028): ADD R0, SP, 28H
0AF5p .FIXUP D
0AF5p(8D900004): LDR SB, MT, MOD9 [ORG]
0AF6p(41D80001): ADD R1, SB, VAR1
0AF7q(F7FFF575): BL -2699 [006DH]
0AF8r(40E80010): ADD R0, SP, 10H
0AF9r .FIXUP D
0AF9r(8D900004): LDR SB, MT, MOD9 [ORG]
0AFAr(41D80001): ADD R1, SB, VAR1
0AFBs(F7FFF5E8): BL -2584 [00E4H]
0AFCt(40E80010): ADD R0, SP, 10H
0AFDt .FIXUP D
0AFDt(8D900004): LDR SB, MT, MOD9 [ORG]
0AFEt(41D80001): ADD R1, SB, VAR1
0AFFu(42E80028): ADD R2, SP, 28H
0B00u .FIXUP D
0B00u(8D900003): LDR SB, MT, MOD9 [ORG]
0B01u(43D80001): ADD R3, SB, VAR1
ELSIFv pnow = 7 THENx CheckReal(x)y;z CheckInt(y)a;b CheckReadOnly(x)c;d ORG.Unpk(x,e y)f
0B02v .FIXUP P
0B02v(F7938017): BL MOD9 [ORG] PROC56
0B03w(E700007F): B 127 [0B83H]
0B04x(80E00004): LDR R0, SP, 4H
0B05x(40090007): SUB R0, R0, 7H
0B06x(E9000014): BNE 20 [0B1BH]
0B07y(40E80010): ADD R0, SP, 10H
0B08y .FIXUP D
0B08y(8D900008): LDR SB, MT, MOD9 [ORG]
0B09y(41D80001): ADD R1, SB, VAR1
0B0Az(F7FFF577): BL -2697 [0082H]
0B0Ba(40E80028): ADD R0, SP, 28H
0B0Ca .FIXUP D
0B0Ca(8D900004): LDR SB, MT, MOD9 [ORG]
0B0Da(41D80001): ADD R1, SB, VAR1
0B0Eb(F7FFF55E): BL -2722 [006DH]
0B0Fc(40E80010): ADD R0, SP, 10H
0B10c .FIXUP D
0B10c(8D900004): LDR SB, MT, MOD9 [ORG]
0B11c(41D80001): ADD R1, SB, VAR1
0B12d(F7FFF5D1): BL -2607 [00E4H]
0B13e(40E80010): ADD R0, SP, 10H
0B14e .FIXUP D
0B14e(8D900004): LDR SB, MT, MOD9 [ORG]
0B15e(41D80001): ADD R1, SB, VAR1
0B16f(42E80028): ADD R2, SP, 28H
0B17f .FIXUP D
0B17f(8D900003): LDR SB, MT, MOD9 [ORG]
0B18f(43D80001): ADD R3, SB, VAR1
ELSIFg pnoh = 8 THENi
0B19g .FIXUP P
0B19g(F7939017): BL MOD9 [ORG] PROC57
0B1Ah(E7000068): B 104 [0B83H]
0B1Bi(80E00004): LDR R0, SP, 4H
0B1Ci(40090008): SUB R0, R0, 8H
0B1Di(E900000F): BNE 15 [0B2DH]
IF x.type.formj <= ORB.Set THENk ORG.Led(x)l ELSEm ORSn.Mark("bad type")o ENDp
0B1Ej(80E00014): LDR R0, SP, 14H
0B1Fj(D149A04C): BLEQ MT [trap=4, pos=18848]
0B20k(80000000): LDR R0, R0, 0H
0B21k(40090006): SUB R0, R0, 6H
0B22k(EE000005): BGT 5 [0B28H]
0B23l(40E80010): ADD R0, SP, 10H
0B24l .FIXUP D
0B24l(8D90000D): LDR SB, MT, MOD9 [ORG]
0B25l(41D80001): ADD R1, SB, VAR1
0B26m .FIXUP P
0B26m(F793A00D): BL MOD9 [ORG] PROC58
0B27n(E7000004): B 4 [0B2CH]
0B28o .FIXUP D
0B28o(8D000004): LDR SB, MT, MOD0 [ORP]
0B29o(40D8039C): ADD R0, SB, 39CH ["bad type"]
0B2Ao(41000009): MOV R1, R0, 9H
0B2Bp .FIXUP P
0B2Bp(F7709005): BL MOD7 [ORS] PROC9
ELSIF pnoq = 10 THENr CheckInt(x)s;t ORG.Get(x,u y)v
0B2Cq(E7000056): B 86 [0B83H]
0B2Dr(80E00004): LDR R0, SP, 4H
0B2Er(4009000A): SUB R0, R0, AH
0B2Fr(E900000C): BNE 12 [0B3CH]
0B30s(40E80010): ADD R0, SP, 10H
0B31s .FIXUP D
0B31s(8D900009): LDR SB, MT, MOD9 [ORG]
0B32s(41D80001): ADD R1, SB, VAR1
0B33t(F7FFF539): BL -2759 [006DH]
0B34u(40E80010): ADD R0, SP, 10H
0B35u .FIXUP D
0B35u(8D900004): LDR SB, MT, MOD9 [ORG]
0B36u(41D80001): ADD R1, SB, VAR1
0B37v(42E80028): ADD R2, SP, 28H
0B38v .FIXUP D
0B38v(8D900003): LDR SB, MT, MOD9 [ORG]
0B39v(43D80001): ADD R3, SB, VAR1
ELSIFw pnox = 11 THENy CheckInt(x)z;a ORG.Put(x,b y)c
0B3Aw .FIXUP P
0B3Aw(F793B00F): BL MOD9 [ORG] PROC59
0B3Bx(E7000047): B 71 [0B83H]
0B3Cy(80E00004): LDR R0, SP, 4H
0B3Dy(4009000B): SUB R0, R0, BH
0B3Ey(E900000C): BNE 12 [0B4BH]
0B3Fz(40E80010): ADD R0, SP, 10H
0B40z .FIXUP D
0B40z(8D900008): LDR SB, MT, MOD9 [ORG]
0B41z(41D80001): ADD R1, SB, VAR1
0B42a(F7FFF52A): BL -2774 [006DH]
0B43b(40E80010): ADD R0, SP, 10H
0B44b .FIXUP D
0B44b(8D900004): LDR SB, MT, MOD9 [ORG]
0B45b(41D80001): ADD R1, SB, VAR1
0B46c(42E80028): ADD R2, SP, 28H
0B47c .FIXUP D
0B47c(8D900003): LDR SB, MT, MOD9 [ORG]
0B48c(43D80001): ADD R3, SB, VAR1
ELSIFd pnoe = 12 THENf CheckInt(x)g;h CheckInt(y)i;j CheckInt(z)k;l ORG.Copy(x,m y,n z)o
0B49d .FIXUP P
0B49d(F793C00F): BL MOD9 [ORG] PROC60
0B4Ae(E7000038): B 56 [0B83H]
0B4Bf(80E00004): LDR R0, SP, 4H
0B4Cf(4009000C): SUB R0, R0, CH
0B4Df(E9000017): BNE 23 [0B65H]
0B4Eg(40E80010): ADD R0, SP, 10H
0B4Fg .FIXUP D
0B4Fg(8D900008): LDR SB, MT, MOD9 [ORG]
0B50g(41D80001): ADD R1, SB, VAR1
0B51h(F7FFF51B): BL -2789 [006DH]
0B52i(40E80028): ADD R0, SP, 28H
0B53i .FIXUP D
0B53i(8D900004): LDR SB, MT, MOD9 [ORG]
0B54i(41D80001): ADD R1, SB, VAR1
0B55j(F7FFF517): BL -2793 [006DH]
0B56k(40E80040): ADD R0, SP, 40H
0B57k .FIXUP D
0B57k(8D900004): LDR SB, MT, MOD9 [ORG]
0B58k(41D80001): ADD R1, SB, VAR1
0B59l(F7FFF513): BL -2797 [006DH]
0B5Am(40E80010): ADD R0, SP, 10H
0B5Bm .FIXUP D
0B5Bm(8D900004): LDR SB, MT, MOD9 [ORG]
0B5Cm(41D80001): ADD R1, SB, VAR1
0B5Dn(42E80028): ADD R2, SP, 28H
0B5En .FIXUP D
0B5En(8D900003): LDR SB, MT, MOD9 [ORG]
0B5Fn(43D80001): ADD R3, SB, VAR1
0B60o(44E80040): ADD R4, SP, 40H
0B61o .FIXUP D
0B61o(8D900003): LDR SB, MT, MOD9 [ORG]
0B62o(45D80001): ADD R5, SB, VAR1
ELSIFp pnoq = 13 THENr CheckConst(x)s;t CheckInt(x)u;v ORG.LDPSR(x)w
0B63p .FIXUP P
0B63p(F793D01A): BL MOD9 [ORG] PROC61
0B64q(E700001E): B 30 [0B83H]
0B65r(80E00004): LDR R0, SP, 4H
0B66r(4009000D): SUB R0, R0, DH
0B67r(E900000D): BNE 13 [0B75H]
0B68s(40E80010): ADD R0, SP, 10H
0B69s .FIXUP D
0B69s(8D900008): LDR SB, MT, MOD9 [ORG]
0B6As(41D80001): ADD R1, SB, VAR1
0B6Bt(F7FFF566): BL -2714 [00D2H]
0B6Cu(40E80010): ADD R0, SP, 10H
0B6Du .FIXUP D
0B6Du(8D900004): LDR SB, MT, MOD9 [ORG]
0B6Eu(41D80001): ADD R1, SB, VAR1
0B6Fv(F7FFF4FD): BL -2819 [006DH]
0B70w(40E80010): ADD R0, SP, 10H
0B71w .FIXUP D
0B71w(8D900004): LDR SB, MT, MOD9 [ORG]
0B72w(41D80001): ADD R1, SB, VAR1
ELSIFx pnoy = 14 THENz CheckInt(x)a;b ORG.LDREG(x,c y)d
0B73x .FIXUP P
0B73x(F793E010): BL MOD9 [ORG] PROC62
0B74y(E700000E): B 14 [0B83H]
0B75z(80E00004): LDR R0, SP, 4H
0B76z(4009000E): SUB R0, R0, EH
0B77z(E900000B): BNE 11 [0B83H]
0B78a(40E80010): ADD R0, SP, 10H
0B79a .FIXUP D
0B79a(8D900008): LDR SB, MT, MOD9 [ORG]
0B7Aa(41D80001): ADD R1, SB, VAR1
0B7Bb(F7FFF4F1): BL -2831 [006DH]
0B7Cc(40E80010): ADD R0, SP, 10H
0B7Dc .FIXUP D
0B7Dc(8D900004): LDR SB, MT, MOD9 [ORG]
0B7Ec(41D80001): ADD R1, SB, VAR1
0B7Fd(42E80028): ADD R2, SP, 28H
0B80d .FIXUP D
0B80d(8D900003): LDR SB, MT, MOD9 [ORG]
0B81d(43D80001): ADD R3, SB, VAR1
ENDe
0B82e .FIXUP P
0B82e(F793F00F): BL MOD9 [ORG] PROC63
ELSE ORSf.Mark("wrong nof parameters")g
0B83f(E7000004): B 4 [0B88H]
0B84g .FIXUP D
0B84g(8D000004): LDR SB, MT, MOD0 [ORP]
0B85g(40D803A8): ADD R0, SB, 3A8H ["wrong nof parameters"]
0B86g(41000015): MOV R1, R0, 15H
ENDh
0B87h .FIXUP P
0B87h(F7709005): BL MOD7 [ORS] PROC9
ENDi StandProc;
0B88i(8FE00000): LDR LNK, SP, 0H
0B89i(4EE80058): ADD SP, SP, 58H
0B8Ai(C700000F): B LNK
PROCEDURE StatSequence;
VAR obj: ORB.Object;
orgtype: ORB.Type; (*original type of case var*)
x, y, z, w: ORG.Item;
L0, L1, rx: LONGINT;
PROCEDUREj TypeCase(obj: ORB.Object; VAR x: ORG.Item);
0B8Bj(E700004C): B 76 [0BD8H]
VAR typobj: ORB.Object;
BEGINk
0B8Ck(4EE90014): SUB SP, SP, 14H
0B8Dk(AFE00000): STR LNK, SP, 0H
0B8Ek(A0E00004): STR R0, SP, 4H
0B8Fk(A1E00008): STR R1, SP, 8H
0B90k(A2E0000C): STR R2, SP, CH
IF sym = ORS.ident THENl
0B91l .FIXUP D
0B91l(8D00000D): LDR SB, MT, MOD0 [ORP]
0B92l(80D0001C): LDR R0, SB, 1CH [data]
0B93l(4009001F): SUB R0, R0, 1FH
0B94l(E9000028): BNE 40 [0BBDH]
qualident(typobj)m;n ORG.MakeItem(x,o obj,p level)q;r
0B95m(40E80010): ADD R0, SP, 10H
0B96n(F7FFF47D): BL -2947 [0014H]
0B97o(80E00008): LDR R0, SP, 8H
0B98o(81E0000C): LDR R1, SP, CH
0B99p(82E00004): LDR R2, SP, 4H
0B9Aq .FIXUP D
0B9Aq(8D000009): LDR SB, MT, MOD0 [ORP]
0B9Bq(83D00024): LDR R3, SB, 24H [data]
0B9Cr .FIXUP P
0B9Cr(F7908015): BL MOD9 [ORG] PROC8
IF typobj.classs # ORB.Typ THENt ORS.Mark("not a type")u ENDv ;
0B9Ds(80E00010): LDR R0, SP, 10H
0B9Es(D14CD04C): BLEQ MT [trap=4, pos=19664]
0B9Ft(90000000): LDR R0, R0, 0H
0BA0t(40090005): SUB R0, R0, 5H
0BA1t(E1000004): BEQ 4 [0BA6H]
0BA2u .FIXUP D
0BA2u(8D000008): LDR SB, MT, MOD0 [ORP]
0BA3u(40D803C0): ADD R0, SB, 3C0H ["not a type"]
0BA4u(4100000B): MOV R1, R0, BH
0BA5v .FIXUP P
0BA5v(F7709009): BL MOD7 [ORS] PROC9
TypeTest(x,w typobj.typex,y FALSE)z;a obj.typeb := typobj.typec;d
0BA6w(80E00008): LDR R0, SP, 8H
0BA7w(81E0000C): LDR R1, SP, CH
0BA8x(82E00010): LDR R2, SP, 10H
0BA9x(D14D1C4C): BLEQ MT [trap=4, pos=19740]
0BAAy(82200010): LDR R2, R2, 10H
0BABz(43000000): MOV R3, R0, 0H
0BACa(F7FFF577): BL -2697 [0124H]
0BADb(80E00004): LDR R0, SP, 4H
0BAEb(D14D2E4C): BLEQ MT [trap=4, pos=19758]
0BAFc(81E00010): LDR R1, SP, 10H
0BB0c(D14D3D4C): BLEQ MT [trap=4, pos=19773]
0BB1d(81100010): LDR R1, R1, 10H
0BB2d(A1000010): STR R1, R0, 10H
ORG.CFJump(x)e;f Check(ORS.colon,g ": expected")h;i StatSequence
0BB3e(80E00008): LDR R0, SP, 8H
0BB4e(81E0000C): LDR R1, SP, CH
0BB5f .FIXUP P
0BB5f(F792C010): BL MOD9 [ORG] PROC44
0BB6g(40000029): MOV R0, R0, 29H
0BB7h .FIXUP D
0BB7h(8D000015): LDR SB, MT, MOD0 [ORP]
0BB8h(41D803CC): ADD R1, SB, 3CCH [": expected"]
0BB9h(4200000B): MOV R2, R0, BH
0BBAi(F7FFF445): BL -3003 [0000H]
ELSEj ORGk.CFJump(x)l;m ORS.Mark("type id expected")n
0BBBj(F7FFFFCF): BL -49 [0B8BH]
0BBCk(E7000007): B 7 [0BC4H]
0BBDl(80E00008): LDR R0, SP, 8H
0BBEl(81E0000C): LDR R1, SP, CH
0BBFm .FIXUP P
0BBFm(F792C00A): BL MOD9 [ORG] PROC44
0BC0n .FIXUP D
0BC0n(8D000009): LDR SB, MT, MOD0 [ORP]
0BC1n(40D803D8): ADD R0, SB, 3D8H ["type id expected"]
0BC2n(41000011): MOV R1, R0, 11H
ENDo
0BC3o .FIXUP P
0BC3o(F7709004): BL MOD7 [ORS] PROC9
ENDp TypeCase;
0BC4p(8FE00000): LDR LNK, SP, 0H
0BC5p(4EE80014): ADD SP, SP, 14H
0BC6p(C700000F): B LNK
PROCEDURE SkipCase;
BEGINq
0BC7q(4EE90004): SUB SP, SP, 4H
0BC8q(AFE00000): STR LNK, SP, 0H
WHILE sym # ORS.colon DOr ORS.Get(sym)s ENDt ;
0BC9r .FIXUP D
0BC9r(8D000009): LDR SB, MT, MOD0 [ORP]
0BCAr(80D0001C): LDR R0, SB, 1CH [data]
0BCBr(40090029): SUB R0, R0, 29H
0BCCr(E1000004): BEQ 4 [0BD1H]
0BCDs .FIXUP D
0BCDs(8D000004): LDR SB, MT, MOD0 [ORP]
0BCEs(40D8001C): ADD R0, SB, 1CH [data]
0BCFt .FIXUP P
0BCFt(F770A00C): BL MOD7 [ORS] PROC10
0BD0t(E7FFFFF8): B -8 [0BC9H]
ORS.Get(sym)u;v StatSequence
0BD1u .FIXUP D
0BD1u(8D000004): LDR SB, MT, MOD0 [ORP]
0BD2u(40D8001C): ADD R0, SB, 1CH [data]
0BD3v .FIXUP P
0BD3v(F770A004): BL MOD7 [ORS] PROC10
ENDw SkipCase;
0BD4w(F7FFFFB6): BL -74 [0B8BH]
0BD5w(8FE00000): LDR LNK, SP, 0H
0BD6w(4EE80004): ADD SP, SP, 4H
0BD7w(C700000F): B LNK
BEGINx (* StatSequence *)
0BD8x(4EE90078): SUB SP, SP, 78H
0BD9x(AFE00000): STR LNK, SP, 0H
REPEAT (*sync*) obj := NIL;y
0BDAy(40000000): MOV R0, R0, 0H
0BDBy(A0E00004): STR R0, SP, 4H
IF ~((sym = ORS.ident)z OR (asym >= ORS.if)b & (csym <= ORS.for)d OR (esym >= ORS.semicolon)f) THENg
0BDCz .FIXUP D
0BDCz(8D00000B): LDR SB, MT, MOD0 [ORP]
0BDDz(80D0001C): LDR R0, SB, 1CH [data]
0BDEz(4009001F): SUB R0, R0, 1FH
0BDFa(E100001B): BEQ 27 [0BFBH]
0BE0b .FIXUP D
0BE0b(8D000004): LDR SB, MT, MOD0 [ORP]
0BE1b(80D0001C): LDR R0, SB, 1CH [data]
0BE2b(40090020): SUB R0, R0, 20H
0BE3c(E5000004): BLT 4 [0BE8H]
0BE4d .FIXUP D
0BE4d(8D000004): LDR SB, MT, MOD0 [ORP]
0BE5d(80D0001C): LDR R0, SB, 1CH [data]
0BE6d(40090025): SUB R0, R0, 25H
0BE7e(E6000013): BLE 19 [0BFBH]
0BE8f .FIXUP D
0BE8f(8D000004): LDR SB, MT, MOD0 [ORP]
0BE9f(80D0001C): LDR R0, SB, 1CH [data]
0BEAf(40090034): SUB R0, R0, 34H
0BEBg(ED00000F): BGE 15 [0BFBH]
ORS.Mark("statement expected")h;i
0BECh .FIXUP D
0BECh(8D000004): LDR SB, MT, MOD0 [ORP]
0BEDh(40D803EC): ADD R0, SB, 3ECH ["statement expected"]
0BEEh(41000013): MOV R1, R0, 13H
0BEFi .FIXUP P
0BEFi(F770901C): BL MOD7 [ORS] PROC9
REPEAT ORS.Get(sym)j UNTILk (sym = ORS.ident)l OR (msym >= ORS.if)n
0BF0j .FIXUP D
0BF0j(8D000004): LDR SB, MT, MOD0 [ORP]
0BF1j(40D8001C): ADD R0, SB, 1CH [data]
0BF2k .FIXUP P
0BF2k(F770A003): BL MOD7 [ORS] PROC10
0BF3l .FIXUP D
0BF3l(8D000003): LDR SB, MT, MOD0 [ORP]
0BF4l(80D0001C): LDR R0, SB, 1CH [data]
0BF5l(4009001F): SUB R0, R0, 1FH
0BF6m(E1000004): BEQ 4 [0BFBH]
0BF7n .FIXUP D
0BF7n(8D000004): LDR SB, MT, MOD0 [ORP]
0BF8n(80D0001C): LDR R0, SB, 1CH [data]
0BF9n(40090020): SUB R0, R0, 20H
ENDo ;
0BFAo(E5FFFFF5): BLT -11 [0BF0H]
IF sym = ORS.ident THENp
0BFBp .FIXUP D
0BFBp(8D000004): LDR SB, MT, MOD0 [ORP]
0BFCp(80D0001C): LDR R0, SB, 1CH [data]
0BFDp(4009001F): SUB R0, R0, 1FH
0BFEp(E900011F): BNE 287 [0D1EH]
qualident(obj)q;r ORG.MakeItem(x,s obj,t level)u;v
0BFFq(40E80004): ADD R0, SP, 4H
0C00r(F7FFF413): BL -3053 [0014H]
0C01s(40E8000C): ADD R0, SP, CH
0C02s .FIXUP D
0C02s(8D900007): LDR SB, MT, MOD9 [ORG]
0C03s(41D80001): ADD R1, SB, VAR1
0C04t(82E00004): LDR R2, SP, 4H
0C05u .FIXUP D
0C05u(8D000003): LDR SB, MT, MOD0 [ORP]
0C06u(83D00024): LDR R3, SB, 24H [data]
0C07v .FIXUP P
0C07v(F7908015): BL MOD9 [ORG] PROC8
IF x.mode = ORB.SProc THENw StandProc(obj.valx)y
0C08w(80E0000C): LDR R0, SP, CH
0C09w(40090006): SUB R0, R0, 6H
0C0Aw(E9000005): BNE 5 [0C10H]
0C0Bx(80E00004): LDR R0, SP, 4H
0C0Cx(D150014C): BLEQ MT [trap=4, pos=20481]
0C0Dy(80000034): LDR R0, R0, 34H
ELSEz selectora(x)b;c
0C0Ez(F7FFFE2C): BL -468 [0A3BH]
0C0Fa(E700010D): B 269 [0D1DH]
0C10b(40E8000C): ADD R0, SP, CH
0C11b .FIXUP D
0C11b(8D90000C): LDR SB, MT, MOD9 [ORG]
0C12b(41D80001): ADD R1, SB, VAR1
0C13c(F7FFF591): BL -2671 [01A5H]
IF sym = ORS.becomes THENd (*assignment*)
0C14d .FIXUP D
0C14d(8D000003): LDR SB, MT, MOD0 [ORP]
0C15d(80D0001C): LDR R0, SB, 1CH [data]
0C16d(4009002A): SUB R0, R0, 2AH
0C17d(E9000096): BNE 150 [0CAEH]
ORS.Get(sym)e;f CheckReadOnly(x)g;h expression(y)i;j
0C18e .FIXUP D
0C18e(8D000004): LDR SB, MT, MOD0 [ORP]
0C19e(40D8001C): ADD R0, SB, 1CH [data]
0C1Af .FIXUP P
0C1Af(F770A013): BL MOD7 [ORS] PROC10
0C1Bg(40E8000C): ADD R0, SP, CH
0C1Cg .FIXUP D
0C1Cg(8D900004): LDR SB, MT, MOD9 [ORG]
0C1Dg(41D80001): ADD R1, SB, VAR1
0C1Eh(F7FFF4C5): BL -2875 [00E4H]
0C1Fi(40E80024): ADD R0, SP, 24H
0C20i .FIXUP D
0C20i(8D900004): LDR SB, MT, MOD9 [ORG]
0C21i(41D80001): ADD R1, SB, VAR1
0C22j .FIXUP D
0C22j(8D000002): LDR SB, MT, MOD0 [ORP]
0C23j(82D00034): LDR R2, SB, 34H [data]
0C24j(D1508A5C): BLEQ MT [trap=5, pos=20618]
0C25j(D7000002): BL R2
IF CompTypes(x.type,k y.type,l FALSE)m THENn
0C26k(80E00010): LDR R0, SP, 10H
0C27l(81E00028): LDR R1, SP, 28H
0C28m(42000000): MOV R2, R0, 0H
0C29n(F7FFF6E6): BL -2330 [0310H]
0C2An(40090000): SUB R0, R0, 0H
0C2Bn(E100001A): BEQ 26 [0C46H]
IF (x.type.formo <= ORB.Pointer)p OR (qx.type.formr = ORB.Proc)s THENt ORG.Store(x,u y)v
0C2Co(80E00010): LDR R0, SP, 10H
0C2Do(D150DD4C): BLEQ MT [trap=4, pos=20701]
0C2Ep(80000000): LDR R0, R0, 0H
0C2Fp(40090007): SUB R0, R0, 7H
0C30q(E6000005): BLE 5 [0C36H]
0C31r(80E00010): LDR R0, SP, 10H
0C32r(D150FD4C): BLEQ MT [trap=4, pos=20733]
0C33s(80000000): LDR R0, R0, 0H
0C34s(4009000A): SUB R0, R0, AH
0C35t(E9000008): BNE 8 [0C3EH]
0C36u(40E8000C): ADD R0, SP, CH
0C37u .FIXUP D
0C37u(8D900015): LDR SB, MT, MOD9 [ORG]
0C38u(41D80001): ADD R1, SB, VAR1
0C39v(42E80024): ADD R2, SP, 24H
0C3Av .FIXUP D
0C3Av(8D900003): LDR SB, MT, MOD9 [ORG]
0C3Bv(43D80001): ADD R3, SB, VAR1
ELSEw ORGx.StoreStruct(x,y y)z
0C3Cw .FIXUP P
0C3Cw(F7920022): BL MOD9 [ORG] PROC32
0C3Dx(E7000007): B 7 [0C45H]
0C3Ey(40E8000C): ADD R0, SP, CH
0C3Fy .FIXUP D
0C3Fy(8D900005): LDR SB, MT, MOD9 [ORG]
0C40y(41D80001): ADD R1, SB, VAR1
0C41z(42E80024): ADD R2, SP, 24H
0C42z .FIXUP D
0C42z(8D900003): LDR SB, MT, MOD9 [ORG]
0C43z(43D80001): ADD R3, SB, VAR1
ENDa
0C44a .FIXUP P
0C44a(F7921008): BL MOD9 [ORG] PROC33
ELSIF (bx.type.formc = ORB.Array)d & (ey.type.formf = ORB.Array)g & (hx.type.basei = y.type.basej)k & (ly.type.lenm < 0)n THENo
0C45b(E7000067): B 103 [0CADH]
0C46c(80E00010): LDR R0, SP, 10H
0C47c(D151784C): BLEQ MT [trap=4, pos=20856]
0C48d(80000000): LDR R0, R0, 0H
0C49d(4009000C): SUB R0, R0, CH
0C4Ae(E900001A): BNE 26 [0C65H]
0C4Bf(80E00028): LDR R0, SP, 28H
0C4Cf(D151944C): BLEQ MT [trap=4, pos=20884]
0C4Dg(80000000): LDR R0, R0, 0H
0C4Eg(4009000C): SUB R0, R0, CH
0C4Fh(E9000015): BNE 21 [0C65H]
0C50i(80E00010): LDR R0, SP, 10H
0C51i(D151B04C): BLEQ MT [trap=4, pos=20912]
0C52j(81E00028): LDR R1, SP, 28H
0C53j(D151BE4C): BLEQ MT [trap=4, pos=20926]
0C54k(8000001C): LDR R0, R0, 1CH
0C55k(8110001C): LDR R1, R1, 1CH
0C56k(00090001): SUB R0, R0, R1
0C57l(E900000D): BNE 13 [0C65H]
0C58m(80E00028): LDR R0, SP, 28H
0C59m(D151CD4C): BLEQ MT [trap=4, pos=20941]
0C5An(80000010): LDR R0, R0, 10H
0C5Bn(40090000): SUB R0, R0, 0H
0C5Co(ED000008): BGE 8 [0C65H]
ORG.StoreStruct(x,p y)q
0C5Dp(40E8000C): ADD R0, SP, CH
0C5Ep .FIXUP D
0C5Ep(8D90001C): LDR SB, MT, MOD9 [ORG]
0C5Fp(41D80001): ADD R1, SB, VAR1
0C60q(42E80024): ADD R2, SP, 24H
0C61q .FIXUP D
0C61q(8D900003): LDR SB, MT, MOD9 [ORG]
0C62q(43D80001): ADD R3, SB, VAR1
ELSIFr (sx.type.formt = ORB.Array)u & (vx.type.basew.formx = ORB.Char)y & (zy.type.forma = ORB.String)b THENc
0C63r .FIXUP P
0C63r(F792101F): BL MOD9 [ORG] PROC33
0C64s(E7000048): B 72 [0CADH]
0C65t(80E00010): LDR R0, SP, 10H
0C66t(D1521A4C): BLEQ MT [trap=4, pos=21018]
0C67u(80000000): LDR R0, R0, 0H
0C68u(4009000C): SUB R0, R0, CH
0C69v(E9000014): BNE 20 [0C7EH]
0C6Aw(80E00010): LDR R0, SP, 10H
0C6Bw(D152364C): BLEQ MT [trap=4, pos=21046]
0C6Cx(8000001C): LDR R0, R0, 1CH
0C6Dx(D1523B4C): BLEQ MT [trap=4, pos=21051]
0C6Ey(80000000): LDR R0, R0, 0H
0C6Fy(40090003): SUB R0, R0, 3H
0C70z(E900000D): BNE 13 [0C7EH]
0C71a(80E00028): LDR R0, SP, 28H
0C72a(D152564C): BLEQ MT [trap=4, pos=21078]
0C73b(80000000): LDR R0, R0, 0H
0C74b(4009000B): SUB R0, R0, BH
0C75c(E9000008): BNE 8 [0C7EH]
ORG.CopyString(x,d y)e
0C76d(40E8000C): ADD R0, SP, CH
0C77d .FIXUP D
0C77d(8D900016): LDR SB, MT, MOD9 [ORG]
0C78d(41D80001): ADD R1, SB, VAR1
0C79e(42E80024): ADD R2, SP, 24H
0C7Ae .FIXUP D
0C7Ae(8D900003): LDR SB, MT, MOD9 [ORG]
0C7Be(43D80001): ADD R3, SB, VAR1
ELSIFf (gx.type.formh = ORB.Int)i & (jy.type.formk = ORB.Int)l THENm ORG.Store(x,n y)o (*BYTE*)
0C7Cf .FIXUP P
0C7Cf(F7922019): BL MOD9 [ORG] PROC34
0C7Dg(E700002F): B 47 [0CADH]
0C7Eh(80E00010): LDR R0, SP, 10H
0C7Fh(D152AB4C): BLEQ MT [trap=4, pos=21163]
0C80i(80000000): LDR R0, R0, 0H
0C81i(40090004): SUB R0, R0, 4H
0C82j(E900000D): BNE 13 [0C90H]
0C83k(80E00028): LDR R0, SP, 28H
0C84k(D152C54C): BLEQ MT [trap=4, pos=21189]
0C85l(80000000): LDR R0, R0, 0H
0C86l(40090004): SUB R0, R0, 4H
0C87m(E9000008): BNE 8 [0C90H]
0C88n(40E8000C): ADD R0, SP, CH
0C89n .FIXUP D
0C89n(8D90000F): LDR SB, MT, MOD9 [ORG]
0C8An(41D80001): ADD R1, SB, VAR1
0C8Bo(42E80024): ADD R2, SP, 24H
0C8Co .FIXUP D
0C8Co(8D900003): LDR SB, MT, MOD9 [ORG]
0C8Do(43D80001): ADD R3, SB, VAR1
ELSIFp (qx.type.formr = ORB.Char)s & (ty.type.formu = ORB.String)v & (wy.b = 2)x THENy
0C8Ep .FIXUP P
0C8Ep(F7920012): BL MOD9 [ORG] PROC32
0C8Fq(E700001D): B 29 [0CADH]
0C90r(80E00010): LDR R0, SP, 10H
0C91r(D1530E4C): BLEQ MT [trap=4, pos=21262]
0C92s(80000000): LDR R0, R0, 0H
0C93s(40090003): SUB R0, R0, 3H
0C94t(E9000014): BNE 20 [0CA9H]
0C95u(80E00028): LDR R0, SP, 28H
0C96u(D153294C): BLEQ MT [trap=4, pos=21289]
0C97v(80000000): LDR R0, R0, 0H
0C98v(4009000B): SUB R0, R0, BH
0C99w(E900000F): BNE 15 [0CA9H]
0C9Ax(80E00030): LDR R0, SP, 30H
0C9Bx(40090002): SUB R0, R0, 2H
0C9Cy(E900000C): BNE 12 [0CA9H]
ORG.StrToChar(y)z;a ORG.Store(x,b y)c
0C9Dz(40E80024): ADD R0, SP, 24H
0C9Ez .FIXUP D
0C9Ez(8D900012): LDR SB, MT, MOD9 [ORG]
0C9Fz(41D80001): ADD R1, SB, VAR1
0CA0a .FIXUP P
0CA0a(F791F012): BL MOD9 [ORG] PROC31
0CA1b(40E8000C): ADD R0, SP, CH
0CA2b .FIXUP D
0CA2b(8D900004): LDR SB, MT, MOD9 [ORG]
0CA3b(41D80001): ADD R1, SB, VAR1
0CA4c(42E80024): ADD R2, SP, 24H
0CA5c .FIXUP D
0CA5c(8D900003): LDR SB, MT, MOD9 [ORG]
0CA6c(43D80001): ADD R3, SB, VAR1
ELSEd ORSe.Mark("illegal assignment")f
0CA7d .FIXUP P
0CA7d(F7920007): BL MOD9 [ORG] PROC32
0CA8e(E7000004): B 4 [0CADH]
0CA9f .FIXUP D
0CA9f(8D000004): LDR SB, MT, MOD0 [ORP]
0CAAf(40D80400): ADD R0, SB, 400H ["illegal assignment"]
0CABf(41000013): MOV R1, R0, 13H
ENDg
0CACg .FIXUP P
0CACg(F7709005): BL MOD7 [ORS] PROC9
ELSIF symh = ORS.eql THENi ORS.Mark("should be :=")j;k ORS.Get(sym)l;m expression(y)n
0CADh(E700006F): B 111 [0D1DH]
0CAEi .FIXUP D
0CAEi(8D000005): LDR SB, MT, MOD0 [ORP]
0CAFi(80D0001C): LDR R0, SB, 1CH [data]
0CB0i(40090009): SUB R0, R0, 9H
0CB1i(E900000F): BNE 15 [0CC1H]
0CB2j .FIXUP D
0CB2j(8D000004): LDR SB, MT, MOD0 [ORP]
0CB3j(40D80414): ADD R0, SB, 414H ["should be :="]
0CB4j(4100000D): MOV R1, R0, DH
0CB5k .FIXUP P
0CB5k(F7709009): BL MOD7 [ORS] PROC9
0CB6l .FIXUP D
0CB6l(8D000004): LDR SB, MT, MOD0 [ORP]
0CB7l(40D8001C): ADD R0, SB, 1CH [data]
0CB8m .FIXUP P
0CB8m(F770A003): BL MOD7 [ORS] PROC10
0CB9n(40E80024): ADD R0, SP, 24H
0CBAn .FIXUP D
0CBAn(8D900004): LDR SB, MT, MOD9 [ORG]
0CBBn(41D80001): ADD R1, SB, VAR1
ELSIFo symp = ORS.lparen THENq (*procedure call*)
0CBCo .FIXUP D
0CBCo(8D000002): LDR SB, MT, MOD0 [ORP]
0CBDo(82D00034): LDR R2, SB, 34H [data]
0CBEo(D154215C): BLEQ MT [trap=5, pos=21537]
0CBFo(D7000002): BL R2
0CC0p(E700005C): B 92 [0D1DH]
0CC1q .FIXUP D
0CC1q(8D000005): LDR SB, MT, MOD0 [ORP]
0CC2q(80D0001C): LDR R0, SB, 1CH [data]
0CC3q(4009001C): SUB R0, R0, 1CH
0CC4q(E9000027): BNE 39 [0CECH]
ORS.Get(sym)r;s
0CC5r .FIXUP D
0CC5r(8D000004): LDR SB, MT, MOD0 [ORP]
0CC6r(40D8001C): ADD R0, SB, 1CH [data]
0CC7s .FIXUP P
0CC7s(F770A00F): BL MOD7 [ORS] PROC10
IF (x.type.formt = ORB.Proc)u & (vx.type.basew.formx = ORB.NoTyp)y THENz
0CC8t(80E00010): LDR R0, SP, 10H
0CC9t(D154804C): BLEQ MT [trap=4, pos=21632]
0CCAu(80000000): LDR R0, R0, 0H
0CCBu(4009000A): SUB R0, R0, AH
0CCCv(E9000016): BNE 22 [0CE3H]
0CCDw(80E00010): LDR R0, SP, 10H
0CCEw(D1549B4C): BLEQ MT [trap=4, pos=21659]
0CCFx(8000001C): LDR R0, R0, 1CH
0CD0x(D154A04C): BLEQ MT [trap=4, pos=21664]
0CD1y(80000000): LDR R0, R0, 0H
0CD2y(40090009): SUB R0, R0, 9H
0CD3z(E900000F): BNE 15 [0CE3H]
ORG.PrepCall(x,a rx)b;c ParamList(x)d;e ORG.Call(x,f rx)g
0CD4a(40E8000C): ADD R0, SP, CH
0CD5a .FIXUP D
0CD5a(8D900010): LDR SB, MT, MOD9 [ORG]
0CD6a(41D80001): ADD R1, SB, VAR1
0CD7b(42E80074): ADD R2, SP, 74H
0CD8c .FIXUP P
0CD8c(F7930011): BL MOD9 [ORG] PROC48
0CD9d(40E8000C): ADD R0, SP, CH
0CDAd .FIXUP D
0CDAd(8D900005): LDR SB, MT, MOD9 [ORG]
0CDBd(41D80001): ADD R1, SB, VAR1
0CDCe(F7FFF780): BL -2176 [045DH]
0CDDf(40E8000C): ADD R0, SP, CH
0CDEf .FIXUP D
0CDEf(8D900004): LDR SB, MT, MOD9 [ORG]
0CDFf(41D80001): ADD R1, SB, VAR1
0CE0g(82E00074): LDR R2, SP, 74H
ELSEh ORSi.Mark("not a procedure")j;k ParamList(x)l
0CE1h .FIXUP P
0CE1h(F7931009): BL MOD9 [ORG] PROC49
0CE2i(E7000008): B 8 [0CEBH]
0CE3j .FIXUP D
0CE3j(8D000005): LDR SB, MT, MOD0 [ORP]
0CE4j(40D80424): ADD R0, SB, 424H ["not a procedure"]
0CE5j(41000010): MOV R1, R0, 10H
0CE6k .FIXUP P
0CE6k(F7709005): BL MOD7 [ORS] PROC9
0CE7l(40E8000C): ADD R0, SP, CH
0CE8l .FIXUP D
0CE8l(8D900005): LDR SB, MT, MOD9 [ORG]
0CE9l(41D80001): ADD R1, SB, VAR1
ENDm
0CEAm(F7FFF772): BL -2190 [045DH]
ELSIF xn.type.formo = ORB.Proc THENp (*procedure call without parameters*)
0CEBn(E7000031): B 49 [0D1DH]
0CECo(80E00010): LDR R0, SP, 10H
0CEDo(D1555A4C): BLEQ MT [trap=4, pos=21850]
0CEEp(80000000): LDR R0, R0, 0H
0CEFp(4009000A): SUB R0, R0, AH
0CF0p(E9000020): BNE 32 [0D11H]
IF x.type.nofparq > 0 THENr ORS.Mark("missing parameters")s ENDt ;
0CF1q(80E00010): LDR R0, SP, 10H
0CF2q(D155AD4C): BLEQ MT [trap=4, pos=21933]
0CF3r(8000000C): LDR R0, R0, CH
0CF4r(40090000): SUB R0, R0, 0H
0CF5r(E6000004): BLE 4 [0CFAH]
0CF6s .FIXUP D
0CF6s(8D00000E): LDR SB, MT, MOD0 [ORP]
0CF7s(40D80434): ADD R0, SB, 434H ["missing parameters"]
0CF8s(41000013): MOV R1, R0, 13H
0CF9t .FIXUP P
0CF9t(F7709013): BL MOD7 [ORS] PROC9
IF x.type.baseu.formv = ORB.NoTyp THENw ORG.PrepCall(x,x rx)y;z ORG.Call(x,a rx)b ELSEc ORSd.Mark("not a procedure")e ENDf
0CFAu(80E00010): LDR R0, SP, 10H
0CFBu(D155F64C): BLEQ MT [trap=4, pos=22006]
0CFCv(8000001C): LDR R0, R0, 1CH
0CFDv(D155FB4C): BLEQ MT [trap=4, pos=22011]
0CFEw(80000000): LDR R0, R0, 0H
0CFFw(40090009): SUB R0, R0, 9H
0D00w(E900000B): BNE 11 [0D0CH]
0D01x(40E8000C): ADD R0, SP, CH
0D02x .FIXUP D
0D02x(8D90000C): LDR SB, MT, MOD9 [ORG]
0D03x(41D80001): ADD R1, SB, VAR1
0D04y(42E80074): ADD R2, SP, 74H
0D05z .FIXUP P
0D05z(F793000C): BL MOD9 [ORG] PROC48
0D06a(40E8000C): ADD R0, SP, CH
0D07a .FIXUP D
0D07a(8D900005): LDR SB, MT, MOD9 [ORG]
0D08a(41D80001): ADD R1, SB, VAR1
0D09b(82E00074): LDR R2, SP, 74H
0D0Ac .FIXUP P
0D0Ac(F7931005): BL MOD9 [ORG] PROC49
0D0Bd(E7000004): B 4 [0D10H]
0D0Ce .FIXUP D
0D0Ce(8D000005): LDR SB, MT, MOD0 [ORP]
0D0De(40D80448): ADD R0, SB, 448H ["not a procedure"]
0D0Ee(41000010): MOV R1, R0, 10H
0D0Ff .FIXUP P
0D0Ff(F7709005): BL MOD7 [ORS] PROC9
ELSIF xg.mode = ORB.Typ THENh ORS.Mark("illegal assignment")i
0D10g(E700000C): B 12 [0D1DH]
0D11h(80E0000C): LDR R0, SP, CH
0D12h(40090005): SUB R0, R0, 5H
0D13h(E9000005): BNE 5 [0D19H]
0D14i .FIXUP D
0D14i(8D000008): LDR SB, MT, MOD0 [ORP]
0D15i(40D80458): ADD R0, SB, 458H ["illegal assignment"]
0D16i(41000013): MOV R1, R0, 13H
ELSEj ORSk.Mark("not a procedure")l
0D17j .FIXUP P
0D17j(F7709008): BL MOD7 [ORS] PROC9
0D18k(E7000004): B 4 [0D1DH]
0D19l .FIXUP D
0D19l(8D000005): LDR SB, MT, MOD0 [ORP]
0D1Al(40D8046C): ADD R0, SB, 46CH ["not a procedure"]
0D1Bl(41000010): MOV R1, R0, 10H
ENDm
0D1Cm .FIXUP P
0D1Cm(F7709005): BL MOD7 [ORS] PROC9
END
ELSIF symn = ORS.if THENo
0D1Dn(E70001D7): B 471 [0EF5H]
0D1Eo .FIXUP D
0D1Eo(8D000005): LDR SB, MT, MOD0 [ORP]
0D1Fo(80D0001C): LDR R0, SB, 1CH [data]
0D20o(40090020): SUB R0, R0, 20H
0D21o(E9000058): BNE 88 [0D7AH]
ORS.Get(sym)p;q expression(x)r;s CheckBool(x)t;u ORG.CFJump(x)v;w
0D22p .FIXUP D
0D22p(8D000004): LDR SB, MT, MOD0 [ORP]
0D23p(40D8001C): ADD R0, SB, 1CH [data]
0D24q .FIXUP P
0D24q(F770A008): BL MOD7 [ORS] PROC10
0D25r(40E8000C): ADD R0, SP, CH
0D26r .FIXUP D
0D26r(8D900004): LDR SB, MT, MOD9 [ORG]
0D27r(41D80001): ADD R1, SB, VAR1
0D28s .FIXUP D
0D28s(8D000002): LDR SB, MT, MOD0 [ORP]
0D29s(82D00034): LDR R2, SB, 34H [data]
0D2As(D157235C): BLEQ MT [trap=5, pos=22307]
0D2Bs(D7000002): BL R2
0D2Ct(40E8000C): ADD R0, SP, CH
0D2Dt .FIXUP D
0D2Dt(8D900005): LDR SB, MT, MOD9 [ORG]
0D2Et(41D80001): ADD R1, SB, VAR1
0D2Fu(F7FFF328): BL -3288 [0058H]
0D30v(40E8000C): ADD R0, SP, CH
0D31v .FIXUP D
0D31v(8D900004): LDR SB, MT, MOD9 [ORG]
0D32v(41D80001): ADD R1, SB, VAR1
0D33w .FIXUP P
0D33w(F792C00F): BL MOD9 [ORG] PROC44
Check(ORS.then,x "no THEN")y;z
0D34x(4000002F): MOV R0, R0, 2FH
0D35y .FIXUP D
0D35y(8D000004): LDR SB, MT, MOD0 [ORP]
0D36y(41D8047C): ADD R1, SB, 47CH ["no THEN"]
0D37y(42000008): MOV R2, R0, 8H
0D38z(F7FFF2C7): BL -3385 [0000H]
StatSequence;a L0 := 0;b
0D39a(F7FFFE9E): BL -354 [0BD8H]
0D3Ab(40000000): MOV R0, R0, 0H
0D3Bb(A0E0006C): STR R0, SP, 6CH
WHILE sym = ORS.elsif DOc
0D3Cc .FIXUP D
0D3Cc(8D000007): LDR SB, MT, MOD0 [ORP]
0D3Dc(80D0001C): LDR R0, SB, 1CH [data]
0D3Ec(40090038): SUB R0, R0, 38H
0D3Fc(E900001F): BNE 31 [0D5FH]
ORS.Get(sym)d;e ORG.FJump(L0)f;g ORG.Fixup(x)h;i expression(x)j;k CheckBool(x)l;m
0D40d .FIXUP D
0D40d(8D000004): LDR SB, MT, MOD0 [ORP]
0D41d(40D8001C): ADD R0, SB, 1CH [data]
0D42e .FIXUP P
0D42e(F770A00F): BL MOD7 [ORS] PROC10
0D43f(40E8006C): ADD R0, SP, 6CH
0D44g .FIXUP P
0D44g(F792B002): BL MOD9 [ORG] PROC43
0D45h(40E8000C): ADD R0, SP, CH
0D46h .FIXUP D
0D46h(8D900006): LDR SB, MT, MOD9 [ORG]
0D47h(41D80001): ADD R1, SB, VAR1
0D48i .FIXUP P
0D48i(F792F004): BL MOD9 [ORG] PROC47
0D49j(40E8000C): ADD R0, SP, CH
0D4Aj .FIXUP D
0D4Aj(8D900004): LDR SB, MT, MOD9 [ORG]
0D4Bj(41D80001): ADD R1, SB, VAR1
0D4Ck .FIXUP D
0D4Ck(8D000002): LDR SB, MT, MOD0 [ORP]
0D4Dk(82D00034): LDR R2, SB, 34H [data]
0D4Ek(D157E85C): BLEQ MT [trap=5, pos=22504]
0D4Fk(D7000002): BL R2
0D50l(40E8000C): ADD R0, SP, CH
0D51l .FIXUP D
0D51l(8D900005): LDR SB, MT, MOD9 [ORG]
0D52l(41D80001): ADD R1, SB, VAR1
0D53m(F7FFF304): BL -3324 [0058H]
ORG.CFJump(x)n;o Check(ORS.then,p "no THEN")q;r StatSequence
0D54n(40E8000C): ADD R0, SP, CH
0D55n .FIXUP D
0D55n(8D900004): LDR SB, MT, MOD9 [ORG]
0D56n(41D80001): ADD R1, SB, VAR1
0D57o .FIXUP P
0D57o(F792C00F): BL MOD9 [ORG] PROC44
0D58p(4000002F): MOV R0, R0, 2FH
0D59q .FIXUP D
0D59q(8D000004): LDR SB, MT, MOD0 [ORP]
0D5Aq(41D80484): ADD R1, SB, 484H ["no THEN"]
0D5Bq(42000008): MOV R2, R0, 8H
0D5Cr(F7FFF2A3): BL -3421 [0000H]
ENDs ;
0D5Ds(F7FFFE7A): BL -390 [0BD8H]
0D5Es(E7FFFFDD): B -35 [0D3CH]
IF sym = ORS.else THENt ORS.Get(sym)u;v ORG.FJump(L0)w;x ORG.Fixup(x)y;z StatSequence
0D5Ft .FIXUP D
0D5Ft(8D000006): LDR SB, MT, MOD0 [ORP]
0D60t(80D0001C): LDR R0, SB, 1CH [data]
0D61t(40090037): SUB R0, R0, 37H
0D62t(E900000B): BNE 11 [0D6EH]
0D63u .FIXUP D
0D63u(8D000004): LDR SB, MT, MOD0 [ORP]
0D64u(40D8001C): ADD R0, SB, 1CH [data]
0D65v .FIXUP P
0D65v(F770A00E): BL MOD7 [ORS] PROC10
0D66w(40E8006C): ADD R0, SP, 6CH
0D67x .FIXUP P
0D67x(F792B002): BL MOD9 [ORG] PROC43
0D68y(40E8000C): ADD R0, SP, CH
0D69y .FIXUP D
0D69y(8D900006): LDR SB, MT, MOD9 [ORG]
0D6Ay(41D80001): ADD R1, SB, VAR1
0D6Bz .FIXUP P
0D6Bz(F792F004): BL MOD9 [ORG] PROC47
ELSEa ORGb.Fixup(x)c
0D6Ca(F7FFFE6B): BL -405 [0BD8H]
0D6Db(E7000004): B 4 [0D72H]
0D6Ec(40E8000C): ADD R0, SP, CH
0D6Fc .FIXUP D
0D6Fc(8D900006): LDR SB, MT, MOD9 [ORG]
0D70c(41D80001): ADD R1, SB, VAR1
ENDd ;
0D71d .FIXUP P
0D71d(F792F006): BL MOD9 [ORG] PROC47
ORG.FixLink(L0)e;f Check(ORS.end,g "no END")h
0D72e(80E0006C): LDR R0, SP, 6CH
0D73f .FIXUP P
0D73f(F7904002): BL MOD9 [ORG] PROC4
0D74g(40000035): MOV R0, R0, 35H
0D75h .FIXUP D
0D75h(8D000006): LDR SB, MT, MOD0 [ORP]
0D76h(41D8048C): ADD R1, SB, 48CH ["no END"]
0D77h(42000007): MOV R2, R0, 7H
ELSIFi symj = ORS.while THENk
0D78i(F7FFF287): BL -3449 [0000H]
0D79j(E700017B): B 379 [0EF5H]
0D7Ak .FIXUP D
0D7Ak(8D000005): LDR SB, MT, MOD0 [ORP]
0D7Bk(80D0001C): LDR R0, SB, 1CH [data]
0D7Ck(40090022): SUB R0, R0, 22H
0D7Dk(E9000049): BNE 73 [0DC7H]
ORS.Get(sym)l;m L0 := ORG.Here();n expression(x)o;p CheckBool(x)q;r ORG.CFJump(x)s;t
0D7El .FIXUP D
0D7El(8D000004): LDR SB, MT, MOD0 [ORP]
0D7Fl(40D8001C): ADD R0, SB, 1CH [data]
0D80m .FIXUP P
0D80m(F770A00D): BL MOD7 [ORS] PROC10
0D81n .FIXUP P
0D81n(F792A001): BL MOD9 [ORG] PROC42
0D82n(A0E0006C): STR R0, SP, 6CH
0D83o(40E8000C): ADD R0, SP, CH
0D84o .FIXUP D
0D84o(8D900006): LDR SB, MT, MOD9 [ORG]
0D85o(41D80001): ADD R1, SB, VAR1
0D86p .FIXUP D
0D86p(8D000002): LDR SB, MT, MOD0 [ORP]
0D87p(82D00034): LDR R2, SB, 34H [data]
0D88p(D1594F5C): BLEQ MT [trap=5, pos=22863]
0D89p(D7000002): BL R2
0D8Aq(40E8000C): ADD R0, SP, CH
0D8Bq .FIXUP D
0D8Bq(8D900005): LDR SB, MT, MOD9 [ORG]
0D8Cq(41D80001): ADD R1, SB, VAR1
0D8Dr(F7FFF2CA): BL -3382 [0058H]
0D8Es(40E8000C): ADD R0, SP, CH
0D8Fs .FIXUP D
0D8Fs(8D900004): LDR SB, MT, MOD9 [ORG]
0D90s(41D80001): ADD R1, SB, VAR1
0D91t .FIXUP P
0D91t(F792C010): BL MOD9 [ORG] PROC44
Check(ORS.do,u "no DO")v;w StatSequence;x ORG.BJump(L0)y;z
0D92u(40000031): MOV R0, R0, 31H
0D93v .FIXUP D
0D93v(8D000004): LDR SB, MT, MOD0 [ORP]
0D94v(41D80494): ADD R1, SB, 494H ["no DO"]
0D95v(42000006): MOV R2, R0, 6H
0D96w(F7FFF269): BL -3479 [0000H]
0D97x(F7FFFE40): BL -448 [0BD8H]
0D98y(80E0006C): LDR R0, SP, 6CH
0D99z .FIXUP P
0D99z(F792D008): BL MOD9 [ORG] PROC45
WHILE sym = ORS.elsif DOa
0D9Aa .FIXUP D
0D9Aa(8D000007): LDR SB, MT, MOD0 [ORP]
0D9Ba(80D0001C): LDR R0, SB, 1CH [data]
0D9Ca(40090038): SUB R0, R0, 38H
0D9Da(E900001F): BNE 31 [0DBDH]
ORS.Get(sym)b;c ORG.Fixup(x)d;e expression(x)f;g CheckBool(x)h;i ORG.CFJump(x)j;k
0D9Eb .FIXUP D
0D9Eb(8D000004): LDR SB, MT, MOD0 [ORP]
0D9Fb(40D8001C): ADD R0, SB, 1CH [data]
0DA0c .FIXUP P
0DA0c(F770A007): BL MOD7 [ORS] PROC10
0DA1d(40E8000C): ADD R0, SP, CH
0DA2d .FIXUP D
0DA2d(8D900004): LDR SB, MT, MOD9 [ORG]
0DA3d(41D80001): ADD R1, SB, VAR1
0DA4e .FIXUP P
0DA4e(F792F004): BL MOD9 [ORG] PROC47
0DA5f(40E8000C): ADD R0, SP, CH
0DA6f .FIXUP D
0DA6f(8D900004): LDR SB, MT, MOD9 [ORG]
0DA7f(41D80001): ADD R1, SB, VAR1
0DA8g .FIXUP D
0DA8g(8D000002): LDR SB, MT, MOD0 [ORP]
0DA9g(82D00034): LDR R2, SB, 34H [data]
0DAAg(D159FF5C): BLEQ MT [trap=5, pos=23039]
0DABg(D7000002): BL R2
0DACh(40E8000C): ADD R0, SP, CH
0DADh .FIXUP D
0DADh(8D900005): LDR SB, MT, MOD9 [ORG]
0DAEh(41D80001): ADD R1, SB, VAR1
0DAFi(F7FFF2A8): BL -3416 [0058H]
0DB0j(40E8000C): ADD R0, SP, CH
0DB1j .FIXUP D
0DB1j(8D900004): LDR SB, MT, MOD9 [ORG]
0DB2j(41D80001): ADD R1, SB, VAR1
0DB3k .FIXUP P
0DB3k(F792C00F): BL MOD9 [ORG] PROC44
Check(ORS.do,l "no DO")m;n StatSequence;o ORG.BJump(L0)p
0DB4l(40000031): MOV R0, R0, 31H
0DB5m .FIXUP D
0DB5m(8D000004): LDR SB, MT, MOD0 [ORP]
0DB6m(41D8049C): ADD R1, SB, 49CH ["no DO"]
0DB7m(42000006): MOV R2, R0, 6H
0DB8n(F7FFF247): BL -3513 [0000H]
0DB9o(F7FFFE1E): BL -482 [0BD8H]
0DBAp(80E0006C): LDR R0, SP, 6CH
ENDq ;
0DBBq .FIXUP P
0DBBq(F792D008): BL MOD9 [ORG] PROC45
0DBCq(E7FFFFDD): B -35 [0D9AH]
ORG.Fixup(x)r;s Check(ORS.end,t "no END")u
0DBDr(40E8000C): ADD R0, SP, CH
0DBEr .FIXUP D
0DBEr(8D900009): LDR SB, MT, MOD9 [ORG]
0DBFr(41D80001): ADD R1, SB, VAR1
0DC0s .FIXUP P
0DC0s(F792F005): BL MOD9 [ORG] PROC47
0DC1t(40000035): MOV R0, R0, 35H
0DC2u .FIXUP D
0DC2u(8D000004): LDR SB, MT, MOD0 [ORP]
0DC3u(41D804A4): ADD R1, SB, 4A4H ["no END"]
0DC4u(42000007): MOV R2, R0, 7H
ELSIFv symw = ORS.repeat THENx
0DC5v(F7FFF23A): BL -3526 [0000H]
0DC6w(E700012E): B 302 [0EF5H]
0DC7x .FIXUP D
0DC7x(8D000005): LDR SB, MT, MOD0 [ORP]
0DC8x(80D0001C): LDR R0, SB, 1CH [data]
0DC9x(40090023): SUB R0, R0, 23H
0DCAx(E9000023): BNE 35 [0DEEH]
ORS.Get(sym)y;z L0 := ORG.Here();a StatSequence;b
0DCBy .FIXUP D
0DCBy(8D000004): LDR SB, MT, MOD0 [ORP]
0DCCy(40D8001C): ADD R0, SB, 1CH [data]
0DCDz .FIXUP P
0DCDz(F770A00D): BL MOD7 [ORS] PROC10
0DCEa .FIXUP P
0DCEa(F792A001): BL MOD9 [ORG] PROC42
0DCFa(A0E0006C): STR R0, SP, 6CH
0DD0b(F7FFFE07): BL -505 [0BD8H]
IF sym = ORS.until THENc
0DD1c .FIXUP D
0DD1c(8D000006): LDR SB, MT, MOD0 [ORP]
0DD2c(80D0001C): LDR R0, SB, 1CH [data]
0DD3c(40090039): SUB R0, R0, 39H
0DD4c(E9000014): BNE 20 [0DE9H]
ORS.Get(sym)d;e expression(x)f;g CheckBool(x)h;i ORG.CBJump(x,j L0)k
0DD5d .FIXUP D
0DD5d(8D000004): LDR SB, MT, MOD0 [ORP]
0DD6d(40D8001C): ADD R0, SB, 1CH [data]
0DD7e .FIXUP P
0DD7e(F770A009): BL MOD7 [ORS] PROC10
0DD8f(40E8000C): ADD R0, SP, CH
0DD9f .FIXUP D
0DD9f(8D900004): LDR SB, MT, MOD9 [ORG]
0DDAf(41D80001): ADD R1, SB, VAR1
0DDBg .FIXUP D
0DDBg(8D000002): LDR SB, MT, MOD0 [ORP]
0DDCg(82D00034): LDR R2, SB, 34H [data]
0DDDg(D15B365C): BLEQ MT [trap=5, pos=23350]
0DDEg(D7000002): BL R2
0DDFh(40E8000C): ADD R0, SP, CH
0DE0h .FIXUP D
0DE0h(8D900005): LDR SB, MT, MOD9 [ORG]
0DE1h(41D80001): ADD R1, SB, VAR1
0DE2i(F7FFF275): BL -3467 [0058H]
0DE3j(40E8000C): ADD R0, SP, CH
0DE4j .FIXUP D
0DE4j(8D900004): LDR SB, MT, MOD9 [ORG]
0DE5j(41D80001): ADD R1, SB, VAR1
0DE6k(82E0006C): LDR R2, SP, 6CH
ELSEl ORSm.Mark("missing UNTIL")n
0DE7l .FIXUP P
0DE7l(F792E010): BL MOD9 [ORG] PROC46
0DE8m(E7000004): B 4 [0DEDH]
0DE9n .FIXUP D
0DE9n(8D000005): LDR SB, MT, MOD0 [ORP]
0DEAn(40D804AC): ADD R0, SB, 4ACH ["missing UNTIL"]
0DEBn(4100000E): MOV R1, R0, EH
ENDo
0DECo .FIXUP P
0DECo(F7709005): BL MOD7 [ORS] PROC9
ELSIF symp = ORS.for THENq
0DEDp(E7000107): B 263 [0EF5H]
0DEEq .FIXUP D
0DEEq(8D000005): LDR SB, MT, MOD0 [ORP]
0DEFq(80D0001C): LDR R0, SB, 1CH [data]
0DF0q(40090025): SUB R0, R0, 25H
0DF1q(E900009B): BNE 155 [0E8DH]
ORS.Get(sym)r;s
0DF2r .FIXUP D
0DF2r(8D000004): LDR SB, MT, MOD0 [ORP]
0DF3r(40D8001C): ADD R0, SB, 1CH [data]
0DF4s .FIXUP P
0DF4s(F770A008): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENt
0DF5t .FIXUP D
0DF5t(8D000003): LDR SB, MT, MOD0 [ORP]
0DF6t(80D0001C): LDR R0, SB, 1CH [data]
0DF7t(4009001F): SUB R0, R0, 1FH
0DF8t(E900008F): BNE 143 [0E88H]
qualident(obj)u;v ORG.MakeItem(x,w obj,x level)y;z CheckInt(x)a;b CheckReadOnly(x)c;d
0DF9u(40E80004): ADD R0, SP, 4H
0DFAv(F7FFF219): BL -3559 [0014H]
0DFBw(40E8000C): ADD R0, SP, CH
0DFCw .FIXUP D
0DFCw(8D900007): LDR SB, MT, MOD9 [ORG]
0DFDw(41D80001): ADD R1, SB, VAR1
0DFEx(82E00004): LDR R2, SP, 4H
0DFFy .FIXUP D
0DFFy(8D000003): LDR SB, MT, MOD0 [ORP]
0E00y(83D00024): LDR R3, SB, 24H [data]
0E01z .FIXUP P
0E01z(F790800D): BL MOD9 [ORG] PROC8
0E02a(40E8000C): ADD R0, SP, CH
0E03a .FIXUP D
0E03a(8D900004): LDR SB, MT, MOD9 [ORG]
0E04a(41D80001): ADD R1, SB, VAR1
0E05b(F7FFF267): BL -3481 [006DH]
0E06c(40E8000C): ADD R0, SP, CH
0E07c .FIXUP D
0E07c(8D900004): LDR SB, MT, MOD9 [ORG]
0E08c(41D80001): ADD R1, SB, VAR1
0E09d(F7FFF2DA): BL -3366 [00E4H]
IF sym = ORS.becomes THENe
0E0Ae .FIXUP D
0E0Ae(8D000003): LDR SB, MT, MOD0 [ORP]
0E0Be(80D0001C): LDR R0, SB, 1CH [data]
0E0Ce(4009002A): SUB R0, R0, 2AH
0E0De(E9000075): BNE 117 [0E83H]
ORS.Get(sym)f;g expression(y)h;i CheckInt(y)j;k ORG.For0(x,l y)m;n L0 := ORG.Here();o
0E0Ef .FIXUP D
0E0Ef(8D000004): LDR SB, MT, MOD0 [ORP]
0E0Ff(40D8001C): ADD R0, SB, 1CH [data]
0E10g .FIXUP P
0E10g(F770A00F): BL MOD7 [ORS] PROC10
0E11h(40E80024): ADD R0, SP, 24H
0E12h .FIXUP D
0E12h(8D900004): LDR SB, MT, MOD9 [ORG]
0E13h(41D80001): ADD R1, SB, VAR1
0E14i .FIXUP D
0E14i(8D000002): LDR SB, MT, MOD0 [ORP]
0E15i(82D00034): LDR R2, SB, 34H [data]
0E16i(D15C815C): BLEQ MT [trap=5, pos=23681]
0E17i(D7000002): BL R2
0E18j(40E80024): ADD R0, SP, 24H
0E19j .FIXUP D
0E19j(8D900005): LDR SB, MT, MOD9 [ORG]
0E1Aj(41D80001): ADD R1, SB, VAR1
0E1Bk(F7FFF251): BL -3503 [006DH]
0E1Cl(40E8000C): ADD R0, SP, CH
0E1Dl .FIXUP D
0E1Dl(8D900004): LDR SB, MT, MOD9 [ORG]
0E1El(41D80001): ADD R1, SB, VAR1
0E1Fm(42E80024): ADD R2, SP, 24H
0E20m .FIXUP D
0E20m(8D900003): LDR SB, MT, MOD9 [ORG]
0E21m(43D80001): ADD R3, SB, VAR1
0E22n .FIXUP P
0E22n(F7927012): BL MOD9 [ORG] PROC39
0E23o .FIXUP P
0E23o(F792A001): BL MOD9 [ORG] PROC42
0E24o(A0E0006C): STR R0, SP, 6CH
Check(ORS.to,p "no TO")q;r expression(z)s;t CheckInt(z)u;v obj.rdow := TRUE;x
0E25p(40000032): MOV R0, R0, 32H
0E26q .FIXUP D
0E26q(8D000006): LDR SB, MT, MOD0 [ORP]
0E27q(41D804BC): ADD R1, SB, 4BCH ["no TO"]
0E28q(42000006): MOV R2, R0, 6H
0E29r(F7FFF1D6): BL -3626 [0000H]
0E2As(40E8003C): ADD R0, SP, 3CH
0E2Bs .FIXUP D
0E2Bs(8D900005): LDR SB, MT, MOD9 [ORG]
0E2Cs(41D80001): ADD R1, SB, VAR1
0E2Dt .FIXUP D
0E2Dt(8D000002): LDR SB, MT, MOD0 [ORP]
0E2Et(82D00034): LDR R2, SB, 34H [data]
0E2Ft(D15CE35C): BLEQ MT [trap=5, pos=23779]
0E30t(D7000002): BL R2
0E31u(40E8003C): ADD R0, SP, 3CH
0E32u .FIXUP D
0E32u(8D900005): LDR SB, MT, MOD9 [ORG]
0E33u(41D80001): ADD R1, SB, VAR1
0E34v(F7FFF238): BL -3528 [006DH]
0E35w(80E00004): LDR R0, SP, 4H
0E36w(D15CF84C): BLEQ MT [trap=4, pos=23800]
0E37x(41000001): MOV R1, R0, 1H
0E38x(B1000003): STR R1, R0, 3H
IF sym = ORS.by THENy ORS.Get(sym)z;a expression(w)b;c CheckConst(w)d;e CheckInt(w)f
0E39y .FIXUP D
0E39y(8D000007): LDR SB, MT, MOD0 [ORP]
0E3Ay(80D0001C): LDR R0, SB, 1CH [data]
0E3By(40090033): SUB R0, R0, 33H
0E3Cy(E9000013): BNE 19 [0E50H]
0E3Dz .FIXUP D
0E3Dz(8D000004): LDR SB, MT, MOD0 [ORP]
0E3Ez(40D8001C): ADD R0, SB, 1CH [data]
0E3Fa .FIXUP P
0E3Fa(F770A01C): BL MOD7 [ORS] PROC10
0E40b(40E80054): ADD R0, SP, 54H
0E41b .FIXUP D
0E41b(8D900004): LDR SB, MT, MOD9 [ORG]
0E42b(41D80001): ADD R1, SB, VAR1
0E43c .FIXUP D
0E43c(8D000002): LDR SB, MT, MOD0 [ORP]
0E44c(82D00034): LDR R2, SB, 34H [data]
0E45c(D15D3F5C): BLEQ MT [trap=5, pos=23871]
0E46c(D7000002): BL R2
0E47d(40E80054): ADD R0, SP, 54H
0E48d .FIXUP D
0E48d(8D900005): LDR SB, MT, MOD9 [ORG]
0E49d(41D80001): ADD R1, SB, VAR1
0E4Ae(F7FFF287): BL -3449 [00D2H]
0E4Bf(40E80054): ADD R0, SP, 54H
0E4Cf .FIXUP D
0E4Cf(8D900004): LDR SB, MT, MOD9 [ORG]
0E4Df(41D80001): ADD R1, SB, VAR1
ELSEg ORGh.MakeConstItem(w,i ORB.intType,j 1)k
0E4Eg(F7FFF21E): BL -3554 [006DH]
0E4Fh(E7000007): B 7 [0E57H]
0E50i(40E80054): ADD R0, SP, 54H
0E51i .FIXUP D
0E51i(8D900005): LDR SB, MT, MOD9 [ORG]
0E52i(41D80001): ADD R1, SB, VAR1
0E53j .FIXUP D
0E53j(8D800002): LDR SB, MT, MOD8 [ORB]
0E54j(82D00009): LDR R2, SB, VAR9
0E55k(43000001): MOV R3, R0, 1H
ENDl ;
0E56l .FIXUP P
0E56l(F7905017): BL MOD9 [ORG] PROC5
Check(ORS.do,m "no DO")n;o ORG.For1(x,p y,q z,r w,s L1)t;u
0E57m(40000031): MOV R0, R0, 31H
0E58n .FIXUP D
0E58n(8D000005): LDR SB, MT, MOD0 [ORP]
0E59n(41D804C4): ADD R1, SB, 4C4H ["no DO"]
0E5An(42000006): MOV R2, R0, 6H
0E5Bo(F7FFF1A4): BL -3676 [0000H]
0E5Cp(40E8000C): ADD R0, SP, CH
0E5Dp .FIXUP D
0E5Dp(8D900005): LDR SB, MT, MOD9 [ORG]
0E5Ep(41D80001): ADD R1, SB, VAR1
0E5Fq(42E80024): ADD R2, SP, 24H
0E60q .FIXUP D
0E60q(8D900003): LDR SB, MT, MOD9 [ORG]
0E61q(43D80001): ADD R3, SB, VAR1
0E62r(44E8003C): ADD R4, SP, 3CH
0E63r .FIXUP D
0E63r(8D900003): LDR SB, MT, MOD9 [ORG]
0E64r(45D80001): ADD R5, SB, VAR1
0E65s(46E80054): ADD R6, SP, 54H
0E66s .FIXUP D
0E66s(8D900003): LDR SB, MT, MOD9 [ORG]
0E67s(47D80001): ADD R7, SB, VAR1
0E68t(48E80070): ADD R8, SP, 70H
0E69u .FIXUP P
0E69u(F7928013): BL MOD9 [ORG] PROC40
StatSequence;v Check(ORS.end,w "no END")x;y
0E6Av(F7FFFD6D): BL -659 [0BD8H]
0E6Bw(40000035): MOV R0, R0, 35H
0E6Cx .FIXUP D
0E6Cx(8D000006): LDR SB, MT, MOD0 [ORP]
0E6Dx(41D804CC): ADD R1, SB, 4CCH ["no END"]
0E6Ex(42000007): MOV R2, R0, 7H
0E6Fy(F7FFF190): BL -3696 [0000H]
ORG.For2(x,z y,a w)b;c ORG.BJump(L0)d;e ORG.FixLink(L1)f;g obj.rdoh := FALSE
0E70z(40E8000C): ADD R0, SP, CH
0E71z .FIXUP D
0E71z(8D900005): LDR SB, MT, MOD9 [ORG]
0E72z(41D80001): ADD R1, SB, VAR1
0E73a(42E80024): ADD R2, SP, 24H
0E74a .FIXUP D
0E74a(8D900003): LDR SB, MT, MOD9 [ORG]
0E75a(43D80001): ADD R3, SB, VAR1
0E76b(44E80054): ADD R4, SP, 54H
0E77b .FIXUP D
0E77b(8D900003): LDR SB, MT, MOD9 [ORG]
0E78b(45D80001): ADD R5, SB, VAR1
0E79c .FIXUP P
0E79c(F7929010): BL MOD9 [ORG] PROC41
0E7Ad(80E0006C): LDR R0, SP, 6CH
0E7Be .FIXUP P
0E7Be(F792D002): BL MOD9 [ORG] PROC45
0E7Cf(80E00070): LDR R0, SP, 70H
0E7Dg .FIXUP P
0E7Dg(F7904002): BL MOD9 [ORG] PROC4
0E7Eh(80E00004): LDR R0, SP, 4H
0E7Fh(D15E5B4C): BLEQ MT [trap=4, pos=24155]
ELSEi ORSj.Mark(":= expected")k
0E80i(41000000): MOV R1, R0, 0H
0E81i(B1000003): STR R1, R0, 3H
0E82j(E7000004): B 4 [0E87H]
0E83k .FIXUP D
0E83k(8D00000C): LDR SB, MT, MOD0 [ORP]
0E84k(40D804D4): ADD R0, SB, 4D4H [":= expected"]
0E85k(4100000C): MOV R1, R0, CH
ENDl
0E86l .FIXUP P
0E86l(F7709009): BL MOD7 [ORS] PROC9
ELSE ORSm.Mark("identifier expected")n
0E87m(E7000004): B 4 [0E8CH]
0E88n .FIXUP D
0E88n(8D000005): LDR SB, MT, MOD0 [ORP]
0E89n(40D804E0): ADD R0, SB, 4E0H ["identifier expected"]
0E8An(41000014): MOV R1, R0, 14H
ENDo
0E8Bo .FIXUP P
0E8Bo(F7709005): BL MOD7 [ORS] PROC9
ELSIF symp = ORS.case THENq
0E8Cp(E7000068): B 104 [0EF5H]
0E8Dq .FIXUP D
0E8Dq(8D000005): LDR SB, MT, MOD0 [ORP]
0E8Eq(80D0001C): LDR R0, SB, 1CH [data]
0E8Fq(40090024): SUB R0, R0, 24H
0E90q(E9000064): BNE 100 [0EF5H]
ORS.Get(sym)r;s
0E91r .FIXUP D
0E91r(8D000004): LDR SB, MT, MOD0 [ORP]
0E92r(40D8001C): ADD R0, SB, 1CH [data]
0E93s .FIXUP P
0E93s(F770A008): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENt
0E94t .FIXUP D
0E94t(8D000003): LDR SB, MT, MOD0 [ORP]
0E95t(80D0001C): LDR R0, SB, 1CH [data]
0E96t(4009001F): SUB R0, R0, 1FH
0E97t(E9000054): BNE 84 [0EECH]
qualident(obj)u;v orgtype := obj.typew;x
0E98u(40E80004): ADD R0, SP, 4H
0E99v(F7FFF17A): BL -3718 [0014H]
0E9Aw(80E00004): LDR R0, SP, 4H
0E9Bw(D15F564C): BLEQ MT [trap=4, pos=24406]
0E9Cx(80000010): LDR R0, R0, 10H
0E9Dx(A0E00008): STR R0, SP, 8H
IF (orgtype.formy = ORB.Pointer)z OR (aorgtype.formb = ORB.Record)c & (dobj.classe = ORB.Par)f THENg
0E9Ey(80E00008): LDR R0, SP, 8H
0E9Fy(D15F724C): BLEQ MT [trap=4, pos=24434]
0EA0z(80000000): LDR R0, R0, 0H
0EA1z(40090007): SUB R0, R0, 7H
0EA2a(E100000A): BEQ 10 [0EADH]
0EA3b(80E00008): LDR R0, SP, 8H
0EA4b(D15F924C): BLEQ MT [trap=4, pos=24466]
0EA5c(80000000): LDR R0, R0, 0H
0EA6c(4009000D): SUB R0, R0, DH
0EA7d(E9000033): BNE 51 [0EDBH]
0EA8e(80E00004): LDR R0, SP, 4H
0EA9e(D15FAD4C): BLEQ MT [trap=4, pos=24493]
0EAAf(90000000): LDR R0, R0, 0H
0EABf(40090003): SUB R0, R0, 3H
0EACg(E900002E): BNE 46 [0EDBH]
Check(ORS.of,h "OF expected")i;j TypeCase(obj,k x)l;m L0 := 0;n
0EADh(40000030): MOV R0, R0, 30H
0EAEi .FIXUP D
0EAEi(8D00001A): LDR SB, MT, MOD0 [ORP]
0EAFi(41D804F4): ADD R1, SB, 4F4H ["OF expected"]
0EB0i(4200000C): MOV R2, R0, CH
0EB1j(F7FFF14E): BL -3762 [0000H]
0EB2k(80E00004): LDR R0, SP, 4H
0EB3l(41E8000C): ADD R1, SP, CH
0EB4l .FIXUP D
0EB4l(8D900006): LDR SB, MT, MOD9 [ORG]
0EB5l(42D80001): ADD R2, SB, VAR1
0EB6m(F7FFFCD5): BL -811 [0B8CH]
0EB7n(40000000): MOV R0, R0, 0H
0EB8n(A0E0006C): STR R0, SP, 6CH
WHILE sym = ORS.bar DOo
0EB9o .FIXUP D
0EB9o(8D000005): LDR SB, MT, MOD0 [ORP]
0EBAo(80D0001C): LDR R0, SB, 1CH [data]
0EBBo(40090036): SUB R0, R0, 36H
0EBCo(E9000013): BNE 19 [0ED0H]
ORS.Get(sym)p;q ORG.FJump(L0)r;s ORG.Fixup(x)t;u obj.typev := orgtype;w TypeCase(obj,x x)y
0EBDp .FIXUP D
0EBDp(8D000004): LDR SB, MT, MOD0 [ORP]
0EBEp(40D8001C): ADD R0, SB, 1CH [data]
0EBFq .FIXUP P
0EBFq(F770A02C): BL MOD7 [ORS] PROC10
0EC0r(40E8006C): ADD R0, SP, 6CH
0EC1s .FIXUP P
0EC1s(F792B002): BL MOD9 [ORG] PROC43
0EC2t(40E8000C): ADD R0, SP, CH
0EC3t .FIXUP D
0EC3t(8D900006): LDR SB, MT, MOD9 [ORG]
0EC4t(41D80001): ADD R1, SB, VAR1
0EC5u .FIXUP P
0EC5u(F792F004): BL MOD9 [ORG] PROC47
0EC6v(80E00004): LDR R0, SP, 4H
0EC7v(D160674C): BLEQ MT [trap=4, pos=24679]
0EC8w(81E00008): LDR R1, SP, 8H
0EC9w(A1000010): STR R1, R0, 10H
0ECAx(80E00004): LDR R0, SP, 4H
0ECBy(41E8000C): ADD R1, SP, CH
0ECCy .FIXUP D
0ECCy(8D900009): LDR SB, MT, MOD9 [ORG]
0ECDy(42D80001): ADD R2, SB, VAR1
ENDz ;
0ECEz(F7FFFCBD): BL -835 [0B8CH]
0ECFz(E7FFFFE9): B -23 [0EB9H]
ORG.Fixup(x)a;b ORG.FixLink(L0)c;d obj.typee := orgtype
0ED0a(40E8000C): ADD R0, SP, CH
0ED1a .FIXUP D
0ED1a(8D900005): LDR SB, MT, MOD9 [ORG]
0ED2a(41D80001): ADD R1, SB, VAR1
0ED3b .FIXUP P
0ED3b(F792F00E): BL MOD9 [ORG] PROC47
0ED4c(80E0006C): LDR R0, SP, 6CH
0ED5d .FIXUP P
0ED5d(F7904002): BL MOD9 [ORG] PROC4
0ED6e(80E00004): LDR R0, SP, 4H
0ED7e(D160CA4C): BLEQ MT [trap=4, pos=24778]
ELSEf ORSg.Mark("numeric case not implemented")h;i
0ED8f(81E00008): LDR R1, SP, 8H
0ED9f(A1000010): STR R1, R0, 10H
0EDAg(E7000010): B 16 [0EEBH]
0EDBh .FIXUP D
0EDBh(8D00000A): LDR SB, MT, MOD0 [ORP]
0EDCh(40D80500): ADD R0, SB, 500H ["numeric case not implemented"]
0EDDh(4100001D): MOV R1, R0, 1DH
0EDEi .FIXUP P
0EDEi(F7709009): BL MOD7 [ORS] PROC9
Check(ORS.of,j "OF expected")k;l SkipCase;m
0EDFj(40000030): MOV R0, R0, 30H
0EE0k .FIXUP D
0EE0k(8D000005): LDR SB, MT, MOD0 [ORP]
0EE1k(41D80520): ADD R1, SB, 520H ["OF expected"]
0EE2k(4200000C): MOV R2, R0, CH
0EE3l(F7FFF11C): BL -3812 [0000H]
0EE4m(F7FFFCE2): BL -798 [0BC7H]
WHILE sym = ORS.bar DOn SkipCase ENDo
0EE5n .FIXUP D
0EE5n(8D000005): LDR SB, MT, MOD0 [ORP]
0EE6n(80D0001C): LDR R0, SB, 1CH [data]
0EE7n(40090036): SUB R0, R0, 36H
0EE8n(E9000002): BNE 2 [0EEBH]
0EE9o(F7FFFCDD): BL -803 [0BC7H]
0EEAo(E7FFFFFA): B -6 [0EE5H]
END
ELSE ORSp.Mark("ident expected")q
0EEBp(E7000004): B 4 [0EF0H]
0EECq .FIXUP D
0EECq(8D000007): LDR SB, MT, MOD0 [ORP]
0EEDq(40D8052C): ADD R0, SB, 52CH ["ident expected"]
0EEEq(4100000F): MOV R1, R0, FH
ENDr ;
0EEFr .FIXUP P
0EEFr(F7709011): BL MOD7 [ORS] PROC9
Check(ORS.end,s "no END")t
0EF0s(40000035): MOV R0, R0, 35H
0EF1t .FIXUP D
0EF1t(8D000005): LDR SB, MT, MOD0 [ORP]
0EF2t(41D8053C): ADD R1, SB, 53CH ["no END"]
0EF3t(42000007): MOV R2, R0, 7H
ENDu ;
0EF4u(F7FFF10B): BL -3829 [0000H]
ORG.CheckRegs;v
0EF5v .FIXUP P
0EF5v(F7903006): BL MOD9 [ORG] PROC3
IF sym = ORS.semicolon THENw ORS.Get(sym)x
0EF6w .FIXUP D
0EF6w(8D000005): LDR SB, MT, MOD0 [ORP]
0EF7w(80D0001C): LDR R0, SB, 1CH [data]
0EF8w(40090034): SUB R0, R0, 34H
0EF9w(E9000004): BNE 4 [0EFEH]
0EFAx .FIXUP D
0EFAx(8D000004): LDR SB, MT, MOD0 [ORP]
0EFBx(40D8001C): ADD R0, SB, 1CH [data]
ELSIFy symz < ORS.semicolon THENa ORS.Mark("missing semicolon?")b
0EFCy .FIXUP P
0EFCy(F770A007): BL MOD7 [ORS] PROC10
0EFDz(E7000008): B 8 [0F06H]
0EFEa .FIXUP D
0EFEa(8D000004): LDR SB, MT, MOD0 [ORP]
0EFFa(80D0001C): LDR R0, SB, 1CH [data]
0F00a(40090034): SUB R0, R0, 34H
0F01a(ED000004): BGE 4 [0F06H]
0F02b .FIXUP D
0F02b(8D000004): LDR SB, MT, MOD0 [ORP]
0F03b(40D80544): ADD R0, SB, 544H ["missing semicolon?"]
0F04b(41000013): MOV R1, R0, 13H
ENDc
0F05c .FIXUP P
0F05c(F7709009): BL MOD7 [ORS] PROC9
UNTIL sym > ORS.semicolon
ENDd StatSequence;
0F06d .FIXUP D
0F06d(8D000004): LDR SB, MT, MOD0 [ORP]
0F07d(80D0001C): LDR R0, SB, 1CH [data]
0F08d(40090034): SUB R0, R0, 34H
0F09d(E6FFFCD0): BLE -816 [0BDAH]
0F0Ad(8FE00000): LDR LNK, SP, 0H
0F0Bd(4EE80078): ADD SP, SP, 78H
0F0Cd(C700000F): B LNK
(* Types and declarations *)
PROCEDURE IdentList(class: INTEGER; VAR first: ORB.Object);
VAR obj: ORB.Object;
BEGINe
0F0De(4EE90010): SUB SP, SP, 10H
0F0Ee(AFE00000): STR LNK, SP, 0H
0F0Fe(A0E00004): STR R0, SP, 4H
0F10e(A1E00008): STR R1, SP, 8H
IF sym = ORS.ident THENf
0F11f .FIXUP D
0F11f(8D00000B): LDR SB, MT, MOD0 [ORP]
0F12f(80D0001C): LDR R0, SB, 1CH [data]
0F13f(4009001F): SUB R0, R0, 1FH
0F14f(E9000037): BNE 55 [0F4CH]
ORB.NewObj(first,g ORS.id,h class)i;j ORS.Get(sym)k;l CheckExport(first.expom)n;o
0F15g(80E00008): LDR R0, SP, 8H
0F16h .FIXUP D
0F16h(8D700005): LDR SB, MT, MOD7 [ORS]
0F17h(41D80004): ADD R1, SB, VAR4
0F18i(82E00004): LDR R2, SP, 4H
0F19j .FIXUP P
0F19j(F780F014): BL MOD8 [ORB] PROC15
0F1Ak .FIXUP D
0F1Ak(8D000004): LDR SB, MT, MOD0 [ORP]
0F1Bk(40D8001C): ADD R0, SB, 1CH [data]
0F1Cl .FIXUP P
0F1Cl(F770A003): BL MOD7 [ORS] PROC10
0F1Dm(80E00008): LDR R0, SP, 8H
0F1Em(80000000): LDR R0, R0, 0H
0F1Fm(D163904C): BLEQ MT [trap=4, pos=25488]
0F20n(40080002): ADD R0, R0, 2H
0F21o(F7FFF1D0): BL -3632 [00F2H]
WHILE sym = ORS.comma DOp
0F22p .FIXUP D
0F22p(8D000008): LDR SB, MT, MOD0 [ORP]
0F23p(80D0001C): LDR R0, SB, 1CH [data]
0F24p(40090028): SUB R0, R0, 28H
0F25p(E9000019): BNE 25 [0F3FH]
ORS.Get(sym)q;r
0F26q .FIXUP D
0F26q(8D000004): LDR SB, MT, MOD0 [ORP]
0F27q(40D8001C): ADD R0, SB, 1CH [data]
0F28r .FIXUP P
0F28r(F770A00C): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENs ORB.NewObj(obj,t ORS.id,u class)v;w ORS.Get(sym)x;y CheckExport(obj.expoz)a
0F29s .FIXUP D
0F29s(8D000003): LDR SB, MT, MOD0 [ORP]
0F2As(80D0001C): LDR R0, SB, 1CH [data]
0F2Bs(4009001F): SUB R0, R0, 1FH
0F2Cs(E900000D): BNE 13 [0F3AH]
0F2Dt(40E8000C): ADD R0, SP, CH
0F2Eu .FIXUP D
0F2Eu(8D700005): LDR SB, MT, MOD7 [ORS]
0F2Fu(41D80004): ADD R1, SB, VAR4
0F30v(82E00004): LDR R2, SP, 4H
0F31w .FIXUP P
0F31w(F780F009): BL MOD8 [ORB] PROC15
0F32x .FIXUP D
0F32x(8D000004): LDR SB, MT, MOD0 [ORP]
0F33x(40D8001C): ADD R0, SB, 1CH [data]
0F34y .FIXUP P
0F34y(F770A003): BL MOD7 [ORS] PROC10
0F35z(80E0000C): LDR R0, SP, CH
0F36z(D1642A4C): BLEQ MT [trap=4, pos=25642]
0F37a(40080002): ADD R0, R0, 2H
ELSEb ORSc.Mark("ident?")d
0F38b(F7FFF1B9): BL -3655 [00F2H]
0F39c(E7000004): B 4 [0F3EH]
0F3Ad .FIXUP D
0F3Ad(8D000008): LDR SB, MT, MOD0 [ORP]
0F3Bd(40D80558): ADD R0, SB, 558H ["ident?"]
0F3Cd(41000007): MOV R1, R0, 7H
ENDe
0F3De .FIXUP P
0F3De(F7709009): BL MOD7 [ORS] PROC9
ENDf;
0F3Ef(E7FFFFE3): B -29 [0F22H]
IF sym = ORS.colon THENg ORS.Get(sym)h ELSEi ORSj.Mark(":?")k ENDl
0F3Fg .FIXUP D
0F3Fg(8D000005): LDR SB, MT, MOD0 [ORP]
0F40g(80D0001C): LDR R0, SB, 1CH [data]
0F41g(40090029): SUB R0, R0, 29H
0F42g(E9000004): BNE 4 [0F47H]
0F43h .FIXUP D
0F43h(8D000004): LDR SB, MT, MOD0 [ORP]
0F44h(40D8001C): ADD R0, SB, 1CH [data]
0F45i .FIXUP P
0F45i(F770A008): BL MOD7 [ORS] PROC10
0F46j(E7000004): B 4 [0F4BH]
0F47k .FIXUP D
0F47k(8D000004): LDR SB, MT, MOD0 [ORP]
0F48k(40D80560): ADD R0, SB, 560H [":?"]
0F49k(41000003): MOV R1, R0, 3H
0F4Al .FIXUP P
0F4Al(F7709005): BL MOD7 [ORS] PROC9
ELSE firstm := NIL
0F4Bm(E7000003): B 3 [0F4FH]
ENDn
0F4Cn(40000000): MOV R0, R0, 0H
0F4Dn(81E00008): LDR R1, SP, 8H
0F4En(A0100000): STR R0, R1, 0H
ENDo IdentList;
0F4Fo(8FE00000): LDR LNK, SP, 0H
0F50o(4EE80010): ADD SP, SP, 10H
0F51o(C700000F): B LNK
PROCEDURE ArrayType(VAR type: ORB.Type);
VAR x: ORG.Item; typ: ORB.Type; len: LONGINT;
BEGINp NEW(typ);q typ.formr := ORB.NoTyp;s
0F52p(4EE90028): SUB SP, SP, 28H
0F53p(AFE00000): STR LNK, SP, 0H
0F54p(A0E00004): STR R0, SP, 4H
0F55q(40E80020): ADD R0, SP, 20H
0F56q .FIXUP D
0F56q(8D80000F): LDR SB, MT, MOD8 [ORB]
0F57q(41D80003): ADD R1, SB, VAR3
0F58q(D765460C): BL MT [trap=0, pos=25926]
0F59r(80E00020): LDR R0, SP, 20H
0F5Ar(D1654F4C): BLEQ MT [trap=4, pos=25935]
0F5Bs(41000009): MOV R1, R0, 9H
0F5Cs(A1000000): STR R1, R0, 0H
expression(x)t;u
0F5Dt(40E80008): ADD R0, SP, 8H
0F5Et .FIXUP D
0F5Et(8D900008): LDR SB, MT, MOD9 [ORG]
0F5Ft(41D80001): ADD R1, SB, VAR1
0F60u .FIXUP D
0F60u(8D000002): LDR SB, MT, MOD0 [ORP]
0F61u(82D00034): LDR R2, SB, 34H [data]
0F62u(D165705C): BLEQ MT [trap=5, pos=25968]
0F63u(D7000002): BL R2
IF (x.mode = ORB.Const)v & (wx.type.formx = ORB.Int)y & (zx.a >= 0)a THENb len := x.a
0F64v(80E00008): LDR R0, SP, 8H
0F65v(40090001): SUB R0, R0, 1H
0F66w(E900000B): BNE 11 [0F72H]
0F67x(80E0000C): LDR R0, SP, CH
0F68x(D1659B4C): BLEQ MT [trap=4, pos=26011]
0F69y(80000000): LDR R0, R0, 0H
0F6Ay(40090004): SUB R0, R0, 4H
0F6Bz(E9000006): BNE 6 [0F72H]
0F6Ca(80E00010): LDR R0, SP, 10H
0F6Da(40090000): SUB R0, R0, 0H
0F6Eb(E5000003): BLT 3 [0F72H]
ELSEc lend := 1;e ORS.Mark("not a valid length")f
0F6Fc(80E00010): LDR R0, SP, 10H
0F70c(A0E00024): STR R0, SP, 24H
0F71d(E7000006): B 6 [0F78H]
0F72e(40000001): MOV R0, R0, 1H
0F73e(A0E00024): STR R0, SP, 24H
0F74f .FIXUP D
0F74f(8D000014): LDR SB, MT, MOD0 [ORP]
0F75f(40D80564): ADD R0, SB, 564H ["not a valid length"]
0F76f(41000013): MOV R1, R0, 13H
ENDg ;
0F77g .FIXUP P
0F77g(F770902D): BL MOD7 [ORS] PROC9
IF sym = ORS.of THENh ORS.Get(sym)i;j Type(typ.basek)l;m
0F78h .FIXUP D
0F78h(8D000004): LDR SB, MT, MOD0 [ORP]
0F79h(80D0001C): LDR R0, SB, 1CH [data]
0F7Ah(40090030): SUB R0, R0, 30H
0F7Bh(E900001D): BNE 29 [0F99H]
0F7Ci .FIXUP D
0F7Ci(8D000004): LDR SB, MT, MOD0 [ORP]
0F7Di(40D8001C): ADD R0, SB, 1CH [data]
0F7Ej .FIXUP P
0F7Ej(F770A007): BL MOD7 [ORS] PROC10
0F7Fk(80E00020): LDR R0, SP, 20H
0F80k(D166344C): BLEQ MT [trap=4, pos=26164]
0F81l(4008001C): ADD R0, R0, 1CH
0F82m .FIXUP D
0F82m(8D000006): LDR SB, MT, MOD0 [ORP]
0F83m(81D00038): LDR R1, SB, 38H [data]
0F84m(D166365C): BLEQ MT [trap=5, pos=26166]
0F85m(D7000001): BL R1
IF (typ.basen.formo = ORB.Array)p & (qtyp.baser.lens < 0)t THENu ORS.Mark("dyn array not allowed")v ENDw
0F86n(80E00020): LDR R0, SP, 20H
0F87n(D166494C): BLEQ MT [trap=4, pos=26185]
0F88o(8000001C): LDR R0, R0, 1CH
0F89o(D1664E4C): BLEQ MT [trap=4, pos=26190]
0F8Ap(80000000): LDR R0, R0, 0H
0F8Bp(4009000C): SUB R0, R0, CH
0F8Cq(E900000B): BNE 11 [0F98H]
0F8Dr(80E00020): LDR R0, SP, 20H
0F8Er(D166674C): BLEQ MT [trap=4, pos=26215]
0F8Fs(8000001C): LDR R0, R0, 1CH
0F90s(D1666B4C): BLEQ MT [trap=4, pos=26219]
0F91t(80000010): LDR R0, R0, 10H
0F92t(40090000): SUB R0, R0, 0H
0F93u(ED000004): BGE 4 [0F98H]
0F94v .FIXUP D
0F94v(8D000012): LDR SB, MT, MOD0 [ORP]
0F95v(40D80578): ADD R0, SB, 578H ["dyn array not allowed"]
0F96v(41000016): MOV R1, R0, 16H
0F97w .FIXUP P
0F97w(F7709019): BL MOD7 [ORS] PROC9
ELSIF symx = ORS.comma THENy ORS.Get(sym)z;a ArrayType(typ.baseb)c
0F98x(E7000015): B 21 [0FAEH]
0F99y .FIXUP D
0F99y(8D000005): LDR SB, MT, MOD0 [ORP]
0F9Ay(80D0001C): LDR R0, SB, 1CH [data]
0F9By(40090028): SUB R0, R0, 28H
0F9Cy(E9000008): BNE 8 [0FA5H]
0F9Dz .FIXUP D
0F9Dz(8D000004): LDR SB, MT, MOD0 [ORP]
0F9Ez(40D8001C): ADD R0, SB, 1CH [data]
0F9Fa .FIXUP P
0F9Fa(F770A008): BL MOD7 [ORS] PROC10
0FA0b(80E00020): LDR R0, SP, 20H
0FA1b(D166DB4C): BLEQ MT [trap=4, pos=26331]
0FA2c(4008001C): ADD R0, R0, 1CH
ELSEd ORSe.Mark("missing OF")f;g typ.baseh := ORB.intType
0FA3d(F7FFFFAE): BL -82 [0F52H]
0FA4e(E7000009): B 9 [0FAEH]
0FA5f .FIXUP D
0FA5f(8D000008): LDR SB, MT, MOD0 [ORP]
0FA6f(40D80590): ADD R0, SB, 590H ["missing OF"]
0FA7f(4100000B): MOV R1, R0, BH
0FA8g .FIXUP P
0FA8g(F7709009): BL MOD7 [ORS] PROC9
0FA9h(80E00020): LDR R0, SP, 20H
0FAAh(D167064C): BLEQ MT [trap=4, pos=26374]
ENDi ;
0FABi .FIXUP D
0FABi(8D800006): LDR SB, MT, MOD8 [ORB]
0FACi(81D00009): LDR R1, SB, VAR9
0FADi(A100001C): STR R1, R0, 1CH
typ.sizej := (len * typ.basek.sizel +m 3)n DIV 4 *o 4;p
0FAEj(80E00020): LDR R0, SP, 20H
0FAFj(D1672C4C): BLEQ MT [trap=4, pos=26412]
0FB0k(81E00020): LDR R1, SP, 20H
0FB1k(D1673F4C): BLEQ MT [trap=4, pos=26431]
0FB2l(8110001C): LDR R1, R1, 1CH
0FB3l(D167444C): BLEQ MT [trap=4, pos=26436]
0FB4m(82E00024): LDR R2, SP, 24H
0FB5m(81100020): LDR R1, R1, 20H
0FB6m(012A0001): MUL R1, R2, R1
0FB7n(41180003): ADD R1, R1, 3H
0FB8o(41120002): ASR R1, R1, 2H
0FB9p(41110002): LSL R1, R1, 2H
0FBAp(A1000020): STR R1, R0, 20H
typ.formq := ORB.Array;r typ.lens := len;t type := typ
0FBBq(80E00020): LDR R0, SP, 20H
0FBCq(D167614C): BLEQ MT [trap=4, pos=26465]
0FBDr(4100000C): MOV R1, R0, CH
0FBEr(A1000000): STR R1, R0, 0H
0FBFs(80E00020): LDR R0, SP, 20H
0FC0s(D167774C): BLEQ MT [trap=4, pos=26487]
0FC1t(81E00024): LDR R1, SP, 24H
0FC2t(A1000010): STR R1, R0, 10H
ENDu ArrayType;
0FC3u(80E00020): LDR R0, SP, 20H
0FC4u(81E00004): LDR R1, SP, 4H
0FC5u(A0100000): STR R0, R1, 0H
0FC6u(8FE00000): LDR LNK, SP, 0H
0FC7u(4EE80028): ADD SP, SP, 28H
0FC8u(C700000F): B LNK
PROCEDURE RecordType(VAR type: ORB.Type);
VAR obj, obj0, new, bot, base: ORB.Object;
typ, tp: ORB.Type;
offset, off, n: LONGINT;
BEGINv NEW(typ);w typ.formx := ORB.NoTyp;y typ.basez := NIL;a typ.mnob := -level;c typ.nofpard := 0;e offset := 0;f bot := NIL;g
0FC9v(4EE90030): SUB SP, SP, 30H
0FCAv(AFE00000): STR LNK, SP, 0H
0FCBv(A0E00004): STR R0, SP, 4H
0FCCw(40E8001C): ADD R0, SP, 1CH
0FCDw .FIXUP D
0FCDw(8D800022): LDR SB, MT, MOD8 [ORB]
0FCEw(41D80003): ADD R1, SB, VAR3
0FCFw(D768420C): BL MT [trap=0, pos=26690]
0FD0x(80E0001C): LDR R0, SP, 1CH
0FD1x(D1684B4C): BLEQ MT [trap=4, pos=26699]
0FD2y(41000009): MOV R1, R0, 9H
0FD3y(A1000000): STR R1, R0, 0H
0FD4z(80E0001C): LDR R0, SP, 1CH
0FD5z(D168624C): BLEQ MT [trap=4, pos=26722]
0FD6a(41000000): MOV R1, R0, 0H
0FD7a(A100001C): STR R1, R0, 1CH
0FD8b(80E0001C): LDR R0, SP, 1CH
0FD9b(D168724C): BLEQ MT [trap=4, pos=26738]
0FDAc .FIXUP D
0FDAc(8D00000D): LDR SB, MT, MOD0 [ORP]
0FDBc(81D00024): LDR R1, SB, 24H [data]
0FDCc(42000000): MOV R2, R0, 0H
0FDDc(01290001): SUB R1, R2, R1
0FDEc(A1000008): STR R1, R0, 8H
0FDFd(80E0001C): LDR R0, SP, 1CH
0FE0d(D168884C): BLEQ MT [trap=4, pos=26760]
0FE1e(41000000): MOV R1, R0, 0H
0FE2e(A100000C): STR R1, R0, CH
0FE3f(40000000): MOV R0, R0, 0H
0FE4f(A0E00024): STR R0, SP, 24H
0FE5g(40000000): MOV R0, R0, 0H
0FE6g(A0E00014): STR R0, SP, 14H
IF sym = ORS.lparen THENh
0FE7h(80D0001C): LDR R0, SB, 1CH
0FE8h(4009001C): SUB R0, R0, 1CH
0FE9h(E9000050): BNE 80 [103AH]
ORS.Get(sym)i;j (*record extension*)
0FEAi .FIXUP D
0FEAi(8D000010): LDR SB, MT, MOD0 [ORP]
0FEBi(40D8001C): ADD R0, SB, 1CH [data]
0FECj .FIXUP P
0FECj(F770A044): BL MOD7 [ORS] PROC10
IF level # 0 THENk ORS.Mark("extension of local types not implemented")l ENDm ;
0FEDk .FIXUP D
0FEDk(8D000003): LDR SB, MT, MOD0 [ORP]
0FEEk(80D00024): LDR R0, SB, 24H [data]
0FEFk(E1000004): BEQ 4 [0FF4H]
0FF0l .FIXUP D
0FF0l(8D000003): LDR SB, MT, MOD0 [ORP]
0FF1l(40D8059C): ADD R0, SB, 59CH ["extension of local types not implemented"]
0FF2l(41000029): MOV R1, R0, 29H
0FF3m .FIXUP P
0FF3m(F7709007): BL MOD7 [ORS] PROC9
IF sym = ORS.ident THENn
0FF4n .FIXUP D
0FF4n(8D000004): LDR SB, MT, MOD0 [ORP]
0FF5n(80D0001C): LDR R0, SB, 1CH [data]
0FF6n(4009001F): SUB R0, R0, 1FH
0FF7n(E9000039): BNE 57 [1031H]
qualident(base)o;p
0FF8o(40E80018): ADD R0, SP, 18H
0FF9p(F7FFF01A): BL -4070 [0014H]
IF base.classq = ORB.Typ THENr
0FFAq(80E00018): LDR R0, SP, 18H
0FFBq(D1698D4C): BLEQ MT [trap=4, pos=27021]
0FFCr(90000000): LDR R0, R0, 0H
0FFDr(40090005): SUB R0, R0, 5H
0FFEr(E900002D): BNE 45 [102CH]
IF base.types.formt = ORB.Record THENu typ.basev := base.typew
0FFFs(80E00018): LDR R0, SP, 18H
1000s(D169B34C): BLEQ MT [trap=4, pos=27059]
1001t(80000010): LDR R0, R0, 10H
1002t(D169B84C): BLEQ MT [trap=4, pos=27064]
1003u(80000000): LDR R0, R0, 0H
1004u(4009000D): SUB R0, R0, DH
1005u(E9000007): BNE 7 [100DH]
1006v(80E0001C): LDR R0, SP, 1CH
1007v(D169D34C): BLEQ MT [trap=4, pos=27091]
1008w(81E00018): LDR R1, SP, 18H
1009w(D169E04C): BLEQ MT [trap=4, pos=27104]
ELSEx typy.basez := ORB.intType;a ORS.Mark("invalid extension")b
100Ax(81100010): LDR R1, R1, 10H
100Bx(A100001C): STR R1, R0, 1CH
100Cy(E7000009): B 9 [1016H]
100Dz(80E0001C): LDR R0, SP, 1CH
100Ez(D169F84C): BLEQ MT [trap=4, pos=27128]
100Fa .FIXUP D
100Fa(8D80001B): LDR SB, MT, MOD8 [ORB]
1010a(81D00009): LDR R1, SB, VAR9
1011a(A100001C): STR R1, R0, 1CH
1012b .FIXUP D
1012b(8D000003): LDR SB, MT, MOD0 [ORP]
1013b(40D805C8): ADD R0, SB, 5C8H ["invalid extension"]
1014b(41000012): MOV R1, R0, 12H
ENDc ;
1015c .FIXUP P
1015c(F7709022): BL MOD7 [ORS] PROC9
typ.nofpard := typ.basee.nofparf + 1;g (*"nofpar" here abused for extension level*)
1016d(80E0001C): LDR R0, SP, 1CH
1017d(D16A4B4C): BLEQ MT [trap=4, pos=27211]
1018e(81E0001C): LDR R1, SP, 1CH
1019e(D16A574C): BLEQ MT [trap=4, pos=27223]
101Af(8110001C): LDR R1, R1, 1CH
101Bf(D16A5E4C): BLEQ MT [trap=4, pos=27230]
101Cg(8110000C): LDR R1, R1, CH
101Dg(41180001): ADD R1, R1, 1H
101Eg(A100000C): STR R1, R0, CH
bot := typ.baseh.dsci;j offset := typ.basek.sizel
101Fh(80E0001C): LDR R0, SP, 1CH
1020h(D16AAA4C): BLEQ MT [trap=4, pos=27306]
1021i(8000001C): LDR R0, R0, 1CH
1022i(D16AAE4C): BLEQ MT [trap=4, pos=27310]
1023j(80000014): LDR R0, R0, 14H
1024j(A0E00014): STR R0, SP, 14H
1025k(80E0001C): LDR R0, SP, 1CH
1026k(D16AC24C): BLEQ MT [trap=4, pos=27330]
1027l(8000001C): LDR R0, R0, 1CH
1028l(D16AC74C): BLEQ MT [trap=4, pos=27335]
ELSEm ORSn.Mark("type expected")o
1029m(80000020): LDR R0, R0, 20H
102Am(A0E00024): STR R0, SP, 24H
102Bn(E7000004): B 4 [1030H]
102Co .FIXUP D
102Co(8D00001A): LDR SB, MT, MOD0 [ORP]
102Do(40D805DC): ADD R0, SB, 5DCH ["type expected"]
102Eo(4100000E): MOV R1, R0, EH
ENDp
102Fp .FIXUP P
102Fp(F770901A): BL MOD7 [ORS] PROC9
ELSE ORSq.Mark("ident expected")r
1030q(E7000004): B 4 [1035H]
1031r .FIXUP D
1031r(8D000005): LDR SB, MT, MOD0 [ORP]
1032r(40D805EC): ADD R0, SB, 5ECH ["ident expected"]
1033r(4100000F): MOV R1, R0, FH
ENDs ;
1034s .FIXUP P
1034s(F7709005): BL MOD7 [ORS] PROC9
Check(ORS.rparen,t "no )")u
1035t(4000002C): MOV R0, R0, 2CH
1036u .FIXUP D
1036u(8D000005): LDR SB, MT, MOD0 [ORP]
1037u(41D805FC): ADD R1, SB, 5FCH ["no )"]
1038u(42000005): MOV R2, R0, 5H
ENDv ;
1039v(F7FFEFC6): BL -4154 [0000H]
WHILE sym = ORS.ident DOw (*fields*)
103Aw .FIXUP D
103Aw(8D000004): LDR SB, MT, MOD0 [ORP]
103Bw(80D0001C): LDR R0, SB, 1CH [data]
103Cw(4009001F): SUB R0, R0, 1FH
103Dw(E90000B2): BNE 178 [10F0H]
n := 0;x obj := bot;y
103Ex(40000000): MOV R0, R0, 0H
103Fx(A0E0002C): STR R0, SP, 2CH
1040y(80E00014): LDR R0, SP, 14H
1041y(A0E00008): STR R0, SP, 8H
WHILE sym = ORS.ident DOz
1042z .FIXUP D
1042z(8D000008): LDR SB, MT, MOD0 [ORP]
1043z(80D0001C): LDR R0, SB, 1CH [data]
1044z(4009001F): SUB R0, R0, 1FH
1045z(E900004E): BNE 78 [1094H]
obj0 := obj;a
1046a(80E00008): LDR R0, SP, 8H
1047a(A0E0000C): STR R0, SP, CH
WHILE (obj0 # NIL)b & (cobj0.named # ORS.id)e DOf obj0 := obj0.nextg ENDh ;
1048b(80E0000C): LDR R0, SP, CH
1049c(E1000013): BEQ 19 [105DH]
104Ad(80E0000C): LDR R0, SP, CH
104Bd(D16BF54C): BLEQ MT [trap=4, pos=27637]
104Ce(40080014): ADD R0, R0, 14H
104De .FIXUP D
104De(8D70000B): LDR SB, MT, MOD7 [ORS]
104Ee(41D80004): ADD R1, SB, VAR4
104Fe(92000000): LDR R2, R0, 0H
1050e(40080001): ADD R0, R0, 1H
1051e(93100000): LDR R3, R1, 0H
1052e(41180001): ADD R1, R1, 1H
1053e(04290003): SUB R4, R2, R3
1054e(E9000002): BNE 2 [1057H]
1055e(44290000): SUB R4, R2, 0H
1056e(E9FFFFF8): BNE -8 [104FH]
1057f(E1000005): BEQ 5 [105DH]
1058g(80E0000C): LDR R0, SP, CH
1059g(D16C144C): BLEQ MT [trap=4, pos=27668]
105Ah(80000008): LDR R0, R0, 8H
105Bh(A0E0000C): STR R0, SP, CH
105Ch(E7FFFFEB): B -21 [1048H]
IF obj0 # NIL THENi ORS.Mark("mult def")j ENDk ;
105Di(80E0000C): LDR R0, SP, CH
105Ei(E1000004): BEQ 4 [1063H]
105Fj .FIXUP D
105Fj(8D000012): LDR SB, MT, MOD0 [ORP]
1060j(40D80604): ADD R0, SB, 604H ["mult def"]
1061j(41000009): MOV R1, R0, 9H
1062k .FIXUP P
1062k(F770902E): BL MOD7 [ORS] PROC9
NEW(new);l ORS.CopyId(new.namem)n;o new.classp := ORB.Fld;q new.nextr := obj;s obj := new;t INC(n);u
1063l(40E80010): ADD R0, SP, 10H
1064l .FIXUP D
1064l(8D800005): LDR SB, MT, MOD8 [ORB]
1065l(41D80001): ADD R1, SB, VAR1
1066l(D76C620C): BL MT [trap=0, pos=27746]
1067m(80E00010): LDR R0, SP, 10H
1068m(D16C764C): BLEQ MT [trap=4, pos=27766]
1069n(40080014): ADD R0, R0, 14H
106Ao .FIXUP P
106Ao(F7707008): BL MOD7 [ORS] PROC7
106Bp(80E00010): LDR R0, SP, 10H
106Cp(D16C824C): BLEQ MT [trap=4, pos=27778]
106Dq(41000004): MOV R1, R0, 4H
106Eq(B1000000): STR R1, R0, 0H
106Fr(80E00010): LDR R0, SP, 10H
1070r(D16C974C): BLEQ MT [trap=4, pos=27799]
1071s(81E00008): LDR R1, SP, 8H
1072s(A1000008): STR R1, R0, 8H
1073t(80E00010): LDR R0, SP, 10H
1074t(A0E00008): STR R0, SP, 8H
1075u(80E0002C): LDR R0, SP, 2CH
1076u(40080001): ADD R0, R0, 1H
1077u(A0E0002C): STR R0, SP, 2CH
ORS.Get(sym)v;w CheckExport(new.expox)y;z
1078v .FIXUP D
1078v(8D000014): LDR SB, MT, MOD0 [ORP]
1079v(40D8001C): ADD R0, SB, 1CH [data]
107Aw .FIXUP P
107Aw(F770A010): BL MOD7 [ORS] PROC10
107Bx(80E00010): LDR R0, SP, 10H
107Cx(D16CDE4C): BLEQ MT [trap=4, pos=27870]
107Dy(40080002): ADD R0, R0, 2H
107Ez(F7FFF073): BL -3981 [00F2H]
IF (sym # ORS.comma)a & (bsym # ORS.colon)c THENd ORS.Mark("comma expected")e
107Fa .FIXUP D
107Fa(8D000007): LDR SB, MT, MOD0 [ORP]
1080a(80D0001C): LDR R0, SB, 1CH [data]
1081a(40090028): SUB R0, R0, 28H
1082b(E1000009): BEQ 9 [108CH]
1083c .FIXUP D
1083c(8D000004): LDR SB, MT, MOD0 [ORP]
1084c(80D0001C): LDR R0, SB, 1CH [data]
1085c(40090029): SUB R0, R0, 29H
1086d(E1000005): BEQ 5 [108CH]
1087e .FIXUP D
1087e(8D000004): LDR SB, MT, MOD0 [ORP]
1088e(40D80610): ADD R0, SB, 610H ["comma expected"]
1089e(4100000F): MOV R1, R0, FH
ELSIFf symg = ORS.comma THENh ORS.Get(sym)i
108Af .FIXUP P
108Af(F7709010): BL MOD7 [ORS] PROC9
108Bg(E7000007): B 7 [1093H]
108Ch .FIXUP D
108Ch(8D000005): LDR SB, MT, MOD0 [ORP]
108Dh(80D0001C): LDR R0, SB, 1CH [data]
108Eh(40090028): SUB R0, R0, 28H
108Fh(E9000003): BNE 3 [1093H]
1090i .FIXUP D
1090i(8D000004): LDR SB, MT, MOD0 [ORP]
1091i(40D8001C): ADD R0, SB, 1CH [data]
ENDj
1092j .FIXUP P
1092j(F770A008): BL MOD7 [ORS] PROC10
ENDk ;
1093k(E7FFFFAE): B -82 [1042H]
Check(ORS.colon,l "colon expected")m;n Type(tp)o;p
1094l(40000029): MOV R0, R0, 29H
1095m .FIXUP D
1095m(8D000005): LDR SB, MT, MOD0 [ORP]
1096m(41D80620): ADD R1, SB, 620H ["colon expected"]
1097m(4200000F): MOV R2, R0, FH
1098n(F7FFEF67): BL -4249 [0000H]
1099o(40E80020): ADD R0, SP, 20H
109Ap .FIXUP D
109Ap(8D000005): LDR SB, MT, MOD0 [ORP]
109Bp(81D00038): LDR R1, SB, 38H [data]
109Cp(D16DAD5C): BLEQ MT [trap=5, pos=28077]
109Dp(D7000001): BL R1
IF (tp.formq = ORB.Array)r & (stp.lent < 0)u THENv ORS.Mark("dyn array not allowed")w ENDx ;
109Eq(80E00020): LDR R0, SP, 20H
109Fq(D16DBF4C): BLEQ MT [trap=4, pos=28095]
10A0r(80000000): LDR R0, R0, 0H
10A1r(4009000C): SUB R0, R0, CH
10A2s(E9000009): BNE 9 [10ACH]
10A3t(80E00020): LDR R0, SP, 20H
10A4t(D16DD64C): BLEQ MT [trap=4, pos=28118]
10A5u(80000010): LDR R0, R0, 10H
10A6u(40090000): SUB R0, R0, 0H
10A7v(ED000004): BGE 4 [10ACH]
10A8w .FIXUP D
10A8w(8D00000E): LDR SB, MT, MOD0 [ORP]
10A9w(40D80630): ADD R0, SB, 630H ["dyn array not allowed"]
10AAw(41000016): MOV R1, R0, 16H
10ABx .FIXUP P
10ABx(F7709019): BL MOD7 [ORS] PROC9
IF tp.sizey > 1 THENz offset := (offset+3)a DIV 4 *b 4 ENDc ;
10ACy(80E00020): LDR R0, SP, 20H
10ADy(D16E194C): BLEQ MT [trap=4, pos=28185]
10AEz(80000020): LDR R0, R0, 20H
10AFz(40090001): SUB R0, R0, 1H
10B0z(E6000005): BLE 5 [10B6H]
10B1a(80E00024): LDR R0, SP, 24H
10B2a(40080003): ADD R0, R0, 3H
10B3b(40020002): ASR R0, R0, 2H
10B4c(40010002): LSL R0, R0, 2H
10B5c(A0E00024): STR R0, SP, 24H
offset := offset + n * tp.sized;e off := offset;f obj0 := obj;g
10B6d(80E00020): LDR R0, SP, 20H
10B7d(D16E6C4C): BLEQ MT [trap=4, pos=28268]
10B8e(81E0002C): LDR R1, SP, 2CH
10B9e(80000020): LDR R0, R0, 20H
10BAe(001A0000): MUL R0, R1, R0
10BBe(81E00024): LDR R1, SP, 24H
10BCe(00180000): ADD R0, R1, R0
10BDe(A0E00024): STR R0, SP, 24H
10BEf(80E00024): LDR R0, SP, 24H
10BFf(A0E00028): STR R0, SP, 28H
10C0g(80E00008): LDR R0, SP, 8H
10C1g(A0E0000C): STR R0, SP, CH
WHILE obj0 # bot DOh obj0.typei := tp;j obj0.levk := 0;l off := off - tp.sizem;n obj0.valo := off;p obj0 := obj0.nextq ENDr ;
10C2h(80E0000C): LDR R0, SP, CH
10C3h(81E00014): LDR R1, SP, 14H
10C4h(00090001): SUB R0, R0, R1
10C5h(E1000017): BEQ 23 [10DDH]
10C6i(80E0000C): LDR R0, SP, CH
10C7i(D16EAD4C): BLEQ MT [trap=4, pos=28333]
10C8j(81E00020): LDR R1, SP, 20H
10C9j(A1000010): STR R1, R0, 10H
10CAk(80E0000C): LDR R0, SP, CH
10CBk(D16EBD4C): BLEQ MT [trap=4, pos=28349]
10CCl(41000000): MOV R1, R0, 0H
10CDl(A1000004): STR R1, R0, 4H
10CEm(80E00020): LDR R0, SP, 20H
10CFm(D16ED84C): BLEQ MT [trap=4, pos=28376]
10D0n(81E00028): LDR R1, SP, 28H
10D1n(80000020): LDR R0, R0, 20H
10D2n(00190000): SUB R0, R1, R0
10D3n(A0E00028): STR R0, SP, 28H
10D4o(80E0000C): LDR R0, SP, CH
10D5o(D16EE24C): BLEQ MT [trap=4, pos=28386]
10D6p(81E00028): LDR R1, SP, 28H
10D7p(A1000034): STR R1, R0, 34H
10D8q(80E0000C): LDR R0, SP, CH
10D9q(D16EFC4C): BLEQ MT [trap=4, pos=28412]
10DAr(80000008): LDR R0, R0, 8H
10DBr(A0E0000C): STR R0, SP, CH
10DCr(E7FFFFE5): B -27 [10C2H]
bot := obj;s
10DDs(80E00008): LDR R0, SP, 8H
10DEs(A0E00014): STR R0, SP, 14H
IF sym = ORS.semicolon THENt ORS.Get(sym)u ELSIFv symw # ORS.end THENx ORS.Mark(" ; or END")y ENDz
10DFt .FIXUP D
10DFt(8D000037): LDR SB, MT, MOD0 [ORP]
10E0t(80D0001C): LDR R0, SB, 1CH [data]
10E1t(40090034): SUB R0, R0, 34H
10E2t(E9000004): BNE 4 [10E7H]
10E3u .FIXUP D
10E3u(8D000004): LDR SB, MT, MOD0 [ORP]
10E4u(40D8001C): ADD R0, SB, 1CH [data]
10E5v .FIXUP P
10E5v(F770A03A): BL MOD7 [ORS] PROC10
10E6w(E7000008): B 8 [10EFH]
10E7x .FIXUP D
10E7x(8D000004): LDR SB, MT, MOD0 [ORP]
10E8x(80D0001C): LDR R0, SB, 1CH [data]
10E9x(40090035): SUB R0, R0, 35H
10EAx(E1000004): BEQ 4 [10EFH]
10EBy .FIXUP D
10EBy(8D000004): LDR SB, MT, MOD0 [ORP]
10ECy(40D80648): ADD R0, SB, 648H [" ; or END"]
10EDy(4100000A): MOV R1, R0, AH
10EEz .FIXUP P
10EEz(F7709009): BL MOD7 [ORS] PROC9
ENDa ;
10EFa(E7FFFF4A): B -182 [103AH]
typ.formb := ORB.Record;c typ.dscd := bot;e typ.sizef := (offset + 3)g DIV 4 *h 4;i type := typ
10F0b(80E0001C): LDR R0, SP, 1CH
10F1b(D16F8D4C): BLEQ MT [trap=4, pos=28557]
10F2c(4100000D): MOV R1, R0, DH
10F3c(A1000000): STR R1, R0, 0H
10F4d(80E0001C): LDR R0, SP, 1CH
10F5d(D16FA44C): BLEQ MT [trap=4, pos=28580]
10F6e(81E00014): LDR R1, SP, 14H
10F7e(A1000014): STR R1, R0, 14H
10F8f(80E0001C): LDR R0, SP, 1CH
10F9f(D16FB54C): BLEQ MT [trap=4, pos=28597]
10FAg(81E00024): LDR R1, SP, 24H
10FBg(41180003): ADD R1, R1, 3H
10FCh(41120002): ASR R1, R1, 2H
10FDi(41110002): LSL R1, R1, 2H
10FEi(A1000020): STR R1, R0, 20H
ENDj RecordType;
10FFj(80E0001C): LDR R0, SP, 1CH
1100j(81E00004): LDR R1, SP, 4H
1101j(A0100000): STR R0, R1, 0H
1102j(8FE00000): LDR LNK, SP, 0H
1103j(4EE80030): ADD SP, SP, 30H
1104j(C700000F): B LNK
PROCEDURE FPSection(VAR adr: LONGINT; VAR nofpar: INTEGER);
VAR obj, first: ORB.Object; tp: ORB.Type;
parsize: LONGINT; cl: INTEGER; rdo: BOOLEAN;
BEGINk
1105k(4EE90024): SUB SP, SP, 24H
1106k(AFE00000): STR LNK, SP, 0H
1107k(A0E00004): STR R0, SP, 4H
1108k(A1E00008): STR R1, SP, 8H
IF sym = ORS.var THENl ORS.Get(sym)m;n cl := ORB.Par ELSEo clp := ORB.Var ENDq ;
1109l .FIXUP D
1109l(8D00001E): LDR SB, MT, MOD0 [ORP]
110Al(80D0001C): LDR R0, SB, 1CH [data]
110Bl(40090041): SUB R0, R0, 41H
110Cl(E9000006): BNE 6 [1113H]
110Dm .FIXUP D
110Dm(8D000004): LDR SB, MT, MOD0 [ORP]
110Em(40D8001C): ADD R0, SB, 1CH [data]
110Fn .FIXUP P
110Fn(F770A021): BL MOD7 [ORS] PROC10
1110o(40000003): MOV R0, R0, 3H
1111o(A0E0001C): STR R0, SP, 1CH
1112p(E7000002): B 2 [1115H]
1113q(40000002): MOV R0, R0, 2H
1114q(A0E0001C): STR R0, SP, 1CH
IdentList(cl,r first)s;t FormalType(tp,u 0)v;w rdo := FALSE;x
1115r(80E0001C): LDR R0, SP, 1CH
1116s(41E80010): ADD R1, SP, 10H
1117t(F7FFFDF5): BL -523 [0F0DH]
1118u(40E80014): ADD R0, SP, 14H
1119v(41000000): MOV R1, R0, 0H
111Aw .FIXUP D
111Aw(8D00000D): LDR SB, MT, MOD0 [ORP]
111Bw(82D0003C): LDR R2, SB, 3CH [data]
111Cw(D171125C): BLEQ MT [trap=5, pos=28946]
111Dw(D7000002): BL R2
111Ex(40000000): MOV R0, R0, 0H
111Fx(B0E00020): STR R0, SP, 20H
IF (cl = ORB.Var)y & (ztp.forma >= ORB.Array)b THENc cl := ORB.Par;d rdo := TRUE ENDe ;
1120y(80E0001C): LDR R0, SP, 1CH
1121y(40090002): SUB R0, R0, 2H
1122z(E9000009): BNE 9 [112CH]
1123a(80E00014): LDR R0, SP, 14H
1124a(D171414C): BLEQ MT [trap=4, pos=28993]
1125b(80000000): LDR R0, R0, 0H
1126b(4009000C): SUB R0, R0, CH
1127c(E5000004): BLT 4 [112CH]
1128d(40000003): MOV R0, R0, 3H
1129d(A0E0001C): STR R0, SP, 1CH
112Ae(40000001): MOV R0, R0, 1H
112Be(B0E00020): STR R0, SP, 20H
IF (tp.formf = ORB.Array)g & (htp.leni < 0)j OR (ktp.forml = ORB.Record)m THENn
112Cf(80E00014): LDR R0, SP, 14H
112Df(D171854C): BLEQ MT [trap=4, pos=29061]
112Eg(80000000): LDR R0, R0, 0H
112Fg(4009000C): SUB R0, R0, CH
1130h(E9000005): BNE 5 [1136H]
1131i(80E00014): LDR R0, SP, 14H
1132i(D1719C4C): BLEQ MT [trap=4, pos=29084]
1133j(80000010): LDR R0, R0, 10H
1134j(40090000): SUB R0, R0, 0H
1135k(E5000005): BLT 5 [113BH]
1136l(80E00014): LDR R0, SP, 14H
1137l(D171AD4C): BLEQ MT [trap=4, pos=29101]
1138m(80000000): LDR R0, R0, 0H
1139m(4009000D): SUB R0, R0, DH
113An(E9000003): BNE 3 [113EH]
parsize := 2*ORG.WordSize (*open array or record, needs second word for length or type tag*)
ELSEo parsizep := ORG.WordSize
113Bo(40000008): MOV R0, R0, 8H
113Co(A0E00018): STR R0, SP, 18H
113Dp(E7000002): B 2 [1140H]
ENDq ;
113Eq(40000004): MOV R0, R0, 4H
113Fq(A0E00018): STR R0, SP, 18H
obj := first;r
1140r(80E00010): LDR R0, SP, 10H
1141r(A0E0000C): STR R0, SP, CH
WHILE obj # NIL DOs
1142s(80E0000C): LDR R0, SP, CH
1143s(E1000025): BEQ 37 [1169H]
INC(nofpar);t obj.classu := cl;v obj.typew := tp;x obj.rdoy := rdo;z obj.leva := level;b obj.valc := adr;d
1144t(80E00008): LDR R0, SP, 8H
1145t(81000000): LDR R1, R0, 0H
1146t(41180001): ADD R1, R1, 1H
1147t(A1000000): STR R1, R0, 0H
1148u(80E0000C): LDR R0, SP, CH
1149u(D172954C): BLEQ MT [trap=4, pos=29333]
114Av(81E0001C): LDR R1, SP, 1CH
114Bv(B1000000): STR R1, R0, 0H
114Cw(80E0000C): LDR R0, SP, CH
114Dw(D172A54C): BLEQ MT [trap=4, pos=29349]
114Ex(81E00014): LDR R1, SP, 14H
114Fx(A1000010): STR R1, R0, 10H
1150y(80E0000C): LDR R0, SP, CH
1151y(D172B44C): BLEQ MT [trap=4, pos=29364]
1152z(91E00020): LDR R1, SP, 20H
1153z(B1000003): STR R1, R0, 3H
1154a(80E0000C): LDR R0, SP, CH
1155a(D172C44C): BLEQ MT [trap=4, pos=29380]
1156b .FIXUP D
1156b(8D00003C): LDR SB, MT, MOD0 [ORP]
1157b(81D00024): LDR R1, SB, 24H [data]
1158b(A1000004): STR R1, R0, 4H
1159c(80E0000C): LDR R0, SP, CH
115Ac(D172D64C): BLEQ MT [trap=4, pos=29398]
115Bd(81E00004): LDR R1, SP, 4H
115Cd(81100000): LDR R1, R1, 0H
115Dd(A1000034): STR R1, R0, 34H
adr := adr + parsize;e obj := obj.nextf
115Ee(80E00004): LDR R0, SP, 4H
115Fe(80000000): LDR R0, R0, 0H
1160e(81E00018): LDR R1, SP, 18H
1161e(00080001): ADD R0, R0, R1
1162e(81E00004): LDR R1, SP, 4H
1163e(A0100000): STR R0, R1, 0H
1164f(80E0000C): LDR R0, SP, CH
1165f(D1730A4C): BLEQ MT [trap=4, pos=29450]
ENDg ;
1166g(80000008): LDR R0, R0, 8H
1167g(A0E0000C): STR R0, SP, CH
1168g(E7FFFFD9): B -39 [1142H]
IF adr >= 52 THENh ORS.Mark("too many parameters")i ENDj
1169h(80E00004): LDR R0, SP, 4H
116Ah(80000000): LDR R0, R0, 0H
116Bh(40090034): SUB R0, R0, 34H
116Ch(E5000004): BLT 4 [1171H]
116Di .FIXUP D
116Di(8D000017): LDR SB, MT, MOD0 [ORP]
116Ei(40D80654): ADD R0, SB, 654H ["too many parameters"]
116Fi(41000014): MOV R1, R0, 14H
1170j .FIXUP P
1170j(F7709061): BL MOD7 [ORS] PROC9
ENDk FPSection;
1171k(8FE00000): LDR LNK, SP, 0H
1172k(4EE80024): ADD SP, SP, 24H
1173k(C700000F): B LNK
PROCEDURE ProcedureType(ptype: ORB.Type; VAR parblksize: LONGINT);
VAR obj: ORB.Object; size: LONGINT; nofpar: INTEGER;
BEGINl ptype.basem := ORB.noType;n size := parblksize;o nofpar := 0;p ptype.dscq := NIL;r
1174l(4EE90018): SUB SP, SP, 18H
1175l(AFE00000): STR LNK, SP, 0H
1176l(A0E00004): STR R0, SP, 4H
1177l(A1E00008): STR R1, SP, 8H
1178m(80E00004): LDR R0, SP, 4H
1179m(D173F14C): BLEQ MT [trap=4, pos=29681]
117An .FIXUP D
117An(8D80000D): LDR SB, MT, MOD8 [ORB]
117Bn(81D0000D): LDR R1, SB, VAR13
117Cn(A100001C): STR R1, R0, 1CH
117Do(80E00008): LDR R0, SP, 8H
117Eo(80000000): LDR R0, R0, 0H
117Fo(A0E00010): STR R0, SP, 10H
1180p(40000000): MOV R0, R0, 0H
1181p(A0E00014): STR R0, SP, 14H
1182q(80E00004): LDR R0, SP, 4H
1183q(D1742B4C): BLEQ MT [trap=4, pos=29739]
1184r(41000000): MOV R1, R0, 0H
1185r(A1000014): STR R1, R0, 14H
IF sym = ORS.lparen THENs
1186s .FIXUP D
1186s(8D00000C): LDR SB, MT, MOD0 [ORP]
1187s(80D0001C): LDR R0, SB, 1CH [data]
1188s(4009001C): SUB R0, R0, 1CH
1189s(E9000048): BNE 72 [11D2H]
ORS.Get(sym)t;u
118At .FIXUP D
118At(8D000004): LDR SB, MT, MOD0 [ORP]
118Bt(40D8001C): ADD R0, SB, 1CH [data]
118Cu .FIXUP P
118Cu(F770A01C): BL MOD7 [ORS] PROC10
IF sym = ORS.rparen THENv ORS.Get(sym)w
118Dv .FIXUP D
118Dv(8D000003): LDR SB, MT, MOD0 [ORP]
118Ev(80D0001C): LDR R0, SB, 1CH [data]
118Fv(4009002C): SUB R0, R0, 2CH
1190v(E9000004): BNE 4 [1195H]
1191w .FIXUP D
1191w(8D000004): LDR SB, MT, MOD0 [ORP]
1192w(40D8001C): ADD R0, SB, 1CH [data]
ELSEx FPSectiony(size,z nofpar)a;b
1193x .FIXUP P
1193x(F770A007): BL MOD7 [ORS] PROC10
1194y(E7000013): B 19 [11A8H]
1195z(40E80010): ADD R0, SP, 10H
1196a(41E80014): ADD R1, SP, 14H
1197b(F7FFFF6D): BL -147 [1105H]
WHILE sym = ORS.semicolon DOc ORS.Get(sym)d;e FPSection(size,f nofpar)g ENDh ;
1198c .FIXUP D
1198c(8D000007): LDR SB, MT, MOD0 [ORP]
1199c(80D0001C): LDR R0, SB, 1CH [data]
119Ac(40090034): SUB R0, R0, 34H
119Bc(E9000007): BNE 7 [11A3H]
119Cd .FIXUP D
119Cd(8D000004): LDR SB, MT, MOD0 [ORP]
119Dd(40D8001C): ADD R0, SB, 1CH [data]
119Ee .FIXUP P
119Ee(F770A00B): BL MOD7 [ORS] PROC10
119Ff(40E80010): ADD R0, SP, 10H
11A0g(41E80014): ADD R1, SP, 14H
11A1h(F7FFFF63): BL -157 [1105H]
11A2h(E7FFFFF5): B -11 [1198H]
Check(ORS.rparen,i "no )")j
11A3i(4000002C): MOV R0, R0, 2CH
11A4j .FIXUP D
11A4j(8D000008): LDR SB, MT, MOD0 [ORP]
11A5j(41D80668): ADD R1, SB, 668H ["no )"]
11A6j(42000005): MOV R2, R0, 5H
ENDk ;
11A7k(F7FFEE58): BL -4520 [0000H]
IF sym = ORS.colon THENl (*function*)
11A8l .FIXUP D
11A8l(8D000004): LDR SB, MT, MOD0 [ORP]
11A9l(80D0001C): LDR R0, SB, 1CH [data]
11AAl(40090029): SUB R0, R0, 29H
11ABl(E9000026): BNE 38 [11D2H]
ORS.Get(sym)m;n
11ACm .FIXUP D
11ACm(8D000004): LDR SB, MT, MOD0 [ORP]
11ADm(40D8001C): ADD R0, SB, 1CH [data]
11AEn .FIXUP P
11AEn(F770A010): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENo
11AFo .FIXUP D
11AFo(8D000003): LDR SB, MT, MOD0 [ORP]
11B0o(80D0001C): LDR R0, SB, 1CH [data]
11B1o(4009001F): SUB R0, R0, 1FH
11B2o(E900001B): BNE 27 [11CEH]
qualident(obj)p;q ptype.baser := obj.types;t
11B3p(40E8000C): ADD R0, SP, CH
11B4q(F7FFEE5F): BL -4513 [0014H]
11B5r(80E00004): LDR R0, SP, 4H
11B6r(D175BA4C): BLEQ MT [trap=4, pos=30138]
11B7s(81E0000C): LDR R1, SP, CH
11B8s(D175C64C): BLEQ MT [trap=4, pos=30150]
11B9t(81100010): LDR R1, R1, 10H
11BAt(A100001C): STR R1, R0, 1CH
IF ~((obj.classu = ORB.Typ)v & (wobj.typex.formy IN {ORB.Byte .. ORB.Pointer, ORB.Proc})z) THENa
11BBu(80E0000C): LDR R0, SP, CH
11BCu(D175E14C): BLEQ MT [trap=4, pos=30177]
11BDv(90000000): LDR R0, R0, 0H
11BEv(40090005): SUB R0, R0, 5H
11BFw(E9000009): BNE 9 [11C9H]
11C0x(80E0000C): LDR R0, SP, CH
11C1x(D175F84C): BLEQ MT [trap=4, pos=30200]
11C2y(80000010): LDR R0, R0, 10H
11C3y(D175FD4C): BLEQ MT [trap=4, pos=30205]
11C4z(410004FE): MOV R1, R0, 4FEH
11C5z(80000000): LDR R0, R0, 0H
11C6z(40080001): ADD R0, R0, 1H
11C7z(01130000): ROR R1, R1, R0
11C8a(E0000004): BMI 4 [11CDH]
ORS.Mark("illegal function type")b
11C9b .FIXUP D
11C9b(8D00001A): LDR SB, MT, MOD0 [ORP]
11CAb(40D80670): ADD R0, SB, 670H ["illegal function type"]
11CBb(41000016): MOV R1, R0, 16H
ENDc
11CCc .FIXUP P
11CCc(F770901E): BL MOD7 [ORS] PROC9
ELSE ORSd.Mark("type identifier expected")e
11CDd(E7000004): B 4 [11D2H]
11CEe .FIXUP D
11CEe(8D000005): LDR SB, MT, MOD0 [ORP]
11CFe(40D80688): ADD R0, SB, 688H ["type identifier expected"]
11D0e(41000019): MOV R1, R0, 19H
ENDf
11D1f .FIXUP P
11D1f(F7709005): BL MOD7 [ORS] PROC9
END
END ;
ptype.nofparg := nofpar;h parblksize := size
11D2g(80E00004): LDR R0, SP, 4H
11D3g(D176CA4C): BLEQ MT [trap=4, pos=30410]
11D4h(81E00014): LDR R1, SP, 14H
11D5h(A100000C): STR R1, R0, CH
ENDi ProcedureType;
11D6i(80E00010): LDR R0, SP, 10H
11D7i(81E00008): LDR R1, SP, 8H
11D8i(A0100000): STR R0, R1, 0H
11D9i(8FE00000): LDR LNK, SP, 0H
11DAi(4EE80018): ADD SP, SP, 18H
11DBi(C700000F): B LNK
PROCEDURE FormalType0(VAR typ: ORB.Type; dim: INTEGER);
VAR obj: ORB.Object; dmy: LONGINT;
BEGINj
11DCj(4EE90014): SUB SP, SP, 14H
11DDj(AFE00000): STR LNK, SP, 0H
11DEj(A0E00004): STR R0, SP, 4H
11DFj(A1E00008): STR R1, SP, 8H
IF sym = ORS.ident THENk
11E0k .FIXUP D
11E0k(8D000012): LDR SB, MT, MOD0 [ORP]
11E1k(80D0001C): LDR R0, SB, 1CH [data]
11E2k(4009001F): SUB R0, R0, 1FH
11E3k(E9000016): BNE 22 [11FAH]
qualident(obj)l;m
11E4l(40E8000C): ADD R0, SP, CH
11E5m(F7FFEE2E): BL -4562 [0014H]
IF obj.classn = ORB.Typ THENo typ := obj.typep ELSEq ORSr.Mark("not a type")s;t typ := ORB.intType ENDu
11E6n(80E0000C): LDR R0, SP, CH
11E7n(D177AC4C): BLEQ MT [trap=4, pos=30636]
11E8o(90000000): LDR R0, R0, 0H
11E9o(40090005): SUB R0, R0, 5H
11EAo(E9000006): BNE 6 [11F1H]
11EBp(80E0000C): LDR R0, SP, CH
11ECp(D177CB4C): BLEQ MT [trap=4, pos=30667]
11EDq(80000010): LDR R0, R0, 10H
11EEq(81E00004): LDR R1, SP, 4H
11EFq(A0100000): STR R0, R1, 0H
11F0r(E7000008): B 8 [11F9H]
11F1s .FIXUP D
11F1s(8D000011): LDR SB, MT, MOD0 [ORP]
11F2s(40D806A4): ADD R0, SB, 6A4H ["not a type"]
11F3s(4100000B): MOV R1, R0, BH
11F4t .FIXUP P
11F4t(F7709023): BL MOD7 [ORS] PROC9
11F5u .FIXUP D
11F5u(8D800004): LDR SB, MT, MOD8 [ORB]
11F6u(80D00009): LDR R0, SB, VAR9
11F7u(81E00004): LDR R1, SP, 4H
11F8u(A0100000): STR R0, R1, 0H
ELSIF symv = ORS.array THENw
11F9v(E700005F): B 95 [1259H]
11FAw .FIXUP D
11FAw(8D000005): LDR SB, MT, MOD0 [ORP]
11FBw(80D0001C): LDR R0, SB, 1CH [data]
11FCw(4009003C): SUB R0, R0, 3CH
11FDw(E900002D): BNE 45 [122BH]
ORS.Get(sym)x;y Check(ORS.of,z "OF ?")a;b
11FEx .FIXUP D
11FEx(8D000004): LDR SB, MT, MOD0 [ORP]
11FFx(40D8001C): ADD R0, SB, 1CH [data]
1200y .FIXUP P
1200y(F770A00C): BL MOD7 [ORS] PROC10
1201z(40000030): MOV R0, R0, 30H
1202a .FIXUP D
1202a(8D000004): LDR SB, MT, MOD0 [ORP]
1203a(41D806B0): ADD R1, SB, 6B0H ["OF ?"]
1204a(42000005): MOV R2, R0, 5H
1205b(F7FFEDFA): BL -4614 [0000H]
IF dim >= 1 THENc ORS.Mark("multi-dimensional open arrays not implemented")d ENDe ;
1206c(80E00008): LDR R0, SP, 8H
1207c(40090001): SUB R0, R0, 1H
1208c(E5000004): BLT 4 [120DH]
1209d .FIXUP D
1209d(8D000007): LDR SB, MT, MOD0 [ORP]
120Ad(40D806B8): ADD R0, SB, 6B8H ["multi-dimensional open arrays not implemented"]
120Bd(4100002E): MOV R1, R0, 2EH
120Ce .FIXUP P
120Ce(F770900C): BL MOD7 [ORS] PROC9
NEW(typ);f typ.formg := ORB.Array;h typ.leni := -1;j typ.sizek := 2*ORG.WordSize;l
120Df(80E00004): LDR R0, SP, 4H
120Ef .FIXUP D
120Ef(8D800005): LDR SB, MT, MOD8 [ORB]
120Ff(41D80003): ADD R1, SB, VAR3
1210f(D778B00C): BL MT [trap=0, pos=30896]
1211g(80E00004): LDR R0, SP, 4H
1212g(80000000): LDR R0, R0, 0H
1213g(D178B94C): BLEQ MT [trap=4, pos=30905]
1214h(4100000C): MOV R1, R0, CH
1215h(A1000000): STR R1, R0, 0H
1216i(80E00004): LDR R0, SP, 4H
1217i(80000000): LDR R0, R0, 0H
1218i(D178CF4C): BLEQ MT [trap=4, pos=30927]
1219j(5100FFFF): MOV R1, R0, FFFFFFFFH
121Aj(A1000010): STR R1, R0, 10H
121Bk(80E00004): LDR R0, SP, 4H
121Ck(80000000): LDR R0, R0, 0H
121Dk(D178DF4C): BLEQ MT [trap=4, pos=30943]
121El(41000008): MOV R1, R0, 8H
121Fl(A1000020): STR R1, R0, 20H
FormalType(typ.basem,n dim+1)o
1220m(80E00004): LDR R0, SP, 4H
1221m(80000000): LDR R0, R0, 0H
1222m(D1790D4C): BLEQ MT [trap=4, pos=30989]
1223n(4008001C): ADD R0, R0, 1CH
1224o(81E00008): LDR R1, SP, 8H
1225o(41180001): ADD R1, R1, 1H
ELSIFp symq = ORS.procedure THENr
1226p .FIXUP D
1226p(8D000018): LDR SB, MT, MOD0 [ORP]
1227p(82D0003C): LDR R2, SB, 3CH [data]
1228p(D1791F5C): BLEQ MT [trap=5, pos=31007]
1229p(D7000002): BL R2
122Aq(E700002E): B 46 [1259H]
122Br .FIXUP D
122Br(8D000005): LDR SB, MT, MOD0 [ORP]
122Cr(80D0001C): LDR R0, SB, 1CH [data]
122Dr(40090042): SUB R0, R0, 42H
122Er(E9000022): BNE 34 [1251H]
ORS.Get(sym)s;t ORB.OpenScope;u
122Fs .FIXUP D
122Fs(8D000004): LDR SB, MT, MOD0 [ORP]
1230s(40D8001C): ADD R0, SB, 1CH [data]
1231t .FIXUP P
1231t(F770A025): BL MOD7 [ORS] PROC10
1232u .FIXUP P
1232u(F7813001): BL MOD8 [ORB] PROC19
NEW(typ);v typ.formw := ORB.Proc;x typ.sizey := ORG.WordSize;z dmy := 0;a ProcedureType(typ,b dmy)c;d
1233v(80E00004): LDR R0, SP, 4H
1234v .FIXUP D
1234v(8D800005): LDR SB, MT, MOD8 [ORB]
1235v(41D80003): ADD R1, SB, VAR3
1236v(D7796B0C): BL MT [trap=0, pos=31083]
1237w(80E00004): LDR R0, SP, 4H
1238w(80000000): LDR R0, R0, 0H
1239w(D179744C): BLEQ MT [trap=4, pos=31092]
123Ax(4100000A): MOV R1, R0, AH
123Bx(A1000000): STR R1, R0, 0H
123Cy(80E00004): LDR R0, SP, 4H
123Dy(80000000): LDR R0, R0, 0H
123Ey(D1798A4C): BLEQ MT [trap=4, pos=31114]
123Fz(41000004): MOV R1, R0, 4H
1240z(A1000020): STR R1, R0, 20H
1241a(40000000): MOV R0, R0, 0H
1242a(A0E00010): STR R0, SP, 10H
1243b(80E00004): LDR R0, SP, 4H
1244b(80000000): LDR R0, R0, 0H
1245c(41E80010): ADD R1, SP, 10H
1246d(F7FFFF2D): BL -211 [1174H]
typ.dsce := ORB.topScope.nextf;g ORB.CloseScope
1247e(80E00004): LDR R0, SP, 4H
1248e(80000000): LDR R0, R0, 0H
1249e(D179CC4C): BLEQ MT [trap=4, pos=31180]
124Af .FIXUP D
124Af(8D800016): LDR SB, MT, MOD8 [ORB]
124Bf(81D00004): LDR R1, SB, VAR4
124Cf(D179E14C): BLEQ MT [trap=4, pos=31201]
124Dg(81100008): LDR R1, R1, 8H
124Eg(A1000014): STR R1, R0, 14H
ELSEh ORSi.Mark("identifier expected")j;k typ := ORB.noType
124Fh .FIXUP P
124Fh(F781401D): BL MOD8 [ORB] PROC20
1250i(E7000008): B 8 [1259H]
1251j .FIXUP D
1251j(8D000007): LDR SB, MT, MOD0 [ORP]
1252j(40D806E8): ADD R0, SB, 6E8H ["identifier expected"]
1253j(41000014): MOV R1, R0, 14H
1254k .FIXUP P
1254k(F7709005): BL MOD7 [ORS] PROC9
ENDl
1255l .FIXUP D
1255l(8D800004): LDR SB, MT, MOD8 [ORB]
1256l(80D0000D): LDR R0, SB, VAR13
1257l(81E00004): LDR R1, SP, 4H
1258l(A0100000): STR R0, R1, 0H
ENDm FormalType0;
1259m(8FE00000): LDR LNK, SP, 0H
125Am(4EE80014): ADD SP, SP, 14H
125Bm(C700000F): B LNK
PROCEDURE CheckRecLevel(lev: INTEGER);
BEGINn
125Cn(4EE90008): SUB SP, SP, 8H
125Dn(AFE00000): STR LNK, SP, 0H
125En(A0E00004): STR R0, SP, 4H
IF lev # 0 THENo ORS.Mark("ptr base must be global")p ENDq
125Fo(80E00004): LDR R0, SP, 4H
1260o(E1000004): BEQ 4 [1265H]
1261p .FIXUP D
1261p(8D00000C): LDR SB, MT, MOD0 [ORP]
1262p(40D806FC): ADD R0, SB, 6FCH ["ptr base must be global"]
1263p(41000018): MOV R1, R0, 18H
1264q .FIXUP P
1264q(F7709010): BL MOD7 [ORS] PROC9
ENDr CheckRecLevel;
1265r(8FE00000): LDR LNK, SP, 0H
1266r(4EE80008): ADD SP, SP, 8H
1267r(C700000F): B LNK
PROCEDURE Type0(VAR type: ORB.Type);
VAR dmy: LONGINT; obj: ORB.Object; ptbase: PtrBase;
BEGINs type := ORB.intType;t (*sync*)
1268s(4EE90014): SUB SP, SP, 14H
1269s(AFE00000): STR LNK, SP, 0H
126As(A0E00004): STR R0, SP, 4H
126Bt .FIXUP D
126Bt(8D80000A): LDR SB, MT, MOD8 [ORB]
126Ct(80D00009): LDR R0, SB, VAR9
126Dt(81E00004): LDR R1, SP, 4H
126Et(A0100000): STR R0, R1, 0H
IF (sym # ORS.ident)u & (vsym < ORS.array)w THENx ORS.Mark("not a type")y;z
126Fu .FIXUP D
126Fu(8D000004): LDR SB, MT, MOD0 [ORP]
1270u(80D0001C): LDR R0, SB, 1CH [data]
1271u(4009001F): SUB R0, R0, 1FH
1272v(E1000013): BEQ 19 [1286H]
1273w .FIXUP D
1273w(8D000004): LDR SB, MT, MOD0 [ORP]
1274w(80D0001C): LDR R0, SB, 1CH [data]
1275w(4009003C): SUB R0, R0, 3CH
1276x(ED00000F): BGE 15 [1286H]
1277y .FIXUP D
1277y(8D000004): LDR SB, MT, MOD0 [ORP]
1278y(40D80714): ADD R0, SB, 714H ["not a type"]
1279y(4100000B): MOV R1, R0, BH
127Az .FIXUP P
127Az(F7709016): BL MOD7 [ORS] PROC9
REPEAT ORS.Get(sym)a UNTILb (sym = ORS.ident)c OR (dsym >= ORS.array)e
127Ba .FIXUP D
127Ba(8D000004): LDR SB, MT, MOD0 [ORP]
127Ca(40D8001C): ADD R0, SB, 1CH [data]
127Db .FIXUP P
127Db(F770A003): BL MOD7 [ORS] PROC10
127Ec .FIXUP D
127Ec(8D000003): LDR SB, MT, MOD0 [ORP]
127Fc(80D0001C): LDR R0, SB, 1CH [data]
1280c(4009001F): SUB R0, R0, 1FH
1281d(E1000004): BEQ 4 [1286H]
1282e .FIXUP D
1282e(8D000004): LDR SB, MT, MOD0 [ORP]
1283e(80D0001C): LDR R0, SB, 1CH [data]
1284e(4009003C): SUB R0, R0, 3CH
ENDf ;
1285f(E5FFFFF5): BLT -11 [127BH]
IF sym = ORS.ident THENg
1286g .FIXUP D
1286g(8D000004): LDR SB, MT, MOD0 [ORP]
1287g(80D0001C): LDR R0, SB, 1CH [data]
1288g(4009001F): SUB R0, R0, 1FH
1289g(E900001D): BNE 29 [12A7H]
qualident(obj)h;i
128Ah(40E8000C): ADD R0, SP, CH
128Bi(F7FFED88): BL -4728 [0014H]
IF obj.classj = ORB.Typ THENk
128Cj(80E0000C): LDR R0, SP, CH
128Dj(D17C324C): BLEQ MT [trap=4, pos=31794]
128Ek(90000000): LDR R0, R0, 0H
128Fk(40090005): SUB R0, R0, 5H
1290k(E9000011): BNE 17 [12A2H]
IF (obj.typel # NIL)m & (nobj.typeo.formp # ORB.NoTyp)q THENr type := obj.types ENDt
1291l(80E0000C): LDR R0, SP, CH
1292l(D17C564C): BLEQ MT [trap=4, pos=31830]
1293m(80000010): LDR R0, R0, 10H
1294n(E100000C): BEQ 12 [12A1H]
1295o(80E0000C): LDR R0, SP, CH
1296o(D17C694C): BLEQ MT [trap=4, pos=31849]
1297p(80000010): LDR R0, R0, 10H
1298p(D17C6E4C): BLEQ MT [trap=4, pos=31854]
1299q(80000000): LDR R0, R0, 0H
129Aq(40090009): SUB R0, R0, 9H
129Br(E1000005): BEQ 5 [12A1H]
129Cs(80E0000C): LDR R0, SP, CH
129Ds(D17C914C): BLEQ MT [trap=4, pos=31889]
129Et(80000010): LDR R0, R0, 10H
129Ft(81E00004): LDR R1, SP, 4H
12A0t(A0100000): STR R0, R1, 0H
ELSE ORSu.Mark("not a type or undefined")v
12A1u(E7000004): B 4 [12A6H]
12A2v .FIXUP D
12A2v(8D00001C): LDR SB, MT, MOD0 [ORP]
12A3v(40D80720): ADD R0, SB, 720H ["not a type or undefined"]
12A4v(41000018): MOV R1, R0, 18H
ENDw
12A5w .FIXUP P
12A5w(F7709028): BL MOD7 [ORS] PROC9
ELSIF symx = ORS.array THENy ORS.Get(sym)z;a ArrayType(type)b
12A6x(E70000CD): B 205 [1374H]
12A7y .FIXUP D
12A7y(8D000005): LDR SB, MT, MOD0 [ORP]
12A8y(80D0001C): LDR R0, SB, 1CH [data]
12A9y(4009003C): SUB R0, R0, 3CH
12AAy(E9000006): BNE 6 [12B1H]
12ABz .FIXUP D
12ABz(8D000004): LDR SB, MT, MOD0 [ORP]
12ACz(40D8001C): ADD R0, SB, 1CH [data]
12ADa .FIXUP P
12ADa(F770A008): BL MOD7 [ORS] PROC10
12AEb(80E00004): LDR R0, SP, 4H
ELSIFc symd = ORS.record THENe
12AFc(F7FFFCA2): BL -862 [0F52H]
12B0d(E70000C3): B 195 [1374H]
12B1e .FIXUP D
12B1e(8D000006): LDR SB, MT, MOD0 [ORP]
12B2e(80D0001C): LDR R0, SB, 1CH [data]
12B3e(4009003D): SUB R0, R0, 3DH
12B4e(E900000B): BNE 11 [12C0H]
ORS.Get(sym)f;g RecordType(type)h;i Check(ORS.end,j "no END")k
12B5f .FIXUP D
12B5f(8D000004): LDR SB, MT, MOD0 [ORP]
12B6f(40D8001C): ADD R0, SB, 1CH [data]
12B7g .FIXUP P
12B7g(F770A00A): BL MOD7 [ORS] PROC10
12B8h(80E00004): LDR R0, SP, 4H
12B9i(F7FFFD0F): BL -753 [0FC9H]
12BAj(40000035): MOV R0, R0, 35H
12BBk .FIXUP D
12BBk(8D000006): LDR SB, MT, MOD0 [ORP]
12BCk(41D80738): ADD R1, SB, 738H ["no END"]
12BDk(42000007): MOV R2, R0, 7H
ELSIFl symm = ORS.pointer THENn
12BEl(F7FFED41): BL -4799 [0000H]
12BFm(E70000B4): B 180 [1374H]
12C0n .FIXUP D
12C0n(8D000005): LDR SB, MT, MOD0 [ORP]
12C1n(80D0001C): LDR R0, SB, 1CH [data]
12C2n(4009003E): SUB R0, R0, 3EH
12C3n(E9000086): BNE 134 [134AH]
ORS.Get(sym)o;p Check(ORS.to,q "no TO")r;s
12C4o .FIXUP D
12C4o(8D000004): LDR SB, MT, MOD0 [ORP]
12C5o(40D8001C): ADD R0, SB, 1CH [data]
12C6p .FIXUP P
12C6p(F770A00F): BL MOD7 [ORS] PROC10
12C7q(40000032): MOV R0, R0, 32H
12C8r .FIXUP D
12C8r(8D000004): LDR SB, MT, MOD0 [ORP]
12C9r(41D80740): ADD R1, SB, 740H ["no TO"]
12CAr(42000006): MOV R2, R0, 6H
12CBs(F7FFED34): BL -4812 [0000H]
NEW(type);t type.formu := ORB.Pointer;v type.sizew := ORG.WordSize;x type.basey := ORB.intType;z
12CCt(80E00004): LDR R0, SP, 4H
12CDt .FIXUP D
12CDt(8D800005): LDR SB, MT, MOD8 [ORB]
12CEt(41D80003): ADD R1, SB, VAR3
12CFt(D77DC80C): BL MT [trap=0, pos=32200]
12D0u(80E00004): LDR R0, SP, 4H
12D1u(80000000): LDR R0, R0, 0H
12D2u(D17DD34C): BLEQ MT [trap=4, pos=32211]
12D3v(41000007): MOV R1, R0, 7H
12D4v(A1000000): STR R1, R0, 0H
12D5w(80E00004): LDR R0, SP, 4H
12D6w(80000000): LDR R0, R0, 0H
12D7w(D17DED4C): BLEQ MT [trap=4, pos=32237]
12D8x(41000004): MOV R1, R0, 4H
12D9x(A1000020): STR R1, R0, 20H
12DAy(80E00004): LDR R0, SP, 4H
12DBy(80000000): LDR R0, R0, 0H
12DCy(D17E084C): BLEQ MT [trap=4, pos=32264]
12DDz .FIXUP D
12DDz(8D800010): LDR SB, MT, MOD8 [ORB]
12DEz(81D00009): LDR R1, SB, VAR9
12DFz(A100001C): STR R1, R0, 1CH
IF sym = ORS.ident THENa
12E0a .FIXUP D
12E0a(8D000003): LDR SB, MT, MOD0 [ORP]
12E1a(80D0001C): LDR R0, SB, 1CH [data]
12E2a(4009001F): SUB R0, R0, 1FH
12E3a(E9000047): BNE 71 [132BH]
obj := ORB.thisObj();b
12E4b .FIXUP P
12E4b(F781001E): BL MOD8 [ORB] PROC16
12E5b(A0E0000C): STR R0, SP, CH
IF obj # NIL THENc
12E6c(80E0000C): LDR R0, SP, CH
12E7c(E1000029): BEQ 41 [1311H]
IF (obj.classd = ORB.Typ)e & (fobj.typeg.formh IN {ORB.Record, ORB.NoTyp})i THENj
12E8d(80E0000C): LDR R0, SP, CH
12E9d(D17E864C): BLEQ MT [trap=4, pos=32390]
12EAe(90000000): LDR R0, R0, 0H
12EBe(40090005): SUB R0, R0, 5H
12ECf(E9000015): BNE 21 [1302H]
12EDg(80E0000C): LDR R0, SP, CH
12EEg(D17E9D4C): BLEQ MT [trap=4, pos=32413]
12EFh(80000010): LDR R0, R0, 10H
12F0h(D17EA24C): BLEQ MT [trap=4, pos=32418]
12F1i(41002200): MOV R1, R0, 2200H
12F2i(80000000): LDR R0, R0, 0H
12F3i(40080001): ADD R0, R0, 1H
12F4i(01130000): ROR R1, R1, R0
12F5j(E800000C): BPL 12 [1302H]
CheckRecLevel(obj.levk)l;m type.basen := obj.typeo
12F6k(80E0000C): LDR R0, SP, CH
12F7k(D17EE54C): BLEQ MT [trap=4, pos=32485]
12F8l(80000004): LDR R0, R0, 4H
12F9m(F7FFFF62): BL -158 [125CH]
12FAn(80E00004): LDR R0, SP, 4H
12FBn(80000000): LDR R0, R0, 0H
12FCn(D17EF14C): BLEQ MT [trap=4, pos=32497]
12FDo(81E0000C): LDR R1, SP, CH
12FEo(D17EFD4C): BLEQ MT [trap=4, pos=32509]
ELSIFp objq.classr = ORB.Mod THENs ORS.Mark("external base type not implemented")t
12FFp(81100010): LDR R1, R1, 10H
1300p(A100001C): STR R1, R0, 1CH
1301q(E700000E): B 14 [1310H]
1302r(80E0000C): LDR R0, SP, CH
1303r(D17F174C): BLEQ MT [trap=4, pos=32535]
1304s(90000000): LDR R0, R0, 0H
1305s(40090008): SUB R0, R0, 8H
1306s(E9000005): BNE 5 [130CH]
1307t .FIXUP D
1307t(8D000027): LDR SB, MT, MOD0 [ORP]
1308t(40D80748): ADD R0, SB, 748H ["external base type not implemented"]
1309t(41000023): MOV R1, R0, 23H
ELSEu ORSv.Mark("no valid base type")w
130Au .FIXUP P
130Au(F7709026): BL MOD7 [ORS] PROC9
130Bv(E7000004): B 4 [1310H]
130Cw .FIXUP D
130Cw(8D000005): LDR SB, MT, MOD0 [ORP]
130Dw(40D8076C): ADD R0, SB, 76CH ["no valid base type"]
130Ew(41000013): MOV R1, R0, 13H
ENDx
130Fx .FIXUP P
130Fx(F7709005): BL MOD7 [ORS] PROC9
ELSE CheckRecLevely(level)z;a (*enter into list of forward references to be fixed in Declarations*)
1310y(E7000016): B 22 [1327H]
1311z .FIXUP D
1311z(8D000005): LDR SB, MT, MOD0 [ORP]
1312z(80D00024): LDR R0, SB, 24H [data]
1313a(F7FFFF48): BL -184 [125CH]
NEW(ptbase);b ORS.CopyId(ptbase.namec);d ptbase.typee := type;f ptbase.nextg := pbsList;h pbsList := ptbase
1314b(40E80010): ADD R0, SP, 10H
1315b .FIXUP D
1315b(8D000004): LDR SB, MT, MOD0 [ORP]
1316b(41D80000): ADD R1, SB, 0H [data]
1317b(D780110C): BL MT [trap=0, pos=32785]
1318c(80E00010): LDR R0, SP, 10H
1319c(D180284C): BLEQ MT [trap=4, pos=32808]
131Ad .FIXUP P
131Ad(F770700B): BL MOD7 [ORS] PROC7
131Be(80E00010): LDR R0, SP, 10H
131Ce(D180364C): BLEQ MT [trap=4, pos=32822]
131Df(81E00004): LDR R1, SP, 4H
131Ef(81100000): LDR R1, R1, 0H
131Ff(A1000020): STR R1, R0, 20H
1320g(80E00010): LDR R0, SP, 10H
1321g(D1804B4C): BLEQ MT [trap=4, pos=32843]
1322h .FIXUP D
1322h(8D00000D): LDR SB, MT, MOD0 [ORP]
1323h(81D00060): LDR R1, SB, 60H [data]
1324h(A1000024): STR R1, R0, 24H
ENDi ;
1325i(80E00010): LDR R0, SP, 10H
1326i(A0D00060): STR R0, SB, 60H
ORS.Get(sym)j
1327j .FIXUP D
1327j(8D000005): LDR SB, MT, MOD0 [ORP]
1328j(40D8001C): ADD R0, SB, 1CH [data]
ELSEk Typel(type.basem)n;o
1329k .FIXUP P
1329k(F770A00F): BL MOD7 [ORS] PROC10
132Al(E700001E): B 30 [1349H]
132Bm(80E00004): LDR R0, SP, 4H
132Cm(80000000): LDR R0, R0, 0H
132Dm(D180A64C): BLEQ MT [trap=4, pos=32934]
132En(4008001C): ADD R0, R0, 1CH
132Fo .FIXUP D
132Fo(8D000008): LDR SB, MT, MOD0 [ORP]
1330o(81D00038): LDR R1, SB, 38H [data]
1331o(D180A85C): BLEQ MT [trap=5, pos=32936]
1332o(D7000001): BL R1
IF (type.basep.formq # ORB.Record)r OR (stype.baset.typobju = NIL)v THENw ORS.Mark("must point to named record")x ENDy ;
1333p(80E00004): LDR R0, SP, 4H
1334p(80000000): LDR R0, R0, 0H
1335p(D180BE4C): BLEQ MT [trap=4, pos=32958]
1336q(8000001C): LDR R0, R0, 1CH
1337q(D180C34C): BLEQ MT [trap=4, pos=32963]
1338r(80000000): LDR R0, R0, 0H
1339r(4009000D): SUB R0, R0, DH
133As(E9000007): BNE 7 [1342H]
133Bt(80E00004): LDR R0, SP, 4H
133Ct(80000000): LDR R0, R0, 0H
133Dt(D180DF4C): BLEQ MT [trap=4, pos=32991]
133Eu(8000001C): LDR R0, R0, 1CH
133Fu(D180E64C): BLEQ MT [trap=4, pos=32998]
1340v(80000018): LDR R0, R0, 18H
1341w(E9000004): BNE 4 [1346H]
1342x .FIXUP D
1342x(8D000013): LDR SB, MT, MOD0 [ORP]
1343x(40D80780): ADD R0, SB, 780H ["must point to named record"]
1344x(4100001B): MOV R1, R0, 1BH
1345y .FIXUP P
1345y(F770901C): BL MOD7 [ORS] PROC9
CheckRecLevel(level)z
1346z .FIXUP D
1346z(8D000004): LDR SB, MT, MOD0 [ORP]
1347z(80D00024): LDR R0, SB, 24H [data]
ENDa
1348a(F7FFFF13): BL -237 [125CH]
ELSIF symb = ORS.procedure THENc
1349b(E700002A): B 42 [1374H]
134Ac .FIXUP D
134Ac(8D000004): LDR SB, MT, MOD0 [ORP]
134Bc(80D0001C): LDR R0, SB, 1CH [data]
134Cc(40090042): SUB R0, R0, 42H
134Dc(E9000022): BNE 34 [1370H]
ORS.Get(sym)d;e ORB.OpenScope;f
134Ed .FIXUP D
134Ed(8D000004): LDR SB, MT, MOD0 [ORP]
134Fd(40D8001C): ADD R0, SB, 1CH [data]
1350e .FIXUP P
1350e(F770A00B): BL MOD7 [ORS] PROC10
1351f .FIXUP P
1351f(F7813001): BL MOD8 [ORB] PROC19
NEW(type);g type.formh := ORB.Proc;i type.sizej := ORG.WordSize;k dmy := 0;l
1352g(80E00004): LDR R0, SP, 4H
1353g .FIXUP D
1353g(8D800005): LDR SB, MT, MOD8 [ORB]
1354g(41D80003): ADD R1, SB, VAR3
1355g(D7819D0C): BL MT [trap=0, pos=33181]
1356h(80E00004): LDR R0, SP, 4H
1357h(80000000): LDR R0, R0, 0H
1358h(D181A74C): BLEQ MT [trap=4, pos=33191]
1359i(4100000A): MOV R1, R0, AH
135Ai(A1000000): STR R1, R0, 0H
135Bj(80E00004): LDR R0, SP, 4H
135Cj(80000000): LDR R0, R0, 0H
135Dj(D181BE4C): BLEQ MT [trap=4, pos=33214]
135Ek(41000004): MOV R1, R0, 4H
135Fk(A1000020): STR R1, R0, 20H
1360l(40000000): MOV R0, R0, 0H
1361l(A0E00008): STR R0, SP, 8H
ProcedureType(type,m dmy)n;o type.dscp := ORB.topScope.nextq;r ORB.CloseScope
1362m(80E00004): LDR R0, SP, 4H
1363m(80000000): LDR R0, R0, 0H
1364n(41E80008): ADD R1, SP, 8H
1365o(F7FFFE0E): BL -498 [1174H]
1366p(80E00004): LDR R0, SP, 4H
1367p(80000000): LDR R0, R0, 0H
1368p(D182024C): BLEQ MT [trap=4, pos=33282]
1369q .FIXUP D
1369q(8D800016): LDR SB, MT, MOD8 [ORB]
136Aq(81D00004): LDR R1, SB, VAR4
136Bq(D182174C): BLEQ MT [trap=4, pos=33303]
136Cr(81100008): LDR R1, R1, 8H
136Dr(A1000014): STR R1, R0, 14H
ELSEs ORSt.Mark("illegal type")u
136Es .FIXUP P
136Es(F781401D): BL MOD8 [ORB] PROC20
136Ft(E7000004): B 4 [1374H]
1370u .FIXUP D
1370u(8D000007): LDR SB, MT, MOD0 [ORP]
1371u(40D8079C): ADD R0, SB, 79CH ["illegal type"]
1372u(4100000D): MOV R1, R0, DH
ENDv
1373v .FIXUP P
1373v(F7709005): BL MOD7 [ORS] PROC9
ENDw Type0;
1374w(8FE00000): LDR LNK, SP, 0H
1375w(4EE80014): ADD SP, SP, 14H
1376w(C700000F): B LNK
PROCEDURE Declarations(VAR varsize: LONGINT);
VAR obj, first: ORB.Object;
x: ORG.Item; tp: ORB.Type; ptbase: PtrBase;
expo: BOOLEAN; id: ORS.Ident;
BEGINx (*sync*) pbsList := NIL;y
1377x(4EE90054): SUB SP, SP, 54H
1378x(AFE00000): STR LNK, SP, 0H
1379x(A0E00004): STR R0, SP, 4H
137Ay(40000000): MOV R0, R0, 0H
137By .FIXUP D
137By(8D00000B): LDR SB, MT, MOD0 [ORP]
137Cy(A0D00060): STR R0, SB, 60H [data]
IF (sym < ORS.const)z & (asym # ORS.end)b & (csym # ORS.return)d THENe ORS.Mark("declaration?")f;g
137Dz(80D0001C): LDR R0, SB, 1CH
137Ez(4009003F): SUB R0, R0, 3FH
137Fa(ED00001B): BGE 27 [139BH]
1380b .FIXUP D
1380b(8D000005): LDR SB, MT, MOD0 [ORP]
1381b(80D0001C): LDR R0, SB, 1CH [data]
1382b(40090035): SUB R0, R0, 35H
1383c(E1000017): BEQ 23 [139BH]
1384d .FIXUP D
1384d(8D000004): LDR SB, MT, MOD0 [ORP]
1385d(80D0001C): LDR R0, SB, 1CH [data]
1386d(4009003A): SUB R0, R0, 3AH
1387e(E1000013): BEQ 19 [139BH]
1388f .FIXUP D
1388f(8D000004): LDR SB, MT, MOD0 [ORP]
1389f(40D807AC): ADD R0, SB, 7ACH ["declaration?"]
138Af(4100000D): MOV R1, R0, DH
138Bg .FIXUP P
138Bg(F7709018): BL MOD7 [ORS] PROC9
REPEAT ORS.Get(sym)h UNTILi (sym >= ORS.const)j OR (ksym = ORS.end)l OR (msym = ORS.return)n
138Ch .FIXUP D
138Ch(8D000004): LDR SB, MT, MOD0 [ORP]
138Dh(40D8001C): ADD R0, SB, 1CH [data]
138Ei .FIXUP P
138Ei(F770A003): BL MOD7 [ORS] PROC10
138Fj .FIXUP D
138Fj(8D000003): LDR SB, MT, MOD0 [ORP]
1390j(80D0001C): LDR R0, SB, 1CH [data]
1391j(4009003F): SUB R0, R0, 3FH
1392k(ED000008): BGE 8 [139BH]
1393l .FIXUP D
1393l(8D000004): LDR SB, MT, MOD0 [ORP]
1394l(80D0001C): LDR R0, SB, 1CH [data]
1395l(40090035): SUB R0, R0, 35H
1396m(E1000004): BEQ 4 [139BH]
1397n .FIXUP D
1397n(8D000004): LDR SB, MT, MOD0 [ORP]
1398n(80D0001C): LDR R0, SB, 1CH [data]
1399n(4009003A): SUB R0, R0, 3AH
ENDo ;
139Ao(E9FFFFF1): BNE -15 [138CH]
IF sym = ORS.const THENp
139Bp .FIXUP D
139Bp(8D000004): LDR SB, MT, MOD0 [ORP]
139Cp(80D0001C): LDR R0, SB, 1CH [data]
139Dp(4009003F): SUB R0, R0, 3FH
139Ep(E9000054): BNE 84 [13F3H]
ORS.Get(sym)q;r
139Fq .FIXUP D
139Fq(8D000004): LDR SB, MT, MOD0 [ORP]
13A0q(40D8001C): ADD R0, SB, 1CH [data]
13A1r .FIXUP P
13A1r(F770A013): BL MOD7 [ORS] PROC10
WHILE sym = ORS.ident DOs
13A2s .FIXUP D
13A2s(8D000003): LDR SB, MT, MOD0 [ORP]
13A3s(80D0001C): LDR R0, SB, 1CH [data]
13A4s(4009001F): SUB R0, R0, 1FH
13A5s(E900004D): BNE 77 [13F3H]
ORS.CopyId(id)t;u ORS.Get(sym)v;w CheckExport(expo)x;y
13A6t(40E80034): ADD R0, SP, 34H
13A7u .FIXUP P
13A7u(F7707006): BL MOD7 [ORS] PROC7
13A8v .FIXUP D
13A8v(8D000006): LDR SB, MT, MOD0 [ORP]
13A9v(40D8001C): ADD R0, SB, 1CH [data]
13AAw .FIXUP P
13AAw(F770A003): BL MOD7 [ORS] PROC10
13ABx(40E80030): ADD R0, SP, 30H
13ACy(F7FFED45): BL -4795 [00F2H]
IF sym = ORS.eql THENz ORS.Get(sym)a ELSEb ORSc.Mark("= ?")d ENDe;
13ADz .FIXUP D
13ADz(8D000005): LDR SB, MT, MOD0 [ORP]
13AEz(80D0001C): LDR R0, SB, 1CH [data]
13AFz(40090009): SUB R0, R0, 9H
13B0z(E9000004): BNE 4 [13B5H]
13B1a .FIXUP D
13B1a(8D000004): LDR SB, MT, MOD0 [ORP]
13B2a(40D8001C): ADD R0, SB, 1CH [data]
13B3b .FIXUP P
13B3b(F770A009): BL MOD7 [ORS] PROC10
13B4c(E7000004): B 4 [13B9H]
13B5d .FIXUP D
13B5d(8D000004): LDR SB, MT, MOD0 [ORP]
13B6d(40D807BC): ADD R0, SB, 7BCH ["= ?"]
13B7d(41000004): MOV R1, R0, 4H
13B8e .FIXUP P
13B8e(F7709005): BL MOD7 [ORS] PROC9
expression(x)f;g
13B9f(40E80010): ADD R0, SP, 10H
13BAf .FIXUP D
13BAf(8D900005): LDR SB, MT, MOD9 [ORG]
13BBf(41D80001): ADD R1, SB, VAR1
13BCg .FIXUP D
13BCg(8D000002): LDR SB, MT, MOD0 [ORP]
13BDg(82D00034): LDR R2, SB, 34H [data]
13BEg(D184CF5C): BLEQ MT [trap=5, pos=33999]
13BFg(D7000002): BL R2
IF (x.type.formh = ORB.String)i & (jx.b = 2)k THENl ORG.StrToChar(x)m ENDn ;
13C0h(80E00014): LDR R0, SP, 14H
13C1h(D184E74C): BLEQ MT [trap=4, pos=34023]
13C2i(80000000): LDR R0, R0, 0H
13C3i(4009000B): SUB R0, R0, BH
13C4j(E9000007): BNE 7 [13CCH]
13C5k(80E0001C): LDR R0, SP, 1CH
13C6k(40090002): SUB R0, R0, 2H
13C7l(E9000004): BNE 4 [13CCH]
13C8m(40E80010): ADD R0, SP, 10H
13C9m .FIXUP D
13C9m(8D90000D): LDR SB, MT, MOD9 [ORG]
13CAm(41D80001): ADD R1, SB, VAR1
13CBn .FIXUP P
13CBn(F791F013): BL MOD9 [ORG] PROC31
ORB.NewObj(obj,o id,p ORB.Const)q;r obj.expos := expo;t
13CCo(40E80008): ADD R0, SP, 8H
13CDp(41E80034): ADD R1, SP, 34H
13CEq(42000001): MOV R2, R0, 1H
13CFr .FIXUP P
13CFr(F780F004): BL MOD8 [ORB] PROC15
13D0s(80E00008): LDR R0, SP, 8H
13D1s(D1854E4C): BLEQ MT [trap=4, pos=34126]
13D2t(91E00030): LDR R1, SP, 30H
13D3t(B1000002): STR R1, R0, 2H
IF x.mode = ORB.Const THENu obj.valv := x.a;w obj.levx := x.b;y obj.typez := x.type
13D4u(80E00010): LDR R0, SP, 10H
13D5u(40090001): SUB R0, R0, 1H
13D6u(E900000D): BNE 13 [13E4H]
13D7v(80E00008): LDR R0, SP, 8H
13D8v(D185824C): BLEQ MT [trap=4, pos=34178]
13D9w(81E00018): LDR R1, SP, 18H
13DAw(A1000034): STR R1, R0, 34H
13DBx(80E00008): LDR R0, SP, 8H
13DCx(D185924C): BLEQ MT [trap=4, pos=34194]
13DDy(81E0001C): LDR R1, SP, 1CH
13DEy(A1000004): STR R1, R0, 4H
13DFz(80E00008): LDR R0, SP, 8H
13E0z(D185A34C): BLEQ MT [trap=4, pos=34211]
ELSEa ORSb.Mark("expression not constant")c;d obj.typee := ORB.intType
13E1a(81E00014): LDR R1, SP, 14H
13E2a(A1000010): STR R1, R0, 10H
13E3b(E7000009): B 9 [13EDH]
13E4c .FIXUP D
13E4c(8D00001B): LDR SB, MT, MOD0 [ORP]
13E5c(40D807C0): ADD R0, SB, 7C0H ["expression not constant"]
13E6c(41000018): MOV R1, R0, 18H
13E7d .FIXUP P
13E7d(F7709018): BL MOD7 [ORS] PROC9
13E8e(80E00008): LDR R0, SP, 8H
13E9e(D185E84C): BLEQ MT [trap=4, pos=34280]
ENDf;
13EAf .FIXUP D
13EAf(8D800006): LDR SB, MT, MOD8 [ORB]
13EBf(81D00009): LDR R1, SB, VAR9
13ECf(A1000010): STR R1, R0, 10H
Check(ORS.semicolon,g "; missing")h
13EDg(40000034): MOV R0, R0, 34H
13EEh .FIXUP D
13EEh(8D000004): LDR SB, MT, MOD0 [ORP]
13EFh(41D807D8): ADD R1, SB, 7D8H ["; missing"]
13F0h(4200000A): MOV R2, R0, AH
ENDi
13F1i(F7FFEC0E): BL -5106 [0000H]
13F2i(E7FFFFAF): B -81 [13A2H]
END ;
IF sym = ORS.type THENj
13F3j .FIXUP D
13F3j(8D000005): LDR SB, MT, MOD0 [ORP]
13F4j(80D0001C): LDR R0, SB, 1CH [data]
13F5j(40090040): SUB R0, R0, 40H
13F6j(E9000081): BNE 129 [1478H]
ORS.Get(sym)k;l
13F7k .FIXUP D
13F7k(8D000004): LDR SB, MT, MOD0 [ORP]
13F8k(40D8001C): ADD R0, SB, 1CH [data]
13F9l .FIXUP P
13F9l(F770A012): BL MOD7 [ORS] PROC10
WHILE sym = ORS.ident DOm
13FAm .FIXUP D
13FAm(8D000003): LDR SB, MT, MOD0 [ORP]
13FBm(80D0001C): LDR R0, SB, 1CH [data]
13FCm(4009001F): SUB R0, R0, 1FH
13FDm(E900007A): BNE 122 [1478H]
ORS.CopyId(id)n;o ORS.Get(sym)p;q CheckExport(expo)r;s
13FEn(40E80034): ADD R0, SP, 34H
13FFo .FIXUP P
13FFo(F7707006): BL MOD7 [ORS] PROC7
1400p .FIXUP D
1400p(8D000006): LDR SB, MT, MOD0 [ORP]
1401p(40D8001C): ADD R0, SB, 1CH [data]
1402q .FIXUP P
1402q(F770A003): BL MOD7 [ORS] PROC10
1403r(40E80030): ADD R0, SP, 30H
1404s(F7FFECED): BL -4883 [00F2H]
IF sym = ORS.eql THENt ORS.Get(sym)u ELSEv ORSw.Mark("=?")x ENDy ;
1405t .FIXUP D
1405t(8D000005): LDR SB, MT, MOD0 [ORP]
1406t(80D0001C): LDR R0, SB, 1CH [data]
1407t(40090009): SUB R0, R0, 9H
1408t(E9000004): BNE 4 [140DH]
1409u .FIXUP D
1409u(8D000004): LDR SB, MT, MOD0 [ORP]
140Au(40D8001C): ADD R0, SB, 1CH [data]
140Bv .FIXUP P
140Bv(F770A009): BL MOD7 [ORS] PROC10
140Cw(E7000004): B 4 [1411H]
140Dx .FIXUP D
140Dx(8D000004): LDR SB, MT, MOD0 [ORP]
140Ex(40D807E4): ADD R0, SB, 7E4H ["=?"]
140Fx(41000003): MOV R1, R0, 3H
1410y .FIXUP P
1410y(F7709005): BL MOD7 [ORS] PROC9
Type(tp)z;a
1411z(40E80028): ADD R0, SP, 28H
1412a .FIXUP D
1412a(8D000005): LDR SB, MT, MOD0 [ORP]
1413a(81D00038): LDR R1, SB, 38H [data]
1414a(D187205C): BLEQ MT [trap=5, pos=34592]
1415a(D7000001): BL R1
ORB.NewObj(obj,b id,c ORB.Typ)d;e obj.typef := tp;g obj.expoh := expo;i obj.levj := level;k
1416b(40E80008): ADD R0, SP, 8H
1417c(41E80034): ADD R1, SP, 34H
1418d(42000005): MOV R2, R0, 5H
1419e .FIXUP P
1419e(F780F009): BL MOD8 [ORB] PROC15
141Af(80E00008): LDR R0, SP, 8H
141Bf(D1874F4C): BLEQ MT [trap=4, pos=34639]
141Cg(81E00028): LDR R1, SP, 28H
141Dg(A1000010): STR R1, R0, 10H
141Eh(80E00008): LDR R0, SP, 8H
141Fh(D1875F4C): BLEQ MT [trap=4, pos=34655]
1420i(91E00030): LDR R1, SP, 30H
1421i(B1000002): STR R1, R0, 2H
1422j(80E00008): LDR R0, SP, 8H
1423j(D187704C): BLEQ MT [trap=4, pos=34672]
1424k .FIXUP D
1424k(8D000012): LDR SB, MT, MOD0 [ORP]
1425k(81D00024): LDR R1, SB, 24H [data]
1426k(A1000004): STR R1, R0, 4H
IF tp.typobjl = NIL THENm tp.typobjn := obj ENDo ;
1427l(80E00028): LDR R0, SP, 28H
1428l(D1878F4C): BLEQ MT [trap=4, pos=34703]
1429m(80000018): LDR R0, R0, 18H
142Am(E9000004): BNE 4 [142FH]
142Bn(80E00028): LDR R0, SP, 28H
142Cn(D187A44C): BLEQ MT [trap=4, pos=34724]
142Do(81E00008): LDR R1, SP, 8H
142Eo(A1000018): STR R1, R0, 18H
IF expo & (pobj.typeq.formr = ORB.Record)s THENt obj.exnou := exno;v INC(exno) ELSEw objx.exnoy := 0 ENDz ;
142Fp(90E00030): LDR R0, SP, 30H
1430p(E1000011): BEQ 17 [1442H]
1431q(80E00008): LDR R0, SP, 8H
1432q(D187CD4C): BLEQ MT [trap=4, pos=34765]
1433r(80000010): LDR R0, R0, 10H
1434r(D187D24C): BLEQ MT [trap=4, pos=34770]
1435s(80000000): LDR R0, R0, 0H
1436s(4009000D): SUB R0, R0, DH
1437t(E900000A): BNE 10 [1442H]
1438u(80E00008): LDR R0, SP, 8H
1439u(D187EE4C): BLEQ MT [trap=4, pos=34798]
143Av .FIXUP D
143Av(8D000016): LDR SB, MT, MOD0 [ORP]
143Bv(81D00028): LDR R1, SB, 28H [data]
143Cv(B1000001): STR R1, R0, 1H
143Dw(40D80028): ADD R0, SB, 28H
143Ew(81000000): LDR R1, R0, 0H
143Fw(41180001): ADD R1, R1, 1H
1440w(A1000000): STR R1, R0, 0H
1441x(E7000004): B 4 [1446H]
1442y(80E00008): LDR R0, SP, 8H
1443y(D1880F4C): BLEQ MT [trap=4, pos=34831]
1444z(41000000): MOV R1, R0, 0H
1445z(B1000001): STR R1, R0, 1H
IF tp.forma = ORB.Record THENb
1446a(80E00028): LDR R0, SP, 28H
1447a(D1882D4C): BLEQ MT [trap=4, pos=34861]
1448b(80000000): LDR R0, R0, 0H
1449b(4009000D): SUB R0, R0, DH
144Ab(E9000027): BNE 39 [1472H]
ptbase := pbsList;c (*check whether this is base of a pointer type; search and fixup*)
144Bc .FIXUP D
144Bc(8D000011): LDR SB, MT, MOD0 [ORP]
144Cc(80D00060): LDR R0, SB, 60H [data]
144Dc(A0E0002C): STR R0, SP, 2CH
WHILE ptbase # NIL DOd
144Ed(80E0002C): LDR R0, SP, 2CH
144Fd(E100001B): BEQ 27 [146BH]
IF obj.namee = ptbase.namef THENg ptbase.typeh.basei := obj.typej ENDk ;
1450e(80E00008): LDR R0, SP, 8H
1451e(D188D84C): BLEQ MT [trap=4, pos=35032]
1452f(81E0002C): LDR R1, SP, 2CH
1453f(D188E64C): BLEQ MT [trap=4, pos=35046]
1454g(40080014): ADD R0, R0, 14H
1455g(92000000): LDR R2, R0, 0H
1456g(40080001): ADD R0, R0, 1H
1457g(93100000): LDR R3, R1, 0H
1458g(41180001): ADD R1, R1, 1H
1459g(04290003): SUB R4, R2, R3
145Ag(E9000002): BNE 2 [145DH]
145Bg(44290000): SUB R4, R2, 0H
145Cg(E9FFFFF8): BNE -8 [1455H]
145Dg(E9000008): BNE 8 [1466H]
145Eh(80E0002C): LDR R0, SP, 2CH
145Fh(D188F74C): BLEQ MT [trap=4, pos=35063]
1460i(80000020): LDR R0, R0, 20H
1461i(D188FC4C): BLEQ MT [trap=4, pos=35068]
1462j(81E00008): LDR R1, SP, 8H
1463j(D189084C): BLEQ MT [trap=4, pos=35080]
1464k(81100010): LDR R1, R1, 10H
1465k(A100001C): STR R1, R0, 1CH
ptbase := ptbase.nextl
1466l(80E0002C): LDR R0, SP, 2CH
1467l(D189304C): BLEQ MT [trap=4, pos=35120]
ENDm ;
1468m(80000024): LDR R0, R0, 24H
1469m(A0E0002C): STR R0, SP, 2CH
146Am(E7FFFFE3): B -29 [144EH]
IF level = 0 THENn ORG.BuildTD(tp,o dc)p ENDq (*type descriptor; len used as its address*)
146Bn .FIXUP D
146Bn(8D000020): LDR SB, MT, MOD0 [ORP]
146Cn(80D00024): LDR R0, SB, 24H [data]
146Dn(E9000004): BNE 4 [1472H]
146Eo(80E00028): LDR R0, SP, 28H
146Fp .FIXUP D
146Fp(8D000004): LDR SB, MT, MOD0 [ORP]
1470p(41D80020): ADD R1, SB, 20H [data]
1471q .FIXUP P
1471q(F790C058): BL MOD9 [ORG] PROC12
END ;
Check(ORS.semicolon,r "; missing")s
1472r(40000034): MOV R0, R0, 34H
1473s .FIXUP D
1473s(8D000004): LDR SB, MT, MOD0 [ORP]
1474s(41D807E8): ADD R1, SB, 7E8H ["; missing"]
1475s(4200000A): MOV R2, R0, AH
ENDt
1476t(F7FFEB89): BL -5239 [0000H]
1477t(E7FFFF82): B -126 [13FAH]
END ;
IF sym = ORS.var THENu
1478u .FIXUP D
1478u(8D000005): LDR SB, MT, MOD0 [ORP]
1479u(80D0001C): LDR R0, SB, 1CH [data]
147Au(40090041): SUB R0, R0, 41H
147Bu(E900004F): BNE 79 [14CBH]
ORS.Get(sym)v;w
147Cv .FIXUP D
147Cv(8D000004): LDR SB, MT, MOD0 [ORP]
147Dv(40D8001C): ADD R0, SB, 1CH [data]
147Ew .FIXUP P
147Ew(F770A00D): BL MOD7 [ORS] PROC10
WHILE sym = ORS.ident DOx
147Fx .FIXUP D
147Fx(8D000003): LDR SB, MT, MOD0 [ORP]
1480x(80D0001C): LDR R0, SB, 1CH [data]
1481x(4009001F): SUB R0, R0, 1FH
1482x(E9000048): BNE 72 [14CBH]
IdentList(ORB.Var,y first)z;a Type(tp)b;c
1483y(40000002): MOV R0, R0, 2H
1484z(41E8000C): ADD R1, SP, CH
1485a(F7FFFA87): BL -1401 [0F0DH]
1486b(40E80028): ADD R0, SP, 28H
1487c .FIXUP D
1487c(8D000008): LDR SB, MT, MOD0 [ORP]
1488c(81D00038): LDR R1, SB, 38H [data]
1489c(D18A6A5C): BLEQ MT [trap=5, pos=35434]
148Ac(D7000001): BL R1
obj := first;d
148Bd(80E0000C): LDR R0, SP, CH
148Cd(A0E00008): STR R0, SP, 8H
WHILE obj # NIL DOe
148De(80E00008): LDR R0, SP, 8H
148Ee(E1000036): BEQ 54 [14C5H]
obj.typef := tp;g obj.levh := level;i
148Ff(80E00008): LDR R0, SP, 8H
1490f(D18AAE4C): BLEQ MT [trap=4, pos=35502]
1491g(81E00028): LDR R1, SP, 28H
1492g(A1000010): STR R1, R0, 10H
1493h(80E00008): LDR R0, SP, 8H
1494h(D18ABD4C): BLEQ MT [trap=4, pos=35517]
1495i .FIXUP D
1495i(8D00000E): LDR SB, MT, MOD0 [ORP]
1496i(81D00024): LDR R1, SB, 24H [data]
1497i(A1000004): STR R1, R0, 4H
IF tp.sizej > 1 THENk varsize := (varsize + 3)l DIV 4 *m 4 (*align*) ENDn ;
1498j(80E00028): LDR R0, SP, 28H
1499j(D18ADC4C): BLEQ MT [trap=4, pos=35548]
149Ak(80000020): LDR R0, R0, 20H
149Bk(40090001): SUB R0, R0, 1H
149Ck(E6000007): BLE 7 [14A4H]
149Dl(80E00004): LDR R0, SP, 4H
149El(80000000): LDR R0, R0, 0H
149Fl(40080003): ADD R0, R0, 3H
14A0m(40020002): ASR R0, R0, 2H
14A1n(40010002): LSL R0, R0, 2H
14A2n(81E00004): LDR R1, SP, 4H
14A3n(A0100000): STR R0, R1, 0H
obj.valo := varsize;p varsize := varsize + obj.typeq.sizer;s
14A4o(80E00008): LDR R0, SP, 8H
14A5o(D18B2A4C): BLEQ MT [trap=4, pos=35626]
14A6p(81E00004): LDR R1, SP, 4H
14A7p(81100000): LDR R1, R1, 0H
14A8p(A1000034): STR R1, R0, 34H
14A9q(80E00008): LDR R0, SP, 8H
14AAq(D18B544C): BLEQ MT [trap=4, pos=35668]
14ABr(80000010): LDR R0, R0, 10H
14ACr(D18B594C): BLEQ MT [trap=4, pos=35673]
14ADs(81E00004): LDR R1, SP, 4H
14AEs(81100000): LDR R1, R1, 0H
14AFs(80000020): LDR R0, R0, 20H
14B0s(00180000): ADD R0, R1, R0
14B1s(81E00004): LDR R1, SP, 4H
14B2s(A0100000): STR R0, R1, 0H
IF obj.expot THENu obj.exnov := exno;w INC(exno) ENDx ;
14B3t(80E00008): LDR R0, SP, 8H
14B4t(D18B704C): BLEQ MT [trap=4, pos=35696]
14B5u(90000002): LDR R0, R0, 2H
14B6u(E1000009): BEQ 9 [14C0H]
14B7v(80E00008): LDR R0, SP, 8H
14B8v(D18B7E4C): BLEQ MT [trap=4, pos=35710]
14B9w .FIXUP D
14B9w(8D000024): LDR SB, MT, MOD0 [ORP]
14BAw(81D00028): LDR R1, SB, 28H [data]
14BBw(B1000001): STR R1, R0, 1H
14BCx(40D80028): ADD R0, SB, 28H
14BDx(81000000): LDR R1, R0, 0H
14BEx(41180001): ADD R1, R1, 1H
14BFx(A1000000): STR R1, R0, 0H
obj := obj.nexty
14C0y(80E00008): LDR R0, SP, 8H
14C1y(D18BB14C): BLEQ MT [trap=4, pos=35761]
ENDz ;
14C2z(80000008): LDR R0, R0, 8H
14C3z(A0E00008): STR R0, SP, 8H
14C4z(E7FFFFC8): B -56 [148DH]
Check(ORS.semicolon,a "; missing")b
14C5a(40000034): MOV R0, R0, 34H
14C6b .FIXUP D
14C6b(8D00000D): LDR SB, MT, MOD0 [ORP]
14C7b(41D807F4): ADD R1, SB, 7F4H ["; missing"]
14C8b(4200000A): MOV R2, R0, AH
ENDc
14C9c(F7FFEB36): BL -5322 [0000H]
14CAc(E7FFFFB4): B -76 [147FH]
END ;
varsize := (varsize + 3)d DIV 4 *e 4;f
14CBd(80E00004): LDR R0, SP, 4H
14CCd(80000000): LDR R0, R0, 0H
14CDd(40080003): ADD R0, R0, 3H
14CEe(40020002): ASR R0, R0, 2H
14CFf(40010002): LSL R0, R0, 2H
14D0f(81E00004): LDR R1, SP, 4H
14D1f(A0100000): STR R0, R1, 0H
ptbase := pbsList;g
14D2g .FIXUP D
14D2g(8D00000C): LDR SB, MT, MOD0 [ORP]
14D3g(80D00060): LDR R0, SB, 60H [data]
14D4g(A0E0002C): STR R0, SP, 2CH
WHILE ptbase # NIL DOh
14D5h(80E0002C): LDR R0, SP, 2CH
14D6h(E1000012): BEQ 18 [14E9H]
IF ptbase.typei.basej.formk = ORB.Int THENl ORS.Mark("undefined pointer base of")m ENDn ;
14D7i(80E0002C): LDR R0, SP, 2CH
14D8i(D18C6B4C): BLEQ MT [trap=4, pos=35947]
14D9j(80000020): LDR R0, R0, 20H
14DAj(D18C704C): BLEQ MT [trap=4, pos=35952]
14DBk(8000001C): LDR R0, R0, 1CH
14DCk(D18C754C): BLEQ MT [trap=4, pos=35957]
14DDl(80000000): LDR R0, R0, 0H
14DEl(40090004): SUB R0, R0, 4H
14DFl(E9000004): BNE 4 [14E4H]
14E0m .FIXUP D
14E0m(8D00000E): LDR SB, MT, MOD0 [ORP]
14E1m(40D80800): ADD R0, SB, 800H ["undefined pointer base of"]
14E2m(4100001A): MOV R1, R0, 1AH
14E3n .FIXUP P
14E3n(F7709065): BL MOD7 [ORS] PROC9
ptbase := ptbase.nexto
14E4o(80E0002C): LDR R0, SP, 2CH
14E5o(D18CCC4C): BLEQ MT [trap=4, pos=36044]
ENDp ;
14E6p(80000024): LDR R0, R0, 24H
14E7p(A0E0002C): STR R0, SP, 2CH
14E8p(E7FFFFEC): B -20 [14D5H]
IF (sym >= ORS.const)q & (rsym <= ORS.var)s THENt ORS.Mark("declaration in bad order")u ENDv
14E9q .FIXUP D
14E9q(8D000009): LDR SB, MT, MOD0 [ORP]
14EAq(80D0001C): LDR R0, SB, 1CH [data]
14EBq(4009003F): SUB R0, R0, 3FH
14ECr(E5000008): BLT 8 [14F5H]
14EDs .FIXUP D
14EDs(8D000004): LDR SB, MT, MOD0 [ORP]
14EEs(80D0001C): LDR R0, SB, 1CH [data]
14EFs(40090041): SUB R0, R0, 41H
14F0t(EE000004): BGT 4 [14F5H]
14F1u .FIXUP D
14F1u(8D000004): LDR SB, MT, MOD0 [ORP]
14F2u(40D8081C): ADD R0, SB, 81CH ["declaration in bad order"]
14F3u(41000019): MOV R1, R0, 19H
14F4v .FIXUP P
14F4v(F7709011): BL MOD7 [ORS] PROC9
ENDw Declarations;
14F5w(8FE00000): LDR LNK, SP, 0H
14F6w(4EE80054): ADD SP, SP, 54H
14F7w(C700000F): B LNK
PROCEDURE ProcedureDecl;
VAR proc: ORB.Object;
type: ORB.Type;
procid: ORS.Ident;
x: ORG.Item;
locblksize, parblksize, L: LONGINT;
int: BOOLEAN;
BEGINx (* ProcedureDecl *) int := FALSE;y ORS.Get(sym)z;a
14F8x(4EE90054): SUB SP, SP, 54H
14F9x(AFE00000): STR LNK, SP, 0H
14FAy(40000000): MOV R0, R0, 0H
14FBy(B0E00050): STR R0, SP, 50H
14FCz .FIXUP D
14FCz(8D00000B): LDR SB, MT, MOD0 [ORP]
14FDz(40D8001C): ADD R0, SB, 1CH [data]
14FEa .FIXUP P
14FEa(F770A00A): BL MOD7 [ORS] PROC10
IF sym = ORS.times THENb ORS.Get(sym)c;d int := TRUE ENDe ;
14FFb .FIXUP D
14FFb(8D000003): LDR SB, MT, MOD0 [ORP]
1500b(80D0001C): LDR R0, SB, 1CH [data]
1501b(40090001): SUB R0, R0, 1H
1502b(E9000005): BNE 5 [1508H]
1503c .FIXUP D
1503c(8D000004): LDR SB, MT, MOD0 [ORP]
1504c(40D8001C): ADD R0, SB, 1CH [data]
1505d .FIXUP P
1505d(F770A007): BL MOD7 [ORS] PROC10
1506e(40000001): MOV R0, R0, 1H
1507e(B0E00050): STR R0, SP, 50H
IF sym = ORS.ident THENf
1508f .FIXUP D
1508f(8D000005): LDR SB, MT, MOD0 [ORP]
1509f(80D0001C): LDR R0, SB, 1CH [data]
150Af(4009001F): SUB R0, R0, 1FH
150Bf(E90000F6): BNE 246 [1602H]
ORS.CopyId(procid)g;h ORS.Get(sym)i;j
150Cg(40E8000C): ADD R0, SP, CH
150Dh .FIXUP P
150Dh(F7707008): BL MOD7 [ORS] PROC7
150Ei .FIXUP D
150Ei(8D000006): LDR SB, MT, MOD0 [ORP]
150Fi(40D8001C): ADD R0, SB, 1CH [data]
1510j .FIXUP P
1510j(F770A003): BL MOD7 [ORS] PROC10
ORB.NewObj(proc,k ORS.id,l ORB.Const)m;n parblksize := 4;o
1511k(40E80004): ADD R0, SP, 4H
1512l .FIXUP D
1512l(8D700004): LDR SB, MT, MOD7 [ORS]
1513l(41D80004): ADD R1, SB, VAR4
1514m(42000001): MOV R2, R0, 1H
1515n .FIXUP P
1515n(F780F005): BL MOD8 [ORB] PROC15
1516o(40000004): MOV R0, R0, 4H
1517o(A0E00048): STR R0, SP, 48H
NEW(type);p type.formq := ORB.Proc;r type.sizes := ORG.WordSize;t proc.typeu := type;v
1518p(40E80008): ADD R0, SP, 8H
1519p .FIXUP D
1519p(8D800007): LDR SB, MT, MOD8 [ORB]
151Ap(41D80003): ADD R1, SB, VAR3
151Bp(D78F000C): BL MT [trap=0, pos=36608]
151Cq(80E00008): LDR R0, SP, 8H
151Dq(D18F0A4C): BLEQ MT [trap=4, pos=36618]
151Er(4100000A): MOV R1, R0, AH
151Fr(A1000000): STR R1, R0, 0H
1520s(80E00008): LDR R0, SP, 8H
1521s(D18F214C): BLEQ MT [trap=4, pos=36641]
1522t(41000004): MOV R1, R0, 4H
1523t(A1000020): STR R1, R0, 20H
1524u(80E00004): LDR R0, SP, 4H
1525u(D18F3C4C): BLEQ MT [trap=4, pos=36668]
1526v(81E00008): LDR R1, SP, 8H
1527v(A1000010): STR R1, R0, 10H
CheckExport(proc.expow)x;y
1528w(80E00004): LDR R0, SP, 4H
1529w(D18F614C): BLEQ MT [trap=4, pos=36705]
152Ax(40080002): ADD R0, R0, 2H
152By(F7FFEBC6): BL -5178 [00F2H]
IF proc.expoz THENa proc.exnob := exno;c INC(exno) ENDd ;
152Cz(80E00004): LDR R0, SP, 4H
152Dz(D18F764C): BLEQ MT [trap=4, pos=36726]
152Ea(90000002): LDR R0, R0, 2H
152Fa(E1000009): BEQ 9 [1539H]
1530b(80E00004): LDR R0, SP, 4H
1531b(D18F854C): BLEQ MT [trap=4, pos=36741]
1532c .FIXUP D
1532c(8D000019): LDR SB, MT, MOD0 [ORP]
1533c(81D00028): LDR R1, SB, 28H [data]
1534c(B1000001): STR R1, R0, 1H
1535d(40D80028): ADD R0, SB, 28H
1536d(81000000): LDR R1, R0, 0H
1537d(41180001): ADD R1, R1, 1H
1538d(A1000000): STR R1, R0, 0H
ORB.OpenScope;e INC(level);f proc.valg := -1;h type.basei := ORB.noType;j
1539e .FIXUP P
1539e(F7813024): BL MOD8 [ORB] PROC19
153Af .FIXUP D
153Af(8D000008): LDR SB, MT, MOD0 [ORP]
153Bf(40D80024): ADD R0, SB, 24H [data]
153Cf(81000000): LDR R1, R0, 0H
153Df(41180001): ADD R1, R1, 1H
153Ef(A1000000): STR R1, R0, 0H
153Fg(80E00004): LDR R0, SP, 4H
1540g(D18FC84C): BLEQ MT [trap=4, pos=36808]
1541h(5100FFFF): MOV R1, R0, FFFFFFFFH
1542h(A1000034): STR R1, R0, 34H
1543i(80E00008): LDR R0, SP, 8H
1544i(D18FD94C): BLEQ MT [trap=4, pos=36825]
1545j .FIXUP D
1545j(8D80000B): LDR SB, MT, MOD8 [ORB]
1546j(81D0000D): LDR R1, SB, VAR13
1547j(A100001C): STR R1, R0, 1CH
ProcedureType(type,k parblksize)l;m (*formal parameter list*)
1548k(80E00008): LDR R0, SP, 8H
1549l(41E80048): ADD R1, SP, 48H
154Am(F7FFFC29): BL -983 [1174H]
Check(ORS.semicolon,n "no ;")o;p locblksize := parblksize;q
154Bn(40000034): MOV R0, R0, 34H
154Co .FIXUP D
154Co(8D000007): LDR SB, MT, MOD0 [ORP]
154Do(41D80838): ADD R1, SB, 838H ["no ;"]
154Eo(42000005): MOV R2, R0, 5H
154Fp(F7FFEAB0): BL -5456 [0000H]
1550q(80E00048): LDR R0, SP, 48H
1551q(A0E00044): STR R0, SP, 44H
Declarations(locblksize)r;s
1552r(40E80044): ADD R0, SP, 44H
1553s(F7FFFE23): BL -477 [1377H]
proc.valt := ORG.Here()u *v 4;w proc.typex.dscy := ORB.topScope.nextz;a
1554t(80E00004): LDR R0, SP, 4H
1555t(D190984C): BLEQ MT [trap=4, pos=37016]
1556u(4EE90004): SUB SP, SP, 4H
1557u(A0E00000): STR R0, SP, 0H
1558v .FIXUP P
1558v(F792A01F): BL MOD9 [ORG] PROC42
1559v(01000000): MOV R1, R0, R0
155Av(80E00000): LDR R0, SP, 0H
155Bv(4EE80004): ADD SP, SP, 4H
155Cw(41110002): LSL R1, R1, 2H
155Dw(A1000034): STR R1, R0, 34H
155Ex(80E00004): LDR R0, SP, 4H
155Fx(D190B54C): BLEQ MT [trap=4, pos=37045]
1560y(80000010): LDR R0, R0, 10H
1561y(D190B94C): BLEQ MT [trap=4, pos=37049]
1562z .FIXUP D
1562z(8D800016): LDR SB, MT, MOD8 [ORB]
1563z(81D00004): LDR R1, SB, VAR4
1564z(D190CE4C): BLEQ MT [trap=4, pos=37070]
1565a(81100008): LDR R1, R1, 8H
1566a(A1000014): STR R1, R0, 14H
IF sym = ORS.procedure THENb
1567b .FIXUP D
1567b(8D000005): LDR SB, MT, MOD0 [ORP]
1568b(80D0001C): LDR R0, SB, 1CH [data]
1569b(40090042): SUB R0, R0, 42H
156Ab(E9000023): BNE 35 [158EH]
L := 0;c ORG.FJump(L)d;e
156Bc(40000000): MOV R0, R0, 0H
156Cc(A0E0004C): STR R0, SP, 4CH
156Dd(40E8004C): ADD R0, SP, 4CH
156Ee .FIXUP P
156Ee(F792B016): BL MOD9 [ORG] PROC43
REPEAT ProcedureDecl;f Check(ORS.semicolon,g "no ;")h UNTILi sym # ORS.procedure;j
156Ff(F7FFFF88): BL -120 [14F8H]
1570g(40000034): MOV R0, R0, 34H
1571h .FIXUP D
1571h(8D00000A): LDR SB, MT, MOD0 [ORP]
1572h(41D80840): ADD R1, SB, 840H ["no ;"]
1573h(42000005): MOV R2, R0, 5H
1574i(F7FFEA8B): BL -5493 [0000H]
1575j .FIXUP D
1575j(8D000004): LDR SB, MT, MOD0 [ORP]
1576j(80D0001C): LDR R0, SB, 1CH [data]
1577j(40090042): SUB R0, R0, 42H
1578j(E1FFFFF6): BEQ -10 [156FH]
ORG.FixLink(L)k;l proc.valm := ORG.Here()n *o 4;p proc.typeq.dscr := ORB.topScope.nexts
1579k(80E0004C): LDR R0, SP, 4CH
157Al .FIXUP P
157Al(F790400C): BL MOD9 [ORG] PROC4
157Bm(80E00004): LDR R0, SP, 4H
157Cm(D191864C): BLEQ MT [trap=4, pos=37254]
157Dn(4EE90004): SUB SP, SP, 4H
157En(A0E00000): STR R0, SP, 0H
157Fo .FIXUP P
157Fo(F792A005): BL MOD9 [ORG] PROC42
1580o(01000000): MOV R1, R0, R0
1581o(80E00000): LDR R0, SP, 0H
1582o(4EE80004): ADD SP, SP, 4H
1583p(41110002): LSL R1, R1, 2H
1584p(A1000034): STR R1, R0, 34H
1585q(80E00004): LDR R0, SP, 4H
1586q(D191A34C): BLEQ MT [trap=4, pos=37283]
1587r(80000010): LDR R0, R0, 10H
1588r(D191A74C): BLEQ MT [trap=4, pos=37287]
1589s .FIXUP D
1589s(8D800014): LDR SB, MT, MOD8 [ORB]
158As(81D00004): LDR R1, SB, VAR4
158Bs(D191BC4C): BLEQ MT [trap=4, pos=37308]
ENDt ;
158Ct(81100008): LDR R1, R1, 8H
158Dt(A1000014): STR R1, R0, 14H
ORG.Enter(parblksize,u locblksize,v int)w;x
158Eu(80E00048): LDR R0, SP, 48H
158Fv(81E00044): LDR R1, SP, 44H
1590w(92E00050): LDR R2, SP, 50H
1591x .FIXUP P
1591x(F7932012): BL MOD9 [ORG] PROC50
IF sym = ORS.begin THENy ORS.Get(sym)z;a StatSequence ENDb ;
1592y .FIXUP D
1592y(8D000009): LDR SB, MT, MOD0 [ORP]
1593y(80D0001C): LDR R0, SB, 1CH [data]
1594y(40090043): SUB R0, R0, 43H
1595y(E9000004): BNE 4 [159AH]
1596z .FIXUP D
1596z(8D000004): LDR SB, MT, MOD0 [ORP]
1597z(40D8001C): ADD R0, SB, 1CH [data]
1598a .FIXUP P
1598a(F770A007): BL MOD7 [ORS] PROC10
1599b(F7FFF63E): BL -2498 [0BD8H]
IF sym = ORS.return THENc
159Ac .FIXUP D
159Ac(8D000004): LDR SB, MT, MOD0 [ORP]
159Bc(80D0001C): LDR R0, SB, 1CH [data]
159Cc(4009003A): SUB R0, R0, 3AH
159Dc(E9000023): BNE 35 [15C1H]
ORS.Get(sym)d;e expression(x)f;g
159Ed .FIXUP D
159Ed(8D000004): LDR SB, MT, MOD0 [ORP]
159Fd(40D8001C): ADD R0, SB, 1CH [data]
15A0e .FIXUP P
15A0e(F770A008): BL MOD7 [ORS] PROC10
15A1f(40E8002C): ADD R0, SP, 2CH
15A2f .FIXUP D
15A2f(8D900004): LDR SB, MT, MOD9 [ORG]
15A3f(41D80001): ADD R1, SB, VAR1
15A4g .FIXUP D
15A4g(8D000002): LDR SB, MT, MOD0 [ORP]
15A5g(82D00034): LDR R2, SB, 34H [data]
15A6g(D192795C): BLEQ MT [trap=5, pos=37497]
15A7g(D7000002): BL R2
IF type.baseh = ORB.noType THENi ORS.Mark("this is not a function")j
15A8h(80E00008): LDR R0, SP, 8H
15A9h(D1928E4C): BLEQ MT [trap=4, pos=37518]
15AAi(8000001C): LDR R0, R0, 1CH
15ABi .FIXUP D
15ABi(8D800007): LDR SB, MT, MOD8 [ORB]
15ACi(81D0000D): LDR R1, SB, VAR13
15ADi(00090001): SUB R0, R0, R1
15AEi(E9000005): BNE 5 [15B4H]
15AFj .FIXUP D
15AFj(8D000004): LDR SB, MT, MOD0 [ORP]
15B0j(40D80848): ADD R0, SB, 848H ["this is not a function"]
15B1j(41000017): MOV R1, R0, 17H
ELSIFk ~lCompTypes(type.basem,n x.type,o FALSE)p THENq ORS.Mark("wrong result type")r
15B2k .FIXUP P
15B2k(F7709012): BL MOD7 [ORS] PROC9
15B3l(E700000C): B 12 [15C0H]
15B4m(80E00008): LDR R0, SP, 8H
15B5m(D192E64C): BLEQ MT [trap=4, pos=37606]
15B6n(8000001C): LDR R0, R0, 1CH
15B7o(81E00030): LDR R1, SP, 30H
15B8p(42000000): MOV R2, R0, 0H
15B9q(F7FFED56): BL -4778 [0310H]
15BAq(40090000): SUB R0, R0, 0H
15BBq(E9000004): BNE 4 [15C0H]
15BCr .FIXUP D
15BCr(8D00000D): LDR SB, MT, MOD0 [ORP]
15BDr(40D80860): ADD R0, SB, 860H ["wrong result type"]
15BEr(41000012): MOV R1, R0, 12H
ENDs
15BFs .FIXUP P
15BFs(F770900D): BL MOD7 [ORS] PROC9
ELSIF typet.baseu.formv # ORB.NoTyp THENw
15C0t(E7000010): B 16 [15D1H]
15C1u(80E00008): LDR R0, SP, 8H
15C2u(D1933B4C): BLEQ MT [trap=4, pos=37691]
15C3v(8000001C): LDR R0, R0, 1CH
15C4v(D193404C): BLEQ MT [trap=4, pos=37696]
15C5w(80000000): LDR R0, R0, 0H
15C6w(40090009): SUB R0, R0, 9H
15C7w(E1000009): BEQ 9 [15D1H]
ORS.Mark("function without result")x;y type.basez := ORB.noType
15C8x .FIXUP D
15C8x(8D00000C): LDR SB, MT, MOD0 [ORP]
15C9x(40D80874): ADD R0, SB, 874H ["function without result"]
15CAx(41000018): MOV R1, R0, 18H
15CBy .FIXUP P
15CBy(F770900C): BL MOD7 [ORS] PROC9
15CCz(80E00008): LDR R0, SP, 8H
15CDz(D193884C): BLEQ MT [trap=4, pos=37768]
ENDa ;
15CEa .FIXUP D
15CEa(8D800006): LDR SB, MT, MOD8 [ORB]
15CFa(81D0000D): LDR R1, SB, VAR13
15D0a(A100001C): STR R1, R0, 1CH
ORG.Return(type.baseb.formc,d x,e locblksize,f int)g;h
15D1b(80E00008): LDR R0, SP, 8H
15D2b(D193BD4C): BLEQ MT [trap=4, pos=37821]
15D3c(8000001C): LDR R0, R0, 1CH
15D4c(D193C24C): BLEQ MT [trap=4, pos=37826]
15D5d(80000000): LDR R0, R0, 0H
15D6e(41E8002C): ADD R1, SP, 2CH
15D7e .FIXUP D
15D7e(8D900009): LDR SB, MT, MOD9 [ORG]
15D8e(42D80001): ADD R2, SB, VAR1
15D9f(83E00044): LDR R3, SP, 44H
15DAg(94E00050): LDR R4, SP, 50H
15DBh .FIXUP P
15DBh(F7933010): BL MOD9 [ORG] PROC51
ORB.CloseScope;i DEC(level);j Check(ORS.end,k "no END")l;m
15DCi .FIXUP P
15DCi(F7814001): BL MOD8 [ORB] PROC20
15DDj .FIXUP D
15DDj(8D000006): LDR SB, MT, MOD0 [ORP]
15DEj(40D80024): ADD R0, SB, 24H [data]
15DFj(81000000): LDR R1, R0, 0H
15E0j(41190001): SUB R1, R1, 1H
15E1j(A1000000): STR R1, R0, 0H
15E2k(40000035): MOV R0, R0, 35H
15E3l(41D8088C): ADD R1, SB, 88CH
15E4l(42000007): MOV R2, R0, 7H
15E5m(F7FFEA1A): BL -5606 [0000H]
IF sym = ORS.ident THENn
15E6n .FIXUP D
15E6n(8D000009): LDR SB, MT, MOD0 [ORP]
15E7n(80D0001C): LDR R0, SB, 1CH [data]
15E8n(4009001F): SUB R0, R0, 1FH
15E9n(E9000014): BNE 20 [15FEH]
IF ORS.id # procid THENo ORS.Mark("no match")p ENDq ;
15EAo .FIXUP D
15EAo(8D700004): LDR SB, MT, MOD7 [ORS]
15EBo(40D80004): ADD R0, SB, VAR4
15ECo(41E8000C): ADD R1, SP, CH
15EDo(92000000): LDR R2, R0, 0H
15EEo(40080001): ADD R0, R0, 1H
15EFo(93100000): LDR R3, R1, 0H
15F0o(41180001): ADD R1, R1, 1H
15F1o(04290003): SUB R4, R2, R3
15F2o(E9000002): BNE 2 [15F5H]
15F3o(44290000): SUB R4, R2, 0H
15F4o(E9FFFFF8): BNE -8 [15EDH]
15F5o(E1000004): BEQ 4 [15FAH]
15F6p .FIXUP D
15F6p(8D00000C): LDR SB, MT, MOD0 [ORP]
15F7p(40D80894): ADD R0, SB, 894H ["no match"]
15F8p(41000009): MOV R1, R0, 9H
15F9q .FIXUP P
15F9q(F770901D): BL MOD7 [ORS] PROC9
ORS.Get(sym)r
15FAr .FIXUP D
15FAr(8D000004): LDR SB, MT, MOD0 [ORP]
15FBr(40D8001C): ADD R0, SB, 1CH [data]
ELSEs ORSt.Mark("no proc id")u
15FCs .FIXUP P
15FCs(F770A003): BL MOD7 [ORS] PROC10
15FDt(E7000004): B 4 [1602H]
15FEu .FIXUP D
15FEu(8D000004): LDR SB, MT, MOD0 [ORP]
15FFu(40D808A0): ADD R0, SB, 8A0H ["no proc id"]
1600u(4100000B): MOV R1, R0, BH
ENDv
1601v .FIXUP P
1601v(F7709005): BL MOD7 [ORS] PROC9
END ;
int := FALSE
ENDw ProcedureDecl;
1602w(40000000): MOV R0, R0, 0H
1603w(B0E00050): STR R0, SP, 50H
1604w(8FE00000): LDR LNK, SP, 0H
1605w(4EE80054): ADD SP, SP, 54H
1606w(C700000F): B LNK
PROCEDURE Module;
VAR key: LONGINT;
impid, impid1: ORS.Ident;
BEGINx Texts.WriteString(W,y " compiling ")z;a ORS.Get(sym)b;c
1607x(4EE90048): SUB SP, SP, 48H
1608x(AFE00000): STR LNK, SP, 0H
1609y .FIXUP D
1609y(8D00000B): LDR SB, MT, MOD0 [ORP]
160Ay(40D80068): ADD R0, SB, 68H [data]
160By .FIXUP D
160By(8D100002): LDR SB, MT, MOD1 [Texts]
160Cy(41D80005): ADD R1, SB, VAR5
160Dz .FIXUP D
160Dz(8D000002): LDR SB, MT, MOD0 [ORP]
160Ez(42D808AC): ADD R2, SB, 8ACH [" compiling "]
160Fz(4300000D): MOV R3, R0, DH
1610a .FIXUP P
1610a(F711D00F): BL MOD1 [Texts] PROC29
1611b .FIXUP D
1611b(8D000004): LDR SB, MT, MOD0 [ORP]
1612b(40D8001C): ADD R0, SB, 1CH [data]
1613c .FIXUP P
1613c(F770A003): BL MOD7 [ORS] PROC10
IF sym = ORS.module THENd
1614d .FIXUP D
1614d(8D000003): LDR SB, MT, MOD0 [ORP]
1615d(80D0001C): LDR R0, SB, 1CH [data]
1616d(40090045): SUB R0, R0, 45H
1617d(E9000124): BNE 292 [173CH]
ORS.Get(sym)e;f
1618e .FIXUP D
1618e(8D000004): LDR SB, MT, MOD0 [ORP]
1619e(40D8001C): ADD R0, SB, 1CH [data]
161Af .FIXUP P
161Af(F770A007): BL MOD7 [ORS] PROC10
IF sym = ORS.times THENg version := 0;h Texts.Write(W,i "*")j;k ORS.Get(sym)l ELSEm versionn := 1 ENDo ;
161Bg .FIXUP D
161Bg(8D000003): LDR SB, MT, MOD0 [ORP]
161Cg(80D0001C): LDR R0, SB, 1CH [data]
161Dg(40090001): SUB R0, R0, 1H
161Eg(E900000C): BNE 12 [162BH]
161Fh(40000000): MOV R0, R0, 0H
1620h .FIXUP D
1620h(8D000005): LDR SB, MT, MOD0 [ORP]
1621h(A0D0002C): STR R0, SB, 2CH [data]
1622i(40D80068): ADD R0, SB, 68H
1623i .FIXUP D
1623i(8D100003): LDR SB, MT, MOD1 [Texts]
1624i(41D80005): ADD R1, SB, VAR5
1625j(4200002A): MOV R2, R0, 2AH
1626k .FIXUP P
1626k(F711B00C): BL MOD1 [Texts] PROC27
1627l .FIXUP D
1627l(8D000004): LDR SB, MT, MOD0 [ORP]
1628l(40D8001C): ADD R0, SB, 1CH [data]
1629m .FIXUP P
1629m(F770A003): BL MOD7 [ORS] PROC10
162An(E7000003): B 3 [162EH]
162Bo(40000001): MOV R0, R0, 1H
162Co .FIXUP D
162Co(8D000005): LDR SB, MT, MOD0 [ORP]
162Do(A0D0002C): STR R0, SB, 2CH [data]
ORB.Init;p ORB.OpenScope;q
162Ep .FIXUP P
162Ep(F7818005): BL MOD8 [ORB] PROC24
162Fq .FIXUP P
162Fq(F7813001): BL MOD8 [ORB] PROC19
IF sym = ORS.ident THENr
1630r .FIXUP D
1630r(8D000004): LDR SB, MT, MOD0 [ORP]
1631r(80D0001C): LDR R0, SB, 1CH [data]
1632r(4009001F): SUB R0, R0, 1FH
1633r(E9000014): BNE 20 [1648H]
ORS.CopyId(modid)s;t ORS.Get(sym)u;v
1634s .FIXUP D
1634s(8D000004): LDR SB, MT, MOD0 [ORP]
1635s(40D80040): ADD R0, SB, 40H [data]
1636t .FIXUP P
1636t(F7707007): BL MOD7 [ORS] PROC7
1637u .FIXUP D
1637u(8D000003): LDR SB, MT, MOD0 [ORP]
1638u(40D8001C): ADD R0, SB, 1CH [data]
1639v .FIXUP P
1639v(F770A003): BL MOD7 [ORS] PROC10
Texts.WriteString(W,w modid)x;y Texts.Append(Oberon.Log,z W.buf)a
163Aw .FIXUP D
163Aw(8D000003): LDR SB, MT, MOD0 [ORP]
163Bw(40D80068): ADD R0, SB, 68H [data]
163Cw .FIXUP D
163Cw(8D100002): LDR SB, MT, MOD1 [Texts]
163Dw(41D80005): ADD R1, SB, VAR5
163Ex .FIXUP D
163Ex(8D000002): LDR SB, MT, MOD0 [ORP]
163Fx(42D80040): ADD R2, SB, 40H [data]
1640x(43000020): MOV R3, R0, 20H
1641y .FIXUP P
1641y(F711D008): BL MOD1 [Texts] PROC29
1642z .FIXUP D
1642z(8D400004): LDR SB, MT, MOD4 [Oberon]
1643z(80D0000D): LDR R0, SB, VAR13
1644a .FIXUP D
1644a(8D000002): LDR SB, MT, MOD0 [ORP]
1645a(81D00068): LDR R1, SB, 68H [data]
ELSEb ORSc.Mark("identifier expected")d
1646b .FIXUP P
1646b(F710E005): BL MOD1 [Texts] PROC14
1647c(E7000004): B 4 [164CH]
1648d .FIXUP D
1648d(8D000004): LDR SB, MT, MOD0 [ORP]
1649d(40D808BC): ADD R0, SB, 8BCH ["identifier expected"]
164Ad(41000014): MOV R1, R0, 14H
ENDe ;
164Be .FIXUP P
164Be(F7709005): BL MOD7 [ORS] PROC9
Check(ORS.semicolon,f "no ;")g;h level := 0;i dc := 0;j exno := 1;k key := 0;l
164Cf(40000034): MOV R0, R0, 34H
164Dg .FIXUP D
164Dg(8D000005): LDR SB, MT, MOD0 [ORP]
164Eg(41D808D0): ADD R1, SB, 8D0H ["no ;"]
164Fg(42000005): MOV R2, R0, 5H
1650h(F7FFE9AF): BL -5713 [0000H]
1651i(40000000): MOV R0, R0, 0H
1652i .FIXUP D
1652i(8D000005): LDR SB, MT, MOD0 [ORP]
1653i(A0D00024): STR R0, SB, 24H [data]
1654j(40000000): MOV R0, R0, 0H
1655j(A0D00020): STR R0, SB, 20H
1656k(40000001): MOV R0, R0, 1H
1657k(A0D00028): STR R0, SB, 28H
1658l(40000000): MOV R0, R0, 0H
1659l(A0E00004): STR R0, SP, 4H
IF sym = ORS.import THENm
165Am(80D0001C): LDR R0, SB, 1CH
165Bm(40090044): SUB R0, R0, 44H
165Cm(E9000044): BNE 68 [16A1H]
ORS.Get(sym)n;o
165Dn .FIXUP D
165Dn(8D00000B): LDR SB, MT, MOD0 [ORP]
165En(40D8001C): ADD R0, SB, 1CH [data]
165Fo .FIXUP P
165Fo(F770A014): BL MOD7 [ORS] PROC10
WHILE sym = ORS.ident DOp
1660p .FIXUP D
1660p(8D000003): LDR SB, MT, MOD0 [ORP]
1661p(80D0001C): LDR R0, SB, 1CH [data]
1662p(4009001F): SUB R0, R0, 1FH
1663p(E9000038): BNE 56 [169CH]
ORS.CopyId(impid)q;r ORS.Get(sym)s;t
1664q(40E80008): ADD R0, SP, 8H
1665r .FIXUP P
1665r(F7707006): BL MOD7 [ORS] PROC7
1666s .FIXUP D
1666s(8D000006): LDR SB, MT, MOD0 [ORP]
1667s(40D8001C): ADD R0, SB, 1CH [data]
1668t .FIXUP P
1668t(F770A003): BL MOD7 [ORS] PROC10
IF sym = ORS.becomes THENu
1669u .FIXUP D
1669u(8D000003): LDR SB, MT, MOD0 [ORP]
166Au(80D0001C): LDR R0, SB, 1CH [data]
166Bu(4009002A): SUB R0, R0, 2AH
166Cu(E9000012): BNE 18 [167FH]
ORS.Get(sym)v;w
166Dv .FIXUP D
166Dv(8D000004): LDR SB, MT, MOD0 [ORP]
166Ev(40D8001C): ADD R0, SB, 1CH [data]
166Fw .FIXUP P
166Fw(F770A007): BL MOD7 [ORS] PROC10
IF sym = ORS.ident THENx ORS.CopyId(impid1)y;z ORS.Get(sym)a
1670x .FIXUP D
1670x(8D000003): LDR SB, MT, MOD0 [ORP]
1671x(80D0001C): LDR R0, SB, 1CH [data]
1672x(4009001F): SUB R0, R0, 1FH
1673x(E9000006): BNE 6 [167AH]
1674y(40E80028): ADD R0, SP, 28H
1675z .FIXUP P
1675z(F7707006): BL MOD7 [ORS] PROC7
1676a .FIXUP D
1676a(8D000006): LDR SB, MT, MOD0 [ORP]
1677a(40D8001C): ADD R0, SB, 1CH [data]
ELSEb ORSc.Mark("id expected")d
1678b .FIXUP P
1678b(F770A003): BL MOD7 [ORS] PROC10
1679c(E7000004): B 4 [167EH]
167Ad .FIXUP D
167Ad(8D000004): LDR SB, MT, MOD0 [ORP]
167Bd(40D808D8): ADD R0, SB, 8D8H ["id expected"]
167Cd(4100000C): MOV R1, R0, CH
ENDe
167De .FIXUP P
167De(F7709005): BL MOD7 [ORS] PROC9
ELSE impid1f := impid
167Ef(E7000009): B 9 [1688H]
ENDg ;
167Fg(40E80028): ADD R0, SP, 28H
1680g(41E80008): ADD R1, SP, 8H
1681g(42000008): MOV R2, R0, 8H
1682g(83100000): LDR R3, R1, 0H
1683g(41180004): ADD R1, R1, 4H
1684g(A3000000): STR R3, R0, 0H
1685g(40080004): ADD R0, R0, 4H
1686g(42290001): SUB R2, R2, 1H
1687g(E9FFFFFA): BNE -6 [1682H]
ORB.Import(impid,h impid1)i;j
1688h(40E80008): ADD R0, SP, 8H
1689i(41E80028): ADD R1, SP, 28H
168Aj .FIXUP P
168Aj(F781600D): BL MOD8 [ORB] PROC22
IF sym = ORS.comma THENk ORS.Get(sym)l
168Bk .FIXUP D
168Bk(8D000011): LDR SB, MT, MOD0 [ORP]
168Ck(80D0001C): LDR R0, SB, 1CH [data]
168Dk(40090028): SUB R0, R0, 28H
168Ek(E9000004): BNE 4 [1693H]
168Fl .FIXUP D
168Fl(8D000004): LDR SB, MT, MOD0 [ORP]
1690l(40D8001C): ADD R0, SB, 1CH [data]
ELSIFm symn = ORS.ident THENo ORS.Mark("comma missing")p
1691m .FIXUP P
1691m(F770A007): BL MOD7 [ORS] PROC10
1692n(E7000008): B 8 [169BH]
1693o .FIXUP D
1693o(8D000004): LDR SB, MT, MOD0 [ORP]
1694o(80D0001C): LDR R0, SB, 1CH [data]
1695o(4009001F): SUB R0, R0, 1FH
1696o(E9000004): BNE 4 [169BH]
1697p .FIXUP D
1697p(8D000004): LDR SB, MT, MOD0 [ORP]
1698p(40D808E4): ADD R0, SB, 8E4H ["comma missing"]
1699p(4100000E): MOV R1, R0, EH
ENDq
169Aq .FIXUP P
169Aq(F7709009): BL MOD7 [ORS] PROC9
ENDr ;
169Br(E7FFFFC4): B -60 [1660H]
Check(ORS.semicolon,s "no ;")t
169Cs(40000034): MOV R0, R0, 34H
169Dt .FIXUP D
169Dt(8D000006): LDR SB, MT, MOD0 [ORP]
169Et(41D808F4): ADD R1, SB, 8F4H ["no ;"]
169Ft(42000005): MOV R2, R0, 5H
ENDu ;
16A0u(F7FFE95F): BL -5793 [0000H]
ORG.Open(version)v;w Declarations(dc)x;y ORG.SetDataSize((dc + 3)z DIV 4 *a 4)b;c
16A1v .FIXUP D
16A1v(8D000004): LDR SB, MT, MOD0 [ORP]
16A2v(80D0002C): LDR R0, SB, 2CH [data]
16A3w .FIXUP P
16A3w(F794F009): BL MOD9 [ORG] PROC79
16A4x .FIXUP D
16A4x(8D000003): LDR SB, MT, MOD0 [ORP]
16A5x(40D80020): ADD R0, SB, 20H [data]
16A6y(F7FFFCD0): BL -816 [1377H]
16A7z .FIXUP D
16A7z(8D000003): LDR SB, MT, MOD0 [ORP]
16A8z(80D00020): LDR R0, SB, 20H [data]
16A9z(40080003): ADD R0, R0, 3H
16AAa(40020002): ASR R0, R0, 2H
16ABb(40010002): LSL R0, R0, 2H
16ACc .FIXUP P
16ACc(F7950009): BL MOD9 [ORG] PROC80
WHILE sym = ORS.procedure DOd ProcedureDecl;e Check(ORS.semicolon,f "no ;")g ENDh ;
16ADd .FIXUP D
16ADd(8D000006): LDR SB, MT, MOD0 [ORP]
16AEd(80D0001C): LDR R0, SB, 1CH [data]
16AFd(40090042): SUB R0, R0, 42H
16B0d(E9000007): BNE 7 [16B8H]
16B1e(F7FFFE46): BL -442 [14F8H]
16B2f(40000034): MOV R0, R0, 34H
16B3g .FIXUP D
16B3g(8D000006): LDR SB, MT, MOD0 [ORP]
16B4g(41D808FC): ADD R1, SB, 8FCH ["no ;"]
16B5g(42000005): MOV R2, R0, 5H
16B6h(F7FFE949): BL -5815 [0000H]
16B7h(E7FFFFF5): B -11 [16ADH]
ORG.Header;i
16B8i .FIXUP P
16B8i(F795100C): BL MOD9 [ORG] PROC81
IF sym = ORS.begin THENj ORS.Get(sym)k;l StatSequence ENDm ;
16B9j .FIXUP D
16B9j(8D000006): LDR SB, MT, MOD0 [ORP]
16BAj(80D0001C): LDR R0, SB, 1CH [data]
16BBj(40090043): SUB R0, R0, 43H
16BCj(E9000004): BNE 4 [16C1H]
16BDk .FIXUP D
16BDk(8D000004): LDR SB, MT, MOD0 [ORP]
16BEk(40D8001C): ADD R0, SB, 1CH [data]
16BFl .FIXUP P
16BFl(F770A007): BL MOD7 [ORS] PROC10
16C0m(F7FFF517): BL -2793 [0BD8H]
Check(ORS.end,n "no END")o;p
16C1n(40000035): MOV R0, R0, 35H
16C2o .FIXUP D
16C2o(8D000005): LDR SB, MT, MOD0 [ORP]
16C3o(41D80904): ADD R1, SB, 904H ["no END"]
16C4o(42000007): MOV R2, R0, 7H
16C5p(F7FFE93A): BL -5830 [0000H]
IF sym = ORS.ident THENq
16C6q .FIXUP D
16C6q(8D000004): LDR SB, MT, MOD0 [ORP]
16C7q(80D0001C): LDR R0, SB, 1CH [data]
16C8q(4009001F): SUB R0, R0, 1FH
16C9q(E9000015): BNE 21 [16DFH]
IF ORS.id # modid THENr ORS.Mark("no match")s ENDt ;
16CAr .FIXUP D
16CAr(8D700004): LDR SB, MT, MOD7 [ORS]
16CBr(40D80004): ADD R0, SB, VAR4
16CCr .FIXUP D
16CCr(8D000002): LDR SB, MT, MOD0 [ORP]
16CDr(41D80040): ADD R1, SB, 40H [data]
16CEr(92000000): LDR R2, R0, 0H
16CFr(40080001): ADD R0, R0, 1H
16D0r(93100000): LDR R3, R1, 0H
16D1r(41180001): ADD R1, R1, 1H
16D2r(04290003): SUB R4, R2, R3
16D3r(E9000002): BNE 2 [16D6H]
16D4r(44290000): SUB R4, R2, 0H
16D5r(E9FFFFF8): BNE -8 [16CEH]
16D6r(E1000004): BEQ 4 [16DBH]
16D7s .FIXUP D
16D7s(8D00000B): LDR SB, MT, MOD0 [ORP]
16D8s(40D8090C): ADD R0, SB, 90CH ["no match"]
16D9s(41000009): MOV R1, R0, 9H
16DAt .FIXUP P
16DAt(F770901B): BL MOD7 [ORS] PROC9
ORS.Get(sym)u
16DBu .FIXUP D
16DBu(8D000004): LDR SB, MT, MOD0 [ORP]
16DCu(40D8001C): ADD R0, SB, 1CH [data]
ELSEv ORSw.Mark("identifier missing")x
16DDv .FIXUP P
16DDv(F770A003): BL MOD7 [ORS] PROC10
16DEw(E7000004): B 4 [16E3H]
16DFx .FIXUP D
16DFx(8D000004): LDR SB, MT, MOD0 [ORP]
16E0x(40D80918): ADD R0, SB, 918H ["identifier missing"]
16E1x(41000013): MOV R1, R0, 13H
ENDy ;
16E2y .FIXUP P
16E2y(F7709005): BL MOD7 [ORS] PROC9
IF sym # ORS.period THENz ORS.Mark("period missing")a ENDb ;
16E3z .FIXUP D
16E3z(8D000004): LDR SB, MT, MOD0 [ORP]
16E4z(80D0001C): LDR R0, SB, 1CH [data]
16E5z(40090012): SUB R0, R0, 12H
16E6z(E1000004): BEQ 4 [16EBH]
16E7a .FIXUP D
16E7a(8D000004): LDR SB, MT, MOD0 [ORP]
16E8a(40D8092C): ADD R0, SB, 92CH ["period missing"]
16E9a(4100000F): MOV R1, R0, FH
16EAb .FIXUP P
16EAb(F7709008): BL MOD7 [ORS] PROC9
IF (ORS.errcnt = 0)c & (dversion # 0)e THENf
16EBc .FIXUP D
16EBc(8D700004): LDR SB, MT, MOD7 [ORS]
16ECc(80D00006): LDR R0, SB, VAR6
16EDd(E9000013): BNE 19 [1701H]
16EEe .FIXUP D
16EEe(8D000003): LDR SB, MT, MOD0 [ORP]
16EFe(80D0002C): LDR R0, SB, 2CH [data]
16F0f(E1000010): BEQ 16 [1701H]
ORB.Export(modid,g newSF,h key)i;j
16F1g .FIXUP D
16F1g(8D000003): LDR SB, MT, MOD0 [ORP]
16F2g(40D80040): ADD R0, SB, 40H [data]
16F3h(41D80030): ADD R1, SB, 30H
16F4i(42E80004): ADD R2, SP, 4H
16F5j .FIXUP P
16F5j(F781700B): BL MOD8 [ORB] PROC23
IF newSF THENk Texts.WriteString(W,l " new symbol file")m ENDn
16F6k .FIXUP D
16F6k(8D000005): LDR SB, MT, MOD0 [ORP]
16F7k(90D00030): LDR R0, SB, 30H [data]
16F8k(E1000008): BEQ 8 [1701H]
16F9l .FIXUP D
16F9l(8D000003): LDR SB, MT, MOD0 [ORP]
16FAl(40D80068): ADD R0, SB, 68H [data]
16FBl .FIXUP D
16FBl(8D100002): LDR SB, MT, MOD1 [Texts]
16FCl(41D80005): ADD R1, SB, VAR5
16FDm .FIXUP D
16FDm(8D000002): LDR SB, MT, MOD0 [ORP]
16FEm(42D8093C): ADD R2, SB, 93CH [" new symbol file"]
16FFm(43000011): MOV R3, R0, 11H
1700n .FIXUP P
1700n(F711D00B): BL MOD1 [Texts] PROC29
END ;
IF ORS.errcnt = 0 THENo
1701o .FIXUP D
1701o(8D700004): LDR SB, MT, MOD7 [ORS]
1702o(80D00006): LDR R0, SB, VAR6
1703o(E900001C): BNE 28 [1720H]
ORG.Close(modid,p key,q exno)r;s
1704p .FIXUP D
1704p(8D000003): LDR SB, MT, MOD0 [ORP]
1705p(40D80040): ADD R0, SB, 40H [data]
1706q(81E00004): LDR R1, SP, 4H
1707r(82D00028): LDR R2, SB, 28H
1708s .FIXUP P
1708s(F7952008): BL MOD9 [ORG] PROC82
Texts.WriteInt(W,t ORG.pc,u 6)v;w Texts.WriteInt(W,x dc,y 6)z;a Texts.WriteHex(W,b key)c
1709t .FIXUP D
1709t(8D000005): LDR SB, MT, MOD0 [ORP]
170At(40D80068): ADD R0, SB, 68H [data]
170Bt .FIXUP D
170Bt(8D100002): LDR SB, MT, MOD1 [Texts]
170Ct(41D80005): ADD R1, SB, VAR5
170Du .FIXUP D
170Du(8D900002): LDR SB, MT, MOD9 [ORG]
170Eu(82D00002): LDR R2, SB, VAR2
170Fv(43000006): MOV R3, R0, 6H
1710w .FIXUP P
1710w(F711E008): BL MOD1 [Texts] PROC30
1711x .FIXUP D
1711x(8D000004): LDR SB, MT, MOD0 [ORP]
1712x(40D80068): ADD R0, SB, 68H [data]
1713x .FIXUP D
1713x(8D100002): LDR SB, MT, MOD1 [Texts]
1714x(41D80005): ADD R1, SB, VAR5
1715y .FIXUP D
1715y(8D000002): LDR SB, MT, MOD0 [ORP]
1716y(82D00020): LDR R2, SB, 20H [data]
1717z(43000006): MOV R3, R0, 6H
1718a .FIXUP P
1718a(F711E008): BL MOD1 [Texts] PROC30
1719b .FIXUP D
1719b(8D000004): LDR SB, MT, MOD0 [ORP]
171Ab(40D80068): ADD R0, SB, 68H [data]
171Bb .FIXUP D
171Bb(8D100002): LDR SB, MT, MOD1 [Texts]
171Cb(41D80005): ADD R1, SB, VAR5
171Dc(82E00004): LDR R2, SP, 4H
ELSEd Textse.WriteLn(W)f;g Texts.WriteString(W,h "compilation FAILED")i
171Ed .FIXUP P
171Ed(F711F006): BL MOD1 [Texts] PROC31
171Fe(E700000D): B 13 [172DH]
1720f .FIXUP D
1720f(8D000005): LDR SB, MT, MOD0 [ORP]
1721f(40D80068): ADD R0, SB, 68H [data]
1722f .FIXUP D
1722f(8D100002): LDR SB, MT, MOD1 [Texts]
1723f(41D80005): ADD R1, SB, VAR5
1724g .FIXUP P
1724g(F711C006): BL MOD1 [Texts] PROC28
1725h .FIXUP D
1725h(8D000003): LDR SB, MT, MOD0 [ORP]
1726h(40D80068): ADD R0, SB, 68H [data]
1727h .FIXUP D
1727h(8D100002): LDR SB, MT, MOD1 [Texts]
1728h(41D80005): ADD R1, SB, VAR5
1729i .FIXUP D
1729i(8D000002): LDR SB, MT, MOD0 [ORP]
172Ai(42D80950): ADD R2, SB, 950H ["compilation FAILED"]
172Bi(43000013): MOV R3, R0, 13H
ENDj ;
172Cj .FIXUP P
172Cj(F711D008): BL MOD1 [Texts] PROC29
Texts.WriteLn(W)k;l Texts.Append(Oberon.Log,m W.buf)n;o
172Dk .FIXUP D
172Dk(8D000004): LDR SB, MT, MOD0 [ORP]
172Ek(40D80068): ADD R0, SB, 68H [data]
172Fk .FIXUP D
172Fk(8D100002): LDR SB, MT, MOD1 [Texts]
1730k(41D80005): ADD R1, SB, VAR5
1731l .FIXUP P
1731l(F711C005): BL MOD1 [Texts] PROC28
1732m .FIXUP D
1732m(8D400003): LDR SB, MT, MOD4 [Oberon]
1733m(80D0000D): LDR R0, SB, VAR13
1734n .FIXUP D
1734n(8D000002): LDR SB, MT, MOD0 [ORP]
1735n(81D00068): LDR R1, SB, 68H [data]
1736o .FIXUP P
1736o(F710E005): BL MOD1 [Texts] PROC14
ORB.CloseScope;p pbsList := NIL
1737p .FIXUP P
1737p(F7814001): BL MOD8 [ORB] PROC20
ELSEq ORSr.Mark("must start with MODULE")s
1738q(40000000): MOV R0, R0, 0H
1739q .FIXUP D
1739q(8D000005): LDR SB, MT, MOD0 [ORP]
173Aq(A0D00060): STR R0, SB, 60H [data]
173Br(E7000004): B 4 [1740H]
173Cs .FIXUP D
173Cs(8D000003): LDR SB, MT, MOD0 [ORP]
173Ds(40D80964): ADD R0, SB, 964H ["must start with MODULE"]
173Es(41000017): MOV R1, R0, 17H
ENDt
173Ft .FIXUP P
173Ft(F7709008): BL MOD7 [ORS] PROC9
ENDu Module;
1740u(8FE00000): LDR LNK, SP, 0H
1741u(4EE80048): ADD SP, SP, 48H
1742u(C700000F): B LNK
PROCEDURE Option(VAR S: Texts.Scanner);
BEGINv newSF := FALSE;w
1743v(4EE9000C): SUB SP, SP, CH
1744v(AFE00000): STR LNK, SP, 0H
1745v(A0E00004): STR R0, SP, 4H
1746v(A1E00008): STR R1, SP, 8H
1747w(40000000): MOV R0, R0, 0H
1748w .FIXUP D
1748w(8D00000C): LDR SB, MT, MOD0 [ORP]
1749w(B0D00030): STR R0, SB, 30H [data]
IF S.nextCh = "/" THENx
174Ax(80E00004): LDR R0, SP, 4H
174Bx(90000034): LDR R0, R0, 34H
174Cx(4009002F): SUB R0, R0, 2FH
174Dx(E9000011): BNE 17 [175FH]
Texts.Scan(S)y;z Texts.Scan(S)a;b
174Ey(80E00004): LDR R0, SP, 4H
174Fy(81E00008): LDR R1, SP, 8H
1750z .FIXUP P
1750z(F7116011): BL MOD1 [Texts] PROC22
1751a(80E00004): LDR R0, SP, 4H
1752a(81E00008): LDR R1, SP, 8H
1753b .FIXUP P
1753b(F7116003): BL MOD1 [Texts] PROC22
IF (S.class = Texts.Name)c & (dS.s[0] = "s")e THENf newSF := TRUE ENDg
1754c(80E00004): LDR R0, SP, 4H
1755c(8000003C): LDR R0, R0, 3CH
1756c(40090001): SUB R0, R0, 1H
1757d(E9000007): BNE 7 [175FH]
1758e(80E00004): LDR R0, SP, 4H
1759e(90000054): LDR R0, R0, 54H
175Ae(40090073): SUB R0, R0, 73H
175Bf(E9000003): BNE 3 [175FH]
175Cg(40000001): MOV R0, R0, 1H
175Dg .FIXUP D
175Dg(8D000015): LDR SB, MT, MOD0 [ORP]
175Eg(B0D00030): STR R0, SB, 30H [data]
END
ENDh Option;
175Fh(8FE00000): LDR LNK, SP, 0H
1760h(4EE8000C): ADD SP, SP, CH
1761h(C700000F): B LNK
PROCEDURE Compile*;
VAR beg, end, time: LONGINT;
T: Texts.Text;
S: Texts.Scanner;
BEGINi Texts.OpenScanner(S,j Oberon.Par.text,k Oberon.Par.pos)l;m Texts.Scan(S)n;o
1762i .PROC 1
1762i .COMMAND Compile
1762i(4EE90088): SUB SP, SP, 88H
1763i(AFE00000): STR LNK, SP, 0H
1764j(40E80014): ADD R0, SP, 14H
1765j .FIXUP D
1765j(8D100008): LDR SB, MT, MOD1 [Texts]
1766j(41D80003): ADD R1, SB, VAR3
1767k .FIXUP D
1767k(8D400002): LDR SB, MT, MOD4 [Oberon]
1768k(42D8000E): ADD R2, SB, VAR14
1769k(82200008): LDR R2, R2, 8H
176Al .FIXUP D
176Al(8D400003): LDR SB, MT, MOD4 [Oberon]
176Bl(43D8000E): ADD R3, SB, VAR14
176Cl(8330000C): LDR R3, R3, CH
176Dm .FIXUP P
176Dm(F711501A): BL MOD1 [Texts] PROC21
176En(40E80014): ADD R0, SP, 14H
176Fn .FIXUP D
176Fn(8D100005): LDR SB, MT, MOD1 [Texts]
1770n(41D80003): ADD R1, SB, VAR3
1771o .FIXUP P
1771o(F7116004): BL MOD1 [Texts] PROC22
IF S.class = Texts.Char THENp
1772p(80E00050): LDR R0, SP, 50H
1773p(40090006): SUB R0, R0, 6H
1774p(E9000049): BNE 73 [17BEH]
IF S.c = "@" THENq
1775q(90E00060): LDR R0, SP, 60H
1776q(40090040): SUB R0, R0, 40H
1777q(E9000011): BNE 17 [1789H]
Option(S)r;s Oberon.GetSelection(T,t beg,u end,v time)w;x
1778r(40E80014): ADD R0, SP, 14H
1779r .FIXUP D
1779r(8D10000A): LDR SB, MT, MOD1 [Texts]
177Ar(41D80003): ADD R1, SB, VAR3
177Bs(F7FFFFC7): BL -57 [1743H]
177Ct(40E80010): ADD R0, SP, 10H
177Du(41E80004): ADD R1, SP, 4H
177Ev(42E80008): ADD R2, SP, 8H
177Fw(43E8000C): ADD R3, SP, CH
1780x .FIXUP P
1780x(F742900F): BL MOD4 [Oberon] PROC41
IF time >= 0 THENy ORS.Init(T,z beg)a;b Module ENDc
1781y(80E0000C): LDR R0, SP, CH
1782y(40090000): SUB R0, R0, 0H
1783y(E5000004): BLT 4 [1788H]
1784z(80E00010): LDR R0, SP, 10H
1785a(81E00004): LDR R1, SP, 4H
1786b .FIXUP P
1786b(F770B006): BL MOD7 [ORS] PROC11
1787c(F7FFFE7F): BL -385 [1607H]
ELSIF Sd.c = "^" THENe
1788d(E7000034): B 52 [17BDH]
1789e(90E00060): LDR R0, SP, 60H
178Ae(4009005E): SUB R0, R0, 5EH
178Be(E9000031): BNE 49 [17BDH]
Option(S)f;g Oberon.GetSelection(T,h beg,i end,j time)k;l
178Cf(40E80014): ADD R0, SP, 14H
178Df .FIXUP D
178Df(8D100014): LDR SB, MT, MOD1 [Texts]
178Ef(41D80003): ADD R1, SB, VAR3
178Fg(F7FFFFB3): BL -77 [1743H]
1790h(40E80010): ADD R0, SP, 10H
1791i(41E80004): ADD R1, SP, 4H
1792j(42E80008): ADD R2, SP, 8H
1793k(43E8000C): ADD R3, SP, CH
1794l .FIXUP P
1794l(F742900E): BL MOD4 [Oberon] PROC41
IF time >= 0 THENm
1795m(80E0000C): LDR R0, SP, CH
1796m(40090000): SUB R0, R0, 0H
1797m(E5000025): BLT 37 [17BDH]
Texts.OpenScanner(S,n T,o beg)p;q Texts.Scan(S)r;s
1798n(40E80014): ADD R0, SP, 14H
1799n .FIXUP D
1799n(8D10000C): LDR SB, MT, MOD1 [Texts]
179An(41D80003): ADD R1, SB, VAR3
179Bo(82E00010): LDR R2, SP, 10H
179Cp(83E00004): LDR R3, SP, 4H
179Dq .FIXUP P
179Dq(F7115009): BL MOD1 [Texts] PROC21
179Er(40E80014): ADD R0, SP, 14H
179Fr .FIXUP D
179Fr(8D100006): LDR SB, MT, MOD1 [Texts]
17A0r(41D80003): ADD R1, SB, VAR3
17A1s .FIXUP P
17A1s(F7116004): BL MOD1 [Texts] PROC22
IF S.class = Texts.Name THENt
17A2t(80E00050): LDR R0, SP, 50H
17A3t(40090001): SUB R0, R0, 1H
17A4t(E9000018): BNE 24 [17BDH]
Texts.WriteString(W,u S.s)v;w NEW(T);x Texts.Open(T,y S.s)z;a
17A5u .FIXUP D
17A5u(8D000006): LDR SB, MT, MOD0 [ORP]
17A6u(40D80068): ADD R0, SB, 68H [data]
17A7u .FIXUP D
17A7u(8D100002): LDR SB, MT, MOD1 [Texts]
17A8u(41D80005): ADD R1, SB, VAR5
17A9v(42E80068): ADD R2, SP, 68H
17AAv(43000020): MOV R3, R0, 20H
17ABw .FIXUP P
17ABw(F711D00A): BL MOD1 [Texts] PROC29
17ACx(40E80010): ADD R0, SP, 10H
17ADx .FIXUP D
17ADx(8D100006): LDR SB, MT, MOD1 [Texts]
17AEx(41D80001): ADD R1, SB, VAR1
17AFx(D7A0DE0C): BL MT [trap=0, pos=41182]
17B0y(80E00010): LDR R0, SP, 10H
17B1z(41E80068): ADD R1, SP, 68H
17B2z(42000020): MOV R2, R0, 20H
17B3a .FIXUP P
17B3a(F7107008): BL MOD1 [Texts] PROC7
IF T.lenb > 0 THENc ORS.Init(T,d 0)e;f Module ENDg
17B4b(80E00010): LDR R0, SP, 10H
17B5b(D1A1074C): BLEQ MT [trap=4, pos=41223]
17B6c(80000000): LDR R0, R0, 0H
17B7c(40090000): SUB R0, R0, 0H
17B8c(E6000004): BLE 4 [17BDH]
17B9d(80E00010): LDR R0, SP, 10H
17BAe(41000000): MOV R1, R0, 0H
17BBf .FIXUP P
17BBf(F770B008): BL MOD7 [ORS] PROC11
17BCg(F7FFFE4A): BL -438 [1607H]
END
END
END
ELSE
WHILEh S.class = Texts.Name DOi
17BDh(E7000041): B 65 [17FFH]
17BEi(80E00050): LDR R0, SP, 50H
17BFi(40090001): SUB R0, R0, 1H
17C0i(E900003E): BNE 62 [17FFH]
NEW(T);j Texts.Open(T,k S.s)l;m
17C1j(40E80010): ADD R0, SP, 10H
17C2j .FIXUP D
17C2j(8D100015): LDR SB, MT, MOD1 [Texts]
17C3j(41D80001): ADD R1, SB, VAR1
17C4j(D7A18D0C): BL MT [trap=0, pos=41357]
17C5k(80E00010): LDR R0, SP, 10H
17C6l(41E80068): ADD R1, SP, 68H
17C7l(42000020): MOV R2, R0, 20H
17C8m .FIXUP P
17C8m(F710700D): BL MOD1 [Texts] PROC7
IF T.lenn > 0 THENo Option(S)p;q ORS.Init(T,r 0)s;t Module
17C9n(80E00010): LDR R0, SP, 10H
17CAn(D1A1B24C): BLEQ MT [trap=4, pos=41394]
17CBo(80000000): LDR R0, R0, 0H
17CCo(40090000): SUB R0, R0, 0H
17CDo(E6000009): BLE 9 [17D7H]
17CEp(40E80014): ADD R0, SP, 14H
17CFp .FIXUP D
17CFp(8D10000D): LDR SB, MT, MOD1 [Texts]
17D0p(41D80003): ADD R1, SB, VAR3
17D1q(F7FFFF71): BL -143 [1743H]
17D2r(80E00010): LDR R0, SP, 10H
17D3s(41000000): MOV R1, R0, 0H
17D4t .FIXUP P
17D4t(F770B00C): BL MOD7 [ORS] PROC11
ELSEu Textsv.WriteString(W,w S.s)x;y Texts.WriteString(W,z " not found")a;b
17D5u(F7FFFE31): BL -463 [1607H]
17D6v(E7000019): B 25 [17F0H]
17D7w .FIXUP D
17D7w(8D000008): LDR SB, MT, MOD0 [ORP]
17D8w(40D80068): ADD R0, SB, 68H [data]
17D9w .FIXUP D
17D9w(8D100002): LDR SB, MT, MOD1 [Texts]
17DAw(41D80005): ADD R1, SB, VAR5
17DBx(42E80068): ADD R2, SP, 68H
17DCx(43000020): MOV R3, R0, 20H
17DDy .FIXUP P
17DDy(F711D009): BL MOD1 [Texts] PROC29
17DEz .FIXUP D
17DEz(8D000005): LDR SB, MT, MOD0 [ORP]
17DFz(40D80068): ADD R0, SB, 68H [data]
17E0z .FIXUP D
17E0z(8D100002): LDR SB, MT, MOD1 [Texts]
17E1z(41D80005): ADD R1, SB, VAR5
17E2a .FIXUP D
17E2a(8D000002): LDR SB, MT, MOD0 [ORP]
17E3a(42D8097C): ADD R2, SB, 97CH [" not found"]
17E4a(4300000B): MOV R3, R0, BH
17E5b .FIXUP P
17E5b(F711D008): BL MOD1 [Texts] PROC29
Texts.WriteLn(W)c;d Texts.Append(Oberon.Log,e W.buf)f
17E6c .FIXUP D
17E6c(8D000004): LDR SB, MT, MOD0 [ORP]
17E7c(40D80068): ADD R0, SB, 68H [data]
17E8c .FIXUP D
17E8c(8D100002): LDR SB, MT, MOD1 [Texts]
17E9c(41D80005): ADD R1, SB, VAR5
17EAd .FIXUP P
17EAd(F711C005): BL MOD1 [Texts] PROC28
17EBe .FIXUP D
17EBe(8D400003): LDR SB, MT, MOD4 [Oberon]
17ECe(80D0000D): LDR R0, SB, VAR13
17EDf .FIXUP D
17EDf(8D000002): LDR SB, MT, MOD0 [ORP]
17EEf(81D00068): LDR R1, SB, 68H [data]
ENDg ;
17EFg .FIXUP P
17EFg(F710E005): BL MOD1 [Texts] PROC14
IF (T.lenh # 0)i & (jORS.errcnt = 0)k THENl Texts.Scan(S)m ELSEn So.class := 0 ENDp
17F0h(80E00010): LDR R0, SP, 10H
17F1h(D1A2854C): BLEQ MT [trap=4, pos=41605]
17F2i(80000000): LDR R0, R0, 0H
17F3j(E1000008): BEQ 8 [17FCH]
17F4k .FIXUP D
17F4k(8D700007): LDR SB, MT, MOD7 [ORS]
17F5k(80D00006): LDR R0, SB, VAR6
17F6l(E9000005): BNE 5 [17FCH]
17F7m(40E80014): ADD R0, SP, 14H
17F8m .FIXUP D
17F8m(8D100004): LDR SB, MT, MOD1 [Texts]
17F9m(41D80003): ADD R1, SB, VAR3
17FAn .FIXUP P
17FAn(F711600B): BL MOD1 [Texts] PROC22
17FBo(E7000002): B 2 [17FEH]
17FCp(40000000): MOV R0, R0, 0H
17FDp(A0E00050): STR R0, SP, 50H
ENDq
17FEq(E7FFFFBF): B -65 [17BEH]
END ;
Oberon.Collect(0)r
17FFr(40000000): MOV R0, R0, 0H
ENDs Compile;
1800s .FIXUP P
1800s(F742D006): BL MOD4 [Oberon] PROC45
1801s(8FE00000): LDR LNK, SP, 0H
1802s(4EE80088): ADD SP, SP, 88H
1803s(C700000F): B LNK
BEGINt Texts.OpenWriter(W)u;v Texts.WriteString(W,w "OR Compiler 4.4.2017")x;y
1804t .PROC 0
1804t .ENTRYPOINT
1804t(4EE90004): SUB SP, SP, 4H
1805t(AFE00000): STR LNK, SP, 0H
1806u .FIXUP D
1806u(8D00000E): LDR SB, MT, MOD0 [ORP]
1807u(40D80068): ADD R0, SB, 68H [data]
1808u .FIXUP D
1808u(8D100002): LDR SB, MT, MOD1 [Texts]
1809u(41D80005): ADD R1, SB, VAR5
180Av .FIXUP P
180Av(F711700A): BL MOD1 [Texts] PROC23
180Bw .FIXUP D
180Bw(8D000003): LDR SB, MT, MOD0 [ORP]
180Cw(40D80068): ADD R0, SB, 68H [data]
180Dw .FIXUP D
180Dw(8D100002): LDR SB, MT, MOD1 [Texts]
180Ew(41D80005): ADD R1, SB, VAR5
180Fx .FIXUP D
180Fx(8D000002): LDR SB, MT, MOD0 [ORP]
1810x(42D80988): ADD R2, SB, 988H ["OR Compiler 4.4.2017"]
1811x(43000016): MOV R3, R0, 16H
1812y .FIXUP P
1812y(F711D008): BL MOD1 [Texts] PROC29
Texts.WriteLn(W)z;a Texts.Append(Oberon.Log,b W.buf)c;d
1813z .FIXUP D
1813z(8D000004): LDR SB, MT, MOD0 [ORP]
1814z(40D80068): ADD R0, SB, 68H [data]
1815z .FIXUP D
1815z(8D100002): LDR SB, MT, MOD1 [Texts]
1816z(41D80005): ADD R1, SB, VAR5
1817a .FIXUP P
1817a(F711C005): BL MOD1 [Texts] PROC28
1818b .FIXUP D
1818b(8D400003): LDR SB, MT, MOD4 [Oberon]
1819b(80D0000D): LDR R0, SB, VAR13
181Ac .FIXUP D
181Ac(8D000002): LDR SB, MT, MOD0 [ORP]
181Bc(81D00068): LDR R1, SB, 68H [data]
181Cd .FIXUP P
181Cd(F710E005): BL MOD1 [Texts] PROC14
NEW(dummy);e dummy.classf := ORB.Var;g dummy.typeh := ORB.intType;i
181De .FIXUP D
181De(8D000003): LDR SB, MT, MOD0 [ORP]
181Ee(40D80064): ADD R0, SB, 64H [data]
181Fe .FIXUP D
181Fe(8D800002): LDR SB, MT, MOD8 [ORB]
1820e(41D80001): ADD R1, SB, VAR1
1821e(D7A38D0C): BL MT [trap=0, pos=41869]
1822f .FIXUP D
1822f(8D000003): LDR SB, MT, MOD0 [ORP]
1823f(80D00064): LDR R0, SB, 64H [data]
1824f(D1A3994C): BLEQ MT [trap=4, pos=41881]
1825g(41000002): MOV R1, R0, 2H
1826g(B1000000): STR R1, R0, 0H
1827h(80D00064): LDR R0, SB, 64H
1828h(D1A3B04C): BLEQ MT [trap=4, pos=41904]
1829i .FIXUP D
1829i(8D800007): LDR SB, MT, MOD8 [ORB]
182Ai(81D00009): LDR R1, SB, VAR9
182Bi(A1000010): STR R1, R0, 10H
expression := expression0;j Type := Type0;k FormalType := FormalType0
182Cj(F7000000): BL 0 [182DH]
182Dj(40F93D60): SUB R0, LNK, 3D60H
182Ej .FIXUP D
182Ej(8D000005): LDR SB, MT, MOD0 [ORP]
182Fj(A0D00034): STR R0, SB, 34H [data]
1830k(F7000000): BL 0 [1831H]
1831k(40F91724): SUB R0, LNK, 1724H
1832k(A0D00038): STR R0, SB, 38H
ENDl ORP.m
1833l(F7000000): BL 0 [1834H]
1834l(40F91960): SUB R0, LNK, 1960H
1835l(A0D0003C): STR R0, SB, 3CH
1836m(8FE00000): LDR LNK, SP, 0H
1837m(4EE80004): ADD SP, SP, 4H
1838m(C700000F): B LNK