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
0D