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