| 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 |
| 0000 | a(4EE90010): SUB SP, SP, 10H |
| 0001 | a(AFE00000): STR LNK, SP, 0H |
| 0002 | a(A0E00004): STR R0, SP, 4H |
| 0003 | a(A1E00008): STR R1, SP, 8H |
| 0004 | a(A2E0000C): STR R2, SP, CH |
| IF sym = s THENb ORS.Get(sym)c ELSEd ORSe.Mark(msg)f ENDg |
| 0005 | b .FIXUP D |
| 0005 | b(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0006 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 0007 | b(81E00004): LDR R1, SP, 4H |
| 0008 | b(00090001): SUB R0, R0, R1 |
| 0009 | b(E9000004): BNE 4 [000EH] |
| 000A | c .FIXUP D |
| 000A | c(8D000005): LDR SB, MT, MOD0 [ORP] |
| 000B | c(40D8001C): ADD R0, SB, 1CH [data] |
| 000C | d .FIXUP P |
| 000C | d(F770A00C): BL MOD7 [ORS] PROC10 |
| 000D | e(E7000003): B 3 [0011H] |
| 000E | f(80E00008): LDR R0, SP, 8H |
| 000F | f(81E0000C): LDR R1, SP, CH |
| 0010 | g .FIXUP P |
| 0010 | g(F7709004): BL MOD7 [ORS] PROC9 |
| ENDh Check; |
| 0011 | h(8FE00000): LDR LNK, SP, 0H |
| 0012 | h(4EE80010): ADD SP, SP, 10H |
| 0013 | h(C700000F): B LNK |
| |
| PROCEDURE qualident(VAR obj: ORB.Object); |
| BEGINi obj := ORB.thisObj();j ORS.Get(sym)k;l |
| 0014 | i(4EE90008): SUB SP, SP, 8H |
| 0015 | i(AFE00000): STR LNK, SP, 0H |
| 0016 | i(A0E00004): STR R0, SP, 4H |
| 0017 | j .FIXUP P |
| 0017 | j(F7810007): BL MOD8 [ORB] PROC16 |
| 0018 | j(81E00004): LDR R1, SP, 4H |
| 0019 | j(A0100000): STR R0, R1, 0H |
| 001A | k .FIXUP D |
| 001A | k(8D000010): LDR SB, MT, MOD0 [ORP] |
| 001B | k(40D8001C): ADD R0, SB, 1CH [data] |
| 001C | l .FIXUP P |
| 001C | l(F770A005): BL MOD7 [ORS] PROC10 |
| IF obj = NIL THENm ORS.Mark("undef")n;o obj := dummy ENDp ; |
| 001D | m(80E00004): LDR R0, SP, 4H |
| 001E | m(80000000): LDR R0, R0, 0H |
| 001F | m(E9000008): BNE 8 [0028H] |
| 0020 | n .FIXUP D |
| 0020 | n(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0021 | n(40D80090): ADD R0, SB, 90H ["undef"] |
| 0022 | n(41000006): MOV R1, R0, 6H |
| 0023 | o .FIXUP P |
| 0023 | o(F7709007): BL MOD7 [ORS] PROC9 |
| 0024 | p .FIXUP D |
| 0024 | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0025 | p(80D00064): LDR R0, SB, 64H [data] |
| 0026 | p(81E00004): LDR R1, SP, 4H |
| 0027 | p(A0100000): STR R0, R1, 0H |
| IF (sym = ORS.period)q & (robj.classs = ORB.Mod)t THENu |
| 0028 | q .FIXUP D |
| 0028 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0029 | q(80D0001C): LDR R0, SB, 1CH [data] |
| 002A | q(40090012): SUB R0, R0, 12H |
| 002B | r(E9000029): BNE 41 [0055H] |
| 002C | s(80E00004): LDR R0, SP, 4H |
| 002D | s(80000000): LDR R0, R0, 0H |
| 002E | s(D1059A4C): BLEQ MT [trap=4, pos=1434] |
| 002F | t(90000000): LDR R0, R0, 0H |
| 0030 | t(40090008): SUB R0, R0, 8H |
| 0031 | u(E9000023): BNE 35 [0055H] |
| ORS.Get(sym)v;w |
| 0032 | v .FIXUP D |
| 0032 | v(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 0033 | v(40D8001C): ADD R0, SB, 1CH [data] |
| 0034 | w .FIXUP P |
| 0034 | w(F770A011): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENx obj := ORB.thisimport(obj)y;z ORS.Get(sym)a;b |
| 0035 | x .FIXUP D |
| 0035 | x(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0036 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 0037 | x(4009001F): SUB R0, R0, 1FH |
| 0038 | x(E9000014): BNE 20 [004DH] |
| 0039 | y(80E00004): LDR R0, SP, 4H |
| 003A | y(80000000): LDR R0, R0, 0H |
| 003B | z .FIXUP P |
| 003B | z(F7811007): BL MOD8 [ORB] PROC17 |
| 003C | z(81E00004): LDR R1, SP, 4H |
| 003D | z(A0100000): STR R0, R1, 0H |
| 003E | a .FIXUP D |
| 003E | a(8D000009): LDR SB, MT, MOD0 [ORP] |
| 003F | a(40D8001C): ADD R0, SB, 1CH [data] |
| 0040 | b .FIXUP P |
| 0040 | b(F770A005): BL MOD7 [ORS] PROC10 |
| IF obj = NIL THENc ORS.Mark("undef")d;e obj := dummy ENDf |
| 0041 | c(80E00004): LDR R0, SP, 4H |
| 0042 | c(80000000): LDR R0, R0, 0H |
| 0043 | c(E9000008): BNE 8 [004CH] |
| 0044 | d .FIXUP D |
| 0044 | d(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0045 | d(40D80098): ADD R0, SB, 98H ["undef"] |
| 0046 | d(41000006): MOV R1, R0, 6H |
| 0047 | e .FIXUP P |
| 0047 | e(F7709007): BL MOD7 [ORS] PROC9 |
| 0048 | f .FIXUP D |
| 0048 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0049 | f(80D00064): LDR R0, SB, 64H [data] |
| 004A | f(81E00004): LDR R1, SP, 4H |
| 004B | f(A0100000): STR R0, R1, 0H |
| ELSE ORSg.Mark("identifier expected")h;i obj := dummy |
| 004C | g(E7000008): B 8 [0055H] |
| 004D | h .FIXUP D |
| 004D | h(8D000005): LDR SB, MT, MOD0 [ORP] |
| 004E | h(40D800A0): ADD R0, SB, A0H ["identifier expected"] |
| 004F | h(41000014): MOV R1, R0, 14H |
| 0050 | i .FIXUP P |
| 0050 | i(F7709009): BL MOD7 [ORS] PROC9 |
| ENDj |
| 0051 | j .FIXUP D |
| 0051 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0052 | j(80D00064): LDR R0, SB, 64H [data] |
| 0053 | j(81E00004): LDR R1, SP, 4H |
| 0054 | j(A0100000): STR R0, R1, 0H |
| END |
| ENDk qualident; |
| 0055 | k(8FE00000): LDR LNK, SP, 0H |
| 0056 | k(4EE80008): ADD SP, SP, 8H |
| 0057 | k(C700000F): B LNK |
| |
| PROCEDURE CheckBool(VAR x: ORG.Item); |
| BEGINl |
| 0058 | l(4EE9000C): SUB SP, SP, CH |
| 0059 | l(AFE00000): STR LNK, SP, 0H |
| 005A | l(A0E00004): STR R0, SP, 4H |
| 005B | l(A1E00008): STR R1, SP, 8H |
| IF x.type.formm # ORB.Bool THENn ORS.Mark("not Boolean")o;p x.type := ORB.boolType ENDq |
| 005C | m(80E00004): LDR R0, SP, 4H |
| 005D | m(80000004): LDR R0, R0, 4H |
| 005E | m(D106E44C): BLEQ MT [trap=4, pos=1764] |
| 005F | n(80000000): LDR R0, R0, 0H |
| 0060 | n(40090002): SUB R0, R0, 2H |
| 0061 | n(E1000008): BEQ 8 [006AH] |
| 0062 | o .FIXUP D |
| 0062 | o(8D000011): LDR SB, MT, MOD0 [ORP] |
| 0063 | o(40D800B4): ADD R0, SB, B4H ["not Boolean"] |
| 0064 | o(4100000C): MOV R1, R0, CH |
| 0065 | p .FIXUP P |
| 0065 | p(F7709015): BL MOD7 [ORS] PROC9 |
| 0066 | q .FIXUP D |
| 0066 | q(8D800004): LDR SB, MT, MOD8 [ORB] |
| 0067 | q(80D00007): LDR R0, SB, VAR7 |
| 0068 | q(81E00004): LDR R1, SP, 4H |
| 0069 | q(A0100004): STR R0, R1, 4H |
| ENDr CheckBool; |
| 006A | r(8FE00000): LDR LNK, SP, 0H |
| 006B | r(4EE8000C): ADD SP, SP, CH |
| 006C | r(C700000F): B LNK |
| |
| PROCEDURE CheckInt(VAR x: ORG.Item); |
| BEGINs |
| 006D | s(4EE9000C): SUB SP, SP, CH |
| 006E | s(AFE00000): STR LNK, SP, 0H |
| 006F | s(A0E00004): STR R0, SP, 4H |
| 0070 | s(A1E00008): STR R1, SP, 8H |
| IF x.type.formt # ORB.Int THENu ORS.Mark("not Integer")v;w x.type := ORB.intType ENDx |
| 0071 | t(80E00004): LDR R0, SP, 4H |
| 0072 | t(80000004): LDR R0, R0, 4H |
| 0073 | t(D1077C4C): BLEQ MT [trap=4, pos=1916] |
| 0074 | u(80000000): LDR R0, R0, 0H |
| 0075 | u(40090004): SUB R0, R0, 4H |
| 0076 | u(E1000008): BEQ 8 [007FH] |
| 0077 | v .FIXUP D |
| 0077 | v(8D000011): LDR SB, MT, MOD0 [ORP] |
| 0078 | v(40D800C0): ADD R0, SB, C0H ["not Integer"] |
| 0079 | v(4100000C): MOV R1, R0, CH |
| 007A | w .FIXUP P |
| 007A | w(F7709015): BL MOD7 [ORS] PROC9 |
| 007B | x .FIXUP D |
| 007B | x(8D800004): LDR SB, MT, MOD8 [ORB] |
| 007C | x(80D00009): LDR R0, SB, VAR9 |
| 007D | x(81E00004): LDR R1, SP, 4H |
| 007E | x(A0100004): STR R0, R1, 4H |
| ENDy CheckInt; |
| 007F | y(8FE00000): LDR LNK, SP, 0H |
| 0080 | y(4EE8000C): ADD SP, SP, CH |
| 0081 | y(C700000F): B LNK |
| |
| PROCEDURE CheckReal(VAR x: ORG.Item); |
| BEGINz |
| 0082 | z(4EE9000C): SUB SP, SP, CH |
| 0083 | z(AFE00000): STR LNK, SP, 0H |
| 0084 | z(A0E00004): STR R0, SP, 4H |
| 0085 | z(A1E00008): STR R1, SP, 8H |
| IF x.type.forma # ORB.Real THENb ORS.Mark("not Real")c;d x.type := ORB.realType ENDe |
| 0086 | a(80E00004): LDR R0, SP, 4H |
| 0087 | a(80000004): LDR R0, R0, 4H |
| 0088 | a(D108124C): BLEQ MT [trap=4, pos=2066] |
| 0089 | b(80000000): LDR R0, R0, 0H |
| 008A | b(40090005): SUB R0, R0, 5H |
| 008B | b(E1000008): BEQ 8 [0094H] |
| 008C | c .FIXUP D |
| 008C | c(8D000011): LDR SB, MT, MOD0 [ORP] |
| 008D | c(40D800CC): ADD R0, SB, CCH ["not Real"] |
| 008E | c(41000009): MOV R1, R0, 9H |
| 008F | d .FIXUP P |
| 008F | d(F7709015): BL MOD7 [ORS] PROC9 |
| 0090 | e .FIXUP D |
| 0090 | e(8D800004): LDR SB, MT, MOD8 [ORB] |
| 0091 | e(80D0000A): LDR R0, SB, VAR10 |
| 0092 | e(81E00004): LDR R1, SP, 4H |
| 0093 | e(A0100004): STR R0, R1, 4H |
| ENDf CheckReal; |
| 0094 | f(8FE00000): LDR LNK, SP, 0H |
| 0095 | f(4EE8000C): ADD SP, SP, CH |
| 0096 | f(C700000F): B LNK |
| |
| PROCEDURE CheckSet(VAR x: ORG.Item); |
| BEGINg |
| 0097 | g(4EE9000C): SUB SP, SP, CH |
| 0098 | g(AFE00000): STR LNK, SP, 0H |
| 0099 | g(A0E00004): STR R0, SP, 4H |
| 009A | g(A1E00008): STR R1, SP, 8H |
| IF x.type.formh # ORB.Set THENi ORS.Mark("not Set")j;k x.type := ORB.setType ENDl |
| 009B | h(80E00004): LDR R0, SP, 4H |
| 009C | h(80000004): LDR R0, R0, 4H |
| 009D | h(D108A74C): BLEQ MT [trap=4, pos=2215] |
| 009E | i(80000000): LDR R0, R0, 0H |
| 009F | i(40090006): SUB R0, R0, 6H |
| 00A0 | i(E1000008): BEQ 8 [00A9H] |
| 00A1 | j .FIXUP D |
| 00A1 | j(8D000011): LDR SB, MT, MOD0 [ORP] |
| 00A2 | j(40D800D8): ADD R0, SB, D8H ["not Set"] |
| 00A3 | j(41000008): MOV R1, R0, 8H |
| 00A4 | k .FIXUP P |
| 00A4 | k(F7709015): BL MOD7 [ORS] PROC9 |
| 00A5 | l .FIXUP D |
| 00A5 | l(8D800004): LDR SB, MT, MOD8 [ORB] |
| 00A6 | l(80D0000B): LDR R0, SB, VAR11 |
| 00A7 | l(81E00004): LDR R1, SP, 4H |
| 00A8 | l(A0100004): STR R0, R1, 4H |
| ENDm CheckSet; |
| 00A9 | m(8FE00000): LDR LNK, SP, 0H |
| 00AA | m(4EE8000C): ADD SP, SP, CH |
| 00AB | m(C700000F): B LNK |
| |
| PROCEDURE CheckSetVal(VAR x: ORG.Item); |
| BEGINn |
| 00AC | n(4EE9000C): SUB SP, SP, CH |
| 00AD | n(AFE00000): STR LNK, SP, 0H |
| 00AE | n(A0E00004): STR R0, SP, 4H |
| 00AF | n(A1E00008): STR R1, SP, 8H |
| IF x.type.formo # ORB.Int THENp ORS.Mark("not Int")q;r x.type := ORB.setType |
| 00B0 | o(80E00004): LDR R0, SP, 4H |
| 00B1 | o(80000004): LDR R0, R0, 4H |
| 00B2 | o(D1093C4C): BLEQ MT [trap=4, pos=2364] |
| 00B3 | p(80000000): LDR R0, R0, 0H |
| 00B4 | p(40090004): SUB R0, R0, 4H |
| 00B5 | p(E1000009): BEQ 9 [00BFH] |
| 00B6 | q .FIXUP D |
| 00B6 | q(8D000011): LDR SB, MT, MOD0 [ORP] |
| 00B7 | q(40D800E0): ADD R0, SB, E0H ["not Int"] |
| 00B8 | q(41000008): MOV R1, R0, 8H |
| 00B9 | r .FIXUP P |
| 00B9 | r(F7709015): BL MOD7 [ORS] PROC9 |
| ELSIFs xt.mode = ORB.Const THENu |
| 00BA | s .FIXUP D |
| 00BA | s(8D800004): LDR SB, MT, MOD8 [ORB] |
| 00BB | s(80D0000B): LDR R0, SB, VAR11 |
| 00BC | s(81E00004): LDR R1, SP, 4H |
| 00BD | s(A0100004): STR R0, R1, 4H |
| 00BE | t(E7000010): B 16 [00CFH] |
| 00BF | u(80E00004): LDR R0, SP, 4H |
| 00C0 | u(80000000): LDR R0, R0, 0H |
| 00C1 | u(40090001): SUB R0, R0, 1H |
| 00C2 | u(E900000C): BNE 12 [00CFH] |
| IF (x.a < 0)v OR (wx.a >= 32)x THENy ORS.Mark("invalid set")z ENDa |
| 00C3 | v(80E00004): LDR R0, SP, 4H |
| 00C4 | v(80000008): LDR R0, R0, 8H |
| 00C5 | v(40090000): SUB R0, R0, 0H |
| 00C6 | w(E5000004): BLT 4 [00CBH] |
| 00C7 | x(80E00004): LDR R0, SP, 4H |
| 00C8 | x(80000008): LDR R0, R0, 8H |
| 00C9 | x(40090020): SUB R0, R0, 20H |
| 00CA | y(E5000004): BLT 4 [00CFH] |
| 00CB | z .FIXUP D |
| 00CB | z(8D000011): LDR SB, MT, MOD0 [ORP] |
| 00CC | z(40D800E8): ADD R0, SB, E8H ["invalid set"] |
| 00CD | z(4100000C): MOV R1, R0, CH |
| 00CE | a .FIXUP P |
| 00CE | a(F7709015): BL MOD7 [ORS] PROC9 |
| END |
| ENDb CheckSetVal; |
| 00CF | b(8FE00000): LDR LNK, SP, 0H |
| 00D0 | b(4EE8000C): ADD SP, SP, CH |
| 00D1 | b(C700000F): B LNK |
| |
| PROCEDURE CheckConst(VAR x: ORG.Item); |
| BEGINc |
| 00D2 | c(4EE9000C): SUB SP, SP, CH |
| 00D3 | c(AFE00000): STR LNK, SP, 0H |
| 00D4 | c(A0E00004): STR R0, SP, 4H |
| 00D5 | c(A1E00008): STR R1, SP, 8H |
| IF x.mode # ORB.Const THENd ORS.Mark("not a constant")e;f x.mode := ORB.Const ENDg |
| 00D6 | d(80E00004): LDR R0, SP, 4H |
| 00D7 | d(80000000): LDR R0, R0, 0H |
| 00D8 | d(40090001): SUB R0, R0, 1H |
| 00D9 | d(E1000007): BEQ 7 [00E1H] |
| 00DA | e .FIXUP D |
| 00DA | e(8D00000F): LDR SB, MT, MOD0 [ORP] |
| 00DB | e(40D800F4): ADD R0, SB, F4H ["not a constant"] |
| 00DC | e(4100000F): MOV R1, R0, FH |
| 00DD | f .FIXUP P |
| 00DD | f(F770900F): BL MOD7 [ORS] PROC9 |
| 00DE | g(40000001): MOV R0, R0, 1H |
| 00DF | g(81E00004): LDR R1, SP, 4H |
| 00E0 | g(A0100000): STR R0, R1, 0H |
| ENDh CheckConst; |
| 00E1 | h(8FE00000): LDR LNK, SP, 0H |
| 00E2 | h(4EE8000C): ADD SP, SP, CH |
| 00E3 | h(C700000F): B LNK |
| |
| PROCEDURE CheckReadOnly(VAR x: ORG.Item); |
| BEGINi |
| 00E4 | i(4EE9000C): SUB SP, SP, CH |
| 00E5 | i(AFE00000): STR LNK, SP, 0H |
| 00E6 | i(A0E00004): STR R0, SP, 4H |
| 00E7 | i(A1E00008): STR R1, SP, 8H |
| IF x.rdo THENj ORS.Mark("read-only")k ENDl |
| 00E8 | j(80E00004): LDR R0, SP, 4H |
| 00E9 | j(90000014): LDR R0, R0, 14H |
| 00EA | j(E1000004): BEQ 4 [00EFH] |
| 00EB | k .FIXUP D |
| 00EB | k(8D000011): LDR SB, MT, MOD0 [ORP] |
| 00EC | k(40D80104): ADD R0, SB, 104H ["read-only"] |
| 00ED | k(4100000A): MOV R1, R0, AH |
| 00EE | l .FIXUP P |
| 00EE | l(F7709011): BL MOD7 [ORS] PROC9 |
| ENDm CheckReadOnly; |
| 00EF | m(8FE00000): LDR LNK, SP, 0H |
| 00F0 | m(4EE8000C): ADD SP, SP, CH |
| 00F1 | m(C700000F): B LNK |
| |
| PROCEDURE CheckExport(VAR expo: BOOLEAN); |
| BEGINn |
| 00F2 | n(4EE90008): SUB SP, SP, 8H |
| 00F3 | n(AFE00000): STR LNK, SP, 0H |
| 00F4 | n(A0E00004): STR R0, SP, 4H |
| IF sym = ORS.times THENo |
| 00F5 | o .FIXUP D |
| 00F5 | o(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 00F6 | o(80D0001C): LDR R0, SB, 1CH [data] |
| 00F7 | o(40090001): SUB R0, R0, 1H |
| 00F8 | o(E900000E): BNE 14 [0107H] |
| expo := TRUE;p ORS.Get(sym)q;r |
| 00F9 | p(40000001): MOV R0, R0, 1H |
| 00FA | p(81E00004): LDR R1, SP, 4H |
| 00FB | p(B0100000): STR R0, R1, 0H |
| 00FC | q .FIXUP D |
| 00FC | q(8D000007): LDR SB, MT, MOD0 [ORP] |
| 00FD | q(40D8001C): ADD R0, SB, 1CH [data] |
| 00FE | r .FIXUP P |
| 00FE | r(F770A010): BL MOD7 [ORS] PROC10 |
| IF level # 0 THENs ORS.Mark("remove asterisk")t ENDu |
| 00FF | s .FIXUP D |
| 00FF | s(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0100 | s(80D00024): LDR R0, SB, 24H [data] |
| 0101 | s(E1000004): BEQ 4 [0106H] |
| 0102 | t .FIXUP D |
| 0102 | t(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0103 | t(40D80110): ADD R0, SB, 110H ["remove asterisk"] |
| 0104 | t(41000010): MOV R1, R0, 10H |
| 0105 | u .FIXUP P |
| 0105 | u(F7709007): BL MOD7 [ORS] PROC9 |
| ELSE expov := FALSE |
| 0106 | v(E7000003): B 3 [010AH] |
| ENDw |
| 0107 | w(40000000): MOV R0, R0, 0H |
| 0108 | w(81E00004): LDR R1, SP, 4H |
| 0109 | w(B0100000): STR R0, R1, 0H |
| ENDx CheckExport; |
| 010A | x(8FE00000): LDR LNK, SP, 0H |
| 010B | x(4EE80008): ADD SP, SP, 8H |
| 010C | x(C700000F): B LNK |
| |
| PROCEDURE IsExtension(t0, t1: ORB.Type): BOOLEAN; |
| BEGINy (*t1 is an extension of t0*) |
| 010D | y(4EE9000C): SUB SP, SP, CH |
| 010E | y(AFE00000): STR LNK, SP, 0H |
| 010F | y(A0E00004): STR R0, SP, 4H |
| 0110 | y(A1E00008): STR R1, SP, 8H |
| RETURN (t0 = t1)z OR (at1 # NIL)b & IsExtensionc(t0,d t1.basee)f |
| 0111 | z(80E00004): LDR R0, SP, 4H |
| 0112 | z(81E00008): LDR R1, SP, 8H |
| 0113 | z(00090001): SUB R0, R0, R1 |
| 0114 | a(E1000009): BEQ 9 [011EH] |
| 0115 | b(80E00008): LDR R0, SP, 8H |
| 0116 | c(E1000009): BEQ 9 [0120H] |
| 0117 | d(80E00004): LDR R0, SP, 4H |
| 0118 | e(81E00008): LDR R1, SP, 8H |
| 0119 | e(D10C784C): BLEQ MT [trap=4, pos=3192] |
| 011A | f(8110001C): LDR R1, R1, 1CH |
| ENDg IsExtension; |
| 011B | g(F7FFFFF1): BL -15 [010DH] |
| 011C | g(40090000): SUB R0, R0, 0H |
| 011D | g(E1000002): BEQ 2 [0120H] |
| 011E | g(40000001): MOV R0, R0, 1H |
| 011F | g(E7000001): B 1 [0121H] |
| 0120 | g(40000000): MOV R0, R0, 0H |
| 0121 | g(8FE00000): LDR LNK, SP, 0H |
| 0122 | g(4EE8000C): ADD SP, SP, CH |
| 0123 | g(C700000F): B LNK |
| |
| (* expressions *) |
| |
| PROCEDURE TypeTest(VAR x: ORG.Item; T: ORB.Type; guard: BOOLEAN); |
| VAR xt: ORB.Type; |
| BEGINh xt := x.type;i |
| 0124 | h(4EE90018): SUB SP, SP, 18H |
| 0125 | h(AFE00000): STR LNK, SP, 0H |
| 0126 | h(A0E00004): STR R0, SP, 4H |
| 0127 | h(A1E00008): STR R1, SP, 8H |
| 0128 | h(A2E0000C): STR R2, SP, CH |
| 0129 | h(A3E00010): STR R3, SP, 10H |
| 012A | i(80E00004): LDR R0, SP, 4H |
| 012B | i(80000004): LDR R0, R0, 4H |
| 012C | i(A0E00014): STR R0, SP, 14H |
| IF (T.formj IN {ORB.Pointer, ORB.Record})k & (lT.formm = xt.formn)o THENp |
| 012D | j(80E0000C): LDR R0, SP, CH |
| 012E | j(D10D214C): BLEQ MT [trap=4, pos=3361] |
| 012F | k(41002080): MOV R1, R0, 2080H |
| 0130 | k(80000000): LDR R0, R0, 0H |
| 0131 | k(40080001): ADD R0, R0, 1H |
| 0132 | k(01130000): ROR R1, R1, R0 |
| 0133 | l(E8000064): BPL 100 [0198H] |
| 0134 | m(80E0000C): LDR R0, SP, CH |
| 0135 | m(D10D494C): BLEQ MT [trap=4, pos=3401] |
| 0136 | n(81E00014): LDR R1, SP, 14H |
| 0137 | n(D10D534C): BLEQ MT [trap=4, pos=3411] |
| 0138 | o(80000000): LDR R0, R0, 0H |
| 0139 | o(81100000): LDR R1, R1, 0H |
| 013A | o(00090001): SUB R0, R0, R1 |
| 013B | p(E900005C): BNE 92 [0198H] |
| WHILE (xt # T)q & (rxt # NIL)s DOt xt := xt.baseu ENDv ; |
| 013C | q(80E00014): LDR R0, SP, 14H |
| 013D | q(81E0000C): LDR R1, SP, CH |
| 013E | q(00090001): SUB R0, R0, R1 |
| 013F | r(E1000007): BEQ 7 [0147H] |
| 0140 | s(80E00014): LDR R0, SP, 14H |
| 0141 | t(E1000005): BEQ 5 [0147H] |
| 0142 | u(80E00014): LDR R0, SP, 14H |
| 0143 | u(D10D8C4C): BLEQ MT [trap=4, pos=3468] |
| 0144 | v(8000001C): LDR R0, R0, 1CH |
| 0145 | v(A0E00014): STR R0, SP, 14H |
| 0146 | v(E7FFFFF5): B -11 [013CH] |
| IF xt # T THENw xt := x.type;x |
| 0147 | w(80E00014): LDR R0, SP, 14H |
| 0148 | w(81E0000C): LDR R1, SP, CH |
| 0149 | w(00090001): SUB R0, R0, R1 |
| 014A | w(E1000044): BEQ 68 [018FH] |
| 014B | x(80E00004): LDR R0, SP, 4H |
| 014C | x(80000004): LDR R0, R0, 4H |
| 014D | x(A0E00014): STR R0, SP, 14H |
| IF xt.formy = ORB.Pointer THENz |
| 014E | y(80E00014): LDR R0, SP, 14H |
| 014F | y(D10DC84C): BLEQ MT [trap=4, pos=3528] |
| 0150 | z(80000000): LDR R0, R0, 0H |
| 0151 | z(40090007): SUB R0, R0, 7H |
| 0152 | z(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 |
| 0153 | a(80E00014): LDR R0, SP, 14H |
| 0154 | a(D10DFC4C): BLEQ MT [trap=4, pos=3580] |
| 0155 | b(8000001C): LDR R0, R0, 1CH |
| 0156 | c(81E0000C): LDR R1, SP, CH |
| 0157 | c(D10E044C): BLEQ MT [trap=4, pos=3588] |
| 0158 | d(8110001C): LDR R1, R1, 1CH |
| 0159 | e(F7FFFFB3): BL -77 [010DH] |
| 015A | e(40090000): SUB R0, R0, 0H |
| 015B | e(E100000C): BEQ 12 [0168H] |
| 015C | f(80E00004): LDR R0, SP, 4H |
| 015D | f(81E00008): LDR R1, SP, 8H |
| 015E | g(82E0000C): LDR R2, SP, CH |
| 015F | g(D10E214C): BLEQ MT [trap=4, pos=3617] |
| 0160 | h(8220001C): LDR R2, R2, 1CH |
| 0161 | i(43000000): MOV R3, R0, 0H |
| 0162 | j(94E00010): LDR R4, SP, 10H |
| 0163 | k .FIXUP P |
| 0163 | k(F790D05E): BL MOD9 [ORG] PROC13 |
| ELSEl ORSm.Mark("not an extension")n |
| 0164 | l(80E0000C): LDR R0, SP, CH |
| 0165 | l(81E00004): LDR R1, SP, 4H |
| 0166 | l(A0100004): STR R0, R1, 4H |
| 0167 | m(E7000004): B 4 [016CH] |
| 0168 | n .FIXUP D |
| 0168 | n(8D000066): LDR SB, MT, MOD0 [ORP] |
| 0169 | n(40D80120): ADD R0, SB, 120H ["not an extension"] |
| 016A | n(41000011): MOV R1, R0, 11H |
| ENDo |
| 016B | o .FIXUP P |
| 016B | o(F7709008): BL MOD7 [ORS] PROC9 |
| ELSIF (pxt.formq = ORB.Record)r & (sx.mode = ORB.Par)t THENu |
| 016C | p(E7000021): B 33 [018EH] |
| 016D | q(80E00014): LDR R0, SP, 14H |
| 016E | q(D10E8E4C): BLEQ MT [trap=4, pos=3726] |
| 016F | r(80000000): LDR R0, R0, 0H |
| 0170 | r(4009000D): SUB R0, R0, DH |
| 0171 | s(E9000018): BNE 24 [018AH] |
| 0172 | t(80E00004): LDR R0, SP, 4H |
| 0173 | t(80000000): LDR R0, R0, 0H |
| 0174 | t(40090003): SUB R0, R0, 3H |
| 0175 | u(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 |
| 0176 | v(80E00014): LDR R0, SP, 14H |
| 0177 | w(81E0000C): LDR R1, SP, CH |
| 0178 | x(F7FFFF94): BL -108 [010DH] |
| 0179 | x(40090000): SUB R0, R0, 0H |
| 017A | x(E100000A): BEQ 10 [0185H] |
| 017B | y(80E00004): LDR R0, SP, 4H |
| 017C | y(81E00008): LDR R1, SP, 8H |
| 017D | z(82E0000C): LDR R2, SP, CH |
| 017E | a(43000001): MOV R3, R0, 1H |
| 017F | b(94E00010): LDR R4, SP, 10H |
| 0180 | c .FIXUP P |
| 0180 | c(F790D015): BL MOD9 [ORG] PROC13 |
| ELSEd ORSe.Mark("not an extension")f |
| 0181 | d(80E0000C): LDR R0, SP, CH |
| 0182 | d(81E00004): LDR R1, SP, 4H |
| 0183 | d(A0100004): STR R0, R1, 4H |
| 0184 | e(E7000004): B 4 [0189H] |
| 0185 | f .FIXUP D |
| 0185 | f(8D00001D): LDR SB, MT, MOD0 [ORP] |
| 0186 | f(40D80134): ADD R0, SB, 134H ["not an extension"] |
| 0187 | f(41000011): MOV R1, R0, 11H |
| ENDg |
| 0188 | g .FIXUP P |
| 0188 | g(F7709008): BL MOD7 [ORS] PROC9 |
| ELSE ORSh.Mark("incompatible types")i |
| 0189 | h(E7000004): B 4 [018EH] |
| 018A | i .FIXUP D |
| 018A | i(8D000005): LDR SB, MT, MOD0 [ORP] |
| 018B | i(40D80148): ADD R0, SB, 148H ["incompatible types"] |
| 018C | i(41000013): MOV R1, R0, 13H |
| ENDj |
| 018D | j .FIXUP P |
| 018D | j(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF ~kguard THENl ORG.MakeConstItem(x,m ORB.boolType,n 1)o |
| 018E | k(E7000008): B 8 [0197H] |
| 018F | l(90E00010): LDR R0, SP, 10H |
| 0190 | l(E9000006): BNE 6 [0197H] |
| 0191 | m(80E00004): LDR R0, SP, 4H |
| 0192 | m(81E00008): LDR R1, SP, 8H |
| 0193 | n .FIXUP D |
| 0193 | n(8D800009): LDR SB, MT, MOD8 [ORB] |
| 0194 | n(82D00007): LDR R2, SB, VAR7 |
| 0195 | o(43000001): MOV R3, R0, 1H |
| ENDp |
| 0196 | p .FIXUP P |
| 0196 | p(F7905009): BL MOD9 [ORG] PROC5 |
| ELSE ORSq.Mark("type mismatch")r |
| 0197 | q(E7000004): B 4 [019CH] |
| 0198 | r .FIXUP D |
| 0198 | r(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0199 | r(40D8015C): ADD R0, SB, 15CH ["type mismatch"] |
| 019A | r(4100000E): MOV R1, R0, EH |
| ENDs ; |
| 019B | s .FIXUP P |
| 019B | s(F7709005): BL MOD7 [ORS] PROC9 |
| IF ~guard THENt x.type := ORB.boolType ENDu |
| 019C | t(90E00010): LDR R0, SP, 10H |
| 019D | t(E9000004): BNE 4 [01A2H] |
| 019E | u .FIXUP D |
| 019E | u(8D800006): LDR SB, MT, MOD8 [ORB] |
| 019F | u(80D00007): LDR R0, SB, VAR7 |
| 01A0 | u(81E00004): LDR R1, SP, 4H |
| 01A1 | u(A0100004): STR R0, R1, 4H |
| ENDv TypeTest; |
| 01A2 | v(8FE00000): LDR LNK, SP, 0H |
| 01A3 | v(4EE80018): ADD SP, SP, 18H |
| 01A4 | v(C700000F): B LNK |
| |
| PROCEDURE selector(VAR x: ORG.Item); |
| VAR y: ORG.Item; obj: ORB.Object; |
| BEGINw |
| 01A5 | w(4EE90028): SUB SP, SP, 28H |
| 01A6 | w(AFE00000): STR LNK, SP, 0H |
| 01A7 | w(A0E00004): STR R0, SP, 4H |
| 01A8 | w(A1E00008): STR R1, SP, 8H |
| WHILE (sym = ORS.lbrak)x OR (ysym = ORS.period)z OR (asym = ORS.arrow)b |
| 01A9 | x .FIXUP D |
| 01A9 | x(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 01AA | x(80D0001C): LDR R0, SB, 1CH [data] |
| 01AB | x(4009001D): SUB R0, R0, 1DH |
| 01AC | y(E1000014): BEQ 20 [01C1H] |
| 01AD | z .FIXUP D |
| 01AD | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 01AE | z(80D0001C): LDR R0, SB, 1CH [data] |
| 01AF | z(40090012): SUB R0, R0, 12H |
| 01B0 | a(E1000010): BEQ 16 [01C1H] |
| 01B1 | b .FIXUP D |
| 01B1 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 01B2 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 01B3 | b(40090011): SUB R0, R0, 11H |
| OR (csym = ORS.lparen)d & (ex.type.formf IN {ORB.Record, ORB.Pointer})g DOh |
| 01B4 | c(E100000C): BEQ 12 [01C1H] |
| 01B5 | d .FIXUP D |
| 01B5 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 01B6 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 01B7 | d(4009001C): SUB R0, R0, 1CH |
| 01B8 | e(E90000CA): BNE 202 [0283H] |
| 01B9 | f(80E00004): LDR R0, SP, 4H |
| 01BA | f(80000004): LDR R0, R0, 4H |
| 01BB | f(D110F84C): BLEQ MT [trap=4, pos=4344] |
| 01BC | g(41002080): MOV R1, R0, 2080H |
| 01BD | g(80000000): LDR R0, R0, 0H |
| 01BE | g(40080001): ADD R0, R0, 1H |
| 01BF | g(01130000): ROR R1, R1, R0 |
| 01C0 | h(E80000C2): BPL 194 [0283H] |
| IF sym = ORS.lbrak THENi |
| 01C1 | i .FIXUP D |
| 01C1 | i(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 01C2 | i(80D0001C): LDR R0, SB, 1CH [data] |
| 01C3 | i(4009001D): SUB R0, R0, 1DH |
| 01C4 | i(E900002F): BNE 47 [01F4H] |
| REPEAT ORS.Get(sym)j;k expression(y)l;m |
| 01C5 | j .FIXUP D |
| 01C5 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 01C6 | j(40D8001C): ADD R0, SB, 1CH [data] |
| 01C7 | k .FIXUP P |
| 01C7 | k(F770A02C): BL MOD7 [ORS] PROC10 |
| 01C8 | l(40E8000C): ADD R0, SP, CH |
| 01C9 | l .FIXUP D |
| 01C9 | l(8D900004): LDR SB, MT, MOD9 [ORG] |
| 01CA | l(41D80001): ADD R1, SB, VAR1 |
| 01CB | m .FIXUP D |
| 01CB | m(8D000002): LDR SB, MT, MOD0 [ORP] |
| 01CC | m(82D00034): LDR R2, SB, 34H [data] |
| 01CD | m(D111635C): BLEQ MT [trap=5, pos=4451] |
| 01CE | m(D7000002): BL R2 |
| IF x.type.formn = ORB.Array THENo |
| 01CF | n(80E00004): LDR R0, SP, 4H |
| 01D0 | n(80000004): LDR R0, R0, 4H |
| 01D1 | n(D1117C4C): BLEQ MT [trap=4, pos=4476] |
| 01D2 | o(80000000): LDR R0, R0, 0H |
| 01D3 | o(4009000C): SUB R0, R0, CH |
| 01D4 | o(E9000011): BNE 17 [01E6H] |
| CheckInt(y)p;q ORG.Index(x,r y)s;t x.type := x.type.baseu |
| 01D5 | p(40E8000C): ADD R0, SP, CH |
| 01D6 | p .FIXUP D |
| 01D6 | p(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 01D7 | p(41D80001): ADD R1, SB, VAR1 |
| 01D8 | q(F7FFFE94): BL -364 [006DH] |
| 01D9 | r(80E00004): LDR R0, SP, 4H |
| 01DA | r(81E00008): LDR R1, SP, 8H |
| 01DB | s(42E8000C): ADD R2, SP, CH |
| 01DC | s .FIXUP D |
| 01DC | s(8D900006): LDR SB, MT, MOD9 [ORG] |
| 01DD | s(43D80001): ADD R3, SB, VAR1 |
| 01DE | t .FIXUP P |
| 01DE | t(F790A017): BL MOD9 [ORG] PROC10 |
| 01DF | u(80E00004): LDR R0, SP, 4H |
| 01E0 | u(80000004): LDR R0, R0, 4H |
| 01E1 | u(D111CD4C): BLEQ MT [trap=4, pos=4557] |
| ELSEv ORSw.Mark("not an array")x |
| 01E2 | v(8000001C): LDR R0, R0, 1CH |
| 01E3 | v(81E00004): LDR R1, SP, 4H |
| 01E4 | v(A0100004): STR R0, R1, 4H |
| 01E5 | w(E7000004): B 4 [01EAH] |
| 01E6 | x .FIXUP D |
| 01E6 | x(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 01E7 | x(40D8016C): ADD R0, SB, 16CH ["not an array"] |
| 01E8 | x(4100000D): MOV R1, R0, DH |
| ENDy |
| 01E9 | y .FIXUP P |
| 01E9 | y(F770900B): BL MOD7 [ORS] PROC9 |
| UNTIL sym # ORS.comma;z |
| 01EA | z .FIXUP D |
| 01EA | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 01EB | z(80D0001C): LDR R0, SB, 1CH [data] |
| 01EC | z(40090028): SUB R0, R0, 28H |
| 01ED | z(E1FFFFD7): BEQ -41 [01C5H] |
| Check(ORS.rbrak,a "no ]")b |
| 01EE | a(4000002D): MOV R0, R0, 2DH |
| 01EF | b .FIXUP D |
| 01EF | b(8D000005): LDR SB, MT, MOD0 [ORP] |
| 01F0 | b(41D8017C): ADD R1, SB, 17CH ["no ]"] |
| 01F1 | b(42000005): MOV R2, R0, 5H |
| ELSIFc symd = ORS.period THENe ORS.Get(sym)f;g |
| 01F2 | c(F7FFFE0D): BL -499 [0000H] |
| 01F3 | d(E700008E): B 142 [0282H] |
| 01F4 | e .FIXUP D |
| 01F4 | e(8D000005): LDR SB, MT, MOD0 [ORP] |
| 01F5 | e(80D0001C): LDR R0, SB, 1CH [data] |
| 01F6 | e(40090012): SUB R0, R0, 12H |
| 01F7 | e(E900003E): BNE 62 [0236H] |
| 01F8 | f .FIXUP D |
| 01F8 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 01F9 | f(40D8001C): ADD R0, SB, 1CH [data] |
| 01FA | g .FIXUP P |
| 01FA | g(F770A011): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENh |
| 01FB | h .FIXUP D |
| 01FB | h(8D000003): LDR SB, MT, MOD0 [ORP] |
| 01FC | h(80D0001C): LDR R0, SB, 1CH [data] |
| 01FD | h(4009001F): SUB R0, R0, 1FH |
| 01FE | h(E9000032): BNE 50 [0231H] |
| IF x.type.formi = ORB.Pointer THENj ORG.DeRef(x)k;l x.type := x.type.basem ENDn ; |
| 01FF | i(80E00004): LDR R0, SP, 4H |
| 0200 | i(80000004): LDR R0, R0, 4H |
| 0201 | i(D112AC4C): BLEQ MT [trap=4, pos=4780] |
| 0202 | j(80000000): LDR R0, R0, 0H |
| 0203 | j(40090007): SUB R0, R0, 7H |
| 0204 | j(E9000009): BNE 9 [020EH] |
| 0205 | k(80E00004): LDR R0, SP, 4H |
| 0206 | k(81E00008): LDR R1, SP, 8H |
| 0207 | l .FIXUP P |
| 0207 | l(F790B00D): BL MOD9 [ORG] PROC11 |
| 0208 | m(80E00004): LDR R0, SP, 4H |
| 0209 | m(80000004): LDR R0, R0, 4H |
| 020A | m(D112E34C): BLEQ MT [trap=4, pos=4835] |
| 020B | n(8000001C): LDR R0, R0, 1CH |
| 020C | n(81E00004): LDR R1, SP, 4H |
| 020D | n(A0100004): STR R0, R1, 4H |
| IF x.type.formo = ORB.Record THENp |
| 020E | o(80E00004): LDR R0, SP, 4H |
| 020F | o(80000004): LDR R0, R0, 4H |
| 0210 | o(D113024C): BLEQ MT [trap=4, pos=4866] |
| 0211 | p(80000000): LDR R0, R0, 0H |
| 0212 | p(4009000D): SUB R0, R0, DH |
| 0213 | p(E9000018): BNE 24 [022CH] |
| obj := ORB.thisfield(x.type)q;r ORS.Get(sym)s;t |
| 0214 | q(80E00004): LDR R0, SP, 4H |
| 0215 | q(80000004): LDR R0, R0, 4H |
| 0216 | r .FIXUP P |
| 0216 | r(F781200F): BL MOD8 [ORB] PROC18 |
| 0217 | r(A0E00024): STR R0, SP, 24H |
| 0218 | s .FIXUP D |
| 0218 | s(8D00001D): LDR SB, MT, MOD0 [ORP] |
| 0219 | s(40D8001C): ADD R0, SB, 1CH [data] |
| 021A | t .FIXUP P |
| 021A | t(F770A004): BL MOD7 [ORS] PROC10 |
| IF obj # NIL THENu ORG.Field(x,v obj)w;x x.type := obj.typey |
| 021B | u(80E00024): LDR R0, SP, 24H |
| 021C | u(E100000A): BEQ 10 [0227H] |
| 021D | v(80E00004): LDR R0, SP, 4H |
| 021E | v(81E00008): LDR R1, SP, 8H |
| 021F | w(82E00024): LDR R2, SP, 24H |
| 0220 | x .FIXUP P |
| 0220 | x(F7909006): BL MOD9 [ORG] PROC9 |
| 0221 | y(80E00024): LDR R0, SP, 24H |
| 0222 | y(D113904C): BLEQ MT [trap=4, pos=5008] |
| ELSEz ORSa.Mark("undef")b |
| 0223 | z(80000010): LDR R0, R0, 10H |
| 0224 | z(81E00004): LDR R1, SP, 4H |
| 0225 | z(A0100004): STR R0, R1, 4H |
| 0226 | a(E7000004): B 4 [022BH] |
| 0227 | b .FIXUP D |
| 0227 | b(8D00000F): LDR SB, MT, MOD0 [ORP] |
| 0228 | b(40D80184): ADD R0, SB, 184H ["undef"] |
| 0229 | b(41000006): MOV R1, R0, 6H |
| ENDc |
| 022A | c .FIXUP P |
| 022A | c(F770900A): BL MOD7 [ORS] PROC9 |
| ELSE ORSd.Mark("not a record")e |
| 022B | d(E7000004): B 4 [0230H] |
| 022C | e .FIXUP D |
| 022C | e(8D000005): LDR SB, MT, MOD0 [ORP] |
| 022D | e(40D8018C): ADD R0, SB, 18CH ["not a record"] |
| 022E | e(4100000D): MOV R1, R0, DH |
| ENDf |
| 022F | f .FIXUP P |
| 022F | f(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE ORSg.Mark("ident?")h |
| 0230 | g(E7000004): B 4 [0235H] |
| 0231 | h .FIXUP D |
| 0231 | h(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0232 | h(40D8019C): ADD R0, SB, 19CH ["ident?"] |
| 0233 | h(41000007): MOV R1, R0, 7H |
| ENDi |
| 0234 | i .FIXUP P |
| 0234 | i(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symj = ORS.arrow THENk |
| 0235 | j(E700004C): B 76 [0282H] |
| 0236 | k .FIXUP D |
| 0236 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0237 | k(80D0001C): LDR R0, SB, 1CH [data] |
| 0238 | k(40090011): SUB R0, R0, 11H |
| 0239 | k(E9000018): BNE 24 [0252H] |
| ORS.Get(sym)l;m |
| 023A | l .FIXUP D |
| 023A | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 023B | l(40D8001C): ADD R0, SB, 1CH [data] |
| 023C | m .FIXUP P |
| 023C | m(F770A008): BL MOD7 [ORS] PROC10 |
| IF x.type.formn = ORB.Pointer THENo ORG.DeRef(x)p;q x.type := x.type.baser |
| 023D | n(80E00004): LDR R0, SP, 4H |
| 023E | n(80000004): LDR R0, R0, 4H |
| 023F | n(D114734C): BLEQ MT [trap=4, pos=5235] |
| 0240 | o(80000000): LDR R0, R0, 0H |
| 0241 | o(40090007): SUB R0, R0, 7H |
| 0242 | o(E900000A): BNE 10 [024DH] |
| 0243 | p(80E00004): LDR R0, SP, 4H |
| 0244 | p(81E00008): LDR R1, SP, 8H |
| 0245 | q .FIXUP P |
| 0245 | q(F790B009): BL MOD9 [ORG] PROC11 |
| 0246 | r(80E00004): LDR R0, SP, 4H |
| 0247 | r(80000004): LDR R0, R0, 4H |
| 0248 | r(D114AA4C): BLEQ MT [trap=4, pos=5290] |
| ELSEs ORSt.Mark("not a pointer")u |
| 0249 | s(8000001C): LDR R0, R0, 1CH |
| 024A | s(81E00004): LDR R1, SP, 4H |
| 024B | s(A0100004): STR R0, R1, 4H |
| 024C | t(E7000004): B 4 [0251H] |
| 024D | u .FIXUP D |
| 024D | u(8D000013): LDR SB, MT, MOD0 [ORP] |
| 024E | u(40D801A4): ADD R0, SB, 1A4H ["not a pointer"] |
| 024F | u(4100000E): MOV R1, R0, EH |
| ENDv |
| 0250 | v .FIXUP P |
| 0250 | v(F770900B): BL MOD7 [ORS] PROC9 |
| ELSIF (wsym = ORS.lparen)x & (yx.type.formz IN {ORB.Record, ORB.Pointer})a THENb (*type guard*) |
| 0251 | w(E7000030): B 48 [0282H] |
| 0252 | x .FIXUP D |
| 0252 | x(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0253 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 0254 | x(4009001C): SUB R0, R0, 1CH |
| 0255 | y(E900002C): BNE 44 [0282H] |
| 0256 | z(80E00004): LDR R0, SP, 4H |
| 0257 | z(80000004): LDR R0, R0, 4H |
| 0258 | z(D1150B4C): BLEQ MT [trap=4, pos=5387] |
| 0259 | a(41002080): MOV R1, R0, 2080H |
| 025A | a(80000000): LDR R0, R0, 0H |
| 025B | a(40080001): ADD R0, R0, 1H |
| 025C | a(01130000): ROR R1, R1, R0 |
| 025D | b(E8000024): BPL 36 [0282H] |
| ORS.Get(sym)c;d |
| 025E | c .FIXUP D |
| 025E | c(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 025F | c(40D8001C): ADD R0, SB, 1CH [data] |
| 0260 | d .FIXUP P |
| 0260 | d(F770A010): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENe |
| 0261 | e .FIXUP D |
| 0261 | e(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0262 | e(80D0001C): LDR R0, SB, 1CH [data] |
| 0263 | e(4009001F): SUB R0, R0, 1FH |
| 0264 | e(E9000014): BNE 20 [0279H] |
| qualident(obj)f;g |
| 0265 | f(40E80024): ADD R0, SP, 24H |
| 0266 | g(F7FFFDAD): BL -595 [0014H] |
| IF obj.classh = ORB.Typ THENi TypeTest(x,j obj.typek,l TRUE)m |
| 0267 | h(80E00024): LDR R0, SP, 24H |
| 0268 | h(D115A44C): BLEQ MT [trap=4, pos=5540] |
| 0269 | i(90000000): LDR R0, R0, 0H |
| 026A | i(40090005): SUB R0, R0, 5H |
| 026B | i(E9000008): BNE 8 [0274H] |
| 026C | j(80E00004): LDR R0, SP, 4H |
| 026D | j(81E00008): LDR R1, SP, 8H |
| 026E | k(82E00024): LDR R2, SP, 24H |
| 026F | k(D115C84C): BLEQ MT [trap=4, pos=5576] |
| 0270 | l(82200010): LDR R2, R2, 10H |
| 0271 | m(43000001): MOV R3, R0, 1H |
| ELSEn ORSo.Mark("guard type expected")p |
| 0272 | n(F7FFFEB1): BL -335 [0124H] |
| 0273 | o(E7000004): B 4 [0278H] |
| 0274 | p .FIXUP D |
| 0274 | p(8D000013): LDR SB, MT, MOD0 [ORP] |
| 0275 | p(40D801B4): ADD R0, SB, 1B4H ["guard type expected"] |
| 0276 | p(41000014): MOV R1, R0, 14H |
| ENDq |
| 0277 | q .FIXUP P |
| 0277 | q(F7709017): BL MOD7 [ORS] PROC9 |
| ELSE ORSr.Mark("not an identifier")s |
| 0278 | r(E7000004): B 4 [027DH] |
| 0279 | s .FIXUP D |
| 0279 | s(8D000005): LDR SB, MT, MOD0 [ORP] |
| 027A | s(40D801C8): ADD R0, SB, 1C8H ["not an identifier"] |
| 027B | s(41000012): MOV R1, R0, 12H |
| ENDt ; |
| 027C | t .FIXUP P |
| 027C | t(F7709005): BL MOD7 [ORS] PROC9 |
| Check(ORS.rparen,u " ) missing")v |
| 027D | u(4000002C): MOV R0, R0, 2CH |
| 027E | v .FIXUP D |
| 027E | v(8D000005): LDR SB, MT, MOD0 [ORP] |
| 027F | v(41D801DC): ADD R1, SB, 1DCH [" ) missing"] |
| 0280 | v(4200000B): MOV R2, R0, BH |
| ENDw |
| 0281 | w(F7FFFD7E): BL -642 [0000H] |
| ENDx |
| 0282 | x(E7FFFF26): B -218 [01A9H] |
| ENDy selector; |
| 0283 | y(8FE00000): LDR LNK, SP, 0H |
| 0284 | y(4EE80028): ADD SP, SP, 28H |
| 0285 | y(C700000F): B LNK |
| |
| PROCEDURE EqualSignatures(t0, t1: ORB.Type): BOOLEAN; |
| VAR p0, p1: ORB.Object; com: BOOLEAN; |
| BEGINz com := TRUE;a |
| 0286 | z(4EE90018): SUB SP, SP, 18H |
| 0287 | z(AFE00000): STR LNK, SP, 0H |
| 0288 | z(A0E00004): STR R0, SP, 4H |
| 0289 | z(A1E00008): STR R1, SP, 8H |
| 028A | a(40000001): MOV R0, R0, 1H |
| 028B | a(B0E00014): STR R0, SP, 14H |
| IF (t0.baseb = t1.basec)d & (et0.nofparf = t1.nofparg)h THENi |
| 028C | b(80E00004): LDR R0, SP, 4H |
| 028D | b(D117174C): BLEQ MT [trap=4, pos=5911] |
| 028E | c(81E00008): LDR R1, SP, 8H |
| 028F | c(D117214C): BLEQ MT [trap=4, pos=5921] |
| 0290 | d(8000001C): LDR R0, R0, 1CH |
| 0291 | d(8110001C): LDR R1, R1, 1CH |
| 0292 | d(00090001): SUB R0, R0, R1 |
| 0293 | e(E9000076): BNE 118 [030AH] |
| 0294 | f(80E00004): LDR R0, SP, 4H |
| 0295 | f(D1172F4C): BLEQ MT [trap=4, pos=5935] |
| 0296 | g(81E00008): LDR R1, SP, 8H |
| 0297 | g(D1173B4C): BLEQ MT [trap=4, pos=5947] |
| 0298 | h(8000000C): LDR R0, R0, CH |
| 0299 | h(8110000C): LDR R1, R1, CH |
| 029A | h(00090001): SUB R0, R0, R1 |
| 029B | i(E900006E): BNE 110 [030AH] |
| p0 := t0.dscj;k p1 := t1.dscl;m |
| 029C | j(80E00004): LDR R0, SP, 4H |
| 029D | j(D117544C): BLEQ MT [trap=4, pos=5972] |
| 029E | k(80000014): LDR R0, R0, 14H |
| 029F | k(A0E0000C): STR R0, SP, CH |
| 02A0 | l(80E00008): LDR R0, SP, 8H |
| 02A1 | l(D117624C): BLEQ MT [trap=4, pos=5986] |
| 02A2 | m(80000014): LDR R0, R0, 14H |
| 02A3 | m(A0E00010): STR R0, SP, 10H |
| WHILE p0 # NIL DOn |
| 02A4 | n(80E0000C): LDR R0, SP, CH |
| 02A5 | n(E1000063): BEQ 99 [0309H] |
| IF (p0.classo = p1.classp)q & (rp0.rdos = p1.rdot)u & |
| 02A6 | o(80E0000C): LDR R0, SP, CH |
| 02A7 | o(D117904C): BLEQ MT [trap=4, pos=6032] |
| 02A8 | p(81E00010): LDR R1, SP, 10H |
| 02A9 | p(D1179B4C): BLEQ MT [trap=4, pos=6043] |
| 02AA | q(90000000): LDR R0, R0, 0H |
| 02AB | q(91100000): LDR R1, R1, 0H |
| 02AC | q(00090001): SUB R0, R0, R1 |
| 02AD | r(E9000056): BNE 86 [0304H] |
| 02AE | s(80E0000C): LDR R0, SP, CH |
| 02AF | s(D117A74C): BLEQ MT [trap=4, pos=6055] |
| 02B0 | t(81E00010): LDR R1, SP, 10H |
| 02B1 | t(D117B04C): BLEQ MT [trap=4, pos=6064] |
| 02B2 | u(90000003): LDR R0, R0, 3H |
| 02B3 | u(91100003): LDR R1, R1, 3H |
| 02B4 | u(00090001): SUB R0, R0, R1 |
| (v(p0.typew = p1.typex)y OR |
| 02B5 | v(E900004E): BNE 78 [0304H] |
| 02B6 | w(80E0000C): LDR R0, SP, CH |
| 02B7 | w(D117C74C): BLEQ MT [trap=4, pos=6087] |
| 02B8 | x(81E00010): LDR R1, SP, 10H |
| 02B9 | x(D117D14C): BLEQ MT [trap=4, pos=6097] |
| 02BA | y(80000010): LDR R0, R0, 10H |
| 02BB | y(81100010): LDR R1, R1, 10H |
| 02BC | y(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 |
| 02BD | z(E100003D): BEQ 61 [02FBH] |
| 02BE | a(80E0000C): LDR R0, SP, CH |
| 02BF | a(D117E84C): BLEQ MT [trap=4, pos=6120] |
| 02C0 | b(80000010): LDR R0, R0, 10H |
| 02C1 | b(D117ED4C): BLEQ MT [trap=4, pos=6125] |
| 02C2 | c(80000000): LDR R0, R0, 0H |
| 02C3 | c(4009000C): SUB R0, R0, CH |
| 02C4 | d(E900001F): BNE 31 [02E4H] |
| 02C5 | e(80E00010): LDR R0, SP, 10H |
| 02C6 | e(D118054C): BLEQ MT [trap=4, pos=6149] |
| 02C7 | f(80000010): LDR R0, R0, 10H |
| 02C8 | f(D1180A4C): BLEQ MT [trap=4, pos=6154] |
| 02C9 | g(80000000): LDR R0, R0, 0H |
| 02CA | g(4009000C): SUB R0, R0, CH |
| 02CB | h(E9000018): BNE 24 [02E4H] |
| 02CC | i(80E0000C): LDR R0, SP, CH |
| 02CD | i(D118224C): BLEQ MT [trap=4, pos=6178] |
| 02CE | j(80000010): LDR R0, R0, 10H |
| 02CF | j(D118264C): BLEQ MT [trap=4, pos=6182] |
| 02D0 | k(81E00010): LDR R1, SP, 10H |
| 02D1 | k(D118304C): BLEQ MT [trap=4, pos=6192] |
| 02D2 | l(81100010): LDR R1, R1, 10H |
| 02D3 | l(D118344C): BLEQ MT [trap=4, pos=6196] |
| 02D4 | m(80000010): LDR R0, R0, 10H |
| 02D5 | m(81100010): LDR R1, R1, 10H |
| 02D6 | m(00090001): SUB R0, R0, R1 |
| 02D7 | n(E900000C): BNE 12 [02E4H] |
| 02D8 | o(80E0000C): LDR R0, SP, CH |
| 02D9 | o(D118404C): BLEQ MT [trap=4, pos=6208] |
| 02DA | p(80000010): LDR R0, R0, 10H |
| 02DB | p(D118454C): BLEQ MT [trap=4, pos=6213] |
| 02DC | q(81E00010): LDR R1, SP, 10H |
| 02DD | q(D1184F4C): BLEQ MT [trap=4, pos=6223] |
| 02DE | r(81100010): LDR R1, R1, 10H |
| 02DF | r(D118544C): BLEQ MT [trap=4, pos=6228] |
| 02E0 | s(8000001C): LDR R0, R0, 1CH |
| 02E1 | s(8110001C): LDR R1, R1, 1CH |
| 02E2 | s(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 |
| 02E3 | t(E1000017): BEQ 23 [02FBH] |
| 02E4 | u(80E0000C): LDR R0, SP, CH |
| 02E5 | u(D1186B4C): BLEQ MT [trap=4, pos=6251] |
| 02E6 | v(80000010): LDR R0, R0, 10H |
| 02E7 | v(D118704C): BLEQ MT [trap=4, pos=6256] |
| 02E8 | w(80000000): LDR R0, R0, 0H |
| 02E9 | w(4009000A): SUB R0, R0, AH |
| 02EA | x(E9000019): BNE 25 [0304H] |
| 02EB | y(80E00010): LDR R0, SP, 10H |
| 02EC | y(D118874C): BLEQ MT [trap=4, pos=6279] |
| 02ED | z(80000010): LDR R0, R0, 10H |
| 02EE | z(D1188C4C): BLEQ MT [trap=4, pos=6284] |
| 02EF | a(80000000): LDR R0, R0, 0H |
| 02F0 | a(4009000A): SUB R0, R0, AH |
| 02F1 | b(E9000012): BNE 18 [0304H] |
| 02F2 | c(80E0000C): LDR R0, SP, CH |
| 02F3 | c(D118B24C): BLEQ MT [trap=4, pos=6322] |
| 02F4 | d(80000010): LDR R0, R0, 10H |
| 02F5 | e(81E00010): LDR R1, SP, 10H |
| 02F6 | e(D118BB4C): BLEQ MT [trap=4, pos=6331] |
| 02F7 | f(81100010): LDR R1, R1, 10H |
| 02F8 | g(F7FFFF8D): BL -115 [0286H] |
| 02F9 | g(40090000): SUB R0, R0, 0H |
| THENh p0 := p0.nexti;j p1 := p1.nextk |
| 02FA | h(E1000009): BEQ 9 [0304H] |
| 02FB | i(80E0000C): LDR R0, SP, CH |
| 02FC | i(D118D84C): BLEQ MT [trap=4, pos=6360] |
| 02FD | j(80000008): LDR R0, R0, 8H |
| 02FE | j(A0E0000C): STR R0, SP, CH |
| 02FF | k(80E00010): LDR R0, SP, 10H |
| 0300 | k(D118E74C): BLEQ MT [trap=4, pos=6375] |
| ELSEl p0m := NIL;n com := FALSE |
| 0301 | l(80000008): LDR R0, R0, 8H |
| 0302 | l(A0E00010): STR R0, SP, 10H |
| 0303 | m(E7000004): B 4 [0308H] |
| 0304 | n(40000000): MOV R0, R0, 0H |
| 0305 | n(A0E0000C): STR R0, SP, CH |
| ENDo |
| 0306 | o(40000000): MOV R0, R0, 0H |
| 0307 | o(B0E00014): STR R0, SP, 14H |
| ENDp |
| 0308 | p(E7FFFF9B): B -101 [02A4H] |
| ELSE comq := FALSE |
| 0309 | q(E7000002): B 2 [030CH] |
| ENDr ; |
| 030A | r(40000000): MOV R0, R0, 0H |
| 030B | r(B0E00014): STR R0, SP, 14H |
| RETURN com |
| ENDs EqualSignatures; |
| 030C | s(90E00014): LDR R0, SP, 14H |
| 030D | s(8FE00000): LDR LNK, SP, 0H |
| 030E | s(4EE80018): ADD SP, SP, 18H |
| 030F | s(C700000F): B LNK |
| |
| PROCEDURE CompTypes(t0, t1: ORB.Type; varpar: BOOLEAN): BOOLEAN; |
| BEGINt (*check for assignment compatibility*) |
| 0310 | t(4EE90010): SUB SP, SP, 10H |
| 0311 | t(AFE00000): STR LNK, SP, 0H |
| 0312 | t(A0E00004): STR R0, SP, 4H |
| 0313 | t(A1E00008): STR R1, SP, 8H |
| 0314 | t(A2E0000C): STR R2, SP, CH |
| RETURN (t0 = t1)u (*openarray assignment disallowed in ORG*) |
| 0315 | u(80E00004): LDR R0, SP, 4H |
| 0316 | u(81E00008): LDR R1, SP, 8H |
| 0317 | u(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 |
| 0318 | v(E1000059): BEQ 89 [0372H] |
| 0319 | w(80E00004): LDR R0, SP, 4H |
| 031A | w(D11A324C): BLEQ MT [trap=4, pos=6706] |
| 031B | x(80000000): LDR R0, R0, 0H |
| 031C | x(4009000C): SUB R0, R0, CH |
| 031D | y(E9000015): BNE 21 [0333H] |
| 031E | z(80E00008): LDR R0, SP, 8H |
| 031F | z(D11A4A4C): BLEQ MT [trap=4, pos=6730] |
| 0320 | a(80000000): LDR R0, R0, 0H |
| 0321 | a(4009000C): SUB R0, R0, CH |
| 0322 | b(E9000010): BNE 16 [0333H] |
| 0323 | c(80E00004): LDR R0, SP, 4H |
| 0324 | c(D11A624C): BLEQ MT [trap=4, pos=6754] |
| 0325 | d(81E00008): LDR R1, SP, 8H |
| 0326 | d(D11A6D4C): BLEQ MT [trap=4, pos=6765] |
| 0327 | e(8000001C): LDR R0, R0, 1CH |
| 0328 | e(8110001C): LDR R1, R1, 1CH |
| 0329 | e(00090001): SUB R0, R0, R1 |
| 032A | f(E9000008): BNE 8 [0333H] |
| 032B | g(80E00004): LDR R0, SP, 4H |
| 032C | g(D11A784C): BLEQ MT [trap=4, pos=6776] |
| 032D | h(81E00008): LDR R1, SP, 8H |
| 032E | h(D11A814C): BLEQ MT [trap=4, pos=6785] |
| 032F | i(80000010): LDR R0, R0, 10H |
| 0330 | i(81100010): LDR R1, R1, 10H |
| 0331 | i(00090001): SUB R0, R0, R1 |
| OR (jt0.formk = ORB.Record)l & (mt1.formn = ORB.Record)o & IsExtensionp(t0,q t1)r |
| 0332 | j(E100003F): BEQ 63 [0372H] |
| 0333 | k(80E00004): LDR R0, SP, 4H |
| 0334 | k(D11A944C): BLEQ MT [trap=4, pos=6804] |
| 0335 | l(80000000): LDR R0, R0, 0H |
| 0336 | l(4009000D): SUB R0, R0, DH |
| 0337 | m(E900000A): BNE 10 [0342H] |
| 0338 | n(80E00008): LDR R0, SP, 8H |
| 0339 | n(D11AAD4C): BLEQ MT [trap=4, pos=6829] |
| 033A | o(80000000): LDR R0, R0, 0H |
| 033B | o(4009000D): SUB R0, R0, DH |
| 033C | p(E9000005): BNE 5 [0342H] |
| 033D | q(80E00004): LDR R0, SP, 4H |
| 033E | r(81E00008): LDR R1, SP, 8H |
| ORs ~tvarpar &u |
| 033F | s(F7FFFDCD): BL -563 [010DH] |
| 0340 | s(40090000): SUB R0, R0, 0H |
| 0341 | t(E9000030): BNE 48 [0372H] |
| 0342 | u(90E0000C): LDR R0, SP, CH |
| (v(t0.formw = ORB.Pointer)x & (yt1.formz = ORB.Pointer)a & IsExtensionb(t0.basec,d t1.basee)f |
| 0343 | v(E9000030): BNE 48 [0374H] |
| 0344 | w(80E00004): LDR R0, SP, 4H |
| 0345 | w(D11AF74C): BLEQ MT [trap=4, pos=6903] |
| 0346 | x(80000000): LDR R0, R0, 0H |
| 0347 | x(40090007): SUB R0, R0, 7H |
| 0348 | y(E900000E): BNE 14 [0357H] |
| 0349 | z(80E00008): LDR R0, SP, 8H |
| 034A | z(D11B114C): BLEQ MT [trap=4, pos=6929] |
| 034B | a(80000000): LDR R0, R0, 0H |
| 034C | a(40090007): SUB R0, R0, 7H |
| 034D | b(E9000009): BNE 9 [0357H] |
| 034E | c(80E00004): LDR R0, SP, 4H |
| 034F | c(D11B374C): BLEQ MT [trap=4, pos=6967] |
| 0350 | d(8000001C): LDR R0, R0, 1CH |
| 0351 | e(81E00008): LDR R1, SP, 8H |
| 0352 | e(D11B404C): BLEQ MT [trap=4, pos=6976] |
| 0353 | f(8110001C): LDR R1, R1, 1CH |
| ORg (ht0.formi = ORB.Proc)j & (kt1.forml = ORB.Proc)m & EqualSignaturesn(t0,o t1)p |
| 0354 | g(F7FFFDB8): BL -584 [010DH] |
| 0355 | g(40090000): SUB R0, R0, 0H |
| 0356 | h(E900001B): BNE 27 [0372H] |
| 0357 | i(80E00004): LDR R0, SP, 4H |
| 0358 | i(D11B554C): BLEQ MT [trap=4, pos=6997] |
| 0359 | j(80000000): LDR R0, R0, 0H |
| 035A | j(4009000A): SUB R0, R0, AH |
| 035B | k(E900000A): BNE 10 [0366H] |
| 035C | l(80E00008): LDR R0, SP, 8H |
| 035D | l(D11B6C4C): BLEQ MT [trap=4, pos=7020] |
| 035E | m(80000000): LDR R0, R0, 0H |
| 035F | m(4009000A): SUB R0, R0, AH |
| 0360 | n(E9000005): BNE 5 [0366H] |
| 0361 | o(80E00004): LDR R0, SP, 4H |
| 0362 | p(81E00008): LDR R1, SP, 8H |
| ORq (rt0.forms IN {ORB.Pointer, ORB.Proc})t & (ut1.formv = ORB.NilTyp)w) |
| 0363 | q(F7FFFF22): BL -222 [0286H] |
| 0364 | q(40090000): SUB R0, R0, 0H |
| 0365 | r(E900000C): BNE 12 [0372H] |
| 0366 | s(80E00004): LDR R0, SP, 4H |
| 0367 | s(D11BA64C): BLEQ MT [trap=4, pos=7078] |
| 0368 | t(41000480): MOV R1, R0, 480H |
| 0369 | t(80000000): LDR R0, R0, 0H |
| 036A | t(40080001): ADD R0, R0, 1H |
| 036B | t(01130000): ROR R1, R1, R0 |
| 036C | u(E8000007): BPL 7 [0374H] |
| 036D | v(80E00008): LDR R0, SP, 8H |
| 036E | v(D11BCD4C): BLEQ MT [trap=4, pos=7117] |
| 036F | w(80000000): LDR R0, R0, 0H |
| 0370 | w(40090008): SUB R0, R0, 8H |
| ENDx CompTypes; |
| 0371 | x(E9000002): BNE 2 [0374H] |
| 0372 | x(40000001): MOV R0, R0, 1H |
| 0373 | x(E7000001): B 1 [0375H] |
| 0374 | x(40000000): MOV R0, R0, 0H |
| 0375 | x(8FE00000): LDR LNK, SP, 0H |
| 0376 | x(4EE80010): ADD SP, SP, 10H |
| 0377 | x(C700000F): B LNK |
| |
| PROCEDURE Parameter(par: ORB.Object); |
| VAR x: ORG.Item; varpar: BOOLEAN; |
| BEGINy expression(x)z;a |
| 0378 | y(4EE90024): SUB SP, SP, 24H |
| 0379 | y(AFE00000): STR LNK, SP, 0H |
| 037A | y(A0E00004): STR R0, SP, 4H |
| 037B | z(40E80008): ADD R0, SP, 8H |
| 037C | z .FIXUP D |
| 037C | z(8D9000FE): LDR SB, MT, MOD9 [ORG] |
| 037D | z(41D80001): ADD R1, SB, VAR1 |
| 037E | a .FIXUP D |
| 037E | a(8D000002): LDR SB, MT, MOD0 [ORP] |
| 037F | a(82D00034): LDR R2, SB, 34H [data] |
| 0380 | a(D11C535C): BLEQ MT [trap=5, pos=7251] |
| 0381 | a(D7000002): BL R2 |
| IF par # NIL THENb |
| 0382 | b(80E00004): LDR R0, SP, 4H |
| 0383 | b(E10000D6): BEQ 214 [045AH] |
| varpar := par.classc = ORB.Par;d |
| 0384 | c(80E00004): LDR R0, SP, 4H |
| 0385 | c(D11C834C): BLEQ MT [trap=4, pos=7299] |
| 0386 | d(90000000): LDR R0, R0, 0H |
| 0387 | d(40090003): SUB R0, R0, 3H |
| 0388 | d(E9000002): BNE 2 [038BH] |
| 0389 | d(40000001): MOV R0, R0, 1H |
| 038A | d(E7000001): B 1 [038CH] |
| 038B | d(40000000): MOV R0, R0, 0H |
| 038C | d(B0E00020): STR R0, SP, 20H |
| IF CompTypes(par.typee,f x.type,g varpar)h THENi |
| 038D | e(80E00004): LDR R0, SP, 4H |
| 038E | e(D11CAA4C): BLEQ MT [trap=4, pos=7338] |
| 038F | f(80000010): LDR R0, R0, 10H |
| 0390 | g(81E0000C): LDR R1, SP, CH |
| 0391 | h(92E00020): LDR R2, SP, 20H |
| 0392 | i(F7FFFF7D): BL -131 [0310H] |
| 0393 | i(40090000): SUB R0, R0, 0H |
| 0394 | i(E1000017): BEQ 23 [03ACH] |
| IF ~varpar THENj ORG.ValueParam(x)k |
| 0395 | j(90E00020): LDR R0, SP, 20H |
| 0396 | j(E9000005): BNE 5 [039CH] |
| 0397 | k(40E80008): ADD R0, SP, 8H |
| 0398 | k .FIXUP D |
| 0398 | k(8D90001A): LDR SB, MT, MOD9 [ORG] |
| 0399 | k(41D80001): ADD R1, SB, VAR1 |
| ELSEl (*par.class = Par*) |
| 039A | l .FIXUP P |
| 039A | l(F792511E): BL MOD9 [ORG] PROC37 |
| IFm ~par.rdon THENo CheckReadOnly(x)p ENDq ; |
| 039B | m(E700000F): B 15 [03ABH] |
| 039C | n(80E00004): LDR R0, SP, 4H |
| 039D | n(D11D214C): BLEQ MT [trap=4, pos=7457] |
| 039E | o(90000003): LDR R0, R0, 3H |
| 039F | o(E9000004): BNE 4 [03A4H] |
| 03A0 | p(40E80008): ADD R0, SP, 8H |
| 03A1 | p .FIXUP D |
| 03A1 | p(8D900009): LDR SB, MT, MOD9 [ORG] |
| 03A2 | p(41D80001): ADD R1, SB, VAR1 |
| 03A3 | q(F7FFFD40): BL -704 [00E4H] |
| ORG.VarParam(x,r par.types)t |
| 03A4 | r(40E80008): ADD R0, SP, 8H |
| 03A5 | r .FIXUP D |
| 03A5 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
| 03A6 | r(41D80001): ADD R1, SB, VAR1 |
| 03A7 | s(82E00004): LDR R2, SP, 4H |
| 03A8 | s(D11D604C): BLEQ MT [trap=4, pos=7520] |
| 03A9 | t(82200010): LDR R2, R2, 10H |
| ENDu |
| 03AA | u .FIXUP P |
| 03AA | u(F7924010): BL MOD9 [ORG] PROC36 |
| ELSIF (vx.type.formw = ORB.Array)x & (ypar.typez.forma = ORB.Array)b & |
| 03AB | v(E70000AE): B 174 [045AH] |
| 03AC | w(80E0000C): LDR R0, SP, CH |
| 03AD | w(D11D864C): BLEQ MT [trap=4, pos=7558] |
| 03AE | x(80000000): LDR R0, R0, 0H |
| 03AF | x(4009000C): SUB R0, R0, CH |
| 03B0 | y(E9000025): BNE 37 [03D6H] |
| 03B1 | z(80E00004): LDR R0, SP, 4H |
| 03B2 | z(D11D9F4C): BLEQ MT [trap=4, pos=7583] |
| 03B3 | a(80000010): LDR R0, R0, 10H |
| 03B4 | a(D11DA44C): BLEQ MT [trap=4, pos=7588] |
| 03B5 | b(80000000): LDR R0, R0, 0H |
| 03B6 | b(4009000C): SUB R0, R0, CH |
| (cx.type.based = par.typee.basef)g & (hpar.typei.lenj < 0)k THENl |
| 03B7 | c(E900001E): BNE 30 [03D6H] |
| 03B8 | d(80E0000C): LDR R0, SP, CH |
| 03B9 | d(D11DCA4C): BLEQ MT [trap=4, pos=7626] |
| 03BA | e(81E00004): LDR R1, SP, 4H |
| 03BB | e(D11DD54C): BLEQ MT [trap=4, pos=7637] |
| 03BC | f(81100010): LDR R1, R1, 10H |
| 03BD | f(D11DDA4C): BLEQ MT [trap=4, pos=7642] |
| 03BE | g(8000001C): LDR R0, R0, 1CH |
| 03BF | g(8110001C): LDR R1, R1, 1CH |
| 03C0 | g(00090001): SUB R0, R0, R1 |
| 03C1 | h(E9000014): BNE 20 [03D6H] |
| 03C2 | i(80E00004): LDR R0, SP, 4H |
| 03C3 | i(D11DE74C): BLEQ MT [trap=4, pos=7655] |
| 03C4 | j(80000010): LDR R0, R0, 10H |
| 03C5 | j(D11DEB4C): BLEQ MT [trap=4, pos=7659] |
| 03C6 | k(80000010): LDR R0, R0, 10H |
| 03C7 | k(40090000): SUB R0, R0, 0H |
| 03C8 | l(ED00000D): BGE 13 [03D6H] |
| IF ~par.rdom THENn CheckReadOnly(x)o ENDp ; |
| 03C9 | m(80E00004): LDR R0, SP, 4H |
| 03CA | m(D11E094C): BLEQ MT [trap=4, pos=7689] |
| 03CB | n(90000003): LDR R0, R0, 3H |
| 03CC | n(E9000004): BNE 4 [03D1H] |
| 03CD | o(40E80008): ADD R0, SP, 8H |
| 03CE | o .FIXUP D |
| 03CE | o(8D900029): LDR SB, MT, MOD9 [ORG] |
| 03CF | o(41D80001): ADD R1, SB, VAR1 |
| 03D0 | p(F7FFFD13): BL -749 [00E4H] |
| ORG.OpenArrayParam(x)q |
| 03D1 | q(40E80008): ADD R0, SP, 8H |
| 03D2 | q .FIXUP D |
| 03D2 | q(8D900004): LDR SB, MT, MOD9 [ORG] |
| 03D3 | q(41D80001): ADD R1, SB, VAR1 |
| ELSIFr (sx.type.formt = ORB.String)u & varparv &w parx.rdoy &z (apar.typeb.formc = ORB.Array)d & |
| 03D4 | r .FIXUP P |
| 03D4 | r(F792302A): BL MOD9 [ORG] PROC35 |
| 03D5 | s(E7000084): B 132 [045AH] |
| 03D6 | t(80E0000C): LDR R0, SP, CH |
| 03D7 | t(D11E5C4C): BLEQ MT [trap=4, pos=7772] |
| 03D8 | u(80000000): LDR R0, R0, 0H |
| 03D9 | u(4009000B): SUB R0, R0, BH |
| 03DA | v(E9000022): BNE 34 [03FDH] |
| 03DB | w(90E00020): LDR R0, SP, 20H |
| 03DC | x(E1000020): BEQ 32 [03FDH] |
| 03DD | y(80E00004): LDR R0, SP, 4H |
| 03DE | y(D11E7D4C): BLEQ MT [trap=4, pos=7805] |
| 03DF | z(90000003): LDR R0, R0, 3H |
| 03E0 | a(E100001C): BEQ 28 [03FDH] |
| 03E1 | b(80E00004): LDR R0, SP, 4H |
| 03E2 | b(D11E894C): BLEQ MT [trap=4, pos=7817] |
| 03E3 | c(80000010): LDR R0, R0, 10H |
| 03E4 | c(D11E8E4C): BLEQ MT [trap=4, pos=7822] |
| 03E5 | d(80000000): LDR R0, R0, 0H |
| 03E6 | d(4009000C): SUB R0, R0, CH |
| (epar.typef.baseg.formh = ORB.Char)i & (jpar.typek.lenl < 0)m THENn ORG.StringParam(x)o |
| 03E7 | e(E9000015): BNE 21 [03FDH] |
| 03E8 | f(80E00004): LDR R0, SP, 4H |
| 03E9 | f(D11EB24C): BLEQ MT [trap=4, pos=7858] |
| 03EA | g(80000010): LDR R0, R0, 10H |
| 03EB | g(D11EB74C): BLEQ MT [trap=4, pos=7863] |
| 03EC | h(8000001C): LDR R0, R0, 1CH |
| 03ED | h(D11EBC4C): BLEQ MT [trap=4, pos=7868] |
| 03EE | i(80000000): LDR R0, R0, 0H |
| 03EF | i(40090003): SUB R0, R0, 3H |
| 03F0 | j(E900000C): BNE 12 [03FDH] |
| 03F1 | k(80E00004): LDR R0, SP, 4H |
| 03F2 | k(D11ED44C): BLEQ MT [trap=4, pos=7892] |
| 03F3 | l(80000010): LDR R0, R0, 10H |
| 03F4 | l(D11ED84C): BLEQ MT [trap=4, pos=7896] |
| 03F5 | m(80000010): LDR R0, R0, 10H |
| 03F6 | m(40090000): SUB R0, R0, 0H |
| 03F7 | n(ED000005): BGE 5 [03FDH] |
| 03F8 | o(40E80008): ADD R0, SP, 8H |
| 03F9 | o .FIXUP D |
| 03F9 | o(8D900027): LDR SB, MT, MOD9 [ORG] |
| 03FA | o(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*) |
| 03FB | p .FIXUP P |
| 03FB | p(F7926027): BL MOD9 [ORG] PROC38 |
| 03FC | q(E700005D): B 93 [045AH] |
| 03FD | r(90E00020): LDR R0, SP, 20H |
| 03FE | s(E9000011): BNE 17 [0410H] |
| 03FF | t(80E00004): LDR R0, SP, 4H |
| 0400 | t(D11F154C): BLEQ MT [trap=4, pos=7957] |
| 0401 | u(80000010): LDR R0, R0, 10H |
| 0402 | u(D11F1A4C): BLEQ MT [trap=4, pos=7962] |
| 0403 | v(80000000): LDR R0, R0, 0H |
| 0404 | v(40090004): SUB R0, R0, 4H |
| 0405 | w(E900000A): BNE 10 [0410H] |
| 0406 | x(80E0000C): LDR R0, SP, CH |
| 0407 | x(D11F344C): BLEQ MT [trap=4, pos=7988] |
| 0408 | y(80000000): LDR R0, R0, 0H |
| 0409 | y(40090004): SUB R0, R0, 4H |
| 040A | z(E9000005): BNE 5 [0410H] |
| 040B | a(40E80008): ADD R0, SP, 8H |
| 040C | a .FIXUP D |
| 040C | a(8D900013): LDR SB, MT, MOD9 [ORG] |
| 040D | a(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 |
| 040E | b .FIXUP P |
| 040E | b(F7925013): BL MOD9 [ORG] PROC37 |
| 040F | c(E700004A): B 74 [045AH] |
| 0410 | d(80E0000C): LDR R0, SP, CH |
| 0411 | d(D11F794C): BLEQ MT [trap=4, pos=8057] |
| 0412 | e(80000000): LDR R0, R0, 0H |
| 0413 | e(4009000B): SUB R0, R0, BH |
| 0414 | f(E9000018): BNE 24 [042DH] |
| 0415 | g(80E00014): LDR R0, SP, 14H |
| 0416 | g(40090002): SUB R0, R0, 2H |
| 0417 | h(E9000015): BNE 21 [042DH] |
| 0418 | i(80E00004): LDR R0, SP, 4H |
| 0419 | i(D11FA04C): BLEQ MT [trap=4, pos=8096] |
| 041A | j(90000000): LDR R0, R0, 0H |
| 041B | j(40090002): SUB R0, R0, 2H |
| 041C | k(E9000010): BNE 16 [042DH] |
| 041D | l(80E00004): LDR R0, SP, 4H |
| 041E | l(D11FB74C): BLEQ MT [trap=4, pos=8119] |
| 041F | m(80000010): LDR R0, R0, 10H |
| 0420 | m(D11FBC4C): BLEQ MT [trap=4, pos=8124] |
| 0421 | n(80000000): LDR R0, R0, 0H |
| 0422 | n(40090003): SUB R0, R0, 3H |
| 0423 | o(E9000009): BNE 9 [042DH] |
| ORG.StrToChar(x)p;q ORG.ValueParam(x)r |
| 0424 | p(40E80008): ADD R0, SP, 8H |
| 0425 | p .FIXUP D |
| 0425 | p(8D900019): LDR SB, MT, MOD9 [ORG] |
| 0426 | p(41D80001): ADD R1, SB, VAR1 |
| 0427 | q .FIXUP P |
| 0427 | q(F791F019): BL MOD9 [ORG] PROC31 |
| 0428 | r(40E80008): ADD R0, SP, 8H |
| 0429 | r .FIXUP D |
| 0429 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
| 042A | r(41D80001): ADD R1, SB, VAR1 |
| ELSIFs (tpar.typeu.formv = ORB.Array)w & (xpar.typey.basez = ORB.byteType)a & |
| 042B | s .FIXUP P |
| 042B | s(F7925004): BL MOD9 [ORG] PROC37 |
| 042C | t(E700002D): B 45 [045AH] |
| 042D | u(80E00004): LDR R0, SP, 4H |
| 042E | u(D1200F4C): BLEQ MT [trap=4, pos=8207] |
| 042F | v(80000010): LDR R0, R0, 10H |
| 0430 | v(D120144C): BLEQ MT [trap=4, pos=8212] |
| 0431 | w(80000000): LDR R0, R0, 0H |
| 0432 | w(4009000C): SUB R0, R0, CH |
| 0433 | x(E9000022): BNE 34 [0456H] |
| 0434 | y(80E00004): LDR R0, SP, 4H |
| 0435 | y(D1202D4C): BLEQ MT [trap=4, pos=8237] |
| 0436 | z(80000010): LDR R0, R0, 10H |
| 0437 | z(D120324C): BLEQ MT [trap=4, pos=8242] |
| 0438 | a(8000001C): LDR R0, R0, 1CH |
| 0439 | a .FIXUP D |
| 0439 | a(8D800010): LDR SB, MT, MOD8 [ORB] |
| 043A | a(81D00006): LDR R1, SB, VAR6 |
| 043B | a(00090001): SUB R0, R0, R1 |
| (bpar.typec.lend >= 0)e & (fpar.typeg.sizeh = x.type.sizei)j THENk |
| 043C | b(E9000019): BNE 25 [0456H] |
| 043D | c(80E00004): LDR R0, SP, 4H |
| 043E | c(D120594C): BLEQ MT [trap=4, pos=8281] |
| 043F | d(80000010): LDR R0, R0, 10H |
| 0440 | d(D1205D4C): BLEQ MT [trap=4, pos=8285] |
| 0441 | e(80000010): LDR R0, R0, 10H |
| 0442 | e(40090000): SUB R0, R0, 0H |
| 0443 | f(E5000012): BLT 18 [0456H] |
| 0444 | g(80E00004): LDR R0, SP, 4H |
| 0445 | g(D1206F4C): BLEQ MT [trap=4, pos=8303] |
| 0446 | h(80000010): LDR R0, R0, 10H |
| 0447 | h(D120744C): BLEQ MT [trap=4, pos=8308] |
| 0448 | i(81E0000C): LDR R1, SP, CH |
| 0449 | i(D120824C): BLEQ MT [trap=4, pos=8322] |
| 044A | j(80000020): LDR R0, R0, 20H |
| 044B | j(81100020): LDR R1, R1, 20H |
| 044C | j(00090001): SUB R0, R0, R1 |
| 044D | k(E9000008): BNE 8 [0456H] |
| ORG.VarParam(x,l par.typem)n |
| 044E | l(40E80008): ADD R0, SP, 8H |
| 044F | l .FIXUP D |
| 044F | l(8D900016): LDR SB, MT, MOD9 [ORG] |
| 0450 | l(41D80001): ADD R1, SB, VAR1 |
| 0451 | m(82E00004): LDR R2, SP, 4H |
| 0452 | m(D120A94C): BLEQ MT [trap=4, pos=8361] |
| 0453 | n(82200010): LDR R2, R2, 10H |
| ELSEo ORSp.Mark("incompatible parameters")q |
| 0454 | o .FIXUP P |
| 0454 | o(F7924029): BL MOD9 [ORG] PROC36 |
| 0455 | p(E7000004): B 4 [045AH] |
| 0456 | q .FIXUP D |
| 0456 | q(8D000007): LDR SB, MT, MOD0 [ORP] |
| 0457 | q(40D801E8): ADD R0, SB, 1E8H ["incompatible parameters"] |
| 0458 | q(41000018): MOV R1, R0, 18H |
| ENDr |
| 0459 | r .FIXUP P |
| 0459 | r(F7709005): BL MOD7 [ORS] PROC9 |
| END |
| ENDs Parameter; |
| 045A | s(8FE00000): LDR LNK, SP, 0H |
| 045B | s(4EE80024): ADD SP, SP, 24H |
| 045C | s(C700000F): B LNK |
| |
| PROCEDURE ParamList(VAR x: ORG.Item); |
| VAR n: INTEGER; par: ORB.Object; |
| BEGINt par := x.type.dscu;v n := 0;w |
| 045D | t(4EE90014): SUB SP, SP, 14H |
| 045E | t(AFE00000): STR LNK, SP, 0H |
| 045F | t(A0E00004): STR R0, SP, 4H |
| 0460 | t(A1E00008): STR R1, SP, 8H |
| 0461 | u(80E00004): LDR R0, SP, 4H |
| 0462 | u(80000004): LDR R0, R0, 4H |
| 0463 | u(D121644C): BLEQ MT [trap=4, pos=8548] |
| 0464 | v(80000014): LDR R0, R0, 14H |
| 0465 | v(A0E00010): STR R0, SP, 10H |
| 0466 | w(40000000): MOV R0, R0, 0H |
| 0467 | w(A0E0000C): STR R0, SP, CH |
| IF sym # ORS.rparen THENx |
| 0468 | x .FIXUP D |
| 0468 | x(8D000012): LDR SB, MT, MOD0 [ORP] |
| 0469 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 046A | x(4009002C): SUB R0, R0, 2CH |
| 046B | x(E100001F): BEQ 31 [048BH] |
| Parameter(par)y;z n := 1;a |
| 046C | y(80E00010): LDR R0, SP, 10H |
| 046D | z(F7FFFF0A): BL -246 [0378H] |
| 046E | a(40000001): MOV R0, R0, 1H |
| 046F | a(A0E0000C): STR R0, SP, CH |
| WHILE sym <= ORS.comma DOb |
| 0470 | b .FIXUP D |
| 0470 | b(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0471 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 0472 | b(40090028): SUB R0, R0, 28H |
| 0473 | b(EE000011): BGT 17 [0485H] |
| Check(sym,c "comma?")d;e |
| 0474 | c .FIXUP D |
| 0474 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0475 | c(80D0001C): LDR R0, SB, 1CH [data] |
| 0476 | d(41D80200): ADD R1, SB, 200H |
| 0477 | d(42000007): MOV R2, R0, 7H |
| 0478 | e(F7FFFB87): BL -1145 [0000H] |
| IF par # NIL THENf par := par.nextg ENDh ; |
| 0479 | f(80E00010): LDR R0, SP, 10H |
| 047A | f(E1000004): BEQ 4 [047FH] |
| 047B | g(80E00010): LDR R0, SP, 10H |
| 047C | g(D122104C): BLEQ MT [trap=4, pos=8720] |
| 047D | h(80000008): LDR R0, R0, 8H |
| 047E | h(A0E00010): STR R0, SP, 10H |
| INC(n);i Parameter(par)j |
| 047F | i(80E0000C): LDR R0, SP, CH |
| 0480 | i(40080001): ADD R0, R0, 1H |
| 0481 | i(A0E0000C): STR R0, SP, CH |
| 0482 | j(80E00010): LDR R0, SP, 10H |
| ENDk ; |
| 0483 | k(F7FFFEF4): BL -268 [0378H] |
| 0484 | k(E7FFFFEB): B -21 [0470H] |
| Check(ORS.rparen,l ") missing")m |
| 0485 | l(4000002C): MOV R0, R0, 2CH |
| 0486 | m .FIXUP D |
| 0486 | m(8D000012): LDR SB, MT, MOD0 [ORP] |
| 0487 | m(41D80208): ADD R1, SB, 208H [") missing"] |
| 0488 | m(4200000A): MOV R2, R0, AH |
| ELSEn ORSo.Get(sym)p;q |
| 0489 | n(F7FFFB76): BL -1162 [0000H] |
| 048A | o(E7000003): B 3 [048EH] |
| 048B | p .FIXUP D |
| 048B | p(8D000005): LDR SB, MT, MOD0 [ORP] |
| 048C | p(40D8001C): ADD R0, SB, 1CH [data] |
| 048D | q .FIXUP P |
| 048D | q(F770A034): BL MOD7 [ORS] PROC10 |
| END ; |
| IF n < x.type.nofparr THENs ORS.Mark("too few params")t |
| 048E | r(80E00004): LDR R0, SP, 4H |
| 048F | r(80000004): LDR R0, R0, 4H |
| 0490 | r(D122A04C): BLEQ MT [trap=4, pos=8864] |
| 0491 | s(81E0000C): LDR R1, SP, CH |
| 0492 | s(8000000C): LDR R0, R0, CH |
| 0493 | s(01190000): SUB R1, R1, R0 |
| 0494 | s(ED000005): BGE 5 [049AH] |
| 0495 | t .FIXUP D |
| 0495 | t(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 0496 | t(40D80214): ADD R0, SB, 214H ["too few params"] |
| 0497 | t(4100000F): MOV R1, R0, FH |
| ELSIFu nv > x.type.nofparw THENx ORS.Mark("too many params")y |
| 0498 | u .FIXUP P |
| 0498 | u(F770900B): BL MOD7 [ORS] PROC9 |
| 0499 | v(E700000B): B 11 [04A5H] |
| 049A | w(80E00004): LDR R0, SP, 4H |
| 049B | w(80000004): LDR R0, R0, 4H |
| 049C | w(D122DC4C): BLEQ MT [trap=4, pos=8924] |
| 049D | x(81E0000C): LDR R1, SP, CH |
| 049E | x(8000000C): LDR R0, R0, CH |
| 049F | x(01190000): SUB R1, R1, R0 |
| 04A0 | x(E6000004): BLE 4 [04A5H] |
| 04A1 | y .FIXUP D |
| 04A1 | y(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 04A2 | y(40D80224): ADD R0, SB, 224H ["too many params"] |
| 04A3 | y(41000010): MOV R1, R0, 10H |
| ENDz |
| 04A4 | z .FIXUP P |
| 04A4 | z(F770900C): BL MOD7 [ORS] PROC9 |
| ENDa ParamList; |
| 04A5 | a(8FE00000): LDR LNK, SP, 0H |
| 04A6 | a(4EE80014): ADD SP, SP, 14H |
| 04A7 | a(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 |
| 04A8 | b(4EE90034): SUB SP, SP, 34H |
| 04A9 | b(AFE00000): STR LNK, SP, 0H |
| 04AA | b(A0E00004): STR R0, SP, 4H |
| 04AB | b(A1E00008): STR R1, SP, 8H |
| 04AC | b(A2E0000C): STR R2, SP, CH |
| 04AD | b(A3E00010): STR R3, SP, 10H |
| 04AE | c(4000001C): MOV R0, R0, 1CH |
| 04AF | d .FIXUP D |
| 04AF | d(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 04B0 | d(41D80234): ADD R1, SB, 234H ["no ("] |
| 04B1 | d(42000005): MOV R2, R0, 5H |
| 04B2 | e(F7FFFB4D): BL -1203 [0000H] |
| npar := fct MOD 10;f fct := fct DIV 10;g expression(x)h;i n := 1;j |
| 04B3 | f(80E0000C): LDR R0, SP, CH |
| 04B4 | f(400B000A): DIV R0, R0, AH |
| 04B5 | f(20000000): MOV' R0, R0, R0 |
| 04B6 | f(A0E00030): STR R0, SP, 30H |
| 04B7 | g(80E0000C): LDR R0, SP, CH |
| 04B8 | g(400B000A): DIV R0, R0, AH |
| 04B9 | g(A0E0000C): STR R0, SP, CH |
| 04BA | h(80E00004): LDR R0, SP, 4H |
| 04BB | h(81E00008): LDR R1, SP, 8H |
| 04BC | i .FIXUP D |
| 04BC | i(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 04BD | i(82D00034): LDR R2, SB, 34H [data] |
| 04BE | i(D123E35C): BLEQ MT [trap=5, pos=9187] |
| 04BF | i(D7000002): BL R2 |
| 04C0 | j(40000001): MOV R0, R0, 1H |
| 04C1 | j(A0E0002C): STR R0, SP, 2CH |
| WHILE sym = ORS.comma DOk ORS.Get(sym)l;m expression(y)n;o INC(n) ENDp ; |
| 04C2 | k .FIXUP D |
| 04C2 | k(8D000006): LDR SB, MT, MOD0 [ORP] |
| 04C3 | k(80D0001C): LDR R0, SB, 1CH [data] |
| 04C4 | k(40090028): SUB R0, R0, 28H |
| 04C5 | k(E900000E): BNE 14 [04D4H] |
| 04C6 | l .FIXUP D |
| 04C6 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 04C7 | l(40D8001C): ADD R0, SB, 1CH [data] |
| 04C8 | m .FIXUP P |
| 04C8 | m(F770A024): BL MOD7 [ORS] PROC10 |
| 04C9 | n(40E80014): ADD R0, SP, 14H |
| 04CA | n .FIXUP D |
| 04CA | n(8D900004): LDR SB, MT, MOD9 [ORG] |
| 04CB | n(41D80001): ADD R1, SB, VAR1 |
| 04CC | o .FIXUP D |
| 04CC | o(8D000002): LDR SB, MT, MOD0 [ORP] |
| 04CD | o(82D00034): LDR R2, SB, 34H [data] |
| 04CE | o(D124255C): BLEQ MT [trap=5, pos=9253] |
| 04CF | o(D7000002): BL R2 |
| 04D0 | p(80E0002C): LDR R0, SP, 2CH |
| 04D1 | p(40080001): ADD R0, R0, 1H |
| 04D2 | p(A0E0002C): STR R0, SP, 2CH |
| 04D3 | p(E7FFFFEE): B -18 [04C2H] |
| Check(ORS.rparen,q "no )")r;s |
| 04D4 | q(4000002C): MOV R0, R0, 2CH |
| 04D5 | r .FIXUP D |
| 04D5 | r(8D000009): LDR SB, MT, MOD0 [ORP] |
| 04D6 | r(41D8023C): ADD R1, SB, 23CH ["no )"] |
| 04D7 | r(42000005): MOV R2, R0, 5H |
| 04D8 | s(F7FFFB27): BL -1241 [0000H] |
| IF n = npar THENt |
| 04D9 | t(80E0002C): LDR R0, SP, 2CH |
| 04DA | t(81E00030): LDR R1, SP, 30H |
| 04DB | t(00090001): SUB R0, R0, R1 |
| 04DC | t(E900012A): BNE 298 [0607H] |
| IF fct = 0 THENu (*ABS*) |
| 04DD | u(80E0000C): LDR R0, SP, CH |
| 04DE | u(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 |
| 04DF | v(80E00004): LDR R0, SP, 4H |
| 04E0 | v(80000004): LDR R0, R0, 4H |
| 04E1 | v(D1249B4C): BLEQ MT [trap=4, pos=9371] |
| 04E2 | w(41000030): MOV R1, R0, 30H |
| 04E3 | w(80000000): LDR R0, R0, 0H |
| 04E4 | w(40080001): ADD R0, R0, 1H |
| 04E5 | w(01130000): ROR R1, R1, R0 |
| 04E6 | w(E8000007): BPL 7 [04EEH] |
| 04E7 | x(80E00004): LDR R0, SP, 4H |
| 04E8 | x(81E00008): LDR R1, SP, 8H |
| 04E9 | y .FIXUP P |
| 04E9 | y(F7940021): BL MOD9 [ORG] PROC64 |
| 04EA | z(80E00004): LDR R0, SP, 4H |
| 04EB | z(80000004): LDR R0, R0, 4H |
| 04EC | z(A0E00010): STR R0, SP, 10H |
| 04ED | a(E7000004): B 4 [04F2H] |
| 04EE | b .FIXUP D |
| 04EE | b(8D000019): LDR SB, MT, MOD0 [ORP] |
| 04EF | b(40D80244): ADD R0, SB, 244H ["bad type"] |
| 04F0 | b(41000009): MOV R1, R0, 9H |
| 04F1 | c .FIXUP P |
| 04F1 | c(F7709008): BL MOD7 [ORS] PROC9 |
| ELSIF fctd = 1 THENe (*ODD*) CheckInt(x)f;g ORG.Odd(x)h |
| 04F2 | d(E7000110): B 272 [0603H] |
| 04F3 | e(80E0000C): LDR R0, SP, CH |
| 04F4 | e(40090001): SUB R0, R0, 1H |
| 04F5 | e(E9000007): BNE 7 [04FDH] |
| 04F6 | f(80E00004): LDR R0, SP, 4H |
| 04F7 | f(81E00008): LDR R1, SP, 8H |
| 04F8 | g(F7FFFB74): BL -1164 [006DH] |
| 04F9 | h(80E00004): LDR R0, SP, 4H |
| 04FA | h(81E00008): LDR R1, SP, 8H |
| ELSIFi fctj = 2 THENk (*FLOOR*) CheckReal(x)l;m ORG.Floor(x)n |
| 04FB | i .FIXUP P |
| 04FB | i(F794100A): BL MOD9 [ORG] PROC65 |
| 04FC | j(E7000106): B 262 [0603H] |
| 04FD | k(80E0000C): LDR R0, SP, CH |
| 04FE | k(40090002): SUB R0, R0, 2H |
| 04FF | k(E9000007): BNE 7 [0507H] |
| 0500 | l(80E00004): LDR R0, SP, 4H |
| 0501 | l(81E00008): LDR R1, SP, 8H |
| 0502 | m(F7FFFB7F): BL -1153 [0082H] |
| 0503 | n(80E00004): LDR R0, SP, 4H |
| 0504 | n(81E00008): LDR R1, SP, 8H |
| ELSIFo fctp = 3 THENq (*FLT*) CheckInt(x)r;s ORG.Float(x)t |
| 0505 | o .FIXUP P |
| 0505 | o(F794200A): BL MOD9 [ORG] PROC66 |
| 0506 | p(E70000FC): B 252 [0603H] |
| 0507 | q(80E0000C): LDR R0, SP, CH |
| 0508 | q(40090003): SUB R0, R0, 3H |
| 0509 | q(E9000007): BNE 7 [0511H] |
| 050A | r(80E00004): LDR R0, SP, 4H |
| 050B | r(81E00008): LDR R1, SP, 8H |
| 050C | s(F7FFFB60): BL -1184 [006DH] |
| 050D | t(80E00004): LDR R0, SP, 4H |
| 050E | t(81E00008): LDR R1, SP, 8H |
| ELSIFu fctv = 4 THENw (*ORD*) |
| 050F | u .FIXUP P |
| 050F | u(F794300A): BL MOD9 [ORG] PROC67 |
| 0510 | v(E70000F2): B 242 [0603H] |
| 0511 | w(80E0000C): LDR R0, SP, CH |
| 0512 | w(40090004): SUB R0, R0, 4H |
| 0513 | w(E900001D): BNE 29 [0531H] |
| IF x.type.formx <= ORB.Proc THENy ORG.Ord(x)z |
| 0514 | x(80E00004): LDR R0, SP, 4H |
| 0515 | x(80000004): LDR R0, R0, 4H |
| 0516 | x(D125DC4C): BLEQ MT [trap=4, pos=9692] |
| 0517 | y(80000000): LDR R0, R0, 0H |
| 0518 | y(4009000A): SUB R0, R0, AH |
| 0519 | y(EE000004): BGT 4 [051EH] |
| 051A | z(80E00004): LDR R0, SP, 4H |
| 051B | z(81E00008): LDR R1, SP, 8H |
| ELSIFa (bx.type.formc = ORB.String)d & (ex.b = 2)f THENg ORG.StrToChar(x)h |
| 051C | a .FIXUP P |
| 051C | a(F794400D): BL MOD9 [ORG] PROC68 |
| 051D | b(E7000012): B 18 [0530H] |
| 051E | c(80E00004): LDR R0, SP, 4H |
| 051F | c(80000004): LDR R0, R0, 4H |
| 0520 | c(D126134C): BLEQ MT [trap=4, pos=9747] |
| 0521 | d(80000000): LDR R0, R0, 0H |
| 0522 | d(4009000B): SUB R0, R0, BH |
| 0523 | e(E9000008): BNE 8 [052CH] |
| 0524 | f(80E00004): LDR R0, SP, 4H |
| 0525 | f(8000000C): LDR R0, R0, CH |
| 0526 | f(40090002): SUB R0, R0, 2H |
| 0527 | g(E9000004): BNE 4 [052CH] |
| 0528 | h(80E00004): LDR R0, SP, 4H |
| 0529 | h(81E00008): LDR R1, SP, 8H |
| ELSEi ORSj.Mark("bad type")k |
| 052A | i .FIXUP P |
| 052A | i(F791F00E): BL MOD9 [ORG] PROC31 |
| 052B | j(E7000004): B 4 [0530H] |
| 052C | k .FIXUP D |
| 052C | k(8D00003E): LDR SB, MT, MOD0 [ORP] |
| 052D | k(40D80250): ADD R0, SB, 250H ["bad type"] |
| 052E | k(41000009): MOV R1, R0, 9H |
| ENDl |
| 052F | l .FIXUP P |
| 052F | l(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF fctm = 5 THENn (*CHR*) CheckInt(x)o;p ORG.Ord(x)q |
| 0530 | m(E70000D2): B 210 [0603H] |
| 0531 | n(80E0000C): LDR R0, SP, CH |
| 0532 | n(40090005): SUB R0, R0, 5H |
| 0533 | n(E9000007): BNE 7 [053BH] |
| 0534 | o(80E00004): LDR R0, SP, 4H |
| 0535 | o(81E00008): LDR R1, SP, 8H |
| 0536 | p(F7FFFB36): BL -1226 [006DH] |
| 0537 | q(80E00004): LDR R0, SP, 4H |
| 0538 | q(81E00008): LDR R1, SP, 8H |
| ELSIFr fcts = 6 THENt (*LEN*) |
| 0539 | r .FIXUP P |
| 0539 | r(F794400A): BL MOD9 [ORG] PROC68 |
| 053A | s(E70000C8): B 200 [0603H] |
| 053B | t(80E0000C): LDR R0, SP, CH |
| 053C | t(40090006): SUB R0, R0, 6H |
| 053D | t(E900000F): BNE 15 [054DH] |
| IF x.type.formu = ORB.Array THENv ORG.Len(x)w ELSEx ORSy.Mark("not an array")z ENDa |
| 053E | u(80E00004): LDR R0, SP, 4H |
| 053F | u(80000004): LDR R0, R0, 4H |
| 0540 | u(D126E44C): BLEQ MT [trap=4, pos=9956] |
| 0541 | v(80000000): LDR R0, R0, 0H |
| 0542 | v(4009000C): SUB R0, R0, CH |
| 0543 | v(E9000004): BNE 4 [0548H] |
| 0544 | w(80E00004): LDR R0, SP, 4H |
| 0545 | w(81E00008): LDR R1, SP, 8H |
| 0546 | x .FIXUP P |
| 0546 | x(F794500D): BL MOD9 [ORG] PROC69 |
| 0547 | y(E7000004): B 4 [054CH] |
| 0548 | z .FIXUP D |
| 0548 | z(8D00001C): LDR SB, MT, MOD0 [ORP] |
| 0549 | z(40D8025C): ADD R0, SB, 25CH ["not an array"] |
| 054A | z(4100000D): MOV R1, R0, DH |
| 054B | a .FIXUP P |
| 054B | a(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF fctb IN {7, 8, 9} THENc (*LSL, ASR, ROR*) CheckInt(y)d;e |
| 054C | b(E70000B6): B 182 [0603H] |
| 054D | c(40000380): MOV R0, R0, 380H |
| 054E | c(81E0000C): LDR R1, SP, CH |
| 054F | c(41180001): ADD R1, R1, 1H |
| 0550 | c(00030001): ROR R0, R0, R1 |
| 0551 | c(E800001D): BPL 29 [056FH] |
| 0552 | d(40E80014): ADD R0, SP, 14H |
| 0553 | d .FIXUP D |
| 0553 | d(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 0554 | d(41D80001): ADD R1, SB, VAR1 |
| 0555 | e(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 |
| 0556 | f(80E00004): LDR R0, SP, 4H |
| 0557 | f(80000004): LDR R0, R0, 4H |
| 0558 | f(D1277A4C): BLEQ MT [trap=4, pos=10106] |
| 0559 | g(41000050): MOV R1, R0, 50H |
| 055A | g(80000000): LDR R0, R0, 0H |
| 055B | g(40080001): ADD R0, R0, 1H |
| 055C | g(01130000): ROR R1, R1, R0 |
| 055D | g(E800000C): BPL 12 [056AH] |
| 055E | h(80E0000C): LDR R0, SP, CH |
| 055F | h(40090007): SUB R0, R0, 7H |
| 0560 | i(81E00004): LDR R1, SP, 4H |
| 0561 | i(82E00008): LDR R2, SP, 8H |
| 0562 | j(43E80014): ADD R3, SP, 14H |
| 0563 | j .FIXUP D |
| 0563 | j(8D900010): LDR SB, MT, MOD9 [ORG] |
| 0564 | j(44D80001): ADD R4, SB, VAR1 |
| 0565 | k .FIXUP P |
| 0565 | k(F794601A): BL MOD9 [ORG] PROC70 |
| 0566 | l(80E00004): LDR R0, SP, 4H |
| 0567 | l(80000004): LDR R0, R0, 4H |
| 0568 | l(A0E00010): STR R0, SP, 10H |
| 0569 | m(E7000004): B 4 [056EH] |
| 056A | n .FIXUP D |
| 056A | n(8D000007): LDR SB, MT, MOD0 [ORP] |
| 056B | n(40D8026C): ADD R0, SB, 26CH ["bad type"] |
| 056C | n(41000009): MOV R1, R0, 9H |
| 056D | o .FIXUP P |
| 056D | o(F7709008): BL MOD7 [ORS] PROC9 |
| ELSIF fctp = 11 THENq (*ADC*) ORG.ADC(x,r y)s |
| 056E | p(E7000094): B 148 [0603H] |
| 056F | q(80E0000C): LDR R0, SP, CH |
| 0570 | q(4009000B): SUB R0, R0, BH |
| 0571 | q(E9000007): BNE 7 [0579H] |
| 0572 | r(80E00004): LDR R0, SP, 4H |
| 0573 | r(81E00008): LDR R1, SP, 8H |
| 0574 | s(42E80014): ADD R2, SP, 14H |
| 0575 | s .FIXUP D |
| 0575 | s(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 0576 | s(43D80001): ADD R3, SB, VAR1 |
| ELSIFt fctu = 12 THENv (*SBC*) ORG.SBC(x,w y)x |
| 0577 | t .FIXUP P |
| 0577 | t(F794700A): BL MOD9 [ORG] PROC71 |
| 0578 | u(E700008A): B 138 [0603H] |
| 0579 | v(80E0000C): LDR R0, SP, CH |
| 057A | v(4009000C): SUB R0, R0, CH |
| 057B | v(E9000007): BNE 7 [0583H] |
| 057C | w(80E00004): LDR R0, SP, 4H |
| 057D | w(81E00008): LDR R1, SP, 8H |
| 057E | x(42E80014): ADD R2, SP, 14H |
| 057F | x .FIXUP D |
| 057F | x(8D90000A): LDR SB, MT, MOD9 [ORG] |
| 0580 | x(43D80001): ADD R3, SB, VAR1 |
| ELSIFy fctz = 13 THENa (*UML*) ORG.UML(x,b y)c |
| 0581 | y .FIXUP P |
| 0581 | y(F794800A): BL MOD9 [ORG] PROC72 |
| 0582 | z(E7000080): B 128 [0603H] |
| 0583 | a(80E0000C): LDR R0, SP, CH |
| 0584 | a(4009000D): SUB R0, R0, DH |
| 0585 | a(E9000007): BNE 7 [058DH] |
| 0586 | b(80E00004): LDR R0, SP, 4H |
| 0587 | b(81E00008): LDR R1, SP, 8H |
| 0588 | c(42E80014): ADD R2, SP, 14H |
| 0589 | c .FIXUP D |
| 0589 | c(8D90000A): LDR SB, MT, MOD9 [ORG] |
| 058A | c(43D80001): ADD R3, SB, VAR1 |
| ELSIFd fcte = 14 THENf (*BIT*) CheckInt(x)g;h CheckInt(y)i;j ORG.Bit(x,k y)l |
| 058B | d .FIXUP P |
| 058B | d(F794900A): BL MOD9 [ORG] PROC73 |
| 058C | e(E7000076): B 118 [0603H] |
| 058D | f(80E0000C): LDR R0, SP, CH |
| 058E | f(4009000E): SUB R0, R0, EH |
| 058F | f(E900000E): BNE 14 [059EH] |
| 0590 | g(80E00004): LDR R0, SP, 4H |
| 0591 | g(81E00008): LDR R1, SP, 8H |
| 0592 | h(F7FFFADA): BL -1318 [006DH] |
| 0593 | i(40E80014): ADD R0, SP, 14H |
| 0594 | i .FIXUP D |
| 0594 | i(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 0595 | i(41D80001): ADD R1, SB, VAR1 |
| 0596 | j(F7FFFAD6): BL -1322 [006DH] |
| 0597 | k(80E00004): LDR R0, SP, 4H |
| 0598 | k(81E00008): LDR R1, SP, 8H |
| 0599 | l(42E80014): ADD R2, SP, 14H |
| 059A | l .FIXUP D |
| 059A | l(8D900006): LDR SB, MT, MOD9 [ORG] |
| 059B | l(43D80001): ADD R3, SB, VAR1 |
| ELSIFm fctn = 15 THENo (*REG*) CheckConst(x)p;q CheckInt(x)r;s ORG.Register(x)t |
| 059C | m .FIXUP P |
| 059C | m(F794A011): BL MOD9 [ORG] PROC74 |
| 059D | n(E7000065): B 101 [0603H] |
| 059E | o(80E0000C): LDR R0, SP, CH |
| 059F | o(4009000F): SUB R0, R0, FH |
| 05A0 | o(E900000A): BNE 10 [05ABH] |
| 05A1 | p(80E00004): LDR R0, SP, 4H |
| 05A2 | p(81E00008): LDR R1, SP, 8H |
| 05A3 | q(F7FFFB2E): BL -1234 [00D2H] |
| 05A4 | r(80E00004): LDR R0, SP, 4H |
| 05A5 | r(81E00008): LDR R1, SP, 8H |
| 05A6 | s(F7FFFAC6): BL -1338 [006DH] |
| 05A7 | t(80E00004): LDR R0, SP, 4H |
| 05A8 | t(81E00008): LDR R1, SP, 8H |
| ELSIFu fctv = 16 THENw (*VAL*) |
| 05A9 | u .FIXUP P |
| 05A9 | u(F794B00D): BL MOD9 [ORG] PROC75 |
| 05AA | v(E7000058): B 88 [0603H] |
| 05AB | w(80E0000C): LDR R0, SP, CH |
| 05AC | w(40090010): SUB R0, R0, 10H |
| 05AD | w(E900001F): BNE 31 [05CDH] |
| IF (x.mode= ORB.Typ)x & (yx.type.sizez <= y.type.sizea)b THENc restyp := x.type;d x := y |
| 05AE | x(80E00004): LDR R0, SP, 4H |
| 05AF | x(80000000): LDR R0, R0, 0H |
| 05B0 | x(40090005): SUB R0, R0, 5H |
| 05B1 | y(E9000016): BNE 22 [05C8H] |
| 05B2 | z(80E00004): LDR R0, SP, 4H |
| 05B3 | z(80000004): LDR R0, R0, 4H |
| 05B4 | z(D129524C): BLEQ MT [trap=4, pos=10578] |
| 05B5 | a(81E00018): LDR R1, SP, 18H |
| 05B6 | a(D129614C): BLEQ MT [trap=4, pos=10593] |
| 05B7 | b(80000020): LDR R0, R0, 20H |
| 05B8 | b(81100020): LDR R1, R1, 20H |
| 05B9 | b(00090001): SUB R0, R0, R1 |
| 05BA | c(EE00000D): BGT 13 [05C8H] |
| 05BB | d(80E00004): LDR R0, SP, 4H |
| 05BC | d(80000004): LDR R0, R0, 4H |
| 05BD | d(A0E00010): STR R0, SP, 10H |
| ELSEe ORSf.Mark("casting not allowed")g |
| 05BE | e(80E00004): LDR R0, SP, 4H |
| 05BF | e(41E80014): ADD R1, SP, 14H |
| 05C0 | e(42000006): MOV R2, R0, 6H |
| 05C1 | e(83100000): LDR R3, R1, 0H |
| 05C2 | e(41180004): ADD R1, R1, 4H |
| 05C3 | e(A3000000): STR R3, R0, 0H |
| 05C4 | e(40080004): ADD R0, R0, 4H |
| 05C5 | e(42290001): SUB R2, R2, 1H |
| 05C6 | e(E9FFFFFA): BNE -6 [05C1H] |
| 05C7 | f(E7000004): B 4 [05CCH] |
| 05C8 | g .FIXUP D |
| 05C8 | g(8D00002E): LDR SB, MT, MOD0 [ORP] |
| 05C9 | g(40D80278): ADD R0, SB, 278H ["casting not allowed"] |
| 05CA | g(41000014): MOV R1, R0, 14H |
| ENDh |
| 05CB | h .FIXUP P |
| 05CB | h(F7709022): BL MOD7 [ORS] PROC9 |
| ELSIF fcti = 17 THENj (*ADR*) ORG.Adr(x)k |
| 05CC | i(E7000036): B 54 [0603H] |
| 05CD | j(80E0000C): LDR R0, SP, CH |
| 05CE | j(40090011): SUB R0, R0, 11H |
| 05CF | j(E9000004): BNE 4 [05D4H] |
| 05D0 | k(80E00004): LDR R0, SP, 4H |
| 05D1 | k(81E00008): LDR R1, SP, 8H |
| ELSIFl fctm = 18 THENn (*SIZE*) |
| 05D2 | l .FIXUP P |
| 05D2 | l(F794D007): BL MOD9 [ORG] PROC77 |
| 05D3 | m(E700002F): B 47 [0603H] |
| 05D4 | n(80E0000C): LDR R0, SP, CH |
| 05D5 | n(40090012): SUB R0, R0, 12H |
| 05D6 | n(E9000013): BNE 19 [05EAH] |
| IF x.mode = ORB.Typ THENo ORG.MakeConstItem(x,p ORB.intType,q x.type.sizer)s |
| 05D7 | o(80E00004): LDR R0, SP, 4H |
| 05D8 | o(80000000): LDR R0, R0, 0H |
| 05D9 | o(40090005): SUB R0, R0, 5H |
| 05DA | o(E900000A): BNE 10 [05E5H] |
| 05DB | p(80E00004): LDR R0, SP, 4H |
| 05DC | p(81E00008): LDR R1, SP, 8H |
| 05DD | q .FIXUP D |
| 05DD | q(8D800015): LDR SB, MT, MOD8 [ORB] |
| 05DE | q(82D00009): LDR R2, SB, VAR9 |
| 05DF | r(83E00004): LDR R3, SP, 4H |
| 05E0 | r(83300004): LDR R3, R3, 4H |
| 05E1 | r(D12A584C): BLEQ MT [trap=4, pos=10840] |
| 05E2 | s(83300020): LDR R3, R3, 20H |
| ELSEt ORSu.Mark("must be a type")v |
| 05E3 | t .FIXUP P |
| 05E3 | t(F7905011): BL MOD9 [ORG] PROC5 |
| 05E4 | u(E7000004): B 4 [05E9H] |
| 05E5 | v .FIXUP D |
| 05E5 | v(8D000008): LDR SB, MT, MOD0 [ORP] |
| 05E6 | v(40D8028C): ADD R0, SB, 28CH ["must be a type"] |
| 05E7 | v(4100000F): MOV R1, R0, FH |
| ENDw |
| 05E8 | w .FIXUP P |
| 05E8 | w(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF fctx = 19 THENy (*COND*) CheckConst(x)z;a CheckInt(x)b;c ORG.Condition(x)d |
| 05E9 | x(E7000019): B 25 [0603H] |
| 05EA | y(80E0000C): LDR R0, SP, CH |
| 05EB | y(40090013): SUB R0, R0, 13H |
| 05EC | y(E900000A): BNE 10 [05F7H] |
| 05ED | z(80E00004): LDR R0, SP, 4H |
| 05EE | z(81E00008): LDR R1, SP, 8H |
| 05EF | a(F7FFFAE2): BL -1310 [00D2H] |
| 05F0 | b(80E00004): LDR R0, SP, 4H |
| 05F1 | b(81E00008): LDR R1, SP, 8H |
| 05F2 | c(F7FFFA7A): BL -1414 [006DH] |
| 05F3 | d(80E00004): LDR R0, SP, 4H |
| 05F4 | d(81E00008): LDR R1, SP, 8H |
| ELSIFe fctf = 20 THENg (*H*) CheckConst(x)h;i CheckInt(x)j;k ORG.H(x)l |
| 05F5 | e .FIXUP P |
| 05F5 | e(F794E00D): BL MOD9 [ORG] PROC78 |
| 05F6 | f(E700000C): B 12 [0603H] |
| 05F7 | g(80E0000C): LDR R0, SP, CH |
| 05F8 | g(40090014): SUB R0, R0, 14H |
| 05F9 | g(E9000009): BNE 9 [0603H] |
| 05FA | h(80E00004): LDR R0, SP, 4H |
| 05FB | h(81E00008): LDR R1, SP, 8H |
| 05FC | i(F7FFFAD5): BL -1323 [00D2H] |
| 05FD | j(80E00004): LDR R0, SP, 4H |
| 05FE | j(81E00008): LDR R1, SP, 8H |
| 05FF | k(F7FFFA6D): BL -1427 [006DH] |
| 0600 | l(80E00004): LDR R0, SP, 4H |
| 0601 | l(81E00008): LDR R1, SP, 8H |
| ENDm ; |
| 0602 | m .FIXUP P |
| 0602 | m(F794C00D): BL MOD9 [ORG] PROC76 |
| x.type := restyp |
| ELSEn ORSo.Mark("wrong nof params")p |
| 0603 | n(80E00010): LDR R0, SP, 10H |
| 0604 | n(81E00004): LDR R1, SP, 4H |
| 0605 | n(A0100004): STR R0, R1, 4H |
| 0606 | o(E7000004): B 4 [060BH] |
| 0607 | p .FIXUP D |
| 0607 | p(8D000022): LDR SB, MT, MOD0 [ORP] |
| 0608 | p(40D8029C): ADD R0, SB, 29CH ["wrong nof params"] |
| 0609 | p(41000011): MOV R1, R0, 11H |
| ENDq |
| 060A | q .FIXUP P |
| 060A | q(F7709008): BL MOD7 [ORS] PROC9 |
| ENDr StandFunc; |
| 060B | r(8FE00000): LDR LNK, SP, 0H |
| 060C | r(4EE80034): ADD SP, SP, 34H |
| 060D | r(C700000F): B LNK |
| |
| PROCEDURE element(VAR x: ORG.Item); |
| VAR y: ORG.Item; |
| BEGINs expression(x)t;u CheckSetVal(x)v;w |
| 060E | s(4EE90024): SUB SP, SP, 24H |
| 060F | s(AFE00000): STR LNK, SP, 0H |
| 0610 | s(A0E00004): STR R0, SP, 4H |
| 0611 | s(A1E00008): STR R1, SP, 8H |
| 0612 | t(80E00004): LDR R0, SP, 4H |
| 0613 | t(81E00008): LDR R1, SP, 8H |
| 0614 | u .FIXUP D |
| 0614 | u(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 0615 | u(82D00034): LDR R2, SB, 34H [data] |
| 0616 | u(D12BD75C): BLEQ MT [trap=5, pos=11223] |
| 0617 | u(D7000002): BL R2 |
| 0618 | v(80E00004): LDR R0, SP, 4H |
| 0619 | v(81E00008): LDR R1, SP, 8H |
| 061A | w(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 |
| 061B | x .FIXUP D |
| 061B | x(8D000007): LDR SB, MT, MOD0 [ORP] |
| 061C | x(80D0001C): LDR R0, SB, 1CH [data] |
| 061D | x(4009002B): SUB R0, R0, 2BH |
| 061E | x(E9000015): BNE 21 [0634H] |
| 061F | y .FIXUP D |
| 061F | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0620 | y(40D8001C): ADD R0, SB, 1CH [data] |
| 0621 | z .FIXUP P |
| 0621 | z(F770A017): BL MOD7 [ORS] PROC10 |
| 0622 | a(40E8000C): ADD R0, SP, CH |
| 0623 | a .FIXUP D |
| 0623 | a(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0624 | a(41D80001): ADD R1, SB, VAR1 |
| 0625 | b .FIXUP D |
| 0625 | b(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0626 | b(82D00034): LDR R2, SB, 34H [data] |
| 0627 | b(D12C1F5C): BLEQ MT [trap=5, pos=11295] |
| 0628 | b(D7000002): BL R2 |
| 0629 | c(40E8000C): ADD R0, SP, CH |
| 062A | c .FIXUP D |
| 062A | c(8D900005): LDR SB, MT, MOD9 [ORG] |
| 062B | c(41D80001): ADD R1, SB, VAR1 |
| 062C | d(F7FFFA7F): BL -1409 [00ACH] |
| 062D | e(80E00004): LDR R0, SP, 4H |
| 062E | e(81E00008): LDR R1, SP, 8H |
| 062F | f(42E8000C): ADD R2, SP, CH |
| 0630 | f .FIXUP D |
| 0630 | f(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0631 | f(43D80001): ADD R3, SB, VAR1 |
| ELSEg ORGh.Singleton(x)i |
| 0632 | g .FIXUP P |
| 0632 | g(F7919011): BL MOD9 [ORG] PROC25 |
| 0633 | h(E7000003): B 3 [0637H] |
| 0634 | i(80E00004): LDR R0, SP, 4H |
| 0635 | i(81E00008): LDR R1, SP, 8H |
| ENDj ; |
| 0636 | j .FIXUP P |
| 0636 | j(F7918004): BL MOD9 [ORG] PROC24 |
| x.type := ORB.setType |
| ENDk element; |
| 0637 | k .FIXUP D |
| 0637 | k(8D800007): LDR SB, MT, MOD8 [ORB] |
| 0638 | k(80D0000B): LDR R0, SB, VAR11 |
| 0639 | k(81E00004): LDR R1, SP, 4H |
| 063A | k(A0100004): STR R0, R1, 4H |
| 063B | k(8FE00000): LDR LNK, SP, 0H |
| 063C | k(4EE80024): ADD SP, SP, 24H |
| 063D | k(C700000F): B LNK |
| |
| PROCEDURE set(VAR x: ORG.Item); |
| VAR y: ORG.Item; |
| BEGINl |
| 063E | l(4EE90024): SUB SP, SP, 24H |
| 063F | l(AFE00000): STR LNK, SP, 0H |
| 0640 | l(A0E00004): STR R0, SP, 4H |
| 0641 | l(A1E00008): STR R1, SP, 8H |
| IF sym >= ORS.if THENm |
| 0642 | m .FIXUP D |
| 0642 | m(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 0643 | m(80D0001C): LDR R0, SB, 1CH [data] |
| 0644 | m(40090020): SUB R0, R0, 20H |
| 0645 | m(E500000F): BLT 15 [0655H] |
| IF sym # ORS.rbrace THENn ORS.Mark(" } missing")o ENDp ; |
| 0646 | n .FIXUP D |
| 0646 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0647 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 0648 | n(4009002E): SUB R0, R0, 2EH |
| 0649 | n(E1000004): BEQ 4 [064EH] |
| 064A | o .FIXUP D |
| 064A | o(8D000004): LDR SB, MT, MOD0 [ORP] |
| 064B | o(40D802B0): ADD R0, SB, 2B0H [" } missing"] |
| 064C | o(4100000B): MOV R1, R0, BH |
| 064D | p .FIXUP P |
| 064D | p(F7709017): BL MOD7 [ORS] PROC9 |
| ORG.MakeConstItem(x,q ORB.setType,r 0)s (*empty set*) |
| 064E | q(80E00004): LDR R0, SP, 4H |
| 064F | q(81E00008): LDR R1, SP, 8H |
| 0650 | r .FIXUP D |
| 0650 | r(8D800006): LDR SB, MT, MOD8 [ORB] |
| 0651 | r(82D0000B): LDR R2, SB, VAR11 |
| 0652 | s(43000000): MOV R3, R0, 0H |
| ELSEt elementu(x)v;w |
| 0653 | t .FIXUP P |
| 0653 | t(F7905006): BL MOD9 [ORG] PROC5 |
| 0654 | u(E7000027): B 39 [067CH] |
| 0655 | v(80E00004): LDR R0, SP, 4H |
| 0656 | v(81E00008): LDR R1, SP, 8H |
| 0657 | w(F7FFFFB6): BL -74 [060EH] |
| WHILE (sym < ORS.rparen)x OR (ysym > ORS.rbrace)z DOa |
| 0658 | x .FIXUP D |
| 0658 | x(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0659 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 065A | x(4009002C): SUB R0, R0, 2CH |
| 065B | y(E5000004): BLT 4 [0660H] |
| 065C | z .FIXUP D |
| 065C | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 065D | z(80D0001C): LDR R0, SB, 1CH [data] |
| 065E | z(4009002E): SUB R0, R0, 2EH |
| 065F | a(E600001C): BLE 28 [067CH] |
| IF sym = ORS.comma THENb ORS.Get(sym)c |
| 0660 | b .FIXUP D |
| 0660 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0661 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 0662 | b(40090028): SUB R0, R0, 28H |
| 0663 | b(E9000004): BNE 4 [0668H] |
| 0664 | c .FIXUP D |
| 0664 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0665 | c(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFd syme # ORS.rbrace THENf ORS.Mark("missing comma")g |
| 0666 | d .FIXUP P |
| 0666 | d(F770A013): BL MOD7 [ORS] PROC10 |
| 0667 | e(E7000008): B 8 [0670H] |
| 0668 | f .FIXUP D |
| 0668 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0669 | f(80D0001C): LDR R0, SB, 1CH [data] |
| 066A | f(4009002E): SUB R0, R0, 2EH |
| 066B | f(E1000004): BEQ 4 [0670H] |
| 066C | g .FIXUP D |
| 066C | g(8D000004): LDR SB, MT, MOD0 [ORP] |
| 066D | g(40D802BC): ADD R0, SB, 2BCH ["missing comma"] |
| 066E | g(4100000E): MOV R1, R0, EH |
| ENDh ; |
| 066F | h .FIXUP P |
| 066F | h(F7709009): BL MOD7 [ORS] PROC9 |
| element(y)i;j ORG.SetOp(ORS.plus,k x,l y)m |
| 0670 | i(40E8000C): ADD R0, SP, CH |
| 0671 | i .FIXUP D |
| 0671 | i(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0672 | i(41D80001): ADD R1, SB, VAR1 |
| 0673 | j(F7FFFF9A): BL -102 [060EH] |
| 0674 | k(40000006): MOV R0, R0, 6H |
| 0675 | l(81E00004): LDR R1, SP, 4H |
| 0676 | l(82E00008): LDR R2, SP, 8H |
| 0677 | m(43E8000C): ADD R3, SP, CH |
| 0678 | m .FIXUP D |
| 0678 | m(8D900007): LDR SB, MT, MOD9 [ORG] |
| 0679 | m(44D80001): ADD R4, SB, VAR1 |
| ENDn |
| 067A | n .FIXUP P |
| 067A | n(F791B00B): BL MOD9 [ORG] PROC27 |
| 067B | n(E7FFFFDC): B -36 [0658H] |
| END |
| ENDo set; |
| 067C | o(8FE00000): LDR LNK, SP, 0H |
| 067D | o(4EE80024): ADD SP, SP, 24H |
| 067E | o(C700000F): B LNK |
| |
| PROCEDURE factor(VAR x: ORG.Item); |
| VAR obj: ORB.Object; rx: LONGINT; |
| BEGINp (*sync*) |
| 067F | p(4EE90014): SUB SP, SP, 14H |
| 0680 | p(AFE00000): STR LNK, SP, 0H |
| 0681 | p(A0E00004): STR R0, SP, 4H |
| 0682 | p(A1E00008): STR R1, SP, 8H |
| IF (sym < ORS.char)q OR (rsym > ORS.ident)s THENt ORS.Mark("expression expected")u;v |
| 0683 | q .FIXUP D |
| 0683 | q(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 0684 | q(80D0001C): LDR R0, SB, 1CH [data] |
| 0685 | q(40090014): SUB R0, R0, 14H |
| 0686 | r(E5000004): BLT 4 [068BH] |
| 0687 | s .FIXUP D |
| 0687 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0688 | s(80D0001C): LDR R0, SB, 1CH [data] |
| 0689 | s(4009001F): SUB R0, R0, 1FH |
| 068A | t(E600000F): BLE 15 [069AH] |
| 068B | u .FIXUP D |
| 068B | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 068C | u(40D802CC): ADD R0, SB, 2CCH ["expression expected"] |
| 068D | u(41000014): MOV R1, R0, 14H |
| 068E | v .FIXUP P |
| 068E | v(F7709014): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)w UNTILx (sym >= ORS.char)y & (zsym <= ORS.ident)a |
| 068F | w .FIXUP D |
| 068F | w(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0690 | w(40D8001C): ADD R0, SB, 1CH [data] |
| 0691 | x .FIXUP P |
| 0691 | x(F770A003): BL MOD7 [ORS] PROC10 |
| 0692 | y .FIXUP D |
| 0692 | y(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0693 | y(80D0001C): LDR R0, SB, 1CH [data] |
| 0694 | y(40090014): SUB R0, R0, 14H |
| 0695 | z(E5FFFFF9): BLT -7 [068FH] |
| 0696 | a .FIXUP D |
| 0696 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0697 | a(80D0001C): LDR R0, SB, 1CH [data] |
| 0698 | a(4009001F): SUB R0, R0, 1FH |
| ENDb ; |
| 0699 | b(EEFFFFF5): BGT -11 [068FH] |
| IF sym = ORS.ident THENc |
| 069A | c .FIXUP D |
| 069A | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 069B | c(80D0001C): LDR R0, SB, 1CH [data] |
| 069C | c(4009001F): SUB R0, R0, 1FH |
| 069D | c(E9000049): BNE 73 [06E7H] |
| qualident(obj)d;e |
| 069E | d(40E8000C): ADD R0, SP, CH |
| 069F | e(F7FFF974): BL -1676 [0014H] |
| IF obj.classf = ORB.SFunc THENg StandFunc(x,h obj.vali,j obj.typek)l |
| 06A0 | f(80E0000C): LDR R0, SP, CH |
| 06A1 | f(D12FB54C): BLEQ MT [trap=4, pos=12213] |
| 06A2 | g(90000000): LDR R0, R0, 0H |
| 06A3 | g(40090007): SUB R0, R0, 7H |
| 06A4 | g(E900000A): BNE 10 [06AFH] |
| 06A5 | h(80E00004): LDR R0, SP, 4H |
| 06A6 | h(81E00008): LDR R1, SP, 8H |
| 06A7 | i(82E0000C): LDR R2, SP, CH |
| 06A8 | i(D12FDB4C): BLEQ MT [trap=4, pos=12251] |
| 06A9 | j(82200034): LDR R2, R2, 34H |
| 06AA | k(83E0000C): LDR R3, SP, CH |
| 06AB | k(D12FE54C): BLEQ MT [trap=4, pos=12261] |
| 06AC | l(83300010): LDR R3, R3, 10H |
| ELSEm ORGn.MakeItem(x,o obj,p level)q;r selector(x)s;t |
| 06AD | m(F7FFFDFA): BL -518 [04A8H] |
| 06AE | n(E7000037): B 55 [06E6H] |
| 06AF | o(80E00004): LDR R0, SP, 4H |
| 06B0 | o(81E00008): LDR R1, SP, 8H |
| 06B1 | p(82E0000C): LDR R2, SP, CH |
| 06B2 | q .FIXUP D |
| 06B2 | q(8D000018): LDR SB, MT, MOD0 [ORP] |
| 06B3 | q(83D00024): LDR R3, SB, 24H [data] |
| 06B4 | r .FIXUP P |
| 06B4 | r(F7908023): BL MOD9 [ORG] PROC8 |
| 06B5 | s(80E00004): LDR R0, SP, 4H |
| 06B6 | s(81E00008): LDR R1, SP, 8H |
| 06B7 | t(F7FFFAED): BL -1299 [01A5H] |
| IF sym = ORS.lparen THENu |
| 06B8 | u .FIXUP D |
| 06B8 | u(8D000006): LDR SB, MT, MOD0 [ORP] |
| 06B9 | u(80D0001C): LDR R0, SB, 1CH [data] |
| 06BA | u(4009001C): SUB R0, R0, 1CH |
| 06BB | u(E900002A): BNE 42 [06E6H] |
| ORS.Get(sym)v;w |
| 06BC | v .FIXUP D |
| 06BC | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 06BD | v(40D8001C): ADD R0, SB, 1CH [data] |
| 06BE | w .FIXUP P |
| 06BE | w(F770A00A): BL MOD7 [ORS] PROC10 |
| IF (x.type.formx = ORB.Proc)y & (zx.type.basea.formb # ORB.NoTyp)c THENd |
| 06BF | x(80E00004): LDR R0, SP, 4H |
| 06C0 | x(80000004): LDR R0, R0, 4H |
| 06C1 | x(D1306E4C): BLEQ MT [trap=4, pos=12398] |
| 06C2 | y(80000000): LDR R0, R0, 0H |
| 06C3 | y(4009000A): SUB R0, R0, AH |
| 06C4 | z(E900001A): BNE 26 [06DFH] |
| 06C5 | a(80E00004): LDR R0, SP, 4H |
| 06C6 | a(80000004): LDR R0, R0, 4H |
| 06C7 | a(D130894C): BLEQ MT [trap=4, pos=12425] |
| 06C8 | b(8000001C): LDR R0, R0, 1CH |
| 06C9 | b(D1308E4C): BLEQ MT [trap=4, pos=12430] |
| 06CA | c(80000000): LDR R0, R0, 0H |
| 06CB | c(40090009): SUB R0, R0, 9H |
| 06CC | d(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 |
| 06CD | e(80E00004): LDR R0, SP, 4H |
| 06CE | e(81E00008): LDR R1, SP, 8H |
| 06CF | f(42E80010): ADD R2, SP, 10H |
| 06D0 | g .FIXUP P |
| 06D0 | g(F7930012): BL MOD9 [ORG] PROC48 |
| 06D1 | h(80E00004): LDR R0, SP, 4H |
| 06D2 | h(81E00008): LDR R1, SP, 8H |
| 06D3 | i(F7FFFD89): BL -631 [045DH] |
| 06D4 | j(80E00004): LDR R0, SP, 4H |
| 06D5 | j(81E00008): LDR R1, SP, 8H |
| 06D6 | k(82E00010): LDR R2, SP, 10H |
| 06D7 | l .FIXUP P |
| 06D7 | l(F7931007): BL MOD9 [ORG] PROC49 |
| 06D8 | m(80E00004): LDR R0, SP, 4H |
| 06D9 | m(80000004): LDR R0, R0, 4H |
| 06DA | m(D130F64C): BLEQ MT [trap=4, pos=12534] |
| ELSEn ORSo.Mark("not a function")p;q ParamList(x)r |
| 06DB | n(8000001C): LDR R0, R0, 1CH |
| 06DC | n(81E00004): LDR R1, SP, 4H |
| 06DD | n(A0100004): STR R0, R1, 4H |
| 06DE | o(E7000007): B 7 [06E6H] |
| 06DF | p .FIXUP D |
| 06DF | p(8D000023): LDR SB, MT, MOD0 [ORP] |
| 06E0 | p(40D802E0): ADD R0, SB, 2E0H ["not a function"] |
| 06E1 | p(4100000F): MOV R1, R0, FH |
| 06E2 | q .FIXUP P |
| 06E2 | q(F770900B): BL MOD7 [ORS] PROC9 |
| 06E3 | r(80E00004): LDR R0, SP, 4H |
| 06E4 | r(81E00008): LDR R1, SP, 8H |
| ENDs |
| 06E5 | s(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 |
| 06E6 | t(E70000A0): B 160 [0787H] |
| 06E7 | u .FIXUP D |
| 06E7 | u(8D000008): LDR SB, MT, MOD0 [ORP] |
| 06E8 | u(80D0001C): LDR R0, SB, 1CH [data] |
| 06E9 | u(40090015): SUB R0, R0, 15H |
| 06EA | u(E900000B): BNE 11 [06F6H] |
| 06EB | v(80E00004): LDR R0, SP, 4H |
| 06EC | v(81E00008): LDR R1, SP, 8H |
| 06ED | w .FIXUP D |
| 06ED | w(8D800006): LDR SB, MT, MOD8 [ORB] |
| 06EE | w(82D00009): LDR R2, SB, VAR9 |
| 06EF | x .FIXUP D |
| 06EF | x(8D700002): LDR SB, MT, MOD7 [ORS] |
| 06F0 | x(83D00001): LDR R3, SB, VAR1 |
| 06F1 | y .FIXUP P |
| 06F1 | y(F790500F): BL MOD9 [ORG] PROC5 |
| 06F2 | z .FIXUP D |
| 06F2 | z(8D000003): LDR SB, MT, MOD0 [ORP] |
| 06F3 | z(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFa symb = ORS.real THENc ORG.MakeRealItem(x,d ORS.rval)e;f ORS.Get(sym)g |
| 06F4 | a .FIXUP P |
| 06F4 | a(F770A003): BL MOD7 [ORS] PROC10 |
| 06F5 | b(E7000091): B 145 [0787H] |
| 06F6 | c .FIXUP D |
| 06F6 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 06F7 | c(80D0001C): LDR R0, SB, 1CH [data] |
| 06F8 | c(40090016): SUB R0, R0, 16H |
| 06F9 | c(E9000009): BNE 9 [0703H] |
| 06FA | d(80E00004): LDR R0, SP, 4H |
| 06FB | d(81E00008): LDR R1, SP, 8H |
| 06FC | e .FIXUP D |
| 06FC | e(8D700006): LDR SB, MT, MOD7 [ORS] |
| 06FD | e(82D00003): LDR R2, SB, VAR3 |
| 06FE | f .FIXUP P |
| 06FE | f(F790600A): BL MOD9 [ORG] PROC6 |
| 06FF | g .FIXUP D |
| 06FF | g(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0700 | g(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 |
| 0701 | h .FIXUP P |
| 0701 | h(F770A003): BL MOD7 [ORS] PROC10 |
| 0702 | i(E7000084): B 132 [0787H] |
| 0703 | j .FIXUP D |
| 0703 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0704 | j(80D0001C): LDR R0, SB, 1CH [data] |
| 0705 | j(40090014): SUB R0, R0, 14H |
| 0706 | j(E900000B): BNE 11 [0712H] |
| 0707 | k(80E00004): LDR R0, SP, 4H |
| 0708 | k(81E00008): LDR R1, SP, 8H |
| 0709 | l .FIXUP D |
| 0709 | l(8D800006): LDR SB, MT, MOD8 [ORB] |
| 070A | l(82D00008): LDR R2, SB, VAR8 |
| 070B | m .FIXUP D |
| 070B | m(8D700002): LDR SB, MT, MOD7 [ORS] |
| 070C | m(83D00001): LDR R3, SB, VAR1 |
| 070D | n .FIXUP P |
| 070D | n(F790500C): BL MOD9 [ORG] PROC5 |
| 070E | o .FIXUP D |
| 070E | o(8D000003): LDR SB, MT, MOD0 [ORP] |
| 070F | o(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 |
| 0710 | p .FIXUP P |
| 0710 | p(F770A003): BL MOD7 [ORS] PROC10 |
| 0711 | q(E7000075): B 117 [0787H] |
| 0712 | r .FIXUP D |
| 0712 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0713 | r(80D0001C): LDR R0, SB, 1CH [data] |
| 0714 | r(40090019): SUB R0, R0, 19H |
| 0715 | r(E900000A): BNE 10 [0720H] |
| 0716 | s .FIXUP D |
| 0716 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0717 | s(40D8001C): ADD R0, SB, 1CH [data] |
| 0718 | t .FIXUP P |
| 0718 | t(F770A008): BL MOD7 [ORS] PROC10 |
| 0719 | u(80E00004): LDR R0, SP, 4H |
| 071A | u(81E00008): LDR R1, SP, 8H |
| 071B | v .FIXUP D |
| 071B | v(8D800005): LDR SB, MT, MOD8 [ORB] |
| 071C | v(82D0000C): LDR R2, SB, VAR12 |
| 071D | w(43000000): MOV R3, R0, 0H |
| ELSIFx symy = ORS.string THENz ORG.MakeStringItem(x,a ORS.slen)b;c ORS.Get(sym)d |
| 071E | x .FIXUP P |
| 071E | x(F7905006): BL MOD9 [ORG] PROC5 |
| 071F | y(E7000067): B 103 [0787H] |
| 0720 | z .FIXUP D |
| 0720 | z(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0721 | z(80D0001C): LDR R0, SB, 1CH [data] |
| 0722 | z(4009001A): SUB R0, R0, 1AH |
| 0723 | z(E9000009): BNE 9 [072DH] |
| 0724 | a(80E00004): LDR R0, SP, 4H |
| 0725 | a(81E00008): LDR R1, SP, 8H |
| 0726 | b .FIXUP D |
| 0726 | b(8D700006): LDR SB, MT, MOD7 [ORS] |
| 0727 | b(82D00002): LDR R2, SB, VAR2 |
| 0728 | c .FIXUP P |
| 0728 | c(F790700A): BL MOD9 [ORG] PROC7 |
| 0729 | d .FIXUP D |
| 0729 | d(8D000003): LDR SB, MT, MOD0 [ORP] |
| 072A | d(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 |
| 072B | e .FIXUP P |
| 072B | e(F770A003): BL MOD7 [ORS] PROC10 |
| 072C | f(E700005A): B 90 [0787H] |
| 072D | g .FIXUP D |
| 072D | g(8D000004): LDR SB, MT, MOD0 [ORP] |
| 072E | g(80D0001C): LDR R0, SB, 1CH [data] |
| 072F | g(4009001C): SUB R0, R0, 1CH |
| 0730 | g(E900000F): BNE 15 [0740H] |
| 0731 | h .FIXUP D |
| 0731 | h(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0732 | h(40D8001C): ADD R0, SB, 1CH [data] |
| 0733 | i .FIXUP P |
| 0733 | i(F770A008): BL MOD7 [ORS] PROC10 |
| 0734 | j(80E00004): LDR R0, SP, 4H |
| 0735 | j(81E00008): LDR R1, SP, 8H |
| 0736 | k .FIXUP D |
| 0736 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0737 | k(82D00034): LDR R2, SB, 34H [data] |
| 0738 | k(D133275C): BLEQ MT [trap=5, pos=13095] |
| 0739 | k(D7000002): BL R2 |
| 073A | l(4000002C): MOV R0, R0, 2CH |
| 073B | m .FIXUP D |
| 073B | m(8D000005): LDR SB, MT, MOD0 [ORP] |
| 073C | m(41D802F0): ADD R1, SB, 2F0H ["no )"] |
| 073D | m(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 |
| 073E | n(F7FFF8C1): BL -1855 [0000H] |
| 073F | o(E7000047): B 71 [0787H] |
| 0740 | p .FIXUP D |
| 0740 | p(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0741 | p(80D0001C): LDR R0, SB, 1CH [data] |
| 0742 | p(4009001E): SUB R0, R0, 1EH |
| 0743 | p(E900000C): BNE 12 [0750H] |
| 0744 | q .FIXUP D |
| 0744 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0745 | q(40D8001C): ADD R0, SB, 1CH [data] |
| 0746 | r .FIXUP P |
| 0746 | r(F770A013): BL MOD7 [ORS] PROC10 |
| 0747 | s(80E00004): LDR R0, SP, 4H |
| 0748 | s(81E00008): LDR R1, SP, 8H |
| 0749 | t(F7FFFEF4): BL -268 [063EH] |
| 074A | u(4000002E): MOV R0, R0, 2EH |
| 074B | v .FIXUP D |
| 074B | v(8D000007): LDR SB, MT, MOD0 [ORP] |
| 074C | v(41D802F8): ADD R1, SB, 2F8H ["no }"] |
| 074D | v(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 |
| 074E | w(F7FFF8B1): BL -1871 [0000H] |
| 074F | x(E7000037): B 55 [0787H] |
| 0750 | y .FIXUP D |
| 0750 | y(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0751 | y(80D0001C): LDR R0, SB, 1CH [data] |
| 0752 | y(4009001B): SUB R0, R0, 1BH |
| 0753 | y(E900000D): BNE 13 [0761H] |
| 0754 | z .FIXUP D |
| 0754 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0755 | z(40D8001C): ADD R0, SB, 1CH [data] |
| 0756 | a .FIXUP P |
| 0756 | a(F770A010): BL MOD7 [ORS] PROC10 |
| 0757 | b(80E00004): LDR R0, SP, 4H |
| 0758 | b(81E00008): LDR R1, SP, 8H |
| 0759 | c(F7FFFF25): BL -219 [067FH] |
| 075A | d(80E00004): LDR R0, SP, 4H |
| 075B | d(81E00008): LDR R1, SP, 8H |
| 075C | e(F7FFF8FB): BL -1797 [0058H] |
| 075D | f(80E00004): LDR R0, SP, 4H |
| 075E | f(81E00008): LDR R1, SP, 8H |
| ELSIFg symh = ORS.false THENi ORS.Get(sym)j;k ORG.MakeConstItem(x,l ORB.boolType,m 0)n |
| 075F | g .FIXUP P |
| 075F | g(F790E009): BL MOD9 [ORG] PROC14 |
| 0760 | h(E7000026): B 38 [0787H] |
| 0761 | i .FIXUP D |
| 0761 | i(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 0762 | i(80D0001C): LDR R0, SB, 1CH [data] |
| 0763 | i(40090017): SUB R0, R0, 17H |
| 0764 | i(E900000A): BNE 10 [076FH] |
| 0765 | j .FIXUP D |
| 0765 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0766 | j(40D8001C): ADD R0, SB, 1CH [data] |
| 0767 | k .FIXUP P |
| 0767 | k(F770A008): BL MOD7 [ORS] PROC10 |
| 0768 | l(80E00004): LDR R0, SP, 4H |
| 0769 | l(81E00008): LDR R1, SP, 8H |
| 076A | m .FIXUP D |
| 076A | m(8D800005): LDR SB, MT, MOD8 [ORB] |
| 076B | m(82D00007): LDR R2, SB, VAR7 |
| 076C | n(43000000): MOV R3, R0, 0H |
| ELSIFo symp = ORS.true THENq ORS.Get(sym)r;s ORG.MakeConstItem(x,t ORB.boolType,u 1)v |
| 076D | o .FIXUP P |
| 076D | o(F7905006): BL MOD9 [ORG] PROC5 |
| 076E | p(E7000018): B 24 [0787H] |
| 076F | q .FIXUP D |
| 076F | q(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0770 | q(80D0001C): LDR R0, SB, 1CH [data] |
| 0771 | q(40090018): SUB R0, R0, 18H |
| 0772 | q(E900000A): BNE 10 [077DH] |
| 0773 | r .FIXUP D |
| 0773 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0774 | r(40D8001C): ADD R0, SB, 1CH [data] |
| 0775 | s .FIXUP P |
| 0775 | s(F770A008): BL MOD7 [ORS] PROC10 |
| 0776 | t(80E00004): LDR R0, SP, 4H |
| 0777 | t(81E00008): LDR R1, SP, 8H |
| 0778 | u .FIXUP D |
| 0778 | u(8D800005): LDR SB, MT, MOD8 [ORB] |
| 0779 | u(82D00007): LDR R2, SB, VAR7 |
| 077A | v(43000001): MOV R3, R0, 1H |
| ELSEw ORSx.Mark("not a factor")y;z ORG.MakeConstItem(x,a ORB.intType,b 0)c |
| 077B | w .FIXUP P |
| 077B | w(F7905006): BL MOD9 [ORG] PROC5 |
| 077C | x(E700000A): B 10 [0787H] |
| 077D | y .FIXUP D |
| 077D | y(8D000005): LDR SB, MT, MOD0 [ORP] |
| 077E | y(40D80300): ADD R0, SB, 300H ["not a factor"] |
| 077F | y(4100000D): MOV R1, R0, DH |
| 0780 | z .FIXUP P |
| 0780 | z(F7709005): BL MOD7 [ORS] PROC9 |
| 0781 | a(80E00004): LDR R0, SP, 4H |
| 0782 | a(81E00008): LDR R1, SP, 8H |
| 0783 | b .FIXUP D |
| 0783 | b(8D800006): LDR SB, MT, MOD8 [ORB] |
| 0784 | b(82D00009): LDR R2, SB, VAR9 |
| 0785 | c(43000000): MOV R3, R0, 0H |
| ENDd |
| 0786 | d .FIXUP P |
| 0786 | d(F7905006): BL MOD9 [ORG] PROC5 |
| ENDe factor; |
| 0787 | e(8FE00000): LDR LNK, SP, 0H |
| 0788 | e(4EE80014): ADD SP, SP, 14H |
| 0789 | e(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 |
| 078A | f(4EE9002C): SUB SP, SP, 2CH |
| 078B | f(AFE00000): STR LNK, SP, 0H |
| 078C | f(A0E00004): STR R0, SP, 4H |
| 078D | f(A1E00008): STR R1, SP, 8H |
| 078E | g(80E00004): LDR R0, SP, 4H |
| 078F | g(81E00008): LDR R1, SP, 8H |
| 0790 | h(F7FFFEEE): BL -274 [067FH] |
| 0791 | i(80E00004): LDR R0, SP, 4H |
| 0792 | i(80000004): LDR R0, R0, 4H |
| 0793 | i(D135504C): BLEQ MT [trap=4, pos=13648] |
| 0794 | j(80000000): LDR R0, R0, 0H |
| 0795 | j(A0E00028): STR R0, SP, 28H |
| WHILE (sym >= ORS.times)k & (lsym <= ORS.and)m DOn |
| 0796 | k .FIXUP D |
| 0796 | k(8D000013): LDR SB, MT, MOD0 [ORP] |
| 0797 | k(80D0001C): LDR R0, SB, 1CH [data] |
| 0798 | k(40090001): SUB R0, R0, 1H |
| 0799 | l(E50000A5): BLT 165 [083FH] |
| 079A | m .FIXUP D |
| 079A | m(8D000004): LDR SB, MT, MOD0 [ORP] |
| 079B | m(80D0001C): LDR R0, SB, 1CH [data] |
| 079C | m(40090005): SUB R0, R0, 5H |
| 079D | n(EE0000A1): BGT 161 [083FH] |
| op := sym;o ORS.Get(sym)p;q |
| 079E | o .FIXUP D |
| 079E | o(8D000004): LDR SB, MT, MOD0 [ORP] |
| 079F | o(80D0001C): LDR R0, SB, 1CH [data] |
| 07A0 | o(A0E00024): STR R0, SP, 24H |
| 07A1 | p(40D8001C): ADD R0, SB, 1CH |
| 07A2 | q .FIXUP P |
| 07A2 | q(F770A01C): BL MOD7 [ORS] PROC10 |
| IF op = ORS.times THENr |
| 07A3 | r(80E00024): LDR R0, SP, 24H |
| 07A4 | r(40090001): SUB R0, R0, 1H |
| 07A5 | r(E900003D): BNE 61 [07E3H] |
| IF f = ORB.Int THENs factor(y)t;u CheckInt(y)v;w ORG.MulOp(x,x y)y |
| 07A6 | s(80E00028): LDR R0, SP, 28H |
| 07A7 | s(40090004): SUB R0, R0, 4H |
| 07A8 | s(E900000F): BNE 15 [07B8H] |
| 07A9 | t(40E8000C): ADD R0, SP, CH |
| 07AA | t .FIXUP D |
| 07AA | t(8D90000C): LDR SB, MT, MOD9 [ORG] |
| 07AB | t(41D80001): ADD R1, SB, VAR1 |
| 07AC | u(F7FFFED2): BL -302 [067FH] |
| 07AD | v(40E8000C): ADD R0, SP, CH |
| 07AE | v .FIXUP D |
| 07AE | v(8D900004): LDR SB, MT, MOD9 [ORG] |
| 07AF | v(41D80001): ADD R1, SB, VAR1 |
| 07B0 | w(F7FFF8BC): BL -1860 [006DH] |
| 07B1 | x(80E00004): LDR R0, SP, 4H |
| 07B2 | x(81E00008): LDR R1, SP, 8H |
| 07B3 | y(42E8000C): ADD R2, SP, CH |
| 07B4 | y .FIXUP D |
| 07B4 | y(8D900006): LDR SB, MT, MOD9 [ORG] |
| 07B5 | y(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 |
| 07B6 | z .FIXUP P |
| 07B6 | z(F7915014): BL MOD9 [ORG] PROC21 |
| 07B7 | a(E700002A): B 42 [07E2H] |
| 07B8 | b(80E00028): LDR R0, SP, 28H |
| 07B9 | b(40090005): SUB R0, R0, 5H |
| 07BA | b(E9000010): BNE 16 [07CBH] |
| 07BB | c(40E8000C): ADD R0, SP, CH |
| 07BC | c .FIXUP D |
| 07BC | c(8D900008): LDR SB, MT, MOD9 [ORG] |
| 07BD | c(41D80001): ADD R1, SB, VAR1 |
| 07BE | d(F7FFFEC0): BL -320 [067FH] |
| 07BF | e(40E8000C): ADD R0, SP, CH |
| 07C0 | e .FIXUP D |
| 07C0 | e(8D900004): LDR SB, MT, MOD9 [ORG] |
| 07C1 | e(41D80001): ADD R1, SB, VAR1 |
| 07C2 | f(F7FFF8BF): BL -1857 [0082H] |
| 07C3 | g(80E00024): LDR R0, SP, 24H |
| 07C4 | h(81E00004): LDR R1, SP, 4H |
| 07C5 | h(82E00008): LDR R2, SP, 8H |
| 07C6 | i(43E8000C): ADD R3, SP, CH |
| 07C7 | i .FIXUP D |
| 07C7 | i(8D900007): LDR SB, MT, MOD9 [ORG] |
| 07C8 | i(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 |
| 07C9 | j .FIXUP P |
| 07C9 | j(F7917013): BL MOD9 [ORG] PROC23 |
| 07CA | k(E7000017): B 23 [07E2H] |
| 07CB | l(80E00028): LDR R0, SP, 28H |
| 07CC | l(40090006): SUB R0, R0, 6H |
| 07CD | l(E9000010): BNE 16 [07DEH] |
| 07CE | m(40E8000C): ADD R0, SP, CH |
| 07CF | m .FIXUP D |
| 07CF | m(8D900008): LDR SB, MT, MOD9 [ORG] |
| 07D0 | m(41D80001): ADD R1, SB, VAR1 |
| 07D1 | n(F7FFFEAD): BL -339 [067FH] |
| 07D2 | o(40E8000C): ADD R0, SP, CH |
| 07D3 | o .FIXUP D |
| 07D3 | o(8D900004): LDR SB, MT, MOD9 [ORG] |
| 07D4 | o(41D80001): ADD R1, SB, VAR1 |
| 07D5 | p(F7FFF8C1): BL -1855 [0097H] |
| 07D6 | q(80E00024): LDR R0, SP, 24H |
| 07D7 | r(81E00004): LDR R1, SP, 4H |
| 07D8 | r(82E00008): LDR R2, SP, 8H |
| 07D9 | s(43E8000C): ADD R3, SP, CH |
| 07DA | s .FIXUP D |
| 07DA | s(8D900007): LDR SB, MT, MOD9 [ORG] |
| 07DB | s(44D80001): ADD R4, SB, VAR1 |
| ELSEt ORSu.Mark("bad type")v |
| 07DC | t .FIXUP P |
| 07DC | t(F791B013): BL MOD9 [ORG] PROC27 |
| 07DD | u(E7000004): B 4 [07E2H] |
| 07DE | v .FIXUP D |
| 07DE | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 07DF | v(40D80310): ADD R0, SB, 310H ["bad type"] |
| 07E0 | v(41000009): MOV R1, R0, 9H |
| ENDw |
| 07E1 | w .FIXUP P |
| 07E1 | w(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (xop = ORS.div)y OR (zop = ORS.mod)a THENb |
| 07E2 | x(E700005B): B 91 [083EH] |
| 07E3 | y(80E00024): LDR R0, SP, 24H |
| 07E4 | y(40090003): SUB R0, R0, 3H |
| 07E5 | z(E1000003): BEQ 3 [07E9H] |
| 07E6 | a(80E00024): LDR R0, SP, 24H |
| 07E7 | a(40090004): SUB R0, R0, 4H |
| 07E8 | b(E9000013): BNE 19 [07FCH] |
| CheckInt(x)c;d factor(y)e;f CheckInt(y)g;h ORG.DivOp(op,i x,j y)k |
| 07E9 | c(80E00004): LDR R0, SP, 4H |
| 07EA | c(81E00008): LDR R1, SP, 8H |
| 07EB | d(F7FFF881): BL -1919 [006DH] |
| 07EC | e(40E8000C): ADD R0, SP, CH |
| 07ED | e .FIXUP D |
| 07ED | e(8D90000F): LDR SB, MT, MOD9 [ORG] |
| 07EE | e(41D80001): ADD R1, SB, VAR1 |
| 07EF | f(F7FFFE8F): BL -369 [067FH] |
| 07F0 | g(40E8000C): ADD R0, SP, CH |
| 07F1 | g .FIXUP D |
| 07F1 | g(8D900004): LDR SB, MT, MOD9 [ORG] |
| 07F2 | g(41D80001): ADD R1, SB, VAR1 |
| 07F3 | h(F7FFF879): BL -1927 [006DH] |
| 07F4 | i(80E00024): LDR R0, SP, 24H |
| 07F5 | j(81E00004): LDR R1, SP, 4H |
| 07F6 | j(82E00008): LDR R2, SP, 8H |
| 07F7 | k(43E8000C): ADD R3, SP, CH |
| 07F8 | k .FIXUP D |
| 07F8 | k(8D900007): LDR SB, MT, MOD9 [ORG] |
| 07F9 | k(44D80001): ADD R4, SB, VAR1 |
| ELSIFl opm = ORS.rdiv THENn |
| 07FA | l .FIXUP P |
| 07FA | l(F7916019): BL MOD9 [ORG] PROC22 |
| 07FB | m(E7000042): B 66 [083EH] |
| 07FC | n(80E00024): LDR R0, SP, 24H |
| 07FD | n(40090002): SUB R0, R0, 2H |
| 07FE | n(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 |
| 07FF | o(80E00028): LDR R0, SP, 28H |
| 0800 | o(40090005): SUB R0, R0, 5H |
| 0801 | o(E9000010): BNE 16 [0812H] |
| 0802 | p(40E8000C): ADD R0, SP, CH |
| 0803 | p .FIXUP D |
| 0803 | p(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 0804 | p(41D80001): ADD R1, SB, VAR1 |
| 0805 | q(F7FFFE79): BL -391 [067FH] |
| 0806 | r(40E8000C): ADD R0, SP, CH |
| 0807 | r .FIXUP D |
| 0807 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0808 | r(41D80001): ADD R1, SB, VAR1 |
| 0809 | s(F7FFF878): BL -1928 [0082H] |
| 080A | t(80E00024): LDR R0, SP, 24H |
| 080B | u(81E00004): LDR R1, SP, 4H |
| 080C | u(82E00008): LDR R2, SP, 8H |
| 080D | v(43E8000C): ADD R3, SP, CH |
| 080E | v .FIXUP D |
| 080E | v(8D900007): LDR SB, MT, MOD9 [ORG] |
| 080F | v(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 |
| 0810 | w .FIXUP P |
| 0810 | w(F7917016): BL MOD9 [ORG] PROC23 |
| 0811 | x(E7000017): B 23 [0829H] |
| 0812 | y(80E00028): LDR R0, SP, 28H |
| 0813 | y(40090006): SUB R0, R0, 6H |
| 0814 | y(E9000010): BNE 16 [0825H] |
| 0815 | z(40E8000C): ADD R0, SP, CH |
| 0816 | z .FIXUP D |
| 0816 | z(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0817 | z(41D80001): ADD R1, SB, VAR1 |
| 0818 | a(F7FFFE66): BL -410 [067FH] |
| 0819 | b(40E8000C): ADD R0, SP, CH |
| 081A | b .FIXUP D |
| 081A | b(8D900004): LDR SB, MT, MOD9 [ORG] |
| 081B | b(41D80001): ADD R1, SB, VAR1 |
| 081C | c(F7FFF87A): BL -1926 [0097H] |
| 081D | d(80E00024): LDR R0, SP, 24H |
| 081E | e(81E00004): LDR R1, SP, 4H |
| 081F | e(82E00008): LDR R2, SP, 8H |
| 0820 | f(43E8000C): ADD R3, SP, CH |
| 0821 | f .FIXUP D |
| 0821 | f(8D900007): LDR SB, MT, MOD9 [ORG] |
| 0822 | f(44D80001): ADD R4, SB, VAR1 |
| ELSEg ORSh.Mark("bad type")i |
| 0823 | g .FIXUP P |
| 0823 | g(F791B013): BL MOD9 [ORG] PROC27 |
| 0824 | h(E7000004): B 4 [0829H] |
| 0825 | i .FIXUP D |
| 0825 | i(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0826 | i(40D8031C): ADD R0, SB, 31CH ["bad type"] |
| 0827 | i(41000009): MOV R1, R0, 9H |
| ENDj |
| 0828 | j .FIXUP P |
| 0828 | j(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 |
| 0829 | k(E7000014): B 20 [083EH] |
| 082A | l(80E00004): LDR R0, SP, 4H |
| 082B | l(81E00008): LDR R1, SP, 8H |
| 082C | m(F7FFF82B): BL -2005 [0058H] |
| 082D | n(80E00004): LDR R0, SP, 4H |
| 082E | n(81E00008): LDR R1, SP, 8H |
| 082F | o .FIXUP P |
| 082F | o(F790F007): BL MOD9 [ORG] PROC15 |
| 0830 | p(40E8000C): ADD R0, SP, CH |
| 0831 | p .FIXUP D |
| 0831 | p(8D90000C): LDR SB, MT, MOD9 [ORG] |
| 0832 | p(41D80001): ADD R1, SB, VAR1 |
| 0833 | q(F7FFFE4B): BL -437 [067FH] |
| 0834 | r(40E8000C): ADD R0, SP, CH |
| 0835 | r .FIXUP D |
| 0835 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0836 | r(41D80001): ADD R1, SB, VAR1 |
| 0837 | s(F7FFF820): BL -2016 [0058H] |
| 0838 | t(80E00004): LDR R0, SP, 4H |
| 0839 | t(81E00008): LDR R1, SP, 8H |
| 083A | u(42E8000C): ADD R2, SP, CH |
| 083B | u .FIXUP D |
| 083B | u(8D900006): LDR SB, MT, MOD9 [ORG] |
| 083C | u(43D80001): ADD R3, SB, VAR1 |
| ENDv |
| 083D | v .FIXUP P |
| 083D | v(F791000E): BL MOD9 [ORG] PROC16 |
| ENDw |
| 083E | w(E7FFFF57): B -169 [0796H] |
| ENDx term; |
| 083F | x(8FE00000): LDR LNK, SP, 0H |
| 0840 | x(4EE8002C): ADD SP, SP, 2CH |
| 0841 | x(C700000F): B LNK |
| |
| PROCEDURE SimpleExpression(VAR x: ORG.Item); |
| VAR y: ORG.Item; op: INTEGER; |
| BEGINy |
| 0842 | y(4EE90028): SUB SP, SP, 28H |
| 0843 | y(AFE00000): STR LNK, SP, 0H |
| 0844 | y(A0E00004): STR R0, SP, 4H |
| 0845 | y(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.minus THENz ORS.Get(sym)a;b term(x)c;d |
| 0846 | z .FIXUP D |
| 0846 | z(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 0847 | z(80D0001C): LDR R0, SB, 1CH [data] |
| 0848 | z(40090007): SUB R0, R0, 7H |
| 0849 | z(E9000016): BNE 22 [0860H] |
| 084A | a .FIXUP D |
| 084A | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 084B | a(40D8001C): ADD R0, SB, 1CH [data] |
| 084C | b .FIXUP P |
| 084C | b(F770A00F): BL MOD7 [ORS] PROC10 |
| 084D | c(80E00004): LDR R0, SP, 4H |
| 084E | c(81E00008): LDR R1, SP, 8H |
| 084F | d(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 |
| 0850 | e(80E00004): LDR R0, SP, 4H |
| 0851 | e(80000004): LDR R0, R0, 4H |
| 0852 | e(D1393C4C): BLEQ MT [trap=4, pos=14652] |
| 0853 | f(41000070): MOV R1, R0, 70H |
| 0854 | f(80000000): LDR R0, R0, 0H |
| 0855 | f(40080001): ADD R0, R0, 1H |
| 0856 | f(01130000): ROR R1, R1, R0 |
| 0857 | f(E8000004): BPL 4 [085CH] |
| 0858 | g(80E00004): LDR R0, SP, 4H |
| 0859 | g(81E00008): LDR R1, SP, 8H |
| 085A | h .FIXUP P |
| 085A | h(F791300E): BL MOD9 [ORG] PROC19 |
| 085B | i(E7000003): B 3 [085FH] |
| 085C | j(80E00004): LDR R0, SP, 4H |
| 085D | j(81E00008): LDR R1, SP, 8H |
| 085E | k(F7FFF80E): BL -2034 [006DH] |
| ELSIF syml = ORS.plus THENm ORS.Get(sym)n;o term(x)p;q |
| 085F | l(E700000E): B 14 [086EH] |
| 0860 | m .FIXUP D |
| 0860 | m(8D000016): LDR SB, MT, MOD0 [ORP] |
| 0861 | m(80D0001C): LDR R0, SB, 1CH [data] |
| 0862 | m(40090006): SUB R0, R0, 6H |
| 0863 | m(E9000007): BNE 7 [086BH] |
| 0864 | n .FIXUP D |
| 0864 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0865 | n(40D8001C): ADD R0, SB, 1CH [data] |
| 0866 | o .FIXUP P |
| 0866 | o(F770A00C): BL MOD7 [ORS] PROC10 |
| 0867 | p(80E00004): LDR R0, SP, 4H |
| 0868 | p(81E00008): LDR R1, SP, 8H |
| 0869 | q(F7FFFF20): BL -224 [078AH] |
| ELSE termr(x)s |
| 086A | r(E7000003): B 3 [086EH] |
| 086B | s(80E00004): LDR R0, SP, 4H |
| 086C | s(81E00008): LDR R1, SP, 8H |
| ENDt ; |
| 086D | t(F7FFFF1C): BL -228 [078AH] |
| WHILE (sym >= ORS.plus)u & (vsym <= ORS.or)w DOx |
| 086E | u .FIXUP D |
| 086E | u(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 086F | u(80D0001C): LDR R0, SB, 1CH [data] |
| 0870 | u(40090006): SUB R0, R0, 6H |
| 0871 | v(E5000060): BLT 96 [08D2H] |
| 0872 | w .FIXUP D |
| 0872 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0873 | w(80D0001C): LDR R0, SB, 1CH [data] |
| 0874 | w(40090008): SUB R0, R0, 8H |
| 0875 | x(EE00005C): BGT 92 [08D2H] |
| op := sym;y ORS.Get(sym)z;a |
| 0876 | y .FIXUP D |
| 0876 | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0877 | y(80D0001C): LDR R0, SB, 1CH [data] |
| 0878 | y(A0E00024): STR R0, SP, 24H |
| 0879 | z(40D8001C): ADD R0, SB, 1CH |
| 087A | a .FIXUP P |
| 087A | a(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 |
| 087B | b(80E00024): LDR R0, SP, 24H |
| 087C | b(40090008): SUB R0, R0, 8H |
| 087D | b(E9000015): BNE 21 [0893H] |
| 087E | c(80E00004): LDR R0, SP, 4H |
| 087F | c(81E00008): LDR R1, SP, 8H |
| 0880 | d .FIXUP P |
| 0880 | d(F7911006): BL MOD9 [ORG] PROC17 |
| 0881 | e(80E00004): LDR R0, SP, 4H |
| 0882 | e(81E00008): LDR R1, SP, 8H |
| 0883 | f(F7FFF7D4): BL -2092 [0058H] |
| 0884 | g(40E8000C): ADD R0, SP, CH |
| 0885 | g .FIXUP D |
| 0885 | g(8D90000F): LDR SB, MT, MOD9 [ORG] |
| 0886 | g(41D80001): ADD R1, SB, VAR1 |
| 0887 | h(F7FFFF02): BL -254 [078AH] |
| 0888 | i(40E8000C): ADD R0, SP, CH |
| 0889 | i .FIXUP D |
| 0889 | i(8D900004): LDR SB, MT, MOD9 [ORG] |
| 088A | i(41D80001): ADD R1, SB, VAR1 |
| 088B | j(F7FFF7CC): BL -2100 [0058H] |
| 088C | k(80E00004): LDR R0, SP, 4H |
| 088D | k(81E00008): LDR R1, SP, 8H |
| 088E | l(42E8000C): ADD R2, SP, CH |
| 088F | l .FIXUP D |
| 088F | l(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0890 | l(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 |
| 0891 | m .FIXUP P |
| 0891 | m(F7912011): BL MOD9 [ORG] PROC18 |
| 0892 | n(E700003E): B 62 [08D1H] |
| 0893 | o(80E00004): LDR R0, SP, 4H |
| 0894 | o(80000004): LDR R0, R0, 4H |
| 0895 | o(D13A924C): BLEQ MT [trap=4, pos=14994] |
| 0896 | p(80000000): LDR R0, R0, 0H |
| 0897 | p(40090004): SUB R0, R0, 4H |
| 0898 | p(E9000010): BNE 16 [08A9H] |
| 0899 | q(40E8000C): ADD R0, SP, CH |
| 089A | q .FIXUP D |
| 089A | q(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 089B | q(41D80001): ADD R1, SB, VAR1 |
| 089C | r(F7FFFEED): BL -275 [078AH] |
| 089D | s(40E8000C): ADD R0, SP, CH |
| 089E | s .FIXUP D |
| 089E | s(8D900004): LDR SB, MT, MOD9 [ORG] |
| 089F | s(41D80001): ADD R1, SB, VAR1 |
| 08A0 | t(F7FFF7CC): BL -2100 [006DH] |
| 08A1 | u(80E00024): LDR R0, SP, 24H |
| 08A2 | v(81E00004): LDR R1, SP, 4H |
| 08A3 | v(82E00008): LDR R2, SP, 8H |
| 08A4 | w(43E8000C): ADD R3, SP, CH |
| 08A5 | w .FIXUP D |
| 08A5 | w(8D900007): LDR SB, MT, MOD9 [ORG] |
| 08A6 | w(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 |
| 08A7 | x .FIXUP P |
| 08A7 | x(F7914016): BL MOD9 [ORG] PROC20 |
| 08A8 | y(E7000028): B 40 [08D1H] |
| 08A9 | z(80E00004): LDR R0, SP, 4H |
| 08AA | z(80000004): LDR R0, R0, 4H |
| 08AB | z(D13AE34C): BLEQ MT [trap=4, pos=15075] |
| 08AC | a(80000000): LDR R0, R0, 0H |
| 08AD | a(40090005): SUB R0, R0, 5H |
| 08AE | a(E9000010): BNE 16 [08BFH] |
| 08AF | b(40E8000C): ADD R0, SP, CH |
| 08B0 | b .FIXUP D |
| 08B0 | b(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 08B1 | b(41D80001): ADD R1, SB, VAR1 |
| 08B2 | c(F7FFFED7): BL -297 [078AH] |
| 08B3 | d(40E8000C): ADD R0, SP, CH |
| 08B4 | d .FIXUP D |
| 08B4 | d(8D900004): LDR SB, MT, MOD9 [ORG] |
| 08B5 | d(41D80001): ADD R1, SB, VAR1 |
| 08B6 | e(F7FFF7CB): BL -2101 [0082H] |
| 08B7 | f(80E00024): LDR R0, SP, 24H |
| 08B8 | g(81E00004): LDR R1, SP, 4H |
| 08B9 | g(82E00008): LDR R2, SP, 8H |
| 08BA | h(43E8000C): ADD R3, SP, CH |
| 08BB | h .FIXUP D |
| 08BB | h(8D900007): LDR SB, MT, MOD9 [ORG] |
| 08BC | h(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 |
| 08BD | i .FIXUP P |
| 08BD | i(F7917016): BL MOD9 [ORG] PROC23 |
| 08BE | j(E7000012): B 18 [08D1H] |
| 08BF | k(80E00004): LDR R0, SP, 4H |
| 08C0 | k(81E00008): LDR R1, SP, 8H |
| 08C1 | l(F7FFF7D5): BL -2091 [0097H] |
| 08C2 | m(40E8000C): ADD R0, SP, CH |
| 08C3 | m .FIXUP D |
| 08C3 | m(8D900008): LDR SB, MT, MOD9 [ORG] |
| 08C4 | m(41D80001): ADD R1, SB, VAR1 |
| 08C5 | n(F7FFFEC4): BL -316 [078AH] |
| 08C6 | o(40E8000C): ADD R0, SP, CH |
| 08C7 | o .FIXUP D |
| 08C7 | o(8D900004): LDR SB, MT, MOD9 [ORG] |
| 08C8 | o(41D80001): ADD R1, SB, VAR1 |
| 08C9 | p(F7FFF7CD): BL -2099 [0097H] |
| 08CA | q(80E00024): LDR R0, SP, 24H |
| 08CB | r(81E00004): LDR R1, SP, 4H |
| 08CC | r(82E00008): LDR R2, SP, 8H |
| 08CD | s(43E8000C): ADD R3, SP, CH |
| 08CE | s .FIXUP D |
| 08CE | s(8D900007): LDR SB, MT, MOD9 [ORG] |
| 08CF | s(44D80001): ADD R4, SB, VAR1 |
| ENDt |
| 08D0 | t .FIXUP P |
| 08D0 | t(F791B013): BL MOD9 [ORG] PROC27 |
| ENDu |
| 08D1 | u(E7FFFF9C): B -100 [086EH] |
| ENDv SimpleExpression; |
| 08D2 | v(8FE00000): LDR LNK, SP, 0H |
| 08D3 | v(4EE80028): ADD SP, SP, 28H |
| 08D4 | v(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 |
| 08D5 | w(4EE90034): SUB SP, SP, 34H |
| 08D6 | w(AFE00000): STR LNK, SP, 0H |
| 08D7 | w(A0E00004): STR R0, SP, 4H |
| 08D8 | w(A1E00008): STR R1, SP, 8H |
| 08D9 | x(80E00004): LDR R0, SP, 4H |
| 08DA | x(81E00008): LDR R1, SP, 8H |
| 08DB | y(F7FFFF66): BL -154 [0842H] |
| IF (sym >= ORS.eql)z & (asym <= ORS.geq)b THENc |
| 08DC | z .FIXUP D |
| 08DC | z(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 08DD | z(80D0001C): LDR R0, SB, 1CH [data] |
| 08DE | z(40090009): SUB R0, R0, 9H |
| 08DF | a(E5000127): BLT 295 [0A07H] |
| 08E0 | b .FIXUP D |
| 08E0 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 08E1 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 08E2 | b(4009000E): SUB R0, R0, EH |
| 08E3 | c(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 |
| 08E4 | d .FIXUP D |
| 08E4 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 08E5 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 08E6 | d(A0E00028): STR R0, SP, 28H |
| 08E7 | e(40D8001C): ADD R0, SB, 1CH |
| 08E8 | f .FIXUP P |
| 08E8 | f(F770A018): BL MOD7 [ORS] PROC10 |
| 08E9 | g(40E8000C): ADD R0, SP, CH |
| 08EA | g .FIXUP D |
| 08EA | g(8D900006): LDR SB, MT, MOD9 [ORG] |
| 08EB | g(41D80001): ADD R1, SB, VAR1 |
| 08EC | h(F7FFFF55): BL -171 [0842H] |
| 08ED | i(80E00004): LDR R0, SP, 4H |
| 08EE | i(80000004): LDR R0, R0, 4H |
| 08EF | i(D13C864C): BLEQ MT [trap=4, pos=15494] |
| 08F0 | j(80000000): LDR R0, R0, 0H |
| 08F1 | j(A0E0002C): STR R0, SP, 2CH |
| 08F2 | k(80E00010): LDR R0, SP, 10H |
| 08F3 | k(D13C994C): BLEQ MT [trap=4, pos=15513] |
| 08F4 | l(80000000): LDR R0, R0, 0H |
| 08F5 | l(A0E00030): STR R0, SP, 30H |
| IF x.type = y.type THENm |
| 08F6 | m(80E00004): LDR R0, SP, 4H |
| 08F7 | m(80000004): LDR R0, R0, 4H |
| 08F8 | m(81E00010): LDR R1, SP, 10H |
| 08F9 | m(00090001): SUB R0, R0, R1 |
| 08FA | m(E9000048): BNE 72 [0943H] |
| IF (xf IN {ORB.Char, ORB.Int})n THENo ORG.IntRelation(rel,p x,q y)r |
| 08FB | n(40000018): MOV R0, R0, 18H |
| 08FC | n(81E0002C): LDR R1, SP, 2CH |
| 08FD | n(41180001): ADD R1, R1, 1H |
| 08FE | n(00030001): ROR R0, R0, R1 |
| 08FF | o(E8000008): BPL 8 [0908H] |
| 0900 | p(80E00028): LDR R0, SP, 28H |
| 0901 | q(81E00004): LDR R1, SP, 4H |
| 0902 | q(82E00008): LDR R2, SP, 8H |
| 0903 | r(43E8000C): ADD R3, SP, CH |
| 0904 | r .FIXUP D |
| 0904 | r(8D90001A): LDR SB, MT, MOD9 [ORG] |
| 0905 | r(44D80001): ADD R4, SB, VAR1 |
| ELSIFs xft = ORB.Real THENu ORG.RealRelation(rel,v x,w y)x |
| 0906 | s .FIXUP P |
| 0906 | s(F791C01E): BL MOD9 [ORG] PROC28 |
| 0907 | t(E700003A): B 58 [0942H] |
| 0908 | u(80E0002C): LDR R0, SP, 2CH |
| 0909 | u(40090005): SUB R0, R0, 5H |
| 090A | u(E9000008): BNE 8 [0913H] |
| 090B | v(80E00028): LDR R0, SP, 28H |
| 090C | w(81E00004): LDR R1, SP, 4H |
| 090D | w(82E00008): LDR R2, SP, 8H |
| 090E | x(43E8000C): ADD R3, SP, CH |
| 090F | x .FIXUP D |
| 090F | x(8D90000B): LDR SB, MT, MOD9 [ORG] |
| 0910 | x(44D80001): ADD R4, SB, VAR1 |
| ELSIFy (zxf IN {ORB.Set, ORB.Pointer, ORB.Proc, ORB.NilTyp, ORB.Bool})a THENb |
| 0911 | y .FIXUP P |
| 0911 | y(F791D00B): BL MOD9 [ORG] PROC29 |
| 0912 | z(E700002F): B 47 [0942H] |
| 0913 | a(400005C4): MOV R0, R0, 5C4H |
| 0914 | a(81E0002C): LDR R1, SP, 2CH |
| 0915 | a(41180001): ADD R1, R1, 1H |
| 0916 | a(00030001): ROR R0, R0, R1 |
| 0917 | b(E8000010): BPL 16 [0928H] |
| IF rel <= ORS.neq THENc ORG.IntRelation(rel,d x,e y)f ELSEg ORSh.Mark("only = or #")i ENDj |
| 0918 | c(80E00028): LDR R0, SP, 28H |
| 0919 | c(4009000A): SUB R0, R0, AH |
| 091A | c(EE000008): BGT 8 [0923H] |
| 091B | d(80E00028): LDR R0, SP, 28H |
| 091C | e(81E00004): LDR R1, SP, 4H |
| 091D | e(82E00008): LDR R2, SP, 8H |
| 091E | f(43E8000C): ADD R3, SP, CH |
| 091F | f .FIXUP D |
| 091F | f(8D900010): LDR SB, MT, MOD9 [ORG] |
| 0920 | f(44D80001): ADD R4, SB, VAR1 |
| 0921 | g .FIXUP P |
| 0921 | g(F791C010): BL MOD9 [ORG] PROC28 |
| 0922 | h(E7000004): B 4 [0927H] |
| 0923 | i .FIXUP D |
| 0923 | i(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0924 | i(40D80328): ADD R0, SB, 328H ["only = or #"] |
| 0925 | i(4100000C): MOV R1, R0, CH |
| 0926 | j .FIXUP P |
| 0926 | j(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (kxf = ORB.Array)l & (mx.type.basen.formo = ORB.Char)p OR (qxf = ORB.String)r THENs |
| 0927 | k(E700001A): B 26 [0942H] |
| 0928 | l(80E0002C): LDR R0, SP, 2CH |
| 0929 | l(4009000C): SUB R0, R0, CH |
| 092A | m(E9000008): BNE 8 [0933H] |
| 092B | n(80E00004): LDR R0, SP, 4H |
| 092C | n(80000004): LDR R0, R0, 4H |
| 092D | n(D13E194C): BLEQ MT [trap=4, pos=15897] |
| 092E | o(8000001C): LDR R0, R0, 1CH |
| 092F | o(D13E1E4C): BLEQ MT [trap=4, pos=15902] |
| 0930 | p(80000000): LDR R0, R0, 0H |
| 0931 | p(40090003): SUB R0, R0, 3H |
| 0932 | q(E1000003): BEQ 3 [0936H] |
| 0933 | r(80E0002C): LDR R0, SP, 2CH |
| 0934 | r(4009000B): SUB R0, R0, BH |
| 0935 | s(E9000008): BNE 8 [093EH] |
| ORG.StringRelation(rel,t x,u y)v |
| 0936 | t(80E00028): LDR R0, SP, 28H |
| 0937 | u(81E00004): LDR R1, SP, 4H |
| 0938 | u(82E00008): LDR R2, SP, 8H |
| 0939 | v(43E8000C): ADD R3, SP, CH |
| 093A | v .FIXUP D |
| 093A | v(8D900017): LDR SB, MT, MOD9 [ORG] |
| 093B | v(44D80001): ADD R4, SB, VAR1 |
| ELSEw ORSx.Mark("illegal comparison")y |
| 093C | w .FIXUP P |
| 093C | w(F791E016): BL MOD9 [ORG] PROC30 |
| 093D | x(E7000004): B 4 [0942H] |
| 093E | y .FIXUP D |
| 093E | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 093F | y(40D80334): ADD R0, SB, 334H ["illegal comparison"] |
| 0940 | y(41000013): MOV R1, R0, 13H |
| ENDz |
| 0941 | z .FIXUP P |
| 0941 | z(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (axf IN {ORB.Pointer, ORB.Proc})b & (cyf = ORB.NilTyp)d |
| 0942 | a(E70000BF): B 191 [0A02H] |
| 0943 | b(40000480): MOV R0, R0, 480H |
| 0944 | b(81E0002C): LDR R1, SP, 2CH |
| 0945 | b(41180001): ADD R1, R1, 1H |
| 0946 | b(00030001): ROR R0, R0, R1 |
| 0947 | c(E8000003): BPL 3 [094BH] |
| 0948 | d(80E00030): LDR R0, SP, 30H |
| 0949 | d(40090008): SUB R0, R0, 8H |
| OR (eyf IN {ORB.Pointer, ORB.Proc})f & (gxf = ORB.NilTyp)h THENi |
| 094A | e(E1000008): BEQ 8 [0953H] |
| 094B | f(40000480): MOV R0, R0, 480H |
| 094C | f(81E00030): LDR R1, SP, 30H |
| 094D | f(41180001): ADD R1, R1, 1H |
| 094E | f(00030001): ROR R0, R0, R1 |
| 094F | g(E8000013): BPL 19 [0963H] |
| 0950 | h(80E0002C): LDR R0, SP, 2CH |
| 0951 | h(40090008): SUB R0, R0, 8H |
| 0952 | i(E9000010): BNE 16 [0963H] |
| IF rel <= ORS.neq THENj ORG.IntRelation(rel,k x,l y)m ELSEn ORSo.Mark("only = or #")p ENDq |
| 0953 | j(80E00028): LDR R0, SP, 28H |
| 0954 | j(4009000A): SUB R0, R0, AH |
| 0955 | j(EE000008): BGT 8 [095EH] |
| 0956 | k(80E00028): LDR R0, SP, 28H |
| 0957 | l(81E00004): LDR R1, SP, 4H |
| 0958 | l(82E00008): LDR R2, SP, 8H |
| 0959 | m(43E8000C): ADD R3, SP, CH |
| 095A | m .FIXUP D |
| 095A | m(8D90001C): LDR SB, MT, MOD9 [ORG] |
| 095B | m(44D80001): ADD R4, SB, VAR1 |
| 095C | n .FIXUP P |
| 095C | n(F791C01B): BL MOD9 [ORG] PROC28 |
| 095D | o(E7000004): B 4 [0962H] |
| 095E | p .FIXUP D |
| 095E | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 095F | p(40D80348): ADD R0, SB, 348H ["only = or #"] |
| 0960 | p(4100000C): MOV R1, R0, CH |
| 0961 | q .FIXUP P |
| 0961 | q(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (rxf = ORB.Pointer)s & (tyf = ORB.Pointer)u & |
| 0962 | r(E700009F): B 159 [0A02H] |
| 0963 | s(80E0002C): LDR R0, SP, 2CH |
| 0964 | s(40090007): SUB R0, R0, 7H |
| 0965 | t(E9000017): BNE 23 [097DH] |
| 0966 | u(80E00030): LDR R0, SP, 30H |
| 0967 | u(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 |
| 0968 | v(E9000014): BNE 20 [097DH] |
| 0969 | w(80E00004): LDR R0, SP, 4H |
| 096A | w(80000004): LDR R0, R0, 4H |
| 096B | w(D13FDF4C): BLEQ MT [trap=4, pos=16351] |
| 096C | x(8000001C): LDR R0, R0, 1CH |
| 096D | y(81E00010): LDR R1, SP, 10H |
| 096E | y(D13FEC4C): BLEQ MT [trap=4, pos=16364] |
| 096F | z(8110001C): LDR R1, R1, 1CH |
| 0970 | a(F7FFF79C): BL -2148 [010DH] |
| 0971 | b(40090000): SUB R0, R0, 0H |
| 0972 | b(E9000016): BNE 22 [0989H] |
| 0973 | c(80E00010): LDR R0, SP, 10H |
| 0974 | c(D140084C): BLEQ MT [trap=4, pos=16392] |
| 0975 | d(8000001C): LDR R0, R0, 1CH |
| 0976 | e(81E00004): LDR R1, SP, 4H |
| 0977 | e(81100004): LDR R1, R1, 4H |
| 0978 | e(D140154C): BLEQ MT [trap=4, pos=16405] |
| 0979 | f(8110001C): LDR R1, R1, 1CH |
| 097A | g(F7FFF792): BL -2158 [010DH] |
| 097B | g(40090000): SUB R0, R0, 0H |
| OR (hxf = ORB.Proc)i & (jyf = ORB.Proc)k & EqualSignaturesl(x.type,m y.type)n THENo |
| 097C | h(E900000C): BNE 12 [0989H] |
| 097D | i(80E0002C): LDR R0, SP, 2CH |
| 097E | i(4009000A): SUB R0, R0, AH |
| 097F | j(E9000019): BNE 25 [0999H] |
| 0980 | k(80E00030): LDR R0, SP, 30H |
| 0981 | k(4009000A): SUB R0, R0, AH |
| 0982 | l(E9000016): BNE 22 [0999H] |
| 0983 | m(80E00004): LDR R0, SP, 4H |
| 0984 | m(80000004): LDR R0, R0, 4H |
| 0985 | n(81E00010): LDR R1, SP, 10H |
| 0986 | o(F7FFF8FF): BL -1793 [0286H] |
| 0987 | o(40090000): SUB R0, R0, 0H |
| 0988 | o(E1000010): BEQ 16 [0999H] |
| IF rel <= ORS.neq THENp ORG.IntRelation(rel,q x,r y)s ELSEt ORSu.Mark("only = or #")v ENDw |
| 0989 | p(80E00028): LDR R0, SP, 28H |
| 098A | p(4009000A): SUB R0, R0, AH |
| 098B | p(EE000008): BGT 8 [0994H] |
| 098C | q(80E00028): LDR R0, SP, 28H |
| 098D | r(81E00004): LDR R1, SP, 4H |
| 098E | r(82E00008): LDR R2, SP, 8H |
| 098F | s(43E8000C): ADD R3, SP, CH |
| 0990 | s .FIXUP D |
| 0990 | s(8D900032): LDR SB, MT, MOD9 [ORG] |
| 0991 | s(44D80001): ADD R4, SB, VAR1 |
| 0992 | t .FIXUP P |
| 0992 | t(F791C031): BL MOD9 [ORG] PROC28 |
| 0993 | u(E7000004): B 4 [0998H] |
| 0994 | v .FIXUP D |
| 0994 | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0995 | v(40D80354): ADD R0, SB, 354H ["only = or #"] |
| 0996 | v(4100000C): MOV R1, R0, CH |
| 0997 | w .FIXUP P |
| 0997 | w(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (xxf = ORB.Array)y & (zx.type.basea.formb = ORB.Char)c & |
| 0998 | x(E7000069): B 105 [0A02H] |
| 0999 | y(80E0002C): LDR R0, SP, 2CH |
| 099A | y(4009000C): SUB R0, R0, CH |
| 099B | z(E9000015): BNE 21 [09B1H] |
| 099C | a(80E00004): LDR R0, SP, 4H |
| 099D | a(80000004): LDR R0, R0, 4H |
| 099E | a(D140F54C): BLEQ MT [trap=4, pos=16629] |
| 099F | b(8000001C): LDR R0, R0, 1CH |
| 09A0 | b(D140FA4C): BLEQ MT [trap=4, pos=16634] |
| 09A1 | c(80000000): LDR R0, R0, 0H |
| 09A2 | c(40090003): SUB R0, R0, 3H |
| (d(yf = ORB.String)e OR (fyf = ORB.Array)g & (hy.type.basei.formj = ORB.Char)k) |
| 09A3 | d(E900000D): BNE 13 [09B1H] |
| 09A4 | e(80E00030): LDR R0, SP, 30H |
| 09A5 | e(4009000B): SUB R0, R0, BH |
| 09A6 | f(E1000017): BEQ 23 [09BEH] |
| 09A7 | g(80E00030): LDR R0, SP, 30H |
| 09A8 | g(4009000C): SUB R0, R0, CH |
| 09A9 | h(E9000007): BNE 7 [09B1H] |
| 09AA | i(80E00010): LDR R0, SP, 10H |
| 09AB | i(D1414A4C): BLEQ MT [trap=4, pos=16714] |
| 09AC | j(8000001C): LDR R0, R0, 1CH |
| 09AD | j(D1414F4C): BLEQ MT [trap=4, pos=16719] |
| 09AE | k(80000000): LDR R0, R0, 0H |
| 09AF | k(40090003): SUB R0, R0, 3H |
| OR (lyf = ORB.Array)m & (ny.type.baseo.formp = ORB.Char)q & (rxf = ORB.String)s THENt |
| 09B0 | l(E100000D): BEQ 13 [09BEH] |
| 09B1 | m(80E00030): LDR R0, SP, 30H |
| 09B2 | m(4009000C): SUB R0, R0, CH |
| 09B3 | n(E9000012): BNE 18 [09C6H] |
| 09B4 | o(80E00010): LDR R0, SP, 10H |
| 09B5 | o(D141894C): BLEQ MT [trap=4, pos=16777] |
| 09B6 | p(8000001C): LDR R0, R0, 1CH |
| 09B7 | p(D1418E4C): BLEQ MT [trap=4, pos=16782] |
| 09B8 | q(80000000): LDR R0, R0, 0H |
| 09B9 | q(40090003): SUB R0, R0, 3H |
| 09BA | r(E900000B): BNE 11 [09C6H] |
| 09BB | s(80E0002C): LDR R0, SP, 2CH |
| 09BC | s(4009000B): SUB R0, R0, BH |
| 09BD | t(E9000008): BNE 8 [09C6H] |
| ORG.StringRelation(rel,u x,v y)w |
| 09BE | u(80E00028): LDR R0, SP, 28H |
| 09BF | v(81E00004): LDR R1, SP, 4H |
| 09C0 | v(82E00008): LDR R2, SP, 8H |
| 09C1 | w(43E8000C): ADD R3, SP, CH |
| 09C2 | w .FIXUP D |
| 09C2 | w(8D90002E): LDR SB, MT, MOD9 [ORG] |
| 09C3 | w(44D80001): ADD R4, SB, VAR1 |
| ELSIFx (yxf = ORB.Char)z & (ayf = ORB.String)b & (cy.b = 2)d THENe |
| 09C4 | x .FIXUP P |
| 09C4 | x(F791E02D): BL MOD9 [ORG] PROC30 |
| 09C5 | y(E700003C): B 60 [0A02H] |
| 09C6 | z(80E0002C): LDR R0, SP, 2CH |
| 09C7 | z(40090003): SUB R0, R0, 3H |
| 09C8 | a(E9000012): BNE 18 [09DBH] |
| 09C9 | b(80E00030): LDR R0, SP, 30H |
| 09CA | b(4009000B): SUB R0, R0, BH |
| 09CB | c(E900000F): BNE 15 [09DBH] |
| 09CC | d(80E00018): LDR R0, SP, 18H |
| 09CD | d(40090002): SUB R0, R0, 2H |
| 09CE | e(E900000C): BNE 12 [09DBH] |
| ORG.StrToChar(y)f;g ORG.IntRelation(rel,h x,i y)j |
| 09CF | f(40E8000C): ADD R0, SP, CH |
| 09D0 | f .FIXUP D |
| 09D0 | f(8D90000E): LDR SB, MT, MOD9 [ORG] |
| 09D1 | f(41D80001): ADD R1, SB, VAR1 |
| 09D2 | g .FIXUP P |
| 09D2 | g(F791F00E): BL MOD9 [ORG] PROC31 |
| 09D3 | h(80E00028): LDR R0, SP, 28H |
| 09D4 | i(81E00004): LDR R1, SP, 4H |
| 09D5 | i(82E00008): LDR R2, SP, 8H |
| 09D6 | j(43E8000C): ADD R3, SP, CH |
| 09D7 | j .FIXUP D |
| 09D7 | j(8D900007): LDR SB, MT, MOD9 [ORG] |
| 09D8 | j(44D80001): ADD R4, SB, VAR1 |
| ELSIFk (lyf = ORB.Char)m & (nxf = ORB.String)o & (px.b = 2)q THENr |
| 09D9 | k .FIXUP P |
| 09D9 | k(F791C007): BL MOD9 [ORG] PROC28 |
| 09DA | l(E7000027): B 39 [0A02H] |
| 09DB | m(80E00030): LDR R0, SP, 30H |
| 09DC | m(40090003): SUB R0, R0, 3H |
| 09DD | n(E9000012): BNE 18 [09F0H] |
| 09DE | o(80E0002C): LDR R0, SP, 2CH |
| 09DF | o(4009000B): SUB R0, R0, BH |
| 09E0 | p(E900000F): BNE 15 [09F0H] |
| 09E1 | q(80E00004): LDR R0, SP, 4H |
| 09E2 | q(8000000C): LDR R0, R0, CH |
| 09E3 | q(40090002): SUB R0, R0, 2H |
| 09E4 | r(E900000B): BNE 11 [09F0H] |
| ORG.StrToChar(x)s;t ORG.IntRelation(rel,u x,v y)w |
| 09E5 | s(80E00004): LDR R0, SP, 4H |
| 09E6 | s(81E00008): LDR R1, SP, 8H |
| 09E7 | t .FIXUP P |
| 09E7 | t(F791F00E): BL MOD9 [ORG] PROC31 |
| 09E8 | u(80E00028): LDR R0, SP, 28H |
| 09E9 | v(81E00004): LDR R1, SP, 4H |
| 09EA | v(82E00008): LDR R2, SP, 8H |
| 09EB | w(43E8000C): ADD R3, SP, CH |
| 09EC | w .FIXUP D |
| 09EC | w(8D900015): LDR SB, MT, MOD9 [ORG] |
| 09ED | w(44D80001): ADD R4, SB, VAR1 |
| ELSIFx (yxf = ORB.Int)z & (ayf = ORB.Int)b THENc ORG.IntRelation(rel,d x,e y)f (*BYTE*) |
| 09EE | x .FIXUP P |
| 09EE | x(F791C007): BL MOD9 [ORG] PROC28 |
| 09EF | y(E7000012): B 18 [0A02H] |
| 09F0 | z(80E0002C): LDR R0, SP, 2CH |
| 09F1 | z(40090004): SUB R0, R0, 4H |
| 09F2 | a(E900000B): BNE 11 [09FEH] |
| 09F3 | b(80E00030): LDR R0, SP, 30H |
| 09F4 | b(40090004): SUB R0, R0, 4H |
| 09F5 | c(E9000008): BNE 8 [09FEH] |
| 09F6 | d(80E00028): LDR R0, SP, 28H |
| 09F7 | e(81E00004): LDR R1, SP, 4H |
| 09F8 | e(82E00008): LDR R2, SP, 8H |
| 09F9 | f(43E8000C): ADD R3, SP, CH |
| 09FA | f .FIXUP D |
| 09FA | f(8D90000E): LDR SB, MT, MOD9 [ORG] |
| 09FB | f(44D80001): ADD R4, SB, VAR1 |
| ELSEg ORSh.Mark("illegal comparison")i |
| 09FC | g .FIXUP P |
| 09FC | g(F791C00E): BL MOD9 [ORG] PROC28 |
| 09FD | h(E7000004): B 4 [0A02H] |
| 09FE | i .FIXUP D |
| 09FE | i(8D000004): LDR SB, MT, MOD0 [ORP] |
| 09FF | i(40D80360): ADD R0, SB, 360H ["illegal comparison"] |
| 0A00 | i(41000013): MOV R1, R0, 13H |
| ENDj ; |
| 0A01 | j .FIXUP P |
| 0A01 | j(F7709005): BL MOD7 [ORS] PROC9 |
| x.type := ORB.boolType |
| ELSIFk syml = ORS.in THENm |
| 0A02 | k .FIXUP D |
| 0A02 | k(8D800004): LDR SB, MT, MOD8 [ORB] |
| 0A03 | k(80D00007): LDR R0, SB, VAR7 |
| 0A04 | k(81E00004): LDR R1, SP, 4H |
| 0A05 | k(A0100004): STR R0, R1, 4H |
| 0A06 | l(E7000031): B 49 [0A38H] |
| 0A07 | m .FIXUP D |
| 0A07 | m(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0A08 | m(80D0001C): LDR R0, SB, 1CH [data] |
| 0A09 | m(4009000F): SUB R0, R0, FH |
| 0A0A | m(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 |
| 0A0B | n .FIXUP D |
| 0A0B | n(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0A0C | n(40D8001C): ADD R0, SB, 1CH [data] |
| 0A0D | o .FIXUP P |
| 0A0D | o(F770A00C): BL MOD7 [ORS] PROC10 |
| 0A0E | p(80E00004): LDR R0, SP, 4H |
| 0A0F | p(81E00008): LDR R1, SP, 8H |
| 0A10 | q(F7FFF65C): BL -2468 [006DH] |
| 0A11 | r(40E8000C): ADD R0, SP, CH |
| 0A12 | r .FIXUP D |
| 0A12 | r(8D900007): LDR SB, MT, MOD9 [ORG] |
| 0A13 | r(41D80001): ADD R1, SB, VAR1 |
| 0A14 | s(F7FFFE2D): BL -467 [0842H] |
| 0A15 | t(40E8000C): ADD R0, SP, CH |
| 0A16 | t .FIXUP D |
| 0A16 | t(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0A17 | t(41D80001): ADD R1, SB, VAR1 |
| 0A18 | u(F7FFF67E): BL -2434 [0097H] |
| 0A19 | v(80E00004): LDR R0, SP, 4H |
| 0A1A | v(81E00008): LDR R1, SP, 8H |
| 0A1B | w(42E8000C): ADD R2, SP, CH |
| 0A1C | w .FIXUP D |
| 0A1C | w(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0A1D | w(43D80001): ADD R3, SB, VAR1 |
| 0A1E | x .FIXUP P |
| 0A1E | x(F791A011): BL MOD9 [ORG] PROC26 |
| x.type := ORB.boolType |
| ELSIFy symz = ORS.is THENa |
| 0A1F | y .FIXUP D |
| 0A1F | y(8D800003): LDR SB, MT, MOD8 [ORB] |
| 0A20 | y(80D00007): LDR R0, SB, VAR7 |
| 0A21 | y(81E00004): LDR R1, SP, 4H |
| 0A22 | y(A0100004): STR R0, R1, 4H |
| 0A23 | z(E7000014): B 20 [0A38H] |
| 0A24 | a .FIXUP D |
| 0A24 | a(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0A25 | a(80D0001C): LDR R0, SB, 1CH [data] |
| 0A26 | a(40090010): SUB R0, R0, 10H |
| 0A27 | a(E9000010): BNE 16 [0A38H] |
| ORS.Get(sym)b;c qualident(obj)d;e TypeTest(x,f obj.typeg,h FALSE)i ;j |
| 0A28 | b .FIXUP D |
| 0A28 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0A29 | b(40D8001C): ADD R0, SB, 1CH [data] |
| 0A2A | c .FIXUP P |
| 0A2A | c(F770A00C): BL MOD7 [ORS] PROC10 |
| 0A2B | d(40E80024): ADD R0, SP, 24H |
| 0A2C | e(F7FFF5E7): BL -2585 [0014H] |
| 0A2D | f(80E00004): LDR R0, SP, 4H |
| 0A2E | f(81E00008): LDR R1, SP, 8H |
| 0A2F | g(82E00024): LDR R2, SP, 24H |
| 0A30 | g(D1444F4C): BLEQ MT [trap=4, pos=17487] |
| 0A31 | h(82200010): LDR R2, R2, 10H |
| 0A32 | i(43000000): MOV R3, R0, 0H |
| 0A33 | j(F7FFF6F0): BL -2320 [0124H] |
| x.type := ORB.boolType |
| ENDk |
| 0A34 | k .FIXUP D |
| 0A34 | k(8D80000C): LDR SB, MT, MOD8 [ORB] |
| 0A35 | k(80D00007): LDR R0, SB, VAR7 |
| 0A36 | k(81E00004): LDR R1, SP, 4H |
| 0A37 | k(A0100004): STR R0, R1, 4H |
| ENDl expression0; |
| 0A38 | l(8FE00000): LDR LNK, SP, 0H |
| 0A39 | l(4EE80034): ADD SP, SP, 34H |
| 0A3A | l(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 |
| 0A3B | m(4EE90058): SUB SP, SP, 58H |
| 0A3C | m(AFE00000): STR LNK, SP, 0H |
| 0A3D | m(A0E00004): STR R0, SP, 4H |
| 0A3E | n(4000001C): MOV R0, R0, 1CH |
| 0A3F | o .FIXUP D |
| 0A3F | o(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 0A40 | o(41D80374): ADD R1, SB, 374H ["no ("] |
| 0A41 | o(42000005): MOV R2, R0, 5H |
| 0A42 | p(F7FFF5BD): BL -2627 [0000H] |
| npar := pno MOD 10;q pno := pno DIV 10;r expression(x)s;t nap := 1;u |
| 0A43 | q(80E00004): LDR R0, SP, 4H |
| 0A44 | q(400B000A): DIV R0, R0, AH |
| 0A45 | q(20000000): MOV' R0, R0, R0 |
| 0A46 | q(A0E0000C): STR R0, SP, CH |
| 0A47 | r(80E00004): LDR R0, SP, 4H |
| 0A48 | r(400B000A): DIV R0, R0, AH |
| 0A49 | r(A0E00004): STR R0, SP, 4H |
| 0A4A | s(40E80010): ADD R0, SP, 10H |
| 0A4B | s .FIXUP D |
| 0A4B | s(8D90000C): LDR SB, MT, MOD9 [ORG] |
| 0A4C | s(41D80001): ADD R1, SB, VAR1 |
| 0A4D | t .FIXUP D |
| 0A4D | t(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0A4E | t(82D00034): LDR R2, SB, 34H [data] |
| 0A4F | t(D1457E5C): BLEQ MT [trap=5, pos=17790] |
| 0A50 | t(D7000002): BL R2 |
| 0A51 | u(40000001): MOV R0, R0, 1H |
| 0A52 | u(A0E00008): STR R0, SP, 8H |
| IF sym = ORS.comma THENv |
| 0A53 | v .FIXUP D |
| 0A53 | v(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0A54 | v(80D0001C): LDR R0, SB, 1CH [data] |
| 0A55 | v(40090028): SUB R0, R0, 28H |
| 0A56 | v(E9000022): BNE 34 [0A79H] |
| ORS.Get(sym)w;x expression(y)y;z nap := 2;a z.type := ORB.noType;b |
| 0A57 | w .FIXUP D |
| 0A57 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0A58 | w(40D8001C): ADD R0, SB, 1CH [data] |
| 0A59 | x .FIXUP P |
| 0A59 | x(F770A02F): BL MOD7 [ORS] PROC10 |
| 0A5A | y(40E80028): ADD R0, SP, 28H |
| 0A5B | y .FIXUP D |
| 0A5B | y(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0A5C | y(41D80001): ADD R1, SB, VAR1 |
| 0A5D | z .FIXUP D |
| 0A5D | z(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0A5E | z(82D00034): LDR R2, SB, 34H [data] |
| 0A5F | z(D145C75C): BLEQ MT [trap=5, pos=17863] |
| 0A60 | z(D7000002): BL R2 |
| 0A61 | a(40000002): MOV R0, R0, 2H |
| 0A62 | a(A0E00008): STR R0, SP, 8H |
| 0A63 | b .FIXUP D |
| 0A63 | b(8D800006): LDR SB, MT, MOD8 [ORB] |
| 0A64 | b(80D0000D): LDR R0, SB, VAR13 |
| 0A65 | b(A0E00044): STR R0, SP, 44H |
| WHILE sym = ORS.comma DOc ORS.Get(sym)d;e expression(z)f;g INC(nap) ENDh |
| 0A66 | c .FIXUP D |
| 0A66 | c(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0A67 | c(80D0001C): LDR R0, SB, 1CH [data] |
| 0A68 | c(40090028): SUB R0, R0, 28H |
| 0A69 | c(E900000E): BNE 14 [0A78H] |
| 0A6A | d .FIXUP D |
| 0A6A | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0A6B | d(40D8001C): ADD R0, SB, 1CH [data] |
| 0A6C | e .FIXUP P |
| 0A6C | e(F770A013): BL MOD7 [ORS] PROC10 |
| 0A6D | f(40E80040): ADD R0, SP, 40H |
| 0A6E | f .FIXUP D |
| 0A6E | f(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0A6F | f(41D80001): ADD R1, SB, VAR1 |
| 0A70 | g .FIXUP D |
| 0A70 | g(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0A71 | g(82D00034): LDR R2, SB, 34H [data] |
| 0A72 | g(D146235C): BLEQ MT [trap=5, pos=17955] |
| 0A73 | g(D7000002): BL R2 |
| 0A74 | h(80E00008): LDR R0, SP, 8H |
| 0A75 | h(40080001): ADD R0, R0, 1H |
| 0A76 | h(A0E00008): STR R0, SP, 8H |
| 0A77 | h(E7FFFFEE): B -18 [0A66H] |
| ELSE yi.type := ORB.noType |
| 0A78 | i(E7000003): B 3 [0A7CH] |
| ENDj ; |
| 0A79 | j .FIXUP D |
| 0A79 | j(8D800009): LDR SB, MT, MOD8 [ORB] |
| 0A7A | j(80D0000D): LDR R0, SB, VAR13 |
| 0A7B | j(A0E0002C): STR R0, SP, 2CH |
| Check(ORS.rparen,k "no )")l;m |
| 0A7C | k(4000002C): MOV R0, R0, 2CH |
| 0A7D | l .FIXUP D |
| 0A7D | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0A7E | l(41D8037C): ADD R1, SB, 37CH ["no )"] |
| 0A7F | l(42000005): MOV R2, R0, 5H |
| 0A80 | m(F7FFF57F): BL -2689 [0000H] |
| IF (npar = nap)n OR (opno IN {0, 1})p THENq |
| 0A81 | n(80E0000C): LDR R0, SP, CH |
| 0A82 | n(81E00008): LDR R1, SP, 8H |
| 0A83 | n(00090001): SUB R0, R0, R1 |
| 0A84 | o(E1000005): BEQ 5 [0A8AH] |
| 0A85 | p(40000003): MOV R0, R0, 3H |
| 0A86 | p(81E00004): LDR R1, SP, 4H |
| 0A87 | p(41180001): ADD R1, R1, 1H |
| 0A88 | p(00030001): ROR R0, R0, R1 |
| 0A89 | q(E80000FA): BPL 250 [0B84H] |
| IF pno IN {0, 1} THENr (*INC, DEC*) |
| 0A8A | r(40000003): MOV R0, R0, 3H |
| 0A8B | r(81E00004): LDR R1, SP, 4H |
| 0A8C | r(41180001): ADD R1, R1, 1H |
| 0A8D | r(00030001): ROR R0, R0, R1 |
| 0A8E | r(E800001A): BPL 26 [0AA9H] |
| CheckInt(x)s;t CheckReadOnly(x)u;v |
| 0A8F | s(40E80010): ADD R0, SP, 10H |
| 0A90 | s .FIXUP D |
| 0A90 | s(8D900013): LDR SB, MT, MOD9 [ORG] |
| 0A91 | s(41D80001): ADD R1, SB, VAR1 |
| 0A92 | t(F7FFF5DA): BL -2598 [006DH] |
| 0A93 | u(40E80010): ADD R0, SP, 10H |
| 0A94 | u .FIXUP D |
| 0A94 | u(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0A95 | u(41D80001): ADD R1, SB, VAR1 |
| 0A96 | v(F7FFF64D): BL -2483 [00E4H] |
| IF y.type # ORB.noType THENw CheckInt(y)x ENDy ; |
| 0A97 | w(80E0002C): LDR R0, SP, 2CH |
| 0A98 | w .FIXUP D |
| 0A98 | w(8D800004): LDR SB, MT, MOD8 [ORB] |
| 0A99 | w(81D0000D): LDR R1, SB, VAR13 |
| 0A9A | w(00090001): SUB R0, R0, R1 |
| 0A9B | w(E1000004): BEQ 4 [0AA0H] |
| 0A9C | x(40E80028): ADD R0, SP, 28H |
| 0A9D | x .FIXUP D |
| 0A9D | x(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0A9E | x(41D80001): ADD R1, SB, VAR1 |
| 0A9F | y(F7FFF5CD): BL -2611 [006DH] |
| ORG.Increment(pno,z x,a y)b |
| 0AA0 | z(80E00004): LDR R0, SP, 4H |
| 0AA1 | a(41E80010): ADD R1, SP, 10H |
| 0AA2 | a .FIXUP D |
| 0AA2 | a(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0AA3 | a(42D80001): ADD R2, SB, VAR1 |
| 0AA4 | b(43E80028): ADD R3, SP, 28H |
| 0AA5 | b .FIXUP D |
| 0AA5 | b(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0AA6 | b(44D80001): ADD R4, SB, VAR1 |
| ELSIFc pnod IN {2, 3} THENe (*INCL, EXCL*) |
| 0AA7 | c .FIXUP P |
| 0AA7 | c(F793403B): BL MOD9 [ORG] PROC52 |
| 0AA8 | d(E70000DA): B 218 [0B83H] |
| 0AA9 | e(4000000C): MOV R0, R0, CH |
| 0AAA | e(81E00004): LDR R1, SP, 4H |
| 0AAB | e(41180001): ADD R1, R1, 1H |
| 0AAC | e(00030001): ROR R0, R0, R1 |
| 0AAD | e(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 |
| 0AAE | f(40E80010): ADD R0, SP, 10H |
| 0AAF | f .FIXUP D |
| 0AAF | f(8D90000A): LDR SB, MT, MOD9 [ORG] |
| 0AB0 | f(41D80001): ADD R1, SB, VAR1 |
| 0AB1 | g(F7FFF5E5): BL -2587 [0097H] |
| 0AB2 | h(40E80010): ADD R0, SP, 10H |
| 0AB3 | h .FIXUP D |
| 0AB3 | h(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0AB4 | h(41D80001): ADD R1, SB, VAR1 |
| 0AB5 | i(F7FFF62E): BL -2514 [00E4H] |
| 0AB6 | j(40E80028): ADD R0, SP, 28H |
| 0AB7 | j .FIXUP D |
| 0AB7 | j(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0AB8 | j(41D80001): ADD R1, SB, VAR1 |
| 0AB9 | k(F7FFF5B3): BL -2637 [006DH] |
| 0ABA | l(80E00004): LDR R0, SP, 4H |
| 0ABB | l(40090002): SUB R0, R0, 2H |
| 0ABC | m(41E80010): ADD R1, SP, 10H |
| 0ABD | m .FIXUP D |
| 0ABD | m(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0ABE | m(42D80001): ADD R2, SB, VAR1 |
| 0ABF | n(43E80028): ADD R3, SP, 28H |
| 0AC0 | n .FIXUP D |
| 0AC0 | n(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0AC1 | n(44D80001): ADD R4, SB, VAR1 |
| ELSIFo pnop = 4 THENq CheckBool(x)r;s ORG.Assert(x)t |
| 0AC2 | o .FIXUP P |
| 0AC2 | o(F793501B): BL MOD9 [ORG] PROC53 |
| 0AC3 | p(E70000BF): B 191 [0B83H] |
| 0AC4 | q(80E00004): LDR R0, SP, 4H |
| 0AC5 | q(40090004): SUB R0, R0, 4H |
| 0AC6 | q(E9000009): BNE 9 [0AD0H] |
| 0AC7 | r(40E80010): ADD R0, SP, 10H |
| 0AC8 | r .FIXUP D |
| 0AC8 | r(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0AC9 | r(41D80001): ADD R1, SB, VAR1 |
| 0ACA | s(F7FFF58D): BL -2675 [0058H] |
| 0ACB | t(40E80010): ADD R0, SP, 10H |
| 0ACC | t .FIXUP D |
| 0ACC | t(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0ACD | t(41D80001): ADD R1, SB, VAR1 |
| ELSIFu pnov = 5 THENw(*NEW*) CheckReadOnly(x)x;y |
| 0ACE | u .FIXUP P |
| 0ACE | u(F793600C): BL MOD9 [ORG] PROC54 |
| 0ACF | v(E70000B3): B 179 [0B83H] |
| 0AD0 | w(80E00004): LDR R0, SP, 4H |
| 0AD1 | w(40090005): SUB R0, R0, 5H |
| 0AD2 | w(E900001A): BNE 26 [0AEDH] |
| 0AD3 | x(40E80010): ADD R0, SP, 10H |
| 0AD4 | x .FIXUP D |
| 0AD4 | x(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0AD5 | x(41D80001): ADD R1, SB, VAR1 |
| 0AD6 | y(F7FFF60D): BL -2547 [00E4H] |
| IF (x.type.formz = ORB.Pointer)a & (bx.type.basec.formd = ORB.Record)e THENf ORG.New(x)g |
| 0AD7 | z(80E00014): LDR R0, SP, 14H |
| 0AD8 | z(D148464C): BLEQ MT [trap=4, pos=18502] |
| 0AD9 | a(80000000): LDR R0, R0, 0H |
| 0ADA | a(40090007): SUB R0, R0, 7H |
| 0ADB | b(E900000C): BNE 12 [0AE8H] |
| 0ADC | c(80E00014): LDR R0, SP, 14H |
| 0ADD | c(D148644C): BLEQ MT [trap=4, pos=18532] |
| 0ADE | d(8000001C): LDR R0, R0, 1CH |
| 0ADF | d(D148694C): BLEQ MT [trap=4, pos=18537] |
| 0AE0 | e(80000000): LDR R0, R0, 0H |
| 0AE1 | e(4009000D): SUB R0, R0, DH |
| 0AE2 | f(E9000005): BNE 5 [0AE8H] |
| 0AE3 | g(40E80010): ADD R0, SP, 10H |
| 0AE4 | g .FIXUP D |
| 0AE4 | g(8D900010): LDR SB, MT, MOD9 [ORG] |
| 0AE5 | g(41D80001): ADD R1, SB, VAR1 |
| ELSEh ORSi.Mark("not a pointer to record")j |
| 0AE6 | h .FIXUP P |
| 0AE6 | h(F7937018): BL MOD9 [ORG] PROC55 |
| 0AE7 | i(E7000004): B 4 [0AECH] |
| 0AE8 | j .FIXUP D |
| 0AE8 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0AE9 | j(40D80384): ADD R0, SB, 384H ["not a pointer to record"] |
| 0AEA | j(41000018): MOV R1, R0, 18H |
| ENDk |
| 0AEB | k .FIXUP P |
| 0AEB | k(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 |
| 0AEC | l(E7000096): B 150 [0B83H] |
| 0AED | m(80E00004): LDR R0, SP, 4H |
| 0AEE | m(40090006): SUB R0, R0, 6H |
| 0AEF | m(E9000014): BNE 20 [0B04H] |
| 0AF0 | n(40E80010): ADD R0, SP, 10H |
| 0AF1 | n .FIXUP D |
| 0AF1 | n(8D900009): LDR SB, MT, MOD9 [ORG] |
| 0AF2 | n(41D80001): ADD R1, SB, VAR1 |
| 0AF3 | o(F7FFF58E): BL -2674 [0082H] |
| 0AF4 | p(40E80028): ADD R0, SP, 28H |
| 0AF5 | p .FIXUP D |
| 0AF5 | p(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0AF6 | p(41D80001): ADD R1, SB, VAR1 |
| 0AF7 | q(F7FFF575): BL -2699 [006DH] |
| 0AF8 | r(40E80010): ADD R0, SP, 10H |
| 0AF9 | r .FIXUP D |
| 0AF9 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0AFA | r(41D80001): ADD R1, SB, VAR1 |
| 0AFB | s(F7FFF5E8): BL -2584 [00E4H] |
| 0AFC | t(40E80010): ADD R0, SP, 10H |
| 0AFD | t .FIXUP D |
| 0AFD | t(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0AFE | t(41D80001): ADD R1, SB, VAR1 |
| 0AFF | u(42E80028): ADD R2, SP, 28H |
| 0B00 | u .FIXUP D |
| 0B00 | u(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B01 | u(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 |
| 0B02 | v .FIXUP P |
| 0B02 | v(F7938017): BL MOD9 [ORG] PROC56 |
| 0B03 | w(E700007F): B 127 [0B83H] |
| 0B04 | x(80E00004): LDR R0, SP, 4H |
| 0B05 | x(40090007): SUB R0, R0, 7H |
| 0B06 | x(E9000014): BNE 20 [0B1BH] |
| 0B07 | y(40E80010): ADD R0, SP, 10H |
| 0B08 | y .FIXUP D |
| 0B08 | y(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0B09 | y(41D80001): ADD R1, SB, VAR1 |
| 0B0A | z(F7FFF577): BL -2697 [0082H] |
| 0B0B | a(40E80028): ADD R0, SP, 28H |
| 0B0C | a .FIXUP D |
| 0B0C | a(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B0D | a(41D80001): ADD R1, SB, VAR1 |
| 0B0E | b(F7FFF55E): BL -2722 [006DH] |
| 0B0F | c(40E80010): ADD R0, SP, 10H |
| 0B10 | c .FIXUP D |
| 0B10 | c(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B11 | c(41D80001): ADD R1, SB, VAR1 |
| 0B12 | d(F7FFF5D1): BL -2607 [00E4H] |
| 0B13 | e(40E80010): ADD R0, SP, 10H |
| 0B14 | e .FIXUP D |
| 0B14 | e(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B15 | e(41D80001): ADD R1, SB, VAR1 |
| 0B16 | f(42E80028): ADD R2, SP, 28H |
| 0B17 | f .FIXUP D |
| 0B17 | f(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B18 | f(43D80001): ADD R3, SB, VAR1 |
| ELSIFg pnoh = 8 THENi |
| 0B19 | g .FIXUP P |
| 0B19 | g(F7939017): BL MOD9 [ORG] PROC57 |
| 0B1A | h(E7000068): B 104 [0B83H] |
| 0B1B | i(80E00004): LDR R0, SP, 4H |
| 0B1C | i(40090008): SUB R0, R0, 8H |
| 0B1D | i(E900000F): BNE 15 [0B2DH] |
| IF x.type.formj <= ORB.Set THENk ORG.Led(x)l ELSEm ORSn.Mark("bad type")o ENDp |
| 0B1E | j(80E00014): LDR R0, SP, 14H |
| 0B1F | j(D149A04C): BLEQ MT [trap=4, pos=18848] |
| 0B20 | k(80000000): LDR R0, R0, 0H |
| 0B21 | k(40090006): SUB R0, R0, 6H |
| 0B22 | k(EE000005): BGT 5 [0B28H] |
| 0B23 | l(40E80010): ADD R0, SP, 10H |
| 0B24 | l .FIXUP D |
| 0B24 | l(8D90000D): LDR SB, MT, MOD9 [ORG] |
| 0B25 | l(41D80001): ADD R1, SB, VAR1 |
| 0B26 | m .FIXUP P |
| 0B26 | m(F793A00D): BL MOD9 [ORG] PROC58 |
| 0B27 | n(E7000004): B 4 [0B2CH] |
| 0B28 | o .FIXUP D |
| 0B28 | o(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0B29 | o(40D8039C): ADD R0, SB, 39CH ["bad type"] |
| 0B2A | o(41000009): MOV R1, R0, 9H |
| 0B2B | p .FIXUP P |
| 0B2B | p(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF pnoq = 10 THENr CheckInt(x)s;t ORG.Get(x,u y)v |
| 0B2C | q(E7000056): B 86 [0B83H] |
| 0B2D | r(80E00004): LDR R0, SP, 4H |
| 0B2E | r(4009000A): SUB R0, R0, AH |
| 0B2F | r(E900000C): BNE 12 [0B3CH] |
| 0B30 | s(40E80010): ADD R0, SP, 10H |
| 0B31 | s .FIXUP D |
| 0B31 | s(8D900009): LDR SB, MT, MOD9 [ORG] |
| 0B32 | s(41D80001): ADD R1, SB, VAR1 |
| 0B33 | t(F7FFF539): BL -2759 [006DH] |
| 0B34 | u(40E80010): ADD R0, SP, 10H |
| 0B35 | u .FIXUP D |
| 0B35 | u(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B36 | u(41D80001): ADD R1, SB, VAR1 |
| 0B37 | v(42E80028): ADD R2, SP, 28H |
| 0B38 | v .FIXUP D |
| 0B38 | v(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B39 | v(43D80001): ADD R3, SB, VAR1 |
| ELSIFw pnox = 11 THENy CheckInt(x)z;a ORG.Put(x,b y)c |
| 0B3A | w .FIXUP P |
| 0B3A | w(F793B00F): BL MOD9 [ORG] PROC59 |
| 0B3B | x(E7000047): B 71 [0B83H] |
| 0B3C | y(80E00004): LDR R0, SP, 4H |
| 0B3D | y(4009000B): SUB R0, R0, BH |
| 0B3E | y(E900000C): BNE 12 [0B4BH] |
| 0B3F | z(40E80010): ADD R0, SP, 10H |
| 0B40 | z .FIXUP D |
| 0B40 | z(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0B41 | z(41D80001): ADD R1, SB, VAR1 |
| 0B42 | a(F7FFF52A): BL -2774 [006DH] |
| 0B43 | b(40E80010): ADD R0, SP, 10H |
| 0B44 | b .FIXUP D |
| 0B44 | b(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B45 | b(41D80001): ADD R1, SB, VAR1 |
| 0B46 | c(42E80028): ADD R2, SP, 28H |
| 0B47 | c .FIXUP D |
| 0B47 | c(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B48 | c(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 |
| 0B49 | d .FIXUP P |
| 0B49 | d(F793C00F): BL MOD9 [ORG] PROC60 |
| 0B4A | e(E7000038): B 56 [0B83H] |
| 0B4B | f(80E00004): LDR R0, SP, 4H |
| 0B4C | f(4009000C): SUB R0, R0, CH |
| 0B4D | f(E9000017): BNE 23 [0B65H] |
| 0B4E | g(40E80010): ADD R0, SP, 10H |
| 0B4F | g .FIXUP D |
| 0B4F | g(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0B50 | g(41D80001): ADD R1, SB, VAR1 |
| 0B51 | h(F7FFF51B): BL -2789 [006DH] |
| 0B52 | i(40E80028): ADD R0, SP, 28H |
| 0B53 | i .FIXUP D |
| 0B53 | i(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B54 | i(41D80001): ADD R1, SB, VAR1 |
| 0B55 | j(F7FFF517): BL -2793 [006DH] |
| 0B56 | k(40E80040): ADD R0, SP, 40H |
| 0B57 | k .FIXUP D |
| 0B57 | k(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B58 | k(41D80001): ADD R1, SB, VAR1 |
| 0B59 | l(F7FFF513): BL -2797 [006DH] |
| 0B5A | m(40E80010): ADD R0, SP, 10H |
| 0B5B | m .FIXUP D |
| 0B5B | m(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B5C | m(41D80001): ADD R1, SB, VAR1 |
| 0B5D | n(42E80028): ADD R2, SP, 28H |
| 0B5E | n .FIXUP D |
| 0B5E | n(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B5F | n(43D80001): ADD R3, SB, VAR1 |
| 0B60 | o(44E80040): ADD R4, SP, 40H |
| 0B61 | o .FIXUP D |
| 0B61 | o(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B62 | o(45D80001): ADD R5, SB, VAR1 |
| ELSIFp pnoq = 13 THENr CheckConst(x)s;t CheckInt(x)u;v ORG.LDPSR(x)w |
| 0B63 | p .FIXUP P |
| 0B63 | p(F793D01A): BL MOD9 [ORG] PROC61 |
| 0B64 | q(E700001E): B 30 [0B83H] |
| 0B65 | r(80E00004): LDR R0, SP, 4H |
| 0B66 | r(4009000D): SUB R0, R0, DH |
| 0B67 | r(E900000D): BNE 13 [0B75H] |
| 0B68 | s(40E80010): ADD R0, SP, 10H |
| 0B69 | s .FIXUP D |
| 0B69 | s(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0B6A | s(41D80001): ADD R1, SB, VAR1 |
| 0B6B | t(F7FFF566): BL -2714 [00D2H] |
| 0B6C | u(40E80010): ADD R0, SP, 10H |
| 0B6D | u .FIXUP D |
| 0B6D | u(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B6E | u(41D80001): ADD R1, SB, VAR1 |
| 0B6F | v(F7FFF4FD): BL -2819 [006DH] |
| 0B70 | w(40E80010): ADD R0, SP, 10H |
| 0B71 | w .FIXUP D |
| 0B71 | w(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B72 | w(41D80001): ADD R1, SB, VAR1 |
| ELSIFx pnoy = 14 THENz CheckInt(x)a;b ORG.LDREG(x,c y)d |
| 0B73 | x .FIXUP P |
| 0B73 | x(F793E010): BL MOD9 [ORG] PROC62 |
| 0B74 | y(E700000E): B 14 [0B83H] |
| 0B75 | z(80E00004): LDR R0, SP, 4H |
| 0B76 | z(4009000E): SUB R0, R0, EH |
| 0B77 | z(E900000B): BNE 11 [0B83H] |
| 0B78 | a(40E80010): ADD R0, SP, 10H |
| 0B79 | a .FIXUP D |
| 0B79 | a(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0B7A | a(41D80001): ADD R1, SB, VAR1 |
| 0B7B | b(F7FFF4F1): BL -2831 [006DH] |
| 0B7C | c(40E80010): ADD R0, SP, 10H |
| 0B7D | c .FIXUP D |
| 0B7D | c(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0B7E | c(41D80001): ADD R1, SB, VAR1 |
| 0B7F | d(42E80028): ADD R2, SP, 28H |
| 0B80 | d .FIXUP D |
| 0B80 | d(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0B81 | d(43D80001): ADD R3, SB, VAR1 |
| ENDe |
| 0B82 | e .FIXUP P |
| 0B82 | e(F793F00F): BL MOD9 [ORG] PROC63 |
| ELSE ORSf.Mark("wrong nof parameters")g |
| 0B83 | f(E7000004): B 4 [0B88H] |
| 0B84 | g .FIXUP D |
| 0B84 | g(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0B85 | g(40D803A8): ADD R0, SB, 3A8H ["wrong nof parameters"] |
| 0B86 | g(41000015): MOV R1, R0, 15H |
| ENDh |
| 0B87 | h .FIXUP P |
| 0B87 | h(F7709005): BL MOD7 [ORS] PROC9 |
| ENDi StandProc; |
| 0B88 | i(8FE00000): LDR LNK, SP, 0H |
| 0B89 | i(4EE80058): ADD SP, SP, 58H |
| 0B8A | i(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); |
| 0B8B | j(E700004C): B 76 [0BD8H] |
| VAR typobj: ORB.Object; |
| BEGINk |
| 0B8C | k(4EE90014): SUB SP, SP, 14H |
| 0B8D | k(AFE00000): STR LNK, SP, 0H |
| 0B8E | k(A0E00004): STR R0, SP, 4H |
| 0B8F | k(A1E00008): STR R1, SP, 8H |
| 0B90 | k(A2E0000C): STR R2, SP, CH |
| IF sym = ORS.ident THENl |
| 0B91 | l .FIXUP D |
| 0B91 | l(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 0B92 | l(80D0001C): LDR R0, SB, 1CH [data] |
| 0B93 | l(4009001F): SUB R0, R0, 1FH |
| 0B94 | l(E9000028): BNE 40 [0BBDH] |
| qualident(typobj)m;n ORG.MakeItem(x,o obj,p level)q;r |
| 0B95 | m(40E80010): ADD R0, SP, 10H |
| 0B96 | n(F7FFF47D): BL -2947 [0014H] |
| 0B97 | o(80E00008): LDR R0, SP, 8H |
| 0B98 | o(81E0000C): LDR R1, SP, CH |
| 0B99 | p(82E00004): LDR R2, SP, 4H |
| 0B9A | q .FIXUP D |
| 0B9A | q(8D000009): LDR SB, MT, MOD0 [ORP] |
| 0B9B | q(83D00024): LDR R3, SB, 24H [data] |
| 0B9C | r .FIXUP P |
| 0B9C | r(F7908015): BL MOD9 [ORG] PROC8 |
| IF typobj.classs # ORB.Typ THENt ORS.Mark("not a type")u ENDv ; |
| 0B9D | s(80E00010): LDR R0, SP, 10H |
| 0B9E | s(D14CD04C): BLEQ MT [trap=4, pos=19664] |
| 0B9F | t(90000000): LDR R0, R0, 0H |
| 0BA0 | t(40090005): SUB R0, R0, 5H |
| 0BA1 | t(E1000004): BEQ 4 [0BA6H] |
| 0BA2 | u .FIXUP D |
| 0BA2 | u(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0BA3 | u(40D803C0): ADD R0, SB, 3C0H ["not a type"] |
| 0BA4 | u(4100000B): MOV R1, R0, BH |
| 0BA5 | v .FIXUP P |
| 0BA5 | v(F7709009): BL MOD7 [ORS] PROC9 |
| TypeTest(x,w typobj.typex,y FALSE)z;a obj.typeb := typobj.typec;d |
| 0BA6 | w(80E00008): LDR R0, SP, 8H |
| 0BA7 | w(81E0000C): LDR R1, SP, CH |
| 0BA8 | x(82E00010): LDR R2, SP, 10H |
| 0BA9 | x(D14D1C4C): BLEQ MT [trap=4, pos=19740] |
| 0BAA | y(82200010): LDR R2, R2, 10H |
| 0BAB | z(43000000): MOV R3, R0, 0H |
| 0BAC | a(F7FFF577): BL -2697 [0124H] |
| 0BAD | b(80E00004): LDR R0, SP, 4H |
| 0BAE | b(D14D2E4C): BLEQ MT [trap=4, pos=19758] |
| 0BAF | c(81E00010): LDR R1, SP, 10H |
| 0BB0 | c(D14D3D4C): BLEQ MT [trap=4, pos=19773] |
| 0BB1 | d(81100010): LDR R1, R1, 10H |
| 0BB2 | d(A1000010): STR R1, R0, 10H |
| ORG.CFJump(x)e;f Check(ORS.colon,g ": expected")h;i StatSequence |
| 0BB3 | e(80E00008): LDR R0, SP, 8H |
| 0BB4 | e(81E0000C): LDR R1, SP, CH |
| 0BB5 | f .FIXUP P |
| 0BB5 | f(F792C010): BL MOD9 [ORG] PROC44 |
| 0BB6 | g(40000029): MOV R0, R0, 29H |
| 0BB7 | h .FIXUP D |
| 0BB7 | h(8D000015): LDR SB, MT, MOD0 [ORP] |
| 0BB8 | h(41D803CC): ADD R1, SB, 3CCH [": expected"] |
| 0BB9 | h(4200000B): MOV R2, R0, BH |
| 0BBA | i(F7FFF445): BL -3003 [0000H] |
| ELSEj ORGk.CFJump(x)l;m ORS.Mark("type id expected")n |
| 0BBB | j(F7FFFFCF): BL -49 [0B8BH] |
| 0BBC | k(E7000007): B 7 [0BC4H] |
| 0BBD | l(80E00008): LDR R0, SP, 8H |
| 0BBE | l(81E0000C): LDR R1, SP, CH |
| 0BBF | m .FIXUP P |
| 0BBF | m(F792C00A): BL MOD9 [ORG] PROC44 |
| 0BC0 | n .FIXUP D |
| 0BC0 | n(8D000009): LDR SB, MT, MOD0 [ORP] |
| 0BC1 | n(40D803D8): ADD R0, SB, 3D8H ["type id expected"] |
| 0BC2 | n(41000011): MOV R1, R0, 11H |
| ENDo |
| 0BC3 | o .FIXUP P |
| 0BC3 | o(F7709004): BL MOD7 [ORS] PROC9 |
| ENDp TypeCase; |
| 0BC4 | p(8FE00000): LDR LNK, SP, 0H |
| 0BC5 | p(4EE80014): ADD SP, SP, 14H |
| 0BC6 | p(C700000F): B LNK |
| |
| PROCEDURE SkipCase; |
| BEGINq |
| 0BC7 | q(4EE90004): SUB SP, SP, 4H |
| 0BC8 | q(AFE00000): STR LNK, SP, 0H |
| WHILE sym # ORS.colon DOr ORS.Get(sym)s ENDt ; |
| 0BC9 | r .FIXUP D |
| 0BC9 | r(8D000009): LDR SB, MT, MOD0 [ORP] |
| 0BCA | r(80D0001C): LDR R0, SB, 1CH [data] |
| 0BCB | r(40090029): SUB R0, R0, 29H |
| 0BCC | r(E1000004): BEQ 4 [0BD1H] |
| 0BCD | s .FIXUP D |
| 0BCD | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BCE | s(40D8001C): ADD R0, SB, 1CH [data] |
| 0BCF | t .FIXUP P |
| 0BCF | t(F770A00C): BL MOD7 [ORS] PROC10 |
| 0BD0 | t(E7FFFFF8): B -8 [0BC9H] |
| ORS.Get(sym)u;v StatSequence |
| 0BD1 | u .FIXUP D |
| 0BD1 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BD2 | u(40D8001C): ADD R0, SB, 1CH [data] |
| 0BD3 | v .FIXUP P |
| 0BD3 | v(F770A004): BL MOD7 [ORS] PROC10 |
| ENDw SkipCase; |
| 0BD4 | w(F7FFFFB6): BL -74 [0B8BH] |
| 0BD5 | w(8FE00000): LDR LNK, SP, 0H |
| 0BD6 | w(4EE80004): ADD SP, SP, 4H |
| 0BD7 | w(C700000F): B LNK |
| |
| BEGINx (* StatSequence *) |
| 0BD8 | x(4EE90078): SUB SP, SP, 78H |
| 0BD9 | x(AFE00000): STR LNK, SP, 0H |
| REPEAT (*sync*) obj := NIL;y |
| 0BDA | y(40000000): MOV R0, R0, 0H |
| 0BDB | y(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 |
| 0BDC | z .FIXUP D |
| 0BDC | z(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 0BDD | z(80D0001C): LDR R0, SB, 1CH [data] |
| 0BDE | z(4009001F): SUB R0, R0, 1FH |
| 0BDF | a(E100001B): BEQ 27 [0BFBH] |
| 0BE0 | b .FIXUP D |
| 0BE0 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BE1 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 0BE2 | b(40090020): SUB R0, R0, 20H |
| 0BE3 | c(E5000004): BLT 4 [0BE8H] |
| 0BE4 | d .FIXUP D |
| 0BE4 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BE5 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 0BE6 | d(40090025): SUB R0, R0, 25H |
| 0BE7 | e(E6000013): BLE 19 [0BFBH] |
| 0BE8 | f .FIXUP D |
| 0BE8 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BE9 | f(80D0001C): LDR R0, SB, 1CH [data] |
| 0BEA | f(40090034): SUB R0, R0, 34H |
| 0BEB | g(ED00000F): BGE 15 [0BFBH] |
| ORS.Mark("statement expected")h;i |
| 0BEC | h .FIXUP D |
| 0BEC | h(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BED | h(40D803EC): ADD R0, SB, 3ECH ["statement expected"] |
| 0BEE | h(41000013): MOV R1, R0, 13H |
| 0BEF | i .FIXUP P |
| 0BEF | i(F770901C): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)j UNTILk (sym = ORS.ident)l OR (msym >= ORS.if)n |
| 0BF0 | j .FIXUP D |
| 0BF0 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BF1 | j(40D8001C): ADD R0, SB, 1CH [data] |
| 0BF2 | k .FIXUP P |
| 0BF2 | k(F770A003): BL MOD7 [ORS] PROC10 |
| 0BF3 | l .FIXUP D |
| 0BF3 | l(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0BF4 | l(80D0001C): LDR R0, SB, 1CH [data] |
| 0BF5 | l(4009001F): SUB R0, R0, 1FH |
| 0BF6 | m(E1000004): BEQ 4 [0BFBH] |
| 0BF7 | n .FIXUP D |
| 0BF7 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BF8 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 0BF9 | n(40090020): SUB R0, R0, 20H |
| ENDo ; |
| 0BFA | o(E5FFFFF5): BLT -11 [0BF0H] |
| IF sym = ORS.ident THENp |
| 0BFB | p .FIXUP D |
| 0BFB | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0BFC | p(80D0001C): LDR R0, SB, 1CH [data] |
| 0BFD | p(4009001F): SUB R0, R0, 1FH |
| 0BFE | p(E900011F): BNE 287 [0D1EH] |
| qualident(obj)q;r ORG.MakeItem(x,s obj,t level)u;v |
| 0BFF | q(40E80004): ADD R0, SP, 4H |
| 0C00 | r(F7FFF413): BL -3053 [0014H] |
| 0C01 | s(40E8000C): ADD R0, SP, CH |
| 0C02 | s .FIXUP D |
| 0C02 | s(8D900007): LDR SB, MT, MOD9 [ORG] |
| 0C03 | s(41D80001): ADD R1, SB, VAR1 |
| 0C04 | t(82E00004): LDR R2, SP, 4H |
| 0C05 | u .FIXUP D |
| 0C05 | u(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0C06 | u(83D00024): LDR R3, SB, 24H [data] |
| 0C07 | v .FIXUP P |
| 0C07 | v(F7908015): BL MOD9 [ORG] PROC8 |
| IF x.mode = ORB.SProc THENw StandProc(obj.valx)y |
| 0C08 | w(80E0000C): LDR R0, SP, CH |
| 0C09 | w(40090006): SUB R0, R0, 6H |
| 0C0A | w(E9000005): BNE 5 [0C10H] |
| 0C0B | x(80E00004): LDR R0, SP, 4H |
| 0C0C | x(D150014C): BLEQ MT [trap=4, pos=20481] |
| 0C0D | y(80000034): LDR R0, R0, 34H |
| ELSEz selectora(x)b;c |
| 0C0E | z(F7FFFE2C): BL -468 [0A3BH] |
| 0C0F | a(E700010D): B 269 [0D1DH] |
| 0C10 | b(40E8000C): ADD R0, SP, CH |
| 0C11 | b .FIXUP D |
| 0C11 | b(8D90000C): LDR SB, MT, MOD9 [ORG] |
| 0C12 | b(41D80001): ADD R1, SB, VAR1 |
| 0C13 | c(F7FFF591): BL -2671 [01A5H] |
| IF sym = ORS.becomes THENd (*assignment*) |
| 0C14 | d .FIXUP D |
| 0C14 | d(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0C15 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 0C16 | d(4009002A): SUB R0, R0, 2AH |
| 0C17 | d(E9000096): BNE 150 [0CAEH] |
| ORS.Get(sym)e;f CheckReadOnly(x)g;h expression(y)i;j |
| 0C18 | e .FIXUP D |
| 0C18 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0C19 | e(40D8001C): ADD R0, SB, 1CH [data] |
| 0C1A | f .FIXUP P |
| 0C1A | f(F770A013): BL MOD7 [ORS] PROC10 |
| 0C1B | g(40E8000C): ADD R0, SP, CH |
| 0C1C | g .FIXUP D |
| 0C1C | g(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0C1D | g(41D80001): ADD R1, SB, VAR1 |
| 0C1E | h(F7FFF4C5): BL -2875 [00E4H] |
| 0C1F | i(40E80024): ADD R0, SP, 24H |
| 0C20 | i .FIXUP D |
| 0C20 | i(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0C21 | i(41D80001): ADD R1, SB, VAR1 |
| 0C22 | j .FIXUP D |
| 0C22 | j(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0C23 | j(82D00034): LDR R2, SB, 34H [data] |
| 0C24 | j(D1508A5C): BLEQ MT [trap=5, pos=20618] |
| 0C25 | j(D7000002): BL R2 |
| IF CompTypes(x.type,k y.type,l FALSE)m THENn |
| 0C26 | k(80E00010): LDR R0, SP, 10H |
| 0C27 | l(81E00028): LDR R1, SP, 28H |
| 0C28 | m(42000000): MOV R2, R0, 0H |
| 0C29 | n(F7FFF6E6): BL -2330 [0310H] |
| 0C2A | n(40090000): SUB R0, R0, 0H |
| 0C2B | n(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 |
| 0C2C | o(80E00010): LDR R0, SP, 10H |
| 0C2D | o(D150DD4C): BLEQ MT [trap=4, pos=20701] |
| 0C2E | p(80000000): LDR R0, R0, 0H |
| 0C2F | p(40090007): SUB R0, R0, 7H |
| 0C30 | q(E6000005): BLE 5 [0C36H] |
| 0C31 | r(80E00010): LDR R0, SP, 10H |
| 0C32 | r(D150FD4C): BLEQ MT [trap=4, pos=20733] |
| 0C33 | s(80000000): LDR R0, R0, 0H |
| 0C34 | s(4009000A): SUB R0, R0, AH |
| 0C35 | t(E9000008): BNE 8 [0C3EH] |
| 0C36 | u(40E8000C): ADD R0, SP, CH |
| 0C37 | u .FIXUP D |
| 0C37 | u(8D900015): LDR SB, MT, MOD9 [ORG] |
| 0C38 | u(41D80001): ADD R1, SB, VAR1 |
| 0C39 | v(42E80024): ADD R2, SP, 24H |
| 0C3A | v .FIXUP D |
| 0C3A | v(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0C3B | v(43D80001): ADD R3, SB, VAR1 |
| ELSEw ORGx.StoreStruct(x,y y)z |
| 0C3C | w .FIXUP P |
| 0C3C | w(F7920022): BL MOD9 [ORG] PROC32 |
| 0C3D | x(E7000007): B 7 [0C45H] |
| 0C3E | y(40E8000C): ADD R0, SP, CH |
| 0C3F | y .FIXUP D |
| 0C3F | y(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0C40 | y(41D80001): ADD R1, SB, VAR1 |
| 0C41 | z(42E80024): ADD R2, SP, 24H |
| 0C42 | z .FIXUP D |
| 0C42 | z(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0C43 | z(43D80001): ADD R3, SB, VAR1 |
| ENDa |
| 0C44 | a .FIXUP P |
| 0C44 | a(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 |
| 0C45 | b(E7000067): B 103 [0CADH] |
| 0C46 | c(80E00010): LDR R0, SP, 10H |
| 0C47 | c(D151784C): BLEQ MT [trap=4, pos=20856] |
| 0C48 | d(80000000): LDR R0, R0, 0H |
| 0C49 | d(4009000C): SUB R0, R0, CH |
| 0C4A | e(E900001A): BNE 26 [0C65H] |
| 0C4B | f(80E00028): LDR R0, SP, 28H |
| 0C4C | f(D151944C): BLEQ MT [trap=4, pos=20884] |
| 0C4D | g(80000000): LDR R0, R0, 0H |
| 0C4E | g(4009000C): SUB R0, R0, CH |
| 0C4F | h(E9000015): BNE 21 [0C65H] |
| 0C50 | i(80E00010): LDR R0, SP, 10H |
| 0C51 | i(D151B04C): BLEQ MT [trap=4, pos=20912] |
| 0C52 | j(81E00028): LDR R1, SP, 28H |
| 0C53 | j(D151BE4C): BLEQ MT [trap=4, pos=20926] |
| 0C54 | k(8000001C): LDR R0, R0, 1CH |
| 0C55 | k(8110001C): LDR R1, R1, 1CH |
| 0C56 | k(00090001): SUB R0, R0, R1 |
| 0C57 | l(E900000D): BNE 13 [0C65H] |
| 0C58 | m(80E00028): LDR R0, SP, 28H |
| 0C59 | m(D151CD4C): BLEQ MT [trap=4, pos=20941] |
| 0C5A | n(80000010): LDR R0, R0, 10H |
| 0C5B | n(40090000): SUB R0, R0, 0H |
| 0C5C | o(ED000008): BGE 8 [0C65H] |
| ORG.StoreStruct(x,p y)q |
| 0C5D | p(40E8000C): ADD R0, SP, CH |
| 0C5E | p .FIXUP D |
| 0C5E | p(8D90001C): LDR SB, MT, MOD9 [ORG] |
| 0C5F | p(41D80001): ADD R1, SB, VAR1 |
| 0C60 | q(42E80024): ADD R2, SP, 24H |
| 0C61 | q .FIXUP D |
| 0C61 | q(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0C62 | q(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 |
| 0C63 | r .FIXUP P |
| 0C63 | r(F792101F): BL MOD9 [ORG] PROC33 |
| 0C64 | s(E7000048): B 72 [0CADH] |
| 0C65 | t(80E00010): LDR R0, SP, 10H |
| 0C66 | t(D1521A4C): BLEQ MT [trap=4, pos=21018] |
| 0C67 | u(80000000): LDR R0, R0, 0H |
| 0C68 | u(4009000C): SUB R0, R0, CH |
| 0C69 | v(E9000014): BNE 20 [0C7EH] |
| 0C6A | w(80E00010): LDR R0, SP, 10H |
| 0C6B | w(D152364C): BLEQ MT [trap=4, pos=21046] |
| 0C6C | x(8000001C): LDR R0, R0, 1CH |
| 0C6D | x(D1523B4C): BLEQ MT [trap=4, pos=21051] |
| 0C6E | y(80000000): LDR R0, R0, 0H |
| 0C6F | y(40090003): SUB R0, R0, 3H |
| 0C70 | z(E900000D): BNE 13 [0C7EH] |
| 0C71 | a(80E00028): LDR R0, SP, 28H |
| 0C72 | a(D152564C): BLEQ MT [trap=4, pos=21078] |
| 0C73 | b(80000000): LDR R0, R0, 0H |
| 0C74 | b(4009000B): SUB R0, R0, BH |
| 0C75 | c(E9000008): BNE 8 [0C7EH] |
| ORG.CopyString(x,d y)e |
| 0C76 | d(40E8000C): ADD R0, SP, CH |
| 0C77 | d .FIXUP D |
| 0C77 | d(8D900016): LDR SB, MT, MOD9 [ORG] |
| 0C78 | d(41D80001): ADD R1, SB, VAR1 |
| 0C79 | e(42E80024): ADD R2, SP, 24H |
| 0C7A | e .FIXUP D |
| 0C7A | e(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0C7B | e(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*) |
| 0C7C | f .FIXUP P |
| 0C7C | f(F7922019): BL MOD9 [ORG] PROC34 |
| 0C7D | g(E700002F): B 47 [0CADH] |
| 0C7E | h(80E00010): LDR R0, SP, 10H |
| 0C7F | h(D152AB4C): BLEQ MT [trap=4, pos=21163] |
| 0C80 | i(80000000): LDR R0, R0, 0H |
| 0C81 | i(40090004): SUB R0, R0, 4H |
| 0C82 | j(E900000D): BNE 13 [0C90H] |
| 0C83 | k(80E00028): LDR R0, SP, 28H |
| 0C84 | k(D152C54C): BLEQ MT [trap=4, pos=21189] |
| 0C85 | l(80000000): LDR R0, R0, 0H |
| 0C86 | l(40090004): SUB R0, R0, 4H |
| 0C87 | m(E9000008): BNE 8 [0C90H] |
| 0C88 | n(40E8000C): ADD R0, SP, CH |
| 0C89 | n .FIXUP D |
| 0C89 | n(8D90000F): LDR SB, MT, MOD9 [ORG] |
| 0C8A | n(41D80001): ADD R1, SB, VAR1 |
| 0C8B | o(42E80024): ADD R2, SP, 24H |
| 0C8C | o .FIXUP D |
| 0C8C | o(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0C8D | o(43D80001): ADD R3, SB, VAR1 |
| ELSIFp (qx.type.formr = ORB.Char)s & (ty.type.formu = ORB.String)v & (wy.b = 2)x THENy |
| 0C8E | p .FIXUP P |
| 0C8E | p(F7920012): BL MOD9 [ORG] PROC32 |
| 0C8F | q(E700001D): B 29 [0CADH] |
| 0C90 | r(80E00010): LDR R0, SP, 10H |
| 0C91 | r(D1530E4C): BLEQ MT [trap=4, pos=21262] |
| 0C92 | s(80000000): LDR R0, R0, 0H |
| 0C93 | s(40090003): SUB R0, R0, 3H |
| 0C94 | t(E9000014): BNE 20 [0CA9H] |
| 0C95 | u(80E00028): LDR R0, SP, 28H |
| 0C96 | u(D153294C): BLEQ MT [trap=4, pos=21289] |
| 0C97 | v(80000000): LDR R0, R0, 0H |
| 0C98 | v(4009000B): SUB R0, R0, BH |
| 0C99 | w(E900000F): BNE 15 [0CA9H] |
| 0C9A | x(80E00030): LDR R0, SP, 30H |
| 0C9B | x(40090002): SUB R0, R0, 2H |
| 0C9C | y(E900000C): BNE 12 [0CA9H] |
| ORG.StrToChar(y)z;a ORG.Store(x,b y)c |
| 0C9D | z(40E80024): ADD R0, SP, 24H |
| 0C9E | z .FIXUP D |
| 0C9E | z(8D900012): LDR SB, MT, MOD9 [ORG] |
| 0C9F | z(41D80001): ADD R1, SB, VAR1 |
| 0CA0 | a .FIXUP P |
| 0CA0 | a(F791F012): BL MOD9 [ORG] PROC31 |
| 0CA1 | b(40E8000C): ADD R0, SP, CH |
| 0CA2 | b .FIXUP D |
| 0CA2 | b(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0CA3 | b(41D80001): ADD R1, SB, VAR1 |
| 0CA4 | c(42E80024): ADD R2, SP, 24H |
| 0CA5 | c .FIXUP D |
| 0CA5 | c(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0CA6 | c(43D80001): ADD R3, SB, VAR1 |
| ELSEd ORSe.Mark("illegal assignment")f |
| 0CA7 | d .FIXUP P |
| 0CA7 | d(F7920007): BL MOD9 [ORG] PROC32 |
| 0CA8 | e(E7000004): B 4 [0CADH] |
| 0CA9 | f .FIXUP D |
| 0CA9 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0CAA | f(40D80400): ADD R0, SB, 400H ["illegal assignment"] |
| 0CAB | f(41000013): MOV R1, R0, 13H |
| ENDg |
| 0CAC | g .FIXUP P |
| 0CAC | g(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symh = ORS.eql THENi ORS.Mark("should be :=")j;k ORS.Get(sym)l;m expression(y)n |
| 0CAD | h(E700006F): B 111 [0D1DH] |
| 0CAE | i .FIXUP D |
| 0CAE | i(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0CAF | i(80D0001C): LDR R0, SB, 1CH [data] |
| 0CB0 | i(40090009): SUB R0, R0, 9H |
| 0CB1 | i(E900000F): BNE 15 [0CC1H] |
| 0CB2 | j .FIXUP D |
| 0CB2 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0CB3 | j(40D80414): ADD R0, SB, 414H ["should be :="] |
| 0CB4 | j(4100000D): MOV R1, R0, DH |
| 0CB5 | k .FIXUP P |
| 0CB5 | k(F7709009): BL MOD7 [ORS] PROC9 |
| 0CB6 | l .FIXUP D |
| 0CB6 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0CB7 | l(40D8001C): ADD R0, SB, 1CH [data] |
| 0CB8 | m .FIXUP P |
| 0CB8 | m(F770A003): BL MOD7 [ORS] PROC10 |
| 0CB9 | n(40E80024): ADD R0, SP, 24H |
| 0CBA | n .FIXUP D |
| 0CBA | n(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0CBB | n(41D80001): ADD R1, SB, VAR1 |
| ELSIFo symp = ORS.lparen THENq (*procedure call*) |
| 0CBC | o .FIXUP D |
| 0CBC | o(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0CBD | o(82D00034): LDR R2, SB, 34H [data] |
| 0CBE | o(D154215C): BLEQ MT [trap=5, pos=21537] |
| 0CBF | o(D7000002): BL R2 |
| 0CC0 | p(E700005C): B 92 [0D1DH] |
| 0CC1 | q .FIXUP D |
| 0CC1 | q(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0CC2 | q(80D0001C): LDR R0, SB, 1CH [data] |
| 0CC3 | q(4009001C): SUB R0, R0, 1CH |
| 0CC4 | q(E9000027): BNE 39 [0CECH] |
| ORS.Get(sym)r;s |
| 0CC5 | r .FIXUP D |
| 0CC5 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0CC6 | r(40D8001C): ADD R0, SB, 1CH [data] |
| 0CC7 | s .FIXUP P |
| 0CC7 | s(F770A00F): BL MOD7 [ORS] PROC10 |
| IF (x.type.formt = ORB.Proc)u & (vx.type.basew.formx = ORB.NoTyp)y THENz |
| 0CC8 | t(80E00010): LDR R0, SP, 10H |
| 0CC9 | t(D154804C): BLEQ MT [trap=4, pos=21632] |
| 0CCA | u(80000000): LDR R0, R0, 0H |
| 0CCB | u(4009000A): SUB R0, R0, AH |
| 0CCC | v(E9000016): BNE 22 [0CE3H] |
| 0CCD | w(80E00010): LDR R0, SP, 10H |
| 0CCE | w(D1549B4C): BLEQ MT [trap=4, pos=21659] |
| 0CCF | x(8000001C): LDR R0, R0, 1CH |
| 0CD0 | x(D154A04C): BLEQ MT [trap=4, pos=21664] |
| 0CD1 | y(80000000): LDR R0, R0, 0H |
| 0CD2 | y(40090009): SUB R0, R0, 9H |
| 0CD3 | z(E900000F): BNE 15 [0CE3H] |
| ORG.PrepCall(x,a rx)b;c ParamList(x)d;e ORG.Call(x,f rx)g |
| 0CD4 | a(40E8000C): ADD R0, SP, CH |
| 0CD5 | a .FIXUP D |
| 0CD5 | a(8D900010): LDR SB, MT, MOD9 [ORG] |
| 0CD6 | a(41D80001): ADD R1, SB, VAR1 |
| 0CD7 | b(42E80074): ADD R2, SP, 74H |
| 0CD8 | c .FIXUP P |
| 0CD8 | c(F7930011): BL MOD9 [ORG] PROC48 |
| 0CD9 | d(40E8000C): ADD R0, SP, CH |
| 0CDA | d .FIXUP D |
| 0CDA | d(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0CDB | d(41D80001): ADD R1, SB, VAR1 |
| 0CDC | e(F7FFF780): BL -2176 [045DH] |
| 0CDD | f(40E8000C): ADD R0, SP, CH |
| 0CDE | f .FIXUP D |
| 0CDE | f(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0CDF | f(41D80001): ADD R1, SB, VAR1 |
| 0CE0 | g(82E00074): LDR R2, SP, 74H |
| ELSEh ORSi.Mark("not a procedure")j;k ParamList(x)l |
| 0CE1 | h .FIXUP P |
| 0CE1 | h(F7931009): BL MOD9 [ORG] PROC49 |
| 0CE2 | i(E7000008): B 8 [0CEBH] |
| 0CE3 | j .FIXUP D |
| 0CE3 | j(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0CE4 | j(40D80424): ADD R0, SB, 424H ["not a procedure"] |
| 0CE5 | j(41000010): MOV R1, R0, 10H |
| 0CE6 | k .FIXUP P |
| 0CE6 | k(F7709005): BL MOD7 [ORS] PROC9 |
| 0CE7 | l(40E8000C): ADD R0, SP, CH |
| 0CE8 | l .FIXUP D |
| 0CE8 | l(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0CE9 | l(41D80001): ADD R1, SB, VAR1 |
| ENDm |
| 0CEA | m(F7FFF772): BL -2190 [045DH] |
| ELSIF xn.type.formo = ORB.Proc THENp (*procedure call without parameters*) |
| 0CEB | n(E7000031): B 49 [0D1DH] |
| 0CEC | o(80E00010): LDR R0, SP, 10H |
| 0CED | o(D1555A4C): BLEQ MT [trap=4, pos=21850] |
| 0CEE | p(80000000): LDR R0, R0, 0H |
| 0CEF | p(4009000A): SUB R0, R0, AH |
| 0CF0 | p(E9000020): BNE 32 [0D11H] |
| IF x.type.nofparq > 0 THENr ORS.Mark("missing parameters")s ENDt ; |
| 0CF1 | q(80E00010): LDR R0, SP, 10H |
| 0CF2 | q(D155AD4C): BLEQ MT [trap=4, pos=21933] |
| 0CF3 | r(8000000C): LDR R0, R0, CH |
| 0CF4 | r(40090000): SUB R0, R0, 0H |
| 0CF5 | r(E6000004): BLE 4 [0CFAH] |
| 0CF6 | s .FIXUP D |
| 0CF6 | s(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 0CF7 | s(40D80434): ADD R0, SB, 434H ["missing parameters"] |
| 0CF8 | s(41000013): MOV R1, R0, 13H |
| 0CF9 | t .FIXUP P |
| 0CF9 | t(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 |
| 0CFA | u(80E00010): LDR R0, SP, 10H |
| 0CFB | u(D155F64C): BLEQ MT [trap=4, pos=22006] |
| 0CFC | v(8000001C): LDR R0, R0, 1CH |
| 0CFD | v(D155FB4C): BLEQ MT [trap=4, pos=22011] |
| 0CFE | w(80000000): LDR R0, R0, 0H |
| 0CFF | w(40090009): SUB R0, R0, 9H |
| 0D00 | w(E900000B): BNE 11 [0D0CH] |
| 0D01 | x(40E8000C): ADD R0, SP, CH |
| 0D02 | x .FIXUP D |
| 0D02 | x(8D90000C): LDR SB, MT, MOD9 [ORG] |
| 0D03 | x(41D80001): ADD R1, SB, VAR1 |
| 0D04 | y(42E80074): ADD R2, SP, 74H |
| 0D05 | z .FIXUP P |
| 0D05 | z(F793000C): BL MOD9 [ORG] PROC48 |
| 0D06 | a(40E8000C): ADD R0, SP, CH |
| 0D07 | a .FIXUP D |
| 0D07 | a(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0D08 | a(41D80001): ADD R1, SB, VAR1 |
| 0D09 | b(82E00074): LDR R2, SP, 74H |
| 0D0A | c .FIXUP P |
| 0D0A | c(F7931005): BL MOD9 [ORG] PROC49 |
| 0D0B | d(E7000004): B 4 [0D10H] |
| 0D0C | e .FIXUP D |
| 0D0C | e(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0D0D | e(40D80448): ADD R0, SB, 448H ["not a procedure"] |
| 0D0E | e(41000010): MOV R1, R0, 10H |
| 0D0F | f .FIXUP P |
| 0D0F | f(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF xg.mode = ORB.Typ THENh ORS.Mark("illegal assignment")i |
| 0D10 | g(E700000C): B 12 [0D1DH] |
| 0D11 | h(80E0000C): LDR R0, SP, CH |
| 0D12 | h(40090005): SUB R0, R0, 5H |
| 0D13 | h(E9000005): BNE 5 [0D19H] |
| 0D14 | i .FIXUP D |
| 0D14 | i(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0D15 | i(40D80458): ADD R0, SB, 458H ["illegal assignment"] |
| 0D16 | i(41000013): MOV R1, R0, 13H |
| ELSEj ORSk.Mark("not a procedure")l |
| 0D17 | j .FIXUP P |
| 0D17 | j(F7709008): BL MOD7 [ORS] PROC9 |
| 0D18 | k(E7000004): B 4 [0D1DH] |
| 0D19 | l .FIXUP D |
| 0D19 | l(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0D1A | l(40D8046C): ADD R0, SB, 46CH ["not a procedure"] |
| 0D1B | l(41000010): MOV R1, R0, 10H |
| ENDm |
| 0D1C | m .FIXUP P |
| 0D1C | m(F7709005): BL MOD7 [ORS] PROC9 |
| END |
| ELSIF symn = ORS.if THENo |
| 0D1D | n(E70001D7): B 471 [0EF5H] |
| 0D1E | o .FIXUP D |
| 0D1E | o(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0D1F | o(80D0001C): LDR R0, SB, 1CH [data] |
| 0D20 | o(40090020): SUB R0, R0, 20H |
| 0D21 | o(E9000058): BNE 88 [0D7AH] |
| ORS.Get(sym)p;q expression(x)r;s CheckBool(x)t;u ORG.CFJump(x)v;w |
| 0D22 | p .FIXUP D |
| 0D22 | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D23 | p(40D8001C): ADD R0, SB, 1CH [data] |
| 0D24 | q .FIXUP P |
| 0D24 | q(F770A008): BL MOD7 [ORS] PROC10 |
| 0D25 | r(40E8000C): ADD R0, SP, CH |
| 0D26 | r .FIXUP D |
| 0D26 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0D27 | r(41D80001): ADD R1, SB, VAR1 |
| 0D28 | s .FIXUP D |
| 0D28 | s(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0D29 | s(82D00034): LDR R2, SB, 34H [data] |
| 0D2A | s(D157235C): BLEQ MT [trap=5, pos=22307] |
| 0D2B | s(D7000002): BL R2 |
| 0D2C | t(40E8000C): ADD R0, SP, CH |
| 0D2D | t .FIXUP D |
| 0D2D | t(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0D2E | t(41D80001): ADD R1, SB, VAR1 |
| 0D2F | u(F7FFF328): BL -3288 [0058H] |
| 0D30 | v(40E8000C): ADD R0, SP, CH |
| 0D31 | v .FIXUP D |
| 0D31 | v(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0D32 | v(41D80001): ADD R1, SB, VAR1 |
| 0D33 | w .FIXUP P |
| 0D33 | w(F792C00F): BL MOD9 [ORG] PROC44 |
| Check(ORS.then,x "no THEN")y;z |
| 0D34 | x(4000002F): MOV R0, R0, 2FH |
| 0D35 | y .FIXUP D |
| 0D35 | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D36 | y(41D8047C): ADD R1, SB, 47CH ["no THEN"] |
| 0D37 | y(42000008): MOV R2, R0, 8H |
| 0D38 | z(F7FFF2C7): BL -3385 [0000H] |
| StatSequence;a L0 := 0;b |
| 0D39 | a(F7FFFE9E): BL -354 [0BD8H] |
| 0D3A | b(40000000): MOV R0, R0, 0H |
| 0D3B | b(A0E0006C): STR R0, SP, 6CH |
| WHILE sym = ORS.elsif DOc |
| 0D3C | c .FIXUP D |
| 0D3C | c(8D000007): LDR SB, MT, MOD0 [ORP] |
| 0D3D | c(80D0001C): LDR R0, SB, 1CH [data] |
| 0D3E | c(40090038): SUB R0, R0, 38H |
| 0D3F | c(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 |
| 0D40 | d .FIXUP D |
| 0D40 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D41 | d(40D8001C): ADD R0, SB, 1CH [data] |
| 0D42 | e .FIXUP P |
| 0D42 | e(F770A00F): BL MOD7 [ORS] PROC10 |
| 0D43 | f(40E8006C): ADD R0, SP, 6CH |
| 0D44 | g .FIXUP P |
| 0D44 | g(F792B002): BL MOD9 [ORG] PROC43 |
| 0D45 | h(40E8000C): ADD R0, SP, CH |
| 0D46 | h .FIXUP D |
| 0D46 | h(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0D47 | h(41D80001): ADD R1, SB, VAR1 |
| 0D48 | i .FIXUP P |
| 0D48 | i(F792F004): BL MOD9 [ORG] PROC47 |
| 0D49 | j(40E8000C): ADD R0, SP, CH |
| 0D4A | j .FIXUP D |
| 0D4A | j(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0D4B | j(41D80001): ADD R1, SB, VAR1 |
| 0D4C | k .FIXUP D |
| 0D4C | k(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0D4D | k(82D00034): LDR R2, SB, 34H [data] |
| 0D4E | k(D157E85C): BLEQ MT [trap=5, pos=22504] |
| 0D4F | k(D7000002): BL R2 |
| 0D50 | l(40E8000C): ADD R0, SP, CH |
| 0D51 | l .FIXUP D |
| 0D51 | l(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0D52 | l(41D80001): ADD R1, SB, VAR1 |
| 0D53 | m(F7FFF304): BL -3324 [0058H] |
| ORG.CFJump(x)n;o Check(ORS.then,p "no THEN")q;r StatSequence |
| 0D54 | n(40E8000C): ADD R0, SP, CH |
| 0D55 | n .FIXUP D |
| 0D55 | n(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0D56 | n(41D80001): ADD R1, SB, VAR1 |
| 0D57 | o .FIXUP P |
| 0D57 | o(F792C00F): BL MOD9 [ORG] PROC44 |
| 0D58 | p(4000002F): MOV R0, R0, 2FH |
| 0D59 | q .FIXUP D |
| 0D59 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D5A | q(41D80484): ADD R1, SB, 484H ["no THEN"] |
| 0D5B | q(42000008): MOV R2, R0, 8H |
| 0D5C | r(F7FFF2A3): BL -3421 [0000H] |
| ENDs ; |
| 0D5D | s(F7FFFE7A): BL -390 [0BD8H] |
| 0D5E | s(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 |
| 0D5F | t .FIXUP D |
| 0D5F | t(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0D60 | t(80D0001C): LDR R0, SB, 1CH [data] |
| 0D61 | t(40090037): SUB R0, R0, 37H |
| 0D62 | t(E900000B): BNE 11 [0D6EH] |
| 0D63 | u .FIXUP D |
| 0D63 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D64 | u(40D8001C): ADD R0, SB, 1CH [data] |
| 0D65 | v .FIXUP P |
| 0D65 | v(F770A00E): BL MOD7 [ORS] PROC10 |
| 0D66 | w(40E8006C): ADD R0, SP, 6CH |
| 0D67 | x .FIXUP P |
| 0D67 | x(F792B002): BL MOD9 [ORG] PROC43 |
| 0D68 | y(40E8000C): ADD R0, SP, CH |
| 0D69 | y .FIXUP D |
| 0D69 | y(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0D6A | y(41D80001): ADD R1, SB, VAR1 |
| 0D6B | z .FIXUP P |
| 0D6B | z(F792F004): BL MOD9 [ORG] PROC47 |
| ELSEa ORGb.Fixup(x)c |
| 0D6C | a(F7FFFE6B): BL -405 [0BD8H] |
| 0D6D | b(E7000004): B 4 [0D72H] |
| 0D6E | c(40E8000C): ADD R0, SP, CH |
| 0D6F | c .FIXUP D |
| 0D6F | c(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0D70 | c(41D80001): ADD R1, SB, VAR1 |
| ENDd ; |
| 0D71 | d .FIXUP P |
| 0D71 | d(F792F006): BL MOD9 [ORG] PROC47 |
| ORG.FixLink(L0)e;f Check(ORS.end,g "no END")h |
| 0D72 | e(80E0006C): LDR R0, SP, 6CH |
| 0D73 | f .FIXUP P |
| 0D73 | f(F7904002): BL MOD9 [ORG] PROC4 |
| 0D74 | g(40000035): MOV R0, R0, 35H |
| 0D75 | h .FIXUP D |
| 0D75 | h(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0D76 | h(41D8048C): ADD R1, SB, 48CH ["no END"] |
| 0D77 | h(42000007): MOV R2, R0, 7H |
| ELSIFi symj = ORS.while THENk |
| 0D78 | i(F7FFF287): BL -3449 [0000H] |
| 0D79 | j(E700017B): B 379 [0EF5H] |
| 0D7A | k .FIXUP D |
| 0D7A | k(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0D7B | k(80D0001C): LDR R0, SB, 1CH [data] |
| 0D7C | k(40090022): SUB R0, R0, 22H |
| 0D7D | k(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 |
| 0D7E | l .FIXUP D |
| 0D7E | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D7F | l(40D8001C): ADD R0, SB, 1CH [data] |
| 0D80 | m .FIXUP P |
| 0D80 | m(F770A00D): BL MOD7 [ORS] PROC10 |
| 0D81 | n .FIXUP P |
| 0D81 | n(F792A001): BL MOD9 [ORG] PROC42 |
| 0D82 | n(A0E0006C): STR R0, SP, 6CH |
| 0D83 | o(40E8000C): ADD R0, SP, CH |
| 0D84 | o .FIXUP D |
| 0D84 | o(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0D85 | o(41D80001): ADD R1, SB, VAR1 |
| 0D86 | p .FIXUP D |
| 0D86 | p(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0D87 | p(82D00034): LDR R2, SB, 34H [data] |
| 0D88 | p(D1594F5C): BLEQ MT [trap=5, pos=22863] |
| 0D89 | p(D7000002): BL R2 |
| 0D8A | q(40E8000C): ADD R0, SP, CH |
| 0D8B | q .FIXUP D |
| 0D8B | q(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0D8C | q(41D80001): ADD R1, SB, VAR1 |
| 0D8D | r(F7FFF2CA): BL -3382 [0058H] |
| 0D8E | s(40E8000C): ADD R0, SP, CH |
| 0D8F | s .FIXUP D |
| 0D8F | s(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0D90 | s(41D80001): ADD R1, SB, VAR1 |
| 0D91 | t .FIXUP P |
| 0D91 | t(F792C010): BL MOD9 [ORG] PROC44 |
| Check(ORS.do,u "no DO")v;w StatSequence;x ORG.BJump(L0)y;z |
| 0D92 | u(40000031): MOV R0, R0, 31H |
| 0D93 | v .FIXUP D |
| 0D93 | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D94 | v(41D80494): ADD R1, SB, 494H ["no DO"] |
| 0D95 | v(42000006): MOV R2, R0, 6H |
| 0D96 | w(F7FFF269): BL -3479 [0000H] |
| 0D97 | x(F7FFFE40): BL -448 [0BD8H] |
| 0D98 | y(80E0006C): LDR R0, SP, 6CH |
| 0D99 | z .FIXUP P |
| 0D99 | z(F792D008): BL MOD9 [ORG] PROC45 |
| WHILE sym = ORS.elsif DOa |
| 0D9A | a .FIXUP D |
| 0D9A | a(8D000007): LDR SB, MT, MOD0 [ORP] |
| 0D9B | a(80D0001C): LDR R0, SB, 1CH [data] |
| 0D9C | a(40090038): SUB R0, R0, 38H |
| 0D9D | a(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 |
| 0D9E | b .FIXUP D |
| 0D9E | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0D9F | b(40D8001C): ADD R0, SB, 1CH [data] |
| 0DA0 | c .FIXUP P |
| 0DA0 | c(F770A007): BL MOD7 [ORS] PROC10 |
| 0DA1 | d(40E8000C): ADD R0, SP, CH |
| 0DA2 | d .FIXUP D |
| 0DA2 | d(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0DA3 | d(41D80001): ADD R1, SB, VAR1 |
| 0DA4 | e .FIXUP P |
| 0DA4 | e(F792F004): BL MOD9 [ORG] PROC47 |
| 0DA5 | f(40E8000C): ADD R0, SP, CH |
| 0DA6 | f .FIXUP D |
| 0DA6 | f(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0DA7 | f(41D80001): ADD R1, SB, VAR1 |
| 0DA8 | g .FIXUP D |
| 0DA8 | g(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0DA9 | g(82D00034): LDR R2, SB, 34H [data] |
| 0DAA | g(D159FF5C): BLEQ MT [trap=5, pos=23039] |
| 0DAB | g(D7000002): BL R2 |
| 0DAC | h(40E8000C): ADD R0, SP, CH |
| 0DAD | h .FIXUP D |
| 0DAD | h(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0DAE | h(41D80001): ADD R1, SB, VAR1 |
| 0DAF | i(F7FFF2A8): BL -3416 [0058H] |
| 0DB0 | j(40E8000C): ADD R0, SP, CH |
| 0DB1 | j .FIXUP D |
| 0DB1 | j(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0DB2 | j(41D80001): ADD R1, SB, VAR1 |
| 0DB3 | k .FIXUP P |
| 0DB3 | k(F792C00F): BL MOD9 [ORG] PROC44 |
| Check(ORS.do,l "no DO")m;n StatSequence;o ORG.BJump(L0)p |
| 0DB4 | l(40000031): MOV R0, R0, 31H |
| 0DB5 | m .FIXUP D |
| 0DB5 | m(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0DB6 | m(41D8049C): ADD R1, SB, 49CH ["no DO"] |
| 0DB7 | m(42000006): MOV R2, R0, 6H |
| 0DB8 | n(F7FFF247): BL -3513 [0000H] |
| 0DB9 | o(F7FFFE1E): BL -482 [0BD8H] |
| 0DBA | p(80E0006C): LDR R0, SP, 6CH |
| ENDq ; |
| 0DBB | q .FIXUP P |
| 0DBB | q(F792D008): BL MOD9 [ORG] PROC45 |
| 0DBC | q(E7FFFFDD): B -35 [0D9AH] |
| ORG.Fixup(x)r;s Check(ORS.end,t "no END")u |
| 0DBD | r(40E8000C): ADD R0, SP, CH |
| 0DBE | r .FIXUP D |
| 0DBE | r(8D900009): LDR SB, MT, MOD9 [ORG] |
| 0DBF | r(41D80001): ADD R1, SB, VAR1 |
| 0DC0 | s .FIXUP P |
| 0DC0 | s(F792F005): BL MOD9 [ORG] PROC47 |
| 0DC1 | t(40000035): MOV R0, R0, 35H |
| 0DC2 | u .FIXUP D |
| 0DC2 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0DC3 | u(41D804A4): ADD R1, SB, 4A4H ["no END"] |
| 0DC4 | u(42000007): MOV R2, R0, 7H |
| ELSIFv symw = ORS.repeat THENx |
| 0DC5 | v(F7FFF23A): BL -3526 [0000H] |
| 0DC6 | w(E700012E): B 302 [0EF5H] |
| 0DC7 | x .FIXUP D |
| 0DC7 | x(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0DC8 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 0DC9 | x(40090023): SUB R0, R0, 23H |
| 0DCA | x(E9000023): BNE 35 [0DEEH] |
| ORS.Get(sym)y;z L0 := ORG.Here();a StatSequence;b |
| 0DCB | y .FIXUP D |
| 0DCB | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0DCC | y(40D8001C): ADD R0, SB, 1CH [data] |
| 0DCD | z .FIXUP P |
| 0DCD | z(F770A00D): BL MOD7 [ORS] PROC10 |
| 0DCE | a .FIXUP P |
| 0DCE | a(F792A001): BL MOD9 [ORG] PROC42 |
| 0DCF | a(A0E0006C): STR R0, SP, 6CH |
| 0DD0 | b(F7FFFE07): BL -505 [0BD8H] |
| IF sym = ORS.until THENc |
| 0DD1 | c .FIXUP D |
| 0DD1 | c(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0DD2 | c(80D0001C): LDR R0, SB, 1CH [data] |
| 0DD3 | c(40090039): SUB R0, R0, 39H |
| 0DD4 | c(E9000014): BNE 20 [0DE9H] |
| ORS.Get(sym)d;e expression(x)f;g CheckBool(x)h;i ORG.CBJump(x,j L0)k |
| 0DD5 | d .FIXUP D |
| 0DD5 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0DD6 | d(40D8001C): ADD R0, SB, 1CH [data] |
| 0DD7 | e .FIXUP P |
| 0DD7 | e(F770A009): BL MOD7 [ORS] PROC10 |
| 0DD8 | f(40E8000C): ADD R0, SP, CH |
| 0DD9 | f .FIXUP D |
| 0DD9 | f(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0DDA | f(41D80001): ADD R1, SB, VAR1 |
| 0DDB | g .FIXUP D |
| 0DDB | g(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0DDC | g(82D00034): LDR R2, SB, 34H [data] |
| 0DDD | g(D15B365C): BLEQ MT [trap=5, pos=23350] |
| 0DDE | g(D7000002): BL R2 |
| 0DDF | h(40E8000C): ADD R0, SP, CH |
| 0DE0 | h .FIXUP D |
| 0DE0 | h(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0DE1 | h(41D80001): ADD R1, SB, VAR1 |
| 0DE2 | i(F7FFF275): BL -3467 [0058H] |
| 0DE3 | j(40E8000C): ADD R0, SP, CH |
| 0DE4 | j .FIXUP D |
| 0DE4 | j(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0DE5 | j(41D80001): ADD R1, SB, VAR1 |
| 0DE6 | k(82E0006C): LDR R2, SP, 6CH |
| ELSEl ORSm.Mark("missing UNTIL")n |
| 0DE7 | l .FIXUP P |
| 0DE7 | l(F792E010): BL MOD9 [ORG] PROC46 |
| 0DE8 | m(E7000004): B 4 [0DEDH] |
| 0DE9 | n .FIXUP D |
| 0DE9 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0DEA | n(40D804AC): ADD R0, SB, 4ACH ["missing UNTIL"] |
| 0DEB | n(4100000E): MOV R1, R0, EH |
| ENDo |
| 0DEC | o .FIXUP P |
| 0DEC | o(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symp = ORS.for THENq |
| 0DED | p(E7000107): B 263 [0EF5H] |
| 0DEE | q .FIXUP D |
| 0DEE | q(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0DEF | q(80D0001C): LDR R0, SB, 1CH [data] |
| 0DF0 | q(40090025): SUB R0, R0, 25H |
| 0DF1 | q(E900009B): BNE 155 [0E8DH] |
| ORS.Get(sym)r;s |
| 0DF2 | r .FIXUP D |
| 0DF2 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0DF3 | r(40D8001C): ADD R0, SB, 1CH [data] |
| 0DF4 | s .FIXUP P |
| 0DF4 | s(F770A008): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENt |
| 0DF5 | t .FIXUP D |
| 0DF5 | t(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0DF6 | t(80D0001C): LDR R0, SB, 1CH [data] |
| 0DF7 | t(4009001F): SUB R0, R0, 1FH |
| 0DF8 | t(E900008F): BNE 143 [0E88H] |
| qualident(obj)u;v ORG.MakeItem(x,w obj,x level)y;z CheckInt(x)a;b CheckReadOnly(x)c;d |
| 0DF9 | u(40E80004): ADD R0, SP, 4H |
| 0DFA | v(F7FFF219): BL -3559 [0014H] |
| 0DFB | w(40E8000C): ADD R0, SP, CH |
| 0DFC | w .FIXUP D |
| 0DFC | w(8D900007): LDR SB, MT, MOD9 [ORG] |
| 0DFD | w(41D80001): ADD R1, SB, VAR1 |
| 0DFE | x(82E00004): LDR R2, SP, 4H |
| 0DFF | y .FIXUP D |
| 0DFF | y(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0E00 | y(83D00024): LDR R3, SB, 24H [data] |
| 0E01 | z .FIXUP P |
| 0E01 | z(F790800D): BL MOD9 [ORG] PROC8 |
| 0E02 | a(40E8000C): ADD R0, SP, CH |
| 0E03 | a .FIXUP D |
| 0E03 | a(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0E04 | a(41D80001): ADD R1, SB, VAR1 |
| 0E05 | b(F7FFF267): BL -3481 [006DH] |
| 0E06 | c(40E8000C): ADD R0, SP, CH |
| 0E07 | c .FIXUP D |
| 0E07 | c(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0E08 | c(41D80001): ADD R1, SB, VAR1 |
| 0E09 | d(F7FFF2DA): BL -3366 [00E4H] |
| IF sym = ORS.becomes THENe |
| 0E0A | e .FIXUP D |
| 0E0A | e(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0E0B | e(80D0001C): LDR R0, SB, 1CH [data] |
| 0E0C | e(4009002A): SUB R0, R0, 2AH |
| 0E0D | e(E9000075): BNE 117 [0E83H] |
| ORS.Get(sym)f;g expression(y)h;i CheckInt(y)j;k ORG.For0(x,l y)m;n L0 := ORG.Here();o |
| 0E0E | f .FIXUP D |
| 0E0E | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0E0F | f(40D8001C): ADD R0, SB, 1CH [data] |
| 0E10 | g .FIXUP P |
| 0E10 | g(F770A00F): BL MOD7 [ORS] PROC10 |
| 0E11 | h(40E80024): ADD R0, SP, 24H |
| 0E12 | h .FIXUP D |
| 0E12 | h(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0E13 | h(41D80001): ADD R1, SB, VAR1 |
| 0E14 | i .FIXUP D |
| 0E14 | i(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0E15 | i(82D00034): LDR R2, SB, 34H [data] |
| 0E16 | i(D15C815C): BLEQ MT [trap=5, pos=23681] |
| 0E17 | i(D7000002): BL R2 |
| 0E18 | j(40E80024): ADD R0, SP, 24H |
| 0E19 | j .FIXUP D |
| 0E19 | j(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E1A | j(41D80001): ADD R1, SB, VAR1 |
| 0E1B | k(F7FFF251): BL -3503 [006DH] |
| 0E1C | l(40E8000C): ADD R0, SP, CH |
| 0E1D | l .FIXUP D |
| 0E1D | l(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0E1E | l(41D80001): ADD R1, SB, VAR1 |
| 0E1F | m(42E80024): ADD R2, SP, 24H |
| 0E20 | m .FIXUP D |
| 0E20 | m(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0E21 | m(43D80001): ADD R3, SB, VAR1 |
| 0E22 | n .FIXUP P |
| 0E22 | n(F7927012): BL MOD9 [ORG] PROC39 |
| 0E23 | o .FIXUP P |
| 0E23 | o(F792A001): BL MOD9 [ORG] PROC42 |
| 0E24 | o(A0E0006C): STR R0, SP, 6CH |
| Check(ORS.to,p "no TO")q;r expression(z)s;t CheckInt(z)u;v obj.rdow := TRUE;x |
| 0E25 | p(40000032): MOV R0, R0, 32H |
| 0E26 | q .FIXUP D |
| 0E26 | q(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0E27 | q(41D804BC): ADD R1, SB, 4BCH ["no TO"] |
| 0E28 | q(42000006): MOV R2, R0, 6H |
| 0E29 | r(F7FFF1D6): BL -3626 [0000H] |
| 0E2A | s(40E8003C): ADD R0, SP, 3CH |
| 0E2B | s .FIXUP D |
| 0E2B | s(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E2C | s(41D80001): ADD R1, SB, VAR1 |
| 0E2D | t .FIXUP D |
| 0E2D | t(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0E2E | t(82D00034): LDR R2, SB, 34H [data] |
| 0E2F | t(D15CE35C): BLEQ MT [trap=5, pos=23779] |
| 0E30 | t(D7000002): BL R2 |
| 0E31 | u(40E8003C): ADD R0, SP, 3CH |
| 0E32 | u .FIXUP D |
| 0E32 | u(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E33 | u(41D80001): ADD R1, SB, VAR1 |
| 0E34 | v(F7FFF238): BL -3528 [006DH] |
| 0E35 | w(80E00004): LDR R0, SP, 4H |
| 0E36 | w(D15CF84C): BLEQ MT [trap=4, pos=23800] |
| 0E37 | x(41000001): MOV R1, R0, 1H |
| 0E38 | x(B1000003): STR R1, R0, 3H |
| IF sym = ORS.by THENy ORS.Get(sym)z;a expression(w)b;c CheckConst(w)d;e CheckInt(w)f |
| 0E39 | y .FIXUP D |
| 0E39 | y(8D000007): LDR SB, MT, MOD0 [ORP] |
| 0E3A | y(80D0001C): LDR R0, SB, 1CH [data] |
| 0E3B | y(40090033): SUB R0, R0, 33H |
| 0E3C | y(E9000013): BNE 19 [0E50H] |
| 0E3D | z .FIXUP D |
| 0E3D | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0E3E | z(40D8001C): ADD R0, SB, 1CH [data] |
| 0E3F | a .FIXUP P |
| 0E3F | a(F770A01C): BL MOD7 [ORS] PROC10 |
| 0E40 | b(40E80054): ADD R0, SP, 54H |
| 0E41 | b .FIXUP D |
| 0E41 | b(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0E42 | b(41D80001): ADD R1, SB, VAR1 |
| 0E43 | c .FIXUP D |
| 0E43 | c(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0E44 | c(82D00034): LDR R2, SB, 34H [data] |
| 0E45 | c(D15D3F5C): BLEQ MT [trap=5, pos=23871] |
| 0E46 | c(D7000002): BL R2 |
| 0E47 | d(40E80054): ADD R0, SP, 54H |
| 0E48 | d .FIXUP D |
| 0E48 | d(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E49 | d(41D80001): ADD R1, SB, VAR1 |
| 0E4A | e(F7FFF287): BL -3449 [00D2H] |
| 0E4B | f(40E80054): ADD R0, SP, 54H |
| 0E4C | f .FIXUP D |
| 0E4C | f(8D900004): LDR SB, MT, MOD9 [ORG] |
| 0E4D | f(41D80001): ADD R1, SB, VAR1 |
| ELSEg ORGh.MakeConstItem(w,i ORB.intType,j 1)k |
| 0E4E | g(F7FFF21E): BL -3554 [006DH] |
| 0E4F | h(E7000007): B 7 [0E57H] |
| 0E50 | i(40E80054): ADD R0, SP, 54H |
| 0E51 | i .FIXUP D |
| 0E51 | i(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E52 | i(41D80001): ADD R1, SB, VAR1 |
| 0E53 | j .FIXUP D |
| 0E53 | j(8D800002): LDR SB, MT, MOD8 [ORB] |
| 0E54 | j(82D00009): LDR R2, SB, VAR9 |
| 0E55 | k(43000001): MOV R3, R0, 1H |
| ENDl ; |
| 0E56 | l .FIXUP P |
| 0E56 | l(F7905017): BL MOD9 [ORG] PROC5 |
| Check(ORS.do,m "no DO")n;o ORG.For1(x,p y,q z,r w,s L1)t;u |
| 0E57 | m(40000031): MOV R0, R0, 31H |
| 0E58 | n .FIXUP D |
| 0E58 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0E59 | n(41D804C4): ADD R1, SB, 4C4H ["no DO"] |
| 0E5A | n(42000006): MOV R2, R0, 6H |
| 0E5B | o(F7FFF1A4): BL -3676 [0000H] |
| 0E5C | p(40E8000C): ADD R0, SP, CH |
| 0E5D | p .FIXUP D |
| 0E5D | p(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E5E | p(41D80001): ADD R1, SB, VAR1 |
| 0E5F | q(42E80024): ADD R2, SP, 24H |
| 0E60 | q .FIXUP D |
| 0E60 | q(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0E61 | q(43D80001): ADD R3, SB, VAR1 |
| 0E62 | r(44E8003C): ADD R4, SP, 3CH |
| 0E63 | r .FIXUP D |
| 0E63 | r(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0E64 | r(45D80001): ADD R5, SB, VAR1 |
| 0E65 | s(46E80054): ADD R6, SP, 54H |
| 0E66 | s .FIXUP D |
| 0E66 | s(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0E67 | s(47D80001): ADD R7, SB, VAR1 |
| 0E68 | t(48E80070): ADD R8, SP, 70H |
| 0E69 | u .FIXUP P |
| 0E69 | u(F7928013): BL MOD9 [ORG] PROC40 |
| StatSequence;v Check(ORS.end,w "no END")x;y |
| 0E6A | v(F7FFFD6D): BL -659 [0BD8H] |
| 0E6B | w(40000035): MOV R0, R0, 35H |
| 0E6C | x .FIXUP D |
| 0E6C | x(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0E6D | x(41D804CC): ADD R1, SB, 4CCH ["no END"] |
| 0E6E | x(42000007): MOV R2, R0, 7H |
| 0E6F | y(F7FFF190): BL -3696 [0000H] |
| ORG.For2(x,z y,a w)b;c ORG.BJump(L0)d;e ORG.FixLink(L1)f;g obj.rdoh := FALSE |
| 0E70 | z(40E8000C): ADD R0, SP, CH |
| 0E71 | z .FIXUP D |
| 0E71 | z(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0E72 | z(41D80001): ADD R1, SB, VAR1 |
| 0E73 | a(42E80024): ADD R2, SP, 24H |
| 0E74 | a .FIXUP D |
| 0E74 | a(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0E75 | a(43D80001): ADD R3, SB, VAR1 |
| 0E76 | b(44E80054): ADD R4, SP, 54H |
| 0E77 | b .FIXUP D |
| 0E77 | b(8D900003): LDR SB, MT, MOD9 [ORG] |
| 0E78 | b(45D80001): ADD R5, SB, VAR1 |
| 0E79 | c .FIXUP P |
| 0E79 | c(F7929010): BL MOD9 [ORG] PROC41 |
| 0E7A | d(80E0006C): LDR R0, SP, 6CH |
| 0E7B | e .FIXUP P |
| 0E7B | e(F792D002): BL MOD9 [ORG] PROC45 |
| 0E7C | f(80E00070): LDR R0, SP, 70H |
| 0E7D | g .FIXUP P |
| 0E7D | g(F7904002): BL MOD9 [ORG] PROC4 |
| 0E7E | h(80E00004): LDR R0, SP, 4H |
| 0E7F | h(D15E5B4C): BLEQ MT [trap=4, pos=24155] |
| ELSEi ORSj.Mark(":= expected")k |
| 0E80 | i(41000000): MOV R1, R0, 0H |
| 0E81 | i(B1000003): STR R1, R0, 3H |
| 0E82 | j(E7000004): B 4 [0E87H] |
| 0E83 | k .FIXUP D |
| 0E83 | k(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 0E84 | k(40D804D4): ADD R0, SB, 4D4H [":= expected"] |
| 0E85 | k(4100000C): MOV R1, R0, CH |
| ENDl |
| 0E86 | l .FIXUP P |
| 0E86 | l(F7709009): BL MOD7 [ORS] PROC9 |
| ELSE ORSm.Mark("identifier expected")n |
| 0E87 | m(E7000004): B 4 [0E8CH] |
| 0E88 | n .FIXUP D |
| 0E88 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0E89 | n(40D804E0): ADD R0, SB, 4E0H ["identifier expected"] |
| 0E8A | n(41000014): MOV R1, R0, 14H |
| ENDo |
| 0E8B | o .FIXUP P |
| 0E8B | o(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symp = ORS.case THENq |
| 0E8C | p(E7000068): B 104 [0EF5H] |
| 0E8D | q .FIXUP D |
| 0E8D | q(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0E8E | q(80D0001C): LDR R0, SB, 1CH [data] |
| 0E8F | q(40090024): SUB R0, R0, 24H |
| 0E90 | q(E9000064): BNE 100 [0EF5H] |
| ORS.Get(sym)r;s |
| 0E91 | r .FIXUP D |
| 0E91 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0E92 | r(40D8001C): ADD R0, SB, 1CH [data] |
| 0E93 | s .FIXUP P |
| 0E93 | s(F770A008): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENt |
| 0E94 | t .FIXUP D |
| 0E94 | t(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0E95 | t(80D0001C): LDR R0, SB, 1CH [data] |
| 0E96 | t(4009001F): SUB R0, R0, 1FH |
| 0E97 | t(E9000054): BNE 84 [0EECH] |
| qualident(obj)u;v orgtype := obj.typew;x |
| 0E98 | u(40E80004): ADD R0, SP, 4H |
| 0E99 | v(F7FFF17A): BL -3718 [0014H] |
| 0E9A | w(80E00004): LDR R0, SP, 4H |
| 0E9B | w(D15F564C): BLEQ MT [trap=4, pos=24406] |
| 0E9C | x(80000010): LDR R0, R0, 10H |
| 0E9D | x(A0E00008): STR R0, SP, 8H |
| IF (orgtype.formy = ORB.Pointer)z OR (aorgtype.formb = ORB.Record)c & (dobj.classe = ORB.Par)f THENg |
| 0E9E | y(80E00008): LDR R0, SP, 8H |
| 0E9F | y(D15F724C): BLEQ MT [trap=4, pos=24434] |
| 0EA0 | z(80000000): LDR R0, R0, 0H |
| 0EA1 | z(40090007): SUB R0, R0, 7H |
| 0EA2 | a(E100000A): BEQ 10 [0EADH] |
| 0EA3 | b(80E00008): LDR R0, SP, 8H |
| 0EA4 | b(D15F924C): BLEQ MT [trap=4, pos=24466] |
| 0EA5 | c(80000000): LDR R0, R0, 0H |
| 0EA6 | c(4009000D): SUB R0, R0, DH |
| 0EA7 | d(E9000033): BNE 51 [0EDBH] |
| 0EA8 | e(80E00004): LDR R0, SP, 4H |
| 0EA9 | e(D15FAD4C): BLEQ MT [trap=4, pos=24493] |
| 0EAA | f(90000000): LDR R0, R0, 0H |
| 0EAB | f(40090003): SUB R0, R0, 3H |
| 0EAC | g(E900002E): BNE 46 [0EDBH] |
| Check(ORS.of,h "OF expected")i;j TypeCase(obj,k x)l;m L0 := 0;n |
| 0EAD | h(40000030): MOV R0, R0, 30H |
| 0EAE | i .FIXUP D |
| 0EAE | i(8D00001A): LDR SB, MT, MOD0 [ORP] |
| 0EAF | i(41D804F4): ADD R1, SB, 4F4H ["OF expected"] |
| 0EB0 | i(4200000C): MOV R2, R0, CH |
| 0EB1 | j(F7FFF14E): BL -3762 [0000H] |
| 0EB2 | k(80E00004): LDR R0, SP, 4H |
| 0EB3 | l(41E8000C): ADD R1, SP, CH |
| 0EB4 | l .FIXUP D |
| 0EB4 | l(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0EB5 | l(42D80001): ADD R2, SB, VAR1 |
| 0EB6 | m(F7FFFCD5): BL -811 [0B8CH] |
| 0EB7 | n(40000000): MOV R0, R0, 0H |
| 0EB8 | n(A0E0006C): STR R0, SP, 6CH |
| WHILE sym = ORS.bar DOo |
| 0EB9 | o .FIXUP D |
| 0EB9 | o(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0EBA | o(80D0001C): LDR R0, SB, 1CH [data] |
| 0EBB | o(40090036): SUB R0, R0, 36H |
| 0EBC | o(E9000013): BNE 19 [0ED0H] |
| ORS.Get(sym)p;q ORG.FJump(L0)r;s ORG.Fixup(x)t;u obj.typev := orgtype;w TypeCase(obj,x x)y |
| 0EBD | p .FIXUP D |
| 0EBD | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0EBE | p(40D8001C): ADD R0, SB, 1CH [data] |
| 0EBF | q .FIXUP P |
| 0EBF | q(F770A02C): BL MOD7 [ORS] PROC10 |
| 0EC0 | r(40E8006C): ADD R0, SP, 6CH |
| 0EC1 | s .FIXUP P |
| 0EC1 | s(F792B002): BL MOD9 [ORG] PROC43 |
| 0EC2 | t(40E8000C): ADD R0, SP, CH |
| 0EC3 | t .FIXUP D |
| 0EC3 | t(8D900006): LDR SB, MT, MOD9 [ORG] |
| 0EC4 | t(41D80001): ADD R1, SB, VAR1 |
| 0EC5 | u .FIXUP P |
| 0EC5 | u(F792F004): BL MOD9 [ORG] PROC47 |
| 0EC6 | v(80E00004): LDR R0, SP, 4H |
| 0EC7 | v(D160674C): BLEQ MT [trap=4, pos=24679] |
| 0EC8 | w(81E00008): LDR R1, SP, 8H |
| 0EC9 | w(A1000010): STR R1, R0, 10H |
| 0ECA | x(80E00004): LDR R0, SP, 4H |
| 0ECB | y(41E8000C): ADD R1, SP, CH |
| 0ECC | y .FIXUP D |
| 0ECC | y(8D900009): LDR SB, MT, MOD9 [ORG] |
| 0ECD | y(42D80001): ADD R2, SB, VAR1 |
| ENDz ; |
| 0ECE | z(F7FFFCBD): BL -835 [0B8CH] |
| 0ECF | z(E7FFFFE9): B -23 [0EB9H] |
| ORG.Fixup(x)a;b ORG.FixLink(L0)c;d obj.typee := orgtype |
| 0ED0 | a(40E8000C): ADD R0, SP, CH |
| 0ED1 | a .FIXUP D |
| 0ED1 | a(8D900005): LDR SB, MT, MOD9 [ORG] |
| 0ED2 | a(41D80001): ADD R1, SB, VAR1 |
| 0ED3 | b .FIXUP P |
| 0ED3 | b(F792F00E): BL MOD9 [ORG] PROC47 |
| 0ED4 | c(80E0006C): LDR R0, SP, 6CH |
| 0ED5 | d .FIXUP P |
| 0ED5 | d(F7904002): BL MOD9 [ORG] PROC4 |
| 0ED6 | e(80E00004): LDR R0, SP, 4H |
| 0ED7 | e(D160CA4C): BLEQ MT [trap=4, pos=24778] |
| ELSEf ORSg.Mark("numeric case not implemented")h;i |
| 0ED8 | f(81E00008): LDR R1, SP, 8H |
| 0ED9 | f(A1000010): STR R1, R0, 10H |
| 0EDA | g(E7000010): B 16 [0EEBH] |
| 0EDB | h .FIXUP D |
| 0EDB | h(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 0EDC | h(40D80500): ADD R0, SB, 500H ["numeric case not implemented"] |
| 0EDD | h(4100001D): MOV R1, R0, 1DH |
| 0EDE | i .FIXUP P |
| 0EDE | i(F7709009): BL MOD7 [ORS] PROC9 |
| Check(ORS.of,j "OF expected")k;l SkipCase;m |
| 0EDF | j(40000030): MOV R0, R0, 30H |
| 0EE0 | k .FIXUP D |
| 0EE0 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0EE1 | k(41D80520): ADD R1, SB, 520H ["OF expected"] |
| 0EE2 | k(4200000C): MOV R2, R0, CH |
| 0EE3 | l(F7FFF11C): BL -3812 [0000H] |
| 0EE4 | m(F7FFFCE2): BL -798 [0BC7H] |
| WHILE sym = ORS.bar DOn SkipCase ENDo |
| 0EE5 | n .FIXUP D |
| 0EE5 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0EE6 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 0EE7 | n(40090036): SUB R0, R0, 36H |
| 0EE8 | n(E9000002): BNE 2 [0EEBH] |
| 0EE9 | o(F7FFFCDD): BL -803 [0BC7H] |
| 0EEA | o(E7FFFFFA): B -6 [0EE5H] |
| END |
| ELSE ORSp.Mark("ident expected")q |
| 0EEB | p(E7000004): B 4 [0EF0H] |
| 0EEC | q .FIXUP D |
| 0EEC | q(8D000007): LDR SB, MT, MOD0 [ORP] |
| 0EED | q(40D8052C): ADD R0, SB, 52CH ["ident expected"] |
| 0EEE | q(4100000F): MOV R1, R0, FH |
| ENDr ; |
| 0EEF | r .FIXUP P |
| 0EEF | r(F7709011): BL MOD7 [ORS] PROC9 |
| Check(ORS.end,s "no END")t |
| 0EF0 | s(40000035): MOV R0, R0, 35H |
| 0EF1 | t .FIXUP D |
| 0EF1 | t(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0EF2 | t(41D8053C): ADD R1, SB, 53CH ["no END"] |
| 0EF3 | t(42000007): MOV R2, R0, 7H |
| ENDu ; |
| 0EF4 | u(F7FFF10B): BL -3829 [0000H] |
| ORG.CheckRegs;v |
| 0EF5 | v .FIXUP P |
| 0EF5 | v(F7903006): BL MOD9 [ORG] PROC3 |
| IF sym = ORS.semicolon THENw ORS.Get(sym)x |
| 0EF6 | w .FIXUP D |
| 0EF6 | w(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0EF7 | w(80D0001C): LDR R0, SB, 1CH [data] |
| 0EF8 | w(40090034): SUB R0, R0, 34H |
| 0EF9 | w(E9000004): BNE 4 [0EFEH] |
| 0EFA | x .FIXUP D |
| 0EFA | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0EFB | x(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFy symz < ORS.semicolon THENa ORS.Mark("missing semicolon?")b |
| 0EFC | y .FIXUP P |
| 0EFC | y(F770A007): BL MOD7 [ORS] PROC10 |
| 0EFD | z(E7000008): B 8 [0F06H] |
| 0EFE | a .FIXUP D |
| 0EFE | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0EFF | a(80D0001C): LDR R0, SB, 1CH [data] |
| 0F00 | a(40090034): SUB R0, R0, 34H |
| 0F01 | a(ED000004): BGE 4 [0F06H] |
| 0F02 | b .FIXUP D |
| 0F02 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F03 | b(40D80544): ADD R0, SB, 544H ["missing semicolon?"] |
| 0F04 | b(41000013): MOV R1, R0, 13H |
| ENDc |
| 0F05 | c .FIXUP P |
| 0F05 | c(F7709009): BL MOD7 [ORS] PROC9 |
| UNTIL sym > ORS.semicolon |
| ENDd StatSequence; |
| 0F06 | d .FIXUP D |
| 0F06 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F07 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 0F08 | d(40090034): SUB R0, R0, 34H |
| 0F09 | d(E6FFFCD0): BLE -816 [0BDAH] |
| 0F0A | d(8FE00000): LDR LNK, SP, 0H |
| 0F0B | d(4EE80078): ADD SP, SP, 78H |
| 0F0C | d(C700000F): B LNK |
| |
| (* Types and declarations *) |
| |
| PROCEDURE IdentList(class: INTEGER; VAR first: ORB.Object); |
| VAR obj: ORB.Object; |
| BEGINe |
| 0F0D | e(4EE90010): SUB SP, SP, 10H |
| 0F0E | e(AFE00000): STR LNK, SP, 0H |
| 0F0F | e(A0E00004): STR R0, SP, 4H |
| 0F10 | e(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.ident THENf |
| 0F11 | f .FIXUP D |
| 0F11 | f(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 0F12 | f(80D0001C): LDR R0, SB, 1CH [data] |
| 0F13 | f(4009001F): SUB R0, R0, 1FH |
| 0F14 | f(E9000037): BNE 55 [0F4CH] |
| ORB.NewObj(first,g ORS.id,h class)i;j ORS.Get(sym)k;l CheckExport(first.expom)n;o |
| 0F15 | g(80E00008): LDR R0, SP, 8H |
| 0F16 | h .FIXUP D |
| 0F16 | h(8D700005): LDR SB, MT, MOD7 [ORS] |
| 0F17 | h(41D80004): ADD R1, SB, VAR4 |
| 0F18 | i(82E00004): LDR R2, SP, 4H |
| 0F19 | j .FIXUP P |
| 0F19 | j(F780F014): BL MOD8 [ORB] PROC15 |
| 0F1A | k .FIXUP D |
| 0F1A | k(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F1B | k(40D8001C): ADD R0, SB, 1CH [data] |
| 0F1C | l .FIXUP P |
| 0F1C | l(F770A003): BL MOD7 [ORS] PROC10 |
| 0F1D | m(80E00008): LDR R0, SP, 8H |
| 0F1E | m(80000000): LDR R0, R0, 0H |
| 0F1F | m(D163904C): BLEQ MT [trap=4, pos=25488] |
| 0F20 | n(40080002): ADD R0, R0, 2H |
| 0F21 | o(F7FFF1D0): BL -3632 [00F2H] |
| WHILE sym = ORS.comma DOp |
| 0F22 | p .FIXUP D |
| 0F22 | p(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0F23 | p(80D0001C): LDR R0, SB, 1CH [data] |
| 0F24 | p(40090028): SUB R0, R0, 28H |
| 0F25 | p(E9000019): BNE 25 [0F3FH] |
| ORS.Get(sym)q;r |
| 0F26 | q .FIXUP D |
| 0F26 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F27 | q(40D8001C): ADD R0, SB, 1CH [data] |
| 0F28 | r .FIXUP P |
| 0F28 | r(F770A00C): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENs ORB.NewObj(obj,t ORS.id,u class)v;w ORS.Get(sym)x;y CheckExport(obj.expoz)a |
| 0F29 | s .FIXUP D |
| 0F29 | s(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0F2A | s(80D0001C): LDR R0, SB, 1CH [data] |
| 0F2B | s(4009001F): SUB R0, R0, 1FH |
| 0F2C | s(E900000D): BNE 13 [0F3AH] |
| 0F2D | t(40E8000C): ADD R0, SP, CH |
| 0F2E | u .FIXUP D |
| 0F2E | u(8D700005): LDR SB, MT, MOD7 [ORS] |
| 0F2F | u(41D80004): ADD R1, SB, VAR4 |
| 0F30 | v(82E00004): LDR R2, SP, 4H |
| 0F31 | w .FIXUP P |
| 0F31 | w(F780F009): BL MOD8 [ORB] PROC15 |
| 0F32 | x .FIXUP D |
| 0F32 | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F33 | x(40D8001C): ADD R0, SB, 1CH [data] |
| 0F34 | y .FIXUP P |
| 0F34 | y(F770A003): BL MOD7 [ORS] PROC10 |
| 0F35 | z(80E0000C): LDR R0, SP, CH |
| 0F36 | z(D1642A4C): BLEQ MT [trap=4, pos=25642] |
| 0F37 | a(40080002): ADD R0, R0, 2H |
| ELSEb ORSc.Mark("ident?")d |
| 0F38 | b(F7FFF1B9): BL -3655 [00F2H] |
| 0F39 | c(E7000004): B 4 [0F3EH] |
| 0F3A | d .FIXUP D |
| 0F3A | d(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0F3B | d(40D80558): ADD R0, SB, 558H ["ident?"] |
| 0F3C | d(41000007): MOV R1, R0, 7H |
| ENDe |
| 0F3D | e .FIXUP P |
| 0F3D | e(F7709009): BL MOD7 [ORS] PROC9 |
| ENDf; |
| 0F3E | f(E7FFFFE3): B -29 [0F22H] |
| IF sym = ORS.colon THENg ORS.Get(sym)h ELSEi ORSj.Mark(":?")k ENDl |
| 0F3F | g .FIXUP D |
| 0F3F | g(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0F40 | g(80D0001C): LDR R0, SB, 1CH [data] |
| 0F41 | g(40090029): SUB R0, R0, 29H |
| 0F42 | g(E9000004): BNE 4 [0F47H] |
| 0F43 | h .FIXUP D |
| 0F43 | h(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F44 | h(40D8001C): ADD R0, SB, 1CH [data] |
| 0F45 | i .FIXUP P |
| 0F45 | i(F770A008): BL MOD7 [ORS] PROC10 |
| 0F46 | j(E7000004): B 4 [0F4BH] |
| 0F47 | k .FIXUP D |
| 0F47 | k(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F48 | k(40D80560): ADD R0, SB, 560H [":?"] |
| 0F49 | k(41000003): MOV R1, R0, 3H |
| 0F4A | l .FIXUP P |
| 0F4A | l(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE firstm := NIL |
| 0F4B | m(E7000003): B 3 [0F4FH] |
| ENDn |
| 0F4C | n(40000000): MOV R0, R0, 0H |
| 0F4D | n(81E00008): LDR R1, SP, 8H |
| 0F4E | n(A0100000): STR R0, R1, 0H |
| ENDo IdentList; |
| 0F4F | o(8FE00000): LDR LNK, SP, 0H |
| 0F50 | o(4EE80010): ADD SP, SP, 10H |
| 0F51 | o(C700000F): B LNK |
| |
| PROCEDURE ArrayType(VAR type: ORB.Type); |
| VAR x: ORG.Item; typ: ORB.Type; len: LONGINT; |
| BEGINp NEW(typ);q typ.formr := ORB.NoTyp;s |
| 0F52 | p(4EE90028): SUB SP, SP, 28H |
| 0F53 | p(AFE00000): STR LNK, SP, 0H |
| 0F54 | p(A0E00004): STR R0, SP, 4H |
| 0F55 | q(40E80020): ADD R0, SP, 20H |
| 0F56 | q .FIXUP D |
| 0F56 | q(8D80000F): LDR SB, MT, MOD8 [ORB] |
| 0F57 | q(41D80003): ADD R1, SB, VAR3 |
| 0F58 | q(D765460C): BL MT [trap=0, pos=25926] |
| 0F59 | r(80E00020): LDR R0, SP, 20H |
| 0F5A | r(D1654F4C): BLEQ MT [trap=4, pos=25935] |
| 0F5B | s(41000009): MOV R1, R0, 9H |
| 0F5C | s(A1000000): STR R1, R0, 0H |
| expression(x)t;u |
| 0F5D | t(40E80008): ADD R0, SP, 8H |
| 0F5E | t .FIXUP D |
| 0F5E | t(8D900008): LDR SB, MT, MOD9 [ORG] |
| 0F5F | t(41D80001): ADD R1, SB, VAR1 |
| 0F60 | u .FIXUP D |
| 0F60 | u(8D000002): LDR SB, MT, MOD0 [ORP] |
| 0F61 | u(82D00034): LDR R2, SB, 34H [data] |
| 0F62 | u(D165705C): BLEQ MT [trap=5, pos=25968] |
| 0F63 | u(D7000002): BL R2 |
| IF (x.mode = ORB.Const)v & (wx.type.formx = ORB.Int)y & (zx.a >= 0)a THENb len := x.a |
| 0F64 | v(80E00008): LDR R0, SP, 8H |
| 0F65 | v(40090001): SUB R0, R0, 1H |
| 0F66 | w(E900000B): BNE 11 [0F72H] |
| 0F67 | x(80E0000C): LDR R0, SP, CH |
| 0F68 | x(D1659B4C): BLEQ MT [trap=4, pos=26011] |
| 0F69 | y(80000000): LDR R0, R0, 0H |
| 0F6A | y(40090004): SUB R0, R0, 4H |
| 0F6B | z(E9000006): BNE 6 [0F72H] |
| 0F6C | a(80E00010): LDR R0, SP, 10H |
| 0F6D | a(40090000): SUB R0, R0, 0H |
| 0F6E | b(E5000003): BLT 3 [0F72H] |
| ELSEc lend := 1;e ORS.Mark("not a valid length")f |
| 0F6F | c(80E00010): LDR R0, SP, 10H |
| 0F70 | c(A0E00024): STR R0, SP, 24H |
| 0F71 | d(E7000006): B 6 [0F78H] |
| 0F72 | e(40000001): MOV R0, R0, 1H |
| 0F73 | e(A0E00024): STR R0, SP, 24H |
| 0F74 | f .FIXUP D |
| 0F74 | f(8D000014): LDR SB, MT, MOD0 [ORP] |
| 0F75 | f(40D80564): ADD R0, SB, 564H ["not a valid length"] |
| 0F76 | f(41000013): MOV R1, R0, 13H |
| ENDg ; |
| 0F77 | g .FIXUP P |
| 0F77 | g(F770902D): BL MOD7 [ORS] PROC9 |
| IF sym = ORS.of THENh ORS.Get(sym)i;j Type(typ.basek)l;m |
| 0F78 | h .FIXUP D |
| 0F78 | h(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F79 | h(80D0001C): LDR R0, SB, 1CH [data] |
| 0F7A | h(40090030): SUB R0, R0, 30H |
| 0F7B | h(E900001D): BNE 29 [0F99H] |
| 0F7C | i .FIXUP D |
| 0F7C | i(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F7D | i(40D8001C): ADD R0, SB, 1CH [data] |
| 0F7E | j .FIXUP P |
| 0F7E | j(F770A007): BL MOD7 [ORS] PROC10 |
| 0F7F | k(80E00020): LDR R0, SP, 20H |
| 0F80 | k(D166344C): BLEQ MT [trap=4, pos=26164] |
| 0F81 | l(4008001C): ADD R0, R0, 1CH |
| 0F82 | m .FIXUP D |
| 0F82 | m(8D000006): LDR SB, MT, MOD0 [ORP] |
| 0F83 | m(81D00038): LDR R1, SB, 38H [data] |
| 0F84 | m(D166365C): BLEQ MT [trap=5, pos=26166] |
| 0F85 | m(D7000001): BL R1 |
| IF (typ.basen.formo = ORB.Array)p & (qtyp.baser.lens < 0)t THENu ORS.Mark("dyn array not allowed")v ENDw |
| 0F86 | n(80E00020): LDR R0, SP, 20H |
| 0F87 | n(D166494C): BLEQ MT [trap=4, pos=26185] |
| 0F88 | o(8000001C): LDR R0, R0, 1CH |
| 0F89 | o(D1664E4C): BLEQ MT [trap=4, pos=26190] |
| 0F8A | p(80000000): LDR R0, R0, 0H |
| 0F8B | p(4009000C): SUB R0, R0, CH |
| 0F8C | q(E900000B): BNE 11 [0F98H] |
| 0F8D | r(80E00020): LDR R0, SP, 20H |
| 0F8E | r(D166674C): BLEQ MT [trap=4, pos=26215] |
| 0F8F | s(8000001C): LDR R0, R0, 1CH |
| 0F90 | s(D1666B4C): BLEQ MT [trap=4, pos=26219] |
| 0F91 | t(80000010): LDR R0, R0, 10H |
| 0F92 | t(40090000): SUB R0, R0, 0H |
| 0F93 | u(ED000004): BGE 4 [0F98H] |
| 0F94 | v .FIXUP D |
| 0F94 | v(8D000012): LDR SB, MT, MOD0 [ORP] |
| 0F95 | v(40D80578): ADD R0, SB, 578H ["dyn array not allowed"] |
| 0F96 | v(41000016): MOV R1, R0, 16H |
| 0F97 | w .FIXUP P |
| 0F97 | w(F7709019): BL MOD7 [ORS] PROC9 |
| ELSIF symx = ORS.comma THENy ORS.Get(sym)z;a ArrayType(typ.baseb)c |
| 0F98 | x(E7000015): B 21 [0FAEH] |
| 0F99 | y .FIXUP D |
| 0F99 | y(8D000005): LDR SB, MT, MOD0 [ORP] |
| 0F9A | y(80D0001C): LDR R0, SB, 1CH [data] |
| 0F9B | y(40090028): SUB R0, R0, 28H |
| 0F9C | y(E9000008): BNE 8 [0FA5H] |
| 0F9D | z .FIXUP D |
| 0F9D | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0F9E | z(40D8001C): ADD R0, SB, 1CH [data] |
| 0F9F | a .FIXUP P |
| 0F9F | a(F770A008): BL MOD7 [ORS] PROC10 |
| 0FA0 | b(80E00020): LDR R0, SP, 20H |
| 0FA1 | b(D166DB4C): BLEQ MT [trap=4, pos=26331] |
| 0FA2 | c(4008001C): ADD R0, R0, 1CH |
| ELSEd ORSe.Mark("missing OF")f;g typ.baseh := ORB.intType |
| 0FA3 | d(F7FFFFAE): BL -82 [0F52H] |
| 0FA4 | e(E7000009): B 9 [0FAEH] |
| 0FA5 | f .FIXUP D |
| 0FA5 | f(8D000008): LDR SB, MT, MOD0 [ORP] |
| 0FA6 | f(40D80590): ADD R0, SB, 590H ["missing OF"] |
| 0FA7 | f(4100000B): MOV R1, R0, BH |
| 0FA8 | g .FIXUP P |
| 0FA8 | g(F7709009): BL MOD7 [ORS] PROC9 |
| 0FA9 | h(80E00020): LDR R0, SP, 20H |
| 0FAA | h(D167064C): BLEQ MT [trap=4, pos=26374] |
| ENDi ; |
| 0FAB | i .FIXUP D |
| 0FAB | i(8D800006): LDR SB, MT, MOD8 [ORB] |
| 0FAC | i(81D00009): LDR R1, SB, VAR9 |
| 0FAD | i(A100001C): STR R1, R0, 1CH |
| typ.sizej := (len * typ.basek.sizel +m 3)n DIV 4 *o 4;p |
| 0FAE | j(80E00020): LDR R0, SP, 20H |
| 0FAF | j(D1672C4C): BLEQ MT [trap=4, pos=26412] |
| 0FB0 | k(81E00020): LDR R1, SP, 20H |
| 0FB1 | k(D1673F4C): BLEQ MT [trap=4, pos=26431] |
| 0FB2 | l(8110001C): LDR R1, R1, 1CH |
| 0FB3 | l(D167444C): BLEQ MT [trap=4, pos=26436] |
| 0FB4 | m(82E00024): LDR R2, SP, 24H |
| 0FB5 | m(81100020): LDR R1, R1, 20H |
| 0FB6 | m(012A0001): MUL R1, R2, R1 |
| 0FB7 | n(41180003): ADD R1, R1, 3H |
| 0FB8 | o(41120002): ASR R1, R1, 2H |
| 0FB9 | p(41110002): LSL R1, R1, 2H |
| 0FBA | p(A1000020): STR R1, R0, 20H |
| typ.formq := ORB.Array;r typ.lens := len;t type := typ |
| 0FBB | q(80E00020): LDR R0, SP, 20H |
| 0FBC | q(D167614C): BLEQ MT [trap=4, pos=26465] |
| 0FBD | r(4100000C): MOV R1, R0, CH |
| 0FBE | r(A1000000): STR R1, R0, 0H |
| 0FBF | s(80E00020): LDR R0, SP, 20H |
| 0FC0 | s(D167774C): BLEQ MT [trap=4, pos=26487] |
| 0FC1 | t(81E00024): LDR R1, SP, 24H |
| 0FC2 | t(A1000010): STR R1, R0, 10H |
| ENDu ArrayType; |
| 0FC3 | u(80E00020): LDR R0, SP, 20H |
| 0FC4 | u(81E00004): LDR R1, SP, 4H |
| 0FC5 | u(A0100000): STR R0, R1, 0H |
| 0FC6 | u(8FE00000): LDR LNK, SP, 0H |
| 0FC7 | u(4EE80028): ADD SP, SP, 28H |
| 0FC8 | u(C700000F): B LNK |
| |
| PROCEDURE RecordType(VAR type: ORB.Type); |
| VAR obj, obj0, new, bot, base: ORB.Object; |
| typ, tp: ORB.Type; |
| offset, off, n: LONGINT; |
| BEGINv NEW(typ);w typ.formx := ORB.NoTyp;y typ.basez := NIL;a typ.mnob := -level;c typ.nofpard := 0;e offset := 0;f bot := NIL;g |
| 0FC9 | v(4EE90030): SUB SP, SP, 30H |
| 0FCA | v(AFE00000): STR LNK, SP, 0H |
| 0FCB | v(A0E00004): STR R0, SP, 4H |
| 0FCC | w(40E8001C): ADD R0, SP, 1CH |
| 0FCD | w .FIXUP D |
| 0FCD | w(8D800022): LDR SB, MT, MOD8 [ORB] |
| 0FCE | w(41D80003): ADD R1, SB, VAR3 |
| 0FCF | w(D768420C): BL MT [trap=0, pos=26690] |
| 0FD0 | x(80E0001C): LDR R0, SP, 1CH |
| 0FD1 | x(D1684B4C): BLEQ MT [trap=4, pos=26699] |
| 0FD2 | y(41000009): MOV R1, R0, 9H |
| 0FD3 | y(A1000000): STR R1, R0, 0H |
| 0FD4 | z(80E0001C): LDR R0, SP, 1CH |
| 0FD5 | z(D168624C): BLEQ MT [trap=4, pos=26722] |
| 0FD6 | a(41000000): MOV R1, R0, 0H |
| 0FD7 | a(A100001C): STR R1, R0, 1CH |
| 0FD8 | b(80E0001C): LDR R0, SP, 1CH |
| 0FD9 | b(D168724C): BLEQ MT [trap=4, pos=26738] |
| 0FDA | c .FIXUP D |
| 0FDA | c(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 0FDB | c(81D00024): LDR R1, SB, 24H [data] |
| 0FDC | c(42000000): MOV R2, R0, 0H |
| 0FDD | c(01290001): SUB R1, R2, R1 |
| 0FDE | c(A1000008): STR R1, R0, 8H |
| 0FDF | d(80E0001C): LDR R0, SP, 1CH |
| 0FE0 | d(D168884C): BLEQ MT [trap=4, pos=26760] |
| 0FE1 | e(41000000): MOV R1, R0, 0H |
| 0FE2 | e(A100000C): STR R1, R0, CH |
| 0FE3 | f(40000000): MOV R0, R0, 0H |
| 0FE4 | f(A0E00024): STR R0, SP, 24H |
| 0FE5 | g(40000000): MOV R0, R0, 0H |
| 0FE6 | g(A0E00014): STR R0, SP, 14H |
| IF sym = ORS.lparen THENh |
| 0FE7 | h(80D0001C): LDR R0, SB, 1CH |
| 0FE8 | h(4009001C): SUB R0, R0, 1CH |
| 0FE9 | h(E9000050): BNE 80 [103AH] |
| ORS.Get(sym)i;j (*record extension*) |
| 0FEA | i .FIXUP D |
| 0FEA | i(8D000010): LDR SB, MT, MOD0 [ORP] |
| 0FEB | i(40D8001C): ADD R0, SB, 1CH [data] |
| 0FEC | j .FIXUP P |
| 0FEC | j(F770A044): BL MOD7 [ORS] PROC10 |
| IF level # 0 THENk ORS.Mark("extension of local types not implemented")l ENDm ; |
| 0FED | k .FIXUP D |
| 0FED | k(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0FEE | k(80D00024): LDR R0, SB, 24H [data] |
| 0FEF | k(E1000004): BEQ 4 [0FF4H] |
| 0FF0 | l .FIXUP D |
| 0FF0 | l(8D000003): LDR SB, MT, MOD0 [ORP] |
| 0FF1 | l(40D8059C): ADD R0, SB, 59CH ["extension of local types not implemented"] |
| 0FF2 | l(41000029): MOV R1, R0, 29H |
| 0FF3 | m .FIXUP P |
| 0FF3 | m(F7709007): BL MOD7 [ORS] PROC9 |
| IF sym = ORS.ident THENn |
| 0FF4 | n .FIXUP D |
| 0FF4 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
| 0FF5 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 0FF6 | n(4009001F): SUB R0, R0, 1FH |
| 0FF7 | n(E9000039): BNE 57 [1031H] |
| qualident(base)o;p |
| 0FF8 | o(40E80018): ADD R0, SP, 18H |
| 0FF9 | p(F7FFF01A): BL -4070 [0014H] |
| IF base.classq = ORB.Typ THENr |
| 0FFA | q(80E00018): LDR R0, SP, 18H |
| 0FFB | q(D1698D4C): BLEQ MT [trap=4, pos=27021] |
| 0FFC | r(90000000): LDR R0, R0, 0H |
| 0FFD | r(40090005): SUB R0, R0, 5H |
| 0FFE | r(E900002D): BNE 45 [102CH] |
| IF base.types.formt = ORB.Record THENu typ.basev := base.typew |
| 0FFF | s(80E00018): LDR R0, SP, 18H |
| 1000 | s(D169B34C): BLEQ MT [trap=4, pos=27059] |
| 1001 | t(80000010): LDR R0, R0, 10H |
| 1002 | t(D169B84C): BLEQ MT [trap=4, pos=27064] |
| 1003 | u(80000000): LDR R0, R0, 0H |
| 1004 | u(4009000D): SUB R0, R0, DH |
| 1005 | u(E9000007): BNE 7 [100DH] |
| 1006 | v(80E0001C): LDR R0, SP, 1CH |
| 1007 | v(D169D34C): BLEQ MT [trap=4, pos=27091] |
| 1008 | w(81E00018): LDR R1, SP, 18H |
| 1009 | w(D169E04C): BLEQ MT [trap=4, pos=27104] |
| ELSEx typy.basez := ORB.intType;a ORS.Mark("invalid extension")b |
| 100A | x(81100010): LDR R1, R1, 10H |
| 100B | x(A100001C): STR R1, R0, 1CH |
| 100C | y(E7000009): B 9 [1016H] |
| 100D | z(80E0001C): LDR R0, SP, 1CH |
| 100E | z(D169F84C): BLEQ MT [trap=4, pos=27128] |
| 100F | a .FIXUP D |
| 100F | a(8D80001B): LDR SB, MT, MOD8 [ORB] |
| 1010 | a(81D00009): LDR R1, SB, VAR9 |
| 1011 | a(A100001C): STR R1, R0, 1CH |
| 1012 | b .FIXUP D |
| 1012 | b(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1013 | b(40D805C8): ADD R0, SB, 5C8H ["invalid extension"] |
| 1014 | b(41000012): MOV R1, R0, 12H |
| ENDc ; |
| 1015 | c .FIXUP P |
| 1015 | c(F7709022): BL MOD7 [ORS] PROC9 |
| typ.nofpard := typ.basee.nofparf + 1;g (*"nofpar" here abused for extension level*) |
| 1016 | d(80E0001C): LDR R0, SP, 1CH |
| 1017 | d(D16A4B4C): BLEQ MT [trap=4, pos=27211] |
| 1018 | e(81E0001C): LDR R1, SP, 1CH |
| 1019 | e(D16A574C): BLEQ MT [trap=4, pos=27223] |
| 101A | f(8110001C): LDR R1, R1, 1CH |
| 101B | f(D16A5E4C): BLEQ MT [trap=4, pos=27230] |
| 101C | g(8110000C): LDR R1, R1, CH |
| 101D | g(41180001): ADD R1, R1, 1H |
| 101E | g(A100000C): STR R1, R0, CH |
| bot := typ.baseh.dsci;j offset := typ.basek.sizel |
| 101F | h(80E0001C): LDR R0, SP, 1CH |
| 1020 | h(D16AAA4C): BLEQ MT [trap=4, pos=27306] |
| 1021 | i(8000001C): LDR R0, R0, 1CH |
| 1022 | i(D16AAE4C): BLEQ MT [trap=4, pos=27310] |
| 1023 | j(80000014): LDR R0, R0, 14H |
| 1024 | j(A0E00014): STR R0, SP, 14H |
| 1025 | k(80E0001C): LDR R0, SP, 1CH |
| 1026 | k(D16AC24C): BLEQ MT [trap=4, pos=27330] |
| 1027 | l(8000001C): LDR R0, R0, 1CH |
| 1028 | l(D16AC74C): BLEQ MT [trap=4, pos=27335] |
| ELSEm ORSn.Mark("type expected")o |
| 1029 | m(80000020): LDR R0, R0, 20H |
| 102A | m(A0E00024): STR R0, SP, 24H |
| 102B | n(E7000004): B 4 [1030H] |
| 102C | o .FIXUP D |
| 102C | o(8D00001A): LDR SB, MT, MOD0 [ORP] |
| 102D | o(40D805DC): ADD R0, SB, 5DCH ["type expected"] |
| 102E | o(4100000E): MOV R1, R0, EH |
| ENDp |
| 102F | p .FIXUP P |
| 102F | p(F770901A): BL MOD7 [ORS] PROC9 |
| ELSE ORSq.Mark("ident expected")r |
| 1030 | q(E7000004): B 4 [1035H] |
| 1031 | r .FIXUP D |
| 1031 | r(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1032 | r(40D805EC): ADD R0, SB, 5ECH ["ident expected"] |
| 1033 | r(4100000F): MOV R1, R0, FH |
| ENDs ; |
| 1034 | s .FIXUP P |
| 1034 | s(F7709005): BL MOD7 [ORS] PROC9 |
| Check(ORS.rparen,t "no )")u |
| 1035 | t(4000002C): MOV R0, R0, 2CH |
| 1036 | u .FIXUP D |
| 1036 | u(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1037 | u(41D805FC): ADD R1, SB, 5FCH ["no )"] |
| 1038 | u(42000005): MOV R2, R0, 5H |
| ENDv ; |
| 1039 | v(F7FFEFC6): BL -4154 [0000H] |
| WHILE sym = ORS.ident DOw (*fields*) |
| 103A | w .FIXUP D |
| 103A | w(8D000004): LDR SB, MT, MOD0 [ORP] |
| 103B | w(80D0001C): LDR R0, SB, 1CH [data] |
| 103C | w(4009001F): SUB R0, R0, 1FH |
| 103D | w(E90000B2): BNE 178 [10F0H] |
| n := 0;x obj := bot;y |
| 103E | x(40000000): MOV R0, R0, 0H |
| 103F | x(A0E0002C): STR R0, SP, 2CH |
| 1040 | y(80E00014): LDR R0, SP, 14H |
| 1041 | y(A0E00008): STR R0, SP, 8H |
| WHILE sym = ORS.ident DOz |
| 1042 | z .FIXUP D |
| 1042 | z(8D000008): LDR SB, MT, MOD0 [ORP] |
| 1043 | z(80D0001C): LDR R0, SB, 1CH [data] |
| 1044 | z(4009001F): SUB R0, R0, 1FH |
| 1045 | z(E900004E): BNE 78 [1094H] |
| obj0 := obj;a |
| 1046 | a(80E00008): LDR R0, SP, 8H |
| 1047 | a(A0E0000C): STR R0, SP, CH |
| WHILE (obj0 # NIL)b & (cobj0.named # ORS.id)e DOf obj0 := obj0.nextg ENDh ; |
| 1048 | b(80E0000C): LDR R0, SP, CH |
| 1049 | c(E1000013): BEQ 19 [105DH] |
| 104A | d(80E0000C): LDR R0, SP, CH |
| 104B | d(D16BF54C): BLEQ MT [trap=4, pos=27637] |
| 104C | e(40080014): ADD R0, R0, 14H |
| 104D | e .FIXUP D |
| 104D | e(8D70000B): LDR SB, MT, MOD7 [ORS] |
| 104E | e(41D80004): ADD R1, SB, VAR4 |
| 104F | e(92000000): LDR R2, R0, 0H |
| 1050 | e(40080001): ADD R0, R0, 1H |
| 1051 | e(93100000): LDR R3, R1, 0H |
| 1052 | e(41180001): ADD R1, R1, 1H |
| 1053 | e(04290003): SUB R4, R2, R3 |
| 1054 | e(E9000002): BNE 2 [1057H] |
| 1055 | e(44290000): SUB R4, R2, 0H |
| 1056 | e(E9FFFFF8): BNE -8 [104FH] |
| 1057 | f(E1000005): BEQ 5 [105DH] |
| 1058 | g(80E0000C): LDR R0, SP, CH |
| 1059 | g(D16C144C): BLEQ MT [trap=4, pos=27668] |
| 105A | h(80000008): LDR R0, R0, 8H |
| 105B | h(A0E0000C): STR R0, SP, CH |
| 105C | h(E7FFFFEB): B -21 [1048H] |
| IF obj0 # NIL THENi ORS.Mark("mult def")j ENDk ; |
| 105D | i(80E0000C): LDR R0, SP, CH |
| 105E | i(E1000004): BEQ 4 [1063H] |
| 105F | j .FIXUP D |
| 105F | j(8D000012): LDR SB, MT, MOD0 [ORP] |
| 1060 | j(40D80604): ADD R0, SB, 604H ["mult def"] |
| 1061 | j(41000009): MOV R1, R0, 9H |
| 1062 | k .FIXUP P |
| 1062 | k(F770902E): BL MOD7 [ORS] PROC9 |
| NEW(new);l ORS.CopyId(new.namem)n;o new.classp := ORB.Fld;q new.nextr := obj;s obj := new;t INC(n);u |
| 1063 | l(40E80010): ADD R0, SP, 10H |
| 1064 | l .FIXUP D |
| 1064 | l(8D800005): LDR SB, MT, MOD8 [ORB] |
| 1065 | l(41D80001): ADD R1, SB, VAR1 |
| 1066 | l(D76C620C): BL MT [trap=0, pos=27746] |
| 1067 | m(80E00010): LDR R0, SP, 10H |
| 1068 | m(D16C764C): BLEQ MT [trap=4, pos=27766] |
| 1069 | n(40080014): ADD R0, R0, 14H |
| 106A | o .FIXUP P |
| 106A | o(F7707008): BL MOD7 [ORS] PROC7 |
| 106B | p(80E00010): LDR R0, SP, 10H |
| 106C | p(D16C824C): BLEQ MT [trap=4, pos=27778] |
| 106D | q(41000004): MOV R1, R0, 4H |
| 106E | q(B1000000): STR R1, R0, 0H |
| 106F | r(80E00010): LDR R0, SP, 10H |
| 1070 | r(D16C974C): BLEQ MT [trap=4, pos=27799] |
| 1071 | s(81E00008): LDR R1, SP, 8H |
| 1072 | s(A1000008): STR R1, R0, 8H |
| 1073 | t(80E00010): LDR R0, SP, 10H |
| 1074 | t(A0E00008): STR R0, SP, 8H |
| 1075 | u(80E0002C): LDR R0, SP, 2CH |
| 1076 | u(40080001): ADD R0, R0, 1H |
| 1077 | u(A0E0002C): STR R0, SP, 2CH |
| ORS.Get(sym)v;w CheckExport(new.expox)y;z |
| 1078 | v .FIXUP D |
| 1078 | v(8D000014): LDR SB, MT, MOD0 [ORP] |
| 1079 | v(40D8001C): ADD R0, SB, 1CH [data] |
| 107A | w .FIXUP P |
| 107A | w(F770A010): BL MOD7 [ORS] PROC10 |
| 107B | x(80E00010): LDR R0, SP, 10H |
| 107C | x(D16CDE4C): BLEQ MT [trap=4, pos=27870] |
| 107D | y(40080002): ADD R0, R0, 2H |
| 107E | z(F7FFF073): BL -3981 [00F2H] |
| IF (sym # ORS.comma)a & (bsym # ORS.colon)c THENd ORS.Mark("comma expected")e |
| 107F | a .FIXUP D |
| 107F | a(8D000007): LDR SB, MT, MOD0 [ORP] |
| 1080 | a(80D0001C): LDR R0, SB, 1CH [data] |
| 1081 | a(40090028): SUB R0, R0, 28H |
| 1082 | b(E1000009): BEQ 9 [108CH] |
| 1083 | c .FIXUP D |
| 1083 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1084 | c(80D0001C): LDR R0, SB, 1CH [data] |
| 1085 | c(40090029): SUB R0, R0, 29H |
| 1086 | d(E1000005): BEQ 5 [108CH] |
| 1087 | e .FIXUP D |
| 1087 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1088 | e(40D80610): ADD R0, SB, 610H ["comma expected"] |
| 1089 | e(4100000F): MOV R1, R0, FH |
| ELSIFf symg = ORS.comma THENh ORS.Get(sym)i |
| 108A | f .FIXUP P |
| 108A | f(F7709010): BL MOD7 [ORS] PROC9 |
| 108B | g(E7000007): B 7 [1093H] |
| 108C | h .FIXUP D |
| 108C | h(8D000005): LDR SB, MT, MOD0 [ORP] |
| 108D | h(80D0001C): LDR R0, SB, 1CH [data] |
| 108E | h(40090028): SUB R0, R0, 28H |
| 108F | h(E9000003): BNE 3 [1093H] |
| 1090 | i .FIXUP D |
| 1090 | i(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1091 | i(40D8001C): ADD R0, SB, 1CH [data] |
| ENDj |
| 1092 | j .FIXUP P |
| 1092 | j(F770A008): BL MOD7 [ORS] PROC10 |
| ENDk ; |
| 1093 | k(E7FFFFAE): B -82 [1042H] |
| Check(ORS.colon,l "colon expected")m;n Type(tp)o;p |
| 1094 | l(40000029): MOV R0, R0, 29H |
| 1095 | m .FIXUP D |
| 1095 | m(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1096 | m(41D80620): ADD R1, SB, 620H ["colon expected"] |
| 1097 | m(4200000F): MOV R2, R0, FH |
| 1098 | n(F7FFEF67): BL -4249 [0000H] |
| 1099 | o(40E80020): ADD R0, SP, 20H |
| 109A | p .FIXUP D |
| 109A | p(8D000005): LDR SB, MT, MOD0 [ORP] |
| 109B | p(81D00038): LDR R1, SB, 38H [data] |
| 109C | p(D16DAD5C): BLEQ MT [trap=5, pos=28077] |
| 109D | p(D7000001): BL R1 |
| IF (tp.formq = ORB.Array)r & (stp.lent < 0)u THENv ORS.Mark("dyn array not allowed")w ENDx ; |
| 109E | q(80E00020): LDR R0, SP, 20H |
| 109F | q(D16DBF4C): BLEQ MT [trap=4, pos=28095] |
| 10A0 | r(80000000): LDR R0, R0, 0H |
| 10A1 | r(4009000C): SUB R0, R0, CH |
| 10A2 | s(E9000009): BNE 9 [10ACH] |
| 10A3 | t(80E00020): LDR R0, SP, 20H |
| 10A4 | t(D16DD64C): BLEQ MT [trap=4, pos=28118] |
| 10A5 | u(80000010): LDR R0, R0, 10H |
| 10A6 | u(40090000): SUB R0, R0, 0H |
| 10A7 | v(ED000004): BGE 4 [10ACH] |
| 10A8 | w .FIXUP D |
| 10A8 | w(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 10A9 | w(40D80630): ADD R0, SB, 630H ["dyn array not allowed"] |
| 10AA | w(41000016): MOV R1, R0, 16H |
| 10AB | x .FIXUP P |
| 10AB | x(F7709019): BL MOD7 [ORS] PROC9 |
| IF tp.sizey > 1 THENz offset := (offset+3)a DIV 4 *b 4 ENDc ; |
| 10AC | y(80E00020): LDR R0, SP, 20H |
| 10AD | y(D16E194C): BLEQ MT [trap=4, pos=28185] |
| 10AE | z(80000020): LDR R0, R0, 20H |
| 10AF | z(40090001): SUB R0, R0, 1H |
| 10B0 | z(E6000005): BLE 5 [10B6H] |
| 10B1 | a(80E00024): LDR R0, SP, 24H |
| 10B2 | a(40080003): ADD R0, R0, 3H |
| 10B3 | b(40020002): ASR R0, R0, 2H |
| 10B4 | c(40010002): LSL R0, R0, 2H |
| 10B5 | c(A0E00024): STR R0, SP, 24H |
| offset := offset + n * tp.sized;e off := offset;f obj0 := obj;g |
| 10B6 | d(80E00020): LDR R0, SP, 20H |
| 10B7 | d(D16E6C4C): BLEQ MT [trap=4, pos=28268] |
| 10B8 | e(81E0002C): LDR R1, SP, 2CH |
| 10B9 | e(80000020): LDR R0, R0, 20H |
| 10BA | e(001A0000): MUL R0, R1, R0 |
| 10BB | e(81E00024): LDR R1, SP, 24H |
| 10BC | e(00180000): ADD R0, R1, R0 |
| 10BD | e(A0E00024): STR R0, SP, 24H |
| 10BE | f(80E00024): LDR R0, SP, 24H |
| 10BF | f(A0E00028): STR R0, SP, 28H |
| 10C0 | g(80E00008): LDR R0, SP, 8H |
| 10C1 | g(A0E0000C): STR R0, SP, CH |
| WHILE obj0 # bot DOh obj0.typei := tp;j obj0.levk := 0;l off := off - tp.sizem;n obj0.valo := off;p obj0 := obj0.nextq ENDr ; |
| 10C2 | h(80E0000C): LDR R0, SP, CH |
| 10C3 | h(81E00014): LDR R1, SP, 14H |
| 10C4 | h(00090001): SUB R0, R0, R1 |
| 10C5 | h(E1000017): BEQ 23 [10DDH] |
| 10C6 | i(80E0000C): LDR R0, SP, CH |
| 10C7 | i(D16EAD4C): BLEQ MT [trap=4, pos=28333] |
| 10C8 | j(81E00020): LDR R1, SP, 20H |
| 10C9 | j(A1000010): STR R1, R0, 10H |
| 10CA | k(80E0000C): LDR R0, SP, CH |
| 10CB | k(D16EBD4C): BLEQ MT [trap=4, pos=28349] |
| 10CC | l(41000000): MOV R1, R0, 0H |
| 10CD | l(A1000004): STR R1, R0, 4H |
| 10CE | m(80E00020): LDR R0, SP, 20H |
| 10CF | m(D16ED84C): BLEQ MT [trap=4, pos=28376] |
| 10D0 | n(81E00028): LDR R1, SP, 28H |
| 10D1 | n(80000020): LDR R0, R0, 20H |
| 10D2 | n(00190000): SUB R0, R1, R0 |
| 10D3 | n(A0E00028): STR R0, SP, 28H |
| 10D4 | o(80E0000C): LDR R0, SP, CH |
| 10D5 | o(D16EE24C): BLEQ MT [trap=4, pos=28386] |
| 10D6 | p(81E00028): LDR R1, SP, 28H |
| 10D7 | p(A1000034): STR R1, R0, 34H |
| 10D8 | q(80E0000C): LDR R0, SP, CH |
| 10D9 | q(D16EFC4C): BLEQ MT [trap=4, pos=28412] |
| 10DA | r(80000008): LDR R0, R0, 8H |
| 10DB | r(A0E0000C): STR R0, SP, CH |
| 10DC | r(E7FFFFE5): B -27 [10C2H] |
| bot := obj;s |
| 10DD | s(80E00008): LDR R0, SP, 8H |
| 10DE | s(A0E00014): STR R0, SP, 14H |
| IF sym = ORS.semicolon THENt ORS.Get(sym)u ELSIFv symw # ORS.end THENx ORS.Mark(" ; or END")y ENDz |
| 10DF | t .FIXUP D |
| 10DF | t(8D000037): LDR SB, MT, MOD0 [ORP] |
| 10E0 | t(80D0001C): LDR R0, SB, 1CH [data] |
| 10E1 | t(40090034): SUB R0, R0, 34H |
| 10E2 | t(E9000004): BNE 4 [10E7H] |
| 10E3 | u .FIXUP D |
| 10E3 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 10E4 | u(40D8001C): ADD R0, SB, 1CH [data] |
| 10E5 | v .FIXUP P |
| 10E5 | v(F770A03A): BL MOD7 [ORS] PROC10 |
| 10E6 | w(E7000008): B 8 [10EFH] |
| 10E7 | x .FIXUP D |
| 10E7 | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 10E8 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 10E9 | x(40090035): SUB R0, R0, 35H |
| 10EA | x(E1000004): BEQ 4 [10EFH] |
| 10EB | y .FIXUP D |
| 10EB | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 10EC | y(40D80648): ADD R0, SB, 648H [" ; or END"] |
| 10ED | y(4100000A): MOV R1, R0, AH |
| 10EE | z .FIXUP P |
| 10EE | z(F7709009): BL MOD7 [ORS] PROC9 |
| ENDa ; |
| 10EF | a(E7FFFF4A): B -182 [103AH] |
| typ.formb := ORB.Record;c typ.dscd := bot;e typ.sizef := (offset + 3)g DIV 4 *h 4;i type := typ |
| 10F0 | b(80E0001C): LDR R0, SP, 1CH |
| 10F1 | b(D16F8D4C): BLEQ MT [trap=4, pos=28557] |
| 10F2 | c(4100000D): MOV R1, R0, DH |
| 10F3 | c(A1000000): STR R1, R0, 0H |
| 10F4 | d(80E0001C): LDR R0, SP, 1CH |
| 10F5 | d(D16FA44C): BLEQ MT [trap=4, pos=28580] |
| 10F6 | e(81E00014): LDR R1, SP, 14H |
| 10F7 | e(A1000014): STR R1, R0, 14H |
| 10F8 | f(80E0001C): LDR R0, SP, 1CH |
| 10F9 | f(D16FB54C): BLEQ MT [trap=4, pos=28597] |
| 10FA | g(81E00024): LDR R1, SP, 24H |
| 10FB | g(41180003): ADD R1, R1, 3H |
| 10FC | h(41120002): ASR R1, R1, 2H |
| 10FD | i(41110002): LSL R1, R1, 2H |
| 10FE | i(A1000020): STR R1, R0, 20H |
| ENDj RecordType; |
| 10FF | j(80E0001C): LDR R0, SP, 1CH |
| 1100 | j(81E00004): LDR R1, SP, 4H |
| 1101 | j(A0100000): STR R0, R1, 0H |
| 1102 | j(8FE00000): LDR LNK, SP, 0H |
| 1103 | j(4EE80030): ADD SP, SP, 30H |
| 1104 | j(C700000F): B LNK |
| |
| PROCEDURE FPSection(VAR adr: LONGINT; VAR nofpar: INTEGER); |
| VAR obj, first: ORB.Object; tp: ORB.Type; |
| parsize: LONGINT; cl: INTEGER; rdo: BOOLEAN; |
| BEGINk |
| 1105 | k(4EE90024): SUB SP, SP, 24H |
| 1106 | k(AFE00000): STR LNK, SP, 0H |
| 1107 | k(A0E00004): STR R0, SP, 4H |
| 1108 | k(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.var THENl ORS.Get(sym)m;n cl := ORB.Par ELSEo clp := ORB.Var ENDq ; |
| 1109 | l .FIXUP D |
| 1109 | l(8D00001E): LDR SB, MT, MOD0 [ORP] |
| 110A | l(80D0001C): LDR R0, SB, 1CH [data] |
| 110B | l(40090041): SUB R0, R0, 41H |
| 110C | l(E9000006): BNE 6 [1113H] |
| 110D | m .FIXUP D |
| 110D | m(8D000004): LDR SB, MT, MOD0 [ORP] |
| 110E | m(40D8001C): ADD R0, SB, 1CH [data] |
| 110F | n .FIXUP P |
| 110F | n(F770A021): BL MOD7 [ORS] PROC10 |
| 1110 | o(40000003): MOV R0, R0, 3H |
| 1111 | o(A0E0001C): STR R0, SP, 1CH |
| 1112 | p(E7000002): B 2 [1115H] |
| 1113 | q(40000002): MOV R0, R0, 2H |
| 1114 | q(A0E0001C): STR R0, SP, 1CH |
| IdentList(cl,r first)s;t FormalType(tp,u 0)v;w rdo := FALSE;x |
| 1115 | r(80E0001C): LDR R0, SP, 1CH |
| 1116 | s(41E80010): ADD R1, SP, 10H |
| 1117 | t(F7FFFDF5): BL -523 [0F0DH] |
| 1118 | u(40E80014): ADD R0, SP, 14H |
| 1119 | v(41000000): MOV R1, R0, 0H |
| 111A | w .FIXUP D |
| 111A | w(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 111B | w(82D0003C): LDR R2, SB, 3CH [data] |
| 111C | w(D171125C): BLEQ MT [trap=5, pos=28946] |
| 111D | w(D7000002): BL R2 |
| 111E | x(40000000): MOV R0, R0, 0H |
| 111F | x(B0E00020): STR R0, SP, 20H |
| IF (cl = ORB.Var)y & (ztp.forma >= ORB.Array)b THENc cl := ORB.Par;d rdo := TRUE ENDe ; |
| 1120 | y(80E0001C): LDR R0, SP, 1CH |
| 1121 | y(40090002): SUB R0, R0, 2H |
| 1122 | z(E9000009): BNE 9 [112CH] |
| 1123 | a(80E00014): LDR R0, SP, 14H |
| 1124 | a(D171414C): BLEQ MT [trap=4, pos=28993] |
| 1125 | b(80000000): LDR R0, R0, 0H |
| 1126 | b(4009000C): SUB R0, R0, CH |
| 1127 | c(E5000004): BLT 4 [112CH] |
| 1128 | d(40000003): MOV R0, R0, 3H |
| 1129 | d(A0E0001C): STR R0, SP, 1CH |
| 112A | e(40000001): MOV R0, R0, 1H |
| 112B | e(B0E00020): STR R0, SP, 20H |
| IF (tp.formf = ORB.Array)g & (htp.leni < 0)j OR (ktp.forml = ORB.Record)m THENn |
| 112C | f(80E00014): LDR R0, SP, 14H |
| 112D | f(D171854C): BLEQ MT [trap=4, pos=29061] |
| 112E | g(80000000): LDR R0, R0, 0H |
| 112F | g(4009000C): SUB R0, R0, CH |
| 1130 | h(E9000005): BNE 5 [1136H] |
| 1131 | i(80E00014): LDR R0, SP, 14H |
| 1132 | i(D1719C4C): BLEQ MT [trap=4, pos=29084] |
| 1133 | j(80000010): LDR R0, R0, 10H |
| 1134 | j(40090000): SUB R0, R0, 0H |
| 1135 | k(E5000005): BLT 5 [113BH] |
| 1136 | l(80E00014): LDR R0, SP, 14H |
| 1137 | l(D171AD4C): BLEQ MT [trap=4, pos=29101] |
| 1138 | m(80000000): LDR R0, R0, 0H |
| 1139 | m(4009000D): SUB R0, R0, DH |
| 113A | n(E9000003): BNE 3 [113EH] |
| parsize := 2*ORG.WordSize (*open array or record, needs second word for length or type tag*) |
| ELSEo parsizep := ORG.WordSize |
| 113B | o(40000008): MOV R0, R0, 8H |
| 113C | o(A0E00018): STR R0, SP, 18H |
| 113D | p(E7000002): B 2 [1140H] |
| ENDq ; |
| 113E | q(40000004): MOV R0, R0, 4H |
| 113F | q(A0E00018): STR R0, SP, 18H |
| obj := first;r |
| 1140 | r(80E00010): LDR R0, SP, 10H |
| 1141 | r(A0E0000C): STR R0, SP, CH |
| WHILE obj # NIL DOs |
| 1142 | s(80E0000C): LDR R0, SP, CH |
| 1143 | s(E1000025): BEQ 37 [1169H] |
| INC(nofpar);t obj.classu := cl;v obj.typew := tp;x obj.rdoy := rdo;z obj.leva := level;b obj.valc := adr;d |
| 1144 | t(80E00008): LDR R0, SP, 8H |
| 1145 | t(81000000): LDR R1, R0, 0H |
| 1146 | t(41180001): ADD R1, R1, 1H |
| 1147 | t(A1000000): STR R1, R0, 0H |
| 1148 | u(80E0000C): LDR R0, SP, CH |
| 1149 | u(D172954C): BLEQ MT [trap=4, pos=29333] |
| 114A | v(81E0001C): LDR R1, SP, 1CH |
| 114B | v(B1000000): STR R1, R0, 0H |
| 114C | w(80E0000C): LDR R0, SP, CH |
| 114D | w(D172A54C): BLEQ MT [trap=4, pos=29349] |
| 114E | x(81E00014): LDR R1, SP, 14H |
| 114F | x(A1000010): STR R1, R0, 10H |
| 1150 | y(80E0000C): LDR R0, SP, CH |
| 1151 | y(D172B44C): BLEQ MT [trap=4, pos=29364] |
| 1152 | z(91E00020): LDR R1, SP, 20H |
| 1153 | z(B1000003): STR R1, R0, 3H |
| 1154 | a(80E0000C): LDR R0, SP, CH |
| 1155 | a(D172C44C): BLEQ MT [trap=4, pos=29380] |
| 1156 | b .FIXUP D |
| 1156 | b(8D00003C): LDR SB, MT, MOD0 [ORP] |
| 1157 | b(81D00024): LDR R1, SB, 24H [data] |
| 1158 | b(A1000004): STR R1, R0, 4H |
| 1159 | c(80E0000C): LDR R0, SP, CH |
| 115A | c(D172D64C): BLEQ MT [trap=4, pos=29398] |
| 115B | d(81E00004): LDR R1, SP, 4H |
| 115C | d(81100000): LDR R1, R1, 0H |
| 115D | d(A1000034): STR R1, R0, 34H |
| adr := adr + parsize;e obj := obj.nextf |
| 115E | e(80E00004): LDR R0, SP, 4H |
| 115F | e(80000000): LDR R0, R0, 0H |
| 1160 | e(81E00018): LDR R1, SP, 18H |
| 1161 | e(00080001): ADD R0, R0, R1 |
| 1162 | e(81E00004): LDR R1, SP, 4H |
| 1163 | e(A0100000): STR R0, R1, 0H |
| 1164 | f(80E0000C): LDR R0, SP, CH |
| 1165 | f(D1730A4C): BLEQ MT [trap=4, pos=29450] |
| ENDg ; |
| 1166 | g(80000008): LDR R0, R0, 8H |
| 1167 | g(A0E0000C): STR R0, SP, CH |
| 1168 | g(E7FFFFD9): B -39 [1142H] |
| IF adr >= 52 THENh ORS.Mark("too many parameters")i ENDj |
| 1169 | h(80E00004): LDR R0, SP, 4H |
| 116A | h(80000000): LDR R0, R0, 0H |
| 116B | h(40090034): SUB R0, R0, 34H |
| 116C | h(E5000004): BLT 4 [1171H] |
| 116D | i .FIXUP D |
| 116D | i(8D000017): LDR SB, MT, MOD0 [ORP] |
| 116E | i(40D80654): ADD R0, SB, 654H ["too many parameters"] |
| 116F | i(41000014): MOV R1, R0, 14H |
| 1170 | j .FIXUP P |
| 1170 | j(F7709061): BL MOD7 [ORS] PROC9 |
| ENDk FPSection; |
| 1171 | k(8FE00000): LDR LNK, SP, 0H |
| 1172 | k(4EE80024): ADD SP, SP, 24H |
| 1173 | k(C700000F): B LNK |
| |
| PROCEDURE ProcedureType(ptype: ORB.Type; VAR parblksize: LONGINT); |
| VAR obj: ORB.Object; size: LONGINT; nofpar: INTEGER; |
| BEGINl ptype.basem := ORB.noType;n size := parblksize;o nofpar := 0;p ptype.dscq := NIL;r |
| 1174 | l(4EE90018): SUB SP, SP, 18H |
| 1175 | l(AFE00000): STR LNK, SP, 0H |
| 1176 | l(A0E00004): STR R0, SP, 4H |
| 1177 | l(A1E00008): STR R1, SP, 8H |
| 1178 | m(80E00004): LDR R0, SP, 4H |
| 1179 | m(D173F14C): BLEQ MT [trap=4, pos=29681] |
| 117A | n .FIXUP D |
| 117A | n(8D80000D): LDR SB, MT, MOD8 [ORB] |
| 117B | n(81D0000D): LDR R1, SB, VAR13 |
| 117C | n(A100001C): STR R1, R0, 1CH |
| 117D | o(80E00008): LDR R0, SP, 8H |
| 117E | o(80000000): LDR R0, R0, 0H |
| 117F | o(A0E00010): STR R0, SP, 10H |
| 1180 | p(40000000): MOV R0, R0, 0H |
| 1181 | p(A0E00014): STR R0, SP, 14H |
| 1182 | q(80E00004): LDR R0, SP, 4H |
| 1183 | q(D1742B4C): BLEQ MT [trap=4, pos=29739] |
| 1184 | r(41000000): MOV R1, R0, 0H |
| 1185 | r(A1000014): STR R1, R0, 14H |
| IF sym = ORS.lparen THENs |
| 1186 | s .FIXUP D |
| 1186 | s(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 1187 | s(80D0001C): LDR R0, SB, 1CH [data] |
| 1188 | s(4009001C): SUB R0, R0, 1CH |
| 1189 | s(E9000048): BNE 72 [11D2H] |
| ORS.Get(sym)t;u |
| 118A | t .FIXUP D |
| 118A | t(8D000004): LDR SB, MT, MOD0 [ORP] |
| 118B | t(40D8001C): ADD R0, SB, 1CH [data] |
| 118C | u .FIXUP P |
| 118C | u(F770A01C): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.rparen THENv ORS.Get(sym)w |
| 118D | v .FIXUP D |
| 118D | v(8D000003): LDR SB, MT, MOD0 [ORP] |
| 118E | v(80D0001C): LDR R0, SB, 1CH [data] |
| 118F | v(4009002C): SUB R0, R0, 2CH |
| 1190 | v(E9000004): BNE 4 [1195H] |
| 1191 | w .FIXUP D |
| 1191 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1192 | w(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEx FPSectiony(size,z nofpar)a;b |
| 1193 | x .FIXUP P |
| 1193 | x(F770A007): BL MOD7 [ORS] PROC10 |
| 1194 | y(E7000013): B 19 [11A8H] |
| 1195 | z(40E80010): ADD R0, SP, 10H |
| 1196 | a(41E80014): ADD R1, SP, 14H |
| 1197 | b(F7FFFF6D): BL -147 [1105H] |
| WHILE sym = ORS.semicolon DOc ORS.Get(sym)d;e FPSection(size,f nofpar)g ENDh ; |
| 1198 | c .FIXUP D |
| 1198 | c(8D000007): LDR SB, MT, MOD0 [ORP] |
| 1199 | c(80D0001C): LDR R0, SB, 1CH [data] |
| 119A | c(40090034): SUB R0, R0, 34H |
| 119B | c(E9000007): BNE 7 [11A3H] |
| 119C | d .FIXUP D |
| 119C | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 119D | d(40D8001C): ADD R0, SB, 1CH [data] |
| 119E | e .FIXUP P |
| 119E | e(F770A00B): BL MOD7 [ORS] PROC10 |
| 119F | f(40E80010): ADD R0, SP, 10H |
| 11A0 | g(41E80014): ADD R1, SP, 14H |
| 11A1 | h(F7FFFF63): BL -157 [1105H] |
| 11A2 | h(E7FFFFF5): B -11 [1198H] |
| Check(ORS.rparen,i "no )")j |
| 11A3 | i(4000002C): MOV R0, R0, 2CH |
| 11A4 | j .FIXUP D |
| 11A4 | j(8D000008): LDR SB, MT, MOD0 [ORP] |
| 11A5 | j(41D80668): ADD R1, SB, 668H ["no )"] |
| 11A6 | j(42000005): MOV R2, R0, 5H |
| ENDk ; |
| 11A7 | k(F7FFEE58): BL -4520 [0000H] |
| IF sym = ORS.colon THENl (*function*) |
| 11A8 | l .FIXUP D |
| 11A8 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 11A9 | l(80D0001C): LDR R0, SB, 1CH [data] |
| 11AA | l(40090029): SUB R0, R0, 29H |
| 11AB | l(E9000026): BNE 38 [11D2H] |
| ORS.Get(sym)m;n |
| 11AC | m .FIXUP D |
| 11AC | m(8D000004): LDR SB, MT, MOD0 [ORP] |
| 11AD | m(40D8001C): ADD R0, SB, 1CH [data] |
| 11AE | n .FIXUP P |
| 11AE | n(F770A010): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENo |
| 11AF | o .FIXUP D |
| 11AF | o(8D000003): LDR SB, MT, MOD0 [ORP] |
| 11B0 | o(80D0001C): LDR R0, SB, 1CH [data] |
| 11B1 | o(4009001F): SUB R0, R0, 1FH |
| 11B2 | o(E900001B): BNE 27 [11CEH] |
| qualident(obj)p;q ptype.baser := obj.types;t |
| 11B3 | p(40E8000C): ADD R0, SP, CH |
| 11B4 | q(F7FFEE5F): BL -4513 [0014H] |
| 11B5 | r(80E00004): LDR R0, SP, 4H |
| 11B6 | r(D175BA4C): BLEQ MT [trap=4, pos=30138] |
| 11B7 | s(81E0000C): LDR R1, SP, CH |
| 11B8 | s(D175C64C): BLEQ MT [trap=4, pos=30150] |
| 11B9 | t(81100010): LDR R1, R1, 10H |
| 11BA | t(A100001C): STR R1, R0, 1CH |
| IF ~((obj.classu = ORB.Typ)v & (wobj.typex.formy IN {ORB.Byte .. ORB.Pointer, ORB.Proc})z) THENa |
| 11BB | u(80E0000C): LDR R0, SP, CH |
| 11BC | u(D175E14C): BLEQ MT [trap=4, pos=30177] |
| 11BD | v(90000000): LDR R0, R0, 0H |
| 11BE | v(40090005): SUB R0, R0, 5H |
| 11BF | w(E9000009): BNE 9 [11C9H] |
| 11C0 | x(80E0000C): LDR R0, SP, CH |
| 11C1 | x(D175F84C): BLEQ MT [trap=4, pos=30200] |
| 11C2 | y(80000010): LDR R0, R0, 10H |
| 11C3 | y(D175FD4C): BLEQ MT [trap=4, pos=30205] |
| 11C4 | z(410004FE): MOV R1, R0, 4FEH |
| 11C5 | z(80000000): LDR R0, R0, 0H |
| 11C6 | z(40080001): ADD R0, R0, 1H |
| 11C7 | z(01130000): ROR R1, R1, R0 |
| 11C8 | a(E0000004): BMI 4 [11CDH] |
| ORS.Mark("illegal function type")b |
| 11C9 | b .FIXUP D |
| 11C9 | b(8D00001A): LDR SB, MT, MOD0 [ORP] |
| 11CA | b(40D80670): ADD R0, SB, 670H ["illegal function type"] |
| 11CB | b(41000016): MOV R1, R0, 16H |
| ENDc |
| 11CC | c .FIXUP P |
| 11CC | c(F770901E): BL MOD7 [ORS] PROC9 |
| ELSE ORSd.Mark("type identifier expected")e |
| 11CD | d(E7000004): B 4 [11D2H] |
| 11CE | e .FIXUP D |
| 11CE | e(8D000005): LDR SB, MT, MOD0 [ORP] |
| 11CF | e(40D80688): ADD R0, SB, 688H ["type identifier expected"] |
| 11D0 | e(41000019): MOV R1, R0, 19H |
| ENDf |
| 11D1 | f .FIXUP P |
| 11D1 | f(F7709005): BL MOD7 [ORS] PROC9 |
| END |
| END ; |
| ptype.nofparg := nofpar;h parblksize := size |
| 11D2 | g(80E00004): LDR R0, SP, 4H |
| 11D3 | g(D176CA4C): BLEQ MT [trap=4, pos=30410] |
| 11D4 | h(81E00014): LDR R1, SP, 14H |
| 11D5 | h(A100000C): STR R1, R0, CH |
| ENDi ProcedureType; |
| 11D6 | i(80E00010): LDR R0, SP, 10H |
| 11D7 | i(81E00008): LDR R1, SP, 8H |
| 11D8 | i(A0100000): STR R0, R1, 0H |
| 11D9 | i(8FE00000): LDR LNK, SP, 0H |
| 11DA | i(4EE80018): ADD SP, SP, 18H |
| 11DB | i(C700000F): B LNK |
| |
| PROCEDURE FormalType0(VAR typ: ORB.Type; dim: INTEGER); |
| VAR obj: ORB.Object; dmy: LONGINT; |
| BEGINj |
| 11DC | j(4EE90014): SUB SP, SP, 14H |
| 11DD | j(AFE00000): STR LNK, SP, 0H |
| 11DE | j(A0E00004): STR R0, SP, 4H |
| 11DF | j(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.ident THENk |
| 11E0 | k .FIXUP D |
| 11E0 | k(8D000012): LDR SB, MT, MOD0 [ORP] |
| 11E1 | k(80D0001C): LDR R0, SB, 1CH [data] |
| 11E2 | k(4009001F): SUB R0, R0, 1FH |
| 11E3 | k(E9000016): BNE 22 [11FAH] |
| qualident(obj)l;m |
| 11E4 | l(40E8000C): ADD R0, SP, CH |
| 11E5 | m(F7FFEE2E): BL -4562 [0014H] |
| IF obj.classn = ORB.Typ THENo typ := obj.typep ELSEq ORSr.Mark("not a type")s;t typ := ORB.intType ENDu |
| 11E6 | n(80E0000C): LDR R0, SP, CH |
| 11E7 | n(D177AC4C): BLEQ MT [trap=4, pos=30636] |
| 11E8 | o(90000000): LDR R0, R0, 0H |
| 11E9 | o(40090005): SUB R0, R0, 5H |
| 11EA | o(E9000006): BNE 6 [11F1H] |
| 11EB | p(80E0000C): LDR R0, SP, CH |
| 11EC | p(D177CB4C): BLEQ MT [trap=4, pos=30667] |
| 11ED | q(80000010): LDR R0, R0, 10H |
| 11EE | q(81E00004): LDR R1, SP, 4H |
| 11EF | q(A0100000): STR R0, R1, 0H |
| 11F0 | r(E7000008): B 8 [11F9H] |
| 11F1 | s .FIXUP D |
| 11F1 | s(8D000011): LDR SB, MT, MOD0 [ORP] |
| 11F2 | s(40D806A4): ADD R0, SB, 6A4H ["not a type"] |
| 11F3 | s(4100000B): MOV R1, R0, BH |
| 11F4 | t .FIXUP P |
| 11F4 | t(F7709023): BL MOD7 [ORS] PROC9 |
| 11F5 | u .FIXUP D |
| 11F5 | u(8D800004): LDR SB, MT, MOD8 [ORB] |
| 11F6 | u(80D00009): LDR R0, SB, VAR9 |
| 11F7 | u(81E00004): LDR R1, SP, 4H |
| 11F8 | u(A0100000): STR R0, R1, 0H |
| ELSIF symv = ORS.array THENw |
| 11F9 | v(E700005F): B 95 [1259H] |
| 11FA | w .FIXUP D |
| 11FA | w(8D000005): LDR SB, MT, MOD0 [ORP] |
| 11FB | w(80D0001C): LDR R0, SB, 1CH [data] |
| 11FC | w(4009003C): SUB R0, R0, 3CH |
| 11FD | w(E900002D): BNE 45 [122BH] |
| ORS.Get(sym)x;y Check(ORS.of,z "OF ?")a;b |
| 11FE | x .FIXUP D |
| 11FE | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 11FF | x(40D8001C): ADD R0, SB, 1CH [data] |
| 1200 | y .FIXUP P |
| 1200 | y(F770A00C): BL MOD7 [ORS] PROC10 |
| 1201 | z(40000030): MOV R0, R0, 30H |
| 1202 | a .FIXUP D |
| 1202 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1203 | a(41D806B0): ADD R1, SB, 6B0H ["OF ?"] |
| 1204 | a(42000005): MOV R2, R0, 5H |
| 1205 | b(F7FFEDFA): BL -4614 [0000H] |
| IF dim >= 1 THENc ORS.Mark("multi-dimensional open arrays not implemented")d ENDe ; |
| 1206 | c(80E00008): LDR R0, SP, 8H |
| 1207 | c(40090001): SUB R0, R0, 1H |
| 1208 | c(E5000004): BLT 4 [120DH] |
| 1209 | d .FIXUP D |
| 1209 | d(8D000007): LDR SB, MT, MOD0 [ORP] |
| 120A | d(40D806B8): ADD R0, SB, 6B8H ["multi-dimensional open arrays not implemented"] |
| 120B | d(4100002E): MOV R1, R0, 2EH |
| 120C | e .FIXUP P |
| 120C | e(F770900C): BL MOD7 [ORS] PROC9 |
| NEW(typ);f typ.formg := ORB.Array;h typ.leni := -1;j typ.sizek := 2*ORG.WordSize;l |
| 120D | f(80E00004): LDR R0, SP, 4H |
| 120E | f .FIXUP D |
| 120E | f(8D800005): LDR SB, MT, MOD8 [ORB] |
| 120F | f(41D80003): ADD R1, SB, VAR3 |
| 1210 | f(D778B00C): BL MT [trap=0, pos=30896] |
| 1211 | g(80E00004): LDR R0, SP, 4H |
| 1212 | g(80000000): LDR R0, R0, 0H |
| 1213 | g(D178B94C): BLEQ MT [trap=4, pos=30905] |
| 1214 | h(4100000C): MOV R1, R0, CH |
| 1215 | h(A1000000): STR R1, R0, 0H |
| 1216 | i(80E00004): LDR R0, SP, 4H |
| 1217 | i(80000000): LDR R0, R0, 0H |
| 1218 | i(D178CF4C): BLEQ MT [trap=4, pos=30927] |
| 1219 | j(5100FFFF): MOV R1, R0, FFFFFFFFH |
| 121A | j(A1000010): STR R1, R0, 10H |
| 121B | k(80E00004): LDR R0, SP, 4H |
| 121C | k(80000000): LDR R0, R0, 0H |
| 121D | k(D178DF4C): BLEQ MT [trap=4, pos=30943] |
| 121E | l(41000008): MOV R1, R0, 8H |
| 121F | l(A1000020): STR R1, R0, 20H |
| FormalType(typ.basem,n dim+1)o |
| 1220 | m(80E00004): LDR R0, SP, 4H |
| 1221 | m(80000000): LDR R0, R0, 0H |
| 1222 | m(D1790D4C): BLEQ MT [trap=4, pos=30989] |
| 1223 | n(4008001C): ADD R0, R0, 1CH |
| 1224 | o(81E00008): LDR R1, SP, 8H |
| 1225 | o(41180001): ADD R1, R1, 1H |
| ELSIFp symq = ORS.procedure THENr |
| 1226 | p .FIXUP D |
| 1226 | p(8D000018): LDR SB, MT, MOD0 [ORP] |
| 1227 | p(82D0003C): LDR R2, SB, 3CH [data] |
| 1228 | p(D1791F5C): BLEQ MT [trap=5, pos=31007] |
| 1229 | p(D7000002): BL R2 |
| 122A | q(E700002E): B 46 [1259H] |
| 122B | r .FIXUP D |
| 122B | r(8D000005): LDR SB, MT, MOD0 [ORP] |
| 122C | r(80D0001C): LDR R0, SB, 1CH [data] |
| 122D | r(40090042): SUB R0, R0, 42H |
| 122E | r(E9000022): BNE 34 [1251H] |
| ORS.Get(sym)s;t ORB.OpenScope;u |
| 122F | s .FIXUP D |
| 122F | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1230 | s(40D8001C): ADD R0, SB, 1CH [data] |
| 1231 | t .FIXUP P |
| 1231 | t(F770A025): BL MOD7 [ORS] PROC10 |
| 1232 | u .FIXUP P |
| 1232 | u(F7813001): BL MOD8 [ORB] PROC19 |
| NEW(typ);v typ.formw := ORB.Proc;x typ.sizey := ORG.WordSize;z dmy := 0;a ProcedureType(typ,b dmy)c;d |
| 1233 | v(80E00004): LDR R0, SP, 4H |
| 1234 | v .FIXUP D |
| 1234 | v(8D800005): LDR SB, MT, MOD8 [ORB] |
| 1235 | v(41D80003): ADD R1, SB, VAR3 |
| 1236 | v(D7796B0C): BL MT [trap=0, pos=31083] |
| 1237 | w(80E00004): LDR R0, SP, 4H |
| 1238 | w(80000000): LDR R0, R0, 0H |
| 1239 | w(D179744C): BLEQ MT [trap=4, pos=31092] |
| 123A | x(4100000A): MOV R1, R0, AH |
| 123B | x(A1000000): STR R1, R0, 0H |
| 123C | y(80E00004): LDR R0, SP, 4H |
| 123D | y(80000000): LDR R0, R0, 0H |
| 123E | y(D1798A4C): BLEQ MT [trap=4, pos=31114] |
| 123F | z(41000004): MOV R1, R0, 4H |
| 1240 | z(A1000020): STR R1, R0, 20H |
| 1241 | a(40000000): MOV R0, R0, 0H |
| 1242 | a(A0E00010): STR R0, SP, 10H |
| 1243 | b(80E00004): LDR R0, SP, 4H |
| 1244 | b(80000000): LDR R0, R0, 0H |
| 1245 | c(41E80010): ADD R1, SP, 10H |
| 1246 | d(F7FFFF2D): BL -211 [1174H] |
| typ.dsce := ORB.topScope.nextf;g ORB.CloseScope |
| 1247 | e(80E00004): LDR R0, SP, 4H |
| 1248 | e(80000000): LDR R0, R0, 0H |
| 1249 | e(D179CC4C): BLEQ MT [trap=4, pos=31180] |
| 124A | f .FIXUP D |
| 124A | f(8D800016): LDR SB, MT, MOD8 [ORB] |
| 124B | f(81D00004): LDR R1, SB, VAR4 |
| 124C | f(D179E14C): BLEQ MT [trap=4, pos=31201] |
| 124D | g(81100008): LDR R1, R1, 8H |
| 124E | g(A1000014): STR R1, R0, 14H |
| ELSEh ORSi.Mark("identifier expected")j;k typ := ORB.noType |
| 124F | h .FIXUP P |
| 124F | h(F781401D): BL MOD8 [ORB] PROC20 |
| 1250 | i(E7000008): B 8 [1259H] |
| 1251 | j .FIXUP D |
| 1251 | j(8D000007): LDR SB, MT, MOD0 [ORP] |
| 1252 | j(40D806E8): ADD R0, SB, 6E8H ["identifier expected"] |
| 1253 | j(41000014): MOV R1, R0, 14H |
| 1254 | k .FIXUP P |
| 1254 | k(F7709005): BL MOD7 [ORS] PROC9 |
| ENDl |
| 1255 | l .FIXUP D |
| 1255 | l(8D800004): LDR SB, MT, MOD8 [ORB] |
| 1256 | l(80D0000D): LDR R0, SB, VAR13 |
| 1257 | l(81E00004): LDR R1, SP, 4H |
| 1258 | l(A0100000): STR R0, R1, 0H |
| ENDm FormalType0; |
| 1259 | m(8FE00000): LDR LNK, SP, 0H |
| 125A | m(4EE80014): ADD SP, SP, 14H |
| 125B | m(C700000F): B LNK |
| |
| PROCEDURE CheckRecLevel(lev: INTEGER); |
| BEGINn |
| 125C | n(4EE90008): SUB SP, SP, 8H |
| 125D | n(AFE00000): STR LNK, SP, 0H |
| 125E | n(A0E00004): STR R0, SP, 4H |
| IF lev # 0 THENo ORS.Mark("ptr base must be global")p ENDq |
| 125F | o(80E00004): LDR R0, SP, 4H |
| 1260 | o(E1000004): BEQ 4 [1265H] |
| 1261 | p .FIXUP D |
| 1261 | p(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 1262 | p(40D806FC): ADD R0, SB, 6FCH ["ptr base must be global"] |
| 1263 | p(41000018): MOV R1, R0, 18H |
| 1264 | q .FIXUP P |
| 1264 | q(F7709010): BL MOD7 [ORS] PROC9 |
| ENDr CheckRecLevel; |
| 1265 | r(8FE00000): LDR LNK, SP, 0H |
| 1266 | r(4EE80008): ADD SP, SP, 8H |
| 1267 | r(C700000F): B LNK |
| |
| PROCEDURE Type0(VAR type: ORB.Type); |
| VAR dmy: LONGINT; obj: ORB.Object; ptbase: PtrBase; |
| BEGINs type := ORB.intType;t (*sync*) |
| 1268 | s(4EE90014): SUB SP, SP, 14H |
| 1269 | s(AFE00000): STR LNK, SP, 0H |
| 126A | s(A0E00004): STR R0, SP, 4H |
| 126B | t .FIXUP D |
| 126B | t(8D80000A): LDR SB, MT, MOD8 [ORB] |
| 126C | t(80D00009): LDR R0, SB, VAR9 |
| 126D | t(81E00004): LDR R1, SP, 4H |
| 126E | t(A0100000): STR R0, R1, 0H |
| IF (sym # ORS.ident)u & (vsym < ORS.array)w THENx ORS.Mark("not a type")y;z |
| 126F | u .FIXUP D |
| 126F | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1270 | u(80D0001C): LDR R0, SB, 1CH [data] |
| 1271 | u(4009001F): SUB R0, R0, 1FH |
| 1272 | v(E1000013): BEQ 19 [1286H] |
| 1273 | w .FIXUP D |
| 1273 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1274 | w(80D0001C): LDR R0, SB, 1CH [data] |
| 1275 | w(4009003C): SUB R0, R0, 3CH |
| 1276 | x(ED00000F): BGE 15 [1286H] |
| 1277 | y .FIXUP D |
| 1277 | y(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1278 | y(40D80714): ADD R0, SB, 714H ["not a type"] |
| 1279 | y(4100000B): MOV R1, R0, BH |
| 127A | z .FIXUP P |
| 127A | z(F7709016): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)a UNTILb (sym = ORS.ident)c OR (dsym >= ORS.array)e |
| 127B | a .FIXUP D |
| 127B | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 127C | a(40D8001C): ADD R0, SB, 1CH [data] |
| 127D | b .FIXUP P |
| 127D | b(F770A003): BL MOD7 [ORS] PROC10 |
| 127E | c .FIXUP D |
| 127E | c(8D000003): LDR SB, MT, MOD0 [ORP] |
| 127F | c(80D0001C): LDR R0, SB, 1CH [data] |
| 1280 | c(4009001F): SUB R0, R0, 1FH |
| 1281 | d(E1000004): BEQ 4 [1286H] |
| 1282 | e .FIXUP D |
| 1282 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1283 | e(80D0001C): LDR R0, SB, 1CH [data] |
| 1284 | e(4009003C): SUB R0, R0, 3CH |
| ENDf ; |
| 1285 | f(E5FFFFF5): BLT -11 [127BH] |
| IF sym = ORS.ident THENg |
| 1286 | g .FIXUP D |
| 1286 | g(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1287 | g(80D0001C): LDR R0, SB, 1CH [data] |
| 1288 | g(4009001F): SUB R0, R0, 1FH |
| 1289 | g(E900001D): BNE 29 [12A7H] |
| qualident(obj)h;i |
| 128A | h(40E8000C): ADD R0, SP, CH |
| 128B | i(F7FFED88): BL -4728 [0014H] |
| IF obj.classj = ORB.Typ THENk |
| 128C | j(80E0000C): LDR R0, SP, CH |
| 128D | j(D17C324C): BLEQ MT [trap=4, pos=31794] |
| 128E | k(90000000): LDR R0, R0, 0H |
| 128F | k(40090005): SUB R0, R0, 5H |
| 1290 | k(E9000011): BNE 17 [12A2H] |
| IF (obj.typel # NIL)m & (nobj.typeo.formp # ORB.NoTyp)q THENr type := obj.types ENDt |
| 1291 | l(80E0000C): LDR R0, SP, CH |
| 1292 | l(D17C564C): BLEQ MT [trap=4, pos=31830] |
| 1293 | m(80000010): LDR R0, R0, 10H |
| 1294 | n(E100000C): BEQ 12 [12A1H] |
| 1295 | o(80E0000C): LDR R0, SP, CH |
| 1296 | o(D17C694C): BLEQ MT [trap=4, pos=31849] |
| 1297 | p(80000010): LDR R0, R0, 10H |
| 1298 | p(D17C6E4C): BLEQ MT [trap=4, pos=31854] |
| 1299 | q(80000000): LDR R0, R0, 0H |
| 129A | q(40090009): SUB R0, R0, 9H |
| 129B | r(E1000005): BEQ 5 [12A1H] |
| 129C | s(80E0000C): LDR R0, SP, CH |
| 129D | s(D17C914C): BLEQ MT [trap=4, pos=31889] |
| 129E | t(80000010): LDR R0, R0, 10H |
| 129F | t(81E00004): LDR R1, SP, 4H |
| 12A0 | t(A0100000): STR R0, R1, 0H |
| ELSE ORSu.Mark("not a type or undefined")v |
| 12A1 | u(E7000004): B 4 [12A6H] |
| 12A2 | v .FIXUP D |
| 12A2 | v(8D00001C): LDR SB, MT, MOD0 [ORP] |
| 12A3 | v(40D80720): ADD R0, SB, 720H ["not a type or undefined"] |
| 12A4 | v(41000018): MOV R1, R0, 18H |
| ENDw |
| 12A5 | w .FIXUP P |
| 12A5 | w(F7709028): BL MOD7 [ORS] PROC9 |
| ELSIF symx = ORS.array THENy ORS.Get(sym)z;a ArrayType(type)b |
| 12A6 | x(E70000CD): B 205 [1374H] |
| 12A7 | y .FIXUP D |
| 12A7 | y(8D000005): LDR SB, MT, MOD0 [ORP] |
| 12A8 | y(80D0001C): LDR R0, SB, 1CH [data] |
| 12A9 | y(4009003C): SUB R0, R0, 3CH |
| 12AA | y(E9000006): BNE 6 [12B1H] |
| 12AB | z .FIXUP D |
| 12AB | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 12AC | z(40D8001C): ADD R0, SB, 1CH [data] |
| 12AD | a .FIXUP P |
| 12AD | a(F770A008): BL MOD7 [ORS] PROC10 |
| 12AE | b(80E00004): LDR R0, SP, 4H |
| ELSIFc symd = ORS.record THENe |
| 12AF | c(F7FFFCA2): BL -862 [0F52H] |
| 12B0 | d(E70000C3): B 195 [1374H] |
| 12B1 | e .FIXUP D |
| 12B1 | e(8D000006): LDR SB, MT, MOD0 [ORP] |
| 12B2 | e(80D0001C): LDR R0, SB, 1CH [data] |
| 12B3 | e(4009003D): SUB R0, R0, 3DH |
| 12B4 | e(E900000B): BNE 11 [12C0H] |
| ORS.Get(sym)f;g RecordType(type)h;i Check(ORS.end,j "no END")k |
| 12B5 | f .FIXUP D |
| 12B5 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 12B6 | f(40D8001C): ADD R0, SB, 1CH [data] |
| 12B7 | g .FIXUP P |
| 12B7 | g(F770A00A): BL MOD7 [ORS] PROC10 |
| 12B8 | h(80E00004): LDR R0, SP, 4H |
| 12B9 | i(F7FFFD0F): BL -753 [0FC9H] |
| 12BA | j(40000035): MOV R0, R0, 35H |
| 12BB | k .FIXUP D |
| 12BB | k(8D000006): LDR SB, MT, MOD0 [ORP] |
| 12BC | k(41D80738): ADD R1, SB, 738H ["no END"] |
| 12BD | k(42000007): MOV R2, R0, 7H |
| ELSIFl symm = ORS.pointer THENn |
| 12BE | l(F7FFED41): BL -4799 [0000H] |
| 12BF | m(E70000B4): B 180 [1374H] |
| 12C0 | n .FIXUP D |
| 12C0 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
| 12C1 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 12C2 | n(4009003E): SUB R0, R0, 3EH |
| 12C3 | n(E9000086): BNE 134 [134AH] |
| ORS.Get(sym)o;p Check(ORS.to,q "no TO")r;s |
| 12C4 | o .FIXUP D |
| 12C4 | o(8D000004): LDR SB, MT, MOD0 [ORP] |
| 12C5 | o(40D8001C): ADD R0, SB, 1CH [data] |
| 12C6 | p .FIXUP P |
| 12C6 | p(F770A00F): BL MOD7 [ORS] PROC10 |
| 12C7 | q(40000032): MOV R0, R0, 32H |
| 12C8 | r .FIXUP D |
| 12C8 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 12C9 | r(41D80740): ADD R1, SB, 740H ["no TO"] |
| 12CA | r(42000006): MOV R2, R0, 6H |
| 12CB | s(F7FFED34): BL -4812 [0000H] |
| NEW(type);t type.formu := ORB.Pointer;v type.sizew := ORG.WordSize;x type.basey := ORB.intType;z |
| 12CC | t(80E00004): LDR R0, SP, 4H |
| 12CD | t .FIXUP D |
| 12CD | t(8D800005): LDR SB, MT, MOD8 [ORB] |
| 12CE | t(41D80003): ADD R1, SB, VAR3 |
| 12CF | t(D77DC80C): BL MT [trap=0, pos=32200] |
| 12D0 | u(80E00004): LDR R0, SP, 4H |
| 12D1 | u(80000000): LDR R0, R0, 0H |
| 12D2 | u(D17DD34C): BLEQ MT [trap=4, pos=32211] |
| 12D3 | v(41000007): MOV R1, R0, 7H |
| 12D4 | v(A1000000): STR R1, R0, 0H |
| 12D5 | w(80E00004): LDR R0, SP, 4H |
| 12D6 | w(80000000): LDR R0, R0, 0H |
| 12D7 | w(D17DED4C): BLEQ MT [trap=4, pos=32237] |
| 12D8 | x(41000004): MOV R1, R0, 4H |
| 12D9 | x(A1000020): STR R1, R0, 20H |
| 12DA | y(80E00004): LDR R0, SP, 4H |
| 12DB | y(80000000): LDR R0, R0, 0H |
| 12DC | y(D17E084C): BLEQ MT [trap=4, pos=32264] |
| 12DD | z .FIXUP D |
| 12DD | z(8D800010): LDR SB, MT, MOD8 [ORB] |
| 12DE | z(81D00009): LDR R1, SB, VAR9 |
| 12DF | z(A100001C): STR R1, R0, 1CH |
| IF sym = ORS.ident THENa |
| 12E0 | a .FIXUP D |
| 12E0 | a(8D000003): LDR SB, MT, MOD0 [ORP] |
| 12E1 | a(80D0001C): LDR R0, SB, 1CH [data] |
| 12E2 | a(4009001F): SUB R0, R0, 1FH |
| 12E3 | a(E9000047): BNE 71 [132BH] |
| obj := ORB.thisObj();b |
| 12E4 | b .FIXUP P |
| 12E4 | b(F781001E): BL MOD8 [ORB] PROC16 |
| 12E5 | b(A0E0000C): STR R0, SP, CH |
| IF obj # NIL THENc |
| 12E6 | c(80E0000C): LDR R0, SP, CH |
| 12E7 | c(E1000029): BEQ 41 [1311H] |
| IF (obj.classd = ORB.Typ)e & (fobj.typeg.formh IN {ORB.Record, ORB.NoTyp})i THENj |
| 12E8 | d(80E0000C): LDR R0, SP, CH |
| 12E9 | d(D17E864C): BLEQ MT [trap=4, pos=32390] |
| 12EA | e(90000000): LDR R0, R0, 0H |
| 12EB | e(40090005): SUB R0, R0, 5H |
| 12EC | f(E9000015): BNE 21 [1302H] |
| 12ED | g(80E0000C): LDR R0, SP, CH |
| 12EE | g(D17E9D4C): BLEQ MT [trap=4, pos=32413] |
| 12EF | h(80000010): LDR R0, R0, 10H |
| 12F0 | h(D17EA24C): BLEQ MT [trap=4, pos=32418] |
| 12F1 | i(41002200): MOV R1, R0, 2200H |
| 12F2 | i(80000000): LDR R0, R0, 0H |
| 12F3 | i(40080001): ADD R0, R0, 1H |
| 12F4 | i(01130000): ROR R1, R1, R0 |
| 12F5 | j(E800000C): BPL 12 [1302H] |
| CheckRecLevel(obj.levk)l;m type.basen := obj.typeo |
| 12F6 | k(80E0000C): LDR R0, SP, CH |
| 12F7 | k(D17EE54C): BLEQ MT [trap=4, pos=32485] |
| 12F8 | l(80000004): LDR R0, R0, 4H |
| 12F9 | m(F7FFFF62): BL -158 [125CH] |
| 12FA | n(80E00004): LDR R0, SP, 4H |
| 12FB | n(80000000): LDR R0, R0, 0H |
| 12FC | n(D17EF14C): BLEQ MT [trap=4, pos=32497] |
| 12FD | o(81E0000C): LDR R1, SP, CH |
| 12FE | o(D17EFD4C): BLEQ MT [trap=4, pos=32509] |
| ELSIFp objq.classr = ORB.Mod THENs ORS.Mark("external base type not implemented")t |
| 12FF | p(81100010): LDR R1, R1, 10H |
| 1300 | p(A100001C): STR R1, R0, 1CH |
| 1301 | q(E700000E): B 14 [1310H] |
| 1302 | r(80E0000C): LDR R0, SP, CH |
| 1303 | r(D17F174C): BLEQ MT [trap=4, pos=32535] |
| 1304 | s(90000000): LDR R0, R0, 0H |
| 1305 | s(40090008): SUB R0, R0, 8H |
| 1306 | s(E9000005): BNE 5 [130CH] |
| 1307 | t .FIXUP D |
| 1307 | t(8D000027): LDR SB, MT, MOD0 [ORP] |
| 1308 | t(40D80748): ADD R0, SB, 748H ["external base type not implemented"] |
| 1309 | t(41000023): MOV R1, R0, 23H |
| ELSEu ORSv.Mark("no valid base type")w |
| 130A | u .FIXUP P |
| 130A | u(F7709026): BL MOD7 [ORS] PROC9 |
| 130B | v(E7000004): B 4 [1310H] |
| 130C | w .FIXUP D |
| 130C | w(8D000005): LDR SB, MT, MOD0 [ORP] |
| 130D | w(40D8076C): ADD R0, SB, 76CH ["no valid base type"] |
| 130E | w(41000013): MOV R1, R0, 13H |
| ENDx |
| 130F | x .FIXUP P |
| 130F | x(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE CheckRecLevely(level)z;a (*enter into list of forward references to be fixed in Declarations*) |
| 1310 | y(E7000016): B 22 [1327H] |
| 1311 | z .FIXUP D |
| 1311 | z(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1312 | z(80D00024): LDR R0, SB, 24H [data] |
| 1313 | a(F7FFFF48): BL -184 [125CH] |
| NEW(ptbase);b ORS.CopyId(ptbase.namec);d ptbase.typee := type;f ptbase.nextg := pbsList;h pbsList := ptbase |
| 1314 | b(40E80010): ADD R0, SP, 10H |
| 1315 | b .FIXUP D |
| 1315 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1316 | b(41D80000): ADD R1, SB, 0H [data] |
| 1317 | b(D780110C): BL MT [trap=0, pos=32785] |
| 1318 | c(80E00010): LDR R0, SP, 10H |
| 1319 | c(D180284C): BLEQ MT [trap=4, pos=32808] |
| 131A | d .FIXUP P |
| 131A | d(F770700B): BL MOD7 [ORS] PROC7 |
| 131B | e(80E00010): LDR R0, SP, 10H |
| 131C | e(D180364C): BLEQ MT [trap=4, pos=32822] |
| 131D | f(81E00004): LDR R1, SP, 4H |
| 131E | f(81100000): LDR R1, R1, 0H |
| 131F | f(A1000020): STR R1, R0, 20H |
| 1320 | g(80E00010): LDR R0, SP, 10H |
| 1321 | g(D1804B4C): BLEQ MT [trap=4, pos=32843] |
| 1322 | h .FIXUP D |
| 1322 | h(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 1323 | h(81D00060): LDR R1, SB, 60H [data] |
| 1324 | h(A1000024): STR R1, R0, 24H |
| ENDi ; |
| 1325 | i(80E00010): LDR R0, SP, 10H |
| 1326 | i(A0D00060): STR R0, SB, 60H |
| ORS.Get(sym)j |
| 1327 | j .FIXUP D |
| 1327 | j(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1328 | j(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEk Typel(type.basem)n;o |
| 1329 | k .FIXUP P |
| 1329 | k(F770A00F): BL MOD7 [ORS] PROC10 |
| 132A | l(E700001E): B 30 [1349H] |
| 132B | m(80E00004): LDR R0, SP, 4H |
| 132C | m(80000000): LDR R0, R0, 0H |
| 132D | m(D180A64C): BLEQ MT [trap=4, pos=32934] |
| 132E | n(4008001C): ADD R0, R0, 1CH |
| 132F | o .FIXUP D |
| 132F | o(8D000008): LDR SB, MT, MOD0 [ORP] |
| 1330 | o(81D00038): LDR R1, SB, 38H [data] |
| 1331 | o(D180A85C): BLEQ MT [trap=5, pos=32936] |
| 1332 | o(D7000001): BL R1 |
| IF (type.basep.formq # ORB.Record)r OR (stype.baset.typobju = NIL)v THENw ORS.Mark("must point to named record")x ENDy ; |
| 1333 | p(80E00004): LDR R0, SP, 4H |
| 1334 | p(80000000): LDR R0, R0, 0H |
| 1335 | p(D180BE4C): BLEQ MT [trap=4, pos=32958] |
| 1336 | q(8000001C): LDR R0, R0, 1CH |
| 1337 | q(D180C34C): BLEQ MT [trap=4, pos=32963] |
| 1338 | r(80000000): LDR R0, R0, 0H |
| 1339 | r(4009000D): SUB R0, R0, DH |
| 133A | s(E9000007): BNE 7 [1342H] |
| 133B | t(80E00004): LDR R0, SP, 4H |
| 133C | t(80000000): LDR R0, R0, 0H |
| 133D | t(D180DF4C): BLEQ MT [trap=4, pos=32991] |
| 133E | u(8000001C): LDR R0, R0, 1CH |
| 133F | u(D180E64C): BLEQ MT [trap=4, pos=32998] |
| 1340 | v(80000018): LDR R0, R0, 18H |
| 1341 | w(E9000004): BNE 4 [1346H] |
| 1342 | x .FIXUP D |
| 1342 | x(8D000013): LDR SB, MT, MOD0 [ORP] |
| 1343 | x(40D80780): ADD R0, SB, 780H ["must point to named record"] |
| 1344 | x(4100001B): MOV R1, R0, 1BH |
| 1345 | y .FIXUP P |
| 1345 | y(F770901C): BL MOD7 [ORS] PROC9 |
| CheckRecLevel(level)z |
| 1346 | z .FIXUP D |
| 1346 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1347 | z(80D00024): LDR R0, SB, 24H [data] |
| ENDa |
| 1348 | a(F7FFFF13): BL -237 [125CH] |
| ELSIF symb = ORS.procedure THENc |
| 1349 | b(E700002A): B 42 [1374H] |
| 134A | c .FIXUP D |
| 134A | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 134B | c(80D0001C): LDR R0, SB, 1CH [data] |
| 134C | c(40090042): SUB R0, R0, 42H |
| 134D | c(E9000022): BNE 34 [1370H] |
| ORS.Get(sym)d;e ORB.OpenScope;f |
| 134E | d .FIXUP D |
| 134E | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 134F | d(40D8001C): ADD R0, SB, 1CH [data] |
| 1350 | e .FIXUP P |
| 1350 | e(F770A00B): BL MOD7 [ORS] PROC10 |
| 1351 | f .FIXUP P |
| 1351 | f(F7813001): BL MOD8 [ORB] PROC19 |
| NEW(type);g type.formh := ORB.Proc;i type.sizej := ORG.WordSize;k dmy := 0;l |
| 1352 | g(80E00004): LDR R0, SP, 4H |
| 1353 | g .FIXUP D |
| 1353 | g(8D800005): LDR SB, MT, MOD8 [ORB] |
| 1354 | g(41D80003): ADD R1, SB, VAR3 |
| 1355 | g(D7819D0C): BL MT [trap=0, pos=33181] |
| 1356 | h(80E00004): LDR R0, SP, 4H |
| 1357 | h(80000000): LDR R0, R0, 0H |
| 1358 | h(D181A74C): BLEQ MT [trap=4, pos=33191] |
| 1359 | i(4100000A): MOV R1, R0, AH |
| 135A | i(A1000000): STR R1, R0, 0H |
| 135B | j(80E00004): LDR R0, SP, 4H |
| 135C | j(80000000): LDR R0, R0, 0H |
| 135D | j(D181BE4C): BLEQ MT [trap=4, pos=33214] |
| 135E | k(41000004): MOV R1, R0, 4H |
| 135F | k(A1000020): STR R1, R0, 20H |
| 1360 | l(40000000): MOV R0, R0, 0H |
| 1361 | l(A0E00008): STR R0, SP, 8H |
| ProcedureType(type,m dmy)n;o type.dscp := ORB.topScope.nextq;r ORB.CloseScope |
| 1362 | m(80E00004): LDR R0, SP, 4H |
| 1363 | m(80000000): LDR R0, R0, 0H |
| 1364 | n(41E80008): ADD R1, SP, 8H |
| 1365 | o(F7FFFE0E): BL -498 [1174H] |
| 1366 | p(80E00004): LDR R0, SP, 4H |
| 1367 | p(80000000): LDR R0, R0, 0H |
| 1368 | p(D182024C): BLEQ MT [trap=4, pos=33282] |
| 1369 | q .FIXUP D |
| 1369 | q(8D800016): LDR SB, MT, MOD8 [ORB] |
| 136A | q(81D00004): LDR R1, SB, VAR4 |
| 136B | q(D182174C): BLEQ MT [trap=4, pos=33303] |
| 136C | r(81100008): LDR R1, R1, 8H |
| 136D | r(A1000014): STR R1, R0, 14H |
| ELSEs ORSt.Mark("illegal type")u |
| 136E | s .FIXUP P |
| 136E | s(F781401D): BL MOD8 [ORB] PROC20 |
| 136F | t(E7000004): B 4 [1374H] |
| 1370 | u .FIXUP D |
| 1370 | u(8D000007): LDR SB, MT, MOD0 [ORP] |
| 1371 | u(40D8079C): ADD R0, SB, 79CH ["illegal type"] |
| 1372 | u(4100000D): MOV R1, R0, DH |
| ENDv |
| 1373 | v .FIXUP P |
| 1373 | v(F7709005): BL MOD7 [ORS] PROC9 |
| ENDw Type0; |
| 1374 | w(8FE00000): LDR LNK, SP, 0H |
| 1375 | w(4EE80014): ADD SP, SP, 14H |
| 1376 | w(C700000F): B LNK |
| |
| PROCEDURE Declarations(VAR varsize: LONGINT); |
| VAR obj, first: ORB.Object; |
| x: ORG.Item; tp: ORB.Type; ptbase: PtrBase; |
| expo: BOOLEAN; id: ORS.Ident; |
| BEGINx (*sync*) pbsList := NIL;y |
| 1377 | x(4EE90054): SUB SP, SP, 54H |
| 1378 | x(AFE00000): STR LNK, SP, 0H |
| 1379 | x(A0E00004): STR R0, SP, 4H |
| 137A | y(40000000): MOV R0, R0, 0H |
| 137B | y .FIXUP D |
| 137B | y(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 137C | y(A0D00060): STR R0, SB, 60H [data] |
| IF (sym < ORS.const)z & (asym # ORS.end)b & (csym # ORS.return)d THENe ORS.Mark("declaration?")f;g |
| 137D | z(80D0001C): LDR R0, SB, 1CH |
| 137E | z(4009003F): SUB R0, R0, 3FH |
| 137F | a(ED00001B): BGE 27 [139BH] |
| 1380 | b .FIXUP D |
| 1380 | b(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1381 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 1382 | b(40090035): SUB R0, R0, 35H |
| 1383 | c(E1000017): BEQ 23 [139BH] |
| 1384 | d .FIXUP D |
| 1384 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1385 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 1386 | d(4009003A): SUB R0, R0, 3AH |
| 1387 | e(E1000013): BEQ 19 [139BH] |
| 1388 | f .FIXUP D |
| 1388 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1389 | f(40D807AC): ADD R0, SB, 7ACH ["declaration?"] |
| 138A | f(4100000D): MOV R1, R0, DH |
| 138B | g .FIXUP P |
| 138B | g(F7709018): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)h UNTILi (sym >= ORS.const)j OR (ksym = ORS.end)l OR (msym = ORS.return)n |
| 138C | h .FIXUP D |
| 138C | h(8D000004): LDR SB, MT, MOD0 [ORP] |
| 138D | h(40D8001C): ADD R0, SB, 1CH [data] |
| 138E | i .FIXUP P |
| 138E | i(F770A003): BL MOD7 [ORS] PROC10 |
| 138F | j .FIXUP D |
| 138F | j(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1390 | j(80D0001C): LDR R0, SB, 1CH [data] |
| 1391 | j(4009003F): SUB R0, R0, 3FH |
| 1392 | k(ED000008): BGE 8 [139BH] |
| 1393 | l .FIXUP D |
| 1393 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1394 | l(80D0001C): LDR R0, SB, 1CH [data] |
| 1395 | l(40090035): SUB R0, R0, 35H |
| 1396 | m(E1000004): BEQ 4 [139BH] |
| 1397 | n .FIXUP D |
| 1397 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1398 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 1399 | n(4009003A): SUB R0, R0, 3AH |
| ENDo ; |
| 139A | o(E9FFFFF1): BNE -15 [138CH] |
| IF sym = ORS.const THENp |
| 139B | p .FIXUP D |
| 139B | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 139C | p(80D0001C): LDR R0, SB, 1CH [data] |
| 139D | p(4009003F): SUB R0, R0, 3FH |
| 139E | p(E9000054): BNE 84 [13F3H] |
| ORS.Get(sym)q;r |
| 139F | q .FIXUP D |
| 139F | q(8D000004): LDR SB, MT, MOD0 [ORP] |
| 13A0 | q(40D8001C): ADD R0, SB, 1CH [data] |
| 13A1 | r .FIXUP P |
| 13A1 | r(F770A013): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOs |
| 13A2 | s .FIXUP D |
| 13A2 | s(8D000003): LDR SB, MT, MOD0 [ORP] |
| 13A3 | s(80D0001C): LDR R0, SB, 1CH [data] |
| 13A4 | s(4009001F): SUB R0, R0, 1FH |
| 13A5 | s(E900004D): BNE 77 [13F3H] |
| ORS.CopyId(id)t;u ORS.Get(sym)v;w CheckExport(expo)x;y |
| 13A6 | t(40E80034): ADD R0, SP, 34H |
| 13A7 | u .FIXUP P |
| 13A7 | u(F7707006): BL MOD7 [ORS] PROC7 |
| 13A8 | v .FIXUP D |
| 13A8 | v(8D000006): LDR SB, MT, MOD0 [ORP] |
| 13A9 | v(40D8001C): ADD R0, SB, 1CH [data] |
| 13AA | w .FIXUP P |
| 13AA | w(F770A003): BL MOD7 [ORS] PROC10 |
| 13AB | x(40E80030): ADD R0, SP, 30H |
| 13AC | y(F7FFED45): BL -4795 [00F2H] |
| IF sym = ORS.eql THENz ORS.Get(sym)a ELSEb ORSc.Mark("= ?")d ENDe; |
| 13AD | z .FIXUP D |
| 13AD | z(8D000005): LDR SB, MT, MOD0 [ORP] |
| 13AE | z(80D0001C): LDR R0, SB, 1CH [data] |
| 13AF | z(40090009): SUB R0, R0, 9H |
| 13B0 | z(E9000004): BNE 4 [13B5H] |
| 13B1 | a .FIXUP D |
| 13B1 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 13B2 | a(40D8001C): ADD R0, SB, 1CH [data] |
| 13B3 | b .FIXUP P |
| 13B3 | b(F770A009): BL MOD7 [ORS] PROC10 |
| 13B4 | c(E7000004): B 4 [13B9H] |
| 13B5 | d .FIXUP D |
| 13B5 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 13B6 | d(40D807BC): ADD R0, SB, 7BCH ["= ?"] |
| 13B7 | d(41000004): MOV R1, R0, 4H |
| 13B8 | e .FIXUP P |
| 13B8 | e(F7709005): BL MOD7 [ORS] PROC9 |
| expression(x)f;g |
| 13B9 | f(40E80010): ADD R0, SP, 10H |
| 13BA | f .FIXUP D |
| 13BA | f(8D900005): LDR SB, MT, MOD9 [ORG] |
| 13BB | f(41D80001): ADD R1, SB, VAR1 |
| 13BC | g .FIXUP D |
| 13BC | g(8D000002): LDR SB, MT, MOD0 [ORP] |
| 13BD | g(82D00034): LDR R2, SB, 34H [data] |
| 13BE | g(D184CF5C): BLEQ MT [trap=5, pos=33999] |
| 13BF | g(D7000002): BL R2 |
| IF (x.type.formh = ORB.String)i & (jx.b = 2)k THENl ORG.StrToChar(x)m ENDn ; |
| 13C0 | h(80E00014): LDR R0, SP, 14H |
| 13C1 | h(D184E74C): BLEQ MT [trap=4, pos=34023] |
| 13C2 | i(80000000): LDR R0, R0, 0H |
| 13C3 | i(4009000B): SUB R0, R0, BH |
| 13C4 | j(E9000007): BNE 7 [13CCH] |
| 13C5 | k(80E0001C): LDR R0, SP, 1CH |
| 13C6 | k(40090002): SUB R0, R0, 2H |
| 13C7 | l(E9000004): BNE 4 [13CCH] |
| 13C8 | m(40E80010): ADD R0, SP, 10H |
| 13C9 | m .FIXUP D |
| 13C9 | m(8D90000D): LDR SB, MT, MOD9 [ORG] |
| 13CA | m(41D80001): ADD R1, SB, VAR1 |
| 13CB | n .FIXUP P |
| 13CB | n(F791F013): BL MOD9 [ORG] PROC31 |
| ORB.NewObj(obj,o id,p ORB.Const)q;r obj.expos := expo;t |
| 13CC | o(40E80008): ADD R0, SP, 8H |
| 13CD | p(41E80034): ADD R1, SP, 34H |
| 13CE | q(42000001): MOV R2, R0, 1H |
| 13CF | r .FIXUP P |
| 13CF | r(F780F004): BL MOD8 [ORB] PROC15 |
| 13D0 | s(80E00008): LDR R0, SP, 8H |
| 13D1 | s(D1854E4C): BLEQ MT [trap=4, pos=34126] |
| 13D2 | t(91E00030): LDR R1, SP, 30H |
| 13D3 | t(B1000002): STR R1, R0, 2H |
| IF x.mode = ORB.Const THENu obj.valv := x.a;w obj.levx := x.b;y obj.typez := x.type |
| 13D4 | u(80E00010): LDR R0, SP, 10H |
| 13D5 | u(40090001): SUB R0, R0, 1H |
| 13D6 | u(E900000D): BNE 13 [13E4H] |
| 13D7 | v(80E00008): LDR R0, SP, 8H |
| 13D8 | v(D185824C): BLEQ MT [trap=4, pos=34178] |
| 13D9 | w(81E00018): LDR R1, SP, 18H |
| 13DA | w(A1000034): STR R1, R0, 34H |
| 13DB | x(80E00008): LDR R0, SP, 8H |
| 13DC | x(D185924C): BLEQ MT [trap=4, pos=34194] |
| 13DD | y(81E0001C): LDR R1, SP, 1CH |
| 13DE | y(A1000004): STR R1, R0, 4H |
| 13DF | z(80E00008): LDR R0, SP, 8H |
| 13E0 | z(D185A34C): BLEQ MT [trap=4, pos=34211] |
| ELSEa ORSb.Mark("expression not constant")c;d obj.typee := ORB.intType |
| 13E1 | a(81E00014): LDR R1, SP, 14H |
| 13E2 | a(A1000010): STR R1, R0, 10H |
| 13E3 | b(E7000009): B 9 [13EDH] |
| 13E4 | c .FIXUP D |
| 13E4 | c(8D00001B): LDR SB, MT, MOD0 [ORP] |
| 13E5 | c(40D807C0): ADD R0, SB, 7C0H ["expression not constant"] |
| 13E6 | c(41000018): MOV R1, R0, 18H |
| 13E7 | d .FIXUP P |
| 13E7 | d(F7709018): BL MOD7 [ORS] PROC9 |
| 13E8 | e(80E00008): LDR R0, SP, 8H |
| 13E9 | e(D185E84C): BLEQ MT [trap=4, pos=34280] |
| ENDf; |
| 13EA | f .FIXUP D |
| 13EA | f(8D800006): LDR SB, MT, MOD8 [ORB] |
| 13EB | f(81D00009): LDR R1, SB, VAR9 |
| 13EC | f(A1000010): STR R1, R0, 10H |
| Check(ORS.semicolon,g "; missing")h |
| 13ED | g(40000034): MOV R0, R0, 34H |
| 13EE | h .FIXUP D |
| 13EE | h(8D000004): LDR SB, MT, MOD0 [ORP] |
| 13EF | h(41D807D8): ADD R1, SB, 7D8H ["; missing"] |
| 13F0 | h(4200000A): MOV R2, R0, AH |
| ENDi |
| 13F1 | i(F7FFEC0E): BL -5106 [0000H] |
| 13F2 | i(E7FFFFAF): B -81 [13A2H] |
| END ; |
| IF sym = ORS.type THENj |
| 13F3 | j .FIXUP D |
| 13F3 | j(8D000005): LDR SB, MT, MOD0 [ORP] |
| 13F4 | j(80D0001C): LDR R0, SB, 1CH [data] |
| 13F5 | j(40090040): SUB R0, R0, 40H |
| 13F6 | j(E9000081): BNE 129 [1478H] |
| ORS.Get(sym)k;l |
| 13F7 | k .FIXUP D |
| 13F7 | k(8D000004): LDR SB, MT, MOD0 [ORP] |
| 13F8 | k(40D8001C): ADD R0, SB, 1CH [data] |
| 13F9 | l .FIXUP P |
| 13F9 | l(F770A012): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOm |
| 13FA | m .FIXUP D |
| 13FA | m(8D000003): LDR SB, MT, MOD0 [ORP] |
| 13FB | m(80D0001C): LDR R0, SB, 1CH [data] |
| 13FC | m(4009001F): SUB R0, R0, 1FH |
| 13FD | m(E900007A): BNE 122 [1478H] |
| ORS.CopyId(id)n;o ORS.Get(sym)p;q CheckExport(expo)r;s |
| 13FE | n(40E80034): ADD R0, SP, 34H |
| 13FF | o .FIXUP P |
| 13FF | o(F7707006): BL MOD7 [ORS] PROC7 |
| 1400 | p .FIXUP D |
| 1400 | p(8D000006): LDR SB, MT, MOD0 [ORP] |
| 1401 | p(40D8001C): ADD R0, SB, 1CH [data] |
| 1402 | q .FIXUP P |
| 1402 | q(F770A003): BL MOD7 [ORS] PROC10 |
| 1403 | r(40E80030): ADD R0, SP, 30H |
| 1404 | s(F7FFECED): BL -4883 [00F2H] |
| IF sym = ORS.eql THENt ORS.Get(sym)u ELSEv ORSw.Mark("=?")x ENDy ; |
| 1405 | t .FIXUP D |
| 1405 | t(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1406 | t(80D0001C): LDR R0, SB, 1CH [data] |
| 1407 | t(40090009): SUB R0, R0, 9H |
| 1408 | t(E9000004): BNE 4 [140DH] |
| 1409 | u .FIXUP D |
| 1409 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 140A | u(40D8001C): ADD R0, SB, 1CH [data] |
| 140B | v .FIXUP P |
| 140B | v(F770A009): BL MOD7 [ORS] PROC10 |
| 140C | w(E7000004): B 4 [1411H] |
| 140D | x .FIXUP D |
| 140D | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 140E | x(40D807E4): ADD R0, SB, 7E4H ["=?"] |
| 140F | x(41000003): MOV R1, R0, 3H |
| 1410 | y .FIXUP P |
| 1410 | y(F7709005): BL MOD7 [ORS] PROC9 |
| Type(tp)z;a |
| 1411 | z(40E80028): ADD R0, SP, 28H |
| 1412 | a .FIXUP D |
| 1412 | a(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1413 | a(81D00038): LDR R1, SB, 38H [data] |
| 1414 | a(D187205C): BLEQ MT [trap=5, pos=34592] |
| 1415 | a(D7000001): BL R1 |
| ORB.NewObj(obj,b id,c ORB.Typ)d;e obj.typef := tp;g obj.expoh := expo;i obj.levj := level;k |
| 1416 | b(40E80008): ADD R0, SP, 8H |
| 1417 | c(41E80034): ADD R1, SP, 34H |
| 1418 | d(42000005): MOV R2, R0, 5H |
| 1419 | e .FIXUP P |
| 1419 | e(F780F009): BL MOD8 [ORB] PROC15 |
| 141A | f(80E00008): LDR R0, SP, 8H |
| 141B | f(D1874F4C): BLEQ MT [trap=4, pos=34639] |
| 141C | g(81E00028): LDR R1, SP, 28H |
| 141D | g(A1000010): STR R1, R0, 10H |
| 141E | h(80E00008): LDR R0, SP, 8H |
| 141F | h(D1875F4C): BLEQ MT [trap=4, pos=34655] |
| 1420 | i(91E00030): LDR R1, SP, 30H |
| 1421 | i(B1000002): STR R1, R0, 2H |
| 1422 | j(80E00008): LDR R0, SP, 8H |
| 1423 | j(D187704C): BLEQ MT [trap=4, pos=34672] |
| 1424 | k .FIXUP D |
| 1424 | k(8D000012): LDR SB, MT, MOD0 [ORP] |
| 1425 | k(81D00024): LDR R1, SB, 24H [data] |
| 1426 | k(A1000004): STR R1, R0, 4H |
| IF tp.typobjl = NIL THENm tp.typobjn := obj ENDo ; |
| 1427 | l(80E00028): LDR R0, SP, 28H |
| 1428 | l(D1878F4C): BLEQ MT [trap=4, pos=34703] |
| 1429 | m(80000018): LDR R0, R0, 18H |
| 142A | m(E9000004): BNE 4 [142FH] |
| 142B | n(80E00028): LDR R0, SP, 28H |
| 142C | n(D187A44C): BLEQ MT [trap=4, pos=34724] |
| 142D | o(81E00008): LDR R1, SP, 8H |
| 142E | o(A1000018): STR R1, R0, 18H |
| IF expo & (pobj.typeq.formr = ORB.Record)s THENt obj.exnou := exno;v INC(exno) ELSEw objx.exnoy := 0 ENDz ; |
| 142F | p(90E00030): LDR R0, SP, 30H |
| 1430 | p(E1000011): BEQ 17 [1442H] |
| 1431 | q(80E00008): LDR R0, SP, 8H |
| 1432 | q(D187CD4C): BLEQ MT [trap=4, pos=34765] |
| 1433 | r(80000010): LDR R0, R0, 10H |
| 1434 | r(D187D24C): BLEQ MT [trap=4, pos=34770] |
| 1435 | s(80000000): LDR R0, R0, 0H |
| 1436 | s(4009000D): SUB R0, R0, DH |
| 1437 | t(E900000A): BNE 10 [1442H] |
| 1438 | u(80E00008): LDR R0, SP, 8H |
| 1439 | u(D187EE4C): BLEQ MT [trap=4, pos=34798] |
| 143A | v .FIXUP D |
| 143A | v(8D000016): LDR SB, MT, MOD0 [ORP] |
| 143B | v(81D00028): LDR R1, SB, 28H [data] |
| 143C | v(B1000001): STR R1, R0, 1H |
| 143D | w(40D80028): ADD R0, SB, 28H |
| 143E | w(81000000): LDR R1, R0, 0H |
| 143F | w(41180001): ADD R1, R1, 1H |
| 1440 | w(A1000000): STR R1, R0, 0H |
| 1441 | x(E7000004): B 4 [1446H] |
| 1442 | y(80E00008): LDR R0, SP, 8H |
| 1443 | y(D1880F4C): BLEQ MT [trap=4, pos=34831] |
| 1444 | z(41000000): MOV R1, R0, 0H |
| 1445 | z(B1000001): STR R1, R0, 1H |
| IF tp.forma = ORB.Record THENb |
| 1446 | a(80E00028): LDR R0, SP, 28H |
| 1447 | a(D1882D4C): BLEQ MT [trap=4, pos=34861] |
| 1448 | b(80000000): LDR R0, R0, 0H |
| 1449 | b(4009000D): SUB R0, R0, DH |
| 144A | b(E9000027): BNE 39 [1472H] |
| ptbase := pbsList;c (*check whether this is base of a pointer type; search and fixup*) |
| 144B | c .FIXUP D |
| 144B | c(8D000011): LDR SB, MT, MOD0 [ORP] |
| 144C | c(80D00060): LDR R0, SB, 60H [data] |
| 144D | c(A0E0002C): STR R0, SP, 2CH |
| WHILE ptbase # NIL DOd |
| 144E | d(80E0002C): LDR R0, SP, 2CH |
| 144F | d(E100001B): BEQ 27 [146BH] |
| IF obj.namee = ptbase.namef THENg ptbase.typeh.basei := obj.typej ENDk ; |
| 1450 | e(80E00008): LDR R0, SP, 8H |
| 1451 | e(D188D84C): BLEQ MT [trap=4, pos=35032] |
| 1452 | f(81E0002C): LDR R1, SP, 2CH |
| 1453 | f(D188E64C): BLEQ MT [trap=4, pos=35046] |
| 1454 | g(40080014): ADD R0, R0, 14H |
| 1455 | g(92000000): LDR R2, R0, 0H |
| 1456 | g(40080001): ADD R0, R0, 1H |
| 1457 | g(93100000): LDR R3, R1, 0H |
| 1458 | g(41180001): ADD R1, R1, 1H |
| 1459 | g(04290003): SUB R4, R2, R3 |
| 145A | g(E9000002): BNE 2 [145DH] |
| 145B | g(44290000): SUB R4, R2, 0H |
| 145C | g(E9FFFFF8): BNE -8 [1455H] |
| 145D | g(E9000008): BNE 8 [1466H] |
| 145E | h(80E0002C): LDR R0, SP, 2CH |
| 145F | h(D188F74C): BLEQ MT [trap=4, pos=35063] |
| 1460 | i(80000020): LDR R0, R0, 20H |
| 1461 | i(D188FC4C): BLEQ MT [trap=4, pos=35068] |
| 1462 | j(81E00008): LDR R1, SP, 8H |
| 1463 | j(D189084C): BLEQ MT [trap=4, pos=35080] |
| 1464 | k(81100010): LDR R1, R1, 10H |
| 1465 | k(A100001C): STR R1, R0, 1CH |
| ptbase := ptbase.nextl |
| 1466 | l(80E0002C): LDR R0, SP, 2CH |
| 1467 | l(D189304C): BLEQ MT [trap=4, pos=35120] |
| ENDm ; |
| 1468 | m(80000024): LDR R0, R0, 24H |
| 1469 | m(A0E0002C): STR R0, SP, 2CH |
| 146A | m(E7FFFFE3): B -29 [144EH] |
| IF level = 0 THENn ORG.BuildTD(tp,o dc)p ENDq (*type descriptor; len used as its address*) |
| 146B | n .FIXUP D |
| 146B | n(8D000020): LDR SB, MT, MOD0 [ORP] |
| 146C | n(80D00024): LDR R0, SB, 24H [data] |
| 146D | n(E9000004): BNE 4 [1472H] |
| 146E | o(80E00028): LDR R0, SP, 28H |
| 146F | p .FIXUP D |
| 146F | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1470 | p(41D80020): ADD R1, SB, 20H [data] |
| 1471 | q .FIXUP P |
| 1471 | q(F790C058): BL MOD9 [ORG] PROC12 |
| END ; |
| Check(ORS.semicolon,r "; missing")s |
| 1472 | r(40000034): MOV R0, R0, 34H |
| 1473 | s .FIXUP D |
| 1473 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1474 | s(41D807E8): ADD R1, SB, 7E8H ["; missing"] |
| 1475 | s(4200000A): MOV R2, R0, AH |
| ENDt |
| 1476 | t(F7FFEB89): BL -5239 [0000H] |
| 1477 | t(E7FFFF82): B -126 [13FAH] |
| END ; |
| IF sym = ORS.var THENu |
| 1478 | u .FIXUP D |
| 1478 | u(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1479 | u(80D0001C): LDR R0, SB, 1CH [data] |
| 147A | u(40090041): SUB R0, R0, 41H |
| 147B | u(E900004F): BNE 79 [14CBH] |
| ORS.Get(sym)v;w |
| 147C | v .FIXUP D |
| 147C | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 147D | v(40D8001C): ADD R0, SB, 1CH [data] |
| 147E | w .FIXUP P |
| 147E | w(F770A00D): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOx |
| 147F | x .FIXUP D |
| 147F | x(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1480 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 1481 | x(4009001F): SUB R0, R0, 1FH |
| 1482 | x(E9000048): BNE 72 [14CBH] |
| IdentList(ORB.Var,y first)z;a Type(tp)b;c |
| 1483 | y(40000002): MOV R0, R0, 2H |
| 1484 | z(41E8000C): ADD R1, SP, CH |
| 1485 | a(F7FFFA87): BL -1401 [0F0DH] |
| 1486 | b(40E80028): ADD R0, SP, 28H |
| 1487 | c .FIXUP D |
| 1487 | c(8D000008): LDR SB, MT, MOD0 [ORP] |
| 1488 | c(81D00038): LDR R1, SB, 38H [data] |
| 1489 | c(D18A6A5C): BLEQ MT [trap=5, pos=35434] |
| 148A | c(D7000001): BL R1 |
| obj := first;d |
| 148B | d(80E0000C): LDR R0, SP, CH |
| 148C | d(A0E00008): STR R0, SP, 8H |
| WHILE obj # NIL DOe |
| 148D | e(80E00008): LDR R0, SP, 8H |
| 148E | e(E1000036): BEQ 54 [14C5H] |
| obj.typef := tp;g obj.levh := level;i |
| 148F | f(80E00008): LDR R0, SP, 8H |
| 1490 | f(D18AAE4C): BLEQ MT [trap=4, pos=35502] |
| 1491 | g(81E00028): LDR R1, SP, 28H |
| 1492 | g(A1000010): STR R1, R0, 10H |
| 1493 | h(80E00008): LDR R0, SP, 8H |
| 1494 | h(D18ABD4C): BLEQ MT [trap=4, pos=35517] |
| 1495 | i .FIXUP D |
| 1495 | i(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 1496 | i(81D00024): LDR R1, SB, 24H [data] |
| 1497 | i(A1000004): STR R1, R0, 4H |
| IF tp.sizej > 1 THENk varsize := (varsize + 3)l DIV 4 *m 4 (*align*) ENDn ; |
| 1498 | j(80E00028): LDR R0, SP, 28H |
| 1499 | j(D18ADC4C): BLEQ MT [trap=4, pos=35548] |
| 149A | k(80000020): LDR R0, R0, 20H |
| 149B | k(40090001): SUB R0, R0, 1H |
| 149C | k(E6000007): BLE 7 [14A4H] |
| 149D | l(80E00004): LDR R0, SP, 4H |
| 149E | l(80000000): LDR R0, R0, 0H |
| 149F | l(40080003): ADD R0, R0, 3H |
| 14A0 | m(40020002): ASR R0, R0, 2H |
| 14A1 | n(40010002): LSL R0, R0, 2H |
| 14A2 | n(81E00004): LDR R1, SP, 4H |
| 14A3 | n(A0100000): STR R0, R1, 0H |
| obj.valo := varsize;p varsize := varsize + obj.typeq.sizer;s |
| 14A4 | o(80E00008): LDR R0, SP, 8H |
| 14A5 | o(D18B2A4C): BLEQ MT [trap=4, pos=35626] |
| 14A6 | p(81E00004): LDR R1, SP, 4H |
| 14A7 | p(81100000): LDR R1, R1, 0H |
| 14A8 | p(A1000034): STR R1, R0, 34H |
| 14A9 | q(80E00008): LDR R0, SP, 8H |
| 14AA | q(D18B544C): BLEQ MT [trap=4, pos=35668] |
| 14AB | r(80000010): LDR R0, R0, 10H |
| 14AC | r(D18B594C): BLEQ MT [trap=4, pos=35673] |
| 14AD | s(81E00004): LDR R1, SP, 4H |
| 14AE | s(81100000): LDR R1, R1, 0H |
| 14AF | s(80000020): LDR R0, R0, 20H |
| 14B0 | s(00180000): ADD R0, R1, R0 |
| 14B1 | s(81E00004): LDR R1, SP, 4H |
| 14B2 | s(A0100000): STR R0, R1, 0H |
| IF obj.expot THENu obj.exnov := exno;w INC(exno) ENDx ; |
| 14B3 | t(80E00008): LDR R0, SP, 8H |
| 14B4 | t(D18B704C): BLEQ MT [trap=4, pos=35696] |
| 14B5 | u(90000002): LDR R0, R0, 2H |
| 14B6 | u(E1000009): BEQ 9 [14C0H] |
| 14B7 | v(80E00008): LDR R0, SP, 8H |
| 14B8 | v(D18B7E4C): BLEQ MT [trap=4, pos=35710] |
| 14B9 | w .FIXUP D |
| 14B9 | w(8D000024): LDR SB, MT, MOD0 [ORP] |
| 14BA | w(81D00028): LDR R1, SB, 28H [data] |
| 14BB | w(B1000001): STR R1, R0, 1H |
| 14BC | x(40D80028): ADD R0, SB, 28H |
| 14BD | x(81000000): LDR R1, R0, 0H |
| 14BE | x(41180001): ADD R1, R1, 1H |
| 14BF | x(A1000000): STR R1, R0, 0H |
| obj := obj.nexty |
| 14C0 | y(80E00008): LDR R0, SP, 8H |
| 14C1 | y(D18BB14C): BLEQ MT [trap=4, pos=35761] |
| ENDz ; |
| 14C2 | z(80000008): LDR R0, R0, 8H |
| 14C3 | z(A0E00008): STR R0, SP, 8H |
| 14C4 | z(E7FFFFC8): B -56 [148DH] |
| Check(ORS.semicolon,a "; missing")b |
| 14C5 | a(40000034): MOV R0, R0, 34H |
| 14C6 | b .FIXUP D |
| 14C6 | b(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 14C7 | b(41D807F4): ADD R1, SB, 7F4H ["; missing"] |
| 14C8 | b(4200000A): MOV R2, R0, AH |
| ENDc |
| 14C9 | c(F7FFEB36): BL -5322 [0000H] |
| 14CA | c(E7FFFFB4): B -76 [147FH] |
| END ; |
| varsize := (varsize + 3)d DIV 4 *e 4;f |
| 14CB | d(80E00004): LDR R0, SP, 4H |
| 14CC | d(80000000): LDR R0, R0, 0H |
| 14CD | d(40080003): ADD R0, R0, 3H |
| 14CE | e(40020002): ASR R0, R0, 2H |
| 14CF | f(40010002): LSL R0, R0, 2H |
| 14D0 | f(81E00004): LDR R1, SP, 4H |
| 14D1 | f(A0100000): STR R0, R1, 0H |
| ptbase := pbsList;g |
| 14D2 | g .FIXUP D |
| 14D2 | g(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 14D3 | g(80D00060): LDR R0, SB, 60H [data] |
| 14D4 | g(A0E0002C): STR R0, SP, 2CH |
| WHILE ptbase # NIL DOh |
| 14D5 | h(80E0002C): LDR R0, SP, 2CH |
| 14D6 | h(E1000012): BEQ 18 [14E9H] |
| IF ptbase.typei.basej.formk = ORB.Int THENl ORS.Mark("undefined pointer base of")m ENDn ; |
| 14D7 | i(80E0002C): LDR R0, SP, 2CH |
| 14D8 | i(D18C6B4C): BLEQ MT [trap=4, pos=35947] |
| 14D9 | j(80000020): LDR R0, R0, 20H |
| 14DA | j(D18C704C): BLEQ MT [trap=4, pos=35952] |
| 14DB | k(8000001C): LDR R0, R0, 1CH |
| 14DC | k(D18C754C): BLEQ MT [trap=4, pos=35957] |
| 14DD | l(80000000): LDR R0, R0, 0H |
| 14DE | l(40090004): SUB R0, R0, 4H |
| 14DF | l(E9000004): BNE 4 [14E4H] |
| 14E0 | m .FIXUP D |
| 14E0 | m(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 14E1 | m(40D80800): ADD R0, SB, 800H ["undefined pointer base of"] |
| 14E2 | m(4100001A): MOV R1, R0, 1AH |
| 14E3 | n .FIXUP P |
| 14E3 | n(F7709065): BL MOD7 [ORS] PROC9 |
| ptbase := ptbase.nexto |
| 14E4 | o(80E0002C): LDR R0, SP, 2CH |
| 14E5 | o(D18CCC4C): BLEQ MT [trap=4, pos=36044] |
| ENDp ; |
| 14E6 | p(80000024): LDR R0, R0, 24H |
| 14E7 | p(A0E0002C): STR R0, SP, 2CH |
| 14E8 | p(E7FFFFEC): B -20 [14D5H] |
| IF (sym >= ORS.const)q & (rsym <= ORS.var)s THENt ORS.Mark("declaration in bad order")u ENDv |
| 14E9 | q .FIXUP D |
| 14E9 | q(8D000009): LDR SB, MT, MOD0 [ORP] |
| 14EA | q(80D0001C): LDR R0, SB, 1CH [data] |
| 14EB | q(4009003F): SUB R0, R0, 3FH |
| 14EC | r(E5000008): BLT 8 [14F5H] |
| 14ED | s .FIXUP D |
| 14ED | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 14EE | s(80D0001C): LDR R0, SB, 1CH [data] |
| 14EF | s(40090041): SUB R0, R0, 41H |
| 14F0 | t(EE000004): BGT 4 [14F5H] |
| 14F1 | u .FIXUP D |
| 14F1 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 14F2 | u(40D8081C): ADD R0, SB, 81CH ["declaration in bad order"] |
| 14F3 | u(41000019): MOV R1, R0, 19H |
| 14F4 | v .FIXUP P |
| 14F4 | v(F7709011): BL MOD7 [ORS] PROC9 |
| ENDw Declarations; |
| 14F5 | w(8FE00000): LDR LNK, SP, 0H |
| 14F6 | w(4EE80054): ADD SP, SP, 54H |
| 14F7 | w(C700000F): B LNK |
| |
| PROCEDURE ProcedureDecl; |
| VAR proc: ORB.Object; |
| type: ORB.Type; |
| procid: ORS.Ident; |
| x: ORG.Item; |
| locblksize, parblksize, L: LONGINT; |
| int: BOOLEAN; |
| BEGINx (* ProcedureDecl *) int := FALSE;y ORS.Get(sym)z;a |
| 14F8 | x(4EE90054): SUB SP, SP, 54H |
| 14F9 | x(AFE00000): STR LNK, SP, 0H |
| 14FA | y(40000000): MOV R0, R0, 0H |
| 14FB | y(B0E00050): STR R0, SP, 50H |
| 14FC | z .FIXUP D |
| 14FC | z(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 14FD | z(40D8001C): ADD R0, SB, 1CH [data] |
| 14FE | a .FIXUP P |
| 14FE | a(F770A00A): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.times THENb ORS.Get(sym)c;d int := TRUE ENDe ; |
| 14FF | b .FIXUP D |
| 14FF | b(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1500 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 1501 | b(40090001): SUB R0, R0, 1H |
| 1502 | b(E9000005): BNE 5 [1508H] |
| 1503 | c .FIXUP D |
| 1503 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1504 | c(40D8001C): ADD R0, SB, 1CH [data] |
| 1505 | d .FIXUP P |
| 1505 | d(F770A007): BL MOD7 [ORS] PROC10 |
| 1506 | e(40000001): MOV R0, R0, 1H |
| 1507 | e(B0E00050): STR R0, SP, 50H |
| IF sym = ORS.ident THENf |
| 1508 | f .FIXUP D |
| 1508 | f(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1509 | f(80D0001C): LDR R0, SB, 1CH [data] |
| 150A | f(4009001F): SUB R0, R0, 1FH |
| 150B | f(E90000F6): BNE 246 [1602H] |
| ORS.CopyId(procid)g;h ORS.Get(sym)i;j |
| 150C | g(40E8000C): ADD R0, SP, CH |
| 150D | h .FIXUP P |
| 150D | h(F7707008): BL MOD7 [ORS] PROC7 |
| 150E | i .FIXUP D |
| 150E | i(8D000006): LDR SB, MT, MOD0 [ORP] |
| 150F | i(40D8001C): ADD R0, SB, 1CH [data] |
| 1510 | j .FIXUP P |
| 1510 | j(F770A003): BL MOD7 [ORS] PROC10 |
| ORB.NewObj(proc,k ORS.id,l ORB.Const)m;n parblksize := 4;o |
| 1511 | k(40E80004): ADD R0, SP, 4H |
| 1512 | l .FIXUP D |
| 1512 | l(8D700004): LDR SB, MT, MOD7 [ORS] |
| 1513 | l(41D80004): ADD R1, SB, VAR4 |
| 1514 | m(42000001): MOV R2, R0, 1H |
| 1515 | n .FIXUP P |
| 1515 | n(F780F005): BL MOD8 [ORB] PROC15 |
| 1516 | o(40000004): MOV R0, R0, 4H |
| 1517 | o(A0E00048): STR R0, SP, 48H |
| NEW(type);p type.formq := ORB.Proc;r type.sizes := ORG.WordSize;t proc.typeu := type;v |
| 1518 | p(40E80008): ADD R0, SP, 8H |
| 1519 | p .FIXUP D |
| 1519 | p(8D800007): LDR SB, MT, MOD8 [ORB] |
| 151A | p(41D80003): ADD R1, SB, VAR3 |
| 151B | p(D78F000C): BL MT [trap=0, pos=36608] |
| 151C | q(80E00008): LDR R0, SP, 8H |
| 151D | q(D18F0A4C): BLEQ MT [trap=4, pos=36618] |
| 151E | r(4100000A): MOV R1, R0, AH |
| 151F | r(A1000000): STR R1, R0, 0H |
| 1520 | s(80E00008): LDR R0, SP, 8H |
| 1521 | s(D18F214C): BLEQ MT [trap=4, pos=36641] |
| 1522 | t(41000004): MOV R1, R0, 4H |
| 1523 | t(A1000020): STR R1, R0, 20H |
| 1524 | u(80E00004): LDR R0, SP, 4H |
| 1525 | u(D18F3C4C): BLEQ MT [trap=4, pos=36668] |
| 1526 | v(81E00008): LDR R1, SP, 8H |
| 1527 | v(A1000010): STR R1, R0, 10H |
| CheckExport(proc.expow)x;y |
| 1528 | w(80E00004): LDR R0, SP, 4H |
| 1529 | w(D18F614C): BLEQ MT [trap=4, pos=36705] |
| 152A | x(40080002): ADD R0, R0, 2H |
| 152B | y(F7FFEBC6): BL -5178 [00F2H] |
| IF proc.expoz THENa proc.exnob := exno;c INC(exno) ENDd ; |
| 152C | z(80E00004): LDR R0, SP, 4H |
| 152D | z(D18F764C): BLEQ MT [trap=4, pos=36726] |
| 152E | a(90000002): LDR R0, R0, 2H |
| 152F | a(E1000009): BEQ 9 [1539H] |
| 1530 | b(80E00004): LDR R0, SP, 4H |
| 1531 | b(D18F854C): BLEQ MT [trap=4, pos=36741] |
| 1532 | c .FIXUP D |
| 1532 | c(8D000019): LDR SB, MT, MOD0 [ORP] |
| 1533 | c(81D00028): LDR R1, SB, 28H [data] |
| 1534 | c(B1000001): STR R1, R0, 1H |
| 1535 | d(40D80028): ADD R0, SB, 28H |
| 1536 | d(81000000): LDR R1, R0, 0H |
| 1537 | d(41180001): ADD R1, R1, 1H |
| 1538 | d(A1000000): STR R1, R0, 0H |
| ORB.OpenScope;e INC(level);f proc.valg := -1;h type.basei := ORB.noType;j |
| 1539 | e .FIXUP P |
| 1539 | e(F7813024): BL MOD8 [ORB] PROC19 |
| 153A | f .FIXUP D |
| 153A | f(8D000008): LDR SB, MT, MOD0 [ORP] |
| 153B | f(40D80024): ADD R0, SB, 24H [data] |
| 153C | f(81000000): LDR R1, R0, 0H |
| 153D | f(41180001): ADD R1, R1, 1H |
| 153E | f(A1000000): STR R1, R0, 0H |
| 153F | g(80E00004): LDR R0, SP, 4H |
| 1540 | g(D18FC84C): BLEQ MT [trap=4, pos=36808] |
| 1541 | h(5100FFFF): MOV R1, R0, FFFFFFFFH |
| 1542 | h(A1000034): STR R1, R0, 34H |
| 1543 | i(80E00008): LDR R0, SP, 8H |
| 1544 | i(D18FD94C): BLEQ MT [trap=4, pos=36825] |
| 1545 | j .FIXUP D |
| 1545 | j(8D80000B): LDR SB, MT, MOD8 [ORB] |
| 1546 | j(81D0000D): LDR R1, SB, VAR13 |
| 1547 | j(A100001C): STR R1, R0, 1CH |
| ProcedureType(type,k parblksize)l;m (*formal parameter list*) |
| 1548 | k(80E00008): LDR R0, SP, 8H |
| 1549 | l(41E80048): ADD R1, SP, 48H |
| 154A | m(F7FFFC29): BL -983 [1174H] |
| Check(ORS.semicolon,n "no ;")o;p locblksize := parblksize;q |
| 154B | n(40000034): MOV R0, R0, 34H |
| 154C | o .FIXUP D |
| 154C | o(8D000007): LDR SB, MT, MOD0 [ORP] |
| 154D | o(41D80838): ADD R1, SB, 838H ["no ;"] |
| 154E | o(42000005): MOV R2, R0, 5H |
| 154F | p(F7FFEAB0): BL -5456 [0000H] |
| 1550 | q(80E00048): LDR R0, SP, 48H |
| 1551 | q(A0E00044): STR R0, SP, 44H |
| Declarations(locblksize)r;s |
| 1552 | r(40E80044): ADD R0, SP, 44H |
| 1553 | s(F7FFFE23): BL -477 [1377H] |
| proc.valt := ORG.Here()u *v 4;w proc.typex.dscy := ORB.topScope.nextz;a |
| 1554 | t(80E00004): LDR R0, SP, 4H |
| 1555 | t(D190984C): BLEQ MT [trap=4, pos=37016] |
| 1556 | u(4EE90004): SUB SP, SP, 4H |
| 1557 | u(A0E00000): STR R0, SP, 0H |
| 1558 | v .FIXUP P |
| 1558 | v(F792A01F): BL MOD9 [ORG] PROC42 |
| 1559 | v(01000000): MOV R1, R0, R0 |
| 155A | v(80E00000): LDR R0, SP, 0H |
| 155B | v(4EE80004): ADD SP, SP, 4H |
| 155C | w(41110002): LSL R1, R1, 2H |
| 155D | w(A1000034): STR R1, R0, 34H |
| 155E | x(80E00004): LDR R0, SP, 4H |
| 155F | x(D190B54C): BLEQ MT [trap=4, pos=37045] |
| 1560 | y(80000010): LDR R0, R0, 10H |
| 1561 | y(D190B94C): BLEQ MT [trap=4, pos=37049] |
| 1562 | z .FIXUP D |
| 1562 | z(8D800016): LDR SB, MT, MOD8 [ORB] |
| 1563 | z(81D00004): LDR R1, SB, VAR4 |
| 1564 | z(D190CE4C): BLEQ MT [trap=4, pos=37070] |
| 1565 | a(81100008): LDR R1, R1, 8H |
| 1566 | a(A1000014): STR R1, R0, 14H |
| IF sym = ORS.procedure THENb |
| 1567 | b .FIXUP D |
| 1567 | b(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1568 | b(80D0001C): LDR R0, SB, 1CH [data] |
| 1569 | b(40090042): SUB R0, R0, 42H |
| 156A | b(E9000023): BNE 35 [158EH] |
| L := 0;c ORG.FJump(L)d;e |
| 156B | c(40000000): MOV R0, R0, 0H |
| 156C | c(A0E0004C): STR R0, SP, 4CH |
| 156D | d(40E8004C): ADD R0, SP, 4CH |
| 156E | e .FIXUP P |
| 156E | e(F792B016): BL MOD9 [ORG] PROC43 |
| REPEAT ProcedureDecl;f Check(ORS.semicolon,g "no ;")h UNTILi sym # ORS.procedure;j |
| 156F | f(F7FFFF88): BL -120 [14F8H] |
| 1570 | g(40000034): MOV R0, R0, 34H |
| 1571 | h .FIXUP D |
| 1571 | h(8D00000A): LDR SB, MT, MOD0 [ORP] |
| 1572 | h(41D80840): ADD R1, SB, 840H ["no ;"] |
| 1573 | h(42000005): MOV R2, R0, 5H |
| 1574 | i(F7FFEA8B): BL -5493 [0000H] |
| 1575 | j .FIXUP D |
| 1575 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1576 | j(80D0001C): LDR R0, SB, 1CH [data] |
| 1577 | j(40090042): SUB R0, R0, 42H |
| 1578 | j(E1FFFFF6): BEQ -10 [156FH] |
| ORG.FixLink(L)k;l proc.valm := ORG.Here()n *o 4;p proc.typeq.dscr := ORB.topScope.nexts |
| 1579 | k(80E0004C): LDR R0, SP, 4CH |
| 157A | l .FIXUP P |
| 157A | l(F790400C): BL MOD9 [ORG] PROC4 |
| 157B | m(80E00004): LDR R0, SP, 4H |
| 157C | m(D191864C): BLEQ MT [trap=4, pos=37254] |
| 157D | n(4EE90004): SUB SP, SP, 4H |
| 157E | n(A0E00000): STR R0, SP, 0H |
| 157F | o .FIXUP P |
| 157F | o(F792A005): BL MOD9 [ORG] PROC42 |
| 1580 | o(01000000): MOV R1, R0, R0 |
| 1581 | o(80E00000): LDR R0, SP, 0H |
| 1582 | o(4EE80004): ADD SP, SP, 4H |
| 1583 | p(41110002): LSL R1, R1, 2H |
| 1584 | p(A1000034): STR R1, R0, 34H |
| 1585 | q(80E00004): LDR R0, SP, 4H |
| 1586 | q(D191A34C): BLEQ MT [trap=4, pos=37283] |
| 1587 | r(80000010): LDR R0, R0, 10H |
| 1588 | r(D191A74C): BLEQ MT [trap=4, pos=37287] |
| 1589 | s .FIXUP D |
| 1589 | s(8D800014): LDR SB, MT, MOD8 [ORB] |
| 158A | s(81D00004): LDR R1, SB, VAR4 |
| 158B | s(D191BC4C): BLEQ MT [trap=4, pos=37308] |
| ENDt ; |
| 158C | t(81100008): LDR R1, R1, 8H |
| 158D | t(A1000014): STR R1, R0, 14H |
| ORG.Enter(parblksize,u locblksize,v int)w;x |
| 158E | u(80E00048): LDR R0, SP, 48H |
| 158F | v(81E00044): LDR R1, SP, 44H |
| 1590 | w(92E00050): LDR R2, SP, 50H |
| 1591 | x .FIXUP P |
| 1591 | x(F7932012): BL MOD9 [ORG] PROC50 |
| IF sym = ORS.begin THENy ORS.Get(sym)z;a StatSequence ENDb ; |
| 1592 | y .FIXUP D |
| 1592 | y(8D000009): LDR SB, MT, MOD0 [ORP] |
| 1593 | y(80D0001C): LDR R0, SB, 1CH [data] |
| 1594 | y(40090043): SUB R0, R0, 43H |
| 1595 | y(E9000004): BNE 4 [159AH] |
| 1596 | z .FIXUP D |
| 1596 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1597 | z(40D8001C): ADD R0, SB, 1CH [data] |
| 1598 | a .FIXUP P |
| 1598 | a(F770A007): BL MOD7 [ORS] PROC10 |
| 1599 | b(F7FFF63E): BL -2498 [0BD8H] |
| IF sym = ORS.return THENc |
| 159A | c .FIXUP D |
| 159A | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 159B | c(80D0001C): LDR R0, SB, 1CH [data] |
| 159C | c(4009003A): SUB R0, R0, 3AH |
| 159D | c(E9000023): BNE 35 [15C1H] |
| ORS.Get(sym)d;e expression(x)f;g |
| 159E | d .FIXUP D |
| 159E | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 159F | d(40D8001C): ADD R0, SB, 1CH [data] |
| 15A0 | e .FIXUP P |
| 15A0 | e(F770A008): BL MOD7 [ORS] PROC10 |
| 15A1 | f(40E8002C): ADD R0, SP, 2CH |
| 15A2 | f .FIXUP D |
| 15A2 | f(8D900004): LDR SB, MT, MOD9 [ORG] |
| 15A3 | f(41D80001): ADD R1, SB, VAR1 |
| 15A4 | g .FIXUP D |
| 15A4 | g(8D000002): LDR SB, MT, MOD0 [ORP] |
| 15A5 | g(82D00034): LDR R2, SB, 34H [data] |
| 15A6 | g(D192795C): BLEQ MT [trap=5, pos=37497] |
| 15A7 | g(D7000002): BL R2 |
| IF type.baseh = ORB.noType THENi ORS.Mark("this is not a function")j |
| 15A8 | h(80E00008): LDR R0, SP, 8H |
| 15A9 | h(D1928E4C): BLEQ MT [trap=4, pos=37518] |
| 15AA | i(8000001C): LDR R0, R0, 1CH |
| 15AB | i .FIXUP D |
| 15AB | i(8D800007): LDR SB, MT, MOD8 [ORB] |
| 15AC | i(81D0000D): LDR R1, SB, VAR13 |
| 15AD | i(00090001): SUB R0, R0, R1 |
| 15AE | i(E9000005): BNE 5 [15B4H] |
| 15AF | j .FIXUP D |
| 15AF | j(8D000004): LDR SB, MT, MOD0 [ORP] |
| 15B0 | j(40D80848): ADD R0, SB, 848H ["this is not a function"] |
| 15B1 | j(41000017): MOV R1, R0, 17H |
| ELSIFk ~lCompTypes(type.basem,n x.type,o FALSE)p THENq ORS.Mark("wrong result type")r |
| 15B2 | k .FIXUP P |
| 15B2 | k(F7709012): BL MOD7 [ORS] PROC9 |
| 15B3 | l(E700000C): B 12 [15C0H] |
| 15B4 | m(80E00008): LDR R0, SP, 8H |
| 15B5 | m(D192E64C): BLEQ MT [trap=4, pos=37606] |
| 15B6 | n(8000001C): LDR R0, R0, 1CH |
| 15B7 | o(81E00030): LDR R1, SP, 30H |
| 15B8 | p(42000000): MOV R2, R0, 0H |
| 15B9 | q(F7FFED56): BL -4778 [0310H] |
| 15BA | q(40090000): SUB R0, R0, 0H |
| 15BB | q(E9000004): BNE 4 [15C0H] |
| 15BC | r .FIXUP D |
| 15BC | r(8D00000D): LDR SB, MT, MOD0 [ORP] |
| 15BD | r(40D80860): ADD R0, SB, 860H ["wrong result type"] |
| 15BE | r(41000012): MOV R1, R0, 12H |
| ENDs |
| 15BF | s .FIXUP P |
| 15BF | s(F770900D): BL MOD7 [ORS] PROC9 |
| ELSIF typet.baseu.formv # ORB.NoTyp THENw |
| 15C0 | t(E7000010): B 16 [15D1H] |
| 15C1 | u(80E00008): LDR R0, SP, 8H |
| 15C2 | u(D1933B4C): BLEQ MT [trap=4, pos=37691] |
| 15C3 | v(8000001C): LDR R0, R0, 1CH |
| 15C4 | v(D193404C): BLEQ MT [trap=4, pos=37696] |
| 15C5 | w(80000000): LDR R0, R0, 0H |
| 15C6 | w(40090009): SUB R0, R0, 9H |
| 15C7 | w(E1000009): BEQ 9 [15D1H] |
| ORS.Mark("function without result")x;y type.basez := ORB.noType |
| 15C8 | x .FIXUP D |
| 15C8 | x(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 15C9 | x(40D80874): ADD R0, SB, 874H ["function without result"] |
| 15CA | x(41000018): MOV R1, R0, 18H |
| 15CB | y .FIXUP P |
| 15CB | y(F770900C): BL MOD7 [ORS] PROC9 |
| 15CC | z(80E00008): LDR R0, SP, 8H |
| 15CD | z(D193884C): BLEQ MT [trap=4, pos=37768] |
| ENDa ; |
| 15CE | a .FIXUP D |
| 15CE | a(8D800006): LDR SB, MT, MOD8 [ORB] |
| 15CF | a(81D0000D): LDR R1, SB, VAR13 |
| 15D0 | a(A100001C): STR R1, R0, 1CH |
| ORG.Return(type.baseb.formc,d x,e locblksize,f int)g;h |
| 15D1 | b(80E00008): LDR R0, SP, 8H |
| 15D2 | b(D193BD4C): BLEQ MT [trap=4, pos=37821] |
| 15D3 | c(8000001C): LDR R0, R0, 1CH |
| 15D4 | c(D193C24C): BLEQ MT [trap=4, pos=37826] |
| 15D5 | d(80000000): LDR R0, R0, 0H |
| 15D6 | e(41E8002C): ADD R1, SP, 2CH |
| 15D7 | e .FIXUP D |
| 15D7 | e(8D900009): LDR SB, MT, MOD9 [ORG] |
| 15D8 | e(42D80001): ADD R2, SB, VAR1 |
| 15D9 | f(83E00044): LDR R3, SP, 44H |
| 15DA | g(94E00050): LDR R4, SP, 50H |
| 15DB | h .FIXUP P |
| 15DB | h(F7933010): BL MOD9 [ORG] PROC51 |
| ORB.CloseScope;i DEC(level);j Check(ORS.end,k "no END")l;m |
| 15DC | i .FIXUP P |
| 15DC | i(F7814001): BL MOD8 [ORB] PROC20 |
| 15DD | j .FIXUP D |
| 15DD | j(8D000006): LDR SB, MT, MOD0 [ORP] |
| 15DE | j(40D80024): ADD R0, SB, 24H [data] |
| 15DF | j(81000000): LDR R1, R0, 0H |
| 15E0 | j(41190001): SUB R1, R1, 1H |
| 15E1 | j(A1000000): STR R1, R0, 0H |
| 15E2 | k(40000035): MOV R0, R0, 35H |
| 15E3 | l(41D8088C): ADD R1, SB, 88CH |
| 15E4 | l(42000007): MOV R2, R0, 7H |
| 15E5 | m(F7FFEA1A): BL -5606 [0000H] |
| IF sym = ORS.ident THENn |
| 15E6 | n .FIXUP D |
| 15E6 | n(8D000009): LDR SB, MT, MOD0 [ORP] |
| 15E7 | n(80D0001C): LDR R0, SB, 1CH [data] |
| 15E8 | n(4009001F): SUB R0, R0, 1FH |
| 15E9 | n(E9000014): BNE 20 [15FEH] |
| IF ORS.id # procid THENo ORS.Mark("no match")p ENDq ; |
| 15EA | o .FIXUP D |
| 15EA | o(8D700004): LDR SB, MT, MOD7 [ORS] |
| 15EB | o(40D80004): ADD R0, SB, VAR4 |
| 15EC | o(41E8000C): ADD R1, SP, CH |
| 15ED | o(92000000): LDR R2, R0, 0H |
| 15EE | o(40080001): ADD R0, R0, 1H |
| 15EF | o(93100000): LDR R3, R1, 0H |
| 15F0 | o(41180001): ADD R1, R1, 1H |
| 15F1 | o(04290003): SUB R4, R2, R3 |
| 15F2 | o(E9000002): BNE 2 [15F5H] |
| 15F3 | o(44290000): SUB R4, R2, 0H |
| 15F4 | o(E9FFFFF8): BNE -8 [15EDH] |
| 15F5 | o(E1000004): BEQ 4 [15FAH] |
| 15F6 | p .FIXUP D |
| 15F6 | p(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 15F7 | p(40D80894): ADD R0, SB, 894H ["no match"] |
| 15F8 | p(41000009): MOV R1, R0, 9H |
| 15F9 | q .FIXUP P |
| 15F9 | q(F770901D): BL MOD7 [ORS] PROC9 |
| ORS.Get(sym)r |
| 15FA | r .FIXUP D |
| 15FA | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 15FB | r(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEs ORSt.Mark("no proc id")u |
| 15FC | s .FIXUP P |
| 15FC | s(F770A003): BL MOD7 [ORS] PROC10 |
| 15FD | t(E7000004): B 4 [1602H] |
| 15FE | u .FIXUP D |
| 15FE | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 15FF | u(40D808A0): ADD R0, SB, 8A0H ["no proc id"] |
| 1600 | u(4100000B): MOV R1, R0, BH |
| ENDv |
| 1601 | v .FIXUP P |
| 1601 | v(F7709005): BL MOD7 [ORS] PROC9 |
| END ; |
| int := FALSE |
| ENDw ProcedureDecl; |
| 1602 | w(40000000): MOV R0, R0, 0H |
| 1603 | w(B0E00050): STR R0, SP, 50H |
| 1604 | w(8FE00000): LDR LNK, SP, 0H |
| 1605 | w(4EE80054): ADD SP, SP, 54H |
| 1606 | w(C700000F): B LNK |
| |
| PROCEDURE Module; |
| VAR key: LONGINT; |
| impid, impid1: ORS.Ident; |
| BEGINx Texts.WriteString(W,y " compiling ")z;a ORS.Get(sym)b;c |
| 1607 | x(4EE90048): SUB SP, SP, 48H |
| 1608 | x(AFE00000): STR LNK, SP, 0H |
| 1609 | y .FIXUP D |
| 1609 | y(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 160A | y(40D80068): ADD R0, SB, 68H [data] |
| 160B | y .FIXUP D |
| 160B | y(8D100002): LDR SB, MT, MOD1 [Texts] |
| 160C | y(41D80005): ADD R1, SB, VAR5 |
| 160D | z .FIXUP D |
| 160D | z(8D000002): LDR SB, MT, MOD0 [ORP] |
| 160E | z(42D808AC): ADD R2, SB, 8ACH [" compiling "] |
| 160F | z(4300000D): MOV R3, R0, DH |
| 1610 | a .FIXUP P |
| 1610 | a(F711D00F): BL MOD1 [Texts] PROC29 |
| 1611 | b .FIXUP D |
| 1611 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1612 | b(40D8001C): ADD R0, SB, 1CH [data] |
| 1613 | c .FIXUP P |
| 1613 | c(F770A003): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.module THENd |
| 1614 | d .FIXUP D |
| 1614 | d(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1615 | d(80D0001C): LDR R0, SB, 1CH [data] |
| 1616 | d(40090045): SUB R0, R0, 45H |
| 1617 | d(E9000124): BNE 292 [173CH] |
| ORS.Get(sym)e;f |
| 1618 | e .FIXUP D |
| 1618 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1619 | e(40D8001C): ADD R0, SB, 1CH [data] |
| 161A | f .FIXUP P |
| 161A | f(F770A007): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.times THENg version := 0;h Texts.Write(W,i "*")j;k ORS.Get(sym)l ELSEm versionn := 1 ENDo ; |
| 161B | g .FIXUP D |
| 161B | g(8D000003): LDR SB, MT, MOD0 [ORP] |
| 161C | g(80D0001C): LDR R0, SB, 1CH [data] |
| 161D | g(40090001): SUB R0, R0, 1H |
| 161E | g(E900000C): BNE 12 [162BH] |
| 161F | h(40000000): MOV R0, R0, 0H |
| 1620 | h .FIXUP D |
| 1620 | h(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1621 | h(A0D0002C): STR R0, SB, 2CH [data] |
| 1622 | i(40D80068): ADD R0, SB, 68H |
| 1623 | i .FIXUP D |
| 1623 | i(8D100003): LDR SB, MT, MOD1 [Texts] |
| 1624 | i(41D80005): ADD R1, SB, VAR5 |
| 1625 | j(4200002A): MOV R2, R0, 2AH |
| 1626 | k .FIXUP P |
| 1626 | k(F711B00C): BL MOD1 [Texts] PROC27 |
| 1627 | l .FIXUP D |
| 1627 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1628 | l(40D8001C): ADD R0, SB, 1CH [data] |
| 1629 | m .FIXUP P |
| 1629 | m(F770A003): BL MOD7 [ORS] PROC10 |
| 162A | n(E7000003): B 3 [162EH] |
| 162B | o(40000001): MOV R0, R0, 1H |
| 162C | o .FIXUP D |
| 162C | o(8D000005): LDR SB, MT, MOD0 [ORP] |
| 162D | o(A0D0002C): STR R0, SB, 2CH [data] |
| ORB.Init;p ORB.OpenScope;q |
| 162E | p .FIXUP P |
| 162E | p(F7818005): BL MOD8 [ORB] PROC24 |
| 162F | q .FIXUP P |
| 162F | q(F7813001): BL MOD8 [ORB] PROC19 |
| IF sym = ORS.ident THENr |
| 1630 | r .FIXUP D |
| 1630 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1631 | r(80D0001C): LDR R0, SB, 1CH [data] |
| 1632 | r(4009001F): SUB R0, R0, 1FH |
| 1633 | r(E9000014): BNE 20 [1648H] |
| ORS.CopyId(modid)s;t ORS.Get(sym)u;v |
| 1634 | s .FIXUP D |
| 1634 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1635 | s(40D80040): ADD R0, SB, 40H [data] |
| 1636 | t .FIXUP P |
| 1636 | t(F7707007): BL MOD7 [ORS] PROC7 |
| 1637 | u .FIXUP D |
| 1637 | u(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1638 | u(40D8001C): ADD R0, SB, 1CH [data] |
| 1639 | v .FIXUP P |
| 1639 | v(F770A003): BL MOD7 [ORS] PROC10 |
| Texts.WriteString(W,w modid)x;y Texts.Append(Oberon.Log,z W.buf)a |
| 163A | w .FIXUP D |
| 163A | w(8D000003): LDR SB, MT, MOD0 [ORP] |
| 163B | w(40D80068): ADD R0, SB, 68H [data] |
| 163C | w .FIXUP D |
| 163C | w(8D100002): LDR SB, MT, MOD1 [Texts] |
| 163D | w(41D80005): ADD R1, SB, VAR5 |
| 163E | x .FIXUP D |
| 163E | x(8D000002): LDR SB, MT, MOD0 [ORP] |
| 163F | x(42D80040): ADD R2, SB, 40H [data] |
| 1640 | x(43000020): MOV R3, R0, 20H |
| 1641 | y .FIXUP P |
| 1641 | y(F711D008): BL MOD1 [Texts] PROC29 |
| 1642 | z .FIXUP D |
| 1642 | z(8D400004): LDR SB, MT, MOD4 [Oberon] |
| 1643 | z(80D0000D): LDR R0, SB, VAR13 |
| 1644 | a .FIXUP D |
| 1644 | a(8D000002): LDR SB, MT, MOD0 [ORP] |
| 1645 | a(81D00068): LDR R1, SB, 68H [data] |
| ELSEb ORSc.Mark("identifier expected")d |
| 1646 | b .FIXUP P |
| 1646 | b(F710E005): BL MOD1 [Texts] PROC14 |
| 1647 | c(E7000004): B 4 [164CH] |
| 1648 | d .FIXUP D |
| 1648 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1649 | d(40D808BC): ADD R0, SB, 8BCH ["identifier expected"] |
| 164A | d(41000014): MOV R1, R0, 14H |
| ENDe ; |
| 164B | e .FIXUP P |
| 164B | e(F7709005): BL MOD7 [ORS] PROC9 |
| Check(ORS.semicolon,f "no ;")g;h level := 0;i dc := 0;j exno := 1;k key := 0;l |
| 164C | f(40000034): MOV R0, R0, 34H |
| 164D | g .FIXUP D |
| 164D | g(8D000005): LDR SB, MT, MOD0 [ORP] |
| 164E | g(41D808D0): ADD R1, SB, 8D0H ["no ;"] |
| 164F | g(42000005): MOV R2, R0, 5H |
| 1650 | h(F7FFE9AF): BL -5713 [0000H] |
| 1651 | i(40000000): MOV R0, R0, 0H |
| 1652 | i .FIXUP D |
| 1652 | i(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1653 | i(A0D00024): STR R0, SB, 24H [data] |
| 1654 | j(40000000): MOV R0, R0, 0H |
| 1655 | j(A0D00020): STR R0, SB, 20H |
| 1656 | k(40000001): MOV R0, R0, 1H |
| 1657 | k(A0D00028): STR R0, SB, 28H |
| 1658 | l(40000000): MOV R0, R0, 0H |
| 1659 | l(A0E00004): STR R0, SP, 4H |
| IF sym = ORS.import THENm |
| 165A | m(80D0001C): LDR R0, SB, 1CH |
| 165B | m(40090044): SUB R0, R0, 44H |
| 165C | m(E9000044): BNE 68 [16A1H] |
| ORS.Get(sym)n;o |
| 165D | n .FIXUP D |
| 165D | n(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 165E | n(40D8001C): ADD R0, SB, 1CH [data] |
| 165F | o .FIXUP P |
| 165F | o(F770A014): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOp |
| 1660 | p .FIXUP D |
| 1660 | p(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1661 | p(80D0001C): LDR R0, SB, 1CH [data] |
| 1662 | p(4009001F): SUB R0, R0, 1FH |
| 1663 | p(E9000038): BNE 56 [169CH] |
| ORS.CopyId(impid)q;r ORS.Get(sym)s;t |
| 1664 | q(40E80008): ADD R0, SP, 8H |
| 1665 | r .FIXUP P |
| 1665 | r(F7707006): BL MOD7 [ORS] PROC7 |
| 1666 | s .FIXUP D |
| 1666 | s(8D000006): LDR SB, MT, MOD0 [ORP] |
| 1667 | s(40D8001C): ADD R0, SB, 1CH [data] |
| 1668 | t .FIXUP P |
| 1668 | t(F770A003): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.becomes THENu |
| 1669 | u .FIXUP D |
| 1669 | u(8D000003): LDR SB, MT, MOD0 [ORP] |
| 166A | u(80D0001C): LDR R0, SB, 1CH [data] |
| 166B | u(4009002A): SUB R0, R0, 2AH |
| 166C | u(E9000012): BNE 18 [167FH] |
| ORS.Get(sym)v;w |
| 166D | v .FIXUP D |
| 166D | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 166E | v(40D8001C): ADD R0, SB, 1CH [data] |
| 166F | w .FIXUP P |
| 166F | w(F770A007): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENx ORS.CopyId(impid1)y;z ORS.Get(sym)a |
| 1670 | x .FIXUP D |
| 1670 | x(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1671 | x(80D0001C): LDR R0, SB, 1CH [data] |
| 1672 | x(4009001F): SUB R0, R0, 1FH |
| 1673 | x(E9000006): BNE 6 [167AH] |
| 1674 | y(40E80028): ADD R0, SP, 28H |
| 1675 | z .FIXUP P |
| 1675 | z(F7707006): BL MOD7 [ORS] PROC7 |
| 1676 | a .FIXUP D |
| 1676 | a(8D000006): LDR SB, MT, MOD0 [ORP] |
| 1677 | a(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEb ORSc.Mark("id expected")d |
| 1678 | b .FIXUP P |
| 1678 | b(F770A003): BL MOD7 [ORS] PROC10 |
| 1679 | c(E7000004): B 4 [167EH] |
| 167A | d .FIXUP D |
| 167A | d(8D000004): LDR SB, MT, MOD0 [ORP] |
| 167B | d(40D808D8): ADD R0, SB, 8D8H ["id expected"] |
| 167C | d(4100000C): MOV R1, R0, CH |
| ENDe |
| 167D | e .FIXUP P |
| 167D | e(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE impid1f := impid |
| 167E | f(E7000009): B 9 [1688H] |
| ENDg ; |
| 167F | g(40E80028): ADD R0, SP, 28H |
| 1680 | g(41E80008): ADD R1, SP, 8H |
| 1681 | g(42000008): MOV R2, R0, 8H |
| 1682 | g(83100000): LDR R3, R1, 0H |
| 1683 | g(41180004): ADD R1, R1, 4H |
| 1684 | g(A3000000): STR R3, R0, 0H |
| 1685 | g(40080004): ADD R0, R0, 4H |
| 1686 | g(42290001): SUB R2, R2, 1H |
| 1687 | g(E9FFFFFA): BNE -6 [1682H] |
| ORB.Import(impid,h impid1)i;j |
| 1688 | h(40E80008): ADD R0, SP, 8H |
| 1689 | i(41E80028): ADD R1, SP, 28H |
| 168A | j .FIXUP P |
| 168A | j(F781600D): BL MOD8 [ORB] PROC22 |
| IF sym = ORS.comma THENk ORS.Get(sym)l |
| 168B | k .FIXUP D |
| 168B | k(8D000011): LDR SB, MT, MOD0 [ORP] |
| 168C | k(80D0001C): LDR R0, SB, 1CH [data] |
| 168D | k(40090028): SUB R0, R0, 28H |
| 168E | k(E9000004): BNE 4 [1693H] |
| 168F | l .FIXUP D |
| 168F | l(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1690 | l(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFm symn = ORS.ident THENo ORS.Mark("comma missing")p |
| 1691 | m .FIXUP P |
| 1691 | m(F770A007): BL MOD7 [ORS] PROC10 |
| 1692 | n(E7000008): B 8 [169BH] |
| 1693 | o .FIXUP D |
| 1693 | o(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1694 | o(80D0001C): LDR R0, SB, 1CH [data] |
| 1695 | o(4009001F): SUB R0, R0, 1FH |
| 1696 | o(E9000004): BNE 4 [169BH] |
| 1697 | p .FIXUP D |
| 1697 | p(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1698 | p(40D808E4): ADD R0, SB, 8E4H ["comma missing"] |
| 1699 | p(4100000E): MOV R1, R0, EH |
| ENDq |
| 169A | q .FIXUP P |
| 169A | q(F7709009): BL MOD7 [ORS] PROC9 |
| ENDr ; |
| 169B | r(E7FFFFC4): B -60 [1660H] |
| Check(ORS.semicolon,s "no ;")t |
| 169C | s(40000034): MOV R0, R0, 34H |
| 169D | t .FIXUP D |
| 169D | t(8D000006): LDR SB, MT, MOD0 [ORP] |
| 169E | t(41D808F4): ADD R1, SB, 8F4H ["no ;"] |
| 169F | t(42000005): MOV R2, R0, 5H |
| ENDu ; |
| 16A0 | u(F7FFE95F): BL -5793 [0000H] |
| ORG.Open(version)v;w Declarations(dc)x;y ORG.SetDataSize((dc + 3)z DIV 4 *a 4)b;c |
| 16A1 | v .FIXUP D |
| 16A1 | v(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16A2 | v(80D0002C): LDR R0, SB, 2CH [data] |
| 16A3 | w .FIXUP P |
| 16A3 | w(F794F009): BL MOD9 [ORG] PROC79 |
| 16A4 | x .FIXUP D |
| 16A4 | x(8D000003): LDR SB, MT, MOD0 [ORP] |
| 16A5 | x(40D80020): ADD R0, SB, 20H [data] |
| 16A6 | y(F7FFFCD0): BL -816 [1377H] |
| 16A7 | z .FIXUP D |
| 16A7 | z(8D000003): LDR SB, MT, MOD0 [ORP] |
| 16A8 | z(80D00020): LDR R0, SB, 20H [data] |
| 16A9 | z(40080003): ADD R0, R0, 3H |
| 16AA | a(40020002): ASR R0, R0, 2H |
| 16AB | b(40010002): LSL R0, R0, 2H |
| 16AC | c .FIXUP P |
| 16AC | c(F7950009): BL MOD9 [ORG] PROC80 |
| WHILE sym = ORS.procedure DOd ProcedureDecl;e Check(ORS.semicolon,f "no ;")g ENDh ; |
| 16AD | d .FIXUP D |
| 16AD | d(8D000006): LDR SB, MT, MOD0 [ORP] |
| 16AE | d(80D0001C): LDR R0, SB, 1CH [data] |
| 16AF | d(40090042): SUB R0, R0, 42H |
| 16B0 | d(E9000007): BNE 7 [16B8H] |
| 16B1 | e(F7FFFE46): BL -442 [14F8H] |
| 16B2 | f(40000034): MOV R0, R0, 34H |
| 16B3 | g .FIXUP D |
| 16B3 | g(8D000006): LDR SB, MT, MOD0 [ORP] |
| 16B4 | g(41D808FC): ADD R1, SB, 8FCH ["no ;"] |
| 16B5 | g(42000005): MOV R2, R0, 5H |
| 16B6 | h(F7FFE949): BL -5815 [0000H] |
| 16B7 | h(E7FFFFF5): B -11 [16ADH] |
| ORG.Header;i |
| 16B8 | i .FIXUP P |
| 16B8 | i(F795100C): BL MOD9 [ORG] PROC81 |
| IF sym = ORS.begin THENj ORS.Get(sym)k;l StatSequence ENDm ; |
| 16B9 | j .FIXUP D |
| 16B9 | j(8D000006): LDR SB, MT, MOD0 [ORP] |
| 16BA | j(80D0001C): LDR R0, SB, 1CH [data] |
| 16BB | j(40090043): SUB R0, R0, 43H |
| 16BC | j(E9000004): BNE 4 [16C1H] |
| 16BD | k .FIXUP D |
| 16BD | k(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16BE | k(40D8001C): ADD R0, SB, 1CH [data] |
| 16BF | l .FIXUP P |
| 16BF | l(F770A007): BL MOD7 [ORS] PROC10 |
| 16C0 | m(F7FFF517): BL -2793 [0BD8H] |
| Check(ORS.end,n "no END")o;p |
| 16C1 | n(40000035): MOV R0, R0, 35H |
| 16C2 | o .FIXUP D |
| 16C2 | o(8D000005): LDR SB, MT, MOD0 [ORP] |
| 16C3 | o(41D80904): ADD R1, SB, 904H ["no END"] |
| 16C4 | o(42000007): MOV R2, R0, 7H |
| 16C5 | p(F7FFE93A): BL -5830 [0000H] |
| IF sym = ORS.ident THENq |
| 16C6 | q .FIXUP D |
| 16C6 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16C7 | q(80D0001C): LDR R0, SB, 1CH [data] |
| 16C8 | q(4009001F): SUB R0, R0, 1FH |
| 16C9 | q(E9000015): BNE 21 [16DFH] |
| IF ORS.id # modid THENr ORS.Mark("no match")s ENDt ; |
| 16CA | r .FIXUP D |
| 16CA | r(8D700004): LDR SB, MT, MOD7 [ORS] |
| 16CB | r(40D80004): ADD R0, SB, VAR4 |
| 16CC | r .FIXUP D |
| 16CC | r(8D000002): LDR SB, MT, MOD0 [ORP] |
| 16CD | r(41D80040): ADD R1, SB, 40H [data] |
| 16CE | r(92000000): LDR R2, R0, 0H |
| 16CF | r(40080001): ADD R0, R0, 1H |
| 16D0 | r(93100000): LDR R3, R1, 0H |
| 16D1 | r(41180001): ADD R1, R1, 1H |
| 16D2 | r(04290003): SUB R4, R2, R3 |
| 16D3 | r(E9000002): BNE 2 [16D6H] |
| 16D4 | r(44290000): SUB R4, R2, 0H |
| 16D5 | r(E9FFFFF8): BNE -8 [16CEH] |
| 16D6 | r(E1000004): BEQ 4 [16DBH] |
| 16D7 | s .FIXUP D |
| 16D7 | s(8D00000B): LDR SB, MT, MOD0 [ORP] |
| 16D8 | s(40D8090C): ADD R0, SB, 90CH ["no match"] |
| 16D9 | s(41000009): MOV R1, R0, 9H |
| 16DA | t .FIXUP P |
| 16DA | t(F770901B): BL MOD7 [ORS] PROC9 |
| ORS.Get(sym)u |
| 16DB | u .FIXUP D |
| 16DB | u(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16DC | u(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEv ORSw.Mark("identifier missing")x |
| 16DD | v .FIXUP P |
| 16DD | v(F770A003): BL MOD7 [ORS] PROC10 |
| 16DE | w(E7000004): B 4 [16E3H] |
| 16DF | x .FIXUP D |
| 16DF | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16E0 | x(40D80918): ADD R0, SB, 918H ["identifier missing"] |
| 16E1 | x(41000013): MOV R1, R0, 13H |
| ENDy ; |
| 16E2 | y .FIXUP P |
| 16E2 | y(F7709005): BL MOD7 [ORS] PROC9 |
| IF sym # ORS.period THENz ORS.Mark("period missing")a ENDb ; |
| 16E3 | z .FIXUP D |
| 16E3 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16E4 | z(80D0001C): LDR R0, SB, 1CH [data] |
| 16E5 | z(40090012): SUB R0, R0, 12H |
| 16E6 | z(E1000004): BEQ 4 [16EBH] |
| 16E7 | a .FIXUP D |
| 16E7 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
| 16E8 | a(40D8092C): ADD R0, SB, 92CH ["period missing"] |
| 16E9 | a(4100000F): MOV R1, R0, FH |
| 16EA | b .FIXUP P |
| 16EA | b(F7709008): BL MOD7 [ORS] PROC9 |
| IF (ORS.errcnt = 0)c & (dversion # 0)e THENf |
| 16EB | c .FIXUP D |
| 16EB | c(8D700004): LDR SB, MT, MOD7 [ORS] |
| 16EC | c(80D00006): LDR R0, SB, VAR6 |
| 16ED | d(E9000013): BNE 19 [1701H] |
| 16EE | e .FIXUP D |
| 16EE | e(8D000003): LDR SB, MT, MOD0 [ORP] |
| 16EF | e(80D0002C): LDR R0, SB, 2CH [data] |
| 16F0 | f(E1000010): BEQ 16 [1701H] |
| ORB.Export(modid,g newSF,h key)i;j |
| 16F1 | g .FIXUP D |
| 16F1 | g(8D000003): LDR SB, MT, MOD0 [ORP] |
| 16F2 | g(40D80040): ADD R0, SB, 40H [data] |
| 16F3 | h(41D80030): ADD R1, SB, 30H |
| 16F4 | i(42E80004): ADD R2, SP, 4H |
| 16F5 | j .FIXUP P |
| 16F5 | j(F781700B): BL MOD8 [ORB] PROC23 |
| IF newSF THENk Texts.WriteString(W,l " new symbol file")m ENDn |
| 16F6 | k .FIXUP D |
| 16F6 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
| 16F7 | k(90D00030): LDR R0, SB, 30H [data] |
| 16F8 | k(E1000008): BEQ 8 [1701H] |
| 16F9 | l .FIXUP D |
| 16F9 | l(8D000003): LDR SB, MT, MOD0 [ORP] |
| 16FA | l(40D80068): ADD R0, SB, 68H [data] |
| 16FB | l .FIXUP D |
| 16FB | l(8D100002): LDR SB, MT, MOD1 [Texts] |
| 16FC | l(41D80005): ADD R1, SB, VAR5 |
| 16FD | m .FIXUP D |
| 16FD | m(8D000002): LDR SB, MT, MOD0 [ORP] |
| 16FE | m(42D8093C): ADD R2, SB, 93CH [" new symbol file"] |
| 16FF | m(43000011): MOV R3, R0, 11H |
| 1700 | n .FIXUP P |
| 1700 | n(F711D00B): BL MOD1 [Texts] PROC29 |
| END ; |
| IF ORS.errcnt = 0 THENo |
| 1701 | o .FIXUP D |
| 1701 | o(8D700004): LDR SB, MT, MOD7 [ORS] |
| 1702 | o(80D00006): LDR R0, SB, VAR6 |
| 1703 | o(E900001C): BNE 28 [1720H] |
| ORG.Close(modid,p key,q exno)r;s |
| 1704 | p .FIXUP D |
| 1704 | p(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1705 | p(40D80040): ADD R0, SB, 40H [data] |
| 1706 | q(81E00004): LDR R1, SP, 4H |
| 1707 | r(82D00028): LDR R2, SB, 28H |
| 1708 | s .FIXUP P |
| 1708 | s(F7952008): BL MOD9 [ORG] PROC82 |
| Texts.WriteInt(W,t ORG.pc,u 6)v;w Texts.WriteInt(W,x dc,y 6)z;a Texts.WriteHex(W,b key)c |
| 1709 | t .FIXUP D |
| 1709 | t(8D000005): LDR SB, MT, MOD0 [ORP] |
| 170A | t(40D80068): ADD R0, SB, 68H [data] |
| 170B | t .FIXUP D |
| 170B | t(8D100002): LDR SB, MT, MOD1 [Texts] |
| 170C | t(41D80005): ADD R1, SB, VAR5 |
| 170D | u .FIXUP D |
| 170D | u(8D900002): LDR SB, MT, MOD9 [ORG] |
| 170E | u(82D00002): LDR R2, SB, VAR2 |
| 170F | v(43000006): MOV R3, R0, 6H |
| 1710 | w .FIXUP P |
| 1710 | w(F711E008): BL MOD1 [Texts] PROC30 |
| 1711 | x .FIXUP D |
| 1711 | x(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1712 | x(40D80068): ADD R0, SB, 68H [data] |
| 1713 | x .FIXUP D |
| 1713 | x(8D100002): LDR SB, MT, MOD1 [Texts] |
| 1714 | x(41D80005): ADD R1, SB, VAR5 |
| 1715 | y .FIXUP D |
| 1715 | y(8D000002): LDR SB, MT, MOD0 [ORP] |
| 1716 | y(82D00020): LDR R2, SB, 20H [data] |
| 1717 | z(43000006): MOV R3, R0, 6H |
| 1718 | a .FIXUP P |
| 1718 | a(F711E008): BL MOD1 [Texts] PROC30 |
| 1719 | b .FIXUP D |
| 1719 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
| 171A | b(40D80068): ADD R0, SB, 68H [data] |
| 171B | b .FIXUP D |
| 171B | b(8D100002): LDR SB, MT, MOD1 [Texts] |
| 171C | b(41D80005): ADD R1, SB, VAR5 |
| 171D | c(82E00004): LDR R2, SP, 4H |
| ELSEd Textse.WriteLn(W)f;g Texts.WriteString(W,h "compilation FAILED")i |
| 171E | d .FIXUP P |
| 171E | d(F711F006): BL MOD1 [Texts] PROC31 |
| 171F | e(E700000D): B 13 [172DH] |
| 1720 | f .FIXUP D |
| 1720 | f(8D000005): LDR SB, MT, MOD0 [ORP] |
| 1721 | f(40D80068): ADD R0, SB, 68H [data] |
| 1722 | f .FIXUP D |
| 1722 | f(8D100002): LDR SB, MT, MOD1 [Texts] |
| 1723 | f(41D80005): ADD R1, SB, VAR5 |
| 1724 | g .FIXUP P |
| 1724 | g(F711C006): BL MOD1 [Texts] PROC28 |
| 1725 | h .FIXUP D |
| 1725 | h(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1726 | h(40D80068): ADD R0, SB, 68H [data] |
| 1727 | h .FIXUP D |
| 1727 | h(8D100002): LDR SB, MT, MOD1 [Texts] |
| 1728 | h(41D80005): ADD R1, SB, VAR5 |
| 1729 | i .FIXUP D |
| 1729 | i(8D000002): LDR SB, MT, MOD0 [ORP] |
| 172A | i(42D80950): ADD R2, SB, 950H ["compilation FAILED"] |
| 172B | i(43000013): MOV R3, R0, 13H |
| ENDj ; |
| 172C | j .FIXUP P |
| 172C | j(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)k;l Texts.Append(Oberon.Log,m W.buf)n;o |
| 172D | k .FIXUP D |
| 172D | k(8D000004): LDR SB, MT, MOD0 [ORP] |
| 172E | k(40D80068): ADD R0, SB, 68H [data] |
| 172F | k .FIXUP D |
| 172F | k(8D100002): LDR SB, MT, MOD1 [Texts] |
| 1730 | k(41D80005): ADD R1, SB, VAR5 |
| 1731 | l .FIXUP P |
| 1731 | l(F711C005): BL MOD1 [Texts] PROC28 |
| 1732 | m .FIXUP D |
| 1732 | m(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 1733 | m(80D0000D): LDR R0, SB, VAR13 |
| 1734 | n .FIXUP D |
| 1734 | n(8D000002): LDR SB, MT, MOD0 [ORP] |
| 1735 | n(81D00068): LDR R1, SB, 68H [data] |
| 1736 | o .FIXUP P |
| 1736 | o(F710E005): BL MOD1 [Texts] PROC14 |
| ORB.CloseScope;p pbsList := NIL |
| 1737 | p .FIXUP P |
| 1737 | p(F7814001): BL MOD8 [ORB] PROC20 |
| ELSEq ORSr.Mark("must start with MODULE")s |
| 1738 | q(40000000): MOV R0, R0, 0H |
| 1739 | q .FIXUP D |
| 1739 | q(8D000005): LDR SB, MT, MOD0 [ORP] |
| 173A | q(A0D00060): STR R0, SB, 60H [data] |
| 173B | r(E7000004): B 4 [1740H] |
| 173C | s .FIXUP D |
| 173C | s(8D000003): LDR SB, MT, MOD0 [ORP] |
| 173D | s(40D80964): ADD R0, SB, 964H ["must start with MODULE"] |
| 173E | s(41000017): MOV R1, R0, 17H |
| ENDt |
| 173F | t .FIXUP P |
| 173F | t(F7709008): BL MOD7 [ORS] PROC9 |
| ENDu Module; |
| 1740 | u(8FE00000): LDR LNK, SP, 0H |
| 1741 | u(4EE80048): ADD SP, SP, 48H |
| 1742 | u(C700000F): B LNK |
| |
| PROCEDURE Option(VAR S: Texts.Scanner); |
| BEGINv newSF := FALSE;w |
| 1743 | v(4EE9000C): SUB SP, SP, CH |
| 1744 | v(AFE00000): STR LNK, SP, 0H |
| 1745 | v(A0E00004): STR R0, SP, 4H |
| 1746 | v(A1E00008): STR R1, SP, 8H |
| 1747 | w(40000000): MOV R0, R0, 0H |
| 1748 | w .FIXUP D |
| 1748 | w(8D00000C): LDR SB, MT, MOD0 [ORP] |
| 1749 | w(B0D00030): STR R0, SB, 30H [data] |
| IF S.nextCh = "/" THENx |
| 174A | x(80E00004): LDR R0, SP, 4H |
| 174B | x(90000034): LDR R0, R0, 34H |
| 174C | x(4009002F): SUB R0, R0, 2FH |
| 174D | x(E9000011): BNE 17 [175FH] |
| Texts.Scan(S)y;z Texts.Scan(S)a;b |
| 174E | y(80E00004): LDR R0, SP, 4H |
| 174F | y(81E00008): LDR R1, SP, 8H |
| 1750 | z .FIXUP P |
| 1750 | z(F7116011): BL MOD1 [Texts] PROC22 |
| 1751 | a(80E00004): LDR R0, SP, 4H |
| 1752 | a(81E00008): LDR R1, SP, 8H |
| 1753 | b .FIXUP P |
| 1753 | b(F7116003): BL MOD1 [Texts] PROC22 |
| IF (S.class = Texts.Name)c & (dS.s[0] = "s")e THENf newSF := TRUE ENDg |
| 1754 | c(80E00004): LDR R0, SP, 4H |
| 1755 | c(8000003C): LDR R0, R0, 3CH |
| 1756 | c(40090001): SUB R0, R0, 1H |
| 1757 | d(E9000007): BNE 7 [175FH] |
| 1758 | e(80E00004): LDR R0, SP, 4H |
| 1759 | e(90000054): LDR R0, R0, 54H |
| 175A | e(40090073): SUB R0, R0, 73H |
| 175B | f(E9000003): BNE 3 [175FH] |
| 175C | g(40000001): MOV R0, R0, 1H |
| 175D | g .FIXUP D |
| 175D | g(8D000015): LDR SB, MT, MOD0 [ORP] |
| 175E | g(B0D00030): STR R0, SB, 30H [data] |
| END |
| ENDh Option; |
| 175F | h(8FE00000): LDR LNK, SP, 0H |
| 1760 | h(4EE8000C): ADD SP, SP, CH |
| 1761 | h(C700000F): B LNK |
| |
| PROCEDURE Compile*; |
| VAR beg, end, time: LONGINT; |
| T: Texts.Text; |
| S: Texts.Scanner; |
| BEGINi Texts.OpenScanner(S,j Oberon.Par.text,k Oberon.Par.pos)l;m Texts.Scan(S)n;o |
| 1762 | i .PROC 1 |
| 1762 | i .COMMAND Compile |
| 1762 | i(4EE90088): SUB SP, SP, 88H |
| 1763 | i(AFE00000): STR LNK, SP, 0H |
| 1764 | j(40E80014): ADD R0, SP, 14H |
| 1765 | j .FIXUP D |
| 1765 | j(8D100008): LDR SB, MT, MOD1 [Texts] |
| 1766 | j(41D80003): ADD R1, SB, VAR3 |
| 1767 | k .FIXUP D |
| 1767 | k(8D400002): LDR SB, MT, MOD4 [Oberon] |
| 1768 | k(42D8000E): ADD R2, SB, VAR14 |
| 1769 | k(82200008): LDR R2, R2, 8H |
| 176A | l .FIXUP D |
| 176A | l(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 176B | l(43D8000E): ADD R3, SB, VAR14 |
| 176C | l(8330000C): LDR R3, R3, CH |
| 176D | m .FIXUP P |
| 176D | m(F711501A): BL MOD1 [Texts] PROC21 |
| 176E | n(40E80014): ADD R0, SP, 14H |
| 176F | n .FIXUP D |
| 176F | n(8D100005): LDR SB, MT, MOD1 [Texts] |
| 1770 | n(41D80003): ADD R1, SB, VAR3 |
| 1771 | o .FIXUP P |
| 1771 | o(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Char THENp |
| 1772 | p(80E00050): LDR R0, SP, 50H |
| 1773 | p(40090006): SUB R0, R0, 6H |
| 1774 | p(E9000049): BNE 73 [17BEH] |
| IF S.c = "@" THENq |
| 1775 | q(90E00060): LDR R0, SP, 60H |
| 1776 | q(40090040): SUB R0, R0, 40H |
| 1777 | q(E9000011): BNE 17 [1789H] |
| Option(S)r;s Oberon.GetSelection(T,t beg,u end,v time)w;x |
| 1778 | r(40E80014): ADD R0, SP, 14H |
| 1779 | r .FIXUP D |
| 1779 | r(8D10000A): LDR SB, MT, MOD1 [Texts] |
| 177A | r(41D80003): ADD R1, SB, VAR3 |
| 177B | s(F7FFFFC7): BL -57 [1743H] |
| 177C | t(40E80010): ADD R0, SP, 10H |
| 177D | u(41E80004): ADD R1, SP, 4H |
| 177E | v(42E80008): ADD R2, SP, 8H |
| 177F | w(43E8000C): ADD R3, SP, CH |
| 1780 | x .FIXUP P |
| 1780 | x(F742900F): BL MOD4 [Oberon] PROC41 |
| IF time >= 0 THENy ORS.Init(T,z beg)a;b Module ENDc |
| 1781 | y(80E0000C): LDR R0, SP, CH |
| 1782 | y(40090000): SUB R0, R0, 0H |
| 1783 | y(E5000004): BLT 4 [1788H] |
| 1784 | z(80E00010): LDR R0, SP, 10H |
| 1785 | a(81E00004): LDR R1, SP, 4H |
| 1786 | b .FIXUP P |
| 1786 | b(F770B006): BL MOD7 [ORS] PROC11 |
| 1787 | c(F7FFFE7F): BL -385 [1607H] |
| ELSIF Sd.c = "^" THENe |
| 1788 | d(E7000034): B 52 [17BDH] |
| 1789 | e(90E00060): LDR R0, SP, 60H |
| 178A | e(4009005E): SUB R0, R0, 5EH |
| 178B | e(E9000031): BNE 49 [17BDH] |
| Option(S)f;g Oberon.GetSelection(T,h beg,i end,j time)k;l |
| 178C | f(40E80014): ADD R0, SP, 14H |
| 178D | f .FIXUP D |
| 178D | f(8D100014): LDR SB, MT, MOD1 [Texts] |
| 178E | f(41D80003): ADD R1, SB, VAR3 |
| 178F | g(F7FFFFB3): BL -77 [1743H] |
| 1790 | h(40E80010): ADD R0, SP, 10H |
| 1791 | i(41E80004): ADD R1, SP, 4H |
| 1792 | j(42E80008): ADD R2, SP, 8H |
| 1793 | k(43E8000C): ADD R3, SP, CH |
| 1794 | l .FIXUP P |
| 1794 | l(F742900E): BL MOD4 [Oberon] PROC41 |
| IF time >= 0 THENm |
| 1795 | m(80E0000C): LDR R0, SP, CH |
| 1796 | m(40090000): SUB R0, R0, 0H |
| 1797 | m(E5000025): BLT 37 [17BDH] |
| Texts.OpenScanner(S,n T,o beg)p;q Texts.Scan(S)r;s |
| 1798 | n(40E80014): ADD R0, SP, 14H |
| 1799 | n .FIXUP D |
| 1799 | n(8D10000C): LDR SB, MT, MOD1 [Texts] |
| 179A | n(41D80003): ADD R1, SB, VAR3 |
| 179B | o(82E00010): LDR R2, SP, 10H |
| 179C | p(83E00004): LDR R3, SP, 4H |
| 179D | q .FIXUP P |
| 179D | q(F7115009): BL MOD1 [Texts] PROC21 |
| 179E | r(40E80014): ADD R0, SP, 14H |
| 179F | r .FIXUP D |
| 179F | r(8D100006): LDR SB, MT, MOD1 [Texts] |
| 17A0 | r(41D80003): ADD R1, SB, VAR3 |
| 17A1 | s .FIXUP P |
| 17A1 | s(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Name THENt |
| 17A2 | t(80E00050): LDR R0, SP, 50H |
| 17A3 | t(40090001): SUB R0, R0, 1H |
| 17A4 | t(E9000018): BNE 24 [17BDH] |
| Texts.WriteString(W,u S.s)v;w NEW(T);x Texts.Open(T,y S.s)z;a |
| 17A5 | u .FIXUP D |
| 17A5 | u(8D000006): LDR SB, MT, MOD0 [ORP] |
| 17A6 | u(40D80068): ADD R0, SB, 68H [data] |
| 17A7 | u .FIXUP D |
| 17A7 | u(8D100002): LDR SB, MT, MOD1 [Texts] |
| 17A8 | u(41D80005): ADD R1, SB, VAR5 |
| 17A9 | v(42E80068): ADD R2, SP, 68H |
| 17AA | v(43000020): MOV R3, R0, 20H |
| 17AB | w .FIXUP P |
| 17AB | w(F711D00A): BL MOD1 [Texts] PROC29 |
| 17AC | x(40E80010): ADD R0, SP, 10H |
| 17AD | x .FIXUP D |
| 17AD | x(8D100006): LDR SB, MT, MOD1 [Texts] |
| 17AE | x(41D80001): ADD R1, SB, VAR1 |
| 17AF | x(D7A0DE0C): BL MT [trap=0, pos=41182] |
| 17B0 | y(80E00010): LDR R0, SP, 10H |
| 17B1 | z(41E80068): ADD R1, SP, 68H |
| 17B2 | z(42000020): MOV R2, R0, 20H |
| 17B3 | a .FIXUP P |
| 17B3 | a(F7107008): BL MOD1 [Texts] PROC7 |
| IF T.lenb > 0 THENc ORS.Init(T,d 0)e;f Module ENDg |
| 17B4 | b(80E00010): LDR R0, SP, 10H |
| 17B5 | b(D1A1074C): BLEQ MT [trap=4, pos=41223] |
| 17B6 | c(80000000): LDR R0, R0, 0H |
| 17B7 | c(40090000): SUB R0, R0, 0H |
| 17B8 | c(E6000004): BLE 4 [17BDH] |
| 17B9 | d(80E00010): LDR R0, SP, 10H |
| 17BA | e(41000000): MOV R1, R0, 0H |
| 17BB | f .FIXUP P |
| 17BB | f(F770B008): BL MOD7 [ORS] PROC11 |
| 17BC | g(F7FFFE4A): BL -438 [1607H] |
| END |
| END |
| END |
| ELSE |
| WHILEh S.class = Texts.Name DOi |
| 17BD | h(E7000041): B 65 [17FFH] |
| 17BE | i(80E00050): LDR R0, SP, 50H |
| 17BF | i(40090001): SUB R0, R0, 1H |
| 17C0 | i(E900003E): BNE 62 [17FFH] |
| NEW(T);j Texts.Open(T,k S.s)l;m |
| 17C1 | j(40E80010): ADD R0, SP, 10H |
| 17C2 | j .FIXUP D |
| 17C2 | j(8D100015): LDR SB, MT, MOD1 [Texts] |
| 17C3 | j(41D80001): ADD R1, SB, VAR1 |
| 17C4 | j(D7A18D0C): BL MT [trap=0, pos=41357] |
| 17C5 | k(80E00010): LDR R0, SP, 10H |
| 17C6 | l(41E80068): ADD R1, SP, 68H |
| 17C7 | l(42000020): MOV R2, R0, 20H |
| 17C8 | m .FIXUP P |
| 17C8 | m(F710700D): BL MOD1 [Texts] PROC7 |
| IF T.lenn > 0 THENo Option(S)p;q ORS.Init(T,r 0)s;t Module |
| 17C9 | n(80E00010): LDR R0, SP, 10H |
| 17CA | n(D1A1B24C): BLEQ MT [trap=4, pos=41394] |
| 17CB | o(80000000): LDR R0, R0, 0H |
| 17CC | o(40090000): SUB R0, R0, 0H |
| 17CD | o(E6000009): BLE 9 [17D7H] |
| 17CE | p(40E80014): ADD R0, SP, 14H |
| 17CF | p .FIXUP D |
| 17CF | p(8D10000D): LDR SB, MT, MOD1 [Texts] |
| 17D0 | p(41D80003): ADD R1, SB, VAR3 |
| 17D1 | q(F7FFFF71): BL -143 [1743H] |
| 17D2 | r(80E00010): LDR R0, SP, 10H |
| 17D3 | s(41000000): MOV R1, R0, 0H |
| 17D4 | t .FIXUP P |
| 17D4 | t(F770B00C): BL MOD7 [ORS] PROC11 |
| ELSEu Textsv.WriteString(W,w S.s)x;y Texts.WriteString(W,z " not found")a;b |
| 17D5 | u(F7FFFE31): BL -463 [1607H] |
| 17D6 | v(E7000019): B 25 [17F0H] |
| 17D7 | w .FIXUP D |
| 17D7 | w(8D000008): LDR SB, MT, MOD0 [ORP] |
| 17D8 | w(40D80068): ADD R0, SB, 68H [data] |
| 17D9 | w .FIXUP D |
| 17D9 | w(8D100002): LDR SB, MT, MOD1 [Texts] |
| 17DA | w(41D80005): ADD R1, SB, VAR5 |
| 17DB | x(42E80068): ADD R2, SP, 68H |
| 17DC | x(43000020): MOV R3, R0, 20H |
| 17DD | y .FIXUP P |
| 17DD | y(F711D009): BL MOD1 [Texts] PROC29 |
| 17DE | z .FIXUP D |
| 17DE | z(8D000005): LDR SB, MT, MOD0 [ORP] |
| 17DF | z(40D80068): ADD R0, SB, 68H [data] |
| 17E0 | z .FIXUP D |
| 17E0 | z(8D100002): LDR SB, MT, MOD1 [Texts] |
| 17E1 | z(41D80005): ADD R1, SB, VAR5 |
| 17E2 | a .FIXUP D |
| 17E2 | a(8D000002): LDR SB, MT, MOD0 [ORP] |
| 17E3 | a(42D8097C): ADD R2, SB, 97CH [" not found"] |
| 17E4 | a(4300000B): MOV R3, R0, BH |
| 17E5 | b .FIXUP P |
| 17E5 | b(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)c;d Texts.Append(Oberon.Log,e W.buf)f |
| 17E6 | c .FIXUP D |
| 17E6 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
| 17E7 | c(40D80068): ADD R0, SB, 68H [data] |
| 17E8 | c .FIXUP D |
| 17E8 | c(8D100002): LDR SB, MT, MOD1 [Texts] |
| 17E9 | c(41D80005): ADD R1, SB, VAR5 |
| 17EA | d .FIXUP P |
| 17EA | d(F711C005): BL MOD1 [Texts] PROC28 |
| 17EB | e .FIXUP D |
| 17EB | e(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 17EC | e(80D0000D): LDR R0, SB, VAR13 |
| 17ED | f .FIXUP D |
| 17ED | f(8D000002): LDR SB, MT, MOD0 [ORP] |
| 17EE | f(81D00068): LDR R1, SB, 68H [data] |
| ENDg ; |
| 17EF | g .FIXUP P |
| 17EF | g(F710E005): BL MOD1 [Texts] PROC14 |
| IF (T.lenh # 0)i & (jORS.errcnt = 0)k THENl Texts.Scan(S)m ELSEn So.class := 0 ENDp |
| 17F0 | h(80E00010): LDR R0, SP, 10H |
| 17F1 | h(D1A2854C): BLEQ MT [trap=4, pos=41605] |
| 17F2 | i(80000000): LDR R0, R0, 0H |
| 17F3 | j(E1000008): BEQ 8 [17FCH] |
| 17F4 | k .FIXUP D |
| 17F4 | k(8D700007): LDR SB, MT, MOD7 [ORS] |
| 17F5 | k(80D00006): LDR R0, SB, VAR6 |
| 17F6 | l(E9000005): BNE 5 [17FCH] |
| 17F7 | m(40E80014): ADD R0, SP, 14H |
| 17F8 | m .FIXUP D |
| 17F8 | m(8D100004): LDR SB, MT, MOD1 [Texts] |
| 17F9 | m(41D80003): ADD R1, SB, VAR3 |
| 17FA | n .FIXUP P |
| 17FA | n(F711600B): BL MOD1 [Texts] PROC22 |
| 17FB | o(E7000002): B 2 [17FEH] |
| 17FC | p(40000000): MOV R0, R0, 0H |
| 17FD | p(A0E00050): STR R0, SP, 50H |
| ENDq |
| 17FE | q(E7FFFFBF): B -65 [17BEH] |
| END ; |
| Oberon.Collect(0)r |
| 17FF | r(40000000): MOV R0, R0, 0H |
| ENDs Compile; |
| 1800 | s .FIXUP P |
| 1800 | s(F742D006): BL MOD4 [Oberon] PROC45 |
| 1801 | s(8FE00000): LDR LNK, SP, 0H |
| 1802 | s(4EE80088): ADD SP, SP, 88H |
| 1803 | s(C700000F): B LNK |
| |
| BEGINt Texts.OpenWriter(W)u;v Texts.WriteString(W,w "OR Compiler 4.4.2017")x;y |
| 1804 | t .PROC 0 |
| 1804 | t .ENTRYPOINT |
| 1804 | t(4EE90004): SUB SP, SP, 4H |
| 1805 | t(AFE00000): STR LNK, SP, 0H |
| 1806 | u .FIXUP D |
| 1806 | u(8D00000E): LDR SB, MT, MOD0 [ORP] |
| 1807 | u(40D80068): ADD R0, SB, 68H [data] |
| 1808 | u .FIXUP D |
| 1808 | u(8D100002): LDR SB, MT, MOD1 [Texts] |
| 1809 | u(41D80005): ADD R1, SB, VAR5 |
| 180A | v .FIXUP P |
| 180A | v(F711700A): BL MOD1 [Texts] PROC23 |
| 180B | w .FIXUP D |
| 180B | w(8D000003): LDR SB, MT, MOD0 [ORP] |
| 180C | w(40D80068): ADD R0, SB, 68H [data] |
| 180D | w .FIXUP D |
| 180D | w(8D100002): LDR SB, MT, MOD1 [Texts] |
| 180E | w(41D80005): ADD R1, SB, VAR5 |
| 180F | x .FIXUP D |
| 180F | x(8D000002): LDR SB, MT, MOD0 [ORP] |
| 1810 | x(42D80988): ADD R2, SB, 988H ["OR Compiler 4.4.2017"] |
| 1811 | x(43000016): MOV R3, R0, 16H |
| 1812 | y .FIXUP P |
| 1812 | y(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)z;a Texts.Append(Oberon.Log,b W.buf)c;d |
| 1813 | z .FIXUP D |
| 1813 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
| 1814 | z(40D80068): ADD R0, SB, 68H [data] |
| 1815 | z .FIXUP D |
| 1815 | z(8D100002): LDR SB, MT, MOD1 [Texts] |
| 1816 | z(41D80005): ADD R1, SB, VAR5 |
| 1817 | a .FIXUP P |
| 1817 | a(F711C005): BL MOD1 [Texts] PROC28 |
| 1818 | b .FIXUP D |
| 1818 | b(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 1819 | b(80D0000D): LDR R0, SB, VAR13 |
| 181A | c .FIXUP D |
| 181A | c(8D000002): LDR SB, MT, MOD0 [ORP] |
| 181B | c(81D00068): LDR R1, SB, 68H [data] |
| 181C | d .FIXUP P |
| 181C | d(F710E005): BL MOD1 [Texts] PROC14 |
| NEW(dummy);e dummy.classf := ORB.Var;g dummy.typeh := ORB.intType;i |
| 181D | e .FIXUP D |
| 181D | e(8D000003): LDR SB, MT, MOD0 [ORP] |
| 181E | e(40D80064): ADD R0, SB, 64H [data] |
| 181F | e .FIXUP D |
| 181F | e(8D800002): LDR SB, MT, MOD8 [ORB] |
| 1820 | e(41D80001): ADD R1, SB, VAR1 |
| 1821 | e(D7A38D0C): BL MT [trap=0, pos=41869] |
| 1822 | f .FIXUP D |
| 1822 | f(8D000003): LDR SB, MT, MOD0 [ORP] |
| 1823 | f(80D00064): LDR R0, SB, 64H [data] |
| 1824 | f(D1A3994C): BLEQ MT [trap=4, pos=41881] |
| 1825 | g(41000002): MOV R1, R0, 2H |
| 1826 | g(B1000000): STR R1, R0, 0H |
| 1827 | h(80D00064): LDR R0, SB, 64H |
| 1828 | h(D1A3B04C): BLEQ MT [trap=4, pos=41904] |
| 1829 | i .FIXUP D |
| 1829 | i(8D800007): LDR SB, MT, MOD8 [ORB] |
| 182A | i(81D00009): LDR R1, SB, VAR9 |
| 182B | i(A1000010): STR R1, R0, 10H |
| expression := expression0;j Type := Type0;k FormalType := FormalType0 |
| 182C | j(F7000000): BL 0 [182DH] |
| 182D | j(40F93D60): SUB R0, LNK, 3D60H |
| 182E | j .FIXUP D |
| 182E | j(8D000005): LDR SB, MT, MOD0 [ORP] |
| 182F | j(A0D00034): STR R0, SB, 34H [data] |
| 1830 | k(F7000000): BL 0 [1831H] |
| 1831 | k(40F91724): SUB R0, LNK, 1724H |
| 1832 | k(A0D00038): STR R0, SB, 38H |
| ENDl ORP.m |
| 1833 | l(F7000000): BL 0 [1834H] |
| 1834 | l(40F91960): SUB R0, LNK, 1960H |
| 1835 | l(A0D0003C): STR R0, SB, 3CH |
| 1836 | m(8FE00000): LDR LNK, SP, 0H |
| 1837 | m(4EE80004): ADD SP, SP, 4H |
| 1838 | m(C700000F): B LNK |