| MODULE ORP; (*N. Wirth 1.7.97 / 23.9.2017 Oberon compiler for RISC in Oberon-07*) |
| .MODULE ORP (KEY E6FCC519, VERSION 1, SIZE 00006ADC) |
| .IMPORT Texts (KEY 0B9E9984) |
| .IMPORT Fonts (KEY F4C9F557) |
| .IMPORT Files (KEY 73F5D686) |
| .IMPORT Oberon (KEY A89CCEE2) |
| .IMPORT Display (KEY 4C08D3EA) |
| .IMPORT Viewers (KEY 25ABF199) |
| .IMPORT ORS (KEY 76547166) |
| .IMPORT ORB (KEY 8A2CD362) |
| .IMPORT ORG (KEY 98F2A948) |
| .TYPEDESC 00000040 FFFFFFFF FFFFFFFF FFFFFFFF 00000024 00000020 FFFFFFFF |
| .DATA 74H |
| .STRING 90H "undef" |
| .STRING 98H "undef" |
| .STRING A0H "identifier expected" |
| .STRING B4H "not Boolean" |
| .STRING C0H "not Integer" |
| .STRING CCH "not Real" |
| .STRING D8H "not Set" |
| .STRING E0H "not Int" |
| .STRING E8H "invalid set" |
| .STRING F4H "not a constant" |
| .STRING 104H "read-only" |
| .STRING 110H "remove asterisk" |
| .STRING 120H "not an extension" |
| .STRING 134H "not an extension" |
| .STRING 148H "incompatible types" |
| .STRING 15CH "type mismatch" |
| .STRING 16CH "not an array" |
| .STRING 17CH "no ]" |
| .STRING 184H "undef" |
| .STRING 18CH "not a record" |
| .STRING 19CH "ident?" |
| .STRING 1A4H "not a pointer" |
| .STRING 1B4H "guard type expected" |
| .STRING 1C8H "not an identifier" |
| .STRING 1DCH " ) missing" |
| .STRING 1E8H "incompatible parameters" |
| .STRING 200H "comma?" |
| .STRING 208H ") missing" |
| .STRING 214H "too few params" |
| .STRING 224H "too many params" |
| .STRING 234H "no (" |
| .STRING 23CH "no )" |
| .STRING 244H "bad type" |
| .STRING 250H "bad type" |
| .STRING 25CH "not an array" |
| .STRING 26CH "bad type" |
| .STRING 278H "casting not allowed" |
| .STRING 28CH "must be a type" |
| .STRING 29CH "wrong nof params" |
| .STRING 2B0H " } missing" |
| .STRING 2BCH "missing comma" |
| .STRING 2CCH "expression expected" |
| .STRING 2E0H "not a function" |
| .STRING 2F0H "no )" |
| .STRING 2F8H "no }" |
| .STRING 300H "not a factor" |
| .STRING 310H "bad type" |
| .STRING 31CH "bad type" |
| .STRING 328H "only = or #" |
| .STRING 334H "illegal comparison" |
| .STRING 348H "only = or #" |
| .STRING 354H "only = or #" |
| .STRING 360H "illegal comparison" |
| .STRING 374H "no (" |
| .STRING 37CH "no )" |
| .STRING 384H "not a pointer to record" |
| .STRING 39CH "bad type" |
| .STRING 3A8H "wrong nof parameters" |
| .STRING 3C0H "not a type" |
| .STRING 3CCH ": expected" |
| .STRING 3D8H "type id expected" |
| .STRING 3ECH "statement expected" |
| .STRING 400H "illegal assignment" |
| .STRING 414H "should be :=" |
| .STRING 424H "not a procedure" |
| .STRING 434H "missing parameters" |
| .STRING 448H "not a procedure" |
| .STRING 458H "illegal assignment" |
| .STRING 46CH "not a procedure" |
| .STRING 47CH "no THEN" |
| .STRING 484H "no THEN" |
| .STRING 48CH "no END" |
| .STRING 494H "no DO" |
| .STRING 49CH "no DO" |
| .STRING 4A4H "no END" |
| .STRING 4ACH "missing UNTIL" |
| .STRING 4BCH "no TO" |
| .STRING 4C4H "no DO" |
| .STRING 4CCH "no END" |
| .STRING 4D4H ":= expected" |
| .STRING 4E0H "identifier expected" |
| .STRING 4F4H "OF expected" |
| .STRING 500H "numeric case not implemented" |
| .STRING 520H "OF expected" |
| .STRING 52CH "ident expected" |
| .STRING 53CH "no END" |
| .STRING 544H "missing semicolon?" |
| .STRING 558H "ident?" |
| .STRING 560H ":?" |
| .STRING 564H "not a valid length" |
| .STRING 578H "dyn array not allowed" |
| .STRING 590H "missing OF" |
| .STRING 59CH "extension of local types not implemented" |
| .STRING 5C8H "invalid extension" |
| .STRING 5DCH "type expected" |
| .STRING 5ECH "ident expected" |
| .STRING 5FCH "no )" |
| .STRING 604H "mult def" |
| .STRING 610H "comma expected" |
| .STRING 620H "colon expected" |
| .STRING 630H "dyn array not allowed" |
| .STRING 648H " ; or END" |
| .STRING 654H "too many parameters" |
| .STRING 668H "no )" |
| .STRING 670H "illegal function type" |
| .STRING 688H "type identifier expected" |
| .STRING 6A4H "not a type" |
| .STRING 6B0H "OF ?" |
| .STRING 6B8H "multi-dimensional open arrays not implemented" |
| .STRING 6E8H "identifier expected" |
| .STRING 6FCH "ptr base must be global" |
| .STRING 714H "not a type" |
| .STRING 720H "not a type or undefined" |
| .STRING 738H "no END" |
| .STRING 740H "no TO" |
| .STRING 748H "external base type not implemented" |
| .STRING 76CH "no valid base type" |
| .STRING 780H "must point to named record" |
| .STRING 79CH "illegal type" |
| .STRING 7ACH "declaration?" |
| .STRING 7BCH "= ?" |
| .STRING 7C0H "expression not constant" |
| .STRING 7D8H "; missing" |
| .STRING 7E4H "=?" |
| .STRING 7E8H "; missing" |
| .STRING 7F4H "; missing" |
| .STRING 800H "undefined pointer base of" |
| .STRING 81CH "declaration in bad order" |
| .STRING 838H "no ;" |
| .STRING 840H "no ;" |
| .STRING 848H "this is not a function" |
| .STRING 860H "wrong result type" |
| .STRING 874H "function without result" |
| .STRING 88CH "no END" |
| .STRING 894H "no match" |
| .STRING 8A0H "no proc id" |
| .STRING 8ACH " compiling " |
| .STRING 8BCH "identifier expected" |
| .STRING 8D0H "no ;" |
| .STRING 8D8H "id expected" |
| .STRING 8E4H "comma missing" |
| .STRING 8F4H "no ;" |
| .STRING 8FCH "no ;" |
| .STRING 904H "no END" |
| .STRING 90CH "no match" |
| .STRING 918H "identifier missing" |
| .STRING 92CH "period missing" |
| .STRING 93CH " new symbol file" |
| .STRING 950H "compilation FAILED" |
| .STRING 964H "must start with MODULE" |
| .STRING 97CH " not found" |
| .STRING 988H "OR Compiler 4.4.2017" |
| .POINTER_REFERENCES 60H 64H 68H 6CH 8CH 80H |
| .FIXUP T 0H |
| IMPORT Texts, Oberon, ORS, ORB, ORG; |
| (*Author: Niklaus Wirth, 2014. |
| Parser of Oberon-RISC compiler. Uses Scanner ORS to obtain symbols (tokens), |
| ORB for definition of data structures and for handling import and export, and |
| ORG to produce binary code. ORP performs type checking and data allocation. |
| Parser is target-independent, except for part of the handling of allocations.*) |
| |
| TYPE PtrBase = POINTER TO PtrBaseDesc; |
| PtrBaseDesc = RECORD (*list of names of pointer base types*) |
| name: ORS.Ident; type: ORB.Type; next: PtrBase |
| END ; |
| |
| VAR sym: INTEGER; (*last symbol read*) |
| dc: LONGINT; (*data counter*) |
| level, exno, version: INTEGER; |
| newSF: BOOLEAN; (*option flag*) |
| expression: PROCEDURE (VAR x: ORG.Item); (*to avoid forward reference*) |
| Type: PROCEDURE (VAR type: ORB.Type); |
| FormalType: PROCEDURE (VAR typ: ORB.Type; dim: INTEGER); |
| modid: ORS.Ident; |
| pbsList: PtrBase; (*list of names of pointer base types*) |
| dummy: ORB.Object; |
| W: Texts.Writer; |
| |
| PROCEDURE Check(s: INTEGER; msg: ARRAY OF CHAR); |
| BEGINa |
0000 | a(4EE90010): SUB SP, SP, 10H |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | a(A0E00004): STR R0, SP, 4H |
0003 | a(A1E00008): STR R1, SP, 8H |
0004 | a(A2E0000C): STR R2, SP, CH |
| IF sym = s THENb ORS.Get(sym)c ELSEd ORSe.Mark(msg)f ENDg |
0005 | b .FIXUP D |
0005 | b(8D000005): LDR SB, MT, MOD0 [ORP] |
0006 | b(80D0001C): LDR R0, SB, 1CH [data] |
0007 | b(81E00004): LDR R1, SP, 4H |
0008 | b(00090001): SUB R0, R0, R1 |
0009 | b(E9000004): BNE 4 [000EH] |
000A | c .FIXUP D |
000A | c(8D000005): LDR SB, MT, MOD0 [ORP] |
000B | c(40D8001C): ADD R0, SB, 1CH [data] |
000C | d .FIXUP P |
000C | d(F770A00C): BL MOD7 [ORS] PROC10 |
000D | e(E7000003): B 3 [0011H] |
000E | f(80E00008): LDR R0, SP, 8H |
000F | f(81E0000C): LDR R1, SP, CH |
0010 | g .FIXUP P |
0010 | g(F7709004): BL MOD7 [ORS] PROC9 |
| ENDh Check; |
0011 | h(8FE00000): LDR LNK, SP, 0H |
0012 | h(4EE80010): ADD SP, SP, 10H |
0013 | h(C700000F): B LNK |
| |
| PROCEDURE qualident(VAR obj: ORB.Object); |
| BEGINi obj := ORB.thisObj();j ORS.Get(sym)k;l |
0014 | i(4EE90008): SUB SP, SP, 8H |
0015 | i(AFE00000): STR LNK, SP, 0H |
0016 | i(A0E00004): STR R0, SP, 4H |
0017 | j .FIXUP P |
0017 | j(F7810007): BL MOD8 [ORB] PROC16 |
0018 | j(81E00004): LDR R1, SP, 4H |
0019 | j(A0100000): STR R0, R1, 0H |
001A | k .FIXUP D |
001A | k(8D000010): LDR SB, MT, MOD0 [ORP] |
001B | k(40D8001C): ADD R0, SB, 1CH [data] |
001C | l .FIXUP P |
001C | l(F770A005): BL MOD7 [ORS] PROC10 |
| IF obj = NIL THENm ORS.Mark("undef")n;o obj := dummy ENDp ; |
001D | m(80E00004): LDR R0, SP, 4H |
001E | m(80000000): LDR R0, R0, 0H |
001F | m(E9000008): BNE 8 [0028H] |
0020 | n .FIXUP D |
0020 | n(8D000006): LDR SB, MT, MOD0 [ORP] |
0021 | n(40D80090): ADD R0, SB, 90H ["undef"] |
0022 | n(41000006): MOV R1, R0, 6H |
0023 | o .FIXUP P |
0023 | o(F7709007): BL MOD7 [ORS] PROC9 |
0024 | p .FIXUP D |
0024 | p(8D000004): LDR SB, MT, MOD0 [ORP] |
0025 | p(80D00064): LDR R0, SB, 64H [data] |
0026 | p(81E00004): LDR R1, SP, 4H |
0027 | p(A0100000): STR R0, R1, 0H |
| IF (sym = ORS.period)q & (robj.classs = ORB.Mod)t THENu |
0028 | q .FIXUP D |
0028 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
0029 | q(80D0001C): LDR R0, SB, 1CH [data] |
002A | q(40090012): SUB R0, R0, 12H |
002B | r(E9000029): BNE 41 [0055H] |
002C | s(80E00004): LDR R0, SP, 4H |
002D | s(80000000): LDR R0, R0, 0H |
002E | s(D1059A4C): BLEQ MT [trap=4, pos=1434] |
002F | t(90000000): LDR R0, R0, 0H |
0030 | t(40090008): SUB R0, R0, 8H |
0031 | u(E9000023): BNE 35 [0055H] |
| ORS.Get(sym)v;w |
0032 | v .FIXUP D |
0032 | v(8D00000A): LDR SB, MT, MOD0 [ORP] |
0033 | v(40D8001C): ADD R0, SB, 1CH [data] |
0034 | w .FIXUP P |
0034 | w(F770A011): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENx obj := ORB.thisimport(obj)y;z ORS.Get(sym)a;b |
0035 | x .FIXUP D |
0035 | x(8D000003): LDR SB, MT, MOD0 [ORP] |
0036 | x(80D0001C): LDR R0, SB, 1CH [data] |
0037 | x(4009001F): SUB R0, R0, 1FH |
0038 | x(E9000014): BNE 20 [004DH] |
0039 | y(80E00004): LDR R0, SP, 4H |
003A | y(80000000): LDR R0, R0, 0H |
003B | z .FIXUP P |
003B | z(F7811007): BL MOD8 [ORB] PROC17 |
003C | z(81E00004): LDR R1, SP, 4H |
003D | z(A0100000): STR R0, R1, 0H |
003E | a .FIXUP D |
003E | a(8D000009): LDR SB, MT, MOD0 [ORP] |
003F | a(40D8001C): ADD R0, SB, 1CH [data] |
0040 | b .FIXUP P |
0040 | b(F770A005): BL MOD7 [ORS] PROC10 |
| IF obj = NIL THENc ORS.Mark("undef")d;e obj := dummy ENDf |
0041 | c(80E00004): LDR R0, SP, 4H |
0042 | c(80000000): LDR R0, R0, 0H |
0043 | c(E9000008): BNE 8 [004CH] |
0044 | d .FIXUP D |
0044 | d(8D000006): LDR SB, MT, MOD0 [ORP] |
0045 | d(40D80098): ADD R0, SB, 98H ["undef"] |
0046 | d(41000006): MOV R1, R0, 6H |
0047 | e .FIXUP P |
0047 | e(F7709007): BL MOD7 [ORS] PROC9 |
0048 | f .FIXUP D |
0048 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
0049 | f(80D00064): LDR R0, SB, 64H [data] |
004A | f(81E00004): LDR R1, SP, 4H |
004B | f(A0100000): STR R0, R1, 0H |
| ELSE ORSg.Mark("identifier expected")h;i obj := dummy |
004C | g(E7000008): B 8 [0055H] |
004D | h .FIXUP D |
004D | h(8D000005): LDR SB, MT, MOD0 [ORP] |
004E | h(40D800A0): ADD R0, SB, A0H ["identifier expected"] |
004F | h(41000014): MOV R1, R0, 14H |
0050 | i .FIXUP P |
0050 | i(F7709009): BL MOD7 [ORS] PROC9 |
| ENDj |
0051 | j .FIXUP D |
0051 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
0052 | j(80D00064): LDR R0, SB, 64H [data] |
0053 | j(81E00004): LDR R1, SP, 4H |
0054 | j(A0100000): STR R0, R1, 0H |
| END |
| ENDk qualident; |
0055 | k(8FE00000): LDR LNK, SP, 0H |
0056 | k(4EE80008): ADD SP, SP, 8H |
0057 | k(C700000F): B LNK |
| |
| PROCEDURE CheckBool(VAR x: ORG.Item); |
| BEGINl |
0058 | l(4EE9000C): SUB SP, SP, CH |
0059 | l(AFE00000): STR LNK, SP, 0H |
005A | l(A0E00004): STR R0, SP, 4H |
005B | l(A1E00008): STR R1, SP, 8H |
| IF x.type.formm # ORB.Bool THENn ORS.Mark("not Boolean")o;p x.type := ORB.boolType ENDq |
005C | m(80E00004): LDR R0, SP, 4H |
005D | m(80000004): LDR R0, R0, 4H |
005E | m(D106E44C): BLEQ MT [trap=4, pos=1764] |
005F | n(80000000): LDR R0, R0, 0H |
0060 | n(40090002): SUB R0, R0, 2H |
0061 | n(E1000008): BEQ 8 [006AH] |
0062 | o .FIXUP D |
0062 | o(8D000011): LDR SB, MT, MOD0 [ORP] |
0063 | o(40D800B4): ADD R0, SB, B4H ["not Boolean"] |
0064 | o(4100000C): MOV R1, R0, CH |
0065 | p .FIXUP P |
0065 | p(F7709015): BL MOD7 [ORS] PROC9 |
0066 | q .FIXUP D |
0066 | q(8D800004): LDR SB, MT, MOD8 [ORB] |
0067 | q(80D00007): LDR R0, SB, VAR7 |
0068 | q(81E00004): LDR R1, SP, 4H |
0069 | q(A0100004): STR R0, R1, 4H |
| ENDr CheckBool; |
006A | r(8FE00000): LDR LNK, SP, 0H |
006B | r(4EE8000C): ADD SP, SP, CH |
006C | r(C700000F): B LNK |
| |
| PROCEDURE CheckInt(VAR x: ORG.Item); |
| BEGINs |
006D | s(4EE9000C): SUB SP, SP, CH |
006E | s(AFE00000): STR LNK, SP, 0H |
006F | s(A0E00004): STR R0, SP, 4H |
0070 | s(A1E00008): STR R1, SP, 8H |
| IF x.type.formt # ORB.Int THENu ORS.Mark("not Integer")v;w x.type := ORB.intType ENDx |
0071 | t(80E00004): LDR R0, SP, 4H |
0072 | t(80000004): LDR R0, R0, 4H |
0073 | t(D1077C4C): BLEQ MT [trap=4, pos=1916] |
0074 | u(80000000): LDR R0, R0, 0H |
0075 | u(40090004): SUB R0, R0, 4H |
0076 | u(E1000008): BEQ 8 [007FH] |
0077 | v .FIXUP D |
0077 | v(8D000011): LDR SB, MT, MOD0 [ORP] |
0078 | v(40D800C0): ADD R0, SB, C0H ["not Integer"] |
0079 | v(4100000C): MOV R1, R0, CH |
007A | w .FIXUP P |
007A | w(F7709015): BL MOD7 [ORS] PROC9 |
007B | x .FIXUP D |
007B | x(8D800004): LDR SB, MT, MOD8 [ORB] |
007C | x(80D00009): LDR R0, SB, VAR9 |
007D | x(81E00004): LDR R1, SP, 4H |
007E | x(A0100004): STR R0, R1, 4H |
| ENDy CheckInt; |
007F | y(8FE00000): LDR LNK, SP, 0H |
0080 | y(4EE8000C): ADD SP, SP, CH |
0081 | y(C700000F): B LNK |
| |
| PROCEDURE CheckReal(VAR x: ORG.Item); |
| BEGINz |
0082 | z(4EE9000C): SUB SP, SP, CH |
0083 | z(AFE00000): STR LNK, SP, 0H |
0084 | z(A0E00004): STR R0, SP, 4H |
0085 | z(A1E00008): STR R1, SP, 8H |
| IF x.type.forma # ORB.Real THENb ORS.Mark("not Real")c;d x.type := ORB.realType ENDe |
0086 | a(80E00004): LDR R0, SP, 4H |
0087 | a(80000004): LDR R0, R0, 4H |
0088 | a(D108124C): BLEQ MT [trap=4, pos=2066] |
0089 | b(80000000): LDR R0, R0, 0H |
008A | b(40090005): SUB R0, R0, 5H |
008B | b(E1000008): BEQ 8 [0094H] |
008C | c .FIXUP D |
008C | c(8D000011): LDR SB, MT, MOD0 [ORP] |
008D | c(40D800CC): ADD R0, SB, CCH ["not Real"] |
008E | c(41000009): MOV R1, R0, 9H |
008F | d .FIXUP P |
008F | d(F7709015): BL MOD7 [ORS] PROC9 |
0090 | e .FIXUP D |
0090 | e(8D800004): LDR SB, MT, MOD8 [ORB] |
0091 | e(80D0000A): LDR R0, SB, VAR10 |
0092 | e(81E00004): LDR R1, SP, 4H |
0093 | e(A0100004): STR R0, R1, 4H |
| ENDf CheckReal; |
0094 | f(8FE00000): LDR LNK, SP, 0H |
0095 | f(4EE8000C): ADD SP, SP, CH |
0096 | f(C700000F): B LNK |
| |
| PROCEDURE CheckSet(VAR x: ORG.Item); |
| BEGINg |
0097 | g(4EE9000C): SUB SP, SP, CH |
0098 | g(AFE00000): STR LNK, SP, 0H |
0099 | g(A0E00004): STR R0, SP, 4H |
009A | g(A1E00008): STR R1, SP, 8H |
| IF x.type.formh # ORB.Set THENi ORS.Mark("not Set")j;k x.type := ORB.setType ENDl |
009B | h(80E00004): LDR R0, SP, 4H |
009C | h(80000004): LDR R0, R0, 4H |
009D | h(D108A74C): BLEQ MT [trap=4, pos=2215] |
009E | i(80000000): LDR R0, R0, 0H |
009F | i(40090006): SUB R0, R0, 6H |
00A0 | i(E1000008): BEQ 8 [00A9H] |
00A1 | j .FIXUP D |
00A1 | j(8D000011): LDR SB, MT, MOD0 [ORP] |
00A2 | j(40D800D8): ADD R0, SB, D8H ["not Set"] |
00A3 | j(41000008): MOV R1, R0, 8H |
00A4 | k .FIXUP P |
00A4 | k(F7709015): BL MOD7 [ORS] PROC9 |
00A5 | l .FIXUP D |
00A5 | l(8D800004): LDR SB, MT, MOD8 [ORB] |
00A6 | l(80D0000B): LDR R0, SB, VAR11 |
00A7 | l(81E00004): LDR R1, SP, 4H |
00A8 | l(A0100004): STR R0, R1, 4H |
| ENDm CheckSet; |
00A9 | m(8FE00000): LDR LNK, SP, 0H |
00AA | m(4EE8000C): ADD SP, SP, CH |
00AB | m(C700000F): B LNK |
| |
| PROCEDURE CheckSetVal(VAR x: ORG.Item); |
| BEGINn |
00AC | n(4EE9000C): SUB SP, SP, CH |
00AD | n(AFE00000): STR LNK, SP, 0H |
00AE | n(A0E00004): STR R0, SP, 4H |
00AF | n(A1E00008): STR R1, SP, 8H |
| IF x.type.formo # ORB.Int THENp ORS.Mark("not Int")q;r x.type := ORB.setType |
00B0 | o(80E00004): LDR R0, SP, 4H |
00B1 | o(80000004): LDR R0, R0, 4H |
00B2 | o(D1093C4C): BLEQ MT [trap=4, pos=2364] |
00B3 | p(80000000): LDR R0, R0, 0H |
00B4 | p(40090004): SUB R0, R0, 4H |
00B5 | p(E1000009): BEQ 9 [00BFH] |
00B6 | q .FIXUP D |
00B6 | q(8D000011): LDR SB, MT, MOD0 [ORP] |
00B7 | q(40D800E0): ADD R0, SB, E0H ["not Int"] |
00B8 | q(41000008): MOV R1, R0, 8H |
00B9 | r .FIXUP P |
00B9 | r(F7709015): BL MOD7 [ORS] PROC9 |
| ELSIFs xt.mode = ORB.Const THENu |
00BA | s .FIXUP D |
00BA | s(8D800004): LDR SB, MT, MOD8 [ORB] |
00BB | s(80D0000B): LDR R0, SB, VAR11 |
00BC | s(81E00004): LDR R1, SP, 4H |
00BD | s(A0100004): STR R0, R1, 4H |
00BE | t(E7000010): B 16 [00CFH] |
00BF | u(80E00004): LDR R0, SP, 4H |
00C0 | u(80000000): LDR R0, R0, 0H |
00C1 | u(40090001): SUB R0, R0, 1H |
00C2 | u(E900000C): BNE 12 [00CFH] |
| IF (x.a < 0)v OR (wx.a >= 32)x THENy ORS.Mark("invalid set")z ENDa |
00C3 | v(80E00004): LDR R0, SP, 4H |
00C4 | v(80000008): LDR R0, R0, 8H |
00C5 | v(40090000): SUB R0, R0, 0H |
00C6 | w(E5000004): BLT 4 [00CBH] |
00C7 | x(80E00004): LDR R0, SP, 4H |
00C8 | x(80000008): LDR R0, R0, 8H |
00C9 | x(40090020): SUB R0, R0, 20H |
00CA | y(E5000004): BLT 4 [00CFH] |
00CB | z .FIXUP D |
00CB | z(8D000011): LDR SB, MT, MOD0 [ORP] |
00CC | z(40D800E8): ADD R0, SB, E8H ["invalid set"] |
00CD | z(4100000C): MOV R1, R0, CH |
00CE | a .FIXUP P |
00CE | a(F7709015): BL MOD7 [ORS] PROC9 |
| END |
| ENDb CheckSetVal; |
00CF | b(8FE00000): LDR LNK, SP, 0H |
00D0 | b(4EE8000C): ADD SP, SP, CH |
00D1 | b(C700000F): B LNK |
| |
| PROCEDURE CheckConst(VAR x: ORG.Item); |
| BEGINc |
00D2 | c(4EE9000C): SUB SP, SP, CH |
00D3 | c(AFE00000): STR LNK, SP, 0H |
00D4 | c(A0E00004): STR R0, SP, 4H |
00D5 | c(A1E00008): STR R1, SP, 8H |
| IF x.mode # ORB.Const THENd ORS.Mark("not a constant")e;f x.mode := ORB.Const ENDg |
00D6 | d(80E00004): LDR R0, SP, 4H |
00D7 | d(80000000): LDR R0, R0, 0H |
00D8 | d(40090001): SUB R0, R0, 1H |
00D9 | d(E1000007): BEQ 7 [00E1H] |
00DA | e .FIXUP D |
00DA | e(8D00000F): LDR SB, MT, MOD0 [ORP] |
00DB | e(40D800F4): ADD R0, SB, F4H ["not a constant"] |
00DC | e(4100000F): MOV R1, R0, FH |
00DD | f .FIXUP P |
00DD | f(F770900F): BL MOD7 [ORS] PROC9 |
00DE | g(40000001): MOV R0, R0, 1H |
00DF | g(81E00004): LDR R1, SP, 4H |
00E0 | g(A0100000): STR R0, R1, 0H |
| ENDh CheckConst; |
00E1 | h(8FE00000): LDR LNK, SP, 0H |
00E2 | h(4EE8000C): ADD SP, SP, CH |
00E3 | h(C700000F): B LNK |
| |
| PROCEDURE CheckReadOnly(VAR x: ORG.Item); |
| BEGINi |
00E4 | i(4EE9000C): SUB SP, SP, CH |
00E5 | i(AFE00000): STR LNK, SP, 0H |
00E6 | i(A0E00004): STR R0, SP, 4H |
00E7 | i(A1E00008): STR R1, SP, 8H |
| IF x.rdo THENj ORS.Mark("read-only")k ENDl |
00E8 | j(80E00004): LDR R0, SP, 4H |
00E9 | j(90000014): LDR R0, R0, 14H |
00EA | j(E1000004): BEQ 4 [00EFH] |
00EB | k .FIXUP D |
00EB | k(8D000011): LDR SB, MT, MOD0 [ORP] |
00EC | k(40D80104): ADD R0, SB, 104H ["read-only"] |
00ED | k(4100000A): MOV R1, R0, AH |
00EE | l .FIXUP P |
00EE | l(F7709011): BL MOD7 [ORS] PROC9 |
| ENDm CheckReadOnly; |
00EF | m(8FE00000): LDR LNK, SP, 0H |
00F0 | m(4EE8000C): ADD SP, SP, CH |
00F1 | m(C700000F): B LNK |
| |
| PROCEDURE CheckExport(VAR expo: BOOLEAN); |
| BEGINn |
00F2 | n(4EE90008): SUB SP, SP, 8H |
00F3 | n(AFE00000): STR LNK, SP, 0H |
00F4 | n(A0E00004): STR R0, SP, 4H |
| IF sym = ORS.times THENo |
00F5 | o .FIXUP D |
00F5 | o(8D00000A): LDR SB, MT, MOD0 [ORP] |
00F6 | o(80D0001C): LDR R0, SB, 1CH [data] |
00F7 | o(40090001): SUB R0, R0, 1H |
00F8 | o(E900000E): BNE 14 [0107H] |
| expo := TRUE;p ORS.Get(sym)q;r |
00F9 | p(40000001): MOV R0, R0, 1H |
00FA | p(81E00004): LDR R1, SP, 4H |
00FB | p(B0100000): STR R0, R1, 0H |
00FC | q .FIXUP D |
00FC | q(8D000007): LDR SB, MT, MOD0 [ORP] |
00FD | q(40D8001C): ADD R0, SB, 1CH [data] |
00FE | r .FIXUP P |
00FE | r(F770A010): BL MOD7 [ORS] PROC10 |
| IF level # 0 THENs ORS.Mark("remove asterisk")t ENDu |
00FF | s .FIXUP D |
00FF | s(8D000003): LDR SB, MT, MOD0 [ORP] |
0100 | s(80D00024): LDR R0, SB, 24H [data] |
0101 | s(E1000004): BEQ 4 [0106H] |
0102 | t .FIXUP D |
0102 | t(8D000003): LDR SB, MT, MOD0 [ORP] |
0103 | t(40D80110): ADD R0, SB, 110H ["remove asterisk"] |
0104 | t(41000010): MOV R1, R0, 10H |
0105 | u .FIXUP P |
0105 | u(F7709007): BL MOD7 [ORS] PROC9 |
| ELSE expov := FALSE |
0106 | v(E7000003): B 3 [010AH] |
| ENDw |
0107 | w(40000000): MOV R0, R0, 0H |
0108 | w(81E00004): LDR R1, SP, 4H |
0109 | w(B0100000): STR R0, R1, 0H |
| ENDx CheckExport; |
010A | x(8FE00000): LDR LNK, SP, 0H |
010B | x(4EE80008): ADD SP, SP, 8H |
010C | x(C700000F): B LNK |
| |
| PROCEDURE IsExtension(t0, t1: ORB.Type): BOOLEAN; |
| BEGINy (*t1 is an extension of t0*) |
010D | y(4EE9000C): SUB SP, SP, CH |
010E | y(AFE00000): STR LNK, SP, 0H |
010F | y(A0E00004): STR R0, SP, 4H |
0110 | y(A1E00008): STR R1, SP, 8H |
| RETURN (t0 = t1)z OR (at1 # NIL)b & IsExtensionc(t0,d t1.basee)f |
0111 | z(80E00004): LDR R0, SP, 4H |
0112 | z(81E00008): LDR R1, SP, 8H |
0113 | z(00090001): SUB R0, R0, R1 |
0114 | a(E1000009): BEQ 9 [011EH] |
0115 | b(80E00008): LDR R0, SP, 8H |
0116 | c(E1000009): BEQ 9 [0120H] |
0117 | d(80E00004): LDR R0, SP, 4H |
0118 | e(81E00008): LDR R1, SP, 8H |
0119 | e(D10C784C): BLEQ MT [trap=4, pos=3192] |
011A | f(8110001C): LDR R1, R1, 1CH |
| ENDg IsExtension; |
011B | g(F7FFFFF1): BL -15 [010DH] |
011C | g(40090000): SUB R0, R0, 0H |
011D | g(E1000002): BEQ 2 [0120H] |
011E | g(40000001): MOV R0, R0, 1H |
011F | g(E7000001): B 1 [0121H] |
0120 | g(40000000): MOV R0, R0, 0H |
0121 | g(8FE00000): LDR LNK, SP, 0H |
0122 | g(4EE8000C): ADD SP, SP, CH |
0123 | g(C700000F): B LNK |
| |
| (* expressions *) |
| |
| PROCEDURE TypeTest(VAR x: ORG.Item; T: ORB.Type; guard: BOOLEAN); |
| VAR xt: ORB.Type; |
| BEGINh xt := x.type;i |
0124 | h(4EE90018): SUB SP, SP, 18H |
0125 | h(AFE00000): STR LNK, SP, 0H |
0126 | h(A0E00004): STR R0, SP, 4H |
0127 | h(A1E00008): STR R1, SP, 8H |
0128 | h(A2E0000C): STR R2, SP, CH |
0129 | h(A3E00010): STR R3, SP, 10H |
012A | i(80E00004): LDR R0, SP, 4H |
012B | i(80000004): LDR R0, R0, 4H |
012C | i(A0E00014): STR R0, SP, 14H |
| IF (T.formj IN {ORB.Pointer, ORB.Record})k & (lT.formm = xt.formn)o THENp |
012D | j(80E0000C): LDR R0, SP, CH |
012E | j(D10D214C): BLEQ MT [trap=4, pos=3361] |
012F | k(41002080): MOV R1, R0, 2080H |
0130 | k(80000000): LDR R0, R0, 0H |
0131 | k(40080001): ADD R0, R0, 1H |
0132 | k(01130000): ROR R1, R1, R0 |
0133 | l(E8000064): BPL 100 [0198H] |
0134 | m(80E0000C): LDR R0, SP, CH |
0135 | m(D10D494C): BLEQ MT [trap=4, pos=3401] |
0136 | n(81E00014): LDR R1, SP, 14H |
0137 | n(D10D534C): BLEQ MT [trap=4, pos=3411] |
0138 | o(80000000): LDR R0, R0, 0H |
0139 | o(81100000): LDR R1, R1, 0H |
013A | o(00090001): SUB R0, R0, R1 |
013B | p(E900005C): BNE 92 [0198H] |
| WHILE (xt # T)q & (rxt # NIL)s DOt xt := xt.baseu ENDv ; |
013C | q(80E00014): LDR R0, SP, 14H |
013D | q(81E0000C): LDR R1, SP, CH |
013E | q(00090001): SUB R0, R0, R1 |
013F | r(E1000007): BEQ 7 [0147H] |
0140 | s(80E00014): LDR R0, SP, 14H |
0141 | t(E1000005): BEQ 5 [0147H] |
0142 | u(80E00014): LDR R0, SP, 14H |
0143 | u(D10D8C4C): BLEQ MT [trap=4, pos=3468] |
0144 | v(8000001C): LDR R0, R0, 1CH |
0145 | v(A0E00014): STR R0, SP, 14H |
0146 | v(E7FFFFF5): B -11 [013CH] |
| IF xt # T THENw xt := x.type;x |
0147 | w(80E00014): LDR R0, SP, 14H |
0148 | w(81E0000C): LDR R1, SP, CH |
0149 | w(00090001): SUB R0, R0, R1 |
014A | w(E1000044): BEQ 68 [018FH] |
014B | x(80E00004): LDR R0, SP, 4H |
014C | x(80000004): LDR R0, R0, 4H |
014D | x(A0E00014): STR R0, SP, 14H |
| IF xt.formy = ORB.Pointer THENz |
014E | y(80E00014): LDR R0, SP, 14H |
014F | y(D10DC84C): BLEQ MT [trap=4, pos=3528] |
0150 | z(80000000): LDR R0, R0, 0H |
0151 | z(40090007): SUB R0, R0, 7H |
0152 | z(E900001A): BNE 26 [016DH] |
| IF IsExtension(xt.basea,b T.basec)d THENe ORG.TypeTest(x,f T.baseg,h FALSE,i guard)j;k x.type := T |
0153 | a(80E00014): LDR R0, SP, 14H |
0154 | a(D10DFC4C): BLEQ MT [trap=4, pos=3580] |
0155 | b(8000001C): LDR R0, R0, 1CH |
0156 | c(81E0000C): LDR R1, SP, CH |
0157 | c(D10E044C): BLEQ MT [trap=4, pos=3588] |
0158 | d(8110001C): LDR R1, R1, 1CH |
0159 | e(F7FFFFB3): BL -77 [010DH] |
015A | e(40090000): SUB R0, R0, 0H |
015B | e(E100000C): BEQ 12 [0168H] |
015C | f(80E00004): LDR R0, SP, 4H |
015D | f(81E00008): LDR R1, SP, 8H |
015E | g(82E0000C): LDR R2, SP, CH |
015F | g(D10E214C): BLEQ MT [trap=4, pos=3617] |
0160 | h(8220001C): LDR R2, R2, 1CH |
0161 | i(43000000): MOV R3, R0, 0H |
0162 | j(94E00010): LDR R4, SP, 10H |
0163 | k .FIXUP P |
0163 | k(F790D05E): BL MOD9 [ORG] PROC13 |
| ELSEl ORSm.Mark("not an extension")n |
0164 | l(80E0000C): LDR R0, SP, CH |
0165 | l(81E00004): LDR R1, SP, 4H |
0166 | l(A0100004): STR R0, R1, 4H |
0167 | m(E7000004): B 4 [016CH] |
0168 | n .FIXUP D |
0168 | n(8D000066): LDR SB, MT, MOD0 [ORP] |
0169 | n(40D80120): ADD R0, SB, 120H ["not an extension"] |
016A | n(41000011): MOV R1, R0, 11H |
| ENDo |
016B | o .FIXUP P |
016B | o(F7709008): BL MOD7 [ORS] PROC9 |
| ELSIF (pxt.formq = ORB.Record)r & (sx.mode = ORB.Par)t THENu |
016C | p(E7000021): B 33 [018EH] |
016D | q(80E00014): LDR R0, SP, 14H |
016E | q(D10E8E4C): BLEQ MT [trap=4, pos=3726] |
016F | r(80000000): LDR R0, R0, 0H |
0170 | r(4009000D): SUB R0, R0, DH |
0171 | s(E9000018): BNE 24 [018AH] |
0172 | t(80E00004): LDR R0, SP, 4H |
0173 | t(80000000): LDR R0, R0, 0H |
0174 | t(40090003): SUB R0, R0, 3H |
0175 | u(E9000014): BNE 20 [018AH] |
| IF IsExtension(xt,v T)w THENx ORG.TypeTest(x,y T,z TRUE,a guard)b;c x.type := T |
0176 | v(80E00014): LDR R0, SP, 14H |
0177 | w(81E0000C): LDR R1, SP, CH |
0178 | x(F7FFFF94): BL -108 [010DH] |
0179 | x(40090000): SUB R0, R0, 0H |
017A | x(E100000A): BEQ 10 [0185H] |
017B | y(80E00004): LDR R0, SP, 4H |
017C | y(81E00008): LDR R1, SP, 8H |
017D | z(82E0000C): LDR R2, SP, CH |
017E | a(43000001): MOV R3, R0, 1H |
017F | b(94E00010): LDR R4, SP, 10H |
0180 | c .FIXUP P |
0180 | c(F790D015): BL MOD9 [ORG] PROC13 |
| ELSEd ORSe.Mark("not an extension")f |
0181 | d(80E0000C): LDR R0, SP, CH |
0182 | d(81E00004): LDR R1, SP, 4H |
0183 | d(A0100004): STR R0, R1, 4H |
0184 | e(E7000004): B 4 [0189H] |
0185 | f .FIXUP D |
0185 | f(8D00001D): LDR SB, MT, MOD0 [ORP] |
0186 | f(40D80134): ADD R0, SB, 134H ["not an extension"] |
0187 | f(41000011): MOV R1, R0, 11H |
| ENDg |
0188 | g .FIXUP P |
0188 | g(F7709008): BL MOD7 [ORS] PROC9 |
| ELSE ORSh.Mark("incompatible types")i |
0189 | h(E7000004): B 4 [018EH] |
018A | i .FIXUP D |
018A | i(8D000005): LDR SB, MT, MOD0 [ORP] |
018B | i(40D80148): ADD R0, SB, 148H ["incompatible types"] |
018C | i(41000013): MOV R1, R0, 13H |
| ENDj |
018D | j .FIXUP P |
018D | j(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF ~kguard THENl ORG.MakeConstItem(x,m ORB.boolType,n 1)o |
018E | k(E7000008): B 8 [0197H] |
018F | l(90E00010): LDR R0, SP, 10H |
0190 | l(E9000006): BNE 6 [0197H] |
0191 | m(80E00004): LDR R0, SP, 4H |
0192 | m(81E00008): LDR R1, SP, 8H |
0193 | n .FIXUP D |
0193 | n(8D800009): LDR SB, MT, MOD8 [ORB] |
0194 | n(82D00007): LDR R2, SB, VAR7 |
0195 | o(43000001): MOV R3, R0, 1H |
| ENDp |
0196 | p .FIXUP P |
0196 | p(F7905009): BL MOD9 [ORG] PROC5 |
| ELSE ORSq.Mark("type mismatch")r |
0197 | q(E7000004): B 4 [019CH] |
0198 | r .FIXUP D |
0198 | r(8D000005): LDR SB, MT, MOD0 [ORP] |
0199 | r(40D8015C): ADD R0, SB, 15CH ["type mismatch"] |
019A | r(4100000E): MOV R1, R0, EH |
| ENDs ; |
019B | s .FIXUP P |
019B | s(F7709005): BL MOD7 [ORS] PROC9 |
| IF ~guard THENt x.type := ORB.boolType ENDu |
019C | t(90E00010): LDR R0, SP, 10H |
019D | t(E9000004): BNE 4 [01A2H] |
019E | u .FIXUP D |
019E | u(8D800006): LDR SB, MT, MOD8 [ORB] |
019F | u(80D00007): LDR R0, SB, VAR7 |
01A0 | u(81E00004): LDR R1, SP, 4H |
01A1 | u(A0100004): STR R0, R1, 4H |
| ENDv TypeTest; |
01A2 | v(8FE00000): LDR LNK, SP, 0H |
01A3 | v(4EE80018): ADD SP, SP, 18H |
01A4 | v(C700000F): B LNK |
| |
| PROCEDURE selector(VAR x: ORG.Item); |
| VAR y: ORG.Item; obj: ORB.Object; |
| BEGINw |
01A5 | w(4EE90028): SUB SP, SP, 28H |
01A6 | w(AFE00000): STR LNK, SP, 0H |
01A7 | w(A0E00004): STR R0, SP, 4H |
01A8 | w(A1E00008): STR R1, SP, 8H |
| WHILE (sym = ORS.lbrak)x OR (ysym = ORS.period)z OR (asym = ORS.arrow)b |
01A9 | x .FIXUP D |
01A9 | x(8D00000B): LDR SB, MT, MOD0 [ORP] |
01AA | x(80D0001C): LDR R0, SB, 1CH [data] |
01AB | x(4009001D): SUB R0, R0, 1DH |
01AC | y(E1000014): BEQ 20 [01C1H] |
01AD | z .FIXUP D |
01AD | z(8D000004): LDR SB, MT, MOD0 [ORP] |
01AE | z(80D0001C): LDR R0, SB, 1CH [data] |
01AF | z(40090012): SUB R0, R0, 12H |
01B0 | a(E1000010): BEQ 16 [01C1H] |
01B1 | b .FIXUP D |
01B1 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
01B2 | b(80D0001C): LDR R0, SB, 1CH [data] |
01B3 | b(40090011): SUB R0, R0, 11H |
| OR (csym = ORS.lparen)d & (ex.type.formf IN {ORB.Record, ORB.Pointer})g DOh |
01B4 | c(E100000C): BEQ 12 [01C1H] |
01B5 | d .FIXUP D |
01B5 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
01B6 | d(80D0001C): LDR R0, SB, 1CH [data] |
01B7 | d(4009001C): SUB R0, R0, 1CH |
01B8 | e(E90000CA): BNE 202 [0283H] |
01B9 | f(80E00004): LDR R0, SP, 4H |
01BA | f(80000004): LDR R0, R0, 4H |
01BB | f(D110F84C): BLEQ MT [trap=4, pos=4344] |
01BC | g(41002080): MOV R1, R0, 2080H |
01BD | g(80000000): LDR R0, R0, 0H |
01BE | g(40080001): ADD R0, R0, 1H |
01BF | g(01130000): ROR R1, R1, R0 |
01C0 | h(E80000C2): BPL 194 [0283H] |
| IF sym = ORS.lbrak THENi |
01C1 | i .FIXUP D |
01C1 | i(8D00000C): LDR SB, MT, MOD0 [ORP] |
01C2 | i(80D0001C): LDR R0, SB, 1CH [data] |
01C3 | i(4009001D): SUB R0, R0, 1DH |
01C4 | i(E900002F): BNE 47 [01F4H] |
| REPEAT ORS.Get(sym)j;k expression(y)l;m |
01C5 | j .FIXUP D |
01C5 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
01C6 | j(40D8001C): ADD R0, SB, 1CH [data] |
01C7 | k .FIXUP P |
01C7 | k(F770A02C): BL MOD7 [ORS] PROC10 |
01C8 | l(40E8000C): ADD R0, SP, CH |
01C9 | l .FIXUP D |
01C9 | l(8D900004): LDR SB, MT, MOD9 [ORG] |
01CA | l(41D80001): ADD R1, SB, VAR1 |
01CB | m .FIXUP D |
01CB | m(8D000002): LDR SB, MT, MOD0 [ORP] |
01CC | m(82D00034): LDR R2, SB, 34H [data] |
01CD | m(D111635C): BLEQ MT [trap=5, pos=4451] |
01CE | m(D7000002): BL R2 |
| IF x.type.formn = ORB.Array THENo |
01CF | n(80E00004): LDR R0, SP, 4H |
01D0 | n(80000004): LDR R0, R0, 4H |
01D1 | n(D1117C4C): BLEQ MT [trap=4, pos=4476] |
01D2 | o(80000000): LDR R0, R0, 0H |
01D3 | o(4009000C): SUB R0, R0, CH |
01D4 | o(E9000011): BNE 17 [01E6H] |
| CheckInt(y)p;q ORG.Index(x,r y)s;t x.type := x.type.baseu |
01D5 | p(40E8000C): ADD R0, SP, CH |
01D6 | p .FIXUP D |
01D6 | p(8D90000B): LDR SB, MT, MOD9 [ORG] |
01D7 | p(41D80001): ADD R1, SB, VAR1 |
01D8 | q(F7FFFE94): BL -364 [006DH] |
01D9 | r(80E00004): LDR R0, SP, 4H |
01DA | r(81E00008): LDR R1, SP, 8H |
01DB | s(42E8000C): ADD R2, SP, CH |
01DC | s .FIXUP D |
01DC | s(8D900006): LDR SB, MT, MOD9 [ORG] |
01DD | s(43D80001): ADD R3, SB, VAR1 |
01DE | t .FIXUP P |
01DE | t(F790A017): BL MOD9 [ORG] PROC10 |
01DF | u(80E00004): LDR R0, SP, 4H |
01E0 | u(80000004): LDR R0, R0, 4H |
01E1 | u(D111CD4C): BLEQ MT [trap=4, pos=4557] |
| ELSEv ORSw.Mark("not an array")x |
01E2 | v(8000001C): LDR R0, R0, 1CH |
01E3 | v(81E00004): LDR R1, SP, 4H |
01E4 | v(A0100004): STR R0, R1, 4H |
01E5 | w(E7000004): B 4 [01EAH] |
01E6 | x .FIXUP D |
01E6 | x(8D00000A): LDR SB, MT, MOD0 [ORP] |
01E7 | x(40D8016C): ADD R0, SB, 16CH ["not an array"] |
01E8 | x(4100000D): MOV R1, R0, DH |
| ENDy |
01E9 | y .FIXUP P |
01E9 | y(F770900B): BL MOD7 [ORS] PROC9 |
| UNTIL sym # ORS.comma;z |
01EA | z .FIXUP D |
01EA | z(8D000004): LDR SB, MT, MOD0 [ORP] |
01EB | z(80D0001C): LDR R0, SB, 1CH [data] |
01EC | z(40090028): SUB R0, R0, 28H |
01ED | z(E1FFFFD7): BEQ -41 [01C5H] |
| Check(ORS.rbrak,a "no ]")b |
01EE | a(4000002D): MOV R0, R0, 2DH |
01EF | b .FIXUP D |
01EF | b(8D000005): LDR SB, MT, MOD0 [ORP] |
01F0 | b(41D8017C): ADD R1, SB, 17CH ["no ]"] |
01F1 | b(42000005): MOV R2, R0, 5H |
| ELSIFc symd = ORS.period THENe ORS.Get(sym)f;g |
01F2 | c(F7FFFE0D): BL -499 [0000H] |
01F3 | d(E700008E): B 142 [0282H] |
01F4 | e .FIXUP D |
01F4 | e(8D000005): LDR SB, MT, MOD0 [ORP] |
01F5 | e(80D0001C): LDR R0, SB, 1CH [data] |
01F6 | e(40090012): SUB R0, R0, 12H |
01F7 | e(E900003E): BNE 62 [0236H] |
01F8 | f .FIXUP D |
01F8 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
01F9 | f(40D8001C): ADD R0, SB, 1CH [data] |
01FA | g .FIXUP P |
01FA | g(F770A011): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENh |
01FB | h .FIXUP D |
01FB | h(8D000003): LDR SB, MT, MOD0 [ORP] |
01FC | h(80D0001C): LDR R0, SB, 1CH [data] |
01FD | h(4009001F): SUB R0, R0, 1FH |
01FE | h(E9000032): BNE 50 [0231H] |
| IF x.type.formi = ORB.Pointer THENj ORG.DeRef(x)k;l x.type := x.type.basem ENDn ; |
01FF | i(80E00004): LDR R0, SP, 4H |
0200 | i(80000004): LDR R0, R0, 4H |
0201 | i(D112AC4C): BLEQ MT [trap=4, pos=4780] |
0202 | j(80000000): LDR R0, R0, 0H |
0203 | j(40090007): SUB R0, R0, 7H |
0204 | j(E9000009): BNE 9 [020EH] |
0205 | k(80E00004): LDR R0, SP, 4H |
0206 | k(81E00008): LDR R1, SP, 8H |
0207 | l .FIXUP P |
0207 | l(F790B00D): BL MOD9 [ORG] PROC11 |
0208 | m(80E00004): LDR R0, SP, 4H |
0209 | m(80000004): LDR R0, R0, 4H |
020A | m(D112E34C): BLEQ MT [trap=4, pos=4835] |
020B | n(8000001C): LDR R0, R0, 1CH |
020C | n(81E00004): LDR R1, SP, 4H |
020D | n(A0100004): STR R0, R1, 4H |
| IF x.type.formo = ORB.Record THENp |
020E | o(80E00004): LDR R0, SP, 4H |
020F | o(80000004): LDR R0, R0, 4H |
0210 | o(D113024C): BLEQ MT [trap=4, pos=4866] |
0211 | p(80000000): LDR R0, R0, 0H |
0212 | p(4009000D): SUB R0, R0, DH |
0213 | p(E9000018): BNE 24 [022CH] |
| obj := ORB.thisfield(x.type)q;r ORS.Get(sym)s;t |
0214 | q(80E00004): LDR R0, SP, 4H |
0215 | q(80000004): LDR R0, R0, 4H |
0216 | r .FIXUP P |
0216 | r(F781200F): BL MOD8 [ORB] PROC18 |
0217 | r(A0E00024): STR R0, SP, 24H |
0218 | s .FIXUP D |
0218 | s(8D00001D): LDR SB, MT, MOD0 [ORP] |
0219 | s(40D8001C): ADD R0, SB, 1CH [data] |
021A | t .FIXUP P |
021A | t(F770A004): BL MOD7 [ORS] PROC10 |
| IF obj # NIL THENu ORG.Field(x,v obj)w;x x.type := obj.typey |
021B | u(80E00024): LDR R0, SP, 24H |
021C | u(E100000A): BEQ 10 [0227H] |
021D | v(80E00004): LDR R0, SP, 4H |
021E | v(81E00008): LDR R1, SP, 8H |
021F | w(82E00024): LDR R2, SP, 24H |
0220 | x .FIXUP P |
0220 | x(F7909006): BL MOD9 [ORG] PROC9 |
0221 | y(80E00024): LDR R0, SP, 24H |
0222 | y(D113904C): BLEQ MT [trap=4, pos=5008] |
| ELSEz ORSa.Mark("undef")b |
0223 | z(80000010): LDR R0, R0, 10H |
0224 | z(81E00004): LDR R1, SP, 4H |
0225 | z(A0100004): STR R0, R1, 4H |
0226 | a(E7000004): B 4 [022BH] |
0227 | b .FIXUP D |
0227 | b(8D00000F): LDR SB, MT, MOD0 [ORP] |
0228 | b(40D80184): ADD R0, SB, 184H ["undef"] |
0229 | b(41000006): MOV R1, R0, 6H |
| ENDc |
022A | c .FIXUP P |
022A | c(F770900A): BL MOD7 [ORS] PROC9 |
| ELSE ORSd.Mark("not a record")e |
022B | d(E7000004): B 4 [0230H] |
022C | e .FIXUP D |
022C | e(8D000005): LDR SB, MT, MOD0 [ORP] |
022D | e(40D8018C): ADD R0, SB, 18CH ["not a record"] |
022E | e(4100000D): MOV R1, R0, DH |
| ENDf |
022F | f .FIXUP P |
022F | f(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE ORSg.Mark("ident?")h |
0230 | g(E7000004): B 4 [0235H] |
0231 | h .FIXUP D |
0231 | h(8D000005): LDR SB, MT, MOD0 [ORP] |
0232 | h(40D8019C): ADD R0, SB, 19CH ["ident?"] |
0233 | h(41000007): MOV R1, R0, 7H |
| ENDi |
0234 | i .FIXUP P |
0234 | i(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symj = ORS.arrow THENk |
0235 | j(E700004C): B 76 [0282H] |
0236 | k .FIXUP D |
0236 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
0237 | k(80D0001C): LDR R0, SB, 1CH [data] |
0238 | k(40090011): SUB R0, R0, 11H |
0239 | k(E9000018): BNE 24 [0252H] |
| ORS.Get(sym)l;m |
023A | l .FIXUP D |
023A | l(8D000004): LDR SB, MT, MOD0 [ORP] |
023B | l(40D8001C): ADD R0, SB, 1CH [data] |
023C | m .FIXUP P |
023C | m(F770A008): BL MOD7 [ORS] PROC10 |
| IF x.type.formn = ORB.Pointer THENo ORG.DeRef(x)p;q x.type := x.type.baser |
023D | n(80E00004): LDR R0, SP, 4H |
023E | n(80000004): LDR R0, R0, 4H |
023F | n(D114734C): BLEQ MT [trap=4, pos=5235] |
0240 | o(80000000): LDR R0, R0, 0H |
0241 | o(40090007): SUB R0, R0, 7H |
0242 | o(E900000A): BNE 10 [024DH] |
0243 | p(80E00004): LDR R0, SP, 4H |
0244 | p(81E00008): LDR R1, SP, 8H |
0245 | q .FIXUP P |
0245 | q(F790B009): BL MOD9 [ORG] PROC11 |
0246 | r(80E00004): LDR R0, SP, 4H |
0247 | r(80000004): LDR R0, R0, 4H |
0248 | r(D114AA4C): BLEQ MT [trap=4, pos=5290] |
| ELSEs ORSt.Mark("not a pointer")u |
0249 | s(8000001C): LDR R0, R0, 1CH |
024A | s(81E00004): LDR R1, SP, 4H |
024B | s(A0100004): STR R0, R1, 4H |
024C | t(E7000004): B 4 [0251H] |
024D | u .FIXUP D |
024D | u(8D000013): LDR SB, MT, MOD0 [ORP] |
024E | u(40D801A4): ADD R0, SB, 1A4H ["not a pointer"] |
024F | u(4100000E): MOV R1, R0, EH |
| ENDv |
0250 | v .FIXUP P |
0250 | v(F770900B): BL MOD7 [ORS] PROC9 |
| ELSIF (wsym = ORS.lparen)x & (yx.type.formz IN {ORB.Record, ORB.Pointer})a THENb (*type guard*) |
0251 | w(E7000030): B 48 [0282H] |
0252 | x .FIXUP D |
0252 | x(8D000005): LDR SB, MT, MOD0 [ORP] |
0253 | x(80D0001C): LDR R0, SB, 1CH [data] |
0254 | x(4009001C): SUB R0, R0, 1CH |
0255 | y(E900002C): BNE 44 [0282H] |
0256 | z(80E00004): LDR R0, SP, 4H |
0257 | z(80000004): LDR R0, R0, 4H |
0258 | z(D1150B4C): BLEQ MT [trap=4, pos=5387] |
0259 | a(41002080): MOV R1, R0, 2080H |
025A | a(80000000): LDR R0, R0, 0H |
025B | a(40080001): ADD R0, R0, 1H |
025C | a(01130000): ROR R1, R1, R0 |
025D | b(E8000024): BPL 36 [0282H] |
| ORS.Get(sym)c;d |
025E | c .FIXUP D |
025E | c(8D00000C): LDR SB, MT, MOD0 [ORP] |
025F | c(40D8001C): ADD R0, SB, 1CH [data] |
0260 | d .FIXUP P |
0260 | d(F770A010): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENe |
0261 | e .FIXUP D |
0261 | e(8D000003): LDR SB, MT, MOD0 [ORP] |
0262 | e(80D0001C): LDR R0, SB, 1CH [data] |
0263 | e(4009001F): SUB R0, R0, 1FH |
0264 | e(E9000014): BNE 20 [0279H] |
| qualident(obj)f;g |
0265 | f(40E80024): ADD R0, SP, 24H |
0266 | g(F7FFFDAD): BL -595 [0014H] |
| IF obj.classh = ORB.Typ THENi TypeTest(x,j obj.typek,l TRUE)m |
0267 | h(80E00024): LDR R0, SP, 24H |
0268 | h(D115A44C): BLEQ MT [trap=4, pos=5540] |
0269 | i(90000000): LDR R0, R0, 0H |
026A | i(40090005): SUB R0, R0, 5H |
026B | i(E9000008): BNE 8 [0274H] |
026C | j(80E00004): LDR R0, SP, 4H |
026D | j(81E00008): LDR R1, SP, 8H |
026E | k(82E00024): LDR R2, SP, 24H |
026F | k(D115C84C): BLEQ MT [trap=4, pos=5576] |
0270 | l(82200010): LDR R2, R2, 10H |
0271 | m(43000001): MOV R3, R0, 1H |
| ELSEn ORSo.Mark("guard type expected")p |
0272 | n(F7FFFEB1): BL -335 [0124H] |
0273 | o(E7000004): B 4 [0278H] |
0274 | p .FIXUP D |
0274 | p(8D000013): LDR SB, MT, MOD0 [ORP] |
0275 | p(40D801B4): ADD R0, SB, 1B4H ["guard type expected"] |
0276 | p(41000014): MOV R1, R0, 14H |
| ENDq |
0277 | q .FIXUP P |
0277 | q(F7709017): BL MOD7 [ORS] PROC9 |
| ELSE ORSr.Mark("not an identifier")s |
0278 | r(E7000004): B 4 [027DH] |
0279 | s .FIXUP D |
0279 | s(8D000005): LDR SB, MT, MOD0 [ORP] |
027A | s(40D801C8): ADD R0, SB, 1C8H ["not an identifier"] |
027B | s(41000012): MOV R1, R0, 12H |
| ENDt ; |
027C | t .FIXUP P |
027C | t(F7709005): BL MOD7 [ORS] PROC9 |
| Check(ORS.rparen,u " ) missing")v |
027D | u(4000002C): MOV R0, R0, 2CH |
027E | v .FIXUP D |
027E | v(8D000005): LDR SB, MT, MOD0 [ORP] |
027F | v(41D801DC): ADD R1, SB, 1DCH [" ) missing"] |
0280 | v(4200000B): MOV R2, R0, BH |
| ENDw |
0281 | w(F7FFFD7E): BL -642 [0000H] |
| ENDx |
0282 | x(E7FFFF26): B -218 [01A9H] |
| ENDy selector; |
0283 | y(8FE00000): LDR LNK, SP, 0H |
0284 | y(4EE80028): ADD SP, SP, 28H |
0285 | y(C700000F): B LNK |
| |
| PROCEDURE EqualSignatures(t0, t1: ORB.Type): BOOLEAN; |
| VAR p0, p1: ORB.Object; com: BOOLEAN; |
| BEGINz com := TRUE;a |
0286 | z(4EE90018): SUB SP, SP, 18H |
0287 | z(AFE00000): STR LNK, SP, 0H |
0288 | z(A0E00004): STR R0, SP, 4H |
0289 | z(A1E00008): STR R1, SP, 8H |
028A | a(40000001): MOV R0, R0, 1H |
028B | a(B0E00014): STR R0, SP, 14H |
| IF (t0.baseb = t1.basec)d & (et0.nofparf = t1.nofparg)h THENi |
028C | b(80E00004): LDR R0, SP, 4H |
028D | b(D117174C): BLEQ MT [trap=4, pos=5911] |
028E | c(81E00008): LDR R1, SP, 8H |
028F | c(D117214C): BLEQ MT [trap=4, pos=5921] |
0290 | d(8000001C): LDR R0, R0, 1CH |
0291 | d(8110001C): LDR R1, R1, 1CH |
0292 | d(00090001): SUB R0, R0, R1 |
0293 | e(E9000076): BNE 118 [030AH] |
0294 | f(80E00004): LDR R0, SP, 4H |
0295 | f(D1172F4C): BLEQ MT [trap=4, pos=5935] |
0296 | g(81E00008): LDR R1, SP, 8H |
0297 | g(D1173B4C): BLEQ MT [trap=4, pos=5947] |
0298 | h(8000000C): LDR R0, R0, CH |
0299 | h(8110000C): LDR R1, R1, CH |
029A | h(00090001): SUB R0, R0, R1 |
029B | i(E900006E): BNE 110 [030AH] |
| p0 := t0.dscj;k p1 := t1.dscl;m |
029C | j(80E00004): LDR R0, SP, 4H |
029D | j(D117544C): BLEQ MT [trap=4, pos=5972] |
029E | k(80000014): LDR R0, R0, 14H |
029F | k(A0E0000C): STR R0, SP, CH |
02A0 | l(80E00008): LDR R0, SP, 8H |
02A1 | l(D117624C): BLEQ MT [trap=4, pos=5986] |
02A2 | m(80000014): LDR R0, R0, 14H |
02A3 | m(A0E00010): STR R0, SP, 10H |
| WHILE p0 # NIL DOn |
02A4 | n(80E0000C): LDR R0, SP, CH |
02A5 | n(E1000063): BEQ 99 [0309H] |
| IF (p0.classo = p1.classp)q & (rp0.rdos = p1.rdot)u & |
02A6 | o(80E0000C): LDR R0, SP, CH |
02A7 | o(D117904C): BLEQ MT [trap=4, pos=6032] |
02A8 | p(81E00010): LDR R1, SP, 10H |
02A9 | p(D1179B4C): BLEQ MT [trap=4, pos=6043] |
02AA | q(90000000): LDR R0, R0, 0H |
02AB | q(91100000): LDR R1, R1, 0H |
02AC | q(00090001): SUB R0, R0, R1 |
02AD | r(E9000056): BNE 86 [0304H] |
02AE | s(80E0000C): LDR R0, SP, CH |
02AF | s(D117A74C): BLEQ MT [trap=4, pos=6055] |
02B0 | t(81E00010): LDR R1, SP, 10H |
02B1 | t(D117B04C): BLEQ MT [trap=4, pos=6064] |
02B2 | u(90000003): LDR R0, R0, 3H |
02B3 | u(91100003): LDR R1, R1, 3H |
02B4 | u(00090001): SUB R0, R0, R1 |
| (v(p0.typew = p1.typex)y OR |
02B5 | v(E900004E): BNE 78 [0304H] |
02B6 | w(80E0000C): LDR R0, SP, CH |
02B7 | w(D117C74C): BLEQ MT [trap=4, pos=6087] |
02B8 | x(81E00010): LDR R1, SP, 10H |
02B9 | x(D117D14C): BLEQ MT [trap=4, pos=6097] |
02BA | y(80000010): LDR R0, R0, 10H |
02BB | y(81100010): LDR R1, R1, 10H |
02BC | y(00090001): SUB R0, R0, R1 |
| (zp0.typea.formb = ORB.Array)c & (dp1.typee.formf = ORB.Array)g & (hp0.typei.lenj = p1.typek.lenl)m & (np0.typeo.basep = p1.typeq.baser)s OR |
02BD | z(E100003D): BEQ 61 [02FBH] |
02BE | a(80E0000C): LDR R0, SP, CH |
02BF | a(D117E84C): BLEQ MT [trap=4, pos=6120] |
02C0 | b(80000010): LDR R0, R0, 10H |
02C1 | b(D117ED4C): BLEQ MT [trap=4, pos=6125] |
02C2 | c(80000000): LDR R0, R0, 0H |
02C3 | c(4009000C): SUB R0, R0, CH |
02C4 | d(E900001F): BNE 31 [02E4H] |
02C5 | e(80E00010): LDR R0, SP, 10H |
02C6 | e(D118054C): BLEQ MT [trap=4, pos=6149] |
02C7 | f(80000010): LDR R0, R0, 10H |
02C8 | f(D1180A4C): BLEQ MT [trap=4, pos=6154] |
02C9 | g(80000000): LDR R0, R0, 0H |
02CA | g(4009000C): SUB R0, R0, CH |
02CB | h(E9000018): BNE 24 [02E4H] |
02CC | i(80E0000C): LDR R0, SP, CH |
02CD | i(D118224C): BLEQ MT [trap=4, pos=6178] |
02CE | j(80000010): LDR R0, R0, 10H |
02CF | j(D118264C): BLEQ MT [trap=4, pos=6182] |
02D0 | k(81E00010): LDR R1, SP, 10H |
02D1 | k(D118304C): BLEQ MT [trap=4, pos=6192] |
02D2 | l(81100010): LDR R1, R1, 10H |
02D3 | l(D118344C): BLEQ MT [trap=4, pos=6196] |
02D4 | m(80000010): LDR R0, R0, 10H |
02D5 | m(81100010): LDR R1, R1, 10H |
02D6 | m(00090001): SUB R0, R0, R1 |
02D7 | n(E900000C): BNE 12 [02E4H] |
02D8 | o(80E0000C): LDR R0, SP, CH |
02D9 | o(D118404C): BLEQ MT [trap=4, pos=6208] |
02DA | p(80000010): LDR R0, R0, 10H |
02DB | p(D118454C): BLEQ MT [trap=4, pos=6213] |
02DC | q(81E00010): LDR R1, SP, 10H |
02DD | q(D1184F4C): BLEQ MT [trap=4, pos=6223] |
02DE | r(81100010): LDR R1, R1, 10H |
02DF | r(D118544C): BLEQ MT [trap=4, pos=6228] |
02E0 | s(8000001C): LDR R0, R0, 1CH |
02E1 | s(8110001C): LDR R1, R1, 1CH |
02E2 | s(00090001): SUB R0, R0, R1 |
| (tp0.typeu.formv = ORB.Proc)w & (xp1.typey.formz = ORB.Proc)a & EqualSignaturesb(p0.typec,d p1.typee)f)g |
02E3 | t(E1000017): BEQ 23 [02FBH] |
02E4 | u(80E0000C): LDR R0, SP, CH |
02E5 | u(D1186B4C): BLEQ MT [trap=4, pos=6251] |
02E6 | v(80000010): LDR R0, R0, 10H |
02E7 | v(D118704C): BLEQ MT [trap=4, pos=6256] |
02E8 | w(80000000): LDR R0, R0, 0H |
02E9 | w(4009000A): SUB R0, R0, AH |
02EA | x(E9000019): BNE 25 [0304H] |
02EB | y(80E00010): LDR R0, SP, 10H |
02EC | y(D118874C): BLEQ MT [trap=4, pos=6279] |
02ED | z(80000010): LDR R0, R0, 10H |
02EE | z(D1188C4C): BLEQ MT [trap=4, pos=6284] |
02EF | a(80000000): LDR R0, R0, 0H |
02F0 | a(4009000A): SUB R0, R0, AH |
02F1 | b(E9000012): BNE 18 [0304H] |
02F2 | c(80E0000C): LDR R0, SP, CH |
02F3 | c(D118B24C): BLEQ MT [trap=4, pos=6322] |
02F4 | d(80000010): LDR R0, R0, 10H |
02F5 | e(81E00010): LDR R1, SP, 10H |
02F6 | e(D118BB4C): BLEQ MT [trap=4, pos=6331] |
02F7 | f(81100010): LDR R1, R1, 10H |
02F8 | g(F7FFFF8D): BL -115 [0286H] |
02F9 | g(40090000): SUB R0, R0, 0H |
| THENh p0 := p0.nexti;j p1 := p1.nextk |
02FA | h(E1000009): BEQ 9 [0304H] |
02FB | i(80E0000C): LDR R0, SP, CH |
02FC | i(D118D84C): BLEQ MT [trap=4, pos=6360] |
02FD | j(80000008): LDR R0, R0, 8H |
02FE | j(A0E0000C): STR R0, SP, CH |
02FF | k(80E00010): LDR R0, SP, 10H |
0300 | k(D118E74C): BLEQ MT [trap=4, pos=6375] |
| ELSEl p0m := NIL;n com := FALSE |
0301 | l(80000008): LDR R0, R0, 8H |
0302 | l(A0E00010): STR R0, SP, 10H |
0303 | m(E7000004): B 4 [0308H] |
0304 | n(40000000): MOV R0, R0, 0H |
0305 | n(A0E0000C): STR R0, SP, CH |
| ENDo |
0306 | o(40000000): MOV R0, R0, 0H |
0307 | o(B0E00014): STR R0, SP, 14H |
| ENDp |
0308 | p(E7FFFF9B): B -101 [02A4H] |
| ELSE comq := FALSE |
0309 | q(E7000002): B 2 [030CH] |
| ENDr ; |
030A | r(40000000): MOV R0, R0, 0H |
030B | r(B0E00014): STR R0, SP, 14H |
| RETURN com |
| ENDs EqualSignatures; |
030C | s(90E00014): LDR R0, SP, 14H |
030D | s(8FE00000): LDR LNK, SP, 0H |
030E | s(4EE80018): ADD SP, SP, 18H |
030F | s(C700000F): B LNK |
| |
| PROCEDURE CompTypes(t0, t1: ORB.Type; varpar: BOOLEAN): BOOLEAN; |
| BEGINt (*check for assignment compatibility*) |
0310 | t(4EE90010): SUB SP, SP, 10H |
0311 | t(AFE00000): STR LNK, SP, 0H |
0312 | t(A0E00004): STR R0, SP, 4H |
0313 | t(A1E00008): STR R1, SP, 8H |
0314 | t(A2E0000C): STR R2, SP, CH |
| RETURN (t0 = t1)u (*openarray assignment disallowed in ORG*) |
0315 | u(80E00004): LDR R0, SP, 4H |
0316 | u(81E00008): LDR R1, SP, 8H |
0317 | u(00090001): SUB R0, R0, R1 |
| OR (vt0.formw = ORB.Array)x & (yt1.formz = ORB.Array)a & (bt0.basec = t1.based)e & (ft0.leng = t1.lenh)i |
0318 | v(E1000059): BEQ 89 [0372H] |
0319 | w(80E00004): LDR R0, SP, 4H |
031A | w(D11A324C): BLEQ MT [trap=4, pos=6706] |
031B | x(80000000): LDR R0, R0, 0H |
031C | x(4009000C): SUB R0, R0, CH |
031D | y(E9000015): BNE 21 [0333H] |
031E | z(80E00008): LDR R0, SP, 8H |
031F | z(D11A4A4C): BLEQ MT [trap=4, pos=6730] |
0320 | a(80000000): LDR R0, R0, 0H |
0321 | a(4009000C): SUB R0, R0, CH |
0322 | b(E9000010): BNE 16 [0333H] |
0323 | c(80E00004): LDR R0, SP, 4H |
0324 | c(D11A624C): BLEQ MT [trap=4, pos=6754] |
0325 | d(81E00008): LDR R1, SP, 8H |
0326 | d(D11A6D4C): BLEQ MT [trap=4, pos=6765] |
0327 | e(8000001C): LDR R0, R0, 1CH |
0328 | e(8110001C): LDR R1, R1, 1CH |
0329 | e(00090001): SUB R0, R0, R1 |
032A | f(E9000008): BNE 8 [0333H] |
032B | g(80E00004): LDR R0, SP, 4H |
032C | g(D11A784C): BLEQ MT [trap=4, pos=6776] |
032D | h(81E00008): LDR R1, SP, 8H |
032E | h(D11A814C): BLEQ MT [trap=4, pos=6785] |
032F | i(80000010): LDR R0, R0, 10H |
0330 | i(81100010): LDR R1, R1, 10H |
0331 | i(00090001): SUB R0, R0, R1 |
| OR (jt0.formk = ORB.Record)l & (mt1.formn = ORB.Record)o & IsExtensionp(t0,q t1)r |
0332 | j(E100003F): BEQ 63 [0372H] |
0333 | k(80E00004): LDR R0, SP, 4H |
0334 | k(D11A944C): BLEQ MT [trap=4, pos=6804] |
0335 | l(80000000): LDR R0, R0, 0H |
0336 | l(4009000D): SUB R0, R0, DH |
0337 | m(E900000A): BNE 10 [0342H] |
0338 | n(80E00008): LDR R0, SP, 8H |
0339 | n(D11AAD4C): BLEQ MT [trap=4, pos=6829] |
033A | o(80000000): LDR R0, R0, 0H |
033B | o(4009000D): SUB R0, R0, DH |
033C | p(E9000005): BNE 5 [0342H] |
033D | q(80E00004): LDR R0, SP, 4H |
033E | r(81E00008): LDR R1, SP, 8H |
| ORs ~tvarpar &u |
033F | s(F7FFFDCD): BL -563 [010DH] |
0340 | s(40090000): SUB R0, R0, 0H |
0341 | t(E9000030): BNE 48 [0372H] |
0342 | u(90E0000C): LDR R0, SP, CH |
| (v(t0.formw = ORB.Pointer)x & (yt1.formz = ORB.Pointer)a & IsExtensionb(t0.basec,d t1.basee)f |
0343 | v(E9000030): BNE 48 [0374H] |
0344 | w(80E00004): LDR R0, SP, 4H |
0345 | w(D11AF74C): BLEQ MT [trap=4, pos=6903] |
0346 | x(80000000): LDR R0, R0, 0H |
0347 | x(40090007): SUB R0, R0, 7H |
0348 | y(E900000E): BNE 14 [0357H] |
0349 | z(80E00008): LDR R0, SP, 8H |
034A | z(D11B114C): BLEQ MT [trap=4, pos=6929] |
034B | a(80000000): LDR R0, R0, 0H |
034C | a(40090007): SUB R0, R0, 7H |
034D | b(E9000009): BNE 9 [0357H] |
034E | c(80E00004): LDR R0, SP, 4H |
034F | c(D11B374C): BLEQ MT [trap=4, pos=6967] |
0350 | d(8000001C): LDR R0, R0, 1CH |
0351 | e(81E00008): LDR R1, SP, 8H |
0352 | e(D11B404C): BLEQ MT [trap=4, pos=6976] |
0353 | f(8110001C): LDR R1, R1, 1CH |
| ORg (ht0.formi = ORB.Proc)j & (kt1.forml = ORB.Proc)m & EqualSignaturesn(t0,o t1)p |
0354 | g(F7FFFDB8): BL -584 [010DH] |
0355 | g(40090000): SUB R0, R0, 0H |
0356 | h(E900001B): BNE 27 [0372H] |
0357 | i(80E00004): LDR R0, SP, 4H |
0358 | i(D11B554C): BLEQ MT [trap=4, pos=6997] |
0359 | j(80000000): LDR R0, R0, 0H |
035A | j(4009000A): SUB R0, R0, AH |
035B | k(E900000A): BNE 10 [0366H] |
035C | l(80E00008): LDR R0, SP, 8H |
035D | l(D11B6C4C): BLEQ MT [trap=4, pos=7020] |
035E | m(80000000): LDR R0, R0, 0H |
035F | m(4009000A): SUB R0, R0, AH |
0360 | n(E9000005): BNE 5 [0366H] |
0361 | o(80E00004): LDR R0, SP, 4H |
0362 | p(81E00008): LDR R1, SP, 8H |
| ORq (rt0.forms IN {ORB.Pointer, ORB.Proc})t & (ut1.formv = ORB.NilTyp)w) |
0363 | q(F7FFFF22): BL -222 [0286H] |
0364 | q(40090000): SUB R0, R0, 0H |
0365 | r(E900000C): BNE 12 [0372H] |
0366 | s(80E00004): LDR R0, SP, 4H |
0367 | s(D11BA64C): BLEQ MT [trap=4, pos=7078] |
0368 | t(41000480): MOV R1, R0, 480H |
0369 | t(80000000): LDR R0, R0, 0H |
036A | t(40080001): ADD R0, R0, 1H |
036B | t(01130000): ROR R1, R1, R0 |
036C | u(E8000007): BPL 7 [0374H] |
036D | v(80E00008): LDR R0, SP, 8H |
036E | v(D11BCD4C): BLEQ MT [trap=4, pos=7117] |
036F | w(80000000): LDR R0, R0, 0H |
0370 | w(40090008): SUB R0, R0, 8H |
| ENDx CompTypes; |
0371 | x(E9000002): BNE 2 [0374H] |
0372 | x(40000001): MOV R0, R0, 1H |
0373 | x(E7000001): B 1 [0375H] |
0374 | x(40000000): MOV R0, R0, 0H |
0375 | x(8FE00000): LDR LNK, SP, 0H |
0376 | x(4EE80010): ADD SP, SP, 10H |
0377 | x(C700000F): B LNK |
| |
| PROCEDURE Parameter(par: ORB.Object); |
| VAR x: ORG.Item; varpar: BOOLEAN; |
| BEGINy expression(x)z;a |
0378 | y(4EE90024): SUB SP, SP, 24H |
0379 | y(AFE00000): STR LNK, SP, 0H |
037A | y(A0E00004): STR R0, SP, 4H |
037B | z(40E80008): ADD R0, SP, 8H |
037C | z .FIXUP D |
037C | z(8D9000FE): LDR SB, MT, MOD9 [ORG] |
037D | z(41D80001): ADD R1, SB, VAR1 |
037E | a .FIXUP D |
037E | a(8D000002): LDR SB, MT, MOD0 [ORP] |
037F | a(82D00034): LDR R2, SB, 34H [data] |
0380 | a(D11C535C): BLEQ MT [trap=5, pos=7251] |
0381 | a(D7000002): BL R2 |
| IF par # NIL THENb |
0382 | b(80E00004): LDR R0, SP, 4H |
0383 | b(E10000D6): BEQ 214 [045AH] |
| varpar := par.classc = ORB.Par;d |
0384 | c(80E00004): LDR R0, SP, 4H |
0385 | c(D11C834C): BLEQ MT [trap=4, pos=7299] |
0386 | d(90000000): LDR R0, R0, 0H |
0387 | d(40090003): SUB R0, R0, 3H |
0388 | d(E9000002): BNE 2 [038BH] |
0389 | d(40000001): MOV R0, R0, 1H |
038A | d(E7000001): B 1 [038CH] |
038B | d(40000000): MOV R0, R0, 0H |
038C | d(B0E00020): STR R0, SP, 20H |
| IF CompTypes(par.typee,f x.type,g varpar)h THENi |
038D | e(80E00004): LDR R0, SP, 4H |
038E | e(D11CAA4C): BLEQ MT [trap=4, pos=7338] |
038F | f(80000010): LDR R0, R0, 10H |
0390 | g(81E0000C): LDR R1, SP, CH |
0391 | h(92E00020): LDR R2, SP, 20H |
0392 | i(F7FFFF7D): BL -131 [0310H] |
0393 | i(40090000): SUB R0, R0, 0H |
0394 | i(E1000017): BEQ 23 [03ACH] |
| IF ~varpar THENj ORG.ValueParam(x)k |
0395 | j(90E00020): LDR R0, SP, 20H |
0396 | j(E9000005): BNE 5 [039CH] |
0397 | k(40E80008): ADD R0, SP, 8H |
0398 | k .FIXUP D |
0398 | k(8D90001A): LDR SB, MT, MOD9 [ORG] |
0399 | k(41D80001): ADD R1, SB, VAR1 |
| ELSEl (*par.class = Par*) |
039A | l .FIXUP P |
039A | l(F792511E): BL MOD9 [ORG] PROC37 |
| IFm ~par.rdon THENo CheckReadOnly(x)p ENDq ; |
039B | m(E700000F): B 15 [03ABH] |
039C | n(80E00004): LDR R0, SP, 4H |
039D | n(D11D214C): BLEQ MT [trap=4, pos=7457] |
039E | o(90000003): LDR R0, R0, 3H |
039F | o(E9000004): BNE 4 [03A4H] |
03A0 | p(40E80008): ADD R0, SP, 8H |
03A1 | p .FIXUP D |
03A1 | p(8D900009): LDR SB, MT, MOD9 [ORG] |
03A2 | p(41D80001): ADD R1, SB, VAR1 |
03A3 | q(F7FFFD40): BL -704 [00E4H] |
| ORG.VarParam(x,r par.types)t |
03A4 | r(40E80008): ADD R0, SP, 8H |
03A5 | r .FIXUP D |
03A5 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
03A6 | r(41D80001): ADD R1, SB, VAR1 |
03A7 | s(82E00004): LDR R2, SP, 4H |
03A8 | s(D11D604C): BLEQ MT [trap=4, pos=7520] |
03A9 | t(82200010): LDR R2, R2, 10H |
| ENDu |
03AA | u .FIXUP P |
03AA | u(F7924010): BL MOD9 [ORG] PROC36 |
| ELSIF (vx.type.formw = ORB.Array)x & (ypar.typez.forma = ORB.Array)b & |
03AB | v(E70000AE): B 174 [045AH] |
03AC | w(80E0000C): LDR R0, SP, CH |
03AD | w(D11D864C): BLEQ MT [trap=4, pos=7558] |
03AE | x(80000000): LDR R0, R0, 0H |
03AF | x(4009000C): SUB R0, R0, CH |
03B0 | y(E9000025): BNE 37 [03D6H] |
03B1 | z(80E00004): LDR R0, SP, 4H |
03B2 | z(D11D9F4C): BLEQ MT [trap=4, pos=7583] |
03B3 | a(80000010): LDR R0, R0, 10H |
03B4 | a(D11DA44C): BLEQ MT [trap=4, pos=7588] |
03B5 | b(80000000): LDR R0, R0, 0H |
03B6 | b(4009000C): SUB R0, R0, CH |
| (cx.type.based = par.typee.basef)g & (hpar.typei.lenj < 0)k THENl |
03B7 | c(E900001E): BNE 30 [03D6H] |
03B8 | d(80E0000C): LDR R0, SP, CH |
03B9 | d(D11DCA4C): BLEQ MT [trap=4, pos=7626] |
03BA | e(81E00004): LDR R1, SP, 4H |
03BB | e(D11DD54C): BLEQ MT [trap=4, pos=7637] |
03BC | f(81100010): LDR R1, R1, 10H |
03BD | f(D11DDA4C): BLEQ MT [trap=4, pos=7642] |
03BE | g(8000001C): LDR R0, R0, 1CH |
03BF | g(8110001C): LDR R1, R1, 1CH |
03C0 | g(00090001): SUB R0, R0, R1 |
03C1 | h(E9000014): BNE 20 [03D6H] |
03C2 | i(80E00004): LDR R0, SP, 4H |
03C3 | i(D11DE74C): BLEQ MT [trap=4, pos=7655] |
03C4 | j(80000010): LDR R0, R0, 10H |
03C5 | j(D11DEB4C): BLEQ MT [trap=4, pos=7659] |
03C6 | k(80000010): LDR R0, R0, 10H |
03C7 | k(40090000): SUB R0, R0, 0H |
03C8 | l(ED00000D): BGE 13 [03D6H] |
| IF ~par.rdom THENn CheckReadOnly(x)o ENDp ; |
03C9 | m(80E00004): LDR R0, SP, 4H |
03CA | m(D11E094C): BLEQ MT [trap=4, pos=7689] |
03CB | n(90000003): LDR R0, R0, 3H |
03CC | n(E9000004): BNE 4 [03D1H] |
03CD | o(40E80008): ADD R0, SP, 8H |
03CE | o .FIXUP D |
03CE | o(8D900029): LDR SB, MT, MOD9 [ORG] |
03CF | o(41D80001): ADD R1, SB, VAR1 |
03D0 | p(F7FFFD13): BL -749 [00E4H] |
| ORG.OpenArrayParam(x)q |
03D1 | q(40E80008): ADD R0, SP, 8H |
03D2 | q .FIXUP D |
03D2 | q(8D900004): LDR SB, MT, MOD9 [ORG] |
03D3 | q(41D80001): ADD R1, SB, VAR1 |
| ELSIFr (sx.type.formt = ORB.String)u & varparv &w parx.rdoy &z (apar.typeb.formc = ORB.Array)d & |
03D4 | r .FIXUP P |
03D4 | r(F792302A): BL MOD9 [ORG] PROC35 |
03D5 | s(E7000084): B 132 [045AH] |
03D6 | t(80E0000C): LDR R0, SP, CH |
03D7 | t(D11E5C4C): BLEQ MT [trap=4, pos=7772] |
03D8 | u(80000000): LDR R0, R0, 0H |
03D9 | u(4009000B): SUB R0, R0, BH |
03DA | v(E9000022): BNE 34 [03FDH] |
03DB | w(90E00020): LDR R0, SP, 20H |
03DC | x(E1000020): BEQ 32 [03FDH] |
03DD | y(80E00004): LDR R0, SP, 4H |
03DE | y(D11E7D4C): BLEQ MT [trap=4, pos=7805] |
03DF | z(90000003): LDR R0, R0, 3H |
03E0 | a(E100001C): BEQ 28 [03FDH] |
03E1 | b(80E00004): LDR R0, SP, 4H |
03E2 | b(D11E894C): BLEQ MT [trap=4, pos=7817] |
03E3 | c(80000010): LDR R0, R0, 10H |
03E4 | c(D11E8E4C): BLEQ MT [trap=4, pos=7822] |
03E5 | d(80000000): LDR R0, R0, 0H |
03E6 | d(4009000C): SUB R0, R0, CH |
| (epar.typef.baseg.formh = ORB.Char)i & (jpar.typek.lenl < 0)m THENn ORG.StringParam(x)o |
03E7 | e(E9000015): BNE 21 [03FDH] |
03E8 | f(80E00004): LDR R0, SP, 4H |
03E9 | f(D11EB24C): BLEQ MT [trap=4, pos=7858] |
03EA | g(80000010): LDR R0, R0, 10H |
03EB | g(D11EB74C): BLEQ MT [trap=4, pos=7863] |
03EC | h(8000001C): LDR R0, R0, 1CH |
03ED | h(D11EBC4C): BLEQ MT [trap=4, pos=7868] |
03EE | i(80000000): LDR R0, R0, 0H |
03EF | i(40090003): SUB R0, R0, 3H |
03F0 | j(E900000C): BNE 12 [03FDH] |
03F1 | k(80E00004): LDR R0, SP, 4H |
03F2 | k(D11ED44C): BLEQ MT [trap=4, pos=7892] |
03F3 | l(80000010): LDR R0, R0, 10H |
03F4 | l(D11ED84C): BLEQ MT [trap=4, pos=7896] |
03F5 | m(80000010): LDR R0, R0, 10H |
03F6 | m(40090000): SUB R0, R0, 0H |
03F7 | n(ED000005): BGE 5 [03FDH] |
03F8 | o(40E80008): ADD R0, SP, 8H |
03F9 | o .FIXUP D |
03F9 | o(8D900027): LDR SB, MT, MOD9 [ORG] |
03FA | o(41D80001): ADD R1, SB, VAR1 |
| ELSIFp ~qvarpar &r (spar.typet.formu = ORB.Int)v & (wx.type.formx = ORB.Int)y THENz ORG.ValueParam(x)a (*BYTE*) |
03FB | p .FIXUP P |
03FB | p(F7926027): BL MOD9 [ORG] PROC38 |
03FC | q(E700005D): B 93 [045AH] |
03FD | r(90E00020): LDR R0, SP, 20H |
03FE | s(E9000011): BNE 17 [0410H] |
03FF | t(80E00004): LDR R0, SP, 4H |
0400 | t(D11F154C): BLEQ MT [trap=4, pos=7957] |
0401 | u(80000010): LDR R0, R0, 10H |
0402 | u(D11F1A4C): BLEQ MT [trap=4, pos=7962] |
0403 | v(80000000): LDR R0, R0, 0H |
0404 | v(40090004): SUB R0, R0, 4H |
0405 | w(E900000A): BNE 10 [0410H] |
0406 | x(80E0000C): LDR R0, SP, CH |
0407 | x(D11F344C): BLEQ MT [trap=4, pos=7988] |
0408 | y(80000000): LDR R0, R0, 0H |
0409 | y(40090004): SUB R0, R0, 4H |
040A | z(E9000005): BNE 5 [0410H] |
040B | a(40E80008): ADD R0, SP, 8H |
040C | a .FIXUP D |
040C | a(8D900013): LDR SB, MT, MOD9 [ORG] |
040D | a(41D80001): ADD R1, SB, VAR1 |
| ELSIFb (cx.type.formd = ORB.String)e & (fx.b = 2)g & (hpar.classi = ORB.Var)j & (kpar.typel.formm = ORB.Char)n THENo |
040E | b .FIXUP P |
040E | b(F7925013): BL MOD9 [ORG] PROC37 |
040F | c(E700004A): B 74 [045AH] |
0410 | d(80E0000C): LDR R0, SP, CH |
0411 | d(D11F794C): BLEQ MT [trap=4, pos=8057] |
0412 | e(80000000): LDR R0, R0, 0H |
0413 | e(4009000B): SUB R0, R0, BH |
0414 | f(E9000018): BNE 24 [042DH] |
0415 | g(80E00014): LDR R0, SP, 14H |
0416 | g(40090002): SUB R0, R0, 2H |
0417 | h(E9000015): BNE 21 [042DH] |
0418 | i(80E00004): LDR R0, SP, 4H |
0419 | i(D11FA04C): BLEQ MT [trap=4, pos=8096] |
041A | j(90000000): LDR R0, R0, 0H |
041B | j(40090002): SUB R0, R0, 2H |
041C | k(E9000010): BNE 16 [042DH] |
041D | l(80E00004): LDR R0, SP, 4H |
041E | l(D11FB74C): BLEQ MT [trap=4, pos=8119] |
041F | m(80000010): LDR R0, R0, 10H |
0420 | m(D11FBC4C): BLEQ MT [trap=4, pos=8124] |
0421 | n(80000000): LDR R0, R0, 0H |
0422 | n(40090003): SUB R0, R0, 3H |
0423 | o(E9000009): BNE 9 [042DH] |
| ORG.StrToChar(x)p;q ORG.ValueParam(x)r |
0424 | p(40E80008): ADD R0, SP, 8H |
0425 | p .FIXUP D |
0425 | p(8D900019): LDR SB, MT, MOD9 [ORG] |
0426 | p(41D80001): ADD R1, SB, VAR1 |
0427 | q .FIXUP P |
0427 | q(F791F019): BL MOD9 [ORG] PROC31 |
0428 | r(40E80008): ADD R0, SP, 8H |
0429 | r .FIXUP D |
0429 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
042A | r(41D80001): ADD R1, SB, VAR1 |
| ELSIFs (tpar.typeu.formv = ORB.Array)w & (xpar.typey.basez = ORB.byteType)a & |
042B | s .FIXUP P |
042B | s(F7925004): BL MOD9 [ORG] PROC37 |
042C | t(E700002D): B 45 [045AH] |
042D | u(80E00004): LDR R0, SP, 4H |
042E | u(D1200F4C): BLEQ MT [trap=4, pos=8207] |
042F | v(80000010): LDR R0, R0, 10H |
0430 | v(D120144C): BLEQ MT [trap=4, pos=8212] |
0431 | w(80000000): LDR R0, R0, 0H |
0432 | w(4009000C): SUB R0, R0, CH |
0433 | x(E9000022): BNE 34 [0456H] |
0434 | y(80E00004): LDR R0, SP, 4H |
0435 | y(D1202D4C): BLEQ MT [trap=4, pos=8237] |
0436 | z(80000010): LDR R0, R0, 10H |
0437 | z(D120324C): BLEQ MT [trap=4, pos=8242] |
0438 | a(8000001C): LDR R0, R0, 1CH |
0439 | a .FIXUP D |
0439 | a(8D800010): LDR SB, MT, MOD8 [ORB] |
043A | a(81D00006): LDR R1, SB, VAR6 |
043B | a(00090001): SUB R0, R0, R1 |
| (bpar.typec.lend >= 0)e & (fpar.typeg.sizeh = x.type.sizei)j THENk |
043C | b(E9000019): BNE 25 [0456H] |
043D | c(80E00004): LDR R0, SP, 4H |
043E | c(D120594C): BLEQ MT [trap=4, pos=8281] |
043F | d(80000010): LDR R0, R0, 10H |
0440 | d(D1205D4C): BLEQ MT [trap=4, pos=8285] |
0441 | e(80000010): LDR R0, R0, 10H |
0442 | e(40090000): SUB R0, R0, 0H |
0443 | f(E5000012): BLT 18 [0456H] |
0444 | g(80E00004): LDR R0, SP, 4H |
0445 | g(D1206F4C): BLEQ MT [trap=4, pos=8303] |
0446 | h(80000010): LDR R0, R0, 10H |
0447 | h(D120744C): BLEQ MT [trap=4, pos=8308] |
0448 | i(81E0000C): LDR R1, SP, CH |
0449 | i(D120824C): BLEQ MT [trap=4, pos=8322] |
044A | j(80000020): LDR R0, R0, 20H |
044B | j(81100020): LDR R1, R1, 20H |
044C | j(00090001): SUB R0, R0, R1 |
044D | k(E9000008): BNE 8 [0456H] |
| ORG.VarParam(x,l par.typem)n |
044E | l(40E80008): ADD R0, SP, 8H |
044F | l .FIXUP D |
044F | l(8D900016): LDR SB, MT, MOD9 [ORG] |
0450 | l(41D80001): ADD R1, SB, VAR1 |
0451 | m(82E00004): LDR R2, SP, 4H |
0452 | m(D120A94C): BLEQ MT [trap=4, pos=8361] |
0453 | n(82200010): LDR R2, R2, 10H |
| ELSEo ORSp.Mark("incompatible parameters")q |
0454 | o .FIXUP P |
0454 | o(F7924029): BL MOD9 [ORG] PROC36 |
0455 | p(E7000004): B 4 [045AH] |
0456 | q .FIXUP D |
0456 | q(8D000007): LDR SB, MT, MOD0 [ORP] |
0457 | q(40D801E8): ADD R0, SB, 1E8H ["incompatible parameters"] |
0458 | q(41000018): MOV R1, R0, 18H |
| ENDr |
0459 | r .FIXUP P |
0459 | r(F7709005): BL MOD7 [ORS] PROC9 |
| END |
| ENDs Parameter; |
045A | s(8FE00000): LDR LNK, SP, 0H |
045B | s(4EE80024): ADD SP, SP, 24H |
045C | s(C700000F): B LNK |
| |
| PROCEDURE ParamList(VAR x: ORG.Item); |
| VAR n: INTEGER; par: ORB.Object; |
| BEGINt par := x.type.dscu;v n := 0;w |
045D | t(4EE90014): SUB SP, SP, 14H |
045E | t(AFE00000): STR LNK, SP, 0H |
045F | t(A0E00004): STR R0, SP, 4H |
0460 | t(A1E00008): STR R1, SP, 8H |
0461 | u(80E00004): LDR R0, SP, 4H |
0462 | u(80000004): LDR R0, R0, 4H |
0463 | u(D121644C): BLEQ MT [trap=4, pos=8548] |
0464 | v(80000014): LDR R0, R0, 14H |
0465 | v(A0E00010): STR R0, SP, 10H |
0466 | w(40000000): MOV R0, R0, 0H |
0467 | w(A0E0000C): STR R0, SP, CH |
| IF sym # ORS.rparen THENx |
0468 | x .FIXUP D |
0468 | x(8D000012): LDR SB, MT, MOD0 [ORP] |
0469 | x(80D0001C): LDR R0, SB, 1CH [data] |
046A | x(4009002C): SUB R0, R0, 2CH |
046B | x(E100001F): BEQ 31 [048BH] |
| Parameter(par)y;z n := 1;a |
046C | y(80E00010): LDR R0, SP, 10H |
046D | z(F7FFFF0A): BL -246 [0378H] |
046E | a(40000001): MOV R0, R0, 1H |
046F | a(A0E0000C): STR R0, SP, CH |
| WHILE sym <= ORS.comma DOb |
0470 | b .FIXUP D |
0470 | b(8D000008): LDR SB, MT, MOD0 [ORP] |
0471 | b(80D0001C): LDR R0, SB, 1CH [data] |
0472 | b(40090028): SUB R0, R0, 28H |
0473 | b(EE000011): BGT 17 [0485H] |
| Check(sym,c "comma?")d;e |
0474 | c .FIXUP D |
0474 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
0475 | c(80D0001C): LDR R0, SB, 1CH [data] |
0476 | d(41D80200): ADD R1, SB, 200H |
0477 | d(42000007): MOV R2, R0, 7H |
0478 | e(F7FFFB87): BL -1145 [0000H] |
| IF par # NIL THENf par := par.nextg ENDh ; |
0479 | f(80E00010): LDR R0, SP, 10H |
047A | f(E1000004): BEQ 4 [047FH] |
047B | g(80E00010): LDR R0, SP, 10H |
047C | g(D122104C): BLEQ MT [trap=4, pos=8720] |
047D | h(80000008): LDR R0, R0, 8H |
047E | h(A0E00010): STR R0, SP, 10H |
| INC(n);i Parameter(par)j |
047F | i(80E0000C): LDR R0, SP, CH |
0480 | i(40080001): ADD R0, R0, 1H |
0481 | i(A0E0000C): STR R0, SP, CH |
0482 | j(80E00010): LDR R0, SP, 10H |
| ENDk ; |
0483 | k(F7FFFEF4): BL -268 [0378H] |
0484 | k(E7FFFFEB): B -21 [0470H] |
| Check(ORS.rparen,l ") missing")m |
0485 | l(4000002C): MOV R0, R0, 2CH |
0486 | m .FIXUP D |
0486 | m(8D000012): LDR SB, MT, MOD0 [ORP] |
0487 | m(41D80208): ADD R1, SB, 208H [") missing"] |
0488 | m(4200000A): MOV R2, R0, AH |
| ELSEn ORSo.Get(sym)p;q |
0489 | n(F7FFFB76): BL -1162 [0000H] |
048A | o(E7000003): B 3 [048EH] |
048B | p .FIXUP D |
048B | p(8D000005): LDR SB, MT, MOD0 [ORP] |
048C | p(40D8001C): ADD R0, SB, 1CH [data] |
048D | q .FIXUP P |
048D | q(F770A034): BL MOD7 [ORS] PROC10 |
| END ; |
| IF n < x.type.nofparr THENs ORS.Mark("too few params")t |
048E | r(80E00004): LDR R0, SP, 4H |
048F | r(80000004): LDR R0, R0, 4H |
0490 | r(D122A04C): BLEQ MT [trap=4, pos=8864] |
0491 | s(81E0000C): LDR R1, SP, CH |
0492 | s(8000000C): LDR R0, R0, CH |
0493 | s(01190000): SUB R1, R1, R0 |
0494 | s(ED000005): BGE 5 [049AH] |
0495 | t .FIXUP D |
0495 | t(8D00000A): LDR SB, MT, MOD0 [ORP] |
0496 | t(40D80214): ADD R0, SB, 214H ["too few params"] |
0497 | t(4100000F): MOV R1, R0, FH |
| ELSIFu nv > x.type.nofparw THENx ORS.Mark("too many params")y |
0498 | u .FIXUP P |
0498 | u(F770900B): BL MOD7 [ORS] PROC9 |
0499 | v(E700000B): B 11 [04A5H] |
049A | w(80E00004): LDR R0, SP, 4H |
049B | w(80000004): LDR R0, R0, 4H |
049C | w(D122DC4C): BLEQ MT [trap=4, pos=8924] |
049D | x(81E0000C): LDR R1, SP, CH |
049E | x(8000000C): LDR R0, R0, CH |
049F | x(01190000): SUB R1, R1, R0 |
04A0 | x(E6000004): BLE 4 [04A5H] |
04A1 | y .FIXUP D |
04A1 | y(8D00000C): LDR SB, MT, MOD0 [ORP] |
04A2 | y(40D80224): ADD R0, SB, 224H ["too many params"] |
04A3 | y(41000010): MOV R1, R0, 10H |
| ENDz |
04A4 | z .FIXUP P |
04A4 | z(F770900C): BL MOD7 [ORS] PROC9 |
| ENDa ParamList; |
04A5 | a(8FE00000): LDR LNK, SP, 0H |
04A6 | a(4EE80014): ADD SP, SP, 14H |
04A7 | a(C700000F): B LNK |
| |
| PROCEDURE StandFunc(VAR x: ORG.Item; fct: LONGINT; restyp: ORB.Type); |
| VAR y: ORG.Item; n, npar: LONGINT; |
| BEGINb Check(ORS.lparen,c "no (")d;e |
04A8 | b(4EE90034): SUB SP, SP, 34H |
04A9 | b(AFE00000): STR LNK, SP, 0H |
04AA | b(A0E00004): STR R0, SP, 4H |
04AB | b(A1E00008): STR R1, SP, 8H |
04AC | b(A2E0000C): STR R2, SP, CH |
04AD | b(A3E00010): STR R3, SP, 10H |
04AE | c(4000001C): MOV R0, R0, 1CH |
04AF | d .FIXUP D |
04AF | d(8D00000E): LDR SB, MT, MOD0 [ORP] |
04B0 | d(41D80234): ADD R1, SB, 234H ["no ("] |
04B1 | d(42000005): MOV R2, R0, 5H |
04B2 | e(F7FFFB4D): BL -1203 [0000H] |
| npar := fct MOD 10;f fct := fct DIV 10;g expression(x)h;i n := 1;j |
04B3 | f(80E0000C): LDR R0, SP, CH |
04B4 | f(400B000A): DIV R0, R0, AH |
04B5 | f(20000000): MOV' R0, R0, R0 |
04B6 | f(A0E00030): STR R0, SP, 30H |
04B7 | g(80E0000C): LDR R0, SP, CH |
04B8 | g(400B000A): DIV R0, R0, AH |
04B9 | g(A0E0000C): STR R0, SP, CH |
04BA | h(80E00004): LDR R0, SP, 4H |
04BB | h(81E00008): LDR R1, SP, 8H |
04BC | i .FIXUP D |
04BC | i(8D00000D): LDR SB, MT, MOD0 [ORP] |
04BD | i(82D00034): LDR R2, SB, 34H [data] |
04BE | i(D123E35C): BLEQ MT [trap=5, pos=9187] |
04BF | i(D7000002): BL R2 |
04C0 | j(40000001): MOV R0, R0, 1H |
04C1 | j(A0E0002C): STR R0, SP, 2CH |
| WHILE sym = ORS.comma DOk ORS.Get(sym)l;m expression(y)n;o INC(n) ENDp ; |
04C2 | k .FIXUP D |
04C2 | k(8D000006): LDR SB, MT, MOD0 [ORP] |
04C3 | k(80D0001C): LDR R0, SB, 1CH [data] |
04C4 | k(40090028): SUB R0, R0, 28H |
04C5 | k(E900000E): BNE 14 [04D4H] |
04C6 | l .FIXUP D |
04C6 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
04C7 | l(40D8001C): ADD R0, SB, 1CH [data] |
04C8 | m .FIXUP P |
04C8 | m(F770A024): BL MOD7 [ORS] PROC10 |
04C9 | n(40E80014): ADD R0, SP, 14H |
04CA | n .FIXUP D |
04CA | n(8D900004): LDR SB, MT, MOD9 [ORG] |
04CB | n(41D80001): ADD R1, SB, VAR1 |
04CC | o .FIXUP D |
04CC | o(8D000002): LDR SB, MT, MOD0 [ORP] |
04CD | o(82D00034): LDR R2, SB, 34H [data] |
04CE | o(D124255C): BLEQ MT [trap=5, pos=9253] |
04CF | o(D7000002): BL R2 |
04D0 | p(80E0002C): LDR R0, SP, 2CH |
04D1 | p(40080001): ADD R0, R0, 1H |
04D2 | p(A0E0002C): STR R0, SP, 2CH |
04D3 | p(E7FFFFEE): B -18 [04C2H] |
| Check(ORS.rparen,q "no )")r;s |
04D4 | q(4000002C): MOV R0, R0, 2CH |
04D5 | r .FIXUP D |
04D5 | r(8D000009): LDR SB, MT, MOD0 [ORP] |
04D6 | r(41D8023C): ADD R1, SB, 23CH ["no )"] |
04D7 | r(42000005): MOV R2, R0, 5H |
04D8 | s(F7FFFB27): BL -1241 [0000H] |
| IF n = npar THENt |
04D9 | t(80E0002C): LDR R0, SP, 2CH |
04DA | t(81E00030): LDR R1, SP, 30H |
04DB | t(00090001): SUB R0, R0, R1 |
04DC | t(E900012A): BNE 298 [0607H] |
| IF fct = 0 THENu (*ABS*) |
04DD | u(80E0000C): LDR R0, SP, CH |
04DE | u(E9000014): BNE 20 [04F3H] |
| IF x.type.formv IN {ORB.Int, ORB.Real} THENw ORG.Abs(x)x;y restyp := x.type ELSEz ORSa.Mark("bad type")b ENDc |
04DF | v(80E00004): LDR R0, SP, 4H |
04E0 | v(80000004): LDR R0, R0, 4H |
04E1 | v(D1249B4C): BLEQ MT [trap=4, pos=9371] |
04E2 | w(41000030): MOV R1, R0, 30H |
04E3 | w(80000000): LDR R0, R0, 0H |
04E4 | w(40080001): ADD R0, R0, 1H |
04E5 | w(01130000): ROR R1, R1, R0 |
04E6 | w(E8000007): BPL 7 [04EEH] |
04E7 | x(80E00004): LDR R0, SP, 4H |
04E8 | x(81E00008): LDR R1, SP, 8H |
04E9 | y .FIXUP P |
04E9 | y(F7940021): BL MOD9 [ORG] PROC64 |
04EA | z(80E00004): LDR R0, SP, 4H |
04EB | z(80000004): LDR R0, R0, 4H |
04EC | z(A0E00010): STR R0, SP, 10H |
04ED | a(E7000004): B 4 [04F2H] |
04EE | b .FIXUP D |
04EE | b(8D000019): LDR SB, MT, MOD0 [ORP] |
04EF | b(40D80244): ADD R0, SB, 244H ["bad type"] |
04F0 | b(41000009): MOV R1, R0, 9H |
04F1 | c .FIXUP P |
04F1 | c(F7709008): BL MOD7 [ORS] PROC9 |
| ELSIF fctd = 1 THENe (*ODD*) CheckInt(x)f;g ORG.Odd(x)h |
04F2 | d(E7000110): B 272 [0603H] |
04F3 | e(80E0000C): LDR R0, SP, CH |
04F4 | e(40090001): SUB R0, R0, 1H |
04F5 | e(E9000007): BNE 7 [04FDH] |
04F6 | f(80E00004): LDR R0, SP, 4H |
04F7 | f(81E00008): LDR R1, SP, 8H |
04F8 | g(F7FFFB74): BL -1164 [006DH] |
04F9 | h(80E00004): LDR R0, SP, 4H |
04FA | h(81E00008): LDR R1, SP, 8H |
| ELSIFi fctj = 2 THENk (*FLOOR*) CheckReal(x)l;m ORG.Floor(x)n |
04FB | i .FIXUP P |
04FB | i(F794100A): BL MOD9 [ORG] PROC65 |
04FC | j(E7000106): B 262 [0603H] |
04FD | k(80E0000C): LDR R0, SP, CH |
04FE | k(40090002): SUB R0, R0, 2H |
04FF | k(E9000007): BNE 7 [0507H] |
0500 | l(80E00004): LDR R0, SP, 4H |
0501 | l(81E00008): LDR R1, SP, 8H |
0502 | m(F7FFFB7F): BL -1153 [0082H] |
0503 | n(80E00004): LDR R0, SP, 4H |
0504 | n(81E00008): LDR R1, SP, 8H |
| ELSIFo fctp = 3 THENq (*FLT*) CheckInt(x)r;s ORG.Float(x)t |
0505 | o .FIXUP P |
0505 | o(F794200A): BL MOD9 [ORG] PROC66 |
0506 | p(E70000FC): B 252 [0603H] |
0507 | q(80E0000C): LDR R0, SP, CH |
0508 | q(40090003): SUB R0, R0, 3H |
0509 | q(E9000007): BNE 7 [0511H] |
050A | r(80E00004): LDR R0, SP, 4H |
050B | r(81E00008): LDR R1, SP, 8H |
050C | s(F7FFFB60): BL -1184 [006DH] |
050D | t(80E00004): LDR R0, SP, 4H |
050E | t(81E00008): LDR R1, SP, 8H |
| ELSIFu fctv = 4 THENw (*ORD*) |
050F | u .FIXUP P |
050F | u(F794300A): BL MOD9 [ORG] PROC67 |
0510 | v(E70000F2): B 242 [0603H] |
0511 | w(80E0000C): LDR R0, SP, CH |
0512 | w(40090004): SUB R0, R0, 4H |
0513 | w(E900001D): BNE 29 [0531H] |
| IF x.type.formx <= ORB.Proc THENy ORG.Ord(x)z |
0514 | x(80E00004): LDR R0, SP, 4H |
0515 | x(80000004): LDR R0, R0, 4H |
0516 | x(D125DC4C): BLEQ MT [trap=4, pos=9692] |
0517 | y(80000000): LDR R0, R0, 0H |
0518 | y(4009000A): SUB R0, R0, AH |
0519 | y(EE000004): BGT 4 [051EH] |
051A | z(80E00004): LDR R0, SP, 4H |
051B | z(81E00008): LDR R1, SP, 8H |
| ELSIFa (bx.type.formc = ORB.String)d & (ex.b = 2)f THENg ORG.StrToChar(x)h |
051C | a .FIXUP P |
051C | a(F794400D): BL MOD9 [ORG] PROC68 |
051D | b(E7000012): B 18 [0530H] |
051E | c(80E00004): LDR R0, SP, 4H |
051F | c(80000004): LDR R0, R0, 4H |
0520 | c(D126134C): BLEQ MT [trap=4, pos=9747] |
0521 | d(80000000): LDR R0, R0, 0H |
0522 | d(4009000B): SUB R0, R0, BH |
0523 | e(E9000008): BNE 8 [052CH] |
0524 | f(80E00004): LDR R0, SP, 4H |
0525 | f(8000000C): LDR R0, R0, CH |
0526 | f(40090002): SUB R0, R0, 2H |
0527 | g(E9000004): BNE 4 [052CH] |
0528 | h(80E00004): LDR R0, SP, 4H |
0529 | h(81E00008): LDR R1, SP, 8H |
| ELSEi ORSj.Mark("bad type")k |
052A | i .FIXUP P |
052A | i(F791F00E): BL MOD9 [ORG] PROC31 |
052B | j(E7000004): B 4 [0530H] |
052C | k .FIXUP D |
052C | k(8D00003E): LDR SB, MT, MOD0 [ORP] |
052D | k(40D80250): ADD R0, SB, 250H ["bad type"] |
052E | k(41000009): MOV R1, R0, 9H |
| ENDl |
052F | l .FIXUP P |
052F | l(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF fctm = 5 THENn (*CHR*) CheckInt(x)o;p ORG.Ord(x)q |
0530 | m(E70000D2): B 210 [0603H] |
0531 | n(80E0000C): LDR R0, SP, CH |
0532 | n(40090005): SUB R0, R0, 5H |
0533 | n(E9000007): BNE 7 [053BH] |
0534 | o(80E00004): LDR R0, SP, 4H |
0535 | o(81E00008): LDR R1, SP, 8H |
0536 | p(F7FFFB36): BL -1226 [006DH] |
0537 | q(80E00004): LDR R0, SP, 4H |
0538 | q(81E00008): LDR R1, SP, 8H |
| ELSIFr fcts = 6 THENt (*LEN*) |
0539 | r .FIXUP P |
0539 | r(F794400A): BL MOD9 [ORG] PROC68 |
053A | s(E70000C8): B 200 [0603H] |
053B | t(80E0000C): LDR R0, SP, CH |
053C | t(40090006): SUB R0, R0, 6H |
053D | t(E900000F): BNE 15 [054DH] |
| IF x.type.formu = ORB.Array THENv ORG.Len(x)w ELSEx ORSy.Mark("not an array")z ENDa |
053E | u(80E00004): LDR R0, SP, 4H |
053F | u(80000004): LDR R0, R0, 4H |
0540 | u(D126E44C): BLEQ MT [trap=4, pos=9956] |
0541 | v(80000000): LDR R0, R0, 0H |
0542 | v(4009000C): SUB R0, R0, CH |
0543 | v(E9000004): BNE 4 [0548H] |
0544 | w(80E00004): LDR R0, SP, 4H |
0545 | w(81E00008): LDR R1, SP, 8H |
0546 | x .FIXUP P |
0546 | x(F794500D): BL MOD9 [ORG] PROC69 |
0547 | y(E7000004): B 4 [054CH] |
0548 | z .FIXUP D |
0548 | z(8D00001C): LDR SB, MT, MOD0 [ORP] |
0549 | z(40D8025C): ADD R0, SB, 25CH ["not an array"] |
054A | z(4100000D): MOV R1, R0, DH |
054B | a .FIXUP P |
054B | a(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF fctb IN {7, 8, 9} THENc (*LSL, ASR, ROR*) CheckInt(y)d;e |
054C | b(E70000B6): B 182 [0603H] |
054D | c(40000380): MOV R0, R0, 380H |
054E | c(81E0000C): LDR R1, SP, CH |
054F | c(41180001): ADD R1, R1, 1H |
0550 | c(00030001): ROR R0, R0, R1 |
0551 | c(E800001D): BPL 29 [056FH] |
0552 | d(40E80014): ADD R0, SP, 14H |
0553 | d .FIXUP D |
0553 | d(8D90000B): LDR SB, MT, MOD9 [ORG] |
0554 | d(41D80001): ADD R1, SB, VAR1 |
0555 | e(F7FFFB17): BL -1257 [006DH] |
| IF x.type.formf IN {ORB.Int, ORB.Set} THENg ORG.Shift(fct-7,h x,i y)j;k restyp := x.type ELSEl ORSm.Mark("bad type")n ENDo |
0556 | f(80E00004): LDR R0, SP, 4H |
0557 | f(80000004): LDR R0, R0, 4H |
0558 | f(D1277A4C): BLEQ MT [trap=4, pos=10106] |
0559 | g(41000050): MOV R1, R0, 50H |
055A | g(80000000): LDR R0, R0, 0H |
055B | g(40080001): ADD R0, R0, 1H |
055C | g(01130000): ROR R1, R1, R0 |
055D | g(E800000C): BPL 12 [056AH] |
055E | h(80E0000C): LDR R0, SP, CH |
055F | h(40090007): SUB R0, R0, 7H |
0560 | i(81E00004): LDR R1, SP, 4H |
0561 | i(82E00008): LDR R2, SP, 8H |
0562 | j(43E80014): ADD R3, SP, 14H |
0563 | j .FIXUP D |
0563 | j(8D900010): LDR SB, MT, MOD9 [ORG] |
0564 | j(44D80001): ADD R4, SB, VAR1 |
0565 | k .FIXUP P |
0565 | k(F794601A): BL MOD9 [ORG] PROC70 |
0566 | l(80E00004): LDR R0, SP, 4H |
0567 | l(80000004): LDR R0, R0, 4H |
0568 | l(A0E00010): STR R0, SP, 10H |
0569 | m(E7000004): B 4 [056EH] |
056A | n .FIXUP D |
056A | n(8D000007): LDR SB, MT, MOD0 [ORP] |
056B | n(40D8026C): ADD R0, SB, 26CH ["bad type"] |
056C | n(41000009): MOV R1, R0, 9H |
056D | o .FIXUP P |
056D | o(F7709008): BL MOD7 [ORS] PROC9 |
| ELSIF fctp = 11 THENq (*ADC*) ORG.ADC(x,r y)s |
056E | p(E7000094): B 148 [0603H] |
056F | q(80E0000C): LDR R0, SP, CH |
0570 | q(4009000B): SUB R0, R0, BH |
0571 | q(E9000007): BNE 7 [0579H] |
0572 | r(80E00004): LDR R0, SP, 4H |
0573 | r(81E00008): LDR R1, SP, 8H |
0574 | s(42E80014): ADD R2, SP, 14H |
0575 | s .FIXUP D |
0575 | s(8D90000B): LDR SB, MT, MOD9 [ORG] |
0576 | s(43D80001): ADD R3, SB, VAR1 |
| ELSIFt fctu = 12 THENv (*SBC*) ORG.SBC(x,w y)x |
0577 | t .FIXUP P |
0577 | t(F794700A): BL MOD9 [ORG] PROC71 |
0578 | u(E700008A): B 138 [0603H] |
0579 | v(80E0000C): LDR R0, SP, CH |
057A | v(4009000C): SUB R0, R0, CH |
057B | v(E9000007): BNE 7 [0583H] |
057C | w(80E00004): LDR R0, SP, 4H |
057D | w(81E00008): LDR R1, SP, 8H |
057E | x(42E80014): ADD R2, SP, 14H |
057F | x .FIXUP D |
057F | x(8D90000A): LDR SB, MT, MOD9 [ORG] |
0580 | x(43D80001): ADD R3, SB, VAR1 |
| ELSIFy fctz = 13 THENa (*UML*) ORG.UML(x,b y)c |
0581 | y .FIXUP P |
0581 | y(F794800A): BL MOD9 [ORG] PROC72 |
0582 | z(E7000080): B 128 [0603H] |
0583 | a(80E0000C): LDR R0, SP, CH |
0584 | a(4009000D): SUB R0, R0, DH |
0585 | a(E9000007): BNE 7 [058DH] |
0586 | b(80E00004): LDR R0, SP, 4H |
0587 | b(81E00008): LDR R1, SP, 8H |
0588 | c(42E80014): ADD R2, SP, 14H |
0589 | c .FIXUP D |
0589 | c(8D90000A): LDR SB, MT, MOD9 [ORG] |
058A | c(43D80001): ADD R3, SB, VAR1 |
| ELSIFd fcte = 14 THENf (*BIT*) CheckInt(x)g;h CheckInt(y)i;j ORG.Bit(x,k y)l |
058B | d .FIXUP P |
058B | d(F794900A): BL MOD9 [ORG] PROC73 |
058C | e(E7000076): B 118 [0603H] |
058D | f(80E0000C): LDR R0, SP, CH |
058E | f(4009000E): SUB R0, R0, EH |
058F | f(E900000E): BNE 14 [059EH] |
0590 | g(80E00004): LDR R0, SP, 4H |
0591 | g(81E00008): LDR R1, SP, 8H |
0592 | h(F7FFFADA): BL -1318 [006DH] |
0593 | i(40E80014): ADD R0, SP, 14H |
0594 | i .FIXUP D |
0594 | i(8D90000B): LDR SB, MT, MOD9 [ORG] |
0595 | i(41D80001): ADD R1, SB, VAR1 |
0596 | j(F7FFFAD6): BL -1322 [006DH] |
0597 | k(80E00004): LDR R0, SP, 4H |
0598 | k(81E00008): LDR R1, SP, 8H |
0599 | l(42E80014): ADD R2, SP, 14H |
059A | l .FIXUP D |
059A | l(8D900006): LDR SB, MT, MOD9 [ORG] |
059B | l(43D80001): ADD R3, SB, VAR1 |
| ELSIFm fctn = 15 THENo (*REG*) CheckConst(x)p;q CheckInt(x)r;s ORG.Register(x)t |
059C | m .FIXUP P |
059C | m(F794A011): BL MOD9 [ORG] PROC74 |
059D | n(E7000065): B 101 [0603H] |
059E | o(80E0000C): LDR R0, SP, CH |
059F | o(4009000F): SUB R0, R0, FH |
05A0 | o(E900000A): BNE 10 [05ABH] |
05A1 | p(80E00004): LDR R0, SP, 4H |
05A2 | p(81E00008): LDR R1, SP, 8H |
05A3 | q(F7FFFB2E): BL -1234 [00D2H] |
05A4 | r(80E00004): LDR R0, SP, 4H |
05A5 | r(81E00008): LDR R1, SP, 8H |
05A6 | s(F7FFFAC6): BL -1338 [006DH] |
05A7 | t(80E00004): LDR R0, SP, 4H |
05A8 | t(81E00008): LDR R1, SP, 8H |
| ELSIFu fctv = 16 THENw (*VAL*) |
05A9 | u .FIXUP P |
05A9 | u(F794B00D): BL MOD9 [ORG] PROC75 |
05AA | v(E7000058): B 88 [0603H] |
05AB | w(80E0000C): LDR R0, SP, CH |
05AC | w(40090010): SUB R0, R0, 10H |
05AD | w(E900001F): BNE 31 [05CDH] |
| IF (x.mode= ORB.Typ)x & (yx.type.sizez <= y.type.sizea)b THENc restyp := x.type;d x := y |
05AE | x(80E00004): LDR R0, SP, 4H |
05AF | x(80000000): LDR R0, R0, 0H |
05B0 | x(40090005): SUB R0, R0, 5H |
05B1 | y(E9000016): BNE 22 [05C8H] |
05B2 | z(80E00004): LDR R0, SP, 4H |
05B3 | z(80000004): LDR R0, R0, 4H |
05B4 | z(D129524C): BLEQ MT [trap=4, pos=10578] |
05B5 | a(81E00018): LDR R1, SP, 18H |
05B6 | a(D129614C): BLEQ MT [trap=4, pos=10593] |
05B7 | b(80000020): LDR R0, R0, 20H |
05B8 | b(81100020): LDR R1, R1, 20H |
05B9 | b(00090001): SUB R0, R0, R1 |
05BA | c(EE00000D): BGT 13 [05C8H] |
05BB | d(80E00004): LDR R0, SP, 4H |
05BC | d(80000004): LDR R0, R0, 4H |
05BD | d(A0E00010): STR R0, SP, 10H |
| ELSEe ORSf.Mark("casting not allowed")g |
05BE | e(80E00004): LDR R0, SP, 4H |
05BF | e(41E80014): ADD R1, SP, 14H |
05C0 | e(42000006): MOV R2, R0, 6H |
05C1 | e(83100000): LDR R3, R1, 0H |
05C2 | e(41180004): ADD R1, R1, 4H |
05C3 | e(A3000000): STR R3, R0, 0H |
05C4 | e(40080004): ADD R0, R0, 4H |
05C5 | e(42290001): SUB R2, R2, 1H |
05C6 | e(E9FFFFFA): BNE -6 [05C1H] |
05C7 | f(E7000004): B 4 [05CCH] |
05C8 | g .FIXUP D |
05C8 | g(8D00002E): LDR SB, MT, MOD0 [ORP] |
05C9 | g(40D80278): ADD R0, SB, 278H ["casting not allowed"] |
05CA | g(41000014): MOV R1, R0, 14H |
| ENDh |
05CB | h .FIXUP P |
05CB | h(F7709022): BL MOD7 [ORS] PROC9 |
| ELSIF fcti = 17 THENj (*ADR*) ORG.Adr(x)k |
05CC | i(E7000036): B 54 [0603H] |
05CD | j(80E0000C): LDR R0, SP, CH |
05CE | j(40090011): SUB R0, R0, 11H |
05CF | j(E9000004): BNE 4 [05D4H] |
05D0 | k(80E00004): LDR R0, SP, 4H |
05D1 | k(81E00008): LDR R1, SP, 8H |
| ELSIFl fctm = 18 THENn (*SIZE*) |
05D2 | l .FIXUP P |
05D2 | l(F794D007): BL MOD9 [ORG] PROC77 |
05D3 | m(E700002F): B 47 [0603H] |
05D4 | n(80E0000C): LDR R0, SP, CH |
05D5 | n(40090012): SUB R0, R0, 12H |
05D6 | n(E9000013): BNE 19 [05EAH] |
| IF x.mode = ORB.Typ THENo ORG.MakeConstItem(x,p ORB.intType,q x.type.sizer)s |
05D7 | o(80E00004): LDR R0, SP, 4H |
05D8 | o(80000000): LDR R0, R0, 0H |
05D9 | o(40090005): SUB R0, R0, 5H |
05DA | o(E900000A): BNE 10 [05E5H] |
05DB | p(80E00004): LDR R0, SP, 4H |
05DC | p(81E00008): LDR R1, SP, 8H |
05DD | q .FIXUP D |
05DD | q(8D800015): LDR SB, MT, MOD8 [ORB] |
05DE | q(82D00009): LDR R2, SB, VAR9 |
05DF | r(83E00004): LDR R3, SP, 4H |
05E0 | r(83300004): LDR R3, R3, 4H |
05E1 | r(D12A584C): BLEQ MT [trap=4, pos=10840] |
05E2 | s(83300020): LDR R3, R3, 20H |
| ELSEt ORSu.Mark("must be a type")v |
05E3 | t .FIXUP P |
05E3 | t(F7905011): BL MOD9 [ORG] PROC5 |
05E4 | u(E7000004): B 4 [05E9H] |
05E5 | v .FIXUP D |
05E5 | v(8D000008): LDR SB, MT, MOD0 [ORP] |
05E6 | v(40D8028C): ADD R0, SB, 28CH ["must be a type"] |
05E7 | v(4100000F): MOV R1, R0, FH |
| ENDw |
05E8 | w .FIXUP P |
05E8 | w(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF fctx = 19 THENy (*COND*) CheckConst(x)z;a CheckInt(x)b;c ORG.Condition(x)d |
05E9 | x(E7000019): B 25 [0603H] |
05EA | y(80E0000C): LDR R0, SP, CH |
05EB | y(40090013): SUB R0, R0, 13H |
05EC | y(E900000A): BNE 10 [05F7H] |
05ED | z(80E00004): LDR R0, SP, 4H |
05EE | z(81E00008): LDR R1, SP, 8H |
05EF | a(F7FFFAE2): BL -1310 [00D2H] |
05F0 | b(80E00004): LDR R0, SP, 4H |
05F1 | b(81E00008): LDR R1, SP, 8H |
05F2 | c(F7FFFA7A): BL -1414 [006DH] |
05F3 | d(80E00004): LDR R0, SP, 4H |
05F4 | d(81E00008): LDR R1, SP, 8H |
| ELSIFe fctf = 20 THENg (*H*) CheckConst(x)h;i CheckInt(x)j;k ORG.H(x)l |
05F5 | e .FIXUP P |
05F5 | e(F794E00D): BL MOD9 [ORG] PROC78 |
05F6 | f(E700000C): B 12 [0603H] |
05F7 | g(80E0000C): LDR R0, SP, CH |
05F8 | g(40090014): SUB R0, R0, 14H |
05F9 | g(E9000009): BNE 9 [0603H] |
05FA | h(80E00004): LDR R0, SP, 4H |
05FB | h(81E00008): LDR R1, SP, 8H |
05FC | i(F7FFFAD5): BL -1323 [00D2H] |
05FD | j(80E00004): LDR R0, SP, 4H |
05FE | j(81E00008): LDR R1, SP, 8H |
05FF | k(F7FFFA6D): BL -1427 [006DH] |
0600 | l(80E00004): LDR R0, SP, 4H |
0601 | l(81E00008): LDR R1, SP, 8H |
| ENDm ; |
0602 | m .FIXUP P |
0602 | m(F794C00D): BL MOD9 [ORG] PROC76 |
| x.type := restyp |
| ELSEn ORSo.Mark("wrong nof params")p |
0603 | n(80E00010): LDR R0, SP, 10H |
0604 | n(81E00004): LDR R1, SP, 4H |
0605 | n(A0100004): STR R0, R1, 4H |
0606 | o(E7000004): B 4 [060BH] |
0607 | p .FIXUP D |
0607 | p(8D000022): LDR SB, MT, MOD0 [ORP] |
0608 | p(40D8029C): ADD R0, SB, 29CH ["wrong nof params"] |
0609 | p(41000011): MOV R1, R0, 11H |
| ENDq |
060A | q .FIXUP P |
060A | q(F7709008): BL MOD7 [ORS] PROC9 |
| ENDr StandFunc; |
060B | r(8FE00000): LDR LNK, SP, 0H |
060C | r(4EE80034): ADD SP, SP, 34H |
060D | r(C700000F): B LNK |
| |
| PROCEDURE element(VAR x: ORG.Item); |
| VAR y: ORG.Item; |
| BEGINs expression(x)t;u CheckSetVal(x)v;w |
060E | s(4EE90024): SUB SP, SP, 24H |
060F | s(AFE00000): STR LNK, SP, 0H |
0610 | s(A0E00004): STR R0, SP, 4H |
0611 | s(A1E00008): STR R1, SP, 8H |
0612 | t(80E00004): LDR R0, SP, 4H |
0613 | t(81E00008): LDR R1, SP, 8H |
0614 | u .FIXUP D |
0614 | u(8D00000D): LDR SB, MT, MOD0 [ORP] |
0615 | u(82D00034): LDR R2, SB, 34H [data] |
0616 | u(D12BD75C): BLEQ MT [trap=5, pos=11223] |
0617 | u(D7000002): BL R2 |
0618 | v(80E00004): LDR R0, SP, 4H |
0619 | v(81E00008): LDR R1, SP, 8H |
061A | w(F7FFFA91): BL -1391 [00ACH] |
| IF sym = ORS.upto THENx ORS.Get(sym)y;z expression(y)a;b CheckSetVal(y)c;d ORG.Set(x,e y)f |
061B | x .FIXUP D |
061B | x(8D000007): LDR SB, MT, MOD0 [ORP] |
061C | x(80D0001C): LDR R0, SB, 1CH [data] |
061D | x(4009002B): SUB R0, R0, 2BH |
061E | x(E9000015): BNE 21 [0634H] |
061F | y .FIXUP D |
061F | y(8D000004): LDR SB, MT, MOD0 [ORP] |
0620 | y(40D8001C): ADD R0, SB, 1CH [data] |
0621 | z .FIXUP P |
0621 | z(F770A017): BL MOD7 [ORS] PROC10 |
0622 | a(40E8000C): ADD R0, SP, CH |
0623 | a .FIXUP D |
0623 | a(8D900004): LDR SB, MT, MOD9 [ORG] |
0624 | a(41D80001): ADD R1, SB, VAR1 |
0625 | b .FIXUP D |
0625 | b(8D000002): LDR SB, MT, MOD0 [ORP] |
0626 | b(82D00034): LDR R2, SB, 34H [data] |
0627 | b(D12C1F5C): BLEQ MT [trap=5, pos=11295] |
0628 | b(D7000002): BL R2 |
0629 | c(40E8000C): ADD R0, SP, CH |
062A | c .FIXUP D |
062A | c(8D900005): LDR SB, MT, MOD9 [ORG] |
062B | c(41D80001): ADD R1, SB, VAR1 |
062C | d(F7FFFA7F): BL -1409 [00ACH] |
062D | e(80E00004): LDR R0, SP, 4H |
062E | e(81E00008): LDR R1, SP, 8H |
062F | f(42E8000C): ADD R2, SP, CH |
0630 | f .FIXUP D |
0630 | f(8D900006): LDR SB, MT, MOD9 [ORG] |
0631 | f(43D80001): ADD R3, SB, VAR1 |
| ELSEg ORGh.Singleton(x)i |
0632 | g .FIXUP P |
0632 | g(F7919011): BL MOD9 [ORG] PROC25 |
0633 | h(E7000003): B 3 [0637H] |
0634 | i(80E00004): LDR R0, SP, 4H |
0635 | i(81E00008): LDR R1, SP, 8H |
| ENDj ; |
0636 | j .FIXUP P |
0636 | j(F7918004): BL MOD9 [ORG] PROC24 |
| x.type := ORB.setType |
| ENDk element; |
0637 | k .FIXUP D |
0637 | k(8D800007): LDR SB, MT, MOD8 [ORB] |
0638 | k(80D0000B): LDR R0, SB, VAR11 |
0639 | k(81E00004): LDR R1, SP, 4H |
063A | k(A0100004): STR R0, R1, 4H |
063B | k(8FE00000): LDR LNK, SP, 0H |
063C | k(4EE80024): ADD SP, SP, 24H |
063D | k(C700000F): B LNK |
| |
| PROCEDURE set(VAR x: ORG.Item); |
| VAR y: ORG.Item; |
| BEGINl |
063E | l(4EE90024): SUB SP, SP, 24H |
063F | l(AFE00000): STR LNK, SP, 0H |
0640 | l(A0E00004): STR R0, SP, 4H |
0641 | l(A1E00008): STR R1, SP, 8H |
| IF sym >= ORS.if THENm |
0642 | m .FIXUP D |
0642 | m(8D00000B): LDR SB, MT, MOD0 [ORP] |
0643 | m(80D0001C): LDR R0, SB, 1CH [data] |
0644 | m(40090020): SUB R0, R0, 20H |
0645 | m(E500000F): BLT 15 [0655H] |
| IF sym # ORS.rbrace THENn ORS.Mark(" } missing")o ENDp ; |
0646 | n .FIXUP D |
0646 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
0647 | n(80D0001C): LDR R0, SB, 1CH [data] |
0648 | n(4009002E): SUB R0, R0, 2EH |
0649 | n(E1000004): BEQ 4 [064EH] |
064A | o .FIXUP D |
064A | o(8D000004): LDR SB, MT, MOD0 [ORP] |
064B | o(40D802B0): ADD R0, SB, 2B0H [" } missing"] |
064C | o(4100000B): MOV R1, R0, BH |
064D | p .FIXUP P |
064D | p(F7709017): BL MOD7 [ORS] PROC9 |
| ORG.MakeConstItem(x,q ORB.setType,r 0)s (*empty set*) |
064E | q(80E00004): LDR R0, SP, 4H |
064F | q(81E00008): LDR R1, SP, 8H |
0650 | r .FIXUP D |
0650 | r(8D800006): LDR SB, MT, MOD8 [ORB] |
0651 | r(82D0000B): LDR R2, SB, VAR11 |
0652 | s(43000000): MOV R3, R0, 0H |
| ELSEt elementu(x)v;w |
0653 | t .FIXUP P |
0653 | t(F7905006): BL MOD9 [ORG] PROC5 |
0654 | u(E7000027): B 39 [067CH] |
0655 | v(80E00004): LDR R0, SP, 4H |
0656 | v(81E00008): LDR R1, SP, 8H |
0657 | w(F7FFFFB6): BL -74 [060EH] |
| WHILE (sym < ORS.rparen)x OR (ysym > ORS.rbrace)z DOa |
0658 | x .FIXUP D |
0658 | x(8D000008): LDR SB, MT, MOD0 [ORP] |
0659 | x(80D0001C): LDR R0, SB, 1CH [data] |
065A | x(4009002C): SUB R0, R0, 2CH |
065B | y(E5000004): BLT 4 [0660H] |
065C | z .FIXUP D |
065C | z(8D000004): LDR SB, MT, MOD0 [ORP] |
065D | z(80D0001C): LDR R0, SB, 1CH [data] |
065E | z(4009002E): SUB R0, R0, 2EH |
065F | a(E600001C): BLE 28 [067CH] |
| IF sym = ORS.comma THENb ORS.Get(sym)c |
0660 | b .FIXUP D |
0660 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
0661 | b(80D0001C): LDR R0, SB, 1CH [data] |
0662 | b(40090028): SUB R0, R0, 28H |
0663 | b(E9000004): BNE 4 [0668H] |
0664 | c .FIXUP D |
0664 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
0665 | c(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFd syme # ORS.rbrace THENf ORS.Mark("missing comma")g |
0666 | d .FIXUP P |
0666 | d(F770A013): BL MOD7 [ORS] PROC10 |
0667 | e(E7000008): B 8 [0670H] |
0668 | f .FIXUP D |
0668 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
0669 | f(80D0001C): LDR R0, SB, 1CH [data] |
066A | f(4009002E): SUB R0, R0, 2EH |
066B | f(E1000004): BEQ 4 [0670H] |
066C | g .FIXUP D |
066C | g(8D000004): LDR SB, MT, MOD0 [ORP] |
066D | g(40D802BC): ADD R0, SB, 2BCH ["missing comma"] |
066E | g(4100000E): MOV R1, R0, EH |
| ENDh ; |
066F | h .FIXUP P |
066F | h(F7709009): BL MOD7 [ORS] PROC9 |
| element(y)i;j ORG.SetOp(ORS.plus,k x,l y)m |
0670 | i(40E8000C): ADD R0, SP, CH |
0671 | i .FIXUP D |
0671 | i(8D900005): LDR SB, MT, MOD9 [ORG] |
0672 | i(41D80001): ADD R1, SB, VAR1 |
0673 | j(F7FFFF9A): BL -102 [060EH] |
0674 | k(40000006): MOV R0, R0, 6H |
0675 | l(81E00004): LDR R1, SP, 4H |
0676 | l(82E00008): LDR R2, SP, 8H |
0677 | m(43E8000C): ADD R3, SP, CH |
0678 | m .FIXUP D |
0678 | m(8D900007): LDR SB, MT, MOD9 [ORG] |
0679 | m(44D80001): ADD R4, SB, VAR1 |
| ENDn |
067A | n .FIXUP P |
067A | n(F791B00B): BL MOD9 [ORG] PROC27 |
067B | n(E7FFFFDC): B -36 [0658H] |
| END |
| ENDo set; |
067C | o(8FE00000): LDR LNK, SP, 0H |
067D | o(4EE80024): ADD SP, SP, 24H |
067E | o(C700000F): B LNK |
| |
| PROCEDURE factor(VAR x: ORG.Item); |
| VAR obj: ORB.Object; rx: LONGINT; |
| BEGINp (*sync*) |
067F | p(4EE90014): SUB SP, SP, 14H |
0680 | p(AFE00000): STR LNK, SP, 0H |
0681 | p(A0E00004): STR R0, SP, 4H |
0682 | p(A1E00008): STR R1, SP, 8H |
| IF (sym < ORS.char)q OR (rsym > ORS.ident)s THENt ORS.Mark("expression expected")u;v |
0683 | q .FIXUP D |
0683 | q(8D00000B): LDR SB, MT, MOD0 [ORP] |
0684 | q(80D0001C): LDR R0, SB, 1CH [data] |
0685 | q(40090014): SUB R0, R0, 14H |
0686 | r(E5000004): BLT 4 [068BH] |
0687 | s .FIXUP D |
0687 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
0688 | s(80D0001C): LDR R0, SB, 1CH [data] |
0689 | s(4009001F): SUB R0, R0, 1FH |
068A | t(E600000F): BLE 15 [069AH] |
068B | u .FIXUP D |
068B | u(8D000004): LDR SB, MT, MOD0 [ORP] |
068C | u(40D802CC): ADD R0, SB, 2CCH ["expression expected"] |
068D | u(41000014): MOV R1, R0, 14H |
068E | v .FIXUP P |
068E | v(F7709014): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)w UNTILx (sym >= ORS.char)y & (zsym <= ORS.ident)a |
068F | w .FIXUP D |
068F | w(8D000004): LDR SB, MT, MOD0 [ORP] |
0690 | w(40D8001C): ADD R0, SB, 1CH [data] |
0691 | x .FIXUP P |
0691 | x(F770A003): BL MOD7 [ORS] PROC10 |
0692 | y .FIXUP D |
0692 | y(8D000003): LDR SB, MT, MOD0 [ORP] |
0693 | y(80D0001C): LDR R0, SB, 1CH [data] |
0694 | y(40090014): SUB R0, R0, 14H |
0695 | z(E5FFFFF9): BLT -7 [068FH] |
0696 | a .FIXUP D |
0696 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
0697 | a(80D0001C): LDR R0, SB, 1CH [data] |
0698 | a(4009001F): SUB R0, R0, 1FH |
| ENDb ; |
0699 | b(EEFFFFF5): BGT -11 [068FH] |
| IF sym = ORS.ident THENc |
069A | c .FIXUP D |
069A | c(8D000004): LDR SB, MT, MOD0 [ORP] |
069B | c(80D0001C): LDR R0, SB, 1CH [data] |
069C | c(4009001F): SUB R0, R0, 1FH |
069D | c(E9000049): BNE 73 [06E7H] |
| qualident(obj)d;e |
069E | d(40E8000C): ADD R0, SP, CH |
069F | e(F7FFF974): BL -1676 [0014H] |
| IF obj.classf = ORB.SFunc THENg StandFunc(x,h obj.vali,j obj.typek)l |
06A0 | f(80E0000C): LDR R0, SP, CH |
06A1 | f(D12FB54C): BLEQ MT [trap=4, pos=12213] |
06A2 | g(90000000): LDR R0, R0, 0H |
06A3 | g(40090007): SUB R0, R0, 7H |
06A4 | g(E900000A): BNE 10 [06AFH] |
06A5 | h(80E00004): LDR R0, SP, 4H |
06A6 | h(81E00008): LDR R1, SP, 8H |
06A7 | i(82E0000C): LDR R2, SP, CH |
06A8 | i(D12FDB4C): BLEQ MT [trap=4, pos=12251] |
06A9 | j(82200034): LDR R2, R2, 34H |
06AA | k(83E0000C): LDR R3, SP, CH |
06AB | k(D12FE54C): BLEQ MT [trap=4, pos=12261] |
06AC | l(83300010): LDR R3, R3, 10H |
| ELSEm ORGn.MakeItem(x,o obj,p level)q;r selector(x)s;t |
06AD | m(F7FFFDFA): BL -518 [04A8H] |
06AE | n(E7000037): B 55 [06E6H] |
06AF | o(80E00004): LDR R0, SP, 4H |
06B0 | o(81E00008): LDR R1, SP, 8H |
06B1 | p(82E0000C): LDR R2, SP, CH |
06B2 | q .FIXUP D |
06B2 | q(8D000018): LDR SB, MT, MOD0 [ORP] |
06B3 | q(83D00024): LDR R3, SB, 24H [data] |
06B4 | r .FIXUP P |
06B4 | r(F7908023): BL MOD9 [ORG] PROC8 |
06B5 | s(80E00004): LDR R0, SP, 4H |
06B6 | s(81E00008): LDR R1, SP, 8H |
06B7 | t(F7FFFAED): BL -1299 [01A5H] |
| IF sym = ORS.lparen THENu |
06B8 | u .FIXUP D |
06B8 | u(8D000006): LDR SB, MT, MOD0 [ORP] |
06B9 | u(80D0001C): LDR R0, SB, 1CH [data] |
06BA | u(4009001C): SUB R0, R0, 1CH |
06BB | u(E900002A): BNE 42 [06E6H] |
| ORS.Get(sym)v;w |
06BC | v .FIXUP D |
06BC | v(8D000004): LDR SB, MT, MOD0 [ORP] |
06BD | v(40D8001C): ADD R0, SB, 1CH [data] |
06BE | w .FIXUP P |
06BE | w(F770A00A): BL MOD7 [ORS] PROC10 |
| IF (x.type.formx = ORB.Proc)y & (zx.type.basea.formb # ORB.NoTyp)c THENd |
06BF | x(80E00004): LDR R0, SP, 4H |
06C0 | x(80000004): LDR R0, R0, 4H |
06C1 | x(D1306E4C): BLEQ MT [trap=4, pos=12398] |
06C2 | y(80000000): LDR R0, R0, 0H |
06C3 | y(4009000A): SUB R0, R0, AH |
06C4 | z(E900001A): BNE 26 [06DFH] |
06C5 | a(80E00004): LDR R0, SP, 4H |
06C6 | a(80000004): LDR R0, R0, 4H |
06C7 | a(D130894C): BLEQ MT [trap=4, pos=12425] |
06C8 | b(8000001C): LDR R0, R0, 1CH |
06C9 | b(D1308E4C): BLEQ MT [trap=4, pos=12430] |
06CA | c(80000000): LDR R0, R0, 0H |
06CB | c(40090009): SUB R0, R0, 9H |
06CC | d(E1000012): BEQ 18 [06DFH] |
| ORG.PrepCall(x,e rx)f;g ParamList(x)h;i ORG.Call(x,j rx)k;l x.type := x.type.basem |
06CD | e(80E00004): LDR R0, SP, 4H |
06CE | e(81E00008): LDR R1, SP, 8H |
06CF | f(42E80010): ADD R2, SP, 10H |
06D0 | g .FIXUP P |
06D0 | g(F7930012): BL MOD9 [ORG] PROC48 |
06D1 | h(80E00004): LDR R0, SP, 4H |
06D2 | h(81E00008): LDR R1, SP, 8H |
06D3 | i(F7FFFD89): BL -631 [045DH] |
06D4 | j(80E00004): LDR R0, SP, 4H |
06D5 | j(81E00008): LDR R1, SP, 8H |
06D6 | k(82E00010): LDR R2, SP, 10H |
06D7 | l .FIXUP P |
06D7 | l(F7931007): BL MOD9 [ORG] PROC49 |
06D8 | m(80E00004): LDR R0, SP, 4H |
06D9 | m(80000004): LDR R0, R0, 4H |
06DA | m(D130F64C): BLEQ MT [trap=4, pos=12534] |
| ELSEn ORSo.Mark("not a function")p;q ParamList(x)r |
06DB | n(8000001C): LDR R0, R0, 1CH |
06DC | n(81E00004): LDR R1, SP, 4H |
06DD | n(A0100004): STR R0, R1, 4H |
06DE | o(E7000007): B 7 [06E6H] |
06DF | p .FIXUP D |
06DF | p(8D000023): LDR SB, MT, MOD0 [ORP] |
06E0 | p(40D802E0): ADD R0, SB, 2E0H ["not a function"] |
06E1 | p(4100000F): MOV R1, R0, FH |
06E2 | q .FIXUP P |
06E2 | q(F770900B): BL MOD7 [ORS] PROC9 |
06E3 | r(80E00004): LDR R0, SP, 4H |
06E4 | r(81E00008): LDR R1, SP, 8H |
| ENDs |
06E5 | s(F7FFFD77): BL -649 [045DH] |
| END |
| END |
| ELSIF symt = ORS.int THENu ORG.MakeConstItem(x,v ORB.intType,w ORS.ival)x;y ORS.Get(sym)z |
06E6 | t(E70000A0): B 160 [0787H] |
06E7 | u .FIXUP D |
06E7 | u(8D000008): LDR SB, MT, MOD0 [ORP] |
06E8 | u(80D0001C): LDR R0, SB, 1CH [data] |
06E9 | u(40090015): SUB R0, R0, 15H |
06EA | u(E900000B): BNE 11 [06F6H] |
06EB | v(80E00004): LDR R0, SP, 4H |
06EC | v(81E00008): LDR R1, SP, 8H |
06ED | w .FIXUP D |
06ED | w(8D800006): LDR SB, MT, MOD8 [ORB] |
06EE | w(82D00009): LDR R2, SB, VAR9 |
06EF | x .FIXUP D |
06EF | x(8D700002): LDR SB, MT, MOD7 [ORS] |
06F0 | x(83D00001): LDR R3, SB, VAR1 |
06F1 | y .FIXUP P |
06F1 | y(F790500F): BL MOD9 [ORG] PROC5 |
06F2 | z .FIXUP D |
06F2 | z(8D000003): LDR SB, MT, MOD0 [ORP] |
06F3 | z(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFa symb = ORS.real THENc ORG.MakeRealItem(x,d ORS.rval)e;f ORS.Get(sym)g |
06F4 | a .FIXUP P |
06F4 | a(F770A003): BL MOD7 [ORS] PROC10 |
06F5 | b(E7000091): B 145 [0787H] |
06F6 | c .FIXUP D |
06F6 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
06F7 | c(80D0001C): LDR R0, SB, 1CH [data] |
06F8 | c(40090016): SUB R0, R0, 16H |
06F9 | c(E9000009): BNE 9 [0703H] |
06FA | d(80E00004): LDR R0, SP, 4H |
06FB | d(81E00008): LDR R1, SP, 8H |
06FC | e .FIXUP D |
06FC | e(8D700006): LDR SB, MT, MOD7 [ORS] |
06FD | e(82D00003): LDR R2, SB, VAR3 |
06FE | f .FIXUP P |
06FE | f(F790600A): BL MOD9 [ORG] PROC6 |
06FF | g .FIXUP D |
06FF | g(8D000003): LDR SB, MT, MOD0 [ORP] |
0700 | g(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFh symi = ORS.char THENj ORG.MakeConstItem(x,k ORB.charType,l ORS.ival)m;n ORS.Get(sym)o |
0701 | h .FIXUP P |
0701 | h(F770A003): BL MOD7 [ORS] PROC10 |
0702 | i(E7000084): B 132 [0787H] |
0703 | j .FIXUP D |
0703 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
0704 | j(80D0001C): LDR R0, SB, 1CH [data] |
0705 | j(40090014): SUB R0, R0, 14H |
0706 | j(E900000B): BNE 11 [0712H] |
0707 | k(80E00004): LDR R0, SP, 4H |
0708 | k(81E00008): LDR R1, SP, 8H |
0709 | l .FIXUP D |
0709 | l(8D800006): LDR SB, MT, MOD8 [ORB] |
070A | l(82D00008): LDR R2, SB, VAR8 |
070B | m .FIXUP D |
070B | m(8D700002): LDR SB, MT, MOD7 [ORS] |
070C | m(83D00001): LDR R3, SB, VAR1 |
070D | n .FIXUP P |
070D | n(F790500C): BL MOD9 [ORG] PROC5 |
070E | o .FIXUP D |
070E | o(8D000003): LDR SB, MT, MOD0 [ORP] |
070F | o(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFp symq = ORS.nil THENr ORS.Get(sym)s;t ORG.MakeConstItem(x,u ORB.nilType,v 0)w |
0710 | p .FIXUP P |
0710 | p(F770A003): BL MOD7 [ORS] PROC10 |
0711 | q(E7000075): B 117 [0787H] |
0712 | r .FIXUP D |
0712 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
0713 | r(80D0001C): LDR R0, SB, 1CH [data] |
0714 | r(40090019): SUB R0, R0, 19H |
0715 | r(E900000A): BNE 10 [0720H] |
0716 | s .FIXUP D |
0716 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
0717 | s(40D8001C): ADD R0, SB, 1CH [data] |
0718 | t .FIXUP P |
0718 | t(F770A008): BL MOD7 [ORS] PROC10 |
0719 | u(80E00004): LDR R0, SP, 4H |
071A | u(81E00008): LDR R1, SP, 8H |
071B | v .FIXUP D |
071B | v(8D800005): LDR SB, MT, MOD8 [ORB] |
071C | v(82D0000C): LDR R2, SB, VAR12 |
071D | w(43000000): MOV R3, R0, 0H |
| ELSIFx symy = ORS.string THENz ORG.MakeStringItem(x,a ORS.slen)b;c ORS.Get(sym)d |
071E | x .FIXUP P |
071E | x(F7905006): BL MOD9 [ORG] PROC5 |
071F | y(E7000067): B 103 [0787H] |
0720 | z .FIXUP D |
0720 | z(8D000005): LDR SB, MT, MOD0 [ORP] |
0721 | z(80D0001C): LDR R0, SB, 1CH [data] |
0722 | z(4009001A): SUB R0, R0, 1AH |
0723 | z(E9000009): BNE 9 [072DH] |
0724 | a(80E00004): LDR R0, SP, 4H |
0725 | a(81E00008): LDR R1, SP, 8H |
0726 | b .FIXUP D |
0726 | b(8D700006): LDR SB, MT, MOD7 [ORS] |
0727 | b(82D00002): LDR R2, SB, VAR2 |
0728 | c .FIXUP P |
0728 | c(F790700A): BL MOD9 [ORG] PROC7 |
0729 | d .FIXUP D |
0729 | d(8D000003): LDR SB, MT, MOD0 [ORP] |
072A | d(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFe symf = ORS.lparen THENg ORS.Get(sym)h;i expression(x)j;k Check(ORS.rparen,l "no )")m |
072B | e .FIXUP P |
072B | e(F770A003): BL MOD7 [ORS] PROC10 |
072C | f(E700005A): B 90 [0787H] |
072D | g .FIXUP D |
072D | g(8D000004): LDR SB, MT, MOD0 [ORP] |
072E | g(80D0001C): LDR R0, SB, 1CH [data] |
072F | g(4009001C): SUB R0, R0, 1CH |
0730 | g(E900000F): BNE 15 [0740H] |
0731 | h .FIXUP D |
0731 | h(8D000004): LDR SB, MT, MOD0 [ORP] |
0732 | h(40D8001C): ADD R0, SB, 1CH [data] |
0733 | i .FIXUP P |
0733 | i(F770A008): BL MOD7 [ORS] PROC10 |
0734 | j(80E00004): LDR R0, SP, 4H |
0735 | j(81E00008): LDR R1, SP, 8H |
0736 | k .FIXUP D |
0736 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
0737 | k(82D00034): LDR R2, SB, 34H [data] |
0738 | k(D133275C): BLEQ MT [trap=5, pos=13095] |
0739 | k(D7000002): BL R2 |
073A | l(4000002C): MOV R0, R0, 2CH |
073B | m .FIXUP D |
073B | m(8D000005): LDR SB, MT, MOD0 [ORP] |
073C | m(41D802F0): ADD R1, SB, 2F0H ["no )"] |
073D | m(42000005): MOV R2, R0, 5H |
| ELSIFn symo = ORS.lbrace THENp ORS.Get(sym)q;r set(x)s;t Check(ORS.rbrace,u "no }")v |
073E | n(F7FFF8C1): BL -1855 [0000H] |
073F | o(E7000047): B 71 [0787H] |
0740 | p .FIXUP D |
0740 | p(8D000005): LDR SB, MT, MOD0 [ORP] |
0741 | p(80D0001C): LDR R0, SB, 1CH [data] |
0742 | p(4009001E): SUB R0, R0, 1EH |
0743 | p(E900000C): BNE 12 [0750H] |
0744 | q .FIXUP D |
0744 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
0745 | q(40D8001C): ADD R0, SB, 1CH [data] |
0746 | r .FIXUP P |
0746 | r(F770A013): BL MOD7 [ORS] PROC10 |
0747 | s(80E00004): LDR R0, SP, 4H |
0748 | s(81E00008): LDR R1, SP, 8H |
0749 | t(F7FFFEF4): BL -268 [063EH] |
074A | u(4000002E): MOV R0, R0, 2EH |
074B | v .FIXUP D |
074B | v(8D000007): LDR SB, MT, MOD0 [ORP] |
074C | v(41D802F8): ADD R1, SB, 2F8H ["no }"] |
074D | v(42000005): MOV R2, R0, 5H |
| ELSIFw symx = ORS.not THENy ORS.Get(sym)z;a factor(x)b;c CheckBool(x)d;e ORG.Not(x)f |
074E | w(F7FFF8B1): BL -1871 [0000H] |
074F | x(E7000037): B 55 [0787H] |
0750 | y .FIXUP D |
0750 | y(8D000005): LDR SB, MT, MOD0 [ORP] |
0751 | y(80D0001C): LDR R0, SB, 1CH [data] |
0752 | y(4009001B): SUB R0, R0, 1BH |
0753 | y(E900000D): BNE 13 [0761H] |
0754 | z .FIXUP D |
0754 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
0755 | z(40D8001C): ADD R0, SB, 1CH [data] |
0756 | a .FIXUP P |
0756 | a(F770A010): BL MOD7 [ORS] PROC10 |
0757 | b(80E00004): LDR R0, SP, 4H |
0758 | b(81E00008): LDR R1, SP, 8H |
0759 | c(F7FFFF25): BL -219 [067FH] |
075A | d(80E00004): LDR R0, SP, 4H |
075B | d(81E00008): LDR R1, SP, 8H |
075C | e(F7FFF8FB): BL -1797 [0058H] |
075D | f(80E00004): LDR R0, SP, 4H |
075E | f(81E00008): LDR R1, SP, 8H |
| ELSIFg symh = ORS.false THENi ORS.Get(sym)j;k ORG.MakeConstItem(x,l ORB.boolType,m 0)n |
075F | g .FIXUP P |
075F | g(F790E009): BL MOD9 [ORG] PROC14 |
0760 | h(E7000026): B 38 [0787H] |
0761 | i .FIXUP D |
0761 | i(8D00000D): LDR SB, MT, MOD0 [ORP] |
0762 | i(80D0001C): LDR R0, SB, 1CH [data] |
0763 | i(40090017): SUB R0, R0, 17H |
0764 | i(E900000A): BNE 10 [076FH] |
0765 | j .FIXUP D |
0765 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
0766 | j(40D8001C): ADD R0, SB, 1CH [data] |
0767 | k .FIXUP P |
0767 | k(F770A008): BL MOD7 [ORS] PROC10 |
0768 | l(80E00004): LDR R0, SP, 4H |
0769 | l(81E00008): LDR R1, SP, 8H |
076A | m .FIXUP D |
076A | m(8D800005): LDR SB, MT, MOD8 [ORB] |
076B | m(82D00007): LDR R2, SB, VAR7 |
076C | n(43000000): MOV R3, R0, 0H |
| ELSIFo symp = ORS.true THENq ORS.Get(sym)r;s ORG.MakeConstItem(x,t ORB.boolType,u 1)v |
076D | o .FIXUP P |
076D | o(F7905006): BL MOD9 [ORG] PROC5 |
076E | p(E7000018): B 24 [0787H] |
076F | q .FIXUP D |
076F | q(8D000005): LDR SB, MT, MOD0 [ORP] |
0770 | q(80D0001C): LDR R0, SB, 1CH [data] |
0771 | q(40090018): SUB R0, R0, 18H |
0772 | q(E900000A): BNE 10 [077DH] |
0773 | r .FIXUP D |
0773 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
0774 | r(40D8001C): ADD R0, SB, 1CH [data] |
0775 | s .FIXUP P |
0775 | s(F770A008): BL MOD7 [ORS] PROC10 |
0776 | t(80E00004): LDR R0, SP, 4H |
0777 | t(81E00008): LDR R1, SP, 8H |
0778 | u .FIXUP D |
0778 | u(8D800005): LDR SB, MT, MOD8 [ORB] |
0779 | u(82D00007): LDR R2, SB, VAR7 |
077A | v(43000001): MOV R3, R0, 1H |
| ELSEw ORSx.Mark("not a factor")y;z ORG.MakeConstItem(x,a ORB.intType,b 0)c |
077B | w .FIXUP P |
077B | w(F7905006): BL MOD9 [ORG] PROC5 |
077C | x(E700000A): B 10 [0787H] |
077D | y .FIXUP D |
077D | y(8D000005): LDR SB, MT, MOD0 [ORP] |
077E | y(40D80300): ADD R0, SB, 300H ["not a factor"] |
077F | y(4100000D): MOV R1, R0, DH |
0780 | z .FIXUP P |
0780 | z(F7709005): BL MOD7 [ORS] PROC9 |
0781 | a(80E00004): LDR R0, SP, 4H |
0782 | a(81E00008): LDR R1, SP, 8H |
0783 | b .FIXUP D |
0783 | b(8D800006): LDR SB, MT, MOD8 [ORB] |
0784 | b(82D00009): LDR R2, SB, VAR9 |
0785 | c(43000000): MOV R3, R0, 0H |
| ENDd |
0786 | d .FIXUP P |
0786 | d(F7905006): BL MOD9 [ORG] PROC5 |
| ENDe factor; |
0787 | e(8FE00000): LDR LNK, SP, 0H |
0788 | e(4EE80014): ADD SP, SP, 14H |
0789 | e(C700000F): B LNK |
| |
| PROCEDURE term(VAR x: ORG.Item); |
| VAR y: ORG.Item; op, f: INTEGER; |
| BEGINf factor(x)g;h f := x.type.formi;j |
078A | f(4EE9002C): SUB SP, SP, 2CH |
078B | f(AFE00000): STR LNK, SP, 0H |
078C | f(A0E00004): STR R0, SP, 4H |
078D | f(A1E00008): STR R1, SP, 8H |
078E | g(80E00004): LDR R0, SP, 4H |
078F | g(81E00008): LDR R1, SP, 8H |
0790 | h(F7FFFEEE): BL -274 [067FH] |
0791 | i(80E00004): LDR R0, SP, 4H |
0792 | i(80000004): LDR R0, R0, 4H |
0793 | i(D135504C): BLEQ MT [trap=4, pos=13648] |
0794 | j(80000000): LDR R0, R0, 0H |
0795 | j(A0E00028): STR R0, SP, 28H |
| WHILE (sym >= ORS.times)k & (lsym <= ORS.and)m DOn |
0796 | k .FIXUP D |
0796 | k(8D000013): LDR SB, MT, MOD0 [ORP] |
0797 | k(80D0001C): LDR R0, SB, 1CH [data] |
0798 | k(40090001): SUB R0, R0, 1H |
0799 | l(E50000A5): BLT 165 [083FH] |
079A | m .FIXUP D |
079A | m(8D000004): LDR SB, MT, MOD0 [ORP] |
079B | m(80D0001C): LDR R0, SB, 1CH [data] |
079C | m(40090005): SUB R0, R0, 5H |
079D | n(EE0000A1): BGT 161 [083FH] |
| op := sym;o ORS.Get(sym)p;q |
079E | o .FIXUP D |
079E | o(8D000004): LDR SB, MT, MOD0 [ORP] |
079F | o(80D0001C): LDR R0, SB, 1CH [data] |
07A0 | o(A0E00024): STR R0, SP, 24H |
07A1 | p(40D8001C): ADD R0, SB, 1CH |
07A2 | q .FIXUP P |
07A2 | q(F770A01C): BL MOD7 [ORS] PROC10 |
| IF op = ORS.times THENr |
07A3 | r(80E00024): LDR R0, SP, 24H |
07A4 | r(40090001): SUB R0, R0, 1H |
07A5 | r(E900003D): BNE 61 [07E3H] |
| IF f = ORB.Int THENs factor(y)t;u CheckInt(y)v;w ORG.MulOp(x,x y)y |
07A6 | s(80E00028): LDR R0, SP, 28H |
07A7 | s(40090004): SUB R0, R0, 4H |
07A8 | s(E900000F): BNE 15 [07B8H] |
07A9 | t(40E8000C): ADD R0, SP, CH |
07AA | t .FIXUP D |
07AA | t(8D90000C): LDR SB, MT, MOD9 [ORG] |
07AB | t(41D80001): ADD R1, SB, VAR1 |
07AC | u(F7FFFED2): BL -302 [067FH] |
07AD | v(40E8000C): ADD R0, SP, CH |
07AE | v .FIXUP D |
07AE | v(8D900004): LDR SB, MT, MOD9 [ORG] |
07AF | v(41D80001): ADD R1, SB, VAR1 |
07B0 | w(F7FFF8BC): BL -1860 [006DH] |
07B1 | x(80E00004): LDR R0, SP, 4H |
07B2 | x(81E00008): LDR R1, SP, 8H |
07B3 | y(42E8000C): ADD R2, SP, CH |
07B4 | y .FIXUP D |
07B4 | y(8D900006): LDR SB, MT, MOD9 [ORG] |
07B5 | y(43D80001): ADD R3, SB, VAR1 |
| ELSIFz fa = ORB.Real THENb factor(y)c;d CheckReal(y)e;f ORG.RealOp(op,g x,h y)i |
07B6 | z .FIXUP P |
07B6 | z(F7915014): BL MOD9 [ORG] PROC21 |
07B7 | a(E700002A): B 42 [07E2H] |
07B8 | b(80E00028): LDR R0, SP, 28H |
07B9 | b(40090005): SUB R0, R0, 5H |
07BA | b(E9000010): BNE 16 [07CBH] |
07BB | c(40E8000C): ADD R0, SP, CH |
07BC | c .FIXUP D |
07BC | c(8D900008): LDR SB, MT, MOD9 [ORG] |
07BD | c(41D80001): ADD R1, SB, VAR1 |
07BE | d(F7FFFEC0): BL -320 [067FH] |
07BF | e(40E8000C): ADD R0, SP, CH |
07C0 | e .FIXUP D |
07C0 | e(8D900004): LDR SB, MT, MOD9 [ORG] |
07C1 | e(41D80001): ADD R1, SB, VAR1 |
07C2 | f(F7FFF8BF): BL -1857 [0082H] |
07C3 | g(80E00024): LDR R0, SP, 24H |
07C4 | h(81E00004): LDR R1, SP, 4H |
07C5 | h(82E00008): LDR R2, SP, 8H |
07C6 | i(43E8000C): ADD R3, SP, CH |
07C7 | i .FIXUP D |
07C7 | i(8D900007): LDR SB, MT, MOD9 [ORG] |
07C8 | i(44D80001): ADD R4, SB, VAR1 |
| ELSIFj fk = ORB.Set THENl factor(y)m;n CheckSet(y)o;p ORG.SetOp(op,q x,r y)s |
07C9 | j .FIXUP P |
07C9 | j(F7917013): BL MOD9 [ORG] PROC23 |
07CA | k(E7000017): B 23 [07E2H] |
07CB | l(80E00028): LDR R0, SP, 28H |
07CC | l(40090006): SUB R0, R0, 6H |
07CD | l(E9000010): BNE 16 [07DEH] |
07CE | m(40E8000C): ADD R0, SP, CH |
07CF | m .FIXUP D |
07CF | m(8D900008): LDR SB, MT, MOD9 [ORG] |
07D0 | m(41D80001): ADD R1, SB, VAR1 |
07D1 | n(F7FFFEAD): BL -339 [067FH] |
07D2 | o(40E8000C): ADD R0, SP, CH |
07D3 | o .FIXUP D |
07D3 | o(8D900004): LDR SB, MT, MOD9 [ORG] |
07D4 | o(41D80001): ADD R1, SB, VAR1 |
07D5 | p(F7FFF8C1): BL -1855 [0097H] |
07D6 | q(80E00024): LDR R0, SP, 24H |
07D7 | r(81E00004): LDR R1, SP, 4H |
07D8 | r(82E00008): LDR R2, SP, 8H |
07D9 | s(43E8000C): ADD R3, SP, CH |
07DA | s .FIXUP D |
07DA | s(8D900007): LDR SB, MT, MOD9 [ORG] |
07DB | s(44D80001): ADD R4, SB, VAR1 |
| ELSEt ORSu.Mark("bad type")v |
07DC | t .FIXUP P |
07DC | t(F791B013): BL MOD9 [ORG] PROC27 |
07DD | u(E7000004): B 4 [07E2H] |
07DE | v .FIXUP D |
07DE | v(8D000004): LDR SB, MT, MOD0 [ORP] |
07DF | v(40D80310): ADD R0, SB, 310H ["bad type"] |
07E0 | v(41000009): MOV R1, R0, 9H |
| ENDw |
07E1 | w .FIXUP P |
07E1 | w(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (xop = ORS.div)y OR (zop = ORS.mod)a THENb |
07E2 | x(E700005B): B 91 [083EH] |
07E3 | y(80E00024): LDR R0, SP, 24H |
07E4 | y(40090003): SUB R0, R0, 3H |
07E5 | z(E1000003): BEQ 3 [07E9H] |
07E6 | a(80E00024): LDR R0, SP, 24H |
07E7 | a(40090004): SUB R0, R0, 4H |
07E8 | b(E9000013): BNE 19 [07FCH] |
| CheckInt(x)c;d factor(y)e;f CheckInt(y)g;h ORG.DivOp(op,i x,j y)k |
07E9 | c(80E00004): LDR R0, SP, 4H |
07EA | c(81E00008): LDR R1, SP, 8H |
07EB | d(F7FFF881): BL -1919 [006DH] |
07EC | e(40E8000C): ADD R0, SP, CH |
07ED | e .FIXUP D |
07ED | e(8D90000F): LDR SB, MT, MOD9 [ORG] |
07EE | e(41D80001): ADD R1, SB, VAR1 |
07EF | f(F7FFFE8F): BL -369 [067FH] |
07F0 | g(40E8000C): ADD R0, SP, CH |
07F1 | g .FIXUP D |
07F1 | g(8D900004): LDR SB, MT, MOD9 [ORG] |
07F2 | g(41D80001): ADD R1, SB, VAR1 |
07F3 | h(F7FFF879): BL -1927 [006DH] |
07F4 | i(80E00024): LDR R0, SP, 24H |
07F5 | j(81E00004): LDR R1, SP, 4H |
07F6 | j(82E00008): LDR R2, SP, 8H |
07F7 | k(43E8000C): ADD R3, SP, CH |
07F8 | k .FIXUP D |
07F8 | k(8D900007): LDR SB, MT, MOD9 [ORG] |
07F9 | k(44D80001): ADD R4, SB, VAR1 |
| ELSIFl opm = ORS.rdiv THENn |
07FA | l .FIXUP P |
07FA | l(F7916019): BL MOD9 [ORG] PROC22 |
07FB | m(E7000042): B 66 [083EH] |
07FC | n(80E00024): LDR R0, SP, 24H |
07FD | n(40090002): SUB R0, R0, 2H |
07FE | n(E900002B): BNE 43 [082AH] |
| IF f = ORB.Real THENo factor(y)p;q CheckReal(y)r;s ORG.RealOp(op,t x,u y)v |
07FF | o(80E00028): LDR R0, SP, 28H |
0800 | o(40090005): SUB R0, R0, 5H |
0801 | o(E9000010): BNE 16 [0812H] |
0802 | p(40E8000C): ADD R0, SP, CH |
0803 | p .FIXUP D |
0803 | p(8D90000B): LDR SB, MT, MOD9 [ORG] |
0804 | p(41D80001): ADD R1, SB, VAR1 |
0805 | q(F7FFFE79): BL -391 [067FH] |
0806 | r(40E8000C): ADD R0, SP, CH |
0807 | r .FIXUP D |
0807 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
0808 | r(41D80001): ADD R1, SB, VAR1 |
0809 | s(F7FFF878): BL -1928 [0082H] |
080A | t(80E00024): LDR R0, SP, 24H |
080B | u(81E00004): LDR R1, SP, 4H |
080C | u(82E00008): LDR R2, SP, 8H |
080D | v(43E8000C): ADD R3, SP, CH |
080E | v .FIXUP D |
080E | v(8D900007): LDR SB, MT, MOD9 [ORG] |
080F | v(44D80001): ADD R4, SB, VAR1 |
| ELSIFw fx = ORB.Set THENy factor(y)z;a CheckSet(y)b;c ORG.SetOp(op,d x,e y)f |
0810 | w .FIXUP P |
0810 | w(F7917016): BL MOD9 [ORG] PROC23 |
0811 | x(E7000017): B 23 [0829H] |
0812 | y(80E00028): LDR R0, SP, 28H |
0813 | y(40090006): SUB R0, R0, 6H |
0814 | y(E9000010): BNE 16 [0825H] |
0815 | z(40E8000C): ADD R0, SP, CH |
0816 | z .FIXUP D |
0816 | z(8D900008): LDR SB, MT, MOD9 [ORG] |
0817 | z(41D80001): ADD R1, SB, VAR1 |
0818 | a(F7FFFE66): BL -410 [067FH] |
0819 | b(40E8000C): ADD R0, SP, CH |
081A | b .FIXUP D |
081A | b(8D900004): LDR SB, MT, MOD9 [ORG] |
081B | b(41D80001): ADD R1, SB, VAR1 |
081C | c(F7FFF87A): BL -1926 [0097H] |
081D | d(80E00024): LDR R0, SP, 24H |
081E | e(81E00004): LDR R1, SP, 4H |
081F | e(82E00008): LDR R2, SP, 8H |
0820 | f(43E8000C): ADD R3, SP, CH |
0821 | f .FIXUP D |
0821 | f(8D900007): LDR SB, MT, MOD9 [ORG] |
0822 | f(44D80001): ADD R4, SB, VAR1 |
| ELSEg ORSh.Mark("bad type")i |
0823 | g .FIXUP P |
0823 | g(F791B013): BL MOD9 [ORG] PROC27 |
0824 | h(E7000004): B 4 [0829H] |
0825 | i .FIXUP D |
0825 | i(8D000004): LDR SB, MT, MOD0 [ORP] |
0826 | i(40D8031C): ADD R0, SB, 31CH ["bad type"] |
0827 | i(41000009): MOV R1, R0, 9H |
| ENDj |
0828 | j .FIXUP P |
0828 | j(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE (*op = and*) CheckBoolk(x)l;m ORG.And1(x)n;o factor(y)p;q CheckBool(y)r;s ORG.And2(x,t y)u |
0829 | k(E7000014): B 20 [083EH] |
082A | l(80E00004): LDR R0, SP, 4H |
082B | l(81E00008): LDR R1, SP, 8H |
082C | m(F7FFF82B): BL -2005 [0058H] |
082D | n(80E00004): LDR R0, SP, 4H |
082E | n(81E00008): LDR R1, SP, 8H |
082F | o .FIXUP P |
082F | o(F790F007): BL MOD9 [ORG] PROC15 |
0830 | p(40E8000C): ADD R0, SP, CH |
0831 | p .FIXUP D |
0831 | p(8D90000C): LDR SB, MT, MOD9 [ORG] |
0832 | p(41D80001): ADD R1, SB, VAR1 |
0833 | q(F7FFFE4B): BL -437 [067FH] |
0834 | r(40E8000C): ADD R0, SP, CH |
0835 | r .FIXUP D |
0835 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
0836 | r(41D80001): ADD R1, SB, VAR1 |
0837 | s(F7FFF820): BL -2016 [0058H] |
0838 | t(80E00004): LDR R0, SP, 4H |
0839 | t(81E00008): LDR R1, SP, 8H |
083A | u(42E8000C): ADD R2, SP, CH |
083B | u .FIXUP D |
083B | u(8D900006): LDR SB, MT, MOD9 [ORG] |
083C | u(43D80001): ADD R3, SB, VAR1 |
| ENDv |
083D | v .FIXUP P |
083D | v(F791000E): BL MOD9 [ORG] PROC16 |
| ENDw |
083E | w(E7FFFF57): B -169 [0796H] |
| ENDx term; |
083F | x(8FE00000): LDR LNK, SP, 0H |
0840 | x(4EE8002C): ADD SP, SP, 2CH |
0841 | x(C700000F): B LNK |
| |
| PROCEDURE SimpleExpression(VAR x: ORG.Item); |
| VAR y: ORG.Item; op: INTEGER; |
| BEGINy |
0842 | y(4EE90028): SUB SP, SP, 28H |
0843 | y(AFE00000): STR LNK, SP, 0H |
0844 | y(A0E00004): STR R0, SP, 4H |
0845 | y(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.minus THENz ORS.Get(sym)a;b term(x)c;d |
0846 | z .FIXUP D |
0846 | z(8D00000B): LDR SB, MT, MOD0 [ORP] |
0847 | z(80D0001C): LDR R0, SB, 1CH [data] |
0848 | z(40090007): SUB R0, R0, 7H |
0849 | z(E9000016): BNE 22 [0860H] |
084A | a .FIXUP D |
084A | a(8D000004): LDR SB, MT, MOD0 [ORP] |
084B | a(40D8001C): ADD R0, SB, 1CH [data] |
084C | b .FIXUP P |
084C | b(F770A00F): BL MOD7 [ORS] PROC10 |
084D | c(80E00004): LDR R0, SP, 4H |
084E | c(81E00008): LDR R1, SP, 8H |
084F | d(F7FFFF3A): BL -198 [078AH] |
| IF x.type.forme IN {ORB.Int, ORB.Real, ORB.Set} THENf ORG.Neg(x)g ELSEh CheckInti(x)j ENDk |
0850 | e(80E00004): LDR R0, SP, 4H |
0851 | e(80000004): LDR R0, R0, 4H |
0852 | e(D1393C4C): BLEQ MT [trap=4, pos=14652] |
0853 | f(41000070): MOV R1, R0, 70H |
0854 | f(80000000): LDR R0, R0, 0H |
0855 | f(40080001): ADD R0, R0, 1H |
0856 | f(01130000): ROR R1, R1, R0 |
0857 | f(E8000004): BPL 4 [085CH] |
0858 | g(80E00004): LDR R0, SP, 4H |
0859 | g(81E00008): LDR R1, SP, 8H |
085A | h .FIXUP P |
085A | h(F791300E): BL MOD9 [ORG] PROC19 |
085B | i(E7000003): B 3 [085FH] |
085C | j(80E00004): LDR R0, SP, 4H |
085D | j(81E00008): LDR R1, SP, 8H |
085E | k(F7FFF80E): BL -2034 [006DH] |
| ELSIF syml = ORS.plus THENm ORS.Get(sym)n;o term(x)p;q |
085F | l(E700000E): B 14 [086EH] |
0860 | m .FIXUP D |
0860 | m(8D000016): LDR SB, MT, MOD0 [ORP] |
0861 | m(80D0001C): LDR R0, SB, 1CH [data] |
0862 | m(40090006): SUB R0, R0, 6H |
0863 | m(E9000007): BNE 7 [086BH] |
0864 | n .FIXUP D |
0864 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
0865 | n(40D8001C): ADD R0, SB, 1CH [data] |
0866 | o .FIXUP P |
0866 | o(F770A00C): BL MOD7 [ORS] PROC10 |
0867 | p(80E00004): LDR R0, SP, 4H |
0868 | p(81E00008): LDR R1, SP, 8H |
0869 | q(F7FFFF20): BL -224 [078AH] |
| ELSE termr(x)s |
086A | r(E7000003): B 3 [086EH] |
086B | s(80E00004): LDR R0, SP, 4H |
086C | s(81E00008): LDR R1, SP, 8H |
| ENDt ; |
086D | t(F7FFFF1C): BL -228 [078AH] |
| WHILE (sym >= ORS.plus)u & (vsym <= ORS.or)w DOx |
086E | u .FIXUP D |
086E | u(8D00000A): LDR SB, MT, MOD0 [ORP] |
086F | u(80D0001C): LDR R0, SB, 1CH [data] |
0870 | u(40090006): SUB R0, R0, 6H |
0871 | v(E5000060): BLT 96 [08D2H] |
0872 | w .FIXUP D |
0872 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
0873 | w(80D0001C): LDR R0, SB, 1CH [data] |
0874 | w(40090008): SUB R0, R0, 8H |
0875 | x(EE00005C): BGT 92 [08D2H] |
| op := sym;y ORS.Get(sym)z;a |
0876 | y .FIXUP D |
0876 | y(8D000004): LDR SB, MT, MOD0 [ORP] |
0877 | y(80D0001C): LDR R0, SB, 1CH [data] |
0878 | y(A0E00024): STR R0, SP, 24H |
0879 | z(40D8001C): ADD R0, SB, 1CH |
087A | a .FIXUP P |
087A | a(F770A014): BL MOD7 [ORS] PROC10 |
| IF op = ORS.or THENb ORG.Or1(x)c;d CheckBool(x)e;f term(y)g;h CheckBool(y)i;j ORG.Or2(x,k y)l |
087B | b(80E00024): LDR R0, SP, 24H |
087C | b(40090008): SUB R0, R0, 8H |
087D | b(E9000015): BNE 21 [0893H] |
087E | c(80E00004): LDR R0, SP, 4H |
087F | c(81E00008): LDR R1, SP, 8H |
0880 | d .FIXUP P |
0880 | d(F7911006): BL MOD9 [ORG] PROC17 |
0881 | e(80E00004): LDR R0, SP, 4H |
0882 | e(81E00008): LDR R1, SP, 8H |
0883 | f(F7FFF7D4): BL -2092 [0058H] |
0884 | g(40E8000C): ADD R0, SP, CH |
0885 | g .FIXUP D |
0885 | g(8D90000F): LDR SB, MT, MOD9 [ORG] |
0886 | g(41D80001): ADD R1, SB, VAR1 |
0887 | h(F7FFFF02): BL -254 [078AH] |
0888 | i(40E8000C): ADD R0, SP, CH |
0889 | i .FIXUP D |
0889 | i(8D900004): LDR SB, MT, MOD9 [ORG] |
088A | i(41D80001): ADD R1, SB, VAR1 |
088B | j(F7FFF7CC): BL -2100 [0058H] |
088C | k(80E00004): LDR R0, SP, 4H |
088D | k(81E00008): LDR R1, SP, 8H |
088E | l(42E8000C): ADD R2, SP, CH |
088F | l .FIXUP D |
088F | l(8D900006): LDR SB, MT, MOD9 [ORG] |
0890 | l(43D80001): ADD R3, SB, VAR1 |
| ELSIFm xn.type.formo = ORB.Int THENp term(y)q;r CheckInt(y)s;t ORG.AddOp(op,u x,v y)w |
0891 | m .FIXUP P |
0891 | m(F7912011): BL MOD9 [ORG] PROC18 |
0892 | n(E700003E): B 62 [08D1H] |
0893 | o(80E00004): LDR R0, SP, 4H |
0894 | o(80000004): LDR R0, R0, 4H |
0895 | o(D13A924C): BLEQ MT [trap=4, pos=14994] |
0896 | p(80000000): LDR R0, R0, 0H |
0897 | p(40090004): SUB R0, R0, 4H |
0898 | p(E9000010): BNE 16 [08A9H] |
0899 | q(40E8000C): ADD R0, SP, CH |
089A | q .FIXUP D |
089A | q(8D90000B): LDR SB, MT, MOD9 [ORG] |
089B | q(41D80001): ADD R1, SB, VAR1 |
089C | r(F7FFFEED): BL -275 [078AH] |
089D | s(40E8000C): ADD R0, SP, CH |
089E | s .FIXUP D |
089E | s(8D900004): LDR SB, MT, MOD9 [ORG] |
089F | s(41D80001): ADD R1, SB, VAR1 |
08A0 | t(F7FFF7CC): BL -2100 [006DH] |
08A1 | u(80E00024): LDR R0, SP, 24H |
08A2 | v(81E00004): LDR R1, SP, 4H |
08A3 | v(82E00008): LDR R2, SP, 8H |
08A4 | w(43E8000C): ADD R3, SP, CH |
08A5 | w .FIXUP D |
08A5 | w(8D900007): LDR SB, MT, MOD9 [ORG] |
08A6 | w(44D80001): ADD R4, SB, VAR1 |
| ELSIFx xy.type.formz = ORB.Real THENa term(y)b;c CheckReal(y)d;e ORG.RealOp(op,f x,g y)h |
08A7 | x .FIXUP P |
08A7 | x(F7914016): BL MOD9 [ORG] PROC20 |
08A8 | y(E7000028): B 40 [08D1H] |
08A9 | z(80E00004): LDR R0, SP, 4H |
08AA | z(80000004): LDR R0, R0, 4H |
08AB | z(D13AE34C): BLEQ MT [trap=4, pos=15075] |
08AC | a(80000000): LDR R0, R0, 0H |
08AD | a(40090005): SUB R0, R0, 5H |
08AE | a(E9000010): BNE 16 [08BFH] |
08AF | b(40E8000C): ADD R0, SP, CH |
08B0 | b .FIXUP D |
08B0 | b(8D90000B): LDR SB, MT, MOD9 [ORG] |
08B1 | b(41D80001): ADD R1, SB, VAR1 |
08B2 | c(F7FFFED7): BL -297 [078AH] |
08B3 | d(40E8000C): ADD R0, SP, CH |
08B4 | d .FIXUP D |
08B4 | d(8D900004): LDR SB, MT, MOD9 [ORG] |
08B5 | d(41D80001): ADD R1, SB, VAR1 |
08B6 | e(F7FFF7CB): BL -2101 [0082H] |
08B7 | f(80E00024): LDR R0, SP, 24H |
08B8 | g(81E00004): LDR R1, SP, 4H |
08B9 | g(82E00008): LDR R2, SP, 8H |
08BA | h(43E8000C): ADD R3, SP, CH |
08BB | h .FIXUP D |
08BB | h(8D900007): LDR SB, MT, MOD9 [ORG] |
08BC | h(44D80001): ADD R4, SB, VAR1 |
| ELSEi CheckSetj(x)k;l term(y)m;n CheckSet(y)o;p ORG.SetOp(op,q x,r y)s |
08BD | i .FIXUP P |
08BD | i(F7917016): BL MOD9 [ORG] PROC23 |
08BE | j(E7000012): B 18 [08D1H] |
08BF | k(80E00004): LDR R0, SP, 4H |
08C0 | k(81E00008): LDR R1, SP, 8H |
08C1 | l(F7FFF7D5): BL -2091 [0097H] |
08C2 | m(40E8000C): ADD R0, SP, CH |
08C3 | m .FIXUP D |
08C3 | m(8D900008): LDR SB, MT, MOD9 [ORG] |
08C4 | m(41D80001): ADD R1, SB, VAR1 |
08C5 | n(F7FFFEC4): BL -316 [078AH] |
08C6 | o(40E8000C): ADD R0, SP, CH |
08C7 | o .FIXUP D |
08C7 | o(8D900004): LDR SB, MT, MOD9 [ORG] |
08C8 | o(41D80001): ADD R1, SB, VAR1 |
08C9 | p(F7FFF7CD): BL -2099 [0097H] |
08CA | q(80E00024): LDR R0, SP, 24H |
08CB | r(81E00004): LDR R1, SP, 4H |
08CC | r(82E00008): LDR R2, SP, 8H |
08CD | s(43E8000C): ADD R3, SP, CH |
08CE | s .FIXUP D |
08CE | s(8D900007): LDR SB, MT, MOD9 [ORG] |
08CF | s(44D80001): ADD R4, SB, VAR1 |
| ENDt |
08D0 | t .FIXUP P |
08D0 | t(F791B013): BL MOD9 [ORG] PROC27 |
| ENDu |
08D1 | u(E7FFFF9C): B -100 [086EH] |
| ENDv SimpleExpression; |
08D2 | v(8FE00000): LDR LNK, SP, 0H |
08D3 | v(4EE80028): ADD SP, SP, 28H |
08D4 | v(C700000F): B LNK |
| |
| PROCEDURE expression0(VAR x: ORG.Item); |
| VAR y: ORG.Item; obj: ORB.Object; rel, xf, yf: INTEGER; |
| BEGINw SimpleExpression(x)x;y |
08D5 | w(4EE90034): SUB SP, SP, 34H |
08D6 | w(AFE00000): STR LNK, SP, 0H |
08D7 | w(A0E00004): STR R0, SP, 4H |
08D8 | w(A1E00008): STR R1, SP, 8H |
08D9 | x(80E00004): LDR R0, SP, 4H |
08DA | x(81E00008): LDR R1, SP, 8H |
08DB | y(F7FFFF66): BL -154 [0842H] |
| IF (sym >= ORS.eql)z & (asym <= ORS.geq)b THENc |
08DC | z .FIXUP D |
08DC | z(8D00000E): LDR SB, MT, MOD0 [ORP] |
08DD | z(80D0001C): LDR R0, SB, 1CH [data] |
08DE | z(40090009): SUB R0, R0, 9H |
08DF | a(E5000127): BLT 295 [0A07H] |
08E0 | b .FIXUP D |
08E0 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
08E1 | b(80D0001C): LDR R0, SB, 1CH [data] |
08E2 | b(4009000E): SUB R0, R0, EH |
08E3 | c(EE000123): BGT 291 [0A07H] |
| rel := sym;d ORS.Get(sym)e;f SimpleExpression(y)g;h xf := x.type.formi;j yf := y.type.formk;l |
08E4 | d .FIXUP D |
08E4 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
08E5 | d(80D0001C): LDR R0, SB, 1CH [data] |
08E6 | d(A0E00028): STR R0, SP, 28H |
08E7 | e(40D8001C): ADD R0, SB, 1CH |
08E8 | f .FIXUP P |
08E8 | f(F770A018): BL MOD7 [ORS] PROC10 |
08E9 | g(40E8000C): ADD R0, SP, CH |
08EA | g .FIXUP D |
08EA | g(8D900006): LDR SB, MT, MOD9 [ORG] |
08EB | g(41D80001): ADD R1, SB, VAR1 |
08EC | h(F7FFFF55): BL -171 [0842H] |
08ED | i(80E00004): LDR R0, SP, 4H |
08EE | i(80000004): LDR R0, R0, 4H |
08EF | i(D13C864C): BLEQ MT [trap=4, pos=15494] |
08F0 | j(80000000): LDR R0, R0, 0H |
08F1 | j(A0E0002C): STR R0, SP, 2CH |
08F2 | k(80E00010): LDR R0, SP, 10H |
08F3 | k(D13C994C): BLEQ MT [trap=4, pos=15513] |
08F4 | l(80000000): LDR R0, R0, 0H |
08F5 | l(A0E00030): STR R0, SP, 30H |
| IF x.type = y.type THENm |
08F6 | m(80E00004): LDR R0, SP, 4H |
08F7 | m(80000004): LDR R0, R0, 4H |
08F8 | m(81E00010): LDR R1, SP, 10H |
08F9 | m(00090001): SUB R0, R0, R1 |
08FA | m(E9000048): BNE 72 [0943H] |
| IF (xf IN {ORB.Char, ORB.Int})n THENo ORG.IntRelation(rel,p x,q y)r |
08FB | n(40000018): MOV R0, R0, 18H |
08FC | n(81E0002C): LDR R1, SP, 2CH |
08FD | n(41180001): ADD R1, R1, 1H |
08FE | n(00030001): ROR R0, R0, R1 |
08FF | o(E8000008): BPL 8 [0908H] |
0900 | p(80E00028): LDR R0, SP, 28H |
0901 | q(81E00004): LDR R1, SP, 4H |
0902 | q(82E00008): LDR R2, SP, 8H |
0903 | r(43E8000C): ADD R3, SP, CH |
0904 | r .FIXUP D |
0904 | r(8D90001A): LDR SB, MT, MOD9 [ORG] |
0905 | r(44D80001): ADD R4, SB, VAR1 |
| ELSIFs xft = ORB.Real THENu ORG.RealRelation(rel,v x,w y)x |
0906 | s .FIXUP P |
0906 | s(F791C01E): BL MOD9 [ORG] PROC28 |
0907 | t(E700003A): B 58 [0942H] |
0908 | u(80E0002C): LDR R0, SP, 2CH |
0909 | u(40090005): SUB R0, R0, 5H |
090A | u(E9000008): BNE 8 [0913H] |
090B | v(80E00028): LDR R0, SP, 28H |
090C | w(81E00004): LDR R1, SP, 4H |
090D | w(82E00008): LDR R2, SP, 8H |
090E | x(43E8000C): ADD R3, SP, CH |
090F | x .FIXUP D |
090F | x(8D90000B): LDR SB, MT, MOD9 [ORG] |
0910 | x(44D80001): ADD R4, SB, VAR1 |
| ELSIFy (zxf IN {ORB.Set, ORB.Pointer, ORB.Proc, ORB.NilTyp, ORB.Bool})a THENb |
0911 | y .FIXUP P |
0911 | y(F791D00B): BL MOD9 [ORG] PROC29 |
0912 | z(E700002F): B 47 [0942H] |
0913 | a(400005C4): MOV R0, R0, 5C4H |
0914 | a(81E0002C): LDR R1, SP, 2CH |
0915 | a(41180001): ADD R1, R1, 1H |
0916 | a(00030001): ROR R0, R0, R1 |
0917 | b(E8000010): BPL 16 [0928H] |
| IF rel <= ORS.neq THENc ORG.IntRelation(rel,d x,e y)f ELSEg ORSh.Mark("only = or #")i ENDj |
0918 | c(80E00028): LDR R0, SP, 28H |
0919 | c(4009000A): SUB R0, R0, AH |
091A | c(EE000008): BGT 8 [0923H] |
091B | d(80E00028): LDR R0, SP, 28H |
091C | e(81E00004): LDR R1, SP, 4H |
091D | e(82E00008): LDR R2, SP, 8H |
091E | f(43E8000C): ADD R3, SP, CH |
091F | f .FIXUP D |
091F | f(8D900010): LDR SB, MT, MOD9 [ORG] |
0920 | f(44D80001): ADD R4, SB, VAR1 |
0921 | g .FIXUP P |
0921 | g(F791C010): BL MOD9 [ORG] PROC28 |
0922 | h(E7000004): B 4 [0927H] |
0923 | i .FIXUP D |
0923 | i(8D000004): LDR SB, MT, MOD0 [ORP] |
0924 | i(40D80328): ADD R0, SB, 328H ["only = or #"] |
0925 | i(4100000C): MOV R1, R0, CH |
0926 | j .FIXUP P |
0926 | j(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (kxf = ORB.Array)l & (mx.type.basen.formo = ORB.Char)p OR (qxf = ORB.String)r THENs |
0927 | k(E700001A): B 26 [0942H] |
0928 | l(80E0002C): LDR R0, SP, 2CH |
0929 | l(4009000C): SUB R0, R0, CH |
092A | m(E9000008): BNE 8 [0933H] |
092B | n(80E00004): LDR R0, SP, 4H |
092C | n(80000004): LDR R0, R0, 4H |
092D | n(D13E194C): BLEQ MT [trap=4, pos=15897] |
092E | o(8000001C): LDR R0, R0, 1CH |
092F | o(D13E1E4C): BLEQ MT [trap=4, pos=15902] |
0930 | p(80000000): LDR R0, R0, 0H |
0931 | p(40090003): SUB R0, R0, 3H |
0932 | q(E1000003): BEQ 3 [0936H] |
0933 | r(80E0002C): LDR R0, SP, 2CH |
0934 | r(4009000B): SUB R0, R0, BH |
0935 | s(E9000008): BNE 8 [093EH] |
| ORG.StringRelation(rel,t x,u y)v |
0936 | t(80E00028): LDR R0, SP, 28H |
0937 | u(81E00004): LDR R1, SP, 4H |
0938 | u(82E00008): LDR R2, SP, 8H |
0939 | v(43E8000C): ADD R3, SP, CH |
093A | v .FIXUP D |
093A | v(8D900017): LDR SB, MT, MOD9 [ORG] |
093B | v(44D80001): ADD R4, SB, VAR1 |
| ELSEw ORSx.Mark("illegal comparison")y |
093C | w .FIXUP P |
093C | w(F791E016): BL MOD9 [ORG] PROC30 |
093D | x(E7000004): B 4 [0942H] |
093E | y .FIXUP D |
093E | y(8D000004): LDR SB, MT, MOD0 [ORP] |
093F | y(40D80334): ADD R0, SB, 334H ["illegal comparison"] |
0940 | y(41000013): MOV R1, R0, 13H |
| ENDz |
0941 | z .FIXUP P |
0941 | z(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (axf IN {ORB.Pointer, ORB.Proc})b & (cyf = ORB.NilTyp)d |
0942 | a(E70000BF): B 191 [0A02H] |
0943 | b(40000480): MOV R0, R0, 480H |
0944 | b(81E0002C): LDR R1, SP, 2CH |
0945 | b(41180001): ADD R1, R1, 1H |
0946 | b(00030001): ROR R0, R0, R1 |
0947 | c(E8000003): BPL 3 [094BH] |
0948 | d(80E00030): LDR R0, SP, 30H |
0949 | d(40090008): SUB R0, R0, 8H |
| OR (eyf IN {ORB.Pointer, ORB.Proc})f & (gxf = ORB.NilTyp)h THENi |
094A | e(E1000008): BEQ 8 [0953H] |
094B | f(40000480): MOV R0, R0, 480H |
094C | f(81E00030): LDR R1, SP, 30H |
094D | f(41180001): ADD R1, R1, 1H |
094E | f(00030001): ROR R0, R0, R1 |
094F | g(E8000013): BPL 19 [0963H] |
0950 | h(80E0002C): LDR R0, SP, 2CH |
0951 | h(40090008): SUB R0, R0, 8H |
0952 | i(E9000010): BNE 16 [0963H] |
| IF rel <= ORS.neq THENj ORG.IntRelation(rel,k x,l y)m ELSEn ORSo.Mark("only = or #")p ENDq |
0953 | j(80E00028): LDR R0, SP, 28H |
0954 | j(4009000A): SUB R0, R0, AH |
0955 | j(EE000008): BGT 8 [095EH] |
0956 | k(80E00028): LDR R0, SP, 28H |
0957 | l(81E00004): LDR R1, SP, 4H |
0958 | l(82E00008): LDR R2, SP, 8H |
0959 | m(43E8000C): ADD R3, SP, CH |
095A | m .FIXUP D |
095A | m(8D90001C): LDR SB, MT, MOD9 [ORG] |
095B | m(44D80001): ADD R4, SB, VAR1 |
095C | n .FIXUP P |
095C | n(F791C01B): BL MOD9 [ORG] PROC28 |
095D | o(E7000004): B 4 [0962H] |
095E | p .FIXUP D |
095E | p(8D000004): LDR SB, MT, MOD0 [ORP] |
095F | p(40D80348): ADD R0, SB, 348H ["only = or #"] |
0960 | p(4100000C): MOV R1, R0, CH |
0961 | q .FIXUP P |
0961 | q(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (rxf = ORB.Pointer)s & (tyf = ORB.Pointer)u & |
0962 | r(E700009F): B 159 [0A02H] |
0963 | s(80E0002C): LDR R0, SP, 2CH |
0964 | s(40090007): SUB R0, R0, 7H |
0965 | t(E9000017): BNE 23 [097DH] |
0966 | u(80E00030): LDR R0, SP, 30H |
0967 | u(40090007): SUB R0, R0, 7H |
| (vIsExtension(x.type.basew,x y.type.basey)z ORa IsExtensionb(y.type.basec,d x.type.basee)f)g |
0968 | v(E9000014): BNE 20 [097DH] |
0969 | w(80E00004): LDR R0, SP, 4H |
096A | w(80000004): LDR R0, R0, 4H |
096B | w(D13FDF4C): BLEQ MT [trap=4, pos=16351] |
096C | x(8000001C): LDR R0, R0, 1CH |
096D | y(81E00010): LDR R1, SP, 10H |
096E | y(D13FEC4C): BLEQ MT [trap=4, pos=16364] |
096F | z(8110001C): LDR R1, R1, 1CH |
0970 | a(F7FFF79C): BL -2148 [010DH] |
0971 | b(40090000): SUB R0, R0, 0H |
0972 | b(E9000016): BNE 22 [0989H] |
0973 | c(80E00010): LDR R0, SP, 10H |
0974 | c(D140084C): BLEQ MT [trap=4, pos=16392] |
0975 | d(8000001C): LDR R0, R0, 1CH |
0976 | e(81E00004): LDR R1, SP, 4H |
0977 | e(81100004): LDR R1, R1, 4H |
0978 | e(D140154C): BLEQ MT [trap=4, pos=16405] |
0979 | f(8110001C): LDR R1, R1, 1CH |
097A | g(F7FFF792): BL -2158 [010DH] |
097B | g(40090000): SUB R0, R0, 0H |
| OR (hxf = ORB.Proc)i & (jyf = ORB.Proc)k & EqualSignaturesl(x.type,m y.type)n THENo |
097C | h(E900000C): BNE 12 [0989H] |
097D | i(80E0002C): LDR R0, SP, 2CH |
097E | i(4009000A): SUB R0, R0, AH |
097F | j(E9000019): BNE 25 [0999H] |
0980 | k(80E00030): LDR R0, SP, 30H |
0981 | k(4009000A): SUB R0, R0, AH |
0982 | l(E9000016): BNE 22 [0999H] |
0983 | m(80E00004): LDR R0, SP, 4H |
0984 | m(80000004): LDR R0, R0, 4H |
0985 | n(81E00010): LDR R1, SP, 10H |
0986 | o(F7FFF8FF): BL -1793 [0286H] |
0987 | o(40090000): SUB R0, R0, 0H |
0988 | o(E1000010): BEQ 16 [0999H] |
| IF rel <= ORS.neq THENp ORG.IntRelation(rel,q x,r y)s ELSEt ORSu.Mark("only = or #")v ENDw |
0989 | p(80E00028): LDR R0, SP, 28H |
098A | p(4009000A): SUB R0, R0, AH |
098B | p(EE000008): BGT 8 [0994H] |
098C | q(80E00028): LDR R0, SP, 28H |
098D | r(81E00004): LDR R1, SP, 4H |
098E | r(82E00008): LDR R2, SP, 8H |
098F | s(43E8000C): ADD R3, SP, CH |
0990 | s .FIXUP D |
0990 | s(8D900032): LDR SB, MT, MOD9 [ORG] |
0991 | s(44D80001): ADD R4, SB, VAR1 |
0992 | t .FIXUP P |
0992 | t(F791C031): BL MOD9 [ORG] PROC28 |
0993 | u(E7000004): B 4 [0998H] |
0994 | v .FIXUP D |
0994 | v(8D000004): LDR SB, MT, MOD0 [ORP] |
0995 | v(40D80354): ADD R0, SB, 354H ["only = or #"] |
0996 | v(4100000C): MOV R1, R0, CH |
0997 | w .FIXUP P |
0997 | w(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF (xxf = ORB.Array)y & (zx.type.basea.formb = ORB.Char)c & |
0998 | x(E7000069): B 105 [0A02H] |
0999 | y(80E0002C): LDR R0, SP, 2CH |
099A | y(4009000C): SUB R0, R0, CH |
099B | z(E9000015): BNE 21 [09B1H] |
099C | a(80E00004): LDR R0, SP, 4H |
099D | a(80000004): LDR R0, R0, 4H |
099E | a(D140F54C): BLEQ MT [trap=4, pos=16629] |
099F | b(8000001C): LDR R0, R0, 1CH |
09A0 | b(D140FA4C): BLEQ MT [trap=4, pos=16634] |
09A1 | c(80000000): LDR R0, R0, 0H |
09A2 | c(40090003): SUB R0, R0, 3H |
| (d(yf = ORB.String)e OR (fyf = ORB.Array)g & (hy.type.basei.formj = ORB.Char)k) |
09A3 | d(E900000D): BNE 13 [09B1H] |
09A4 | e(80E00030): LDR R0, SP, 30H |
09A5 | e(4009000B): SUB R0, R0, BH |
09A6 | f(E1000017): BEQ 23 [09BEH] |
09A7 | g(80E00030): LDR R0, SP, 30H |
09A8 | g(4009000C): SUB R0, R0, CH |
09A9 | h(E9000007): BNE 7 [09B1H] |
09AA | i(80E00010): LDR R0, SP, 10H |
09AB | i(D1414A4C): BLEQ MT [trap=4, pos=16714] |
09AC | j(8000001C): LDR R0, R0, 1CH |
09AD | j(D1414F4C): BLEQ MT [trap=4, pos=16719] |
09AE | k(80000000): LDR R0, R0, 0H |
09AF | k(40090003): SUB R0, R0, 3H |
| OR (lyf = ORB.Array)m & (ny.type.baseo.formp = ORB.Char)q & (rxf = ORB.String)s THENt |
09B0 | l(E100000D): BEQ 13 [09BEH] |
09B1 | m(80E00030): LDR R0, SP, 30H |
09B2 | m(4009000C): SUB R0, R0, CH |
09B3 | n(E9000012): BNE 18 [09C6H] |
09B4 | o(80E00010): LDR R0, SP, 10H |
09B5 | o(D141894C): BLEQ MT [trap=4, pos=16777] |
09B6 | p(8000001C): LDR R0, R0, 1CH |
09B7 | p(D1418E4C): BLEQ MT [trap=4, pos=16782] |
09B8 | q(80000000): LDR R0, R0, 0H |
09B9 | q(40090003): SUB R0, R0, 3H |
09BA | r(E900000B): BNE 11 [09C6H] |
09BB | s(80E0002C): LDR R0, SP, 2CH |
09BC | s(4009000B): SUB R0, R0, BH |
09BD | t(E9000008): BNE 8 [09C6H] |
| ORG.StringRelation(rel,u x,v y)w |
09BE | u(80E00028): LDR R0, SP, 28H |
09BF | v(81E00004): LDR R1, SP, 4H |
09C0 | v(82E00008): LDR R2, SP, 8H |
09C1 | w(43E8000C): ADD R3, SP, CH |
09C2 | w .FIXUP D |
09C2 | w(8D90002E): LDR SB, MT, MOD9 [ORG] |
09C3 | w(44D80001): ADD R4, SB, VAR1 |
| ELSIFx (yxf = ORB.Char)z & (ayf = ORB.String)b & (cy.b = 2)d THENe |
09C4 | x .FIXUP P |
09C4 | x(F791E02D): BL MOD9 [ORG] PROC30 |
09C5 | y(E700003C): B 60 [0A02H] |
09C6 | z(80E0002C): LDR R0, SP, 2CH |
09C7 | z(40090003): SUB R0, R0, 3H |
09C8 | a(E9000012): BNE 18 [09DBH] |
09C9 | b(80E00030): LDR R0, SP, 30H |
09CA | b(4009000B): SUB R0, R0, BH |
09CB | c(E900000F): BNE 15 [09DBH] |
09CC | d(80E00018): LDR R0, SP, 18H |
09CD | d(40090002): SUB R0, R0, 2H |
09CE | e(E900000C): BNE 12 [09DBH] |
| ORG.StrToChar(y)f;g ORG.IntRelation(rel,h x,i y)j |
09CF | f(40E8000C): ADD R0, SP, CH |
09D0 | f .FIXUP D |
09D0 | f(8D90000E): LDR SB, MT, MOD9 [ORG] |
09D1 | f(41D80001): ADD R1, SB, VAR1 |
09D2 | g .FIXUP P |
09D2 | g(F791F00E): BL MOD9 [ORG] PROC31 |
09D3 | h(80E00028): LDR R0, SP, 28H |
09D4 | i(81E00004): LDR R1, SP, 4H |
09D5 | i(82E00008): LDR R2, SP, 8H |
09D6 | j(43E8000C): ADD R3, SP, CH |
09D7 | j .FIXUP D |
09D7 | j(8D900007): LDR SB, MT, MOD9 [ORG] |
09D8 | j(44D80001): ADD R4, SB, VAR1 |
| ELSIFk (lyf = ORB.Char)m & (nxf = ORB.String)o & (px.b = 2)q THENr |
09D9 | k .FIXUP P |
09D9 | k(F791C007): BL MOD9 [ORG] PROC28 |
09DA | l(E7000027): B 39 [0A02H] |
09DB | m(80E00030): LDR R0, SP, 30H |
09DC | m(40090003): SUB R0, R0, 3H |
09DD | n(E9000012): BNE 18 [09F0H] |
09DE | o(80E0002C): LDR R0, SP, 2CH |
09DF | o(4009000B): SUB R0, R0, BH |
09E0 | p(E900000F): BNE 15 [09F0H] |
09E1 | q(80E00004): LDR R0, SP, 4H |
09E2 | q(8000000C): LDR R0, R0, CH |
09E3 | q(40090002): SUB R0, R0, 2H |
09E4 | r(E900000B): BNE 11 [09F0H] |
| ORG.StrToChar(x)s;t ORG.IntRelation(rel,u x,v y)w |
09E5 | s(80E00004): LDR R0, SP, 4H |
09E6 | s(81E00008): LDR R1, SP, 8H |
09E7 | t .FIXUP P |
09E7 | t(F791F00E): BL MOD9 [ORG] PROC31 |
09E8 | u(80E00028): LDR R0, SP, 28H |
09E9 | v(81E00004): LDR R1, SP, 4H |
09EA | v(82E00008): LDR R2, SP, 8H |
09EB | w(43E8000C): ADD R3, SP, CH |
09EC | w .FIXUP D |
09EC | w(8D900015): LDR SB, MT, MOD9 [ORG] |
09ED | w(44D80001): ADD R4, SB, VAR1 |
| ELSIFx (yxf = ORB.Int)z & (ayf = ORB.Int)b THENc ORG.IntRelation(rel,d x,e y)f (*BYTE*) |
09EE | x .FIXUP P |
09EE | x(F791C007): BL MOD9 [ORG] PROC28 |
09EF | y(E7000012): B 18 [0A02H] |
09F0 | z(80E0002C): LDR R0, SP, 2CH |
09F1 | z(40090004): SUB R0, R0, 4H |
09F2 | a(E900000B): BNE 11 [09FEH] |
09F3 | b(80E00030): LDR R0, SP, 30H |
09F4 | b(40090004): SUB R0, R0, 4H |
09F5 | c(E9000008): BNE 8 [09FEH] |
09F6 | d(80E00028): LDR R0, SP, 28H |
09F7 | e(81E00004): LDR R1, SP, 4H |
09F8 | e(82E00008): LDR R2, SP, 8H |
09F9 | f(43E8000C): ADD R3, SP, CH |
09FA | f .FIXUP D |
09FA | f(8D90000E): LDR SB, MT, MOD9 [ORG] |
09FB | f(44D80001): ADD R4, SB, VAR1 |
| ELSEg ORSh.Mark("illegal comparison")i |
09FC | g .FIXUP P |
09FC | g(F791C00E): BL MOD9 [ORG] PROC28 |
09FD | h(E7000004): B 4 [0A02H] |
09FE | i .FIXUP D |
09FE | i(8D000004): LDR SB, MT, MOD0 [ORP] |
09FF | i(40D80360): ADD R0, SB, 360H ["illegal comparison"] |
0A00 | i(41000013): MOV R1, R0, 13H |
| ENDj ; |
0A01 | j .FIXUP P |
0A01 | j(F7709005): BL MOD7 [ORS] PROC9 |
| x.type := ORB.boolType |
| ELSIFk syml = ORS.in THENm |
0A02 | k .FIXUP D |
0A02 | k(8D800004): LDR SB, MT, MOD8 [ORB] |
0A03 | k(80D00007): LDR R0, SB, VAR7 |
0A04 | k(81E00004): LDR R1, SP, 4H |
0A05 | k(A0100004): STR R0, R1, 4H |
0A06 | l(E7000031): B 49 [0A38H] |
0A07 | m .FIXUP D |
0A07 | m(8D000005): LDR SB, MT, MOD0 [ORP] |
0A08 | m(80D0001C): LDR R0, SB, 1CH [data] |
0A09 | m(4009000F): SUB R0, R0, FH |
0A0A | m(E9000019): BNE 25 [0A24H] |
| ORS.Get(sym)n;o CheckInt(x)p;q SimpleExpression(y)r;s CheckSet(y)t;u ORG.In(x,v y)w ;x |
0A0B | n .FIXUP D |
0A0B | n(8D000004): LDR SB, MT, MOD0 [ORP] |
0A0C | n(40D8001C): ADD R0, SB, 1CH [data] |
0A0D | o .FIXUP P |
0A0D | o(F770A00C): BL MOD7 [ORS] PROC10 |
0A0E | p(80E00004): LDR R0, SP, 4H |
0A0F | p(81E00008): LDR R1, SP, 8H |
0A10 | q(F7FFF65C): BL -2468 [006DH] |
0A11 | r(40E8000C): ADD R0, SP, CH |
0A12 | r .FIXUP D |
0A12 | r(8D900007): LDR SB, MT, MOD9 [ORG] |
0A13 | r(41D80001): ADD R1, SB, VAR1 |
0A14 | s(F7FFFE2D): BL -467 [0842H] |
0A15 | t(40E8000C): ADD R0, SP, CH |
0A16 | t .FIXUP D |
0A16 | t(8D900004): LDR SB, MT, MOD9 [ORG] |
0A17 | t(41D80001): ADD R1, SB, VAR1 |
0A18 | u(F7FFF67E): BL -2434 [0097H] |
0A19 | v(80E00004): LDR R0, SP, 4H |
0A1A | v(81E00008): LDR R1, SP, 8H |
0A1B | w(42E8000C): ADD R2, SP, CH |
0A1C | w .FIXUP D |
0A1C | w(8D900006): LDR SB, MT, MOD9 [ORG] |
0A1D | w(43D80001): ADD R3, SB, VAR1 |
0A1E | x .FIXUP P |
0A1E | x(F791A011): BL MOD9 [ORG] PROC26 |
| x.type := ORB.boolType |
| ELSIFy symz = ORS.is THENa |
0A1F | y .FIXUP D |
0A1F | y(8D800003): LDR SB, MT, MOD8 [ORB] |
0A20 | y(80D00007): LDR R0, SB, VAR7 |
0A21 | y(81E00004): LDR R1, SP, 4H |
0A22 | y(A0100004): STR R0, R1, 4H |
0A23 | z(E7000014): B 20 [0A38H] |
0A24 | a .FIXUP D |
0A24 | a(8D000005): LDR SB, MT, MOD0 [ORP] |
0A25 | a(80D0001C): LDR R0, SB, 1CH [data] |
0A26 | a(40090010): SUB R0, R0, 10H |
0A27 | a(E9000010): BNE 16 [0A38H] |
| ORS.Get(sym)b;c qualident(obj)d;e TypeTest(x,f obj.typeg,h FALSE)i ;j |
0A28 | b .FIXUP D |
0A28 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
0A29 | b(40D8001C): ADD R0, SB, 1CH [data] |
0A2A | c .FIXUP P |
0A2A | c(F770A00C): BL MOD7 [ORS] PROC10 |
0A2B | d(40E80024): ADD R0, SP, 24H |
0A2C | e(F7FFF5E7): BL -2585 [0014H] |
0A2D | f(80E00004): LDR R0, SP, 4H |
0A2E | f(81E00008): LDR R1, SP, 8H |
0A2F | g(82E00024): LDR R2, SP, 24H |
0A30 | g(D1444F4C): BLEQ MT [trap=4, pos=17487] |
0A31 | h(82200010): LDR R2, R2, 10H |
0A32 | i(43000000): MOV R3, R0, 0H |
0A33 | j(F7FFF6F0): BL -2320 [0124H] |
| x.type := ORB.boolType |
| ENDk |
0A34 | k .FIXUP D |
0A34 | k(8D80000C): LDR SB, MT, MOD8 [ORB] |
0A35 | k(80D00007): LDR R0, SB, VAR7 |
0A36 | k(81E00004): LDR R1, SP, 4H |
0A37 | k(A0100004): STR R0, R1, 4H |
| ENDl expression0; |
0A38 | l(8FE00000): LDR LNK, SP, 0H |
0A39 | l(4EE80034): ADD SP, SP, 34H |
0A3A | l(C700000F): B LNK |
| |
| (* statements *) |
| |
| PROCEDURE StandProc(pno: LONGINT); |
| VAR nap, npar: LONGINT; (*nof actual/formal parameters*) |
| x, y, z: ORG.Item; |
| BEGINm Check(ORS.lparen,n "no (")o;p |
0A3B | m(4EE90058): SUB SP, SP, 58H |
0A3C | m(AFE00000): STR LNK, SP, 0H |
0A3D | m(A0E00004): STR R0, SP, 4H |
0A3E | n(4000001C): MOV R0, R0, 1CH |
0A3F | o .FIXUP D |
0A3F | o(8D00000B): LDR SB, MT, MOD0 [ORP] |
0A40 | o(41D80374): ADD R1, SB, 374H ["no ("] |
0A41 | o(42000005): MOV R2, R0, 5H |
0A42 | p(F7FFF5BD): BL -2627 [0000H] |
| npar := pno MOD 10;q pno := pno DIV 10;r expression(x)s;t nap := 1;u |
0A43 | q(80E00004): LDR R0, SP, 4H |
0A44 | q(400B000A): DIV R0, R0, AH |
0A45 | q(20000000): MOV' R0, R0, R0 |
0A46 | q(A0E0000C): STR R0, SP, CH |
0A47 | r(80E00004): LDR R0, SP, 4H |
0A48 | r(400B000A): DIV R0, R0, AH |
0A49 | r(A0E00004): STR R0, SP, 4H |
0A4A | s(40E80010): ADD R0, SP, 10H |
0A4B | s .FIXUP D |
0A4B | s(8D90000C): LDR SB, MT, MOD9 [ORG] |
0A4C | s(41D80001): ADD R1, SB, VAR1 |
0A4D | t .FIXUP D |
0A4D | t(8D000002): LDR SB, MT, MOD0 [ORP] |
0A4E | t(82D00034): LDR R2, SB, 34H [data] |
0A4F | t(D1457E5C): BLEQ MT [trap=5, pos=17790] |
0A50 | t(D7000002): BL R2 |
0A51 | u(40000001): MOV R0, R0, 1H |
0A52 | u(A0E00008): STR R0, SP, 8H |
| IF sym = ORS.comma THENv |
0A53 | v .FIXUP D |
0A53 | v(8D000006): LDR SB, MT, MOD0 [ORP] |
0A54 | v(80D0001C): LDR R0, SB, 1CH [data] |
0A55 | v(40090028): SUB R0, R0, 28H |
0A56 | v(E9000022): BNE 34 [0A79H] |
| ORS.Get(sym)w;x expression(y)y;z nap := 2;a z.type := ORB.noType;b |
0A57 | w .FIXUP D |
0A57 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
0A58 | w(40D8001C): ADD R0, SB, 1CH [data] |
0A59 | x .FIXUP P |
0A59 | x(F770A02F): BL MOD7 [ORS] PROC10 |
0A5A | y(40E80028): ADD R0, SP, 28H |
0A5B | y .FIXUP D |
0A5B | y(8D900004): LDR SB, MT, MOD9 [ORG] |
0A5C | y(41D80001): ADD R1, SB, VAR1 |
0A5D | z .FIXUP D |
0A5D | z(8D000002): LDR SB, MT, MOD0 [ORP] |
0A5E | z(82D00034): LDR R2, SB, 34H [data] |
0A5F | z(D145C75C): BLEQ MT [trap=5, pos=17863] |
0A60 | z(D7000002): BL R2 |
0A61 | a(40000002): MOV R0, R0, 2H |
0A62 | a(A0E00008): STR R0, SP, 8H |
0A63 | b .FIXUP D |
0A63 | b(8D800006): LDR SB, MT, MOD8 [ORB] |
0A64 | b(80D0000D): LDR R0, SB, VAR13 |
0A65 | b(A0E00044): STR R0, SP, 44H |
| WHILE sym = ORS.comma DOc ORS.Get(sym)d;e expression(z)f;g INC(nap) ENDh |
0A66 | c .FIXUP D |
0A66 | c(8D000003): LDR SB, MT, MOD0 [ORP] |
0A67 | c(80D0001C): LDR R0, SB, 1CH [data] |
0A68 | c(40090028): SUB R0, R0, 28H |
0A69 | c(E900000E): BNE 14 [0A78H] |
0A6A | d .FIXUP D |
0A6A | d(8D000004): LDR SB, MT, MOD0 [ORP] |
0A6B | d(40D8001C): ADD R0, SB, 1CH [data] |
0A6C | e .FIXUP P |
0A6C | e(F770A013): BL MOD7 [ORS] PROC10 |
0A6D | f(40E80040): ADD R0, SP, 40H |
0A6E | f .FIXUP D |
0A6E | f(8D900004): LDR SB, MT, MOD9 [ORG] |
0A6F | f(41D80001): ADD R1, SB, VAR1 |
0A70 | g .FIXUP D |
0A70 | g(8D000002): LDR SB, MT, MOD0 [ORP] |
0A71 | g(82D00034): LDR R2, SB, 34H [data] |
0A72 | g(D146235C): BLEQ MT [trap=5, pos=17955] |
0A73 | g(D7000002): BL R2 |
0A74 | h(80E00008): LDR R0, SP, 8H |
0A75 | h(40080001): ADD R0, R0, 1H |
0A76 | h(A0E00008): STR R0, SP, 8H |
0A77 | h(E7FFFFEE): B -18 [0A66H] |
| ELSE yi.type := ORB.noType |
0A78 | i(E7000003): B 3 [0A7CH] |
| ENDj ; |
0A79 | j .FIXUP D |
0A79 | j(8D800009): LDR SB, MT, MOD8 [ORB] |
0A7A | j(80D0000D): LDR R0, SB, VAR13 |
0A7B | j(A0E0002C): STR R0, SP, 2CH |
| Check(ORS.rparen,k "no )")l;m |
0A7C | k(4000002C): MOV R0, R0, 2CH |
0A7D | l .FIXUP D |
0A7D | l(8D000004): LDR SB, MT, MOD0 [ORP] |
0A7E | l(41D8037C): ADD R1, SB, 37CH ["no )"] |
0A7F | l(42000005): MOV R2, R0, 5H |
0A80 | m(F7FFF57F): BL -2689 [0000H] |
| IF (npar = nap)n OR (opno IN {0, 1})p THENq |
0A81 | n(80E0000C): LDR R0, SP, CH |
0A82 | n(81E00008): LDR R1, SP, 8H |
0A83 | n(00090001): SUB R0, R0, R1 |
0A84 | o(E1000005): BEQ 5 [0A8AH] |
0A85 | p(40000003): MOV R0, R0, 3H |
0A86 | p(81E00004): LDR R1, SP, 4H |
0A87 | p(41180001): ADD R1, R1, 1H |
0A88 | p(00030001): ROR R0, R0, R1 |
0A89 | q(E80000FA): BPL 250 [0B84H] |
| IF pno IN {0, 1} THENr (*INC, DEC*) |
0A8A | r(40000003): MOV R0, R0, 3H |
0A8B | r(81E00004): LDR R1, SP, 4H |
0A8C | r(41180001): ADD R1, R1, 1H |
0A8D | r(00030001): ROR R0, R0, R1 |
0A8E | r(E800001A): BPL 26 [0AA9H] |
| CheckInt(x)s;t CheckReadOnly(x)u;v |
0A8F | s(40E80010): ADD R0, SP, 10H |
0A90 | s .FIXUP D |
0A90 | s(8D900013): LDR SB, MT, MOD9 [ORG] |
0A91 | s(41D80001): ADD R1, SB, VAR1 |
0A92 | t(F7FFF5DA): BL -2598 [006DH] |
0A93 | u(40E80010): ADD R0, SP, 10H |
0A94 | u .FIXUP D |
0A94 | u(8D900004): LDR SB, MT, MOD9 [ORG] |
0A95 | u(41D80001): ADD R1, SB, VAR1 |
0A96 | v(F7FFF64D): BL -2483 [00E4H] |
| IF y.type # ORB.noType THENw CheckInt(y)x ENDy ; |
0A97 | w(80E0002C): LDR R0, SP, 2CH |
0A98 | w .FIXUP D |
0A98 | w(8D800004): LDR SB, MT, MOD8 [ORB] |
0A99 | w(81D0000D): LDR R1, SB, VAR13 |
0A9A | w(00090001): SUB R0, R0, R1 |
0A9B | w(E1000004): BEQ 4 [0AA0H] |
0A9C | x(40E80028): ADD R0, SP, 28H |
0A9D | x .FIXUP D |
0A9D | x(8D900005): LDR SB, MT, MOD9 [ORG] |
0A9E | x(41D80001): ADD R1, SB, VAR1 |
0A9F | y(F7FFF5CD): BL -2611 [006DH] |
| ORG.Increment(pno,z x,a y)b |
0AA0 | z(80E00004): LDR R0, SP, 4H |
0AA1 | a(41E80010): ADD R1, SP, 10H |
0AA2 | a .FIXUP D |
0AA2 | a(8D900005): LDR SB, MT, MOD9 [ORG] |
0AA3 | a(42D80001): ADD R2, SB, VAR1 |
0AA4 | b(43E80028): ADD R3, SP, 28H |
0AA5 | b .FIXUP D |
0AA5 | b(8D900003): LDR SB, MT, MOD9 [ORG] |
0AA6 | b(44D80001): ADD R4, SB, VAR1 |
| ELSIFc pnod IN {2, 3} THENe (*INCL, EXCL*) |
0AA7 | c .FIXUP P |
0AA7 | c(F793403B): BL MOD9 [ORG] PROC52 |
0AA8 | d(E70000DA): B 218 [0B83H] |
0AA9 | e(4000000C): MOV R0, R0, CH |
0AAA | e(81E00004): LDR R1, SP, 4H |
0AAB | e(41180001): ADD R1, R1, 1H |
0AAC | e(00030001): ROR R0, R0, R1 |
0AAD | e(E8000016): BPL 22 [0AC4H] |
| CheckSet(x)f;g CheckReadOnly(x)h;i CheckInt(y)j;k ORG.Include(pno-2,l x,m y)n |
0AAE | f(40E80010): ADD R0, SP, 10H |
0AAF | f .FIXUP D |
0AAF | f(8D90000A): LDR SB, MT, MOD9 [ORG] |
0AB0 | f(41D80001): ADD R1, SB, VAR1 |
0AB1 | g(F7FFF5E5): BL -2587 [0097H] |
0AB2 | h(40E80010): ADD R0, SP, 10H |
0AB3 | h .FIXUP D |
0AB3 | h(8D900004): LDR SB, MT, MOD9 [ORG] |
0AB4 | h(41D80001): ADD R1, SB, VAR1 |
0AB5 | i(F7FFF62E): BL -2514 [00E4H] |
0AB6 | j(40E80028): ADD R0, SP, 28H |
0AB7 | j .FIXUP D |
0AB7 | j(8D900004): LDR SB, MT, MOD9 [ORG] |
0AB8 | j(41D80001): ADD R1, SB, VAR1 |
0AB9 | k(F7FFF5B3): BL -2637 [006DH] |
0ABA | l(80E00004): LDR R0, SP, 4H |
0ABB | l(40090002): SUB R0, R0, 2H |
0ABC | m(41E80010): ADD R1, SP, 10H |
0ABD | m .FIXUP D |
0ABD | m(8D900006): LDR SB, MT, MOD9 [ORG] |
0ABE | m(42D80001): ADD R2, SB, VAR1 |
0ABF | n(43E80028): ADD R3, SP, 28H |
0AC0 | n .FIXUP D |
0AC0 | n(8D900003): LDR SB, MT, MOD9 [ORG] |
0AC1 | n(44D80001): ADD R4, SB, VAR1 |
| ELSIFo pnop = 4 THENq CheckBool(x)r;s ORG.Assert(x)t |
0AC2 | o .FIXUP P |
0AC2 | o(F793501B): BL MOD9 [ORG] PROC53 |
0AC3 | p(E70000BF): B 191 [0B83H] |
0AC4 | q(80E00004): LDR R0, SP, 4H |
0AC5 | q(40090004): SUB R0, R0, 4H |
0AC6 | q(E9000009): BNE 9 [0AD0H] |
0AC7 | r(40E80010): ADD R0, SP, 10H |
0AC8 | r .FIXUP D |
0AC8 | r(8D900008): LDR SB, MT, MOD9 [ORG] |
0AC9 | r(41D80001): ADD R1, SB, VAR1 |
0ACA | s(F7FFF58D): BL -2675 [0058H] |
0ACB | t(40E80010): ADD R0, SP, 10H |
0ACC | t .FIXUP D |
0ACC | t(8D900004): LDR SB, MT, MOD9 [ORG] |
0ACD | t(41D80001): ADD R1, SB, VAR1 |
| ELSIFu pnov = 5 THENw(*NEW*) CheckReadOnly(x)x;y |
0ACE | u .FIXUP P |
0ACE | u(F793600C): BL MOD9 [ORG] PROC54 |
0ACF | v(E70000B3): B 179 [0B83H] |
0AD0 | w(80E00004): LDR R0, SP, 4H |
0AD1 | w(40090005): SUB R0, R0, 5H |
0AD2 | w(E900001A): BNE 26 [0AEDH] |
0AD3 | x(40E80010): ADD R0, SP, 10H |
0AD4 | x .FIXUP D |
0AD4 | x(8D900008): LDR SB, MT, MOD9 [ORG] |
0AD5 | x(41D80001): ADD R1, SB, VAR1 |
0AD6 | y(F7FFF60D): BL -2547 [00E4H] |
| IF (x.type.formz = ORB.Pointer)a & (bx.type.basec.formd = ORB.Record)e THENf ORG.New(x)g |
0AD7 | z(80E00014): LDR R0, SP, 14H |
0AD8 | z(D148464C): BLEQ MT [trap=4, pos=18502] |
0AD9 | a(80000000): LDR R0, R0, 0H |
0ADA | a(40090007): SUB R0, R0, 7H |
0ADB | b(E900000C): BNE 12 [0AE8H] |
0ADC | c(80E00014): LDR R0, SP, 14H |
0ADD | c(D148644C): BLEQ MT [trap=4, pos=18532] |
0ADE | d(8000001C): LDR R0, R0, 1CH |
0ADF | d(D148694C): BLEQ MT [trap=4, pos=18537] |
0AE0 | e(80000000): LDR R0, R0, 0H |
0AE1 | e(4009000D): SUB R0, R0, DH |
0AE2 | f(E9000005): BNE 5 [0AE8H] |
0AE3 | g(40E80010): ADD R0, SP, 10H |
0AE4 | g .FIXUP D |
0AE4 | g(8D900010): LDR SB, MT, MOD9 [ORG] |
0AE5 | g(41D80001): ADD R1, SB, VAR1 |
| ELSEh ORSi.Mark("not a pointer to record")j |
0AE6 | h .FIXUP P |
0AE6 | h(F7937018): BL MOD9 [ORG] PROC55 |
0AE7 | i(E7000004): B 4 [0AECH] |
0AE8 | j .FIXUP D |
0AE8 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
0AE9 | j(40D80384): ADD R0, SB, 384H ["not a pointer to record"] |
0AEA | j(41000018): MOV R1, R0, 18H |
| ENDk |
0AEB | k .FIXUP P |
0AEB | k(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF pnol = 6 THENm CheckReal(x)n;o CheckInt(y)p;q CheckReadOnly(x)r;s ORG.Pack(x,t y)u |
0AEC | l(E7000096): B 150 [0B83H] |
0AED | m(80E00004): LDR R0, SP, 4H |
0AEE | m(40090006): SUB R0, R0, 6H |
0AEF | m(E9000014): BNE 20 [0B04H] |
0AF0 | n(40E80010): ADD R0, SP, 10H |
0AF1 | n .FIXUP D |
0AF1 | n(8D900009): LDR SB, MT, MOD9 [ORG] |
0AF2 | n(41D80001): ADD R1, SB, VAR1 |
0AF3 | o(F7FFF58E): BL -2674 [0082H] |
0AF4 | p(40E80028): ADD R0, SP, 28H |
0AF5 | p .FIXUP D |
0AF5 | p(8D900004): LDR SB, MT, MOD9 [ORG] |
0AF6 | p(41D80001): ADD R1, SB, VAR1 |
0AF7 | q(F7FFF575): BL -2699 [006DH] |
0AF8 | r(40E80010): ADD R0, SP, 10H |
0AF9 | r .FIXUP D |
0AF9 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
0AFA | r(41D80001): ADD R1, SB, VAR1 |
0AFB | s(F7FFF5E8): BL -2584 [00E4H] |
0AFC | t(40E80010): ADD R0, SP, 10H |
0AFD | t .FIXUP D |
0AFD | t(8D900004): LDR SB, MT, MOD9 [ORG] |
0AFE | t(41D80001): ADD R1, SB, VAR1 |
0AFF | u(42E80028): ADD R2, SP, 28H |
0B00 | u .FIXUP D |
0B00 | u(8D900003): LDR SB, MT, MOD9 [ORG] |
0B01 | u(43D80001): ADD R3, SB, VAR1 |
| ELSIFv pnow = 7 THENx CheckReal(x)y;z CheckInt(y)a;b CheckReadOnly(x)c;d ORG.Unpk(x,e y)f |
0B02 | v .FIXUP P |
0B02 | v(F7938017): BL MOD9 [ORG] PROC56 |
0B03 | w(E700007F): B 127 [0B83H] |
0B04 | x(80E00004): LDR R0, SP, 4H |
0B05 | x(40090007): SUB R0, R0, 7H |
0B06 | x(E9000014): BNE 20 [0B1BH] |
0B07 | y(40E80010): ADD R0, SP, 10H |
0B08 | y .FIXUP D |
0B08 | y(8D900008): LDR SB, MT, MOD9 [ORG] |
0B09 | y(41D80001): ADD R1, SB, VAR1 |
0B0A | z(F7FFF577): BL -2697 [0082H] |
0B0B | a(40E80028): ADD R0, SP, 28H |
0B0C | a .FIXUP D |
0B0C | a(8D900004): LDR SB, MT, MOD9 [ORG] |
0B0D | a(41D80001): ADD R1, SB, VAR1 |
0B0E | b(F7FFF55E): BL -2722 [006DH] |
0B0F | c(40E80010): ADD R0, SP, 10H |
0B10 | c .FIXUP D |
0B10 | c(8D900004): LDR SB, MT, MOD9 [ORG] |
0B11 | c(41D80001): ADD R1, SB, VAR1 |
0B12 | d(F7FFF5D1): BL -2607 [00E4H] |
0B13 | e(40E80010): ADD R0, SP, 10H |
0B14 | e .FIXUP D |
0B14 | e(8D900004): LDR SB, MT, MOD9 [ORG] |
0B15 | e(41D80001): ADD R1, SB, VAR1 |
0B16 | f(42E80028): ADD R2, SP, 28H |
0B17 | f .FIXUP D |
0B17 | f(8D900003): LDR SB, MT, MOD9 [ORG] |
0B18 | f(43D80001): ADD R3, SB, VAR1 |
| ELSIFg pnoh = 8 THENi |
0B19 | g .FIXUP P |
0B19 | g(F7939017): BL MOD9 [ORG] PROC57 |
0B1A | h(E7000068): B 104 [0B83H] |
0B1B | i(80E00004): LDR R0, SP, 4H |
0B1C | i(40090008): SUB R0, R0, 8H |
0B1D | i(E900000F): BNE 15 [0B2DH] |
| IF x.type.formj <= ORB.Set THENk ORG.Led(x)l ELSEm ORSn.Mark("bad type")o ENDp |
0B1E | j(80E00014): LDR R0, SP, 14H |
0B1F | j(D149A04C): BLEQ MT [trap=4, pos=18848] |
0B20 | k(80000000): LDR R0, R0, 0H |
0B21 | k(40090006): SUB R0, R0, 6H |
0B22 | k(EE000005): BGT 5 [0B28H] |
0B23 | l(40E80010): ADD R0, SP, 10H |
0B24 | l .FIXUP D |
0B24 | l(8D90000D): LDR SB, MT, MOD9 [ORG] |
0B25 | l(41D80001): ADD R1, SB, VAR1 |
0B26 | m .FIXUP P |
0B26 | m(F793A00D): BL MOD9 [ORG] PROC58 |
0B27 | n(E7000004): B 4 [0B2CH] |
0B28 | o .FIXUP D |
0B28 | o(8D000004): LDR SB, MT, MOD0 [ORP] |
0B29 | o(40D8039C): ADD R0, SB, 39CH ["bad type"] |
0B2A | o(41000009): MOV R1, R0, 9H |
0B2B | p .FIXUP P |
0B2B | p(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF pnoq = 10 THENr CheckInt(x)s;t ORG.Get(x,u y)v |
0B2C | q(E7000056): B 86 [0B83H] |
0B2D | r(80E00004): LDR R0, SP, 4H |
0B2E | r(4009000A): SUB R0, R0, AH |
0B2F | r(E900000C): BNE 12 [0B3CH] |
0B30 | s(40E80010): ADD R0, SP, 10H |
0B31 | s .FIXUP D |
0B31 | s(8D900009): LDR SB, MT, MOD9 [ORG] |
0B32 | s(41D80001): ADD R1, SB, VAR1 |
0B33 | t(F7FFF539): BL -2759 [006DH] |
0B34 | u(40E80010): ADD R0, SP, 10H |
0B35 | u .FIXUP D |
0B35 | u(8D900004): LDR SB, MT, MOD9 [ORG] |
0B36 | u(41D80001): ADD R1, SB, VAR1 |
0B37 | v(42E80028): ADD R2, SP, 28H |
0B38 | v .FIXUP D |
0B38 | v(8D900003): LDR SB, MT, MOD9 [ORG] |
0B39 | v(43D80001): ADD R3, SB, VAR1 |
| ELSIFw pnox = 11 THENy CheckInt(x)z;a ORG.Put(x,b y)c |
0B3A | w .FIXUP P |
0B3A | w(F793B00F): BL MOD9 [ORG] PROC59 |
0B3B | x(E7000047): B 71 [0B83H] |
0B3C | y(80E00004): LDR R0, SP, 4H |
0B3D | y(4009000B): SUB R0, R0, BH |
0B3E | y(E900000C): BNE 12 [0B4BH] |
0B3F | z(40E80010): ADD R0, SP, 10H |
0B40 | z .FIXUP D |
0B40 | z(8D900008): LDR SB, MT, MOD9 [ORG] |
0B41 | z(41D80001): ADD R1, SB, VAR1 |
0B42 | a(F7FFF52A): BL -2774 [006DH] |
0B43 | b(40E80010): ADD R0, SP, 10H |
0B44 | b .FIXUP D |
0B44 | b(8D900004): LDR SB, MT, MOD9 [ORG] |
0B45 | b(41D80001): ADD R1, SB, VAR1 |
0B46 | c(42E80028): ADD R2, SP, 28H |
0B47 | c .FIXUP D |
0B47 | c(8D900003): LDR SB, MT, MOD9 [ORG] |
0B48 | c(43D80001): ADD R3, SB, VAR1 |
| ELSIFd pnoe = 12 THENf CheckInt(x)g;h CheckInt(y)i;j CheckInt(z)k;l ORG.Copy(x,m y,n z)o |
0B49 | d .FIXUP P |
0B49 | d(F793C00F): BL MOD9 [ORG] PROC60 |
0B4A | e(E7000038): B 56 [0B83H] |
0B4B | f(80E00004): LDR R0, SP, 4H |
0B4C | f(4009000C): SUB R0, R0, CH |
0B4D | f(E9000017): BNE 23 [0B65H] |
0B4E | g(40E80010): ADD R0, SP, 10H |
0B4F | g .FIXUP D |
0B4F | g(8D900008): LDR SB, MT, MOD9 [ORG] |
0B50 | g(41D80001): ADD R1, SB, VAR1 |
0B51 | h(F7FFF51B): BL -2789 [006DH] |
0B52 | i(40E80028): ADD R0, SP, 28H |
0B53 | i .FIXUP D |
0B53 | i(8D900004): LDR SB, MT, MOD9 [ORG] |
0B54 | i(41D80001): ADD R1, SB, VAR1 |
0B55 | j(F7FFF517): BL -2793 [006DH] |
0B56 | k(40E80040): ADD R0, SP, 40H |
0B57 | k .FIXUP D |
0B57 | k(8D900004): LDR SB, MT, MOD9 [ORG] |
0B58 | k(41D80001): ADD R1, SB, VAR1 |
0B59 | l(F7FFF513): BL -2797 [006DH] |
0B5A | m(40E80010): ADD R0, SP, 10H |
0B5B | m .FIXUP D |
0B5B | m(8D900004): LDR SB, MT, MOD9 [ORG] |
0B5C | m(41D80001): ADD R1, SB, VAR1 |
0B5D | n(42E80028): ADD R2, SP, 28H |
0B5E | n .FIXUP D |
0B5E | n(8D900003): LDR SB, MT, MOD9 [ORG] |
0B5F | n(43D80001): ADD R3, SB, VAR1 |
0B60 | o(44E80040): ADD R4, SP, 40H |
0B61 | o .FIXUP D |
0B61 | o(8D900003): LDR SB, MT, MOD9 [ORG] |
0B62 | o(45D80001): ADD R5, SB, VAR1 |
| ELSIFp pnoq = 13 THENr CheckConst(x)s;t CheckInt(x)u;v ORG.LDPSR(x)w |
0B63 | p .FIXUP P |
0B63 | p(F793D01A): BL MOD9 [ORG] PROC61 |
0B64 | q(E700001E): B 30 [0B83H] |
0B65 | r(80E00004): LDR R0, SP, 4H |
0B66 | r(4009000D): SUB R0, R0, DH |
0B67 | r(E900000D): BNE 13 [0B75H] |
0B68 | s(40E80010): ADD R0, SP, 10H |
0B69 | s .FIXUP D |
0B69 | s(8D900008): LDR SB, MT, MOD9 [ORG] |
0B6A | s(41D80001): ADD R1, SB, VAR1 |
0B6B | t(F7FFF566): BL -2714 [00D2H] |
0B6C | u(40E80010): ADD R0, SP, 10H |
0B6D | u .FIXUP D |
0B6D | u(8D900004): LDR SB, MT, MOD9 [ORG] |
0B6E | u(41D80001): ADD R1, SB, VAR1 |
0B6F | v(F7FFF4FD): BL -2819 [006DH] |
0B70 | w(40E80010): ADD R0, SP, 10H |
0B71 | w .FIXUP D |
0B71 | w(8D900004): LDR SB, MT, MOD9 [ORG] |
0B72 | w(41D80001): ADD R1, SB, VAR1 |
| ELSIFx pnoy = 14 THENz CheckInt(x)a;b ORG.LDREG(x,c y)d |
0B73 | x .FIXUP P |
0B73 | x(F793E010): BL MOD9 [ORG] PROC62 |
0B74 | y(E700000E): B 14 [0B83H] |
0B75 | z(80E00004): LDR R0, SP, 4H |
0B76 | z(4009000E): SUB R0, R0, EH |
0B77 | z(E900000B): BNE 11 [0B83H] |
0B78 | a(40E80010): ADD R0, SP, 10H |
0B79 | a .FIXUP D |
0B79 | a(8D900008): LDR SB, MT, MOD9 [ORG] |
0B7A | a(41D80001): ADD R1, SB, VAR1 |
0B7B | b(F7FFF4F1): BL -2831 [006DH] |
0B7C | c(40E80010): ADD R0, SP, 10H |
0B7D | c .FIXUP D |
0B7D | c(8D900004): LDR SB, MT, MOD9 [ORG] |
0B7E | c(41D80001): ADD R1, SB, VAR1 |
0B7F | d(42E80028): ADD R2, SP, 28H |
0B80 | d .FIXUP D |
0B80 | d(8D900003): LDR SB, MT, MOD9 [ORG] |
0B81 | d(43D80001): ADD R3, SB, VAR1 |
| ENDe |
0B82 | e .FIXUP P |
0B82 | e(F793F00F): BL MOD9 [ORG] PROC63 |
| ELSE ORSf.Mark("wrong nof parameters")g |
0B83 | f(E7000004): B 4 [0B88H] |
0B84 | g .FIXUP D |
0B84 | g(8D000004): LDR SB, MT, MOD0 [ORP] |
0B85 | g(40D803A8): ADD R0, SB, 3A8H ["wrong nof parameters"] |
0B86 | g(41000015): MOV R1, R0, 15H |
| ENDh |
0B87 | h .FIXUP P |
0B87 | h(F7709005): BL MOD7 [ORS] PROC9 |
| ENDi StandProc; |
0B88 | i(8FE00000): LDR LNK, SP, 0H |
0B89 | i(4EE80058): ADD SP, SP, 58H |
0B8A | i(C700000F): B LNK |
| |
| PROCEDURE StatSequence; |
| VAR obj: ORB.Object; |
| orgtype: ORB.Type; (*original type of case var*) |
| x, y, z, w: ORG.Item; |
| L0, L1, rx: LONGINT; |
| |
| PROCEDUREj TypeCase(obj: ORB.Object; VAR x: ORG.Item); |
0B8B | j(E700004C): B 76 [0BD8H] |
| VAR typobj: ORB.Object; |
| BEGINk |
0B8C | k(4EE90014): SUB SP, SP, 14H |
0B8D | k(AFE00000): STR LNK, SP, 0H |
0B8E | k(A0E00004): STR R0, SP, 4H |
0B8F | k(A1E00008): STR R1, SP, 8H |
0B90 | k(A2E0000C): STR R2, SP, CH |
| IF sym = ORS.ident THENl |
0B91 | l .FIXUP D |
0B91 | l(8D00000D): LDR SB, MT, MOD0 [ORP] |
0B92 | l(80D0001C): LDR R0, SB, 1CH [data] |
0B93 | l(4009001F): SUB R0, R0, 1FH |
0B94 | l(E9000028): BNE 40 [0BBDH] |
| qualident(typobj)m;n ORG.MakeItem(x,o obj,p level)q;r |
0B95 | m(40E80010): ADD R0, SP, 10H |
0B96 | n(F7FFF47D): BL -2947 [0014H] |
0B97 | o(80E00008): LDR R0, SP, 8H |
0B98 | o(81E0000C): LDR R1, SP, CH |
0B99 | p(82E00004): LDR R2, SP, 4H |
0B9A | q .FIXUP D |
0B9A | q(8D000009): LDR SB, MT, MOD0 [ORP] |
0B9B | q(83D00024): LDR R3, SB, 24H [data] |
0B9C | r .FIXUP P |
0B9C | r(F7908015): BL MOD9 [ORG] PROC8 |
| IF typobj.classs # ORB.Typ THENt ORS.Mark("not a type")u ENDv ; |
0B9D | s(80E00010): LDR R0, SP, 10H |
0B9E | s(D14CD04C): BLEQ MT [trap=4, pos=19664] |
0B9F | t(90000000): LDR R0, R0, 0H |
0BA0 | t(40090005): SUB R0, R0, 5H |
0BA1 | t(E1000004): BEQ 4 [0BA6H] |
0BA2 | u .FIXUP D |
0BA2 | u(8D000008): LDR SB, MT, MOD0 [ORP] |
0BA3 | u(40D803C0): ADD R0, SB, 3C0H ["not a type"] |
0BA4 | u(4100000B): MOV R1, R0, BH |
0BA5 | v .FIXUP P |
0BA5 | v(F7709009): BL MOD7 [ORS] PROC9 |
| TypeTest(x,w typobj.typex,y FALSE)z;a obj.typeb := typobj.typec;d |
0BA6 | w(80E00008): LDR R0, SP, 8H |
0BA7 | w(81E0000C): LDR R1, SP, CH |
0BA8 | x(82E00010): LDR R2, SP, 10H |
0BA9 | x(D14D1C4C): BLEQ MT [trap=4, pos=19740] |
0BAA | y(82200010): LDR R2, R2, 10H |
0BAB | z(43000000): MOV R3, R0, 0H |
0BAC | a(F7FFF577): BL -2697 [0124H] |
0BAD | b(80E00004): LDR R0, SP, 4H |
0BAE | b(D14D2E4C): BLEQ MT [trap=4, pos=19758] |
0BAF | c(81E00010): LDR R1, SP, 10H |
0BB0 | c(D14D3D4C): BLEQ MT [trap=4, pos=19773] |
0BB1 | d(81100010): LDR R1, R1, 10H |
0BB2 | d(A1000010): STR R1, R0, 10H |
| ORG.CFJump(x)e;f Check(ORS.colon,g ": expected")h;i StatSequence |
0BB3 | e(80E00008): LDR R0, SP, 8H |
0BB4 | e(81E0000C): LDR R1, SP, CH |
0BB5 | f .FIXUP P |
0BB5 | f(F792C010): BL MOD9 [ORG] PROC44 |
0BB6 | g(40000029): MOV R0, R0, 29H |
0BB7 | h .FIXUP D |
0BB7 | h(8D000015): LDR SB, MT, MOD0 [ORP] |
0BB8 | h(41D803CC): ADD R1, SB, 3CCH [": expected"] |
0BB9 | h(4200000B): MOV R2, R0, BH |
0BBA | i(F7FFF445): BL -3003 [0000H] |
| ELSEj ORGk.CFJump(x)l;m ORS.Mark("type id expected")n |
0BBB | j(F7FFFFCF): BL -49 [0B8BH] |
0BBC | k(E7000007): B 7 [0BC4H] |
0BBD | l(80E00008): LDR R0, SP, 8H |
0BBE | l(81E0000C): LDR R1, SP, CH |
0BBF | m .FIXUP P |
0BBF | m(F792C00A): BL MOD9 [ORG] PROC44 |
0BC0 | n .FIXUP D |
0BC0 | n(8D000009): LDR SB, MT, MOD0 [ORP] |
0BC1 | n(40D803D8): ADD R0, SB, 3D8H ["type id expected"] |
0BC2 | n(41000011): MOV R1, R0, 11H |
| ENDo |
0BC3 | o .FIXUP P |
0BC3 | o(F7709004): BL MOD7 [ORS] PROC9 |
| ENDp TypeCase; |
0BC4 | p(8FE00000): LDR LNK, SP, 0H |
0BC5 | p(4EE80014): ADD SP, SP, 14H |
0BC6 | p(C700000F): B LNK |
| |
| PROCEDURE SkipCase; |
| BEGINq |
0BC7 | q(4EE90004): SUB SP, SP, 4H |
0BC8 | q(AFE00000): STR LNK, SP, 0H |
| WHILE sym # ORS.colon DOr ORS.Get(sym)s ENDt ; |
0BC9 | r .FIXUP D |
0BC9 | r(8D000009): LDR SB, MT, MOD0 [ORP] |
0BCA | r(80D0001C): LDR R0, SB, 1CH [data] |
0BCB | r(40090029): SUB R0, R0, 29H |
0BCC | r(E1000004): BEQ 4 [0BD1H] |
0BCD | s .FIXUP D |
0BCD | s(8D000004): LDR SB, MT, MOD0 [ORP] |
0BCE | s(40D8001C): ADD R0, SB, 1CH [data] |
0BCF | t .FIXUP P |
0BCF | t(F770A00C): BL MOD7 [ORS] PROC10 |
0BD0 | t(E7FFFFF8): B -8 [0BC9H] |
| ORS.Get(sym)u;v StatSequence |
0BD1 | u .FIXUP D |
0BD1 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
0BD2 | u(40D8001C): ADD R0, SB, 1CH [data] |
0BD3 | v .FIXUP P |
0BD3 | v(F770A004): BL MOD7 [ORS] PROC10 |
| ENDw SkipCase; |
0BD4 | w(F7FFFFB6): BL -74 [0B8BH] |
0BD5 | w(8FE00000): LDR LNK, SP, 0H |
0BD6 | w(4EE80004): ADD SP, SP, 4H |
0BD7 | w(C700000F): B LNK |
| |
| BEGINx (* StatSequence *) |
0BD8 | x(4EE90078): SUB SP, SP, 78H |
0BD9 | x(AFE00000): STR LNK, SP, 0H |
| REPEAT (*sync*) obj := NIL;y |
0BDA | y(40000000): MOV R0, R0, 0H |
0BDB | y(A0E00004): STR R0, SP, 4H |
| IF ~((sym = ORS.ident)z OR (asym >= ORS.if)b & (csym <= ORS.for)d OR (esym >= ORS.semicolon)f) THENg |
0BDC | z .FIXUP D |
0BDC | z(8D00000B): LDR SB, MT, MOD0 [ORP] |
0BDD | z(80D0001C): LDR R0, SB, 1CH [data] |
0BDE | z(4009001F): SUB R0, R0, 1FH |
0BDF | a(E100001B): BEQ 27 [0BFBH] |
0BE0 | b .FIXUP D |
0BE0 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
0BE1 | b(80D0001C): LDR R0, SB, 1CH [data] |
0BE2 | b(40090020): SUB R0, R0, 20H |
0BE3 | c(E5000004): BLT 4 [0BE8H] |
0BE4 | d .FIXUP D |
0BE4 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
0BE5 | d(80D0001C): LDR R0, SB, 1CH [data] |
0BE6 | d(40090025): SUB R0, R0, 25H |
0BE7 | e(E6000013): BLE 19 [0BFBH] |
0BE8 | f .FIXUP D |
0BE8 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
0BE9 | f(80D0001C): LDR R0, SB, 1CH [data] |
0BEA | f(40090034): SUB R0, R0, 34H |
0BEB | g(ED00000F): BGE 15 [0BFBH] |
| ORS.Mark("statement expected")h;i |
0BEC | h .FIXUP D |
0BEC | h(8D000004): LDR SB, MT, MOD0 [ORP] |
0BED | h(40D803EC): ADD R0, SB, 3ECH ["statement expected"] |
0BEE | h(41000013): MOV R1, R0, 13H |
0BEF | i .FIXUP P |
0BEF | i(F770901C): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)j UNTILk (sym = ORS.ident)l OR (msym >= ORS.if)n |
0BF0 | j .FIXUP D |
0BF0 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
0BF1 | j(40D8001C): ADD R0, SB, 1CH [data] |
0BF2 | k .FIXUP P |
0BF2 | k(F770A003): BL MOD7 [ORS] PROC10 |
0BF3 | l .FIXUP D |
0BF3 | l(8D000003): LDR SB, MT, MOD0 [ORP] |
0BF4 | l(80D0001C): LDR R0, SB, 1CH [data] |
0BF5 | l(4009001F): SUB R0, R0, 1FH |
0BF6 | m(E1000004): BEQ 4 [0BFBH] |
0BF7 | n .FIXUP D |
0BF7 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
0BF8 | n(80D0001C): LDR R0, SB, 1CH [data] |
0BF9 | n(40090020): SUB R0, R0, 20H |
| ENDo ; |
0BFA | o(E5FFFFF5): BLT -11 [0BF0H] |
| IF sym = ORS.ident THENp |
0BFB | p .FIXUP D |
0BFB | p(8D000004): LDR SB, MT, MOD0 [ORP] |
0BFC | p(80D0001C): LDR R0, SB, 1CH [data] |
0BFD | p(4009001F): SUB R0, R0, 1FH |
0BFE | p(E900011F): BNE 287 [0D1EH] |
| qualident(obj)q;r ORG.MakeItem(x,s obj,t level)u;v |
0BFF | q(40E80004): ADD R0, SP, 4H |
0C00 | r(F7FFF413): BL -3053 [0014H] |
0C01 | s(40E8000C): ADD R0, SP, CH |
0C02 | s .FIXUP D |
0C02 | s(8D900007): LDR SB, MT, MOD9 [ORG] |
0C03 | s(41D80001): ADD R1, SB, VAR1 |
0C04 | t(82E00004): LDR R2, SP, 4H |
0C05 | u .FIXUP D |
0C05 | u(8D000003): LDR SB, MT, MOD0 [ORP] |
0C06 | u(83D00024): LDR R3, SB, 24H [data] |
0C07 | v .FIXUP P |
0C07 | v(F7908015): BL MOD9 [ORG] PROC8 |
| IF x.mode = ORB.SProc THENw StandProc(obj.valx)y |
0C08 | w(80E0000C): LDR R0, SP, CH |
0C09 | w(40090006): SUB R0, R0, 6H |
0C0A | w(E9000005): BNE 5 [0C10H] |
0C0B | x(80E00004): LDR R0, SP, 4H |
0C0C | x(D150014C): BLEQ MT [trap=4, pos=20481] |
0C0D | y(80000034): LDR R0, R0, 34H |
| ELSEz selectora(x)b;c |
0C0E | z(F7FFFE2C): BL -468 [0A3BH] |
0C0F | a(E700010D): B 269 [0D1DH] |
0C10 | b(40E8000C): ADD R0, SP, CH |
0C11 | b .FIXUP D |
0C11 | b(8D90000C): LDR SB, MT, MOD9 [ORG] |
0C12 | b(41D80001): ADD R1, SB, VAR1 |
0C13 | c(F7FFF591): BL -2671 [01A5H] |
| IF sym = ORS.becomes THENd (*assignment*) |
0C14 | d .FIXUP D |
0C14 | d(8D000003): LDR SB, MT, MOD0 [ORP] |
0C15 | d(80D0001C): LDR R0, SB, 1CH [data] |
0C16 | d(4009002A): SUB R0, R0, 2AH |
0C17 | d(E9000096): BNE 150 [0CAEH] |
| ORS.Get(sym)e;f CheckReadOnly(x)g;h expression(y)i;j |
0C18 | e .FIXUP D |
0C18 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
0C19 | e(40D8001C): ADD R0, SB, 1CH [data] |
0C1A | f .FIXUP P |
0C1A | f(F770A013): BL MOD7 [ORS] PROC10 |
0C1B | g(40E8000C): ADD R0, SP, CH |
0C1C | g .FIXUP D |
0C1C | g(8D900004): LDR SB, MT, MOD9 [ORG] |
0C1D | g(41D80001): ADD R1, SB, VAR1 |
0C1E | h(F7FFF4C5): BL -2875 [00E4H] |
0C1F | i(40E80024): ADD R0, SP, 24H |
0C20 | i .FIXUP D |
0C20 | i(8D900004): LDR SB, MT, MOD9 [ORG] |
0C21 | i(41D80001): ADD R1, SB, VAR1 |
0C22 | j .FIXUP D |
0C22 | j(8D000002): LDR SB, MT, MOD0 [ORP] |
0C23 | j(82D00034): LDR R2, SB, 34H [data] |
0C24 | j(D1508A5C): BLEQ MT [trap=5, pos=20618] |
0C25 | j(D7000002): BL R2 |
| IF CompTypes(x.type,k y.type,l FALSE)m THENn |
0C26 | k(80E00010): LDR R0, SP, 10H |
0C27 | l(81E00028): LDR R1, SP, 28H |
0C28 | m(42000000): MOV R2, R0, 0H |
0C29 | n(F7FFF6E6): BL -2330 [0310H] |
0C2A | n(40090000): SUB R0, R0, 0H |
0C2B | n(E100001A): BEQ 26 [0C46H] |
| IF (x.type.formo <= ORB.Pointer)p OR (qx.type.formr = ORB.Proc)s THENt ORG.Store(x,u y)v |
0C2C | o(80E00010): LDR R0, SP, 10H |
0C2D | o(D150DD4C): BLEQ MT [trap=4, pos=20701] |
0C2E | p(80000000): LDR R0, R0, 0H |
0C2F | p(40090007): SUB R0, R0, 7H |
0C30 | q(E6000005): BLE 5 [0C36H] |
0C31 | r(80E00010): LDR R0, SP, 10H |
0C32 | r(D150FD4C): BLEQ MT [trap=4, pos=20733] |
0C33 | s(80000000): LDR R0, R0, 0H |
0C34 | s(4009000A): SUB R0, R0, AH |
0C35 | t(E9000008): BNE 8 [0C3EH] |
0C36 | u(40E8000C): ADD R0, SP, CH |
0C37 | u .FIXUP D |
0C37 | u(8D900015): LDR SB, MT, MOD9 [ORG] |
0C38 | u(41D80001): ADD R1, SB, VAR1 |
0C39 | v(42E80024): ADD R2, SP, 24H |
0C3A | v .FIXUP D |
0C3A | v(8D900003): LDR SB, MT, MOD9 [ORG] |
0C3B | v(43D80001): ADD R3, SB, VAR1 |
| ELSEw ORGx.StoreStruct(x,y y)z |
0C3C | w .FIXUP P |
0C3C | w(F7920022): BL MOD9 [ORG] PROC32 |
0C3D | x(E7000007): B 7 [0C45H] |
0C3E | y(40E8000C): ADD R0, SP, CH |
0C3F | y .FIXUP D |
0C3F | y(8D900005): LDR SB, MT, MOD9 [ORG] |
0C40 | y(41D80001): ADD R1, SB, VAR1 |
0C41 | z(42E80024): ADD R2, SP, 24H |
0C42 | z .FIXUP D |
0C42 | z(8D900003): LDR SB, MT, MOD9 [ORG] |
0C43 | z(43D80001): ADD R3, SB, VAR1 |
| ENDa |
0C44 | a .FIXUP P |
0C44 | a(F7921008): BL MOD9 [ORG] PROC33 |
| ELSIF (bx.type.formc = ORB.Array)d & (ey.type.formf = ORB.Array)g & (hx.type.basei = y.type.basej)k & (ly.type.lenm < 0)n THENo |
0C45 | b(E7000067): B 103 [0CADH] |
0C46 | c(80E00010): LDR R0, SP, 10H |
0C47 | c(D151784C): BLEQ MT [trap=4, pos=20856] |
0C48 | d(80000000): LDR R0, R0, 0H |
0C49 | d(4009000C): SUB R0, R0, CH |
0C4A | e(E900001A): BNE 26 [0C65H] |
0C4B | f(80E00028): LDR R0, SP, 28H |
0C4C | f(D151944C): BLEQ MT [trap=4, pos=20884] |
0C4D | g(80000000): LDR R0, R0, 0H |
0C4E | g(4009000C): SUB R0, R0, CH |
0C4F | h(E9000015): BNE 21 [0C65H] |
0C50 | i(80E00010): LDR R0, SP, 10H |
0C51 | i(D151B04C): BLEQ MT [trap=4, pos=20912] |
0C52 | j(81E00028): LDR R1, SP, 28H |
0C53 | j(D151BE4C): BLEQ MT [trap=4, pos=20926] |
0C54 | k(8000001C): LDR R0, R0, 1CH |
0C55 | k(8110001C): LDR R1, R1, 1CH |
0C56 | k(00090001): SUB R0, R0, R1 |
0C57 | l(E900000D): BNE 13 [0C65H] |
0C58 | m(80E00028): LDR R0, SP, 28H |
0C59 | m(D151CD4C): BLEQ MT [trap=4, pos=20941] |
0C5A | n(80000010): LDR R0, R0, 10H |
0C5B | n(40090000): SUB R0, R0, 0H |
0C5C | o(ED000008): BGE 8 [0C65H] |
| ORG.StoreStruct(x,p y)q |
0C5D | p(40E8000C): ADD R0, SP, CH |
0C5E | p .FIXUP D |
0C5E | p(8D90001C): LDR SB, MT, MOD9 [ORG] |
0C5F | p(41D80001): ADD R1, SB, VAR1 |
0C60 | q(42E80024): ADD R2, SP, 24H |
0C61 | q .FIXUP D |
0C61 | q(8D900003): LDR SB, MT, MOD9 [ORG] |
0C62 | q(43D80001): ADD R3, SB, VAR1 |
| ELSIFr (sx.type.formt = ORB.Array)u & (vx.type.basew.formx = ORB.Char)y & (zy.type.forma = ORB.String)b THENc |
0C63 | r .FIXUP P |
0C63 | r(F792101F): BL MOD9 [ORG] PROC33 |
0C64 | s(E7000048): B 72 [0CADH] |
0C65 | t(80E00010): LDR R0, SP, 10H |
0C66 | t(D1521A4C): BLEQ MT [trap=4, pos=21018] |
0C67 | u(80000000): LDR R0, R0, 0H |
0C68 | u(4009000C): SUB R0, R0, CH |
0C69 | v(E9000014): BNE 20 [0C7EH] |
0C6A | w(80E00010): LDR R0, SP, 10H |
0C6B | w(D152364C): BLEQ MT [trap=4, pos=21046] |
0C6C | x(8000001C): LDR R0, R0, 1CH |
0C6D | x(D1523B4C): BLEQ MT [trap=4, pos=21051] |
0C6E | y(80000000): LDR R0, R0, 0H |
0C6F | y(40090003): SUB R0, R0, 3H |
0C70 | z(E900000D): BNE 13 [0C7EH] |
0C71 | a(80E00028): LDR R0, SP, 28H |
0C72 | a(D152564C): BLEQ MT [trap=4, pos=21078] |
0C73 | b(80000000): LDR R0, R0, 0H |
0C74 | b(4009000B): SUB R0, R0, BH |
0C75 | c(E9000008): BNE 8 [0C7EH] |
| ORG.CopyString(x,d y)e |
0C76 | d(40E8000C): ADD R0, SP, CH |
0C77 | d .FIXUP D |
0C77 | d(8D900016): LDR SB, MT, MOD9 [ORG] |
0C78 | d(41D80001): ADD R1, SB, VAR1 |
0C79 | e(42E80024): ADD R2, SP, 24H |
0C7A | e .FIXUP D |
0C7A | e(8D900003): LDR SB, MT, MOD9 [ORG] |
0C7B | e(43D80001): ADD R3, SB, VAR1 |
| ELSIFf (gx.type.formh = ORB.Int)i & (jy.type.formk = ORB.Int)l THENm ORG.Store(x,n y)o (*BYTE*) |
0C7C | f .FIXUP P |
0C7C | f(F7922019): BL MOD9 [ORG] PROC34 |
0C7D | g(E700002F): B 47 [0CADH] |
0C7E | h(80E00010): LDR R0, SP, 10H |
0C7F | h(D152AB4C): BLEQ MT [trap=4, pos=21163] |
0C80 | i(80000000): LDR R0, R0, 0H |
0C81 | i(40090004): SUB R0, R0, 4H |
0C82 | j(E900000D): BNE 13 [0C90H] |
0C83 | k(80E00028): LDR R0, SP, 28H |
0C84 | k(D152C54C): BLEQ MT [trap=4, pos=21189] |
0C85 | l(80000000): LDR R0, R0, 0H |
0C86 | l(40090004): SUB R0, R0, 4H |
0C87 | m(E9000008): BNE 8 [0C90H] |
0C88 | n(40E8000C): ADD R0, SP, CH |
0C89 | n .FIXUP D |
0C89 | n(8D90000F): LDR SB, MT, MOD9 [ORG] |
0C8A | n(41D80001): ADD R1, SB, VAR1 |
0C8B | o(42E80024): ADD R2, SP, 24H |
0C8C | o .FIXUP D |
0C8C | o(8D900003): LDR SB, MT, MOD9 [ORG] |
0C8D | o(43D80001): ADD R3, SB, VAR1 |
| ELSIFp (qx.type.formr = ORB.Char)s & (ty.type.formu = ORB.String)v & (wy.b = 2)x THENy |
0C8E | p .FIXUP P |
0C8E | p(F7920012): BL MOD9 [ORG] PROC32 |
0C8F | q(E700001D): B 29 [0CADH] |
0C90 | r(80E00010): LDR R0, SP, 10H |
0C91 | r(D1530E4C): BLEQ MT [trap=4, pos=21262] |
0C92 | s(80000000): LDR R0, R0, 0H |
0C93 | s(40090003): SUB R0, R0, 3H |
0C94 | t(E9000014): BNE 20 [0CA9H] |
0C95 | u(80E00028): LDR R0, SP, 28H |
0C96 | u(D153294C): BLEQ MT [trap=4, pos=21289] |
0C97 | v(80000000): LDR R0, R0, 0H |
0C98 | v(4009000B): SUB R0, R0, BH |
0C99 | w(E900000F): BNE 15 [0CA9H] |
0C9A | x(80E00030): LDR R0, SP, 30H |
0C9B | x(40090002): SUB R0, R0, 2H |
0C9C | y(E900000C): BNE 12 [0CA9H] |
| ORG.StrToChar(y)z;a ORG.Store(x,b y)c |
0C9D | z(40E80024): ADD R0, SP, 24H |
0C9E | z .FIXUP D |
0C9E | z(8D900012): LDR SB, MT, MOD9 [ORG] |
0C9F | z(41D80001): ADD R1, SB, VAR1 |
0CA0 | a .FIXUP P |
0CA0 | a(F791F012): BL MOD9 [ORG] PROC31 |
0CA1 | b(40E8000C): ADD R0, SP, CH |
0CA2 | b .FIXUP D |
0CA2 | b(8D900004): LDR SB, MT, MOD9 [ORG] |
0CA3 | b(41D80001): ADD R1, SB, VAR1 |
0CA4 | c(42E80024): ADD R2, SP, 24H |
0CA5 | c .FIXUP D |
0CA5 | c(8D900003): LDR SB, MT, MOD9 [ORG] |
0CA6 | c(43D80001): ADD R3, SB, VAR1 |
| ELSEd ORSe.Mark("illegal assignment")f |
0CA7 | d .FIXUP P |
0CA7 | d(F7920007): BL MOD9 [ORG] PROC32 |
0CA8 | e(E7000004): B 4 [0CADH] |
0CA9 | f .FIXUP D |
0CA9 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
0CAA | f(40D80400): ADD R0, SB, 400H ["illegal assignment"] |
0CAB | f(41000013): MOV R1, R0, 13H |
| ENDg |
0CAC | g .FIXUP P |
0CAC | g(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symh = ORS.eql THENi ORS.Mark("should be :=")j;k ORS.Get(sym)l;m expression(y)n |
0CAD | h(E700006F): B 111 [0D1DH] |
0CAE | i .FIXUP D |
0CAE | i(8D000005): LDR SB, MT, MOD0 [ORP] |
0CAF | i(80D0001C): LDR R0, SB, 1CH [data] |
0CB0 | i(40090009): SUB R0, R0, 9H |
0CB1 | i(E900000F): BNE 15 [0CC1H] |
0CB2 | j .FIXUP D |
0CB2 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
0CB3 | j(40D80414): ADD R0, SB, 414H ["should be :="] |
0CB4 | j(4100000D): MOV R1, R0, DH |
0CB5 | k .FIXUP P |
0CB5 | k(F7709009): BL MOD7 [ORS] PROC9 |
0CB6 | l .FIXUP D |
0CB6 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
0CB7 | l(40D8001C): ADD R0, SB, 1CH [data] |
0CB8 | m .FIXUP P |
0CB8 | m(F770A003): BL MOD7 [ORS] PROC10 |
0CB9 | n(40E80024): ADD R0, SP, 24H |
0CBA | n .FIXUP D |
0CBA | n(8D900004): LDR SB, MT, MOD9 [ORG] |
0CBB | n(41D80001): ADD R1, SB, VAR1 |
| ELSIFo symp = ORS.lparen THENq (*procedure call*) |
0CBC | o .FIXUP D |
0CBC | o(8D000002): LDR SB, MT, MOD0 [ORP] |
0CBD | o(82D00034): LDR R2, SB, 34H [data] |
0CBE | o(D154215C): BLEQ MT [trap=5, pos=21537] |
0CBF | o(D7000002): BL R2 |
0CC0 | p(E700005C): B 92 [0D1DH] |
0CC1 | q .FIXUP D |
0CC1 | q(8D000005): LDR SB, MT, MOD0 [ORP] |
0CC2 | q(80D0001C): LDR R0, SB, 1CH [data] |
0CC3 | q(4009001C): SUB R0, R0, 1CH |
0CC4 | q(E9000027): BNE 39 [0CECH] |
| ORS.Get(sym)r;s |
0CC5 | r .FIXUP D |
0CC5 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
0CC6 | r(40D8001C): ADD R0, SB, 1CH [data] |
0CC7 | s .FIXUP P |
0CC7 | s(F770A00F): BL MOD7 [ORS] PROC10 |
| IF (x.type.formt = ORB.Proc)u & (vx.type.basew.formx = ORB.NoTyp)y THENz |
0CC8 | t(80E00010): LDR R0, SP, 10H |
0CC9 | t(D154804C): BLEQ MT [trap=4, pos=21632] |
0CCA | u(80000000): LDR R0, R0, 0H |
0CCB | u(4009000A): SUB R0, R0, AH |
0CCC | v(E9000016): BNE 22 [0CE3H] |
0CCD | w(80E00010): LDR R0, SP, 10H |
0CCE | w(D1549B4C): BLEQ MT [trap=4, pos=21659] |
0CCF | x(8000001C): LDR R0, R0, 1CH |
0CD0 | x(D154A04C): BLEQ MT [trap=4, pos=21664] |
0CD1 | y(80000000): LDR R0, R0, 0H |
0CD2 | y(40090009): SUB R0, R0, 9H |
0CD3 | z(E900000F): BNE 15 [0CE3H] |
| ORG.PrepCall(x,a rx)b;c ParamList(x)d;e ORG.Call(x,f rx)g |
0CD4 | a(40E8000C): ADD R0, SP, CH |
0CD5 | a .FIXUP D |
0CD5 | a(8D900010): LDR SB, MT, MOD9 [ORG] |
0CD6 | a(41D80001): ADD R1, SB, VAR1 |
0CD7 | b(42E80074): ADD R2, SP, 74H |
0CD8 | c .FIXUP P |
0CD8 | c(F7930011): BL MOD9 [ORG] PROC48 |
0CD9 | d(40E8000C): ADD R0, SP, CH |
0CDA | d .FIXUP D |
0CDA | d(8D900005): LDR SB, MT, MOD9 [ORG] |
0CDB | d(41D80001): ADD R1, SB, VAR1 |
0CDC | e(F7FFF780): BL -2176 [045DH] |
0CDD | f(40E8000C): ADD R0, SP, CH |
0CDE | f .FIXUP D |
0CDE | f(8D900004): LDR SB, MT, MOD9 [ORG] |
0CDF | f(41D80001): ADD R1, SB, VAR1 |
0CE0 | g(82E00074): LDR R2, SP, 74H |
| ELSEh ORSi.Mark("not a procedure")j;k ParamList(x)l |
0CE1 | h .FIXUP P |
0CE1 | h(F7931009): BL MOD9 [ORG] PROC49 |
0CE2 | i(E7000008): B 8 [0CEBH] |
0CE3 | j .FIXUP D |
0CE3 | j(8D000005): LDR SB, MT, MOD0 [ORP] |
0CE4 | j(40D80424): ADD R0, SB, 424H ["not a procedure"] |
0CE5 | j(41000010): MOV R1, R0, 10H |
0CE6 | k .FIXUP P |
0CE6 | k(F7709005): BL MOD7 [ORS] PROC9 |
0CE7 | l(40E8000C): ADD R0, SP, CH |
0CE8 | l .FIXUP D |
0CE8 | l(8D900005): LDR SB, MT, MOD9 [ORG] |
0CE9 | l(41D80001): ADD R1, SB, VAR1 |
| ENDm |
0CEA | m(F7FFF772): BL -2190 [045DH] |
| ELSIF xn.type.formo = ORB.Proc THENp (*procedure call without parameters*) |
0CEB | n(E7000031): B 49 [0D1DH] |
0CEC | o(80E00010): LDR R0, SP, 10H |
0CED | o(D1555A4C): BLEQ MT [trap=4, pos=21850] |
0CEE | p(80000000): LDR R0, R0, 0H |
0CEF | p(4009000A): SUB R0, R0, AH |
0CF0 | p(E9000020): BNE 32 [0D11H] |
| IF x.type.nofparq > 0 THENr ORS.Mark("missing parameters")s ENDt ; |
0CF1 | q(80E00010): LDR R0, SP, 10H |
0CF2 | q(D155AD4C): BLEQ MT [trap=4, pos=21933] |
0CF3 | r(8000000C): LDR R0, R0, CH |
0CF4 | r(40090000): SUB R0, R0, 0H |
0CF5 | r(E6000004): BLE 4 [0CFAH] |
0CF6 | s .FIXUP D |
0CF6 | s(8D00000E): LDR SB, MT, MOD0 [ORP] |
0CF7 | s(40D80434): ADD R0, SB, 434H ["missing parameters"] |
0CF8 | s(41000013): MOV R1, R0, 13H |
0CF9 | t .FIXUP P |
0CF9 | t(F7709013): BL MOD7 [ORS] PROC9 |
| IF x.type.baseu.formv = ORB.NoTyp THENw ORG.PrepCall(x,x rx)y;z ORG.Call(x,a rx)b ELSEc ORSd.Mark("not a procedure")e ENDf |
0CFA | u(80E00010): LDR R0, SP, 10H |
0CFB | u(D155F64C): BLEQ MT [trap=4, pos=22006] |
0CFC | v(8000001C): LDR R0, R0, 1CH |
0CFD | v(D155FB4C): BLEQ MT [trap=4, pos=22011] |
0CFE | w(80000000): LDR R0, R0, 0H |
0CFF | w(40090009): SUB R0, R0, 9H |
0D00 | w(E900000B): BNE 11 [0D0CH] |
0D01 | x(40E8000C): ADD R0, SP, CH |
0D02 | x .FIXUP D |
0D02 | x(8D90000C): LDR SB, MT, MOD9 [ORG] |
0D03 | x(41D80001): ADD R1, SB, VAR1 |
0D04 | y(42E80074): ADD R2, SP, 74H |
0D05 | z .FIXUP P |
0D05 | z(F793000C): BL MOD9 [ORG] PROC48 |
0D06 | a(40E8000C): ADD R0, SP, CH |
0D07 | a .FIXUP D |
0D07 | a(8D900005): LDR SB, MT, MOD9 [ORG] |
0D08 | a(41D80001): ADD R1, SB, VAR1 |
0D09 | b(82E00074): LDR R2, SP, 74H |
0D0A | c .FIXUP P |
0D0A | c(F7931005): BL MOD9 [ORG] PROC49 |
0D0B | d(E7000004): B 4 [0D10H] |
0D0C | e .FIXUP D |
0D0C | e(8D000005): LDR SB, MT, MOD0 [ORP] |
0D0D | e(40D80448): ADD R0, SB, 448H ["not a procedure"] |
0D0E | e(41000010): MOV R1, R0, 10H |
0D0F | f .FIXUP P |
0D0F | f(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF xg.mode = ORB.Typ THENh ORS.Mark("illegal assignment")i |
0D10 | g(E700000C): B 12 [0D1DH] |
0D11 | h(80E0000C): LDR R0, SP, CH |
0D12 | h(40090005): SUB R0, R0, 5H |
0D13 | h(E9000005): BNE 5 [0D19H] |
0D14 | i .FIXUP D |
0D14 | i(8D000008): LDR SB, MT, MOD0 [ORP] |
0D15 | i(40D80458): ADD R0, SB, 458H ["illegal assignment"] |
0D16 | i(41000013): MOV R1, R0, 13H |
| ELSEj ORSk.Mark("not a procedure")l |
0D17 | j .FIXUP P |
0D17 | j(F7709008): BL MOD7 [ORS] PROC9 |
0D18 | k(E7000004): B 4 [0D1DH] |
0D19 | l .FIXUP D |
0D19 | l(8D000005): LDR SB, MT, MOD0 [ORP] |
0D1A | l(40D8046C): ADD R0, SB, 46CH ["not a procedure"] |
0D1B | l(41000010): MOV R1, R0, 10H |
| ENDm |
0D1C | m .FIXUP P |
0D1C | m(F7709005): BL MOD7 [ORS] PROC9 |
| END |
| ELSIF symn = ORS.if THENo |
0D1D | n(E70001D7): B 471 [0EF5H] |
0D1E | o .FIXUP D |
0D1E | o(8D000005): LDR SB, MT, MOD0 [ORP] |
0D1F | o(80D0001C): LDR R0, SB, 1CH [data] |
0D20 | o(40090020): SUB R0, R0, 20H |
0D21 | o(E9000058): BNE 88 [0D7AH] |
| ORS.Get(sym)p;q expression(x)r;s CheckBool(x)t;u ORG.CFJump(x)v;w |
0D22 | p .FIXUP D |
0D22 | p(8D000004): LDR SB, MT, MOD0 [ORP] |
0D23 | p(40D8001C): ADD R0, SB, 1CH [data] |
0D24 | q .FIXUP P |
0D24 | q(F770A008): BL MOD7 [ORS] PROC10 |
0D25 | r(40E8000C): ADD R0, SP, CH |
0D26 | r .FIXUP D |
0D26 | r(8D900004): LDR SB, MT, MOD9 [ORG] |
0D27 | r(41D80001): ADD R1, SB, VAR1 |
0D28 | s .FIXUP D |
0D28 | s(8D000002): LDR SB, MT, MOD0 [ORP] |
0D29 | s(82D00034): LDR R2, SB, 34H [data] |
0D2A | s(D157235C): BLEQ MT [trap=5, pos=22307] |
0D2B | s(D7000002): BL R2 |
0D2C | t(40E8000C): ADD R0, SP, CH |
0D2D | t .FIXUP D |
0D2D | t(8D900005): LDR SB, MT, MOD9 [ORG] |
0D2E | t(41D80001): ADD R1, SB, VAR1 |
0D2F | u(F7FFF328): BL -3288 [0058H] |
0D30 | v(40E8000C): ADD R0, SP, CH |
0D31 | v .FIXUP D |
0D31 | v(8D900004): LDR SB, MT, MOD9 [ORG] |
0D32 | v(41D80001): ADD R1, SB, VAR1 |
0D33 | w .FIXUP P |
0D33 | w(F792C00F): BL MOD9 [ORG] PROC44 |
| Check(ORS.then,x "no THEN")y;z |
0D34 | x(4000002F): MOV R0, R0, 2FH |
0D35 | y .FIXUP D |
0D35 | y(8D000004): LDR SB, MT, MOD0 [ORP] |
0D36 | y(41D8047C): ADD R1, SB, 47CH ["no THEN"] |
0D37 | y(42000008): MOV R2, R0, 8H |
0D38 | z(F7FFF2C7): BL -3385 [0000H] |
| StatSequence;a L0 := 0;b |
0D39 | a(F7FFFE9E): BL -354 [0BD8H] |
0D3A | b(40000000): MOV R0, R0, 0H |
0D3B | b(A0E0006C): STR R0, SP, 6CH |
| WHILE sym = ORS.elsif DOc |
0D3C | c .FIXUP D |
0D3C | c(8D000007): LDR SB, MT, MOD0 [ORP] |
0D3D | c(80D0001C): LDR R0, SB, 1CH [data] |
0D3E | c(40090038): SUB R0, R0, 38H |
0D3F | c(E900001F): BNE 31 [0D5FH] |
| ORS.Get(sym)d;e ORG.FJump(L0)f;g ORG.Fixup(x)h;i expression(x)j;k CheckBool(x)l;m |
0D40 | d .FIXUP D |
0D40 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
0D41 | d(40D8001C): ADD R0, SB, 1CH [data] |
0D42 | e .FIXUP P |
0D42 | e(F770A00F): BL MOD7 [ORS] PROC10 |
0D43 | f(40E8006C): ADD R0, SP, 6CH |
0D44 | g .FIXUP P |
0D44 | g(F792B002): BL MOD9 [ORG] PROC43 |
0D45 | h(40E8000C): ADD R0, SP, CH |
0D46 | h .FIXUP D |
0D46 | h(8D900006): LDR SB, MT, MOD9 [ORG] |
0D47 | h(41D80001): ADD R1, SB, VAR1 |
0D48 | i .FIXUP P |
0D48 | i(F792F004): BL MOD9 [ORG] PROC47 |
0D49 | j(40E8000C): ADD R0, SP, CH |
0D4A | j .FIXUP D |
0D4A | j(8D900004): LDR SB, MT, MOD9 [ORG] |
0D4B | j(41D80001): ADD R1, SB, VAR1 |
0D4C | k .FIXUP D |
0D4C | k(8D000002): LDR SB, MT, MOD0 [ORP] |
0D4D | k(82D00034): LDR R2, SB, 34H [data] |
0D4E | k(D157E85C): BLEQ MT [trap=5, pos=22504] |
0D4F | k(D7000002): BL R2 |
0D50 | l(40E8000C): ADD R0, SP, CH |
0D51 | l .FIXUP D |
0D51 | l(8D900005): LDR SB, MT, MOD9 [ORG] |
0D52 | l(41D80001): ADD R1, SB, VAR1 |
0D53 | m(F7FFF304): BL -3324 [0058H] |
| ORG.CFJump(x)n;o Check(ORS.then,p "no THEN")q;r StatSequence |
0D54 | n(40E8000C): ADD R0, SP, CH |
0D55 | n .FIXUP D |
0D55 | n(8D900004): LDR SB, MT, MOD9 [ORG] |
0D56 | n(41D80001): ADD R1, SB, VAR1 |
0D57 | o .FIXUP P |
0D57 | o(F792C00F): BL MOD9 [ORG] PROC44 |
0D58 | p(4000002F): MOV R0, R0, 2FH |
0D59 | q .FIXUP D |
0D59 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
0D5A | q(41D80484): ADD R1, SB, 484H ["no THEN"] |
0D5B | q(42000008): MOV R2, R0, 8H |
0D5C | r(F7FFF2A3): BL -3421 [0000H] |
| ENDs ; |
0D5D | s(F7FFFE7A): BL -390 [0BD8H] |
0D5E | s(E7FFFFDD): B -35 [0D3CH] |
| IF sym = ORS.else THENt ORS.Get(sym)u;v ORG.FJump(L0)w;x ORG.Fixup(x)y;z StatSequence |
0D5F | t .FIXUP D |
0D5F | t(8D000006): LDR SB, MT, MOD0 [ORP] |
0D60 | t(80D0001C): LDR R0, SB, 1CH [data] |
0D61 | t(40090037): SUB R0, R0, 37H |
0D62 | t(E900000B): BNE 11 [0D6EH] |
0D63 | u .FIXUP D |
0D63 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
0D64 | u(40D8001C): ADD R0, SB, 1CH [data] |
0D65 | v .FIXUP P |
0D65 | v(F770A00E): BL MOD7 [ORS] PROC10 |
0D66 | w(40E8006C): ADD R0, SP, 6CH |
0D67 | x .FIXUP P |
0D67 | x(F792B002): BL MOD9 [ORG] PROC43 |
0D68 | y(40E8000C): ADD R0, SP, CH |
0D69 | y .FIXUP D |
0D69 | y(8D900006): LDR SB, MT, MOD9 [ORG] |
0D6A | y(41D80001): ADD R1, SB, VAR1 |
0D6B | z .FIXUP P |
0D6B | z(F792F004): BL MOD9 [ORG] PROC47 |
| ELSEa ORGb.Fixup(x)c |
0D6C | a(F7FFFE6B): BL -405 [0BD8H] |
0D6D | b(E7000004): B 4 [0D72H] |
0D6E | c(40E8000C): ADD R0, SP, CH |
0D6F | c .FIXUP D |
0D6F | c(8D900006): LDR SB, MT, MOD9 [ORG] |
0D70 | c(41D80001): ADD R1, SB, VAR1 |
| ENDd ; |
0D71 | d .FIXUP P |
0D71 | d(F792F006): BL MOD9 [ORG] PROC47 |
| ORG.FixLink(L0)e;f Check(ORS.end,g "no END")h |
0D72 | e(80E0006C): LDR R0, SP, 6CH |
0D73 | f .FIXUP P |
0D73 | f(F7904002): BL MOD9 [ORG] PROC4 |
0D74 | g(40000035): MOV R0, R0, 35H |
0D75 | h .FIXUP D |
0D75 | h(8D000006): LDR SB, MT, MOD0 [ORP] |
0D76 | h(41D8048C): ADD R1, SB, 48CH ["no END"] |
0D77 | h(42000007): MOV R2, R0, 7H |
| ELSIFi symj = ORS.while THENk |
0D78 | i(F7FFF287): BL -3449 [0000H] |
0D79 | j(E700017B): B 379 [0EF5H] |
0D7A | k .FIXUP D |
0D7A | k(8D000005): LDR SB, MT, MOD0 [ORP] |
0D7B | k(80D0001C): LDR R0, SB, 1CH [data] |
0D7C | k(40090022): SUB R0, R0, 22H |
0D7D | k(E9000049): BNE 73 [0DC7H] |
| ORS.Get(sym)l;m L0 := ORG.Here();n expression(x)o;p CheckBool(x)q;r ORG.CFJump(x)s;t |
0D7E | l .FIXUP D |
0D7E | l(8D000004): LDR SB, MT, MOD0 [ORP] |
0D7F | l(40D8001C): ADD R0, SB, 1CH [data] |
0D80 | m .FIXUP P |
0D80 | m(F770A00D): BL MOD7 [ORS] PROC10 |
0D81 | n .FIXUP P |
0D81 | n(F792A001): BL MOD9 [ORG] PROC42 |
0D82 | n(A0E0006C): STR R0, SP, 6CH |
0D83 | o(40E8000C): ADD R0, SP, CH |
0D84 | o .FIXUP D |
0D84 | o(8D900006): LDR SB, MT, MOD9 [ORG] |
0D85 | o(41D80001): ADD R1, SB, VAR1 |
0D86 | p .FIXUP D |
0D86 | p(8D000002): LDR SB, MT, MOD0 [ORP] |
0D87 | p(82D00034): LDR R2, SB, 34H [data] |
0D88 | p(D1594F5C): BLEQ MT [trap=5, pos=22863] |
0D89 | p(D7000002): BL R2 |
0D8A | q(40E8000C): ADD R0, SP, CH |
0D8B | q .FIXUP D |
0D8B | q(8D900005): LDR SB, MT, MOD9 [ORG] |
0D8C | q(41D80001): ADD R1, SB, VAR1 |
0D8D | r(F7FFF2CA): BL -3382 [0058H] |
0D8E | s(40E8000C): ADD R0, SP, CH |
0D8F | s .FIXUP D |
0D8F | s(8D900004): LDR SB, MT, MOD9 [ORG] |
0D90 | s(41D80001): ADD R1, SB, VAR1 |
0D91 | t .FIXUP P |
0D91 | t(F792C010): BL MOD9 [ORG] PROC44 |
| Check(ORS.do,u "no DO")v;w StatSequence;x ORG.BJump(L0)y;z |
0D92 | u(40000031): MOV R0, R0, 31H |
0D93 | v .FIXUP D |
0D93 | v(8D000004): LDR SB, MT, MOD0 [ORP] |
0D94 | v(41D80494): ADD R1, SB, 494H ["no DO"] |
0D95 | v(42000006): MOV R2, R0, 6H |
0D96 | w(F7FFF269): BL -3479 [0000H] |
0D97 | x(F7FFFE40): BL -448 [0BD8H] |
0D98 | y(80E0006C): LDR R0, SP, 6CH |
0D99 | z .FIXUP P |
0D99 | z(F792D008): BL MOD9 [ORG] PROC45 |
| WHILE sym = ORS.elsif DOa |
0D9A | a .FIXUP D |
0D9A | a(8D000007): LDR SB, MT, MOD0 [ORP] |
0D9B | a(80D0001C): LDR R0, SB, 1CH [data] |
0D9C | a(40090038): SUB R0, R0, 38H |
0D9D | a(E900001F): BNE 31 [0DBDH] |
| ORS.Get(sym)b;c ORG.Fixup(x)d;e expression(x)f;g CheckBool(x)h;i ORG.CFJump(x)j;k |
0D9E | b .FIXUP D |
0D9E | b(8D000004): LDR SB, MT, MOD0 [ORP] |
0D9F | b(40D8001C): ADD R0, SB, 1CH [data] |
0DA0 | c .FIXUP P |
0DA0 | c(F770A007): BL MOD7 [ORS] PROC10 |
0DA1 | d(40E8000C): ADD R0, SP, CH |
0DA2 | d .FIXUP D |
0DA2 | d(8D900004): LDR SB, MT, MOD9 [ORG] |
0DA3 | d(41D80001): ADD R1, SB, VAR1 |
0DA4 | e .FIXUP P |
0DA4 | e(F792F004): BL MOD9 [ORG] PROC47 |
0DA5 | f(40E8000C): ADD R0, SP, CH |
0DA6 | f .FIXUP D |
0DA6 | f(8D900004): LDR SB, MT, MOD9 [ORG] |
0DA7 | f(41D80001): ADD R1, SB, VAR1 |
0DA8 | g .FIXUP D |
0DA8 | g(8D000002): LDR SB, MT, MOD0 [ORP] |
0DA9 | g(82D00034): LDR R2, SB, 34H [data] |
0DAA | g(D159FF5C): BLEQ MT [trap=5, pos=23039] |
0DAB | g(D7000002): BL R2 |
0DAC | h(40E8000C): ADD R0, SP, CH |
0DAD | h .FIXUP D |
0DAD | h(8D900005): LDR SB, MT, MOD9 [ORG] |
0DAE | h(41D80001): ADD R1, SB, VAR1 |
0DAF | i(F7FFF2A8): BL -3416 [0058H] |
0DB0 | j(40E8000C): ADD R0, SP, CH |
0DB1 | j .FIXUP D |
0DB1 | j(8D900004): LDR SB, MT, MOD9 [ORG] |
0DB2 | j(41D80001): ADD R1, SB, VAR1 |
0DB3 | k .FIXUP P |
0DB3 | k(F792C00F): BL MOD9 [ORG] PROC44 |
| Check(ORS.do,l "no DO")m;n StatSequence;o ORG.BJump(L0)p |
0DB4 | l(40000031): MOV R0, R0, 31H |
0DB5 | m .FIXUP D |
0DB5 | m(8D000004): LDR SB, MT, MOD0 [ORP] |
0DB6 | m(41D8049C): ADD R1, SB, 49CH ["no DO"] |
0DB7 | m(42000006): MOV R2, R0, 6H |
0DB8 | n(F7FFF247): BL -3513 [0000H] |
0DB9 | o(F7FFFE1E): BL -482 [0BD8H] |
0DBA | p(80E0006C): LDR R0, SP, 6CH |
| ENDq ; |
0DBB | q .FIXUP P |
0DBB | q(F792D008): BL MOD9 [ORG] PROC45 |
0DBC | q(E7FFFFDD): B -35 [0D9AH] |
| ORG.Fixup(x)r;s Check(ORS.end,t "no END")u |
0DBD | r(40E8000C): ADD R0, SP, CH |
0DBE | r .FIXUP D |
0DBE | r(8D900009): LDR SB, MT, MOD9 [ORG] |
0DBF | r(41D80001): ADD R1, SB, VAR1 |
0DC0 | s .FIXUP P |
0DC0 | s(F792F005): BL MOD9 [ORG] PROC47 |
0DC1 | t(40000035): MOV R0, R0, 35H |
0DC2 | u .FIXUP D |
0DC2 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
0DC3 | u(41D804A4): ADD R1, SB, 4A4H ["no END"] |
0DC4 | u(42000007): MOV R2, R0, 7H |
| ELSIFv symw = ORS.repeat THENx |
0DC5 | v(F7FFF23A): BL -3526 [0000H] |
0DC6 | w(E700012E): B 302 [0EF5H] |
0DC7 | x .FIXUP D |
0DC7 | x(8D000005): LDR SB, MT, MOD0 [ORP] |
0DC8 | x(80D0001C): LDR R0, SB, 1CH [data] |
0DC9 | x(40090023): SUB R0, R0, 23H |
0DCA | x(E9000023): BNE 35 [0DEEH] |
| ORS.Get(sym)y;z L0 := ORG.Here();a StatSequence;b |
0DCB | y .FIXUP D |
0DCB | y(8D000004): LDR SB, MT, MOD0 [ORP] |
0DCC | y(40D8001C): ADD R0, SB, 1CH [data] |
0DCD | z .FIXUP P |
0DCD | z(F770A00D): BL MOD7 [ORS] PROC10 |
0DCE | a .FIXUP P |
0DCE | a(F792A001): BL MOD9 [ORG] PROC42 |
0DCF | a(A0E0006C): STR R0, SP, 6CH |
0DD0 | b(F7FFFE07): BL -505 [0BD8H] |
| IF sym = ORS.until THENc |
0DD1 | c .FIXUP D |
0DD1 | c(8D000006): LDR SB, MT, MOD0 [ORP] |
0DD2 | c(80D0001C): LDR R0, SB, 1CH [data] |
0DD3 | c(40090039): SUB R0, R0, 39H |
0DD4 | c(E9000014): BNE 20 [0DE9H] |
| ORS.Get(sym)d;e expression(x)f;g CheckBool(x)h;i ORG.CBJump(x,j L0)k |
0DD5 | d .FIXUP D |
0DD5 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
0DD6 | d(40D8001C): ADD R0, SB, 1CH [data] |
0DD7 | e .FIXUP P |
0DD7 | e(F770A009): BL MOD7 [ORS] PROC10 |
0DD8 | f(40E8000C): ADD R0, SP, CH |
0DD9 | f .FIXUP D |
0DD9 | f(8D900004): LDR SB, MT, MOD9 [ORG] |
0DDA | f(41D80001): ADD R1, SB, VAR1 |
0DDB | g .FIXUP D |
0DDB | g(8D000002): LDR SB, MT, MOD0 [ORP] |
0DDC | g(82D00034): LDR R2, SB, 34H [data] |
0DDD | g(D15B365C): BLEQ MT [trap=5, pos=23350] |
0DDE | g(D7000002): BL R2 |
0DDF | h(40E8000C): ADD R0, SP, CH |
0DE0 | h .FIXUP D |
0DE0 | h(8D900005): LDR SB, MT, MOD9 [ORG] |
0DE1 | h(41D80001): ADD R1, SB, VAR1 |
0DE2 | i(F7FFF275): BL -3467 [0058H] |
0DE3 | j(40E8000C): ADD R0, SP, CH |
0DE4 | j .FIXUP D |
0DE4 | j(8D900004): LDR SB, MT, MOD9 [ORG] |
0DE5 | j(41D80001): ADD R1, SB, VAR1 |
0DE6 | k(82E0006C): LDR R2, SP, 6CH |
| ELSEl ORSm.Mark("missing UNTIL")n |
0DE7 | l .FIXUP P |
0DE7 | l(F792E010): BL MOD9 [ORG] PROC46 |
0DE8 | m(E7000004): B 4 [0DEDH] |
0DE9 | n .FIXUP D |
0DE9 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
0DEA | n(40D804AC): ADD R0, SB, 4ACH ["missing UNTIL"] |
0DEB | n(4100000E): MOV R1, R0, EH |
| ENDo |
0DEC | o .FIXUP P |
0DEC | o(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symp = ORS.for THENq |
0DED | p(E7000107): B 263 [0EF5H] |
0DEE | q .FIXUP D |
0DEE | q(8D000005): LDR SB, MT, MOD0 [ORP] |
0DEF | q(80D0001C): LDR R0, SB, 1CH [data] |
0DF0 | q(40090025): SUB R0, R0, 25H |
0DF1 | q(E900009B): BNE 155 [0E8DH] |
| ORS.Get(sym)r;s |
0DF2 | r .FIXUP D |
0DF2 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
0DF3 | r(40D8001C): ADD R0, SB, 1CH [data] |
0DF4 | s .FIXUP P |
0DF4 | s(F770A008): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENt |
0DF5 | t .FIXUP D |
0DF5 | t(8D000003): LDR SB, MT, MOD0 [ORP] |
0DF6 | t(80D0001C): LDR R0, SB, 1CH [data] |
0DF7 | t(4009001F): SUB R0, R0, 1FH |
0DF8 | t(E900008F): BNE 143 [0E88H] |
| qualident(obj)u;v ORG.MakeItem(x,w obj,x level)y;z CheckInt(x)a;b CheckReadOnly(x)c;d |
0DF9 | u(40E80004): ADD R0, SP, 4H |
0DFA | v(F7FFF219): BL -3559 [0014H] |
0DFB | w(40E8000C): ADD R0, SP, CH |
0DFC | w .FIXUP D |
0DFC | w(8D900007): LDR SB, MT, MOD9 [ORG] |
0DFD | w(41D80001): ADD R1, SB, VAR1 |
0DFE | x(82E00004): LDR R2, SP, 4H |
0DFF | y .FIXUP D |
0DFF | y(8D000003): LDR SB, MT, MOD0 [ORP] |
0E00 | y(83D00024): LDR R3, SB, 24H [data] |
0E01 | z .FIXUP P |
0E01 | z(F790800D): BL MOD9 [ORG] PROC8 |
0E02 | a(40E8000C): ADD R0, SP, CH |
0E03 | a .FIXUP D |
0E03 | a(8D900004): LDR SB, MT, MOD9 [ORG] |
0E04 | a(41D80001): ADD R1, SB, VAR1 |
0E05 | b(F7FFF267): BL -3481 [006DH] |
0E06 | c(40E8000C): ADD R0, SP, CH |
0E07 | c .FIXUP D |
0E07 | c(8D900004): LDR SB, MT, MOD9 [ORG] |
0E08 | c(41D80001): ADD R1, SB, VAR1 |
0E09 | d(F7FFF2DA): BL -3366 [00E4H] |
| IF sym = ORS.becomes THENe |
0E0A | e .FIXUP D |
0E0A | e(8D000003): LDR SB, MT, MOD0 [ORP] |
0E0B | e(80D0001C): LDR R0, SB, 1CH [data] |
0E0C | e(4009002A): SUB R0, R0, 2AH |
0E0D | e(E9000075): BNE 117 [0E83H] |
| ORS.Get(sym)f;g expression(y)h;i CheckInt(y)j;k ORG.For0(x,l y)m;n L0 := ORG.Here();o |
0E0E | f .FIXUP D |
0E0E | f(8D000004): LDR SB, MT, MOD0 [ORP] |
0E0F | f(40D8001C): ADD R0, SB, 1CH [data] |
0E10 | g .FIXUP P |
0E10 | g(F770A00F): BL MOD7 [ORS] PROC10 |
0E11 | h(40E80024): ADD R0, SP, 24H |
0E12 | h .FIXUP D |
0E12 | h(8D900004): LDR SB, MT, MOD9 [ORG] |
0E13 | h(41D80001): ADD R1, SB, VAR1 |
0E14 | i .FIXUP D |
0E14 | i(8D000002): LDR SB, MT, MOD0 [ORP] |
0E15 | i(82D00034): LDR R2, SB, 34H [data] |
0E16 | i(D15C815C): BLEQ MT [trap=5, pos=23681] |
0E17 | i(D7000002): BL R2 |
0E18 | j(40E80024): ADD R0, SP, 24H |
0E19 | j .FIXUP D |
0E19 | j(8D900005): LDR SB, MT, MOD9 [ORG] |
0E1A | j(41D80001): ADD R1, SB, VAR1 |
0E1B | k(F7FFF251): BL -3503 [006DH] |
0E1C | l(40E8000C): ADD R0, SP, CH |
0E1D | l .FIXUP D |
0E1D | l(8D900004): LDR SB, MT, MOD9 [ORG] |
0E1E | l(41D80001): ADD R1, SB, VAR1 |
0E1F | m(42E80024): ADD R2, SP, 24H |
0E20 | m .FIXUP D |
0E20 | m(8D900003): LDR SB, MT, MOD9 [ORG] |
0E21 | m(43D80001): ADD R3, SB, VAR1 |
0E22 | n .FIXUP P |
0E22 | n(F7927012): BL MOD9 [ORG] PROC39 |
0E23 | o .FIXUP P |
0E23 | o(F792A001): BL MOD9 [ORG] PROC42 |
0E24 | o(A0E0006C): STR R0, SP, 6CH |
| Check(ORS.to,p "no TO")q;r expression(z)s;t CheckInt(z)u;v obj.rdow := TRUE;x |
0E25 | p(40000032): MOV R0, R0, 32H |
0E26 | q .FIXUP D |
0E26 | q(8D000006): LDR SB, MT, MOD0 [ORP] |
0E27 | q(41D804BC): ADD R1, SB, 4BCH ["no TO"] |
0E28 | q(42000006): MOV R2, R0, 6H |
0E29 | r(F7FFF1D6): BL -3626 [0000H] |
0E2A | s(40E8003C): ADD R0, SP, 3CH |
0E2B | s .FIXUP D |
0E2B | s(8D900005): LDR SB, MT, MOD9 [ORG] |
0E2C | s(41D80001): ADD R1, SB, VAR1 |
0E2D | t .FIXUP D |
0E2D | t(8D000002): LDR SB, MT, MOD0 [ORP] |
0E2E | t(82D00034): LDR R2, SB, 34H [data] |
0E2F | t(D15CE35C): BLEQ MT [trap=5, pos=23779] |
0E30 | t(D7000002): BL R2 |
0E31 | u(40E8003C): ADD R0, SP, 3CH |
0E32 | u .FIXUP D |
0E32 | u(8D900005): LDR SB, MT, MOD9 [ORG] |
0E33 | u(41D80001): ADD R1, SB, VAR1 |
0E34 | v(F7FFF238): BL -3528 [006DH] |
0E35 | w(80E00004): LDR R0, SP, 4H |
0E36 | w(D15CF84C): BLEQ MT [trap=4, pos=23800] |
0E37 | x(41000001): MOV R1, R0, 1H |
0E38 | x(B1000003): STR R1, R0, 3H |
| IF sym = ORS.by THENy ORS.Get(sym)z;a expression(w)b;c CheckConst(w)d;e CheckInt(w)f |
0E39 | y .FIXUP D |
0E39 | y(8D000007): LDR SB, MT, MOD0 [ORP] |
0E3A | y(80D0001C): LDR R0, SB, 1CH [data] |
0E3B | y(40090033): SUB R0, R0, 33H |
0E3C | y(E9000013): BNE 19 [0E50H] |
0E3D | z .FIXUP D |
0E3D | z(8D000004): LDR SB, MT, MOD0 [ORP] |
0E3E | z(40D8001C): ADD R0, SB, 1CH [data] |
0E3F | a .FIXUP P |
0E3F | a(F770A01C): BL MOD7 [ORS] PROC10 |
0E40 | b(40E80054): ADD R0, SP, 54H |
0E41 | b .FIXUP D |
0E41 | b(8D900004): LDR SB, MT, MOD9 [ORG] |
0E42 | b(41D80001): ADD R1, SB, VAR1 |
0E43 | c .FIXUP D |
0E43 | c(8D000002): LDR SB, MT, MOD0 [ORP] |
0E44 | c(82D00034): LDR R2, SB, 34H [data] |
0E45 | c(D15D3F5C): BLEQ MT [trap=5, pos=23871] |
0E46 | c(D7000002): BL R2 |
0E47 | d(40E80054): ADD R0, SP, 54H |
0E48 | d .FIXUP D |
0E48 | d(8D900005): LDR SB, MT, MOD9 [ORG] |
0E49 | d(41D80001): ADD R1, SB, VAR1 |
0E4A | e(F7FFF287): BL -3449 [00D2H] |
0E4B | f(40E80054): ADD R0, SP, 54H |
0E4C | f .FIXUP D |
0E4C | f(8D900004): LDR SB, MT, MOD9 [ORG] |
0E4D | f(41D80001): ADD R1, SB, VAR1 |
| ELSEg ORGh.MakeConstItem(w,i ORB.intType,j 1)k |
0E4E | g(F7FFF21E): BL -3554 [006DH] |
0E4F | h(E7000007): B 7 [0E57H] |
0E50 | i(40E80054): ADD R0, SP, 54H |
0E51 | i .FIXUP D |
0E51 | i(8D900005): LDR SB, MT, MOD9 [ORG] |
0E52 | i(41D80001): ADD R1, SB, VAR1 |
0E53 | j .FIXUP D |
0E53 | j(8D800002): LDR SB, MT, MOD8 [ORB] |
0E54 | j(82D00009): LDR R2, SB, VAR9 |
0E55 | k(43000001): MOV R3, R0, 1H |
| ENDl ; |
0E56 | l .FIXUP P |
0E56 | l(F7905017): BL MOD9 [ORG] PROC5 |
| Check(ORS.do,m "no DO")n;o ORG.For1(x,p y,q z,r w,s L1)t;u |
0E57 | m(40000031): MOV R0, R0, 31H |
0E58 | n .FIXUP D |
0E58 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
0E59 | n(41D804C4): ADD R1, SB, 4C4H ["no DO"] |
0E5A | n(42000006): MOV R2, R0, 6H |
0E5B | o(F7FFF1A4): BL -3676 [0000H] |
0E5C | p(40E8000C): ADD R0, SP, CH |
0E5D | p .FIXUP D |
0E5D | p(8D900005): LDR SB, MT, MOD9 [ORG] |
0E5E | p(41D80001): ADD R1, SB, VAR1 |
0E5F | q(42E80024): ADD R2, SP, 24H |
0E60 | q .FIXUP D |
0E60 | q(8D900003): LDR SB, MT, MOD9 [ORG] |
0E61 | q(43D80001): ADD R3, SB, VAR1 |
0E62 | r(44E8003C): ADD R4, SP, 3CH |
0E63 | r .FIXUP D |
0E63 | r(8D900003): LDR SB, MT, MOD9 [ORG] |
0E64 | r(45D80001): ADD R5, SB, VAR1 |
0E65 | s(46E80054): ADD R6, SP, 54H |
0E66 | s .FIXUP D |
0E66 | s(8D900003): LDR SB, MT, MOD9 [ORG] |
0E67 | s(47D80001): ADD R7, SB, VAR1 |
0E68 | t(48E80070): ADD R8, SP, 70H |
0E69 | u .FIXUP P |
0E69 | u(F7928013): BL MOD9 [ORG] PROC40 |
| StatSequence;v Check(ORS.end,w "no END")x;y |
0E6A | v(F7FFFD6D): BL -659 [0BD8H] |
0E6B | w(40000035): MOV R0, R0, 35H |
0E6C | x .FIXUP D |
0E6C | x(8D000006): LDR SB, MT, MOD0 [ORP] |
0E6D | x(41D804CC): ADD R1, SB, 4CCH ["no END"] |
0E6E | x(42000007): MOV R2, R0, 7H |
0E6F | y(F7FFF190): BL -3696 [0000H] |
| ORG.For2(x,z y,a w)b;c ORG.BJump(L0)d;e ORG.FixLink(L1)f;g obj.rdoh := FALSE |
0E70 | z(40E8000C): ADD R0, SP, CH |
0E71 | z .FIXUP D |
0E71 | z(8D900005): LDR SB, MT, MOD9 [ORG] |
0E72 | z(41D80001): ADD R1, SB, VAR1 |
0E73 | a(42E80024): ADD R2, SP, 24H |
0E74 | a .FIXUP D |
0E74 | a(8D900003): LDR SB, MT, MOD9 [ORG] |
0E75 | a(43D80001): ADD R3, SB, VAR1 |
0E76 | b(44E80054): ADD R4, SP, 54H |
0E77 | b .FIXUP D |
0E77 | b(8D900003): LDR SB, MT, MOD9 [ORG] |
0E78 | b(45D80001): ADD R5, SB, VAR1 |
0E79 | c .FIXUP P |
0E79 | c(F7929010): BL MOD9 [ORG] PROC41 |
0E7A | d(80E0006C): LDR R0, SP, 6CH |
0E7B | e .FIXUP P |
0E7B | e(F792D002): BL MOD9 [ORG] PROC45 |
0E7C | f(80E00070): LDR R0, SP, 70H |
0E7D | g .FIXUP P |
0E7D | g(F7904002): BL MOD9 [ORG] PROC4 |
0E7E | h(80E00004): LDR R0, SP, 4H |
0E7F | h(D15E5B4C): BLEQ MT [trap=4, pos=24155] |
| ELSEi ORSj.Mark(":= expected")k |
0E80 | i(41000000): MOV R1, R0, 0H |
0E81 | i(B1000003): STR R1, R0, 3H |
0E82 | j(E7000004): B 4 [0E87H] |
0E83 | k .FIXUP D |
0E83 | k(8D00000C): LDR SB, MT, MOD0 [ORP] |
0E84 | k(40D804D4): ADD R0, SB, 4D4H [":= expected"] |
0E85 | k(4100000C): MOV R1, R0, CH |
| ENDl |
0E86 | l .FIXUP P |
0E86 | l(F7709009): BL MOD7 [ORS] PROC9 |
| ELSE ORSm.Mark("identifier expected")n |
0E87 | m(E7000004): B 4 [0E8CH] |
0E88 | n .FIXUP D |
0E88 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
0E89 | n(40D804E0): ADD R0, SB, 4E0H ["identifier expected"] |
0E8A | n(41000014): MOV R1, R0, 14H |
| ENDo |
0E8B | o .FIXUP P |
0E8B | o(F7709005): BL MOD7 [ORS] PROC9 |
| ELSIF symp = ORS.case THENq |
0E8C | p(E7000068): B 104 [0EF5H] |
0E8D | q .FIXUP D |
0E8D | q(8D000005): LDR SB, MT, MOD0 [ORP] |
0E8E | q(80D0001C): LDR R0, SB, 1CH [data] |
0E8F | q(40090024): SUB R0, R0, 24H |
0E90 | q(E9000064): BNE 100 [0EF5H] |
| ORS.Get(sym)r;s |
0E91 | r .FIXUP D |
0E91 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
0E92 | r(40D8001C): ADD R0, SB, 1CH [data] |
0E93 | s .FIXUP P |
0E93 | s(F770A008): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENt |
0E94 | t .FIXUP D |
0E94 | t(8D000003): LDR SB, MT, MOD0 [ORP] |
0E95 | t(80D0001C): LDR R0, SB, 1CH [data] |
0E96 | t(4009001F): SUB R0, R0, 1FH |
0E97 | t(E9000054): BNE 84 [0EECH] |
| qualident(obj)u;v orgtype := obj.typew;x |
0E98 | u(40E80004): ADD R0, SP, 4H |
0E99 | v(F7FFF17A): BL -3718 [0014H] |
0E9A | w(80E00004): LDR R0, SP, 4H |
0E9B | w(D15F564C): BLEQ MT [trap=4, pos=24406] |
0E9C | x(80000010): LDR R0, R0, 10H |
0E9D | x(A0E00008): STR R0, SP, 8H |
| IF (orgtype.formy = ORB.Pointer)z OR (aorgtype.formb = ORB.Record)c & (dobj.classe = ORB.Par)f THENg |
0E9E | y(80E00008): LDR R0, SP, 8H |
0E9F | y(D15F724C): BLEQ MT [trap=4, pos=24434] |
0EA0 | z(80000000): LDR R0, R0, 0H |
0EA1 | z(40090007): SUB R0, R0, 7H |
0EA2 | a(E100000A): BEQ 10 [0EADH] |
0EA3 | b(80E00008): LDR R0, SP, 8H |
0EA4 | b(D15F924C): BLEQ MT [trap=4, pos=24466] |
0EA5 | c(80000000): LDR R0, R0, 0H |
0EA6 | c(4009000D): SUB R0, R0, DH |
0EA7 | d(E9000033): BNE 51 [0EDBH] |
0EA8 | e(80E00004): LDR R0, SP, 4H |
0EA9 | e(D15FAD4C): BLEQ MT [trap=4, pos=24493] |
0EAA | f(90000000): LDR R0, R0, 0H |
0EAB | f(40090003): SUB R0, R0, 3H |
0EAC | g(E900002E): BNE 46 [0EDBH] |
| Check(ORS.of,h "OF expected")i;j TypeCase(obj,k x)l;m L0 := 0;n |
0EAD | h(40000030): MOV R0, R0, 30H |
0EAE | i .FIXUP D |
0EAE | i(8D00001A): LDR SB, MT, MOD0 [ORP] |
0EAF | i(41D804F4): ADD R1, SB, 4F4H ["OF expected"] |
0EB0 | i(4200000C): MOV R2, R0, CH |
0EB1 | j(F7FFF14E): BL -3762 [0000H] |
0EB2 | k(80E00004): LDR R0, SP, 4H |
0EB3 | l(41E8000C): ADD R1, SP, CH |
0EB4 | l .FIXUP D |
0EB4 | l(8D900006): LDR SB, MT, MOD9 [ORG] |
0EB5 | l(42D80001): ADD R2, SB, VAR1 |
0EB6 | m(F7FFFCD5): BL -811 [0B8CH] |
0EB7 | n(40000000): MOV R0, R0, 0H |
0EB8 | n(A0E0006C): STR R0, SP, 6CH |
| WHILE sym = ORS.bar DOo |
0EB9 | o .FIXUP D |
0EB9 | o(8D000005): LDR SB, MT, MOD0 [ORP] |
0EBA | o(80D0001C): LDR R0, SB, 1CH [data] |
0EBB | o(40090036): SUB R0, R0, 36H |
0EBC | o(E9000013): BNE 19 [0ED0H] |
| ORS.Get(sym)p;q ORG.FJump(L0)r;s ORG.Fixup(x)t;u obj.typev := orgtype;w TypeCase(obj,x x)y |
0EBD | p .FIXUP D |
0EBD | p(8D000004): LDR SB, MT, MOD0 [ORP] |
0EBE | p(40D8001C): ADD R0, SB, 1CH [data] |
0EBF | q .FIXUP P |
0EBF | q(F770A02C): BL MOD7 [ORS] PROC10 |
0EC0 | r(40E8006C): ADD R0, SP, 6CH |
0EC1 | s .FIXUP P |
0EC1 | s(F792B002): BL MOD9 [ORG] PROC43 |
0EC2 | t(40E8000C): ADD R0, SP, CH |
0EC3 | t .FIXUP D |
0EC3 | t(8D900006): LDR SB, MT, MOD9 [ORG] |
0EC4 | t(41D80001): ADD R1, SB, VAR1 |
0EC5 | u .FIXUP P |
0EC5 | u(F792F004): BL MOD9 [ORG] PROC47 |
0EC6 | v(80E00004): LDR R0, SP, 4H |
0EC7 | v(D160674C): BLEQ MT [trap=4, pos=24679] |
0EC8 | w(81E00008): LDR R1, SP, 8H |
0EC9 | w(A1000010): STR R1, R0, 10H |
0ECA | x(80E00004): LDR R0, SP, 4H |
0ECB | y(41E8000C): ADD R1, SP, CH |
0ECC | y .FIXUP D |
0ECC | y(8D900009): LDR SB, MT, MOD9 [ORG] |
0ECD | y(42D80001): ADD R2, SB, VAR1 |
| ENDz ; |
0ECE | z(F7FFFCBD): BL -835 [0B8CH] |
0ECF | z(E7FFFFE9): B -23 [0EB9H] |
| ORG.Fixup(x)a;b ORG.FixLink(L0)c;d obj.typee := orgtype |
0ED0 | a(40E8000C): ADD R0, SP, CH |
0ED1 | a .FIXUP D |
0ED1 | a(8D900005): LDR SB, MT, MOD9 [ORG] |
0ED2 | a(41D80001): ADD R1, SB, VAR1 |
0ED3 | b .FIXUP P |
0ED3 | b(F792F00E): BL MOD9 [ORG] PROC47 |
0ED4 | c(80E0006C): LDR R0, SP, 6CH |
0ED5 | d .FIXUP P |
0ED5 | d(F7904002): BL MOD9 [ORG] PROC4 |
0ED6 | e(80E00004): LDR R0, SP, 4H |
0ED7 | e(D160CA4C): BLEQ MT [trap=4, pos=24778] |
| ELSEf ORSg.Mark("numeric case not implemented")h;i |
0ED8 | f(81E00008): LDR R1, SP, 8H |
0ED9 | f(A1000010): STR R1, R0, 10H |
0EDA | g(E7000010): B 16 [0EEBH] |
0EDB | h .FIXUP D |
0EDB | h(8D00000A): LDR SB, MT, MOD0 [ORP] |
0EDC | h(40D80500): ADD R0, SB, 500H ["numeric case not implemented"] |
0EDD | h(4100001D): MOV R1, R0, 1DH |
0EDE | i .FIXUP P |
0EDE | i(F7709009): BL MOD7 [ORS] PROC9 |
| Check(ORS.of,j "OF expected")k;l SkipCase;m |
0EDF | j(40000030): MOV R0, R0, 30H |
0EE0 | k .FIXUP D |
0EE0 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
0EE1 | k(41D80520): ADD R1, SB, 520H ["OF expected"] |
0EE2 | k(4200000C): MOV R2, R0, CH |
0EE3 | l(F7FFF11C): BL -3812 [0000H] |
0EE4 | m(F7FFFCE2): BL -798 [0BC7H] |
| WHILE sym = ORS.bar DOn SkipCase ENDo |
0EE5 | n .FIXUP D |
0EE5 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
0EE6 | n(80D0001C): LDR R0, SB, 1CH [data] |
0EE7 | n(40090036): SUB R0, R0, 36H |
0EE8 | n(E9000002): BNE 2 [0EEBH] |
0EE9 | o(F7FFFCDD): BL -803 [0BC7H] |
0EEA | o(E7FFFFFA): B -6 [0EE5H] |
| END |
| ELSE ORSp.Mark("ident expected")q |
0EEB | p(E7000004): B 4 [0EF0H] |
0EEC | q .FIXUP D |
0EEC | q(8D000007): LDR SB, MT, MOD0 [ORP] |
0EED | q(40D8052C): ADD R0, SB, 52CH ["ident expected"] |
0EEE | q(4100000F): MOV R1, R0, FH |
| ENDr ; |
0EEF | r .FIXUP P |
0EEF | r(F7709011): BL MOD7 [ORS] PROC9 |
| Check(ORS.end,s "no END")t |
0EF0 | s(40000035): MOV R0, R0, 35H |
0EF1 | t .FIXUP D |
0EF1 | t(8D000005): LDR SB, MT, MOD0 [ORP] |
0EF2 | t(41D8053C): ADD R1, SB, 53CH ["no END"] |
0EF3 | t(42000007): MOV R2, R0, 7H |
| ENDu ; |
0EF4 | u(F7FFF10B): BL -3829 [0000H] |
| ORG.CheckRegs;v |
0EF5 | v .FIXUP P |
0EF5 | v(F7903006): BL MOD9 [ORG] PROC3 |
| IF sym = ORS.semicolon THENw ORS.Get(sym)x |
0EF6 | w .FIXUP D |
0EF6 | w(8D000005): LDR SB, MT, MOD0 [ORP] |
0EF7 | w(80D0001C): LDR R0, SB, 1CH [data] |
0EF8 | w(40090034): SUB R0, R0, 34H |
0EF9 | w(E9000004): BNE 4 [0EFEH] |
0EFA | x .FIXUP D |
0EFA | x(8D000004): LDR SB, MT, MOD0 [ORP] |
0EFB | x(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFy symz < ORS.semicolon THENa ORS.Mark("missing semicolon?")b |
0EFC | y .FIXUP P |
0EFC | y(F770A007): BL MOD7 [ORS] PROC10 |
0EFD | z(E7000008): B 8 [0F06H] |
0EFE | a .FIXUP D |
0EFE | a(8D000004): LDR SB, MT, MOD0 [ORP] |
0EFF | a(80D0001C): LDR R0, SB, 1CH [data] |
0F00 | a(40090034): SUB R0, R0, 34H |
0F01 | a(ED000004): BGE 4 [0F06H] |
0F02 | b .FIXUP D |
0F02 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
0F03 | b(40D80544): ADD R0, SB, 544H ["missing semicolon?"] |
0F04 | b(41000013): MOV R1, R0, 13H |
| ENDc |
0F05 | c .FIXUP P |
0F05 | c(F7709009): BL MOD7 [ORS] PROC9 |
| UNTIL sym > ORS.semicolon |
| ENDd StatSequence; |
0F06 | d .FIXUP D |
0F06 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
0F07 | d(80D0001C): LDR R0, SB, 1CH [data] |
0F08 | d(40090034): SUB R0, R0, 34H |
0F09 | d(E6FFFCD0): BLE -816 [0BDAH] |
0F0A | d(8FE00000): LDR LNK, SP, 0H |
0F0B | d(4EE80078): ADD SP, SP, 78H |
0F0C | d(C700000F): B LNK |
| |
| (* Types and declarations *) |
| |
| PROCEDURE IdentList(class: INTEGER; VAR first: ORB.Object); |
| VAR obj: ORB.Object; |
| BEGINe |
0F0D | e(4EE90010): SUB SP, SP, 10H |
0F0E | e(AFE00000): STR LNK, SP, 0H |
0F0F | e(A0E00004): STR R0, SP, 4H |
0F10 | e(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.ident THENf |
0F11 | f .FIXUP D |
0F11 | f(8D00000B): LDR SB, MT, MOD0 [ORP] |
0F12 | f(80D0001C): LDR R0, SB, 1CH [data] |
0F13 | f(4009001F): SUB R0, R0, 1FH |
0F14 | f(E9000037): BNE 55 [0F4CH] |
| ORB.NewObj(first,g ORS.id,h class)i;j ORS.Get(sym)k;l CheckExport(first.expom)n;o |
0F15 | g(80E00008): LDR R0, SP, 8H |
0F16 | h .FIXUP D |
0F16 | h(8D700005): LDR SB, MT, MOD7 [ORS] |
0F17 | h(41D80004): ADD R1, SB, VAR4 |
0F18 | i(82E00004): LDR R2, SP, 4H |
0F19 | j .FIXUP P |
0F19 | j(F780F014): BL MOD8 [ORB] PROC15 |
0F1A | k .FIXUP D |
0F1A | k(8D000004): LDR SB, MT, MOD0 [ORP] |
0F1B | k(40D8001C): ADD R0, SB, 1CH [data] |
0F1C | l .FIXUP P |
0F1C | l(F770A003): BL MOD7 [ORS] PROC10 |
0F1D | m(80E00008): LDR R0, SP, 8H |
0F1E | m(80000000): LDR R0, R0, 0H |
0F1F | m(D163904C): BLEQ MT [trap=4, pos=25488] |
0F20 | n(40080002): ADD R0, R0, 2H |
0F21 | o(F7FFF1D0): BL -3632 [00F2H] |
| WHILE sym = ORS.comma DOp |
0F22 | p .FIXUP D |
0F22 | p(8D000008): LDR SB, MT, MOD0 [ORP] |
0F23 | p(80D0001C): LDR R0, SB, 1CH [data] |
0F24 | p(40090028): SUB R0, R0, 28H |
0F25 | p(E9000019): BNE 25 [0F3FH] |
| ORS.Get(sym)q;r |
0F26 | q .FIXUP D |
0F26 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
0F27 | q(40D8001C): ADD R0, SB, 1CH [data] |
0F28 | r .FIXUP P |
0F28 | r(F770A00C): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENs ORB.NewObj(obj,t ORS.id,u class)v;w ORS.Get(sym)x;y CheckExport(obj.expoz)a |
0F29 | s .FIXUP D |
0F29 | s(8D000003): LDR SB, MT, MOD0 [ORP] |
0F2A | s(80D0001C): LDR R0, SB, 1CH [data] |
0F2B | s(4009001F): SUB R0, R0, 1FH |
0F2C | s(E900000D): BNE 13 [0F3AH] |
0F2D | t(40E8000C): ADD R0, SP, CH |
0F2E | u .FIXUP D |
0F2E | u(8D700005): LDR SB, MT, MOD7 [ORS] |
0F2F | u(41D80004): ADD R1, SB, VAR4 |
0F30 | v(82E00004): LDR R2, SP, 4H |
0F31 | w .FIXUP P |
0F31 | w(F780F009): BL MOD8 [ORB] PROC15 |
0F32 | x .FIXUP D |
0F32 | x(8D000004): LDR SB, MT, MOD0 [ORP] |
0F33 | x(40D8001C): ADD R0, SB, 1CH [data] |
0F34 | y .FIXUP P |
0F34 | y(F770A003): BL MOD7 [ORS] PROC10 |
0F35 | z(80E0000C): LDR R0, SP, CH |
0F36 | z(D1642A4C): BLEQ MT [trap=4, pos=25642] |
0F37 | a(40080002): ADD R0, R0, 2H |
| ELSEb ORSc.Mark("ident?")d |
0F38 | b(F7FFF1B9): BL -3655 [00F2H] |
0F39 | c(E7000004): B 4 [0F3EH] |
0F3A | d .FIXUP D |
0F3A | d(8D000008): LDR SB, MT, MOD0 [ORP] |
0F3B | d(40D80558): ADD R0, SB, 558H ["ident?"] |
0F3C | d(41000007): MOV R1, R0, 7H |
| ENDe |
0F3D | e .FIXUP P |
0F3D | e(F7709009): BL MOD7 [ORS] PROC9 |
| ENDf; |
0F3E | f(E7FFFFE3): B -29 [0F22H] |
| IF sym = ORS.colon THENg ORS.Get(sym)h ELSEi ORSj.Mark(":?")k ENDl |
0F3F | g .FIXUP D |
0F3F | g(8D000005): LDR SB, MT, MOD0 [ORP] |
0F40 | g(80D0001C): LDR R0, SB, 1CH [data] |
0F41 | g(40090029): SUB R0, R0, 29H |
0F42 | g(E9000004): BNE 4 [0F47H] |
0F43 | h .FIXUP D |
0F43 | h(8D000004): LDR SB, MT, MOD0 [ORP] |
0F44 | h(40D8001C): ADD R0, SB, 1CH [data] |
0F45 | i .FIXUP P |
0F45 | i(F770A008): BL MOD7 [ORS] PROC10 |
0F46 | j(E7000004): B 4 [0F4BH] |
0F47 | k .FIXUP D |
0F47 | k(8D000004): LDR SB, MT, MOD0 [ORP] |
0F48 | k(40D80560): ADD R0, SB, 560H [":?"] |
0F49 | k(41000003): MOV R1, R0, 3H |
0F4A | l .FIXUP P |
0F4A | l(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE firstm := NIL |
0F4B | m(E7000003): B 3 [0F4FH] |
| ENDn |
0F4C | n(40000000): MOV R0, R0, 0H |
0F4D | n(81E00008): LDR R1, SP, 8H |
0F4E | n(A0100000): STR R0, R1, 0H |
| ENDo IdentList; |
0F4F | o(8FE00000): LDR LNK, SP, 0H |
0F50 | o(4EE80010): ADD SP, SP, 10H |
0F51 | o(C700000F): B LNK |
| |
| PROCEDURE ArrayType(VAR type: ORB.Type); |
| VAR x: ORG.Item; typ: ORB.Type; len: LONGINT; |
| BEGINp NEW(typ);q typ.formr := ORB.NoTyp;s |
0F52 | p(4EE90028): SUB SP, SP, 28H |
0F53 | p(AFE00000): STR LNK, SP, 0H |
0F54 | p(A0E00004): STR R0, SP, 4H |
0F55 | q(40E80020): ADD R0, SP, 20H |
0F56 | q .FIXUP D |
0F56 | q(8D80000F): LDR SB, MT, MOD8 [ORB] |
0F57 | q(41D80003): ADD R1, SB, VAR3 |
0F58 | q(D765460C): BL MT [trap=0, pos=25926] |
0F59 | r(80E00020): LDR R0, SP, 20H |
0F5A | r(D1654F4C): BLEQ MT [trap=4, pos=25935] |
0F5B | s(41000009): MOV R1, R0, 9H |
0F5C | s(A1000000): STR R1, R0, 0H |
| expression(x)t;u |
0F5D | t(40E80008): ADD R0, SP, 8H |
0F5E | t .FIXUP D |
0F5E | t(8D900008): LDR SB, MT, MOD9 [ORG] |
0F5F | t(41D80001): ADD R1, SB, VAR1 |
0F60 | u .FIXUP D |
0F60 | u(8D000002): LDR SB, MT, MOD0 [ORP] |
0F61 | u(82D00034): LDR R2, SB, 34H [data] |
0F62 | u(D165705C): BLEQ MT [trap=5, pos=25968] |
0F63 | u(D7000002): BL R2 |
| IF (x.mode = ORB.Const)v & (wx.type.formx = ORB.Int)y & (zx.a >= 0)a THENb len := x.a |
0F64 | v(80E00008): LDR R0, SP, 8H |
0F65 | v(40090001): SUB R0, R0, 1H |
0F66 | w(E900000B): BNE 11 [0F72H] |
0F67 | x(80E0000C): LDR R0, SP, CH |
0F68 | x(D1659B4C): BLEQ MT [trap=4, pos=26011] |
0F69 | y(80000000): LDR R0, R0, 0H |
0F6A | y(40090004): SUB R0, R0, 4H |
0F6B | z(E9000006): BNE 6 [0F72H] |
0F6C | a(80E00010): LDR R0, SP, 10H |
0F6D | a(40090000): SUB R0, R0, 0H |
0F6E | b(E5000003): BLT 3 [0F72H] |
| ELSEc lend := 1;e ORS.Mark("not a valid length")f |
0F6F | c(80E00010): LDR R0, SP, 10H |
0F70 | c(A0E00024): STR R0, SP, 24H |
0F71 | d(E7000006): B 6 [0F78H] |
0F72 | e(40000001): MOV R0, R0, 1H |
0F73 | e(A0E00024): STR R0, SP, 24H |
0F74 | f .FIXUP D |
0F74 | f(8D000014): LDR SB, MT, MOD0 [ORP] |
0F75 | f(40D80564): ADD R0, SB, 564H ["not a valid length"] |
0F76 | f(41000013): MOV R1, R0, 13H |
| ENDg ; |
0F77 | g .FIXUP P |
0F77 | g(F770902D): BL MOD7 [ORS] PROC9 |
| IF sym = ORS.of THENh ORS.Get(sym)i;j Type(typ.basek)l;m |
0F78 | h .FIXUP D |
0F78 | h(8D000004): LDR SB, MT, MOD0 [ORP] |
0F79 | h(80D0001C): LDR R0, SB, 1CH [data] |
0F7A | h(40090030): SUB R0, R0, 30H |
0F7B | h(E900001D): BNE 29 [0F99H] |
0F7C | i .FIXUP D |
0F7C | i(8D000004): LDR SB, MT, MOD0 [ORP] |
0F7D | i(40D8001C): ADD R0, SB, 1CH [data] |
0F7E | j .FIXUP P |
0F7E | j(F770A007): BL MOD7 [ORS] PROC10 |
0F7F | k(80E00020): LDR R0, SP, 20H |
0F80 | k(D166344C): BLEQ MT [trap=4, pos=26164] |
0F81 | l(4008001C): ADD R0, R0, 1CH |
0F82 | m .FIXUP D |
0F82 | m(8D000006): LDR SB, MT, MOD0 [ORP] |
0F83 | m(81D00038): LDR R1, SB, 38H [data] |
0F84 | m(D166365C): BLEQ MT [trap=5, pos=26166] |
0F85 | m(D7000001): BL R1 |
| IF (typ.basen.formo = ORB.Array)p & (qtyp.baser.lens < 0)t THENu ORS.Mark("dyn array not allowed")v ENDw |
0F86 | n(80E00020): LDR R0, SP, 20H |
0F87 | n(D166494C): BLEQ MT [trap=4, pos=26185] |
0F88 | o(8000001C): LDR R0, R0, 1CH |
0F89 | o(D1664E4C): BLEQ MT [trap=4, pos=26190] |
0F8A | p(80000000): LDR R0, R0, 0H |
0F8B | p(4009000C): SUB R0, R0, CH |
0F8C | q(E900000B): BNE 11 [0F98H] |
0F8D | r(80E00020): LDR R0, SP, 20H |
0F8E | r(D166674C): BLEQ MT [trap=4, pos=26215] |
0F8F | s(8000001C): LDR R0, R0, 1CH |
0F90 | s(D1666B4C): BLEQ MT [trap=4, pos=26219] |
0F91 | t(80000010): LDR R0, R0, 10H |
0F92 | t(40090000): SUB R0, R0, 0H |
0F93 | u(ED000004): BGE 4 [0F98H] |
0F94 | v .FIXUP D |
0F94 | v(8D000012): LDR SB, MT, MOD0 [ORP] |
0F95 | v(40D80578): ADD R0, SB, 578H ["dyn array not allowed"] |
0F96 | v(41000016): MOV R1, R0, 16H |
0F97 | w .FIXUP P |
0F97 | w(F7709019): BL MOD7 [ORS] PROC9 |
| ELSIF symx = ORS.comma THENy ORS.Get(sym)z;a ArrayType(typ.baseb)c |
0F98 | x(E7000015): B 21 [0FAEH] |
0F99 | y .FIXUP D |
0F99 | y(8D000005): LDR SB, MT, MOD0 [ORP] |
0F9A | y(80D0001C): LDR R0, SB, 1CH [data] |
0F9B | y(40090028): SUB R0, R0, 28H |
0F9C | y(E9000008): BNE 8 [0FA5H] |
0F9D | z .FIXUP D |
0F9D | z(8D000004): LDR SB, MT, MOD0 [ORP] |
0F9E | z(40D8001C): ADD R0, SB, 1CH [data] |
0F9F | a .FIXUP P |
0F9F | a(F770A008): BL MOD7 [ORS] PROC10 |
0FA0 | b(80E00020): LDR R0, SP, 20H |
0FA1 | b(D166DB4C): BLEQ MT [trap=4, pos=26331] |
0FA2 | c(4008001C): ADD R0, R0, 1CH |
| ELSEd ORSe.Mark("missing OF")f;g typ.baseh := ORB.intType |
0FA3 | d(F7FFFFAE): BL -82 [0F52H] |
0FA4 | e(E7000009): B 9 [0FAEH] |
0FA5 | f .FIXUP D |
0FA5 | f(8D000008): LDR SB, MT, MOD0 [ORP] |
0FA6 | f(40D80590): ADD R0, SB, 590H ["missing OF"] |
0FA7 | f(4100000B): MOV R1, R0, BH |
0FA8 | g .FIXUP P |
0FA8 | g(F7709009): BL MOD7 [ORS] PROC9 |
0FA9 | h(80E00020): LDR R0, SP, 20H |
0FAA | h(D167064C): BLEQ MT [trap=4, pos=26374] |
| ENDi ; |
0FAB | i .FIXUP D |
0FAB | i(8D800006): LDR SB, MT, MOD8 [ORB] |
0FAC | i(81D00009): LDR R1, SB, VAR9 |
0FAD | i(A100001C): STR R1, R0, 1CH |
| typ.sizej := (len * typ.basek.sizel +m 3)n DIV 4 *o 4;p |
0FAE | j(80E00020): LDR R0, SP, 20H |
0FAF | j(D1672C4C): BLEQ MT [trap=4, pos=26412] |
0FB0 | k(81E00020): LDR R1, SP, 20H |
0FB1 | k(D1673F4C): BLEQ MT [trap=4, pos=26431] |
0FB2 | l(8110001C): LDR R1, R1, 1CH |
0FB3 | l(D167444C): BLEQ MT [trap=4, pos=26436] |
0FB4 | m(82E00024): LDR R2, SP, 24H |
0FB5 | m(81100020): LDR R1, R1, 20H |
0FB6 | m(012A0001): MUL R1, R2, R1 |
0FB7 | n(41180003): ADD R1, R1, 3H |
0FB8 | o(41120002): ASR R1, R1, 2H |
0FB9 | p(41110002): LSL R1, R1, 2H |
0FBA | p(A1000020): STR R1, R0, 20H |
| typ.formq := ORB.Array;r typ.lens := len;t type := typ |
0FBB | q(80E00020): LDR R0, SP, 20H |
0FBC | q(D167614C): BLEQ MT [trap=4, pos=26465] |
0FBD | r(4100000C): MOV R1, R0, CH |
0FBE | r(A1000000): STR R1, R0, 0H |
0FBF | s(80E00020): LDR R0, SP, 20H |
0FC0 | s(D167774C): BLEQ MT [trap=4, pos=26487] |
0FC1 | t(81E00024): LDR R1, SP, 24H |
0FC2 | t(A1000010): STR R1, R0, 10H |
| ENDu ArrayType; |
0FC3 | u(80E00020): LDR R0, SP, 20H |
0FC4 | u(81E00004): LDR R1, SP, 4H |
0FC5 | u(A0100000): STR R0, R1, 0H |
0FC6 | u(8FE00000): LDR LNK, SP, 0H |
0FC7 | u(4EE80028): ADD SP, SP, 28H |
0FC8 | u(C700000F): B LNK |
| |
| PROCEDURE RecordType(VAR type: ORB.Type); |
| VAR obj, obj0, new, bot, base: ORB.Object; |
| typ, tp: ORB.Type; |
| offset, off, n: LONGINT; |
| BEGINv NEW(typ);w typ.formx := ORB.NoTyp;y typ.basez := NIL;a typ.mnob := -level;c typ.nofpard := 0;e offset := 0;f bot := NIL;g |
0FC9 | v(4EE90030): SUB SP, SP, 30H |
0FCA | v(AFE00000): STR LNK, SP, 0H |
0FCB | v(A0E00004): STR R0, SP, 4H |
0FCC | w(40E8001C): ADD R0, SP, 1CH |
0FCD | w .FIXUP D |
0FCD | w(8D800022): LDR SB, MT, MOD8 [ORB] |
0FCE | w(41D80003): ADD R1, SB, VAR3 |
0FCF | w(D768420C): BL MT [trap=0, pos=26690] |
0FD0 | x(80E0001C): LDR R0, SP, 1CH |
0FD1 | x(D1684B4C): BLEQ MT [trap=4, pos=26699] |
0FD2 | y(41000009): MOV R1, R0, 9H |
0FD3 | y(A1000000): STR R1, R0, 0H |
0FD4 | z(80E0001C): LDR R0, SP, 1CH |
0FD5 | z(D168624C): BLEQ MT [trap=4, pos=26722] |
0FD6 | a(41000000): MOV R1, R0, 0H |
0FD7 | a(A100001C): STR R1, R0, 1CH |
0FD8 | b(80E0001C): LDR R0, SP, 1CH |
0FD9 | b(D168724C): BLEQ MT [trap=4, pos=26738] |
0FDA | c .FIXUP D |
0FDA | c(8D00000D): LDR SB, MT, MOD0 [ORP] |
0FDB | c(81D00024): LDR R1, SB, 24H [data] |
0FDC | c(42000000): MOV R2, R0, 0H |
0FDD | c(01290001): SUB R1, R2, R1 |
0FDE | c(A1000008): STR R1, R0, 8H |
0FDF | d(80E0001C): LDR R0, SP, 1CH |
0FE0 | d(D168884C): BLEQ MT [trap=4, pos=26760] |
0FE1 | e(41000000): MOV R1, R0, 0H |
0FE2 | e(A100000C): STR R1, R0, CH |
0FE3 | f(40000000): MOV R0, R0, 0H |
0FE4 | f(A0E00024): STR R0, SP, 24H |
0FE5 | g(40000000): MOV R0, R0, 0H |
0FE6 | g(A0E00014): STR R0, SP, 14H |
| IF sym = ORS.lparen THENh |
0FE7 | h(80D0001C): LDR R0, SB, 1CH |
0FE8 | h(4009001C): SUB R0, R0, 1CH |
0FE9 | h(E9000050): BNE 80 [103AH] |
| ORS.Get(sym)i;j (*record extension*) |
0FEA | i .FIXUP D |
0FEA | i(8D000010): LDR SB, MT, MOD0 [ORP] |
0FEB | i(40D8001C): ADD R0, SB, 1CH [data] |
0FEC | j .FIXUP P |
0FEC | j(F770A044): BL MOD7 [ORS] PROC10 |
| IF level # 0 THENk ORS.Mark("extension of local types not implemented")l ENDm ; |
0FED | k .FIXUP D |
0FED | k(8D000003): LDR SB, MT, MOD0 [ORP] |
0FEE | k(80D00024): LDR R0, SB, 24H [data] |
0FEF | k(E1000004): BEQ 4 [0FF4H] |
0FF0 | l .FIXUP D |
0FF0 | l(8D000003): LDR SB, MT, MOD0 [ORP] |
0FF1 | l(40D8059C): ADD R0, SB, 59CH ["extension of local types not implemented"] |
0FF2 | l(41000029): MOV R1, R0, 29H |
0FF3 | m .FIXUP P |
0FF3 | m(F7709007): BL MOD7 [ORS] PROC9 |
| IF sym = ORS.ident THENn |
0FF4 | n .FIXUP D |
0FF4 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
0FF5 | n(80D0001C): LDR R0, SB, 1CH [data] |
0FF6 | n(4009001F): SUB R0, R0, 1FH |
0FF7 | n(E9000039): BNE 57 [1031H] |
| qualident(base)o;p |
0FF8 | o(40E80018): ADD R0, SP, 18H |
0FF9 | p(F7FFF01A): BL -4070 [0014H] |
| IF base.classq = ORB.Typ THENr |
0FFA | q(80E00018): LDR R0, SP, 18H |
0FFB | q(D1698D4C): BLEQ MT [trap=4, pos=27021] |
0FFC | r(90000000): LDR R0, R0, 0H |
0FFD | r(40090005): SUB R0, R0, 5H |
0FFE | r(E900002D): BNE 45 [102CH] |
| IF base.types.formt = ORB.Record THENu typ.basev := base.typew |
0FFF | s(80E00018): LDR R0, SP, 18H |
1000 | s(D169B34C): BLEQ MT [trap=4, pos=27059] |
1001 | t(80000010): LDR R0, R0, 10H |
1002 | t(D169B84C): BLEQ MT [trap=4, pos=27064] |
1003 | u(80000000): LDR R0, R0, 0H |
1004 | u(4009000D): SUB R0, R0, DH |
1005 | u(E9000007): BNE 7 [100DH] |
1006 | v(80E0001C): LDR R0, SP, 1CH |
1007 | v(D169D34C): BLEQ MT [trap=4, pos=27091] |
1008 | w(81E00018): LDR R1, SP, 18H |
1009 | w(D169E04C): BLEQ MT [trap=4, pos=27104] |
| ELSEx typy.basez := ORB.intType;a ORS.Mark("invalid extension")b |
100A | x(81100010): LDR R1, R1, 10H |
100B | x(A100001C): STR R1, R0, 1CH |
100C | y(E7000009): B 9 [1016H] |
100D | z(80E0001C): LDR R0, SP, 1CH |
100E | z(D169F84C): BLEQ MT [trap=4, pos=27128] |
100F | a .FIXUP D |
100F | a(8D80001B): LDR SB, MT, MOD8 [ORB] |
1010 | a(81D00009): LDR R1, SB, VAR9 |
1011 | a(A100001C): STR R1, R0, 1CH |
1012 | b .FIXUP D |
1012 | b(8D000003): LDR SB, MT, MOD0 [ORP] |
1013 | b(40D805C8): ADD R0, SB, 5C8H ["invalid extension"] |
1014 | b(41000012): MOV R1, R0, 12H |
| ENDc ; |
1015 | c .FIXUP P |
1015 | c(F7709022): BL MOD7 [ORS] PROC9 |
| typ.nofpard := typ.basee.nofparf + 1;g (*"nofpar" here abused for extension level*) |
1016 | d(80E0001C): LDR R0, SP, 1CH |
1017 | d(D16A4B4C): BLEQ MT [trap=4, pos=27211] |
1018 | e(81E0001C): LDR R1, SP, 1CH |
1019 | e(D16A574C): BLEQ MT [trap=4, pos=27223] |
101A | f(8110001C): LDR R1, R1, 1CH |
101B | f(D16A5E4C): BLEQ MT [trap=4, pos=27230] |
101C | g(8110000C): LDR R1, R1, CH |
101D | g(41180001): ADD R1, R1, 1H |
101E | g(A100000C): STR R1, R0, CH |
| bot := typ.baseh.dsci;j offset := typ.basek.sizel |
101F | h(80E0001C): LDR R0, SP, 1CH |
1020 | h(D16AAA4C): BLEQ MT [trap=4, pos=27306] |
1021 | i(8000001C): LDR R0, R0, 1CH |
1022 | i(D16AAE4C): BLEQ MT [trap=4, pos=27310] |
1023 | j(80000014): LDR R0, R0, 14H |
1024 | j(A0E00014): STR R0, SP, 14H |
1025 | k(80E0001C): LDR R0, SP, 1CH |
1026 | k(D16AC24C): BLEQ MT [trap=4, pos=27330] |
1027 | l(8000001C): LDR R0, R0, 1CH |
1028 | l(D16AC74C): BLEQ MT [trap=4, pos=27335] |
| ELSEm ORSn.Mark("type expected")o |
1029 | m(80000020): LDR R0, R0, 20H |
102A | m(A0E00024): STR R0, SP, 24H |
102B | n(E7000004): B 4 [1030H] |
102C | o .FIXUP D |
102C | o(8D00001A): LDR SB, MT, MOD0 [ORP] |
102D | o(40D805DC): ADD R0, SB, 5DCH ["type expected"] |
102E | o(4100000E): MOV R1, R0, EH |
| ENDp |
102F | p .FIXUP P |
102F | p(F770901A): BL MOD7 [ORS] PROC9 |
| ELSE ORSq.Mark("ident expected")r |
1030 | q(E7000004): B 4 [1035H] |
1031 | r .FIXUP D |
1031 | r(8D000005): LDR SB, MT, MOD0 [ORP] |
1032 | r(40D805EC): ADD R0, SB, 5ECH ["ident expected"] |
1033 | r(4100000F): MOV R1, R0, FH |
| ENDs ; |
1034 | s .FIXUP P |
1034 | s(F7709005): BL MOD7 [ORS] PROC9 |
| Check(ORS.rparen,t "no )")u |
1035 | t(4000002C): MOV R0, R0, 2CH |
1036 | u .FIXUP D |
1036 | u(8D000005): LDR SB, MT, MOD0 [ORP] |
1037 | u(41D805FC): ADD R1, SB, 5FCH ["no )"] |
1038 | u(42000005): MOV R2, R0, 5H |
| ENDv ; |
1039 | v(F7FFEFC6): BL -4154 [0000H] |
| WHILE sym = ORS.ident DOw (*fields*) |
103A | w .FIXUP D |
103A | w(8D000004): LDR SB, MT, MOD0 [ORP] |
103B | w(80D0001C): LDR R0, SB, 1CH [data] |
103C | w(4009001F): SUB R0, R0, 1FH |
103D | w(E90000B2): BNE 178 [10F0H] |
| n := 0;x obj := bot;y |
103E | x(40000000): MOV R0, R0, 0H |
103F | x(A0E0002C): STR R0, SP, 2CH |
1040 | y(80E00014): LDR R0, SP, 14H |
1041 | y(A0E00008): STR R0, SP, 8H |
| WHILE sym = ORS.ident DOz |
1042 | z .FIXUP D |
1042 | z(8D000008): LDR SB, MT, MOD0 [ORP] |
1043 | z(80D0001C): LDR R0, SB, 1CH [data] |
1044 | z(4009001F): SUB R0, R0, 1FH |
1045 | z(E900004E): BNE 78 [1094H] |
| obj0 := obj;a |
1046 | a(80E00008): LDR R0, SP, 8H |
1047 | a(A0E0000C): STR R0, SP, CH |
| WHILE (obj0 # NIL)b & (cobj0.named # ORS.id)e DOf obj0 := obj0.nextg ENDh ; |
1048 | b(80E0000C): LDR R0, SP, CH |
1049 | c(E1000013): BEQ 19 [105DH] |
104A | d(80E0000C): LDR R0, SP, CH |
104B | d(D16BF54C): BLEQ MT [trap=4, pos=27637] |
104C | e(40080014): ADD R0, R0, 14H |
104D | e .FIXUP D |
104D | e(8D70000B): LDR SB, MT, MOD7 [ORS] |
104E | e(41D80004): ADD R1, SB, VAR4 |
104F | e(92000000): LDR R2, R0, 0H |
1050 | e(40080001): ADD R0, R0, 1H |
1051 | e(93100000): LDR R3, R1, 0H |
1052 | e(41180001): ADD R1, R1, 1H |
1053 | e(04290003): SUB R4, R2, R3 |
1054 | e(E9000002): BNE 2 [1057H] |
1055 | e(44290000): SUB R4, R2, 0H |
1056 | e(E9FFFFF8): BNE -8 [104FH] |
1057 | f(E1000005): BEQ 5 [105DH] |
1058 | g(80E0000C): LDR R0, SP, CH |
1059 | g(D16C144C): BLEQ MT [trap=4, pos=27668] |
105A | h(80000008): LDR R0, R0, 8H |
105B | h(A0E0000C): STR R0, SP, CH |
105C | h(E7FFFFEB): B -21 [1048H] |
| IF obj0 # NIL THENi ORS.Mark("mult def")j ENDk ; |
105D | i(80E0000C): LDR R0, SP, CH |
105E | i(E1000004): BEQ 4 [1063H] |
105F | j .FIXUP D |
105F | j(8D000012): LDR SB, MT, MOD0 [ORP] |
1060 | j(40D80604): ADD R0, SB, 604H ["mult def"] |
1061 | j(41000009): MOV R1, R0, 9H |
1062 | k .FIXUP P |
1062 | k(F770902E): BL MOD7 [ORS] PROC9 |
| NEW(new);l ORS.CopyId(new.namem)n;o new.classp := ORB.Fld;q new.nextr := obj;s obj := new;t INC(n);u |
1063 | l(40E80010): ADD R0, SP, 10H |
1064 | l .FIXUP D |
1064 | l(8D800005): LDR SB, MT, MOD8 [ORB] |
1065 | l(41D80001): ADD R1, SB, VAR1 |
1066 | l(D76C620C): BL MT [trap=0, pos=27746] |
1067 | m(80E00010): LDR R0, SP, 10H |
1068 | m(D16C764C): BLEQ MT [trap=4, pos=27766] |
1069 | n(40080014): ADD R0, R0, 14H |
106A | o .FIXUP P |
106A | o(F7707008): BL MOD7 [ORS] PROC7 |
106B | p(80E00010): LDR R0, SP, 10H |
106C | p(D16C824C): BLEQ MT [trap=4, pos=27778] |
106D | q(41000004): MOV R1, R0, 4H |
106E | q(B1000000): STR R1, R0, 0H |
106F | r(80E00010): LDR R0, SP, 10H |
1070 | r(D16C974C): BLEQ MT [trap=4, pos=27799] |
1071 | s(81E00008): LDR R1, SP, 8H |
1072 | s(A1000008): STR R1, R0, 8H |
1073 | t(80E00010): LDR R0, SP, 10H |
1074 | t(A0E00008): STR R0, SP, 8H |
1075 | u(80E0002C): LDR R0, SP, 2CH |
1076 | u(40080001): ADD R0, R0, 1H |
1077 | u(A0E0002C): STR R0, SP, 2CH |
| ORS.Get(sym)v;w CheckExport(new.expox)y;z |
1078 | v .FIXUP D |
1078 | v(8D000014): LDR SB, MT, MOD0 [ORP] |
1079 | v(40D8001C): ADD R0, SB, 1CH [data] |
107A | w .FIXUP P |
107A | w(F770A010): BL MOD7 [ORS] PROC10 |
107B | x(80E00010): LDR R0, SP, 10H |
107C | x(D16CDE4C): BLEQ MT [trap=4, pos=27870] |
107D | y(40080002): ADD R0, R0, 2H |
107E | z(F7FFF073): BL -3981 [00F2H] |
| IF (sym # ORS.comma)a & (bsym # ORS.colon)c THENd ORS.Mark("comma expected")e |
107F | a .FIXUP D |
107F | a(8D000007): LDR SB, MT, MOD0 [ORP] |
1080 | a(80D0001C): LDR R0, SB, 1CH [data] |
1081 | a(40090028): SUB R0, R0, 28H |
1082 | b(E1000009): BEQ 9 [108CH] |
1083 | c .FIXUP D |
1083 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
1084 | c(80D0001C): LDR R0, SB, 1CH [data] |
1085 | c(40090029): SUB R0, R0, 29H |
1086 | d(E1000005): BEQ 5 [108CH] |
1087 | e .FIXUP D |
1087 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
1088 | e(40D80610): ADD R0, SB, 610H ["comma expected"] |
1089 | e(4100000F): MOV R1, R0, FH |
| ELSIFf symg = ORS.comma THENh ORS.Get(sym)i |
108A | f .FIXUP P |
108A | f(F7709010): BL MOD7 [ORS] PROC9 |
108B | g(E7000007): B 7 [1093H] |
108C | h .FIXUP D |
108C | h(8D000005): LDR SB, MT, MOD0 [ORP] |
108D | h(80D0001C): LDR R0, SB, 1CH [data] |
108E | h(40090028): SUB R0, R0, 28H |
108F | h(E9000003): BNE 3 [1093H] |
1090 | i .FIXUP D |
1090 | i(8D000004): LDR SB, MT, MOD0 [ORP] |
1091 | i(40D8001C): ADD R0, SB, 1CH [data] |
| ENDj |
1092 | j .FIXUP P |
1092 | j(F770A008): BL MOD7 [ORS] PROC10 |
| ENDk ; |
1093 | k(E7FFFFAE): B -82 [1042H] |
| Check(ORS.colon,l "colon expected")m;n Type(tp)o;p |
1094 | l(40000029): MOV R0, R0, 29H |
1095 | m .FIXUP D |
1095 | m(8D000005): LDR SB, MT, MOD0 [ORP] |
1096 | m(41D80620): ADD R1, SB, 620H ["colon expected"] |
1097 | m(4200000F): MOV R2, R0, FH |
1098 | n(F7FFEF67): BL -4249 [0000H] |
1099 | o(40E80020): ADD R0, SP, 20H |
109A | p .FIXUP D |
109A | p(8D000005): LDR SB, MT, MOD0 [ORP] |
109B | p(81D00038): LDR R1, SB, 38H [data] |
109C | p(D16DAD5C): BLEQ MT [trap=5, pos=28077] |
109D | p(D7000001): BL R1 |
| IF (tp.formq = ORB.Array)r & (stp.lent < 0)u THENv ORS.Mark("dyn array not allowed")w ENDx ; |
109E | q(80E00020): LDR R0, SP, 20H |
109F | q(D16DBF4C): BLEQ MT [trap=4, pos=28095] |
10A0 | r(80000000): LDR R0, R0, 0H |
10A1 | r(4009000C): SUB R0, R0, CH |
10A2 | s(E9000009): BNE 9 [10ACH] |
10A3 | t(80E00020): LDR R0, SP, 20H |
10A4 | t(D16DD64C): BLEQ MT [trap=4, pos=28118] |
10A5 | u(80000010): LDR R0, R0, 10H |
10A6 | u(40090000): SUB R0, R0, 0H |
10A7 | v(ED000004): BGE 4 [10ACH] |
10A8 | w .FIXUP D |
10A8 | w(8D00000E): LDR SB, MT, MOD0 [ORP] |
10A9 | w(40D80630): ADD R0, SB, 630H ["dyn array not allowed"] |
10AA | w(41000016): MOV R1, R0, 16H |
10AB | x .FIXUP P |
10AB | x(F7709019): BL MOD7 [ORS] PROC9 |
| IF tp.sizey > 1 THENz offset := (offset+3)a DIV 4 *b 4 ENDc ; |
10AC | y(80E00020): LDR R0, SP, 20H |
10AD | y(D16E194C): BLEQ MT [trap=4, pos=28185] |
10AE | z(80000020): LDR R0, R0, 20H |
10AF | z(40090001): SUB R0, R0, 1H |
10B0 | z(E6000005): BLE 5 [10B6H] |
10B1 | a(80E00024): LDR R0, SP, 24H |
10B2 | a(40080003): ADD R0, R0, 3H |
10B3 | b(40020002): ASR R0, R0, 2H |
10B4 | c(40010002): LSL R0, R0, 2H |
10B5 | c(A0E00024): STR R0, SP, 24H |
| offset := offset + n * tp.sized;e off := offset;f obj0 := obj;g |
10B6 | d(80E00020): LDR R0, SP, 20H |
10B7 | d(D16E6C4C): BLEQ MT [trap=4, pos=28268] |
10B8 | e(81E0002C): LDR R1, SP, 2CH |
10B9 | e(80000020): LDR R0, R0, 20H |
10BA | e(001A0000): MUL R0, R1, R0 |
10BB | e(81E00024): LDR R1, SP, 24H |
10BC | e(00180000): ADD R0, R1, R0 |
10BD | e(A0E00024): STR R0, SP, 24H |
10BE | f(80E00024): LDR R0, SP, 24H |
10BF | f(A0E00028): STR R0, SP, 28H |
10C0 | g(80E00008): LDR R0, SP, 8H |
10C1 | g(A0E0000C): STR R0, SP, CH |
| WHILE obj0 # bot DOh obj0.typei := tp;j obj0.levk := 0;l off := off - tp.sizem;n obj0.valo := off;p obj0 := obj0.nextq ENDr ; |
10C2 | h(80E0000C): LDR R0, SP, CH |
10C3 | h(81E00014): LDR R1, SP, 14H |
10C4 | h(00090001): SUB R0, R0, R1 |
10C5 | h(E1000017): BEQ 23 [10DDH] |
10C6 | i(80E0000C): LDR R0, SP, CH |
10C7 | i(D16EAD4C): BLEQ MT [trap=4, pos=28333] |
10C8 | j(81E00020): LDR R1, SP, 20H |
10C9 | j(A1000010): STR R1, R0, 10H |
10CA | k(80E0000C): LDR R0, SP, CH |
10CB | k(D16EBD4C): BLEQ MT [trap=4, pos=28349] |
10CC | l(41000000): MOV R1, R0, 0H |
10CD | l(A1000004): STR R1, R0, 4H |
10CE | m(80E00020): LDR R0, SP, 20H |
10CF | m(D16ED84C): BLEQ MT [trap=4, pos=28376] |
10D0 | n(81E00028): LDR R1, SP, 28H |
10D1 | n(80000020): LDR R0, R0, 20H |
10D2 | n(00190000): SUB R0, R1, R0 |
10D3 | n(A0E00028): STR R0, SP, 28H |
10D4 | o(80E0000C): LDR R0, SP, CH |
10D5 | o(D16EE24C): BLEQ MT [trap=4, pos=28386] |
10D6 | p(81E00028): LDR R1, SP, 28H |
10D7 | p(A1000034): STR R1, R0, 34H |
10D8 | q(80E0000C): LDR R0, SP, CH |
10D9 | q(D16EFC4C): BLEQ MT [trap=4, pos=28412] |
10DA | r(80000008): LDR R0, R0, 8H |
10DB | r(A0E0000C): STR R0, SP, CH |
10DC | r(E7FFFFE5): B -27 [10C2H] |
| bot := obj;s |
10DD | s(80E00008): LDR R0, SP, 8H |
10DE | s(A0E00014): STR R0, SP, 14H |
| IF sym = ORS.semicolon THENt ORS.Get(sym)u ELSIFv symw # ORS.end THENx ORS.Mark(" ; or END")y ENDz |
10DF | t .FIXUP D |
10DF | t(8D000037): LDR SB, MT, MOD0 [ORP] |
10E0 | t(80D0001C): LDR R0, SB, 1CH [data] |
10E1 | t(40090034): SUB R0, R0, 34H |
10E2 | t(E9000004): BNE 4 [10E7H] |
10E3 | u .FIXUP D |
10E3 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
10E4 | u(40D8001C): ADD R0, SB, 1CH [data] |
10E5 | v .FIXUP P |
10E5 | v(F770A03A): BL MOD7 [ORS] PROC10 |
10E6 | w(E7000008): B 8 [10EFH] |
10E7 | x .FIXUP D |
10E7 | x(8D000004): LDR SB, MT, MOD0 [ORP] |
10E8 | x(80D0001C): LDR R0, SB, 1CH [data] |
10E9 | x(40090035): SUB R0, R0, 35H |
10EA | x(E1000004): BEQ 4 [10EFH] |
10EB | y .FIXUP D |
10EB | y(8D000004): LDR SB, MT, MOD0 [ORP] |
10EC | y(40D80648): ADD R0, SB, 648H [" ; or END"] |
10ED | y(4100000A): MOV R1, R0, AH |
10EE | z .FIXUP P |
10EE | z(F7709009): BL MOD7 [ORS] PROC9 |
| ENDa ; |
10EF | a(E7FFFF4A): B -182 [103AH] |
| typ.formb := ORB.Record;c typ.dscd := bot;e typ.sizef := (offset + 3)g DIV 4 *h 4;i type := typ |
10F0 | b(80E0001C): LDR R0, SP, 1CH |
10F1 | b(D16F8D4C): BLEQ MT [trap=4, pos=28557] |
10F2 | c(4100000D): MOV R1, R0, DH |
10F3 | c(A1000000): STR R1, R0, 0H |
10F4 | d(80E0001C): LDR R0, SP, 1CH |
10F5 | d(D16FA44C): BLEQ MT [trap=4, pos=28580] |
10F6 | e(81E00014): LDR R1, SP, 14H |
10F7 | e(A1000014): STR R1, R0, 14H |
10F8 | f(80E0001C): LDR R0, SP, 1CH |
10F9 | f(D16FB54C): BLEQ MT [trap=4, pos=28597] |
10FA | g(81E00024): LDR R1, SP, 24H |
10FB | g(41180003): ADD R1, R1, 3H |
10FC | h(41120002): ASR R1, R1, 2H |
10FD | i(41110002): LSL R1, R1, 2H |
10FE | i(A1000020): STR R1, R0, 20H |
| ENDj RecordType; |
10FF | j(80E0001C): LDR R0, SP, 1CH |
1100 | j(81E00004): LDR R1, SP, 4H |
1101 | j(A0100000): STR R0, R1, 0H |
1102 | j(8FE00000): LDR LNK, SP, 0H |
1103 | j(4EE80030): ADD SP, SP, 30H |
1104 | j(C700000F): B LNK |
| |
| PROCEDURE FPSection(VAR adr: LONGINT; VAR nofpar: INTEGER); |
| VAR obj, first: ORB.Object; tp: ORB.Type; |
| parsize: LONGINT; cl: INTEGER; rdo: BOOLEAN; |
| BEGINk |
1105 | k(4EE90024): SUB SP, SP, 24H |
1106 | k(AFE00000): STR LNK, SP, 0H |
1107 | k(A0E00004): STR R0, SP, 4H |
1108 | k(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.var THENl ORS.Get(sym)m;n cl := ORB.Par ELSEo clp := ORB.Var ENDq ; |
1109 | l .FIXUP D |
1109 | l(8D00001E): LDR SB, MT, MOD0 [ORP] |
110A | l(80D0001C): LDR R0, SB, 1CH [data] |
110B | l(40090041): SUB R0, R0, 41H |
110C | l(E9000006): BNE 6 [1113H] |
110D | m .FIXUP D |
110D | m(8D000004): LDR SB, MT, MOD0 [ORP] |
110E | m(40D8001C): ADD R0, SB, 1CH [data] |
110F | n .FIXUP P |
110F | n(F770A021): BL MOD7 [ORS] PROC10 |
1110 | o(40000003): MOV R0, R0, 3H |
1111 | o(A0E0001C): STR R0, SP, 1CH |
1112 | p(E7000002): B 2 [1115H] |
1113 | q(40000002): MOV R0, R0, 2H |
1114 | q(A0E0001C): STR R0, SP, 1CH |
| IdentList(cl,r first)s;t FormalType(tp,u 0)v;w rdo := FALSE;x |
1115 | r(80E0001C): LDR R0, SP, 1CH |
1116 | s(41E80010): ADD R1, SP, 10H |
1117 | t(F7FFFDF5): BL -523 [0F0DH] |
1118 | u(40E80014): ADD R0, SP, 14H |
1119 | v(41000000): MOV R1, R0, 0H |
111A | w .FIXUP D |
111A | w(8D00000D): LDR SB, MT, MOD0 [ORP] |
111B | w(82D0003C): LDR R2, SB, 3CH [data] |
111C | w(D171125C): BLEQ MT [trap=5, pos=28946] |
111D | w(D7000002): BL R2 |
111E | x(40000000): MOV R0, R0, 0H |
111F | x(B0E00020): STR R0, SP, 20H |
| IF (cl = ORB.Var)y & (ztp.forma >= ORB.Array)b THENc cl := ORB.Par;d rdo := TRUE ENDe ; |
1120 | y(80E0001C): LDR R0, SP, 1CH |
1121 | y(40090002): SUB R0, R0, 2H |
1122 | z(E9000009): BNE 9 [112CH] |
1123 | a(80E00014): LDR R0, SP, 14H |
1124 | a(D171414C): BLEQ MT [trap=4, pos=28993] |
1125 | b(80000000): LDR R0, R0, 0H |
1126 | b(4009000C): SUB R0, R0, CH |
1127 | c(E5000004): BLT 4 [112CH] |
1128 | d(40000003): MOV R0, R0, 3H |
1129 | d(A0E0001C): STR R0, SP, 1CH |
112A | e(40000001): MOV R0, R0, 1H |
112B | e(B0E00020): STR R0, SP, 20H |
| IF (tp.formf = ORB.Array)g & (htp.leni < 0)j OR (ktp.forml = ORB.Record)m THENn |
112C | f(80E00014): LDR R0, SP, 14H |
112D | f(D171854C): BLEQ MT [trap=4, pos=29061] |
112E | g(80000000): LDR R0, R0, 0H |
112F | g(4009000C): SUB R0, R0, CH |
1130 | h(E9000005): BNE 5 [1136H] |
1131 | i(80E00014): LDR R0, SP, 14H |
1132 | i(D1719C4C): BLEQ MT [trap=4, pos=29084] |
1133 | j(80000010): LDR R0, R0, 10H |
1134 | j(40090000): SUB R0, R0, 0H |
1135 | k(E5000005): BLT 5 [113BH] |
1136 | l(80E00014): LDR R0, SP, 14H |
1137 | l(D171AD4C): BLEQ MT [trap=4, pos=29101] |
1138 | m(80000000): LDR R0, R0, 0H |
1139 | m(4009000D): SUB R0, R0, DH |
113A | n(E9000003): BNE 3 [113EH] |
| parsize := 2*ORG.WordSize (*open array or record, needs second word for length or type tag*) |
| ELSEo parsizep := ORG.WordSize |
113B | o(40000008): MOV R0, R0, 8H |
113C | o(A0E00018): STR R0, SP, 18H |
113D | p(E7000002): B 2 [1140H] |
| ENDq ; |
113E | q(40000004): MOV R0, R0, 4H |
113F | q(A0E00018): STR R0, SP, 18H |
| obj := first;r |
1140 | r(80E00010): LDR R0, SP, 10H |
1141 | r(A0E0000C): STR R0, SP, CH |
| WHILE obj # NIL DOs |
1142 | s(80E0000C): LDR R0, SP, CH |
1143 | s(E1000025): BEQ 37 [1169H] |
| INC(nofpar);t obj.classu := cl;v obj.typew := tp;x obj.rdoy := rdo;z obj.leva := level;b obj.valc := adr;d |
1144 | t(80E00008): LDR R0, SP, 8H |
1145 | t(81000000): LDR R1, R0, 0H |
1146 | t(41180001): ADD R1, R1, 1H |
1147 | t(A1000000): STR R1, R0, 0H |
1148 | u(80E0000C): LDR R0, SP, CH |
1149 | u(D172954C): BLEQ MT [trap=4, pos=29333] |
114A | v(81E0001C): LDR R1, SP, 1CH |
114B | v(B1000000): STR R1, R0, 0H |
114C | w(80E0000C): LDR R0, SP, CH |
114D | w(D172A54C): BLEQ MT [trap=4, pos=29349] |
114E | x(81E00014): LDR R1, SP, 14H |
114F | x(A1000010): STR R1, R0, 10H |
1150 | y(80E0000C): LDR R0, SP, CH |
1151 | y(D172B44C): BLEQ MT [trap=4, pos=29364] |
1152 | z(91E00020): LDR R1, SP, 20H |
1153 | z(B1000003): STR R1, R0, 3H |
1154 | a(80E0000C): LDR R0, SP, CH |
1155 | a(D172C44C): BLEQ MT [trap=4, pos=29380] |
1156 | b .FIXUP D |
1156 | b(8D00003C): LDR SB, MT, MOD0 [ORP] |
1157 | b(81D00024): LDR R1, SB, 24H [data] |
1158 | b(A1000004): STR R1, R0, 4H |
1159 | c(80E0000C): LDR R0, SP, CH |
115A | c(D172D64C): BLEQ MT [trap=4, pos=29398] |
115B | d(81E00004): LDR R1, SP, 4H |
115C | d(81100000): LDR R1, R1, 0H |
115D | d(A1000034): STR R1, R0, 34H |
| adr := adr + parsize;e obj := obj.nextf |
115E | e(80E00004): LDR R0, SP, 4H |
115F | e(80000000): LDR R0, R0, 0H |
1160 | e(81E00018): LDR R1, SP, 18H |
1161 | e(00080001): ADD R0, R0, R1 |
1162 | e(81E00004): LDR R1, SP, 4H |
1163 | e(A0100000): STR R0, R1, 0H |
1164 | f(80E0000C): LDR R0, SP, CH |
1165 | f(D1730A4C): BLEQ MT [trap=4, pos=29450] |
| ENDg ; |
1166 | g(80000008): LDR R0, R0, 8H |
1167 | g(A0E0000C): STR R0, SP, CH |
1168 | g(E7FFFFD9): B -39 [1142H] |
| IF adr >= 52 THENh ORS.Mark("too many parameters")i ENDj |
1169 | h(80E00004): LDR R0, SP, 4H |
116A | h(80000000): LDR R0, R0, 0H |
116B | h(40090034): SUB R0, R0, 34H |
116C | h(E5000004): BLT 4 [1171H] |
116D | i .FIXUP D |
116D | i(8D000017): LDR SB, MT, MOD0 [ORP] |
116E | i(40D80654): ADD R0, SB, 654H ["too many parameters"] |
116F | i(41000014): MOV R1, R0, 14H |
1170 | j .FIXUP P |
1170 | j(F7709061): BL MOD7 [ORS] PROC9 |
| ENDk FPSection; |
1171 | k(8FE00000): LDR LNK, SP, 0H |
1172 | k(4EE80024): ADD SP, SP, 24H |
1173 | k(C700000F): B LNK |
| |
| PROCEDURE ProcedureType(ptype: ORB.Type; VAR parblksize: LONGINT); |
| VAR obj: ORB.Object; size: LONGINT; nofpar: INTEGER; |
| BEGINl ptype.basem := ORB.noType;n size := parblksize;o nofpar := 0;p ptype.dscq := NIL;r |
1174 | l(4EE90018): SUB SP, SP, 18H |
1175 | l(AFE00000): STR LNK, SP, 0H |
1176 | l(A0E00004): STR R0, SP, 4H |
1177 | l(A1E00008): STR R1, SP, 8H |
1178 | m(80E00004): LDR R0, SP, 4H |
1179 | m(D173F14C): BLEQ MT [trap=4, pos=29681] |
117A | n .FIXUP D |
117A | n(8D80000D): LDR SB, MT, MOD8 [ORB] |
117B | n(81D0000D): LDR R1, SB, VAR13 |
117C | n(A100001C): STR R1, R0, 1CH |
117D | o(80E00008): LDR R0, SP, 8H |
117E | o(80000000): LDR R0, R0, 0H |
117F | o(A0E00010): STR R0, SP, 10H |
1180 | p(40000000): MOV R0, R0, 0H |
1181 | p(A0E00014): STR R0, SP, 14H |
1182 | q(80E00004): LDR R0, SP, 4H |
1183 | q(D1742B4C): BLEQ MT [trap=4, pos=29739] |
1184 | r(41000000): MOV R1, R0, 0H |
1185 | r(A1000014): STR R1, R0, 14H |
| IF sym = ORS.lparen THENs |
1186 | s .FIXUP D |
1186 | s(8D00000C): LDR SB, MT, MOD0 [ORP] |
1187 | s(80D0001C): LDR R0, SB, 1CH [data] |
1188 | s(4009001C): SUB R0, R0, 1CH |
1189 | s(E9000048): BNE 72 [11D2H] |
| ORS.Get(sym)t;u |
118A | t .FIXUP D |
118A | t(8D000004): LDR SB, MT, MOD0 [ORP] |
118B | t(40D8001C): ADD R0, SB, 1CH [data] |
118C | u .FIXUP P |
118C | u(F770A01C): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.rparen THENv ORS.Get(sym)w |
118D | v .FIXUP D |
118D | v(8D000003): LDR SB, MT, MOD0 [ORP] |
118E | v(80D0001C): LDR R0, SB, 1CH [data] |
118F | v(4009002C): SUB R0, R0, 2CH |
1190 | v(E9000004): BNE 4 [1195H] |
1191 | w .FIXUP D |
1191 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
1192 | w(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEx FPSectiony(size,z nofpar)a;b |
1193 | x .FIXUP P |
1193 | x(F770A007): BL MOD7 [ORS] PROC10 |
1194 | y(E7000013): B 19 [11A8H] |
1195 | z(40E80010): ADD R0, SP, 10H |
1196 | a(41E80014): ADD R1, SP, 14H |
1197 | b(F7FFFF6D): BL -147 [1105H] |
| WHILE sym = ORS.semicolon DOc ORS.Get(sym)d;e FPSection(size,f nofpar)g ENDh ; |
1198 | c .FIXUP D |
1198 | c(8D000007): LDR SB, MT, MOD0 [ORP] |
1199 | c(80D0001C): LDR R0, SB, 1CH [data] |
119A | c(40090034): SUB R0, R0, 34H |
119B | c(E9000007): BNE 7 [11A3H] |
119C | d .FIXUP D |
119C | d(8D000004): LDR SB, MT, MOD0 [ORP] |
119D | d(40D8001C): ADD R0, SB, 1CH [data] |
119E | e .FIXUP P |
119E | e(F770A00B): BL MOD7 [ORS] PROC10 |
119F | f(40E80010): ADD R0, SP, 10H |
11A0 | g(41E80014): ADD R1, SP, 14H |
11A1 | h(F7FFFF63): BL -157 [1105H] |
11A2 | h(E7FFFFF5): B -11 [1198H] |
| Check(ORS.rparen,i "no )")j |
11A3 | i(4000002C): MOV R0, R0, 2CH |
11A4 | j .FIXUP D |
11A4 | j(8D000008): LDR SB, MT, MOD0 [ORP] |
11A5 | j(41D80668): ADD R1, SB, 668H ["no )"] |
11A6 | j(42000005): MOV R2, R0, 5H |
| ENDk ; |
11A7 | k(F7FFEE58): BL -4520 [0000H] |
| IF sym = ORS.colon THENl (*function*) |
11A8 | l .FIXUP D |
11A8 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
11A9 | l(80D0001C): LDR R0, SB, 1CH [data] |
11AA | l(40090029): SUB R0, R0, 29H |
11AB | l(E9000026): BNE 38 [11D2H] |
| ORS.Get(sym)m;n |
11AC | m .FIXUP D |
11AC | m(8D000004): LDR SB, MT, MOD0 [ORP] |
11AD | m(40D8001C): ADD R0, SB, 1CH [data] |
11AE | n .FIXUP P |
11AE | n(F770A010): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENo |
11AF | o .FIXUP D |
11AF | o(8D000003): LDR SB, MT, MOD0 [ORP] |
11B0 | o(80D0001C): LDR R0, SB, 1CH [data] |
11B1 | o(4009001F): SUB R0, R0, 1FH |
11B2 | o(E900001B): BNE 27 [11CEH] |
| qualident(obj)p;q ptype.baser := obj.types;t |
11B3 | p(40E8000C): ADD R0, SP, CH |
11B4 | q(F7FFEE5F): BL -4513 [0014H] |
11B5 | r(80E00004): LDR R0, SP, 4H |
11B6 | r(D175BA4C): BLEQ MT [trap=4, pos=30138] |
11B7 | s(81E0000C): LDR R1, SP, CH |
11B8 | s(D175C64C): BLEQ MT [trap=4, pos=30150] |
11B9 | t(81100010): LDR R1, R1, 10H |
11BA | t(A100001C): STR R1, R0, 1CH |
| IF ~((obj.classu = ORB.Typ)v & (wobj.typex.formy IN {ORB.Byte .. ORB.Pointer, ORB.Proc})z) THENa |
11BB | u(80E0000C): LDR R0, SP, CH |
11BC | u(D175E14C): BLEQ MT [trap=4, pos=30177] |
11BD | v(90000000): LDR R0, R0, 0H |
11BE | v(40090005): SUB R0, R0, 5H |
11BF | w(E9000009): BNE 9 [11C9H] |
11C0 | x(80E0000C): LDR R0, SP, CH |
11C1 | x(D175F84C): BLEQ MT [trap=4, pos=30200] |
11C2 | y(80000010): LDR R0, R0, 10H |
11C3 | y(D175FD4C): BLEQ MT [trap=4, pos=30205] |
11C4 | z(410004FE): MOV R1, R0, 4FEH |
11C5 | z(80000000): LDR R0, R0, 0H |
11C6 | z(40080001): ADD R0, R0, 1H |
11C7 | z(01130000): ROR R1, R1, R0 |
11C8 | a(E0000004): BMI 4 [11CDH] |
| ORS.Mark("illegal function type")b |
11C9 | b .FIXUP D |
11C9 | b(8D00001A): LDR SB, MT, MOD0 [ORP] |
11CA | b(40D80670): ADD R0, SB, 670H ["illegal function type"] |
11CB | b(41000016): MOV R1, R0, 16H |
| ENDc |
11CC | c .FIXUP P |
11CC | c(F770901E): BL MOD7 [ORS] PROC9 |
| ELSE ORSd.Mark("type identifier expected")e |
11CD | d(E7000004): B 4 [11D2H] |
11CE | e .FIXUP D |
11CE | e(8D000005): LDR SB, MT, MOD0 [ORP] |
11CF | e(40D80688): ADD R0, SB, 688H ["type identifier expected"] |
11D0 | e(41000019): MOV R1, R0, 19H |
| ENDf |
11D1 | f .FIXUP P |
11D1 | f(F7709005): BL MOD7 [ORS] PROC9 |
| END |
| END ; |
| ptype.nofparg := nofpar;h parblksize := size |
11D2 | g(80E00004): LDR R0, SP, 4H |
11D3 | g(D176CA4C): BLEQ MT [trap=4, pos=30410] |
11D4 | h(81E00014): LDR R1, SP, 14H |
11D5 | h(A100000C): STR R1, R0, CH |
| ENDi ProcedureType; |
11D6 | i(80E00010): LDR R0, SP, 10H |
11D7 | i(81E00008): LDR R1, SP, 8H |
11D8 | i(A0100000): STR R0, R1, 0H |
11D9 | i(8FE00000): LDR LNK, SP, 0H |
11DA | i(4EE80018): ADD SP, SP, 18H |
11DB | i(C700000F): B LNK |
| |
| PROCEDURE FormalType0(VAR typ: ORB.Type; dim: INTEGER); |
| VAR obj: ORB.Object; dmy: LONGINT; |
| BEGINj |
11DC | j(4EE90014): SUB SP, SP, 14H |
11DD | j(AFE00000): STR LNK, SP, 0H |
11DE | j(A0E00004): STR R0, SP, 4H |
11DF | j(A1E00008): STR R1, SP, 8H |
| IF sym = ORS.ident THENk |
11E0 | k .FIXUP D |
11E0 | k(8D000012): LDR SB, MT, MOD0 [ORP] |
11E1 | k(80D0001C): LDR R0, SB, 1CH [data] |
11E2 | k(4009001F): SUB R0, R0, 1FH |
11E3 | k(E9000016): BNE 22 [11FAH] |
| qualident(obj)l;m |
11E4 | l(40E8000C): ADD R0, SP, CH |
11E5 | m(F7FFEE2E): BL -4562 [0014H] |
| IF obj.classn = ORB.Typ THENo typ := obj.typep ELSEq ORSr.Mark("not a type")s;t typ := ORB.intType ENDu |
11E6 | n(80E0000C): LDR R0, SP, CH |
11E7 | n(D177AC4C): BLEQ MT [trap=4, pos=30636] |
11E8 | o(90000000): LDR R0, R0, 0H |
11E9 | o(40090005): SUB R0, R0, 5H |
11EA | o(E9000006): BNE 6 [11F1H] |
11EB | p(80E0000C): LDR R0, SP, CH |
11EC | p(D177CB4C): BLEQ MT [trap=4, pos=30667] |
11ED | q(80000010): LDR R0, R0, 10H |
11EE | q(81E00004): LDR R1, SP, 4H |
11EF | q(A0100000): STR R0, R1, 0H |
11F0 | r(E7000008): B 8 [11F9H] |
11F1 | s .FIXUP D |
11F1 | s(8D000011): LDR SB, MT, MOD0 [ORP] |
11F2 | s(40D806A4): ADD R0, SB, 6A4H ["not a type"] |
11F3 | s(4100000B): MOV R1, R0, BH |
11F4 | t .FIXUP P |
11F4 | t(F7709023): BL MOD7 [ORS] PROC9 |
11F5 | u .FIXUP D |
11F5 | u(8D800004): LDR SB, MT, MOD8 [ORB] |
11F6 | u(80D00009): LDR R0, SB, VAR9 |
11F7 | u(81E00004): LDR R1, SP, 4H |
11F8 | u(A0100000): STR R0, R1, 0H |
| ELSIF symv = ORS.array THENw |
11F9 | v(E700005F): B 95 [1259H] |
11FA | w .FIXUP D |
11FA | w(8D000005): LDR SB, MT, MOD0 [ORP] |
11FB | w(80D0001C): LDR R0, SB, 1CH [data] |
11FC | w(4009003C): SUB R0, R0, 3CH |
11FD | w(E900002D): BNE 45 [122BH] |
| ORS.Get(sym)x;y Check(ORS.of,z "OF ?")a;b |
11FE | x .FIXUP D |
11FE | x(8D000004): LDR SB, MT, MOD0 [ORP] |
11FF | x(40D8001C): ADD R0, SB, 1CH [data] |
1200 | y .FIXUP P |
1200 | y(F770A00C): BL MOD7 [ORS] PROC10 |
1201 | z(40000030): MOV R0, R0, 30H |
1202 | a .FIXUP D |
1202 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
1203 | a(41D806B0): ADD R1, SB, 6B0H ["OF ?"] |
1204 | a(42000005): MOV R2, R0, 5H |
1205 | b(F7FFEDFA): BL -4614 [0000H] |
| IF dim >= 1 THENc ORS.Mark("multi-dimensional open arrays not implemented")d ENDe ; |
1206 | c(80E00008): LDR R0, SP, 8H |
1207 | c(40090001): SUB R0, R0, 1H |
1208 | c(E5000004): BLT 4 [120DH] |
1209 | d .FIXUP D |
1209 | d(8D000007): LDR SB, MT, MOD0 [ORP] |
120A | d(40D806B8): ADD R0, SB, 6B8H ["multi-dimensional open arrays not implemented"] |
120B | d(4100002E): MOV R1, R0, 2EH |
120C | e .FIXUP P |
120C | e(F770900C): BL MOD7 [ORS] PROC9 |
| NEW(typ);f typ.formg := ORB.Array;h typ.leni := -1;j typ.sizek := 2*ORG.WordSize;l |
120D | f(80E00004): LDR R0, SP, 4H |
120E | f .FIXUP D |
120E | f(8D800005): LDR SB, MT, MOD8 [ORB] |
120F | f(41D80003): ADD R1, SB, VAR3 |
1210 | f(D778B00C): BL MT [trap=0, pos=30896] |
1211 | g(80E00004): LDR R0, SP, 4H |
1212 | g(80000000): LDR R0, R0, 0H |
1213 | g(D178B94C): BLEQ MT [trap=4, pos=30905] |
1214 | h(4100000C): MOV R1, R0, CH |
1215 | h(A1000000): STR R1, R0, 0H |
1216 | i(80E00004): LDR R0, SP, 4H |
1217 | i(80000000): LDR R0, R0, 0H |
1218 | i(D178CF4C): BLEQ MT [trap=4, pos=30927] |
1219 | j(5100FFFF): MOV R1, R0, FFFFFFFFH |
121A | j(A1000010): STR R1, R0, 10H |
121B | k(80E00004): LDR R0, SP, 4H |
121C | k(80000000): LDR R0, R0, 0H |
121D | k(D178DF4C): BLEQ MT [trap=4, pos=30943] |
121E | l(41000008): MOV R1, R0, 8H |
121F | l(A1000020): STR R1, R0, 20H |
| FormalType(typ.basem,n dim+1)o |
1220 | m(80E00004): LDR R0, SP, 4H |
1221 | m(80000000): LDR R0, R0, 0H |
1222 | m(D1790D4C): BLEQ MT [trap=4, pos=30989] |
1223 | n(4008001C): ADD R0, R0, 1CH |
1224 | o(81E00008): LDR R1, SP, 8H |
1225 | o(41180001): ADD R1, R1, 1H |
| ELSIFp symq = ORS.procedure THENr |
1226 | p .FIXUP D |
1226 | p(8D000018): LDR SB, MT, MOD0 [ORP] |
1227 | p(82D0003C): LDR R2, SB, 3CH [data] |
1228 | p(D1791F5C): BLEQ MT [trap=5, pos=31007] |
1229 | p(D7000002): BL R2 |
122A | q(E700002E): B 46 [1259H] |
122B | r .FIXUP D |
122B | r(8D000005): LDR SB, MT, MOD0 [ORP] |
122C | r(80D0001C): LDR R0, SB, 1CH [data] |
122D | r(40090042): SUB R0, R0, 42H |
122E | r(E9000022): BNE 34 [1251H] |
| ORS.Get(sym)s;t ORB.OpenScope;u |
122F | s .FIXUP D |
122F | s(8D000004): LDR SB, MT, MOD0 [ORP] |
1230 | s(40D8001C): ADD R0, SB, 1CH [data] |
1231 | t .FIXUP P |
1231 | t(F770A025): BL MOD7 [ORS] PROC10 |
1232 | u .FIXUP P |
1232 | u(F7813001): BL MOD8 [ORB] PROC19 |
| NEW(typ);v typ.formw := ORB.Proc;x typ.sizey := ORG.WordSize;z dmy := 0;a ProcedureType(typ,b dmy)c;d |
1233 | v(80E00004): LDR R0, SP, 4H |
1234 | v .FIXUP D |
1234 | v(8D800005): LDR SB, MT, MOD8 [ORB] |
1235 | v(41D80003): ADD R1, SB, VAR3 |
1236 | v(D7796B0C): BL MT [trap=0, pos=31083] |
1237 | w(80E00004): LDR R0, SP, 4H |
1238 | w(80000000): LDR R0, R0, 0H |
1239 | w(D179744C): BLEQ MT [trap=4, pos=31092] |
123A | x(4100000A): MOV R1, R0, AH |
123B | x(A1000000): STR R1, R0, 0H |
123C | y(80E00004): LDR R0, SP, 4H |
123D | y(80000000): LDR R0, R0, 0H |
123E | y(D1798A4C): BLEQ MT [trap=4, pos=31114] |
123F | z(41000004): MOV R1, R0, 4H |
1240 | z(A1000020): STR R1, R0, 20H |
1241 | a(40000000): MOV R0, R0, 0H |
1242 | a(A0E00010): STR R0, SP, 10H |
1243 | b(80E00004): LDR R0, SP, 4H |
1244 | b(80000000): LDR R0, R0, 0H |
1245 | c(41E80010): ADD R1, SP, 10H |
1246 | d(F7FFFF2D): BL -211 [1174H] |
| typ.dsce := ORB.topScope.nextf;g ORB.CloseScope |
1247 | e(80E00004): LDR R0, SP, 4H |
1248 | e(80000000): LDR R0, R0, 0H |
1249 | e(D179CC4C): BLEQ MT [trap=4, pos=31180] |
124A | f .FIXUP D |
124A | f(8D800016): LDR SB, MT, MOD8 [ORB] |
124B | f(81D00004): LDR R1, SB, VAR4 |
124C | f(D179E14C): BLEQ MT [trap=4, pos=31201] |
124D | g(81100008): LDR R1, R1, 8H |
124E | g(A1000014): STR R1, R0, 14H |
| ELSEh ORSi.Mark("identifier expected")j;k typ := ORB.noType |
124F | h .FIXUP P |
124F | h(F781401D): BL MOD8 [ORB] PROC20 |
1250 | i(E7000008): B 8 [1259H] |
1251 | j .FIXUP D |
1251 | j(8D000007): LDR SB, MT, MOD0 [ORP] |
1252 | j(40D806E8): ADD R0, SB, 6E8H ["identifier expected"] |
1253 | j(41000014): MOV R1, R0, 14H |
1254 | k .FIXUP P |
1254 | k(F7709005): BL MOD7 [ORS] PROC9 |
| ENDl |
1255 | l .FIXUP D |
1255 | l(8D800004): LDR SB, MT, MOD8 [ORB] |
1256 | l(80D0000D): LDR R0, SB, VAR13 |
1257 | l(81E00004): LDR R1, SP, 4H |
1258 | l(A0100000): STR R0, R1, 0H |
| ENDm FormalType0; |
1259 | m(8FE00000): LDR LNK, SP, 0H |
125A | m(4EE80014): ADD SP, SP, 14H |
125B | m(C700000F): B LNK |
| |
| PROCEDURE CheckRecLevel(lev: INTEGER); |
| BEGINn |
125C | n(4EE90008): SUB SP, SP, 8H |
125D | n(AFE00000): STR LNK, SP, 0H |
125E | n(A0E00004): STR R0, SP, 4H |
| IF lev # 0 THENo ORS.Mark("ptr base must be global")p ENDq |
125F | o(80E00004): LDR R0, SP, 4H |
1260 | o(E1000004): BEQ 4 [1265H] |
1261 | p .FIXUP D |
1261 | p(8D00000C): LDR SB, MT, MOD0 [ORP] |
1262 | p(40D806FC): ADD R0, SB, 6FCH ["ptr base must be global"] |
1263 | p(41000018): MOV R1, R0, 18H |
1264 | q .FIXUP P |
1264 | q(F7709010): BL MOD7 [ORS] PROC9 |
| ENDr CheckRecLevel; |
1265 | r(8FE00000): LDR LNK, SP, 0H |
1266 | r(4EE80008): ADD SP, SP, 8H |
1267 | r(C700000F): B LNK |
| |
| PROCEDURE Type0(VAR type: ORB.Type); |
| VAR dmy: LONGINT; obj: ORB.Object; ptbase: PtrBase; |
| BEGINs type := ORB.intType;t (*sync*) |
1268 | s(4EE90014): SUB SP, SP, 14H |
1269 | s(AFE00000): STR LNK, SP, 0H |
126A | s(A0E00004): STR R0, SP, 4H |
126B | t .FIXUP D |
126B | t(8D80000A): LDR SB, MT, MOD8 [ORB] |
126C | t(80D00009): LDR R0, SB, VAR9 |
126D | t(81E00004): LDR R1, SP, 4H |
126E | t(A0100000): STR R0, R1, 0H |
| IF (sym # ORS.ident)u & (vsym < ORS.array)w THENx ORS.Mark("not a type")y;z |
126F | u .FIXUP D |
126F | u(8D000004): LDR SB, MT, MOD0 [ORP] |
1270 | u(80D0001C): LDR R0, SB, 1CH [data] |
1271 | u(4009001F): SUB R0, R0, 1FH |
1272 | v(E1000013): BEQ 19 [1286H] |
1273 | w .FIXUP D |
1273 | w(8D000004): LDR SB, MT, MOD0 [ORP] |
1274 | w(80D0001C): LDR R0, SB, 1CH [data] |
1275 | w(4009003C): SUB R0, R0, 3CH |
1276 | x(ED00000F): BGE 15 [1286H] |
1277 | y .FIXUP D |
1277 | y(8D000004): LDR SB, MT, MOD0 [ORP] |
1278 | y(40D80714): ADD R0, SB, 714H ["not a type"] |
1279 | y(4100000B): MOV R1, R0, BH |
127A | z .FIXUP P |
127A | z(F7709016): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)a UNTILb (sym = ORS.ident)c OR (dsym >= ORS.array)e |
127B | a .FIXUP D |
127B | a(8D000004): LDR SB, MT, MOD0 [ORP] |
127C | a(40D8001C): ADD R0, SB, 1CH [data] |
127D | b .FIXUP P |
127D | b(F770A003): BL MOD7 [ORS] PROC10 |
127E | c .FIXUP D |
127E | c(8D000003): LDR SB, MT, MOD0 [ORP] |
127F | c(80D0001C): LDR R0, SB, 1CH [data] |
1280 | c(4009001F): SUB R0, R0, 1FH |
1281 | d(E1000004): BEQ 4 [1286H] |
1282 | e .FIXUP D |
1282 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
1283 | e(80D0001C): LDR R0, SB, 1CH [data] |
1284 | e(4009003C): SUB R0, R0, 3CH |
| ENDf ; |
1285 | f(E5FFFFF5): BLT -11 [127BH] |
| IF sym = ORS.ident THENg |
1286 | g .FIXUP D |
1286 | g(8D000004): LDR SB, MT, MOD0 [ORP] |
1287 | g(80D0001C): LDR R0, SB, 1CH [data] |
1288 | g(4009001F): SUB R0, R0, 1FH |
1289 | g(E900001D): BNE 29 [12A7H] |
| qualident(obj)h;i |
128A | h(40E8000C): ADD R0, SP, CH |
128B | i(F7FFED88): BL -4728 [0014H] |
| IF obj.classj = ORB.Typ THENk |
128C | j(80E0000C): LDR R0, SP, CH |
128D | j(D17C324C): BLEQ MT [trap=4, pos=31794] |
128E | k(90000000): LDR R0, R0, 0H |
128F | k(40090005): SUB R0, R0, 5H |
1290 | k(E9000011): BNE 17 [12A2H] |
| IF (obj.typel # NIL)m & (nobj.typeo.formp # ORB.NoTyp)q THENr type := obj.types ENDt |
1291 | l(80E0000C): LDR R0, SP, CH |
1292 | l(D17C564C): BLEQ MT [trap=4, pos=31830] |
1293 | m(80000010): LDR R0, R0, 10H |
1294 | n(E100000C): BEQ 12 [12A1H] |
1295 | o(80E0000C): LDR R0, SP, CH |
1296 | o(D17C694C): BLEQ MT [trap=4, pos=31849] |
1297 | p(80000010): LDR R0, R0, 10H |
1298 | p(D17C6E4C): BLEQ MT [trap=4, pos=31854] |
1299 | q(80000000): LDR R0, R0, 0H |
129A | q(40090009): SUB R0, R0, 9H |
129B | r(E1000005): BEQ 5 [12A1H] |
129C | s(80E0000C): LDR R0, SP, CH |
129D | s(D17C914C): BLEQ MT [trap=4, pos=31889] |
129E | t(80000010): LDR R0, R0, 10H |
129F | t(81E00004): LDR R1, SP, 4H |
12A0 | t(A0100000): STR R0, R1, 0H |
| ELSE ORSu.Mark("not a type or undefined")v |
12A1 | u(E7000004): B 4 [12A6H] |
12A2 | v .FIXUP D |
12A2 | v(8D00001C): LDR SB, MT, MOD0 [ORP] |
12A3 | v(40D80720): ADD R0, SB, 720H ["not a type or undefined"] |
12A4 | v(41000018): MOV R1, R0, 18H |
| ENDw |
12A5 | w .FIXUP P |
12A5 | w(F7709028): BL MOD7 [ORS] PROC9 |
| ELSIF symx = ORS.array THENy ORS.Get(sym)z;a ArrayType(type)b |
12A6 | x(E70000CD): B 205 [1374H] |
12A7 | y .FIXUP D |
12A7 | y(8D000005): LDR SB, MT, MOD0 [ORP] |
12A8 | y(80D0001C): LDR R0, SB, 1CH [data] |
12A9 | y(4009003C): SUB R0, R0, 3CH |
12AA | y(E9000006): BNE 6 [12B1H] |
12AB | z .FIXUP D |
12AB | z(8D000004): LDR SB, MT, MOD0 [ORP] |
12AC | z(40D8001C): ADD R0, SB, 1CH [data] |
12AD | a .FIXUP P |
12AD | a(F770A008): BL MOD7 [ORS] PROC10 |
12AE | b(80E00004): LDR R0, SP, 4H |
| ELSIFc symd = ORS.record THENe |
12AF | c(F7FFFCA2): BL -862 [0F52H] |
12B0 | d(E70000C3): B 195 [1374H] |
12B1 | e .FIXUP D |
12B1 | e(8D000006): LDR SB, MT, MOD0 [ORP] |
12B2 | e(80D0001C): LDR R0, SB, 1CH [data] |
12B3 | e(4009003D): SUB R0, R0, 3DH |
12B4 | e(E900000B): BNE 11 [12C0H] |
| ORS.Get(sym)f;g RecordType(type)h;i Check(ORS.end,j "no END")k |
12B5 | f .FIXUP D |
12B5 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
12B6 | f(40D8001C): ADD R0, SB, 1CH [data] |
12B7 | g .FIXUP P |
12B7 | g(F770A00A): BL MOD7 [ORS] PROC10 |
12B8 | h(80E00004): LDR R0, SP, 4H |
12B9 | i(F7FFFD0F): BL -753 [0FC9H] |
12BA | j(40000035): MOV R0, R0, 35H |
12BB | k .FIXUP D |
12BB | k(8D000006): LDR SB, MT, MOD0 [ORP] |
12BC | k(41D80738): ADD R1, SB, 738H ["no END"] |
12BD | k(42000007): MOV R2, R0, 7H |
| ELSIFl symm = ORS.pointer THENn |
12BE | l(F7FFED41): BL -4799 [0000H] |
12BF | m(E70000B4): B 180 [1374H] |
12C0 | n .FIXUP D |
12C0 | n(8D000005): LDR SB, MT, MOD0 [ORP] |
12C1 | n(80D0001C): LDR R0, SB, 1CH [data] |
12C2 | n(4009003E): SUB R0, R0, 3EH |
12C3 | n(E9000086): BNE 134 [134AH] |
| ORS.Get(sym)o;p Check(ORS.to,q "no TO")r;s |
12C4 | o .FIXUP D |
12C4 | o(8D000004): LDR SB, MT, MOD0 [ORP] |
12C5 | o(40D8001C): ADD R0, SB, 1CH [data] |
12C6 | p .FIXUP P |
12C6 | p(F770A00F): BL MOD7 [ORS] PROC10 |
12C7 | q(40000032): MOV R0, R0, 32H |
12C8 | r .FIXUP D |
12C8 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
12C9 | r(41D80740): ADD R1, SB, 740H ["no TO"] |
12CA | r(42000006): MOV R2, R0, 6H |
12CB | s(F7FFED34): BL -4812 [0000H] |
| NEW(type);t type.formu := ORB.Pointer;v type.sizew := ORG.WordSize;x type.basey := ORB.intType;z |
12CC | t(80E00004): LDR R0, SP, 4H |
12CD | t .FIXUP D |
12CD | t(8D800005): LDR SB, MT, MOD8 [ORB] |
12CE | t(41D80003): ADD R1, SB, VAR3 |
12CF | t(D77DC80C): BL MT [trap=0, pos=32200] |
12D0 | u(80E00004): LDR R0, SP, 4H |
12D1 | u(80000000): LDR R0, R0, 0H |
12D2 | u(D17DD34C): BLEQ MT [trap=4, pos=32211] |
12D3 | v(41000007): MOV R1, R0, 7H |
12D4 | v(A1000000): STR R1, R0, 0H |
12D5 | w(80E00004): LDR R0, SP, 4H |
12D6 | w(80000000): LDR R0, R0, 0H |
12D7 | w(D17DED4C): BLEQ MT [trap=4, pos=32237] |
12D8 | x(41000004): MOV R1, R0, 4H |
12D9 | x(A1000020): STR R1, R0, 20H |
12DA | y(80E00004): LDR R0, SP, 4H |
12DB | y(80000000): LDR R0, R0, 0H |
12DC | y(D17E084C): BLEQ MT [trap=4, pos=32264] |
12DD | z .FIXUP D |
12DD | z(8D800010): LDR SB, MT, MOD8 [ORB] |
12DE | z(81D00009): LDR R1, SB, VAR9 |
12DF | z(A100001C): STR R1, R0, 1CH |
| IF sym = ORS.ident THENa |
12E0 | a .FIXUP D |
12E0 | a(8D000003): LDR SB, MT, MOD0 [ORP] |
12E1 | a(80D0001C): LDR R0, SB, 1CH [data] |
12E2 | a(4009001F): SUB R0, R0, 1FH |
12E3 | a(E9000047): BNE 71 [132BH] |
| obj := ORB.thisObj();b |
12E4 | b .FIXUP P |
12E4 | b(F781001E): BL MOD8 [ORB] PROC16 |
12E5 | b(A0E0000C): STR R0, SP, CH |
| IF obj # NIL THENc |
12E6 | c(80E0000C): LDR R0, SP, CH |
12E7 | c(E1000029): BEQ 41 [1311H] |
| IF (obj.classd = ORB.Typ)e & (fobj.typeg.formh IN {ORB.Record, ORB.NoTyp})i THENj |
12E8 | d(80E0000C): LDR R0, SP, CH |
12E9 | d(D17E864C): BLEQ MT [trap=4, pos=32390] |
12EA | e(90000000): LDR R0, R0, 0H |
12EB | e(40090005): SUB R0, R0, 5H |
12EC | f(E9000015): BNE 21 [1302H] |
12ED | g(80E0000C): LDR R0, SP, CH |
12EE | g(D17E9D4C): BLEQ MT [trap=4, pos=32413] |
12EF | h(80000010): LDR R0, R0, 10H |
12F0 | h(D17EA24C): BLEQ MT [trap=4, pos=32418] |
12F1 | i(41002200): MOV R1, R0, 2200H |
12F2 | i(80000000): LDR R0, R0, 0H |
12F3 | i(40080001): ADD R0, R0, 1H |
12F4 | i(01130000): ROR R1, R1, R0 |
12F5 | j(E800000C): BPL 12 [1302H] |
| CheckRecLevel(obj.levk)l;m type.basen := obj.typeo |
12F6 | k(80E0000C): LDR R0, SP, CH |
12F7 | k(D17EE54C): BLEQ MT [trap=4, pos=32485] |
12F8 | l(80000004): LDR R0, R0, 4H |
12F9 | m(F7FFFF62): BL -158 [125CH] |
12FA | n(80E00004): LDR R0, SP, 4H |
12FB | n(80000000): LDR R0, R0, 0H |
12FC | n(D17EF14C): BLEQ MT [trap=4, pos=32497] |
12FD | o(81E0000C): LDR R1, SP, CH |
12FE | o(D17EFD4C): BLEQ MT [trap=4, pos=32509] |
| ELSIFp objq.classr = ORB.Mod THENs ORS.Mark("external base type not implemented")t |
12FF | p(81100010): LDR R1, R1, 10H |
1300 | p(A100001C): STR R1, R0, 1CH |
1301 | q(E700000E): B 14 [1310H] |
1302 | r(80E0000C): LDR R0, SP, CH |
1303 | r(D17F174C): BLEQ MT [trap=4, pos=32535] |
1304 | s(90000000): LDR R0, R0, 0H |
1305 | s(40090008): SUB R0, R0, 8H |
1306 | s(E9000005): BNE 5 [130CH] |
1307 | t .FIXUP D |
1307 | t(8D000027): LDR SB, MT, MOD0 [ORP] |
1308 | t(40D80748): ADD R0, SB, 748H ["external base type not implemented"] |
1309 | t(41000023): MOV R1, R0, 23H |
| ELSEu ORSv.Mark("no valid base type")w |
130A | u .FIXUP P |
130A | u(F7709026): BL MOD7 [ORS] PROC9 |
130B | v(E7000004): B 4 [1310H] |
130C | w .FIXUP D |
130C | w(8D000005): LDR SB, MT, MOD0 [ORP] |
130D | w(40D8076C): ADD R0, SB, 76CH ["no valid base type"] |
130E | w(41000013): MOV R1, R0, 13H |
| ENDx |
130F | x .FIXUP P |
130F | x(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE CheckRecLevely(level)z;a (*enter into list of forward references to be fixed in Declarations*) |
1310 | y(E7000016): B 22 [1327H] |
1311 | z .FIXUP D |
1311 | z(8D000005): LDR SB, MT, MOD0 [ORP] |
1312 | z(80D00024): LDR R0, SB, 24H [data] |
1313 | a(F7FFFF48): BL -184 [125CH] |
| NEW(ptbase);b ORS.CopyId(ptbase.namec);d ptbase.typee := type;f ptbase.nextg := pbsList;h pbsList := ptbase |
1314 | b(40E80010): ADD R0, SP, 10H |
1315 | b .FIXUP D |
1315 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
1316 | b(41D80000): ADD R1, SB, 0H [data] |
1317 | b(D780110C): BL MT [trap=0, pos=32785] |
1318 | c(80E00010): LDR R0, SP, 10H |
1319 | c(D180284C): BLEQ MT [trap=4, pos=32808] |
131A | d .FIXUP P |
131A | d(F770700B): BL MOD7 [ORS] PROC7 |
131B | e(80E00010): LDR R0, SP, 10H |
131C | e(D180364C): BLEQ MT [trap=4, pos=32822] |
131D | f(81E00004): LDR R1, SP, 4H |
131E | f(81100000): LDR R1, R1, 0H |
131F | f(A1000020): STR R1, R0, 20H |
1320 | g(80E00010): LDR R0, SP, 10H |
1321 | g(D1804B4C): BLEQ MT [trap=4, pos=32843] |
1322 | h .FIXUP D |
1322 | h(8D00000D): LDR SB, MT, MOD0 [ORP] |
1323 | h(81D00060): LDR R1, SB, 60H [data] |
1324 | h(A1000024): STR R1, R0, 24H |
| ENDi ; |
1325 | i(80E00010): LDR R0, SP, 10H |
1326 | i(A0D00060): STR R0, SB, 60H |
| ORS.Get(sym)j |
1327 | j .FIXUP D |
1327 | j(8D000005): LDR SB, MT, MOD0 [ORP] |
1328 | j(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEk Typel(type.basem)n;o |
1329 | k .FIXUP P |
1329 | k(F770A00F): BL MOD7 [ORS] PROC10 |
132A | l(E700001E): B 30 [1349H] |
132B | m(80E00004): LDR R0, SP, 4H |
132C | m(80000000): LDR R0, R0, 0H |
132D | m(D180A64C): BLEQ MT [trap=4, pos=32934] |
132E | n(4008001C): ADD R0, R0, 1CH |
132F | o .FIXUP D |
132F | o(8D000008): LDR SB, MT, MOD0 [ORP] |
1330 | o(81D00038): LDR R1, SB, 38H [data] |
1331 | o(D180A85C): BLEQ MT [trap=5, pos=32936] |
1332 | o(D7000001): BL R1 |
| IF (type.basep.formq # ORB.Record)r OR (stype.baset.typobju = NIL)v THENw ORS.Mark("must point to named record")x ENDy ; |
1333 | p(80E00004): LDR R0, SP, 4H |
1334 | p(80000000): LDR R0, R0, 0H |
1335 | p(D180BE4C): BLEQ MT [trap=4, pos=32958] |
1336 | q(8000001C): LDR R0, R0, 1CH |
1337 | q(D180C34C): BLEQ MT [trap=4, pos=32963] |
1338 | r(80000000): LDR R0, R0, 0H |
1339 | r(4009000D): SUB R0, R0, DH |
133A | s(E9000007): BNE 7 [1342H] |
133B | t(80E00004): LDR R0, SP, 4H |
133C | t(80000000): LDR R0, R0, 0H |
133D | t(D180DF4C): BLEQ MT [trap=4, pos=32991] |
133E | u(8000001C): LDR R0, R0, 1CH |
133F | u(D180E64C): BLEQ MT [trap=4, pos=32998] |
1340 | v(80000018): LDR R0, R0, 18H |
1341 | w(E9000004): BNE 4 [1346H] |
1342 | x .FIXUP D |
1342 | x(8D000013): LDR SB, MT, MOD0 [ORP] |
1343 | x(40D80780): ADD R0, SB, 780H ["must point to named record"] |
1344 | x(4100001B): MOV R1, R0, 1BH |
1345 | y .FIXUP P |
1345 | y(F770901C): BL MOD7 [ORS] PROC9 |
| CheckRecLevel(level)z |
1346 | z .FIXUP D |
1346 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
1347 | z(80D00024): LDR R0, SB, 24H [data] |
| ENDa |
1348 | a(F7FFFF13): BL -237 [125CH] |
| ELSIF symb = ORS.procedure THENc |
1349 | b(E700002A): B 42 [1374H] |
134A | c .FIXUP D |
134A | c(8D000004): LDR SB, MT, MOD0 [ORP] |
134B | c(80D0001C): LDR R0, SB, 1CH [data] |
134C | c(40090042): SUB R0, R0, 42H |
134D | c(E9000022): BNE 34 [1370H] |
| ORS.Get(sym)d;e ORB.OpenScope;f |
134E | d .FIXUP D |
134E | d(8D000004): LDR SB, MT, MOD0 [ORP] |
134F | d(40D8001C): ADD R0, SB, 1CH [data] |
1350 | e .FIXUP P |
1350 | e(F770A00B): BL MOD7 [ORS] PROC10 |
1351 | f .FIXUP P |
1351 | f(F7813001): BL MOD8 [ORB] PROC19 |
| NEW(type);g type.formh := ORB.Proc;i type.sizej := ORG.WordSize;k dmy := 0;l |
1352 | g(80E00004): LDR R0, SP, 4H |
1353 | g .FIXUP D |
1353 | g(8D800005): LDR SB, MT, MOD8 [ORB] |
1354 | g(41D80003): ADD R1, SB, VAR3 |
1355 | g(D7819D0C): BL MT [trap=0, pos=33181] |
1356 | h(80E00004): LDR R0, SP, 4H |
1357 | h(80000000): LDR R0, R0, 0H |
1358 | h(D181A74C): BLEQ MT [trap=4, pos=33191] |
1359 | i(4100000A): MOV R1, R0, AH |
135A | i(A1000000): STR R1, R0, 0H |
135B | j(80E00004): LDR R0, SP, 4H |
135C | j(80000000): LDR R0, R0, 0H |
135D | j(D181BE4C): BLEQ MT [trap=4, pos=33214] |
135E | k(41000004): MOV R1, R0, 4H |
135F | k(A1000020): STR R1, R0, 20H |
1360 | l(40000000): MOV R0, R0, 0H |
1361 | l(A0E00008): STR R0, SP, 8H |
| ProcedureType(type,m dmy)n;o type.dscp := ORB.topScope.nextq;r ORB.CloseScope |
1362 | m(80E00004): LDR R0, SP, 4H |
1363 | m(80000000): LDR R0, R0, 0H |
1364 | n(41E80008): ADD R1, SP, 8H |
1365 | o(F7FFFE0E): BL -498 [1174H] |
1366 | p(80E00004): LDR R0, SP, 4H |
1367 | p(80000000): LDR R0, R0, 0H |
1368 | p(D182024C): BLEQ MT [trap=4, pos=33282] |
1369 | q .FIXUP D |
1369 | q(8D800016): LDR SB, MT, MOD8 [ORB] |
136A | q(81D00004): LDR R1, SB, VAR4 |
136B | q(D182174C): BLEQ MT [trap=4, pos=33303] |
136C | r(81100008): LDR R1, R1, 8H |
136D | r(A1000014): STR R1, R0, 14H |
| ELSEs ORSt.Mark("illegal type")u |
136E | s .FIXUP P |
136E | s(F781401D): BL MOD8 [ORB] PROC20 |
136F | t(E7000004): B 4 [1374H] |
1370 | u .FIXUP D |
1370 | u(8D000007): LDR SB, MT, MOD0 [ORP] |
1371 | u(40D8079C): ADD R0, SB, 79CH ["illegal type"] |
1372 | u(4100000D): MOV R1, R0, DH |
| ENDv |
1373 | v .FIXUP P |
1373 | v(F7709005): BL MOD7 [ORS] PROC9 |
| ENDw Type0; |
1374 | w(8FE00000): LDR LNK, SP, 0H |
1375 | w(4EE80014): ADD SP, SP, 14H |
1376 | w(C700000F): B LNK |
| |
| PROCEDURE Declarations(VAR varsize: LONGINT); |
| VAR obj, first: ORB.Object; |
| x: ORG.Item; tp: ORB.Type; ptbase: PtrBase; |
| expo: BOOLEAN; id: ORS.Ident; |
| BEGINx (*sync*) pbsList := NIL;y |
1377 | x(4EE90054): SUB SP, SP, 54H |
1378 | x(AFE00000): STR LNK, SP, 0H |
1379 | x(A0E00004): STR R0, SP, 4H |
137A | y(40000000): MOV R0, R0, 0H |
137B | y .FIXUP D |
137B | y(8D00000B): LDR SB, MT, MOD0 [ORP] |
137C | y(A0D00060): STR R0, SB, 60H [data] |
| IF (sym < ORS.const)z & (asym # ORS.end)b & (csym # ORS.return)d THENe ORS.Mark("declaration?")f;g |
137D | z(80D0001C): LDR R0, SB, 1CH |
137E | z(4009003F): SUB R0, R0, 3FH |
137F | a(ED00001B): BGE 27 [139BH] |
1380 | b .FIXUP D |
1380 | b(8D000005): LDR SB, MT, MOD0 [ORP] |
1381 | b(80D0001C): LDR R0, SB, 1CH [data] |
1382 | b(40090035): SUB R0, R0, 35H |
1383 | c(E1000017): BEQ 23 [139BH] |
1384 | d .FIXUP D |
1384 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
1385 | d(80D0001C): LDR R0, SB, 1CH [data] |
1386 | d(4009003A): SUB R0, R0, 3AH |
1387 | e(E1000013): BEQ 19 [139BH] |
1388 | f .FIXUP D |
1388 | f(8D000004): LDR SB, MT, MOD0 [ORP] |
1389 | f(40D807AC): ADD R0, SB, 7ACH ["declaration?"] |
138A | f(4100000D): MOV R1, R0, DH |
138B | g .FIXUP P |
138B | g(F7709018): BL MOD7 [ORS] PROC9 |
| REPEAT ORS.Get(sym)h UNTILi (sym >= ORS.const)j OR (ksym = ORS.end)l OR (msym = ORS.return)n |
138C | h .FIXUP D |
138C | h(8D000004): LDR SB, MT, MOD0 [ORP] |
138D | h(40D8001C): ADD R0, SB, 1CH [data] |
138E | i .FIXUP P |
138E | i(F770A003): BL MOD7 [ORS] PROC10 |
138F | j .FIXUP D |
138F | j(8D000003): LDR SB, MT, MOD0 [ORP] |
1390 | j(80D0001C): LDR R0, SB, 1CH [data] |
1391 | j(4009003F): SUB R0, R0, 3FH |
1392 | k(ED000008): BGE 8 [139BH] |
1393 | l .FIXUP D |
1393 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
1394 | l(80D0001C): LDR R0, SB, 1CH [data] |
1395 | l(40090035): SUB R0, R0, 35H |
1396 | m(E1000004): BEQ 4 [139BH] |
1397 | n .FIXUP D |
1397 | n(8D000004): LDR SB, MT, MOD0 [ORP] |
1398 | n(80D0001C): LDR R0, SB, 1CH [data] |
1399 | n(4009003A): SUB R0, R0, 3AH |
| ENDo ; |
139A | o(E9FFFFF1): BNE -15 [138CH] |
| IF sym = ORS.const THENp |
139B | p .FIXUP D |
139B | p(8D000004): LDR SB, MT, MOD0 [ORP] |
139C | p(80D0001C): LDR R0, SB, 1CH [data] |
139D | p(4009003F): SUB R0, R0, 3FH |
139E | p(E9000054): BNE 84 [13F3H] |
| ORS.Get(sym)q;r |
139F | q .FIXUP D |
139F | q(8D000004): LDR SB, MT, MOD0 [ORP] |
13A0 | q(40D8001C): ADD R0, SB, 1CH [data] |
13A1 | r .FIXUP P |
13A1 | r(F770A013): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOs |
13A2 | s .FIXUP D |
13A2 | s(8D000003): LDR SB, MT, MOD0 [ORP] |
13A3 | s(80D0001C): LDR R0, SB, 1CH [data] |
13A4 | s(4009001F): SUB R0, R0, 1FH |
13A5 | s(E900004D): BNE 77 [13F3H] |
| ORS.CopyId(id)t;u ORS.Get(sym)v;w CheckExport(expo)x;y |
13A6 | t(40E80034): ADD R0, SP, 34H |
13A7 | u .FIXUP P |
13A7 | u(F7707006): BL MOD7 [ORS] PROC7 |
13A8 | v .FIXUP D |
13A8 | v(8D000006): LDR SB, MT, MOD0 [ORP] |
13A9 | v(40D8001C): ADD R0, SB, 1CH [data] |
13AA | w .FIXUP P |
13AA | w(F770A003): BL MOD7 [ORS] PROC10 |
13AB | x(40E80030): ADD R0, SP, 30H |
13AC | y(F7FFED45): BL -4795 [00F2H] |
| IF sym = ORS.eql THENz ORS.Get(sym)a ELSEb ORSc.Mark("= ?")d ENDe; |
13AD | z .FIXUP D |
13AD | z(8D000005): LDR SB, MT, MOD0 [ORP] |
13AE | z(80D0001C): LDR R0, SB, 1CH [data] |
13AF | z(40090009): SUB R0, R0, 9H |
13B0 | z(E9000004): BNE 4 [13B5H] |
13B1 | a .FIXUP D |
13B1 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
13B2 | a(40D8001C): ADD R0, SB, 1CH [data] |
13B3 | b .FIXUP P |
13B3 | b(F770A009): BL MOD7 [ORS] PROC10 |
13B4 | c(E7000004): B 4 [13B9H] |
13B5 | d .FIXUP D |
13B5 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
13B6 | d(40D807BC): ADD R0, SB, 7BCH ["= ?"] |
13B7 | d(41000004): MOV R1, R0, 4H |
13B8 | e .FIXUP P |
13B8 | e(F7709005): BL MOD7 [ORS] PROC9 |
| expression(x)f;g |
13B9 | f(40E80010): ADD R0, SP, 10H |
13BA | f .FIXUP D |
13BA | f(8D900005): LDR SB, MT, MOD9 [ORG] |
13BB | f(41D80001): ADD R1, SB, VAR1 |
13BC | g .FIXUP D |
13BC | g(8D000002): LDR SB, MT, MOD0 [ORP] |
13BD | g(82D00034): LDR R2, SB, 34H [data] |
13BE | g(D184CF5C): BLEQ MT [trap=5, pos=33999] |
13BF | g(D7000002): BL R2 |
| IF (x.type.formh = ORB.String)i & (jx.b = 2)k THENl ORG.StrToChar(x)m ENDn ; |
13C0 | h(80E00014): LDR R0, SP, 14H |
13C1 | h(D184E74C): BLEQ MT [trap=4, pos=34023] |
13C2 | i(80000000): LDR R0, R0, 0H |
13C3 | i(4009000B): SUB R0, R0, BH |
13C4 | j(E9000007): BNE 7 [13CCH] |
13C5 | k(80E0001C): LDR R0, SP, 1CH |
13C6 | k(40090002): SUB R0, R0, 2H |
13C7 | l(E9000004): BNE 4 [13CCH] |
13C8 | m(40E80010): ADD R0, SP, 10H |
13C9 | m .FIXUP D |
13C9 | m(8D90000D): LDR SB, MT, MOD9 [ORG] |
13CA | m(41D80001): ADD R1, SB, VAR1 |
13CB | n .FIXUP P |
13CB | n(F791F013): BL MOD9 [ORG] PROC31 |
| ORB.NewObj(obj,o id,p ORB.Const)q;r obj.expos := expo;t |
13CC | o(40E80008): ADD R0, SP, 8H |
13CD | p(41E80034): ADD R1, SP, 34H |
13CE | q(42000001): MOV R2, R0, 1H |
13CF | r .FIXUP P |
13CF | r(F780F004): BL MOD8 [ORB] PROC15 |
13D0 | s(80E00008): LDR R0, SP, 8H |
13D1 | s(D1854E4C): BLEQ MT [trap=4, pos=34126] |
13D2 | t(91E00030): LDR R1, SP, 30H |
13D3 | t(B1000002): STR R1, R0, 2H |
| IF x.mode = ORB.Const THENu obj.valv := x.a;w obj.levx := x.b;y obj.typez := x.type |
13D4 | u(80E00010): LDR R0, SP, 10H |
13D5 | u(40090001): SUB R0, R0, 1H |
13D6 | u(E900000D): BNE 13 [13E4H] |
13D7 | v(80E00008): LDR R0, SP, 8H |
13D8 | v(D185824C): BLEQ MT [trap=4, pos=34178] |
13D9 | w(81E00018): LDR R1, SP, 18H |
13DA | w(A1000034): STR R1, R0, 34H |
13DB | x(80E00008): LDR R0, SP, 8H |
13DC | x(D185924C): BLEQ MT [trap=4, pos=34194] |
13DD | y(81E0001C): LDR R1, SP, 1CH |
13DE | y(A1000004): STR R1, R0, 4H |
13DF | z(80E00008): LDR R0, SP, 8H |
13E0 | z(D185A34C): BLEQ MT [trap=4, pos=34211] |
| ELSEa ORSb.Mark("expression not constant")c;d obj.typee := ORB.intType |
13E1 | a(81E00014): LDR R1, SP, 14H |
13E2 | a(A1000010): STR R1, R0, 10H |
13E3 | b(E7000009): B 9 [13EDH] |
13E4 | c .FIXUP D |
13E4 | c(8D00001B): LDR SB, MT, MOD0 [ORP] |
13E5 | c(40D807C0): ADD R0, SB, 7C0H ["expression not constant"] |
13E6 | c(41000018): MOV R1, R0, 18H |
13E7 | d .FIXUP P |
13E7 | d(F7709018): BL MOD7 [ORS] PROC9 |
13E8 | e(80E00008): LDR R0, SP, 8H |
13E9 | e(D185E84C): BLEQ MT [trap=4, pos=34280] |
| ENDf; |
13EA | f .FIXUP D |
13EA | f(8D800006): LDR SB, MT, MOD8 [ORB] |
13EB | f(81D00009): LDR R1, SB, VAR9 |
13EC | f(A1000010): STR R1, R0, 10H |
| Check(ORS.semicolon,g "; missing")h |
13ED | g(40000034): MOV R0, R0, 34H |
13EE | h .FIXUP D |
13EE | h(8D000004): LDR SB, MT, MOD0 [ORP] |
13EF | h(41D807D8): ADD R1, SB, 7D8H ["; missing"] |
13F0 | h(4200000A): MOV R2, R0, AH |
| ENDi |
13F1 | i(F7FFEC0E): BL -5106 [0000H] |
13F2 | i(E7FFFFAF): B -81 [13A2H] |
| END ; |
| IF sym = ORS.type THENj |
13F3 | j .FIXUP D |
13F3 | j(8D000005): LDR SB, MT, MOD0 [ORP] |
13F4 | j(80D0001C): LDR R0, SB, 1CH [data] |
13F5 | j(40090040): SUB R0, R0, 40H |
13F6 | j(E9000081): BNE 129 [1478H] |
| ORS.Get(sym)k;l |
13F7 | k .FIXUP D |
13F7 | k(8D000004): LDR SB, MT, MOD0 [ORP] |
13F8 | k(40D8001C): ADD R0, SB, 1CH [data] |
13F9 | l .FIXUP P |
13F9 | l(F770A012): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOm |
13FA | m .FIXUP D |
13FA | m(8D000003): LDR SB, MT, MOD0 [ORP] |
13FB | m(80D0001C): LDR R0, SB, 1CH [data] |
13FC | m(4009001F): SUB R0, R0, 1FH |
13FD | m(E900007A): BNE 122 [1478H] |
| ORS.CopyId(id)n;o ORS.Get(sym)p;q CheckExport(expo)r;s |
13FE | n(40E80034): ADD R0, SP, 34H |
13FF | o .FIXUP P |
13FF | o(F7707006): BL MOD7 [ORS] PROC7 |
1400 | p .FIXUP D |
1400 | p(8D000006): LDR SB, MT, MOD0 [ORP] |
1401 | p(40D8001C): ADD R0, SB, 1CH [data] |
1402 | q .FIXUP P |
1402 | q(F770A003): BL MOD7 [ORS] PROC10 |
1403 | r(40E80030): ADD R0, SP, 30H |
1404 | s(F7FFECED): BL -4883 [00F2H] |
| IF sym = ORS.eql THENt ORS.Get(sym)u ELSEv ORSw.Mark("=?")x ENDy ; |
1405 | t .FIXUP D |
1405 | t(8D000005): LDR SB, MT, MOD0 [ORP] |
1406 | t(80D0001C): LDR R0, SB, 1CH [data] |
1407 | t(40090009): SUB R0, R0, 9H |
1408 | t(E9000004): BNE 4 [140DH] |
1409 | u .FIXUP D |
1409 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
140A | u(40D8001C): ADD R0, SB, 1CH [data] |
140B | v .FIXUP P |
140B | v(F770A009): BL MOD7 [ORS] PROC10 |
140C | w(E7000004): B 4 [1411H] |
140D | x .FIXUP D |
140D | x(8D000004): LDR SB, MT, MOD0 [ORP] |
140E | x(40D807E4): ADD R0, SB, 7E4H ["=?"] |
140F | x(41000003): MOV R1, R0, 3H |
1410 | y .FIXUP P |
1410 | y(F7709005): BL MOD7 [ORS] PROC9 |
| Type(tp)z;a |
1411 | z(40E80028): ADD R0, SP, 28H |
1412 | a .FIXUP D |
1412 | a(8D000005): LDR SB, MT, MOD0 [ORP] |
1413 | a(81D00038): LDR R1, SB, 38H [data] |
1414 | a(D187205C): BLEQ MT [trap=5, pos=34592] |
1415 | a(D7000001): BL R1 |
| ORB.NewObj(obj,b id,c ORB.Typ)d;e obj.typef := tp;g obj.expoh := expo;i obj.levj := level;k |
1416 | b(40E80008): ADD R0, SP, 8H |
1417 | c(41E80034): ADD R1, SP, 34H |
1418 | d(42000005): MOV R2, R0, 5H |
1419 | e .FIXUP P |
1419 | e(F780F009): BL MOD8 [ORB] PROC15 |
141A | f(80E00008): LDR R0, SP, 8H |
141B | f(D1874F4C): BLEQ MT [trap=4, pos=34639] |
141C | g(81E00028): LDR R1, SP, 28H |
141D | g(A1000010): STR R1, R0, 10H |
141E | h(80E00008): LDR R0, SP, 8H |
141F | h(D1875F4C): BLEQ MT [trap=4, pos=34655] |
1420 | i(91E00030): LDR R1, SP, 30H |
1421 | i(B1000002): STR R1, R0, 2H |
1422 | j(80E00008): LDR R0, SP, 8H |
1423 | j(D187704C): BLEQ MT [trap=4, pos=34672] |
1424 | k .FIXUP D |
1424 | k(8D000012): LDR SB, MT, MOD0 [ORP] |
1425 | k(81D00024): LDR R1, SB, 24H [data] |
1426 | k(A1000004): STR R1, R0, 4H |
| IF tp.typobjl = NIL THENm tp.typobjn := obj ENDo ; |
1427 | l(80E00028): LDR R0, SP, 28H |
1428 | l(D1878F4C): BLEQ MT [trap=4, pos=34703] |
1429 | m(80000018): LDR R0, R0, 18H |
142A | m(E9000004): BNE 4 [142FH] |
142B | n(80E00028): LDR R0, SP, 28H |
142C | n(D187A44C): BLEQ MT [trap=4, pos=34724] |
142D | o(81E00008): LDR R1, SP, 8H |
142E | o(A1000018): STR R1, R0, 18H |
| IF expo & (pobj.typeq.formr = ORB.Record)s THENt obj.exnou := exno;v INC(exno) ELSEw objx.exnoy := 0 ENDz ; |
142F | p(90E00030): LDR R0, SP, 30H |
1430 | p(E1000011): BEQ 17 [1442H] |
1431 | q(80E00008): LDR R0, SP, 8H |
1432 | q(D187CD4C): BLEQ MT [trap=4, pos=34765] |
1433 | r(80000010): LDR R0, R0, 10H |
1434 | r(D187D24C): BLEQ MT [trap=4, pos=34770] |
1435 | s(80000000): LDR R0, R0, 0H |
1436 | s(4009000D): SUB R0, R0, DH |
1437 | t(E900000A): BNE 10 [1442H] |
1438 | u(80E00008): LDR R0, SP, 8H |
1439 | u(D187EE4C): BLEQ MT [trap=4, pos=34798] |
143A | v .FIXUP D |
143A | v(8D000016): LDR SB, MT, MOD0 [ORP] |
143B | v(81D00028): LDR R1, SB, 28H [data] |
143C | v(B1000001): STR R1, R0, 1H |
143D | w(40D80028): ADD R0, SB, 28H |
143E | w(81000000): LDR R1, R0, 0H |
143F | w(41180001): ADD R1, R1, 1H |
1440 | w(A1000000): STR R1, R0, 0H |
1441 | x(E7000004): B 4 [1446H] |
1442 | y(80E00008): LDR R0, SP, 8H |
1443 | y(D1880F4C): BLEQ MT [trap=4, pos=34831] |
1444 | z(41000000): MOV R1, R0, 0H |
1445 | z(B1000001): STR R1, R0, 1H |
| IF tp.forma = ORB.Record THENb |
1446 | a(80E00028): LDR R0, SP, 28H |
1447 | a(D1882D4C): BLEQ MT [trap=4, pos=34861] |
1448 | b(80000000): LDR R0, R0, 0H |
1449 | b(4009000D): SUB R0, R0, DH |
144A | b(E9000027): BNE 39 [1472H] |
| ptbase := pbsList;c (*check whether this is base of a pointer type; search and fixup*) |
144B | c .FIXUP D |
144B | c(8D000011): LDR SB, MT, MOD0 [ORP] |
144C | c(80D00060): LDR R0, SB, 60H [data] |
144D | c(A0E0002C): STR R0, SP, 2CH |
| WHILE ptbase # NIL DOd |
144E | d(80E0002C): LDR R0, SP, 2CH |
144F | d(E100001B): BEQ 27 [146BH] |
| IF obj.namee = ptbase.namef THENg ptbase.typeh.basei := obj.typej ENDk ; |
1450 | e(80E00008): LDR R0, SP, 8H |
1451 | e(D188D84C): BLEQ MT [trap=4, pos=35032] |
1452 | f(81E0002C): LDR R1, SP, 2CH |
1453 | f(D188E64C): BLEQ MT [trap=4, pos=35046] |
1454 | g(40080014): ADD R0, R0, 14H |
1455 | g(92000000): LDR R2, R0, 0H |
1456 | g(40080001): ADD R0, R0, 1H |
1457 | g(93100000): LDR R3, R1, 0H |
1458 | g(41180001): ADD R1, R1, 1H |
1459 | g(04290003): SUB R4, R2, R3 |
145A | g(E9000002): BNE 2 [145DH] |
145B | g(44290000): SUB R4, R2, 0H |
145C | g(E9FFFFF8): BNE -8 [1455H] |
145D | g(E9000008): BNE 8 [1466H] |
145E | h(80E0002C): LDR R0, SP, 2CH |
145F | h(D188F74C): BLEQ MT [trap=4, pos=35063] |
1460 | i(80000020): LDR R0, R0, 20H |
1461 | i(D188FC4C): BLEQ MT [trap=4, pos=35068] |
1462 | j(81E00008): LDR R1, SP, 8H |
1463 | j(D189084C): BLEQ MT [trap=4, pos=35080] |
1464 | k(81100010): LDR R1, R1, 10H |
1465 | k(A100001C): STR R1, R0, 1CH |
| ptbase := ptbase.nextl |
1466 | l(80E0002C): LDR R0, SP, 2CH |
1467 | l(D189304C): BLEQ MT [trap=4, pos=35120] |
| ENDm ; |
1468 | m(80000024): LDR R0, R0, 24H |
1469 | m(A0E0002C): STR R0, SP, 2CH |
146A | m(E7FFFFE3): B -29 [144EH] |
| IF level = 0 THENn ORG.BuildTD(tp,o dc)p ENDq (*type descriptor; len used as its address*) |
146B | n .FIXUP D |
146B | n(8D000020): LDR SB, MT, MOD0 [ORP] |
146C | n(80D00024): LDR R0, SB, 24H [data] |
146D | n(E9000004): BNE 4 [1472H] |
146E | o(80E00028): LDR R0, SP, 28H |
146F | p .FIXUP D |
146F | p(8D000004): LDR SB, MT, MOD0 [ORP] |
1470 | p(41D80020): ADD R1, SB, 20H [data] |
1471 | q .FIXUP P |
1471 | q(F790C058): BL MOD9 [ORG] PROC12 |
| END ; |
| Check(ORS.semicolon,r "; missing")s |
1472 | r(40000034): MOV R0, R0, 34H |
1473 | s .FIXUP D |
1473 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
1474 | s(41D807E8): ADD R1, SB, 7E8H ["; missing"] |
1475 | s(4200000A): MOV R2, R0, AH |
| ENDt |
1476 | t(F7FFEB89): BL -5239 [0000H] |
1477 | t(E7FFFF82): B -126 [13FAH] |
| END ; |
| IF sym = ORS.var THENu |
1478 | u .FIXUP D |
1478 | u(8D000005): LDR SB, MT, MOD0 [ORP] |
1479 | u(80D0001C): LDR R0, SB, 1CH [data] |
147A | u(40090041): SUB R0, R0, 41H |
147B | u(E900004F): BNE 79 [14CBH] |
| ORS.Get(sym)v;w |
147C | v .FIXUP D |
147C | v(8D000004): LDR SB, MT, MOD0 [ORP] |
147D | v(40D8001C): ADD R0, SB, 1CH [data] |
147E | w .FIXUP P |
147E | w(F770A00D): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOx |
147F | x .FIXUP D |
147F | x(8D000003): LDR SB, MT, MOD0 [ORP] |
1480 | x(80D0001C): LDR R0, SB, 1CH [data] |
1481 | x(4009001F): SUB R0, R0, 1FH |
1482 | x(E9000048): BNE 72 [14CBH] |
| IdentList(ORB.Var,y first)z;a Type(tp)b;c |
1483 | y(40000002): MOV R0, R0, 2H |
1484 | z(41E8000C): ADD R1, SP, CH |
1485 | a(F7FFFA87): BL -1401 [0F0DH] |
1486 | b(40E80028): ADD R0, SP, 28H |
1487 | c .FIXUP D |
1487 | c(8D000008): LDR SB, MT, MOD0 [ORP] |
1488 | c(81D00038): LDR R1, SB, 38H [data] |
1489 | c(D18A6A5C): BLEQ MT [trap=5, pos=35434] |
148A | c(D7000001): BL R1 |
| obj := first;d |
148B | d(80E0000C): LDR R0, SP, CH |
148C | d(A0E00008): STR R0, SP, 8H |
| WHILE obj # NIL DOe |
148D | e(80E00008): LDR R0, SP, 8H |
148E | e(E1000036): BEQ 54 [14C5H] |
| obj.typef := tp;g obj.levh := level;i |
148F | f(80E00008): LDR R0, SP, 8H |
1490 | f(D18AAE4C): BLEQ MT [trap=4, pos=35502] |
1491 | g(81E00028): LDR R1, SP, 28H |
1492 | g(A1000010): STR R1, R0, 10H |
1493 | h(80E00008): LDR R0, SP, 8H |
1494 | h(D18ABD4C): BLEQ MT [trap=4, pos=35517] |
1495 | i .FIXUP D |
1495 | i(8D00000E): LDR SB, MT, MOD0 [ORP] |
1496 | i(81D00024): LDR R1, SB, 24H [data] |
1497 | i(A1000004): STR R1, R0, 4H |
| IF tp.sizej > 1 THENk varsize := (varsize + 3)l DIV 4 *m 4 (*align*) ENDn ; |
1498 | j(80E00028): LDR R0, SP, 28H |
1499 | j(D18ADC4C): BLEQ MT [trap=4, pos=35548] |
149A | k(80000020): LDR R0, R0, 20H |
149B | k(40090001): SUB R0, R0, 1H |
149C | k(E6000007): BLE 7 [14A4H] |
149D | l(80E00004): LDR R0, SP, 4H |
149E | l(80000000): LDR R0, R0, 0H |
149F | l(40080003): ADD R0, R0, 3H |
14A0 | m(40020002): ASR R0, R0, 2H |
14A1 | n(40010002): LSL R0, R0, 2H |
14A2 | n(81E00004): LDR R1, SP, 4H |
14A3 | n(A0100000): STR R0, R1, 0H |
| obj.valo := varsize;p varsize := varsize + obj.typeq.sizer;s |
14A4 | o(80E00008): LDR R0, SP, 8H |
14A5 | o(D18B2A4C): BLEQ MT [trap=4, pos=35626] |
14A6 | p(81E00004): LDR R1, SP, 4H |
14A7 | p(81100000): LDR R1, R1, 0H |
14A8 | p(A1000034): STR R1, R0, 34H |
14A9 | q(80E00008): LDR R0, SP, 8H |
14AA | q(D18B544C): BLEQ MT [trap=4, pos=35668] |
14AB | r(80000010): LDR R0, R0, 10H |
14AC | r(D18B594C): BLEQ MT [trap=4, pos=35673] |
14AD | s(81E00004): LDR R1, SP, 4H |
14AE | s(81100000): LDR R1, R1, 0H |
14AF | s(80000020): LDR R0, R0, 20H |
14B0 | s(00180000): ADD R0, R1, R0 |
14B1 | s(81E00004): LDR R1, SP, 4H |
14B2 | s(A0100000): STR R0, R1, 0H |
| IF obj.expot THENu obj.exnov := exno;w INC(exno) ENDx ; |
14B3 | t(80E00008): LDR R0, SP, 8H |
14B4 | t(D18B704C): BLEQ MT [trap=4, pos=35696] |
14B5 | u(90000002): LDR R0, R0, 2H |
14B6 | u(E1000009): BEQ 9 [14C0H] |
14B7 | v(80E00008): LDR R0, SP, 8H |
14B8 | v(D18B7E4C): BLEQ MT [trap=4, pos=35710] |
14B9 | w .FIXUP D |
14B9 | w(8D000024): LDR SB, MT, MOD0 [ORP] |
14BA | w(81D00028): LDR R1, SB, 28H [data] |
14BB | w(B1000001): STR R1, R0, 1H |
14BC | x(40D80028): ADD R0, SB, 28H |
14BD | x(81000000): LDR R1, R0, 0H |
14BE | x(41180001): ADD R1, R1, 1H |
14BF | x(A1000000): STR R1, R0, 0H |
| obj := obj.nexty |
14C0 | y(80E00008): LDR R0, SP, 8H |
14C1 | y(D18BB14C): BLEQ MT [trap=4, pos=35761] |
| ENDz ; |
14C2 | z(80000008): LDR R0, R0, 8H |
14C3 | z(A0E00008): STR R0, SP, 8H |
14C4 | z(E7FFFFC8): B -56 [148DH] |
| Check(ORS.semicolon,a "; missing")b |
14C5 | a(40000034): MOV R0, R0, 34H |
14C6 | b .FIXUP D |
14C6 | b(8D00000D): LDR SB, MT, MOD0 [ORP] |
14C7 | b(41D807F4): ADD R1, SB, 7F4H ["; missing"] |
14C8 | b(4200000A): MOV R2, R0, AH |
| ENDc |
14C9 | c(F7FFEB36): BL -5322 [0000H] |
14CA | c(E7FFFFB4): B -76 [147FH] |
| END ; |
| varsize := (varsize + 3)d DIV 4 *e 4;f |
14CB | d(80E00004): LDR R0, SP, 4H |
14CC | d(80000000): LDR R0, R0, 0H |
14CD | d(40080003): ADD R0, R0, 3H |
14CE | e(40020002): ASR R0, R0, 2H |
14CF | f(40010002): LSL R0, R0, 2H |
14D0 | f(81E00004): LDR R1, SP, 4H |
14D1 | f(A0100000): STR R0, R1, 0H |
| ptbase := pbsList;g |
14D2 | g .FIXUP D |
14D2 | g(8D00000C): LDR SB, MT, MOD0 [ORP] |
14D3 | g(80D00060): LDR R0, SB, 60H [data] |
14D4 | g(A0E0002C): STR R0, SP, 2CH |
| WHILE ptbase # NIL DOh |
14D5 | h(80E0002C): LDR R0, SP, 2CH |
14D6 | h(E1000012): BEQ 18 [14E9H] |
| IF ptbase.typei.basej.formk = ORB.Int THENl ORS.Mark("undefined pointer base of")m ENDn ; |
14D7 | i(80E0002C): LDR R0, SP, 2CH |
14D8 | i(D18C6B4C): BLEQ MT [trap=4, pos=35947] |
14D9 | j(80000020): LDR R0, R0, 20H |
14DA | j(D18C704C): BLEQ MT [trap=4, pos=35952] |
14DB | k(8000001C): LDR R0, R0, 1CH |
14DC | k(D18C754C): BLEQ MT [trap=4, pos=35957] |
14DD | l(80000000): LDR R0, R0, 0H |
14DE | l(40090004): SUB R0, R0, 4H |
14DF | l(E9000004): BNE 4 [14E4H] |
14E0 | m .FIXUP D |
14E0 | m(8D00000E): LDR SB, MT, MOD0 [ORP] |
14E1 | m(40D80800): ADD R0, SB, 800H ["undefined pointer base of"] |
14E2 | m(4100001A): MOV R1, R0, 1AH |
14E3 | n .FIXUP P |
14E3 | n(F7709065): BL MOD7 [ORS] PROC9 |
| ptbase := ptbase.nexto |
14E4 | o(80E0002C): LDR R0, SP, 2CH |
14E5 | o(D18CCC4C): BLEQ MT [trap=4, pos=36044] |
| ENDp ; |
14E6 | p(80000024): LDR R0, R0, 24H |
14E7 | p(A0E0002C): STR R0, SP, 2CH |
14E8 | p(E7FFFFEC): B -20 [14D5H] |
| IF (sym >= ORS.const)q & (rsym <= ORS.var)s THENt ORS.Mark("declaration in bad order")u ENDv |
14E9 | q .FIXUP D |
14E9 | q(8D000009): LDR SB, MT, MOD0 [ORP] |
14EA | q(80D0001C): LDR R0, SB, 1CH [data] |
14EB | q(4009003F): SUB R0, R0, 3FH |
14EC | r(E5000008): BLT 8 [14F5H] |
14ED | s .FIXUP D |
14ED | s(8D000004): LDR SB, MT, MOD0 [ORP] |
14EE | s(80D0001C): LDR R0, SB, 1CH [data] |
14EF | s(40090041): SUB R0, R0, 41H |
14F0 | t(EE000004): BGT 4 [14F5H] |
14F1 | u .FIXUP D |
14F1 | u(8D000004): LDR SB, MT, MOD0 [ORP] |
14F2 | u(40D8081C): ADD R0, SB, 81CH ["declaration in bad order"] |
14F3 | u(41000019): MOV R1, R0, 19H |
14F4 | v .FIXUP P |
14F4 | v(F7709011): BL MOD7 [ORS] PROC9 |
| ENDw Declarations; |
14F5 | w(8FE00000): LDR LNK, SP, 0H |
14F6 | w(4EE80054): ADD SP, SP, 54H |
14F7 | w(C700000F): B LNK |
| |
| PROCEDURE ProcedureDecl; |
| VAR proc: ORB.Object; |
| type: ORB.Type; |
| procid: ORS.Ident; |
| x: ORG.Item; |
| locblksize, parblksize, L: LONGINT; |
| int: BOOLEAN; |
| BEGINx (* ProcedureDecl *) int := FALSE;y ORS.Get(sym)z;a |
14F8 | x(4EE90054): SUB SP, SP, 54H |
14F9 | x(AFE00000): STR LNK, SP, 0H |
14FA | y(40000000): MOV R0, R0, 0H |
14FB | y(B0E00050): STR R0, SP, 50H |
14FC | z .FIXUP D |
14FC | z(8D00000B): LDR SB, MT, MOD0 [ORP] |
14FD | z(40D8001C): ADD R0, SB, 1CH [data] |
14FE | a .FIXUP P |
14FE | a(F770A00A): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.times THENb ORS.Get(sym)c;d int := TRUE ENDe ; |
14FF | b .FIXUP D |
14FF | b(8D000003): LDR SB, MT, MOD0 [ORP] |
1500 | b(80D0001C): LDR R0, SB, 1CH [data] |
1501 | b(40090001): SUB R0, R0, 1H |
1502 | b(E9000005): BNE 5 [1508H] |
1503 | c .FIXUP D |
1503 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
1504 | c(40D8001C): ADD R0, SB, 1CH [data] |
1505 | d .FIXUP P |
1505 | d(F770A007): BL MOD7 [ORS] PROC10 |
1506 | e(40000001): MOV R0, R0, 1H |
1507 | e(B0E00050): STR R0, SP, 50H |
| IF sym = ORS.ident THENf |
1508 | f .FIXUP D |
1508 | f(8D000005): LDR SB, MT, MOD0 [ORP] |
1509 | f(80D0001C): LDR R0, SB, 1CH [data] |
150A | f(4009001F): SUB R0, R0, 1FH |
150B | f(E90000F6): BNE 246 [1602H] |
| ORS.CopyId(procid)g;h ORS.Get(sym)i;j |
150C | g(40E8000C): ADD R0, SP, CH |
150D | h .FIXUP P |
150D | h(F7707008): BL MOD7 [ORS] PROC7 |
150E | i .FIXUP D |
150E | i(8D000006): LDR SB, MT, MOD0 [ORP] |
150F | i(40D8001C): ADD R0, SB, 1CH [data] |
1510 | j .FIXUP P |
1510 | j(F770A003): BL MOD7 [ORS] PROC10 |
| ORB.NewObj(proc,k ORS.id,l ORB.Const)m;n parblksize := 4;o |
1511 | k(40E80004): ADD R0, SP, 4H |
1512 | l .FIXUP D |
1512 | l(8D700004): LDR SB, MT, MOD7 [ORS] |
1513 | l(41D80004): ADD R1, SB, VAR4 |
1514 | m(42000001): MOV R2, R0, 1H |
1515 | n .FIXUP P |
1515 | n(F780F005): BL MOD8 [ORB] PROC15 |
1516 | o(40000004): MOV R0, R0, 4H |
1517 | o(A0E00048): STR R0, SP, 48H |
| NEW(type);p type.formq := ORB.Proc;r type.sizes := ORG.WordSize;t proc.typeu := type;v |
1518 | p(40E80008): ADD R0, SP, 8H |
1519 | p .FIXUP D |
1519 | p(8D800007): LDR SB, MT, MOD8 [ORB] |
151A | p(41D80003): ADD R1, SB, VAR3 |
151B | p(D78F000C): BL MT [trap=0, pos=36608] |
151C | q(80E00008): LDR R0, SP, 8H |
151D | q(D18F0A4C): BLEQ MT [trap=4, pos=36618] |
151E | r(4100000A): MOV R1, R0, AH |
151F | r(A1000000): STR R1, R0, 0H |
1520 | s(80E00008): LDR R0, SP, 8H |
1521 | s(D18F214C): BLEQ MT [trap=4, pos=36641] |
1522 | t(41000004): MOV R1, R0, 4H |
1523 | t(A1000020): STR R1, R0, 20H |
1524 | u(80E00004): LDR R0, SP, 4H |
1525 | u(D18F3C4C): BLEQ MT [trap=4, pos=36668] |
1526 | v(81E00008): LDR R1, SP, 8H |
1527 | v(A1000010): STR R1, R0, 10H |
| CheckExport(proc.expow)x;y |
1528 | w(80E00004): LDR R0, SP, 4H |
1529 | w(D18F614C): BLEQ MT [trap=4, pos=36705] |
152A | x(40080002): ADD R0, R0, 2H |
152B | y(F7FFEBC6): BL -5178 [00F2H] |
| IF proc.expoz THENa proc.exnob := exno;c INC(exno) ENDd ; |
152C | z(80E00004): LDR R0, SP, 4H |
152D | z(D18F764C): BLEQ MT [trap=4, pos=36726] |
152E | a(90000002): LDR R0, R0, 2H |
152F | a(E1000009): BEQ 9 [1539H] |
1530 | b(80E00004): LDR R0, SP, 4H |
1531 | b(D18F854C): BLEQ MT [trap=4, pos=36741] |
1532 | c .FIXUP D |
1532 | c(8D000019): LDR SB, MT, MOD0 [ORP] |
1533 | c(81D00028): LDR R1, SB, 28H [data] |
1534 | c(B1000001): STR R1, R0, 1H |
1535 | d(40D80028): ADD R0, SB, 28H |
1536 | d(81000000): LDR R1, R0, 0H |
1537 | d(41180001): ADD R1, R1, 1H |
1538 | d(A1000000): STR R1, R0, 0H |
| ORB.OpenScope;e INC(level);f proc.valg := -1;h type.basei := ORB.noType;j |
1539 | e .FIXUP P |
1539 | e(F7813024): BL MOD8 [ORB] PROC19 |
153A | f .FIXUP D |
153A | f(8D000008): LDR SB, MT, MOD0 [ORP] |
153B | f(40D80024): ADD R0, SB, 24H [data] |
153C | f(81000000): LDR R1, R0, 0H |
153D | f(41180001): ADD R1, R1, 1H |
153E | f(A1000000): STR R1, R0, 0H |
153F | g(80E00004): LDR R0, SP, 4H |
1540 | g(D18FC84C): BLEQ MT [trap=4, pos=36808] |
1541 | h(5100FFFF): MOV R1, R0, FFFFFFFFH |
1542 | h(A1000034): STR R1, R0, 34H |
1543 | i(80E00008): LDR R0, SP, 8H |
1544 | i(D18FD94C): BLEQ MT [trap=4, pos=36825] |
1545 | j .FIXUP D |
1545 | j(8D80000B): LDR SB, MT, MOD8 [ORB] |
1546 | j(81D0000D): LDR R1, SB, VAR13 |
1547 | j(A100001C): STR R1, R0, 1CH |
| ProcedureType(type,k parblksize)l;m (*formal parameter list*) |
1548 | k(80E00008): LDR R0, SP, 8H |
1549 | l(41E80048): ADD R1, SP, 48H |
154A | m(F7FFFC29): BL -983 [1174H] |
| Check(ORS.semicolon,n "no ;")o;p locblksize := parblksize;q |
154B | n(40000034): MOV R0, R0, 34H |
154C | o .FIXUP D |
154C | o(8D000007): LDR SB, MT, MOD0 [ORP] |
154D | o(41D80838): ADD R1, SB, 838H ["no ;"] |
154E | o(42000005): MOV R2, R0, 5H |
154F | p(F7FFEAB0): BL -5456 [0000H] |
1550 | q(80E00048): LDR R0, SP, 48H |
1551 | q(A0E00044): STR R0, SP, 44H |
| Declarations(locblksize)r;s |
1552 | r(40E80044): ADD R0, SP, 44H |
1553 | s(F7FFFE23): BL -477 [1377H] |
| proc.valt := ORG.Here()u *v 4;w proc.typex.dscy := ORB.topScope.nextz;a |
1554 | t(80E00004): LDR R0, SP, 4H |
1555 | t(D190984C): BLEQ MT [trap=4, pos=37016] |
1556 | u(4EE90004): SUB SP, SP, 4H |
1557 | u(A0E00000): STR R0, SP, 0H |
1558 | v .FIXUP P |
1558 | v(F792A01F): BL MOD9 [ORG] PROC42 |
1559 | v(01000000): MOV R1, R0, R0 |
155A | v(80E00000): LDR R0, SP, 0H |
155B | v(4EE80004): ADD SP, SP, 4H |
155C | w(41110002): LSL R1, R1, 2H |
155D | w(A1000034): STR R1, R0, 34H |
155E | x(80E00004): LDR R0, SP, 4H |
155F | x(D190B54C): BLEQ MT [trap=4, pos=37045] |
1560 | y(80000010): LDR R0, R0, 10H |
1561 | y(D190B94C): BLEQ MT [trap=4, pos=37049] |
1562 | z .FIXUP D |
1562 | z(8D800016): LDR SB, MT, MOD8 [ORB] |
1563 | z(81D00004): LDR R1, SB, VAR4 |
1564 | z(D190CE4C): BLEQ MT [trap=4, pos=37070] |
1565 | a(81100008): LDR R1, R1, 8H |
1566 | a(A1000014): STR R1, R0, 14H |
| IF sym = ORS.procedure THENb |
1567 | b .FIXUP D |
1567 | b(8D000005): LDR SB, MT, MOD0 [ORP] |
1568 | b(80D0001C): LDR R0, SB, 1CH [data] |
1569 | b(40090042): SUB R0, R0, 42H |
156A | b(E9000023): BNE 35 [158EH] |
| L := 0;c ORG.FJump(L)d;e |
156B | c(40000000): MOV R0, R0, 0H |
156C | c(A0E0004C): STR R0, SP, 4CH |
156D | d(40E8004C): ADD R0, SP, 4CH |
156E | e .FIXUP P |
156E | e(F792B016): BL MOD9 [ORG] PROC43 |
| REPEAT ProcedureDecl;f Check(ORS.semicolon,g "no ;")h UNTILi sym # ORS.procedure;j |
156F | f(F7FFFF88): BL -120 [14F8H] |
1570 | g(40000034): MOV R0, R0, 34H |
1571 | h .FIXUP D |
1571 | h(8D00000A): LDR SB, MT, MOD0 [ORP] |
1572 | h(41D80840): ADD R1, SB, 840H ["no ;"] |
1573 | h(42000005): MOV R2, R0, 5H |
1574 | i(F7FFEA8B): BL -5493 [0000H] |
1575 | j .FIXUP D |
1575 | j(8D000004): LDR SB, MT, MOD0 [ORP] |
1576 | j(80D0001C): LDR R0, SB, 1CH [data] |
1577 | j(40090042): SUB R0, R0, 42H |
1578 | j(E1FFFFF6): BEQ -10 [156FH] |
| ORG.FixLink(L)k;l proc.valm := ORG.Here()n *o 4;p proc.typeq.dscr := ORB.topScope.nexts |
1579 | k(80E0004C): LDR R0, SP, 4CH |
157A | l .FIXUP P |
157A | l(F790400C): BL MOD9 [ORG] PROC4 |
157B | m(80E00004): LDR R0, SP, 4H |
157C | m(D191864C): BLEQ MT [trap=4, pos=37254] |
157D | n(4EE90004): SUB SP, SP, 4H |
157E | n(A0E00000): STR R0, SP, 0H |
157F | o .FIXUP P |
157F | o(F792A005): BL MOD9 [ORG] PROC42 |
1580 | o(01000000): MOV R1, R0, R0 |
1581 | o(80E00000): LDR R0, SP, 0H |
1582 | o(4EE80004): ADD SP, SP, 4H |
1583 | p(41110002): LSL R1, R1, 2H |
1584 | p(A1000034): STR R1, R0, 34H |
1585 | q(80E00004): LDR R0, SP, 4H |
1586 | q(D191A34C): BLEQ MT [trap=4, pos=37283] |
1587 | r(80000010): LDR R0, R0, 10H |
1588 | r(D191A74C): BLEQ MT [trap=4, pos=37287] |
1589 | s .FIXUP D |
1589 | s(8D800014): LDR SB, MT, MOD8 [ORB] |
158A | s(81D00004): LDR R1, SB, VAR4 |
158B | s(D191BC4C): BLEQ MT [trap=4, pos=37308] |
| ENDt ; |
158C | t(81100008): LDR R1, R1, 8H |
158D | t(A1000014): STR R1, R0, 14H |
| ORG.Enter(parblksize,u locblksize,v int)w;x |
158E | u(80E00048): LDR R0, SP, 48H |
158F | v(81E00044): LDR R1, SP, 44H |
1590 | w(92E00050): LDR R2, SP, 50H |
1591 | x .FIXUP P |
1591 | x(F7932012): BL MOD9 [ORG] PROC50 |
| IF sym = ORS.begin THENy ORS.Get(sym)z;a StatSequence ENDb ; |
1592 | y .FIXUP D |
1592 | y(8D000009): LDR SB, MT, MOD0 [ORP] |
1593 | y(80D0001C): LDR R0, SB, 1CH [data] |
1594 | y(40090043): SUB R0, R0, 43H |
1595 | y(E9000004): BNE 4 [159AH] |
1596 | z .FIXUP D |
1596 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
1597 | z(40D8001C): ADD R0, SB, 1CH [data] |
1598 | a .FIXUP P |
1598 | a(F770A007): BL MOD7 [ORS] PROC10 |
1599 | b(F7FFF63E): BL -2498 [0BD8H] |
| IF sym = ORS.return THENc |
159A | c .FIXUP D |
159A | c(8D000004): LDR SB, MT, MOD0 [ORP] |
159B | c(80D0001C): LDR R0, SB, 1CH [data] |
159C | c(4009003A): SUB R0, R0, 3AH |
159D | c(E9000023): BNE 35 [15C1H] |
| ORS.Get(sym)d;e expression(x)f;g |
159E | d .FIXUP D |
159E | d(8D000004): LDR SB, MT, MOD0 [ORP] |
159F | d(40D8001C): ADD R0, SB, 1CH [data] |
15A0 | e .FIXUP P |
15A0 | e(F770A008): BL MOD7 [ORS] PROC10 |
15A1 | f(40E8002C): ADD R0, SP, 2CH |
15A2 | f .FIXUP D |
15A2 | f(8D900004): LDR SB, MT, MOD9 [ORG] |
15A3 | f(41D80001): ADD R1, SB, VAR1 |
15A4 | g .FIXUP D |
15A4 | g(8D000002): LDR SB, MT, MOD0 [ORP] |
15A5 | g(82D00034): LDR R2, SB, 34H [data] |
15A6 | g(D192795C): BLEQ MT [trap=5, pos=37497] |
15A7 | g(D7000002): BL R2 |
| IF type.baseh = ORB.noType THENi ORS.Mark("this is not a function")j |
15A8 | h(80E00008): LDR R0, SP, 8H |
15A9 | h(D1928E4C): BLEQ MT [trap=4, pos=37518] |
15AA | i(8000001C): LDR R0, R0, 1CH |
15AB | i .FIXUP D |
15AB | i(8D800007): LDR SB, MT, MOD8 [ORB] |
15AC | i(81D0000D): LDR R1, SB, VAR13 |
15AD | i(00090001): SUB R0, R0, R1 |
15AE | i(E9000005): BNE 5 [15B4H] |
15AF | j .FIXUP D |
15AF | j(8D000004): LDR SB, MT, MOD0 [ORP] |
15B0 | j(40D80848): ADD R0, SB, 848H ["this is not a function"] |
15B1 | j(41000017): MOV R1, R0, 17H |
| ELSIFk ~lCompTypes(type.basem,n x.type,o FALSE)p THENq ORS.Mark("wrong result type")r |
15B2 | k .FIXUP P |
15B2 | k(F7709012): BL MOD7 [ORS] PROC9 |
15B3 | l(E700000C): B 12 [15C0H] |
15B4 | m(80E00008): LDR R0, SP, 8H |
15B5 | m(D192E64C): BLEQ MT [trap=4, pos=37606] |
15B6 | n(8000001C): LDR R0, R0, 1CH |
15B7 | o(81E00030): LDR R1, SP, 30H |
15B8 | p(42000000): MOV R2, R0, 0H |
15B9 | q(F7FFED56): BL -4778 [0310H] |
15BA | q(40090000): SUB R0, R0, 0H |
15BB | q(E9000004): BNE 4 [15C0H] |
15BC | r .FIXUP D |
15BC | r(8D00000D): LDR SB, MT, MOD0 [ORP] |
15BD | r(40D80860): ADD R0, SB, 860H ["wrong result type"] |
15BE | r(41000012): MOV R1, R0, 12H |
| ENDs |
15BF | s .FIXUP P |
15BF | s(F770900D): BL MOD7 [ORS] PROC9 |
| ELSIF typet.baseu.formv # ORB.NoTyp THENw |
15C0 | t(E7000010): B 16 [15D1H] |
15C1 | u(80E00008): LDR R0, SP, 8H |
15C2 | u(D1933B4C): BLEQ MT [trap=4, pos=37691] |
15C3 | v(8000001C): LDR R0, R0, 1CH |
15C4 | v(D193404C): BLEQ MT [trap=4, pos=37696] |
15C5 | w(80000000): LDR R0, R0, 0H |
15C6 | w(40090009): SUB R0, R0, 9H |
15C7 | w(E1000009): BEQ 9 [15D1H] |
| ORS.Mark("function without result")x;y type.basez := ORB.noType |
15C8 | x .FIXUP D |
15C8 | x(8D00000C): LDR SB, MT, MOD0 [ORP] |
15C9 | x(40D80874): ADD R0, SB, 874H ["function without result"] |
15CA | x(41000018): MOV R1, R0, 18H |
15CB | y .FIXUP P |
15CB | y(F770900C): BL MOD7 [ORS] PROC9 |
15CC | z(80E00008): LDR R0, SP, 8H |
15CD | z(D193884C): BLEQ MT [trap=4, pos=37768] |
| ENDa ; |
15CE | a .FIXUP D |
15CE | a(8D800006): LDR SB, MT, MOD8 [ORB] |
15CF | a(81D0000D): LDR R1, SB, VAR13 |
15D0 | a(A100001C): STR R1, R0, 1CH |
| ORG.Return(type.baseb.formc,d x,e locblksize,f int)g;h |
15D1 | b(80E00008): LDR R0, SP, 8H |
15D2 | b(D193BD4C): BLEQ MT [trap=4, pos=37821] |
15D3 | c(8000001C): LDR R0, R0, 1CH |
15D4 | c(D193C24C): BLEQ MT [trap=4, pos=37826] |
15D5 | d(80000000): LDR R0, R0, 0H |
15D6 | e(41E8002C): ADD R1, SP, 2CH |
15D7 | e .FIXUP D |
15D7 | e(8D900009): LDR SB, MT, MOD9 [ORG] |
15D8 | e(42D80001): ADD R2, SB, VAR1 |
15D9 | f(83E00044): LDR R3, SP, 44H |
15DA | g(94E00050): LDR R4, SP, 50H |
15DB | h .FIXUP P |
15DB | h(F7933010): BL MOD9 [ORG] PROC51 |
| ORB.CloseScope;i DEC(level);j Check(ORS.end,k "no END")l;m |
15DC | i .FIXUP P |
15DC | i(F7814001): BL MOD8 [ORB] PROC20 |
15DD | j .FIXUP D |
15DD | j(8D000006): LDR SB, MT, MOD0 [ORP] |
15DE | j(40D80024): ADD R0, SB, 24H [data] |
15DF | j(81000000): LDR R1, R0, 0H |
15E0 | j(41190001): SUB R1, R1, 1H |
15E1 | j(A1000000): STR R1, R0, 0H |
15E2 | k(40000035): MOV R0, R0, 35H |
15E3 | l(41D8088C): ADD R1, SB, 88CH |
15E4 | l(42000007): MOV R2, R0, 7H |
15E5 | m(F7FFEA1A): BL -5606 [0000H] |
| IF sym = ORS.ident THENn |
15E6 | n .FIXUP D |
15E6 | n(8D000009): LDR SB, MT, MOD0 [ORP] |
15E7 | n(80D0001C): LDR R0, SB, 1CH [data] |
15E8 | n(4009001F): SUB R0, R0, 1FH |
15E9 | n(E9000014): BNE 20 [15FEH] |
| IF ORS.id # procid THENo ORS.Mark("no match")p ENDq ; |
15EA | o .FIXUP D |
15EA | o(8D700004): LDR SB, MT, MOD7 [ORS] |
15EB | o(40D80004): ADD R0, SB, VAR4 |
15EC | o(41E8000C): ADD R1, SP, CH |
15ED | o(92000000): LDR R2, R0, 0H |
15EE | o(40080001): ADD R0, R0, 1H |
15EF | o(93100000): LDR R3, R1, 0H |
15F0 | o(41180001): ADD R1, R1, 1H |
15F1 | o(04290003): SUB R4, R2, R3 |
15F2 | o(E9000002): BNE 2 [15F5H] |
15F3 | o(44290000): SUB R4, R2, 0H |
15F4 | o(E9FFFFF8): BNE -8 [15EDH] |
15F5 | o(E1000004): BEQ 4 [15FAH] |
15F6 | p .FIXUP D |
15F6 | p(8D00000C): LDR SB, MT, MOD0 [ORP] |
15F7 | p(40D80894): ADD R0, SB, 894H ["no match"] |
15F8 | p(41000009): MOV R1, R0, 9H |
15F9 | q .FIXUP P |
15F9 | q(F770901D): BL MOD7 [ORS] PROC9 |
| ORS.Get(sym)r |
15FA | r .FIXUP D |
15FA | r(8D000004): LDR SB, MT, MOD0 [ORP] |
15FB | r(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEs ORSt.Mark("no proc id")u |
15FC | s .FIXUP P |
15FC | s(F770A003): BL MOD7 [ORS] PROC10 |
15FD | t(E7000004): B 4 [1602H] |
15FE | u .FIXUP D |
15FE | u(8D000004): LDR SB, MT, MOD0 [ORP] |
15FF | u(40D808A0): ADD R0, SB, 8A0H ["no proc id"] |
1600 | u(4100000B): MOV R1, R0, BH |
| ENDv |
1601 | v .FIXUP P |
1601 | v(F7709005): BL MOD7 [ORS] PROC9 |
| END ; |
| int := FALSE |
| ENDw ProcedureDecl; |
1602 | w(40000000): MOV R0, R0, 0H |
1603 | w(B0E00050): STR R0, SP, 50H |
1604 | w(8FE00000): LDR LNK, SP, 0H |
1605 | w(4EE80054): ADD SP, SP, 54H |
1606 | w(C700000F): B LNK |
| |
| PROCEDURE Module; |
| VAR key: LONGINT; |
| impid, impid1: ORS.Ident; |
| BEGINx Texts.WriteString(W,y " compiling ")z;a ORS.Get(sym)b;c |
1607 | x(4EE90048): SUB SP, SP, 48H |
1608 | x(AFE00000): STR LNK, SP, 0H |
1609 | y .FIXUP D |
1609 | y(8D00000B): LDR SB, MT, MOD0 [ORP] |
160A | y(40D80068): ADD R0, SB, 68H [data] |
160B | y .FIXUP D |
160B | y(8D100002): LDR SB, MT, MOD1 [Texts] |
160C | y(41D80005): ADD R1, SB, VAR5 |
160D | z .FIXUP D |
160D | z(8D000002): LDR SB, MT, MOD0 [ORP] |
160E | z(42D808AC): ADD R2, SB, 8ACH [" compiling "] |
160F | z(4300000D): MOV R3, R0, DH |
1610 | a .FIXUP P |
1610 | a(F711D00F): BL MOD1 [Texts] PROC29 |
1611 | b .FIXUP D |
1611 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
1612 | b(40D8001C): ADD R0, SB, 1CH [data] |
1613 | c .FIXUP P |
1613 | c(F770A003): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.module THENd |
1614 | d .FIXUP D |
1614 | d(8D000003): LDR SB, MT, MOD0 [ORP] |
1615 | d(80D0001C): LDR R0, SB, 1CH [data] |
1616 | d(40090045): SUB R0, R0, 45H |
1617 | d(E9000124): BNE 292 [173CH] |
| ORS.Get(sym)e;f |
1618 | e .FIXUP D |
1618 | e(8D000004): LDR SB, MT, MOD0 [ORP] |
1619 | e(40D8001C): ADD R0, SB, 1CH [data] |
161A | f .FIXUP P |
161A | f(F770A007): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.times THENg version := 0;h Texts.Write(W,i "*")j;k ORS.Get(sym)l ELSEm versionn := 1 ENDo ; |
161B | g .FIXUP D |
161B | g(8D000003): LDR SB, MT, MOD0 [ORP] |
161C | g(80D0001C): LDR R0, SB, 1CH [data] |
161D | g(40090001): SUB R0, R0, 1H |
161E | g(E900000C): BNE 12 [162BH] |
161F | h(40000000): MOV R0, R0, 0H |
1620 | h .FIXUP D |
1620 | h(8D000005): LDR SB, MT, MOD0 [ORP] |
1621 | h(A0D0002C): STR R0, SB, 2CH [data] |
1622 | i(40D80068): ADD R0, SB, 68H |
1623 | i .FIXUP D |
1623 | i(8D100003): LDR SB, MT, MOD1 [Texts] |
1624 | i(41D80005): ADD R1, SB, VAR5 |
1625 | j(4200002A): MOV R2, R0, 2AH |
1626 | k .FIXUP P |
1626 | k(F711B00C): BL MOD1 [Texts] PROC27 |
1627 | l .FIXUP D |
1627 | l(8D000004): LDR SB, MT, MOD0 [ORP] |
1628 | l(40D8001C): ADD R0, SB, 1CH [data] |
1629 | m .FIXUP P |
1629 | m(F770A003): BL MOD7 [ORS] PROC10 |
162A | n(E7000003): B 3 [162EH] |
162B | o(40000001): MOV R0, R0, 1H |
162C | o .FIXUP D |
162C | o(8D000005): LDR SB, MT, MOD0 [ORP] |
162D | o(A0D0002C): STR R0, SB, 2CH [data] |
| ORB.Init;p ORB.OpenScope;q |
162E | p .FIXUP P |
162E | p(F7818005): BL MOD8 [ORB] PROC24 |
162F | q .FIXUP P |
162F | q(F7813001): BL MOD8 [ORB] PROC19 |
| IF sym = ORS.ident THENr |
1630 | r .FIXUP D |
1630 | r(8D000004): LDR SB, MT, MOD0 [ORP] |
1631 | r(80D0001C): LDR R0, SB, 1CH [data] |
1632 | r(4009001F): SUB R0, R0, 1FH |
1633 | r(E9000014): BNE 20 [1648H] |
| ORS.CopyId(modid)s;t ORS.Get(sym)u;v |
1634 | s .FIXUP D |
1634 | s(8D000004): LDR SB, MT, MOD0 [ORP] |
1635 | s(40D80040): ADD R0, SB, 40H [data] |
1636 | t .FIXUP P |
1636 | t(F7707007): BL MOD7 [ORS] PROC7 |
1637 | u .FIXUP D |
1637 | u(8D000003): LDR SB, MT, MOD0 [ORP] |
1638 | u(40D8001C): ADD R0, SB, 1CH [data] |
1639 | v .FIXUP P |
1639 | v(F770A003): BL MOD7 [ORS] PROC10 |
| Texts.WriteString(W,w modid)x;y Texts.Append(Oberon.Log,z W.buf)a |
163A | w .FIXUP D |
163A | w(8D000003): LDR SB, MT, MOD0 [ORP] |
163B | w(40D80068): ADD R0, SB, 68H [data] |
163C | w .FIXUP D |
163C | w(8D100002): LDR SB, MT, MOD1 [Texts] |
163D | w(41D80005): ADD R1, SB, VAR5 |
163E | x .FIXUP D |
163E | x(8D000002): LDR SB, MT, MOD0 [ORP] |
163F | x(42D80040): ADD R2, SB, 40H [data] |
1640 | x(43000020): MOV R3, R0, 20H |
1641 | y .FIXUP P |
1641 | y(F711D008): BL MOD1 [Texts] PROC29 |
1642 | z .FIXUP D |
1642 | z(8D400004): LDR SB, MT, MOD4 [Oberon] |
1643 | z(80D0000D): LDR R0, SB, VAR13 |
1644 | a .FIXUP D |
1644 | a(8D000002): LDR SB, MT, MOD0 [ORP] |
1645 | a(81D00068): LDR R1, SB, 68H [data] |
| ELSEb ORSc.Mark("identifier expected")d |
1646 | b .FIXUP P |
1646 | b(F710E005): BL MOD1 [Texts] PROC14 |
1647 | c(E7000004): B 4 [164CH] |
1648 | d .FIXUP D |
1648 | d(8D000004): LDR SB, MT, MOD0 [ORP] |
1649 | d(40D808BC): ADD R0, SB, 8BCH ["identifier expected"] |
164A | d(41000014): MOV R1, R0, 14H |
| ENDe ; |
164B | e .FIXUP P |
164B | e(F7709005): BL MOD7 [ORS] PROC9 |
| Check(ORS.semicolon,f "no ;")g;h level := 0;i dc := 0;j exno := 1;k key := 0;l |
164C | f(40000034): MOV R0, R0, 34H |
164D | g .FIXUP D |
164D | g(8D000005): LDR SB, MT, MOD0 [ORP] |
164E | g(41D808D0): ADD R1, SB, 8D0H ["no ;"] |
164F | g(42000005): MOV R2, R0, 5H |
1650 | h(F7FFE9AF): BL -5713 [0000H] |
1651 | i(40000000): MOV R0, R0, 0H |
1652 | i .FIXUP D |
1652 | i(8D000005): LDR SB, MT, MOD0 [ORP] |
1653 | i(A0D00024): STR R0, SB, 24H [data] |
1654 | j(40000000): MOV R0, R0, 0H |
1655 | j(A0D00020): STR R0, SB, 20H |
1656 | k(40000001): MOV R0, R0, 1H |
1657 | k(A0D00028): STR R0, SB, 28H |
1658 | l(40000000): MOV R0, R0, 0H |
1659 | l(A0E00004): STR R0, SP, 4H |
| IF sym = ORS.import THENm |
165A | m(80D0001C): LDR R0, SB, 1CH |
165B | m(40090044): SUB R0, R0, 44H |
165C | m(E9000044): BNE 68 [16A1H] |
| ORS.Get(sym)n;o |
165D | n .FIXUP D |
165D | n(8D00000B): LDR SB, MT, MOD0 [ORP] |
165E | n(40D8001C): ADD R0, SB, 1CH [data] |
165F | o .FIXUP P |
165F | o(F770A014): BL MOD7 [ORS] PROC10 |
| WHILE sym = ORS.ident DOp |
1660 | p .FIXUP D |
1660 | p(8D000003): LDR SB, MT, MOD0 [ORP] |
1661 | p(80D0001C): LDR R0, SB, 1CH [data] |
1662 | p(4009001F): SUB R0, R0, 1FH |
1663 | p(E9000038): BNE 56 [169CH] |
| ORS.CopyId(impid)q;r ORS.Get(sym)s;t |
1664 | q(40E80008): ADD R0, SP, 8H |
1665 | r .FIXUP P |
1665 | r(F7707006): BL MOD7 [ORS] PROC7 |
1666 | s .FIXUP D |
1666 | s(8D000006): LDR SB, MT, MOD0 [ORP] |
1667 | s(40D8001C): ADD R0, SB, 1CH [data] |
1668 | t .FIXUP P |
1668 | t(F770A003): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.becomes THENu |
1669 | u .FIXUP D |
1669 | u(8D000003): LDR SB, MT, MOD0 [ORP] |
166A | u(80D0001C): LDR R0, SB, 1CH [data] |
166B | u(4009002A): SUB R0, R0, 2AH |
166C | u(E9000012): BNE 18 [167FH] |
| ORS.Get(sym)v;w |
166D | v .FIXUP D |
166D | v(8D000004): LDR SB, MT, MOD0 [ORP] |
166E | v(40D8001C): ADD R0, SB, 1CH [data] |
166F | w .FIXUP P |
166F | w(F770A007): BL MOD7 [ORS] PROC10 |
| IF sym = ORS.ident THENx ORS.CopyId(impid1)y;z ORS.Get(sym)a |
1670 | x .FIXUP D |
1670 | x(8D000003): LDR SB, MT, MOD0 [ORP] |
1671 | x(80D0001C): LDR R0, SB, 1CH [data] |
1672 | x(4009001F): SUB R0, R0, 1FH |
1673 | x(E9000006): BNE 6 [167AH] |
1674 | y(40E80028): ADD R0, SP, 28H |
1675 | z .FIXUP P |
1675 | z(F7707006): BL MOD7 [ORS] PROC7 |
1676 | a .FIXUP D |
1676 | a(8D000006): LDR SB, MT, MOD0 [ORP] |
1677 | a(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEb ORSc.Mark("id expected")d |
1678 | b .FIXUP P |
1678 | b(F770A003): BL MOD7 [ORS] PROC10 |
1679 | c(E7000004): B 4 [167EH] |
167A | d .FIXUP D |
167A | d(8D000004): LDR SB, MT, MOD0 [ORP] |
167B | d(40D808D8): ADD R0, SB, 8D8H ["id expected"] |
167C | d(4100000C): MOV R1, R0, CH |
| ENDe |
167D | e .FIXUP P |
167D | e(F7709005): BL MOD7 [ORS] PROC9 |
| ELSE impid1f := impid |
167E | f(E7000009): B 9 [1688H] |
| ENDg ; |
167F | g(40E80028): ADD R0, SP, 28H |
1680 | g(41E80008): ADD R1, SP, 8H |
1681 | g(42000008): MOV R2, R0, 8H |
1682 | g(83100000): LDR R3, R1, 0H |
1683 | g(41180004): ADD R1, R1, 4H |
1684 | g(A3000000): STR R3, R0, 0H |
1685 | g(40080004): ADD R0, R0, 4H |
1686 | g(42290001): SUB R2, R2, 1H |
1687 | g(E9FFFFFA): BNE -6 [1682H] |
| ORB.Import(impid,h impid1)i;j |
1688 | h(40E80008): ADD R0, SP, 8H |
1689 | i(41E80028): ADD R1, SP, 28H |
168A | j .FIXUP P |
168A | j(F781600D): BL MOD8 [ORB] PROC22 |
| IF sym = ORS.comma THENk ORS.Get(sym)l |
168B | k .FIXUP D |
168B | k(8D000011): LDR SB, MT, MOD0 [ORP] |
168C | k(80D0001C): LDR R0, SB, 1CH [data] |
168D | k(40090028): SUB R0, R0, 28H |
168E | k(E9000004): BNE 4 [1693H] |
168F | l .FIXUP D |
168F | l(8D000004): LDR SB, MT, MOD0 [ORP] |
1690 | l(40D8001C): ADD R0, SB, 1CH [data] |
| ELSIFm symn = ORS.ident THENo ORS.Mark("comma missing")p |
1691 | m .FIXUP P |
1691 | m(F770A007): BL MOD7 [ORS] PROC10 |
1692 | n(E7000008): B 8 [169BH] |
1693 | o .FIXUP D |
1693 | o(8D000004): LDR SB, MT, MOD0 [ORP] |
1694 | o(80D0001C): LDR R0, SB, 1CH [data] |
1695 | o(4009001F): SUB R0, R0, 1FH |
1696 | o(E9000004): BNE 4 [169BH] |
1697 | p .FIXUP D |
1697 | p(8D000004): LDR SB, MT, MOD0 [ORP] |
1698 | p(40D808E4): ADD R0, SB, 8E4H ["comma missing"] |
1699 | p(4100000E): MOV R1, R0, EH |
| ENDq |
169A | q .FIXUP P |
169A | q(F7709009): BL MOD7 [ORS] PROC9 |
| ENDr ; |
169B | r(E7FFFFC4): B -60 [1660H] |
| Check(ORS.semicolon,s "no ;")t |
169C | s(40000034): MOV R0, R0, 34H |
169D | t .FIXUP D |
169D | t(8D000006): LDR SB, MT, MOD0 [ORP] |
169E | t(41D808F4): ADD R1, SB, 8F4H ["no ;"] |
169F | t(42000005): MOV R2, R0, 5H |
| ENDu ; |
16A0 | u(F7FFE95F): BL -5793 [0000H] |
| ORG.Open(version)v;w Declarations(dc)x;y ORG.SetDataSize((dc + 3)z DIV 4 *a 4)b;c |
16A1 | v .FIXUP D |
16A1 | v(8D000004): LDR SB, MT, MOD0 [ORP] |
16A2 | v(80D0002C): LDR R0, SB, 2CH [data] |
16A3 | w .FIXUP P |
16A3 | w(F794F009): BL MOD9 [ORG] PROC79 |
16A4 | x .FIXUP D |
16A4 | x(8D000003): LDR SB, MT, MOD0 [ORP] |
16A5 | x(40D80020): ADD R0, SB, 20H [data] |
16A6 | y(F7FFFCD0): BL -816 [1377H] |
16A7 | z .FIXUP D |
16A7 | z(8D000003): LDR SB, MT, MOD0 [ORP] |
16A8 | z(80D00020): LDR R0, SB, 20H [data] |
16A9 | z(40080003): ADD R0, R0, 3H |
16AA | a(40020002): ASR R0, R0, 2H |
16AB | b(40010002): LSL R0, R0, 2H |
16AC | c .FIXUP P |
16AC | c(F7950009): BL MOD9 [ORG] PROC80 |
| WHILE sym = ORS.procedure DOd ProcedureDecl;e Check(ORS.semicolon,f "no ;")g ENDh ; |
16AD | d .FIXUP D |
16AD | d(8D000006): LDR SB, MT, MOD0 [ORP] |
16AE | d(80D0001C): LDR R0, SB, 1CH [data] |
16AF | d(40090042): SUB R0, R0, 42H |
16B0 | d(E9000007): BNE 7 [16B8H] |
16B1 | e(F7FFFE46): BL -442 [14F8H] |
16B2 | f(40000034): MOV R0, R0, 34H |
16B3 | g .FIXUP D |
16B3 | g(8D000006): LDR SB, MT, MOD0 [ORP] |
16B4 | g(41D808FC): ADD R1, SB, 8FCH ["no ;"] |
16B5 | g(42000005): MOV R2, R0, 5H |
16B6 | h(F7FFE949): BL -5815 [0000H] |
16B7 | h(E7FFFFF5): B -11 [16ADH] |
| ORG.Header;i |
16B8 | i .FIXUP P |
16B8 | i(F795100C): BL MOD9 [ORG] PROC81 |
| IF sym = ORS.begin THENj ORS.Get(sym)k;l StatSequence ENDm ; |
16B9 | j .FIXUP D |
16B9 | j(8D000006): LDR SB, MT, MOD0 [ORP] |
16BA | j(80D0001C): LDR R0, SB, 1CH [data] |
16BB | j(40090043): SUB R0, R0, 43H |
16BC | j(E9000004): BNE 4 [16C1H] |
16BD | k .FIXUP D |
16BD | k(8D000004): LDR SB, MT, MOD0 [ORP] |
16BE | k(40D8001C): ADD R0, SB, 1CH [data] |
16BF | l .FIXUP P |
16BF | l(F770A007): BL MOD7 [ORS] PROC10 |
16C0 | m(F7FFF517): BL -2793 [0BD8H] |
| Check(ORS.end,n "no END")o;p |
16C1 | n(40000035): MOV R0, R0, 35H |
16C2 | o .FIXUP D |
16C2 | o(8D000005): LDR SB, MT, MOD0 [ORP] |
16C3 | o(41D80904): ADD R1, SB, 904H ["no END"] |
16C4 | o(42000007): MOV R2, R0, 7H |
16C5 | p(F7FFE93A): BL -5830 [0000H] |
| IF sym = ORS.ident THENq |
16C6 | q .FIXUP D |
16C6 | q(8D000004): LDR SB, MT, MOD0 [ORP] |
16C7 | q(80D0001C): LDR R0, SB, 1CH [data] |
16C8 | q(4009001F): SUB R0, R0, 1FH |
16C9 | q(E9000015): BNE 21 [16DFH] |
| IF ORS.id # modid THENr ORS.Mark("no match")s ENDt ; |
16CA | r .FIXUP D |
16CA | r(8D700004): LDR SB, MT, MOD7 [ORS] |
16CB | r(40D80004): ADD R0, SB, VAR4 |
16CC | r .FIXUP D |
16CC | r(8D000002): LDR SB, MT, MOD0 [ORP] |
16CD | r(41D80040): ADD R1, SB, 40H [data] |
16CE | r(92000000): LDR R2, R0, 0H |
16CF | r(40080001): ADD R0, R0, 1H |
16D0 | r(93100000): LDR R3, R1, 0H |
16D1 | r(41180001): ADD R1, R1, 1H |
16D2 | r(04290003): SUB R4, R2, R3 |
16D3 | r(E9000002): BNE 2 [16D6H] |
16D4 | r(44290000): SUB R4, R2, 0H |
16D5 | r(E9FFFFF8): BNE -8 [16CEH] |
16D6 | r(E1000004): BEQ 4 [16DBH] |
16D7 | s .FIXUP D |
16D7 | s(8D00000B): LDR SB, MT, MOD0 [ORP] |
16D8 | s(40D8090C): ADD R0, SB, 90CH ["no match"] |
16D9 | s(41000009): MOV R1, R0, 9H |
16DA | t .FIXUP P |
16DA | t(F770901B): BL MOD7 [ORS] PROC9 |
| ORS.Get(sym)u |
16DB | u .FIXUP D |
16DB | u(8D000004): LDR SB, MT, MOD0 [ORP] |
16DC | u(40D8001C): ADD R0, SB, 1CH [data] |
| ELSEv ORSw.Mark("identifier missing")x |
16DD | v .FIXUP P |
16DD | v(F770A003): BL MOD7 [ORS] PROC10 |
16DE | w(E7000004): B 4 [16E3H] |
16DF | x .FIXUP D |
16DF | x(8D000004): LDR SB, MT, MOD0 [ORP] |
16E0 | x(40D80918): ADD R0, SB, 918H ["identifier missing"] |
16E1 | x(41000013): MOV R1, R0, 13H |
| ENDy ; |
16E2 | y .FIXUP P |
16E2 | y(F7709005): BL MOD7 [ORS] PROC9 |
| IF sym # ORS.period THENz ORS.Mark("period missing")a ENDb ; |
16E3 | z .FIXUP D |
16E3 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
16E4 | z(80D0001C): LDR R0, SB, 1CH [data] |
16E5 | z(40090012): SUB R0, R0, 12H |
16E6 | z(E1000004): BEQ 4 [16EBH] |
16E7 | a .FIXUP D |
16E7 | a(8D000004): LDR SB, MT, MOD0 [ORP] |
16E8 | a(40D8092C): ADD R0, SB, 92CH ["period missing"] |
16E9 | a(4100000F): MOV R1, R0, FH |
16EA | b .FIXUP P |
16EA | b(F7709008): BL MOD7 [ORS] PROC9 |
| IF (ORS.errcnt = 0)c & (dversion # 0)e THENf |
16EB | c .FIXUP D |
16EB | c(8D700004): LDR SB, MT, MOD7 [ORS] |
16EC | c(80D00006): LDR R0, SB, VAR6 |
16ED | d(E9000013): BNE 19 [1701H] |
16EE | e .FIXUP D |
16EE | e(8D000003): LDR SB, MT, MOD0 [ORP] |
16EF | e(80D0002C): LDR R0, SB, 2CH [data] |
16F0 | f(E1000010): BEQ 16 [1701H] |
| ORB.Export(modid,g newSF,h key)i;j |
16F1 | g .FIXUP D |
16F1 | g(8D000003): LDR SB, MT, MOD0 [ORP] |
16F2 | g(40D80040): ADD R0, SB, 40H [data] |
16F3 | h(41D80030): ADD R1, SB, 30H |
16F4 | i(42E80004): ADD R2, SP, 4H |
16F5 | j .FIXUP P |
16F5 | j(F781700B): BL MOD8 [ORB] PROC23 |
| IF newSF THENk Texts.WriteString(W,l " new symbol file")m ENDn |
16F6 | k .FIXUP D |
16F6 | k(8D000005): LDR SB, MT, MOD0 [ORP] |
16F7 | k(90D00030): LDR R0, SB, 30H [data] |
16F8 | k(E1000008): BEQ 8 [1701H] |
16F9 | l .FIXUP D |
16F9 | l(8D000003): LDR SB, MT, MOD0 [ORP] |
16FA | l(40D80068): ADD R0, SB, 68H [data] |
16FB | l .FIXUP D |
16FB | l(8D100002): LDR SB, MT, MOD1 [Texts] |
16FC | l(41D80005): ADD R1, SB, VAR5 |
16FD | m .FIXUP D |
16FD | m(8D000002): LDR SB, MT, MOD0 [ORP] |
16FE | m(42D8093C): ADD R2, SB, 93CH [" new symbol file"] |
16FF | m(43000011): MOV R3, R0, 11H |
1700 | n .FIXUP P |
1700 | n(F711D00B): BL MOD1 [Texts] PROC29 |
| END ; |
| IF ORS.errcnt = 0 THENo |
1701 | o .FIXUP D |
1701 | o(8D700004): LDR SB, MT, MOD7 [ORS] |
1702 | o(80D00006): LDR R0, SB, VAR6 |
1703 | o(E900001C): BNE 28 [1720H] |
| ORG.Close(modid,p key,q exno)r;s |
1704 | p .FIXUP D |
1704 | p(8D000003): LDR SB, MT, MOD0 [ORP] |
1705 | p(40D80040): ADD R0, SB, 40H [data] |
1706 | q(81E00004): LDR R1, SP, 4H |
1707 | r(82D00028): LDR R2, SB, 28H |
1708 | s .FIXUP P |
1708 | s(F7952008): BL MOD9 [ORG] PROC82 |
| Texts.WriteInt(W,t ORG.pc,u 6)v;w Texts.WriteInt(W,x dc,y 6)z;a Texts.WriteHex(W,b key)c |
1709 | t .FIXUP D |
1709 | t(8D000005): LDR SB, MT, MOD0 [ORP] |
170A | t(40D80068): ADD R0, SB, 68H [data] |
170B | t .FIXUP D |
170B | t(8D100002): LDR SB, MT, MOD1 [Texts] |
170C | t(41D80005): ADD R1, SB, VAR5 |
170D | u .FIXUP D |
170D | u(8D900002): LDR SB, MT, MOD9 [ORG] |
170E | u(82D00002): LDR R2, SB, VAR2 |
170F | v(43000006): MOV R3, R0, 6H |
1710 | w .FIXUP P |
1710 | w(F711E008): BL MOD1 [Texts] PROC30 |
1711 | x .FIXUP D |
1711 | x(8D000004): LDR SB, MT, MOD0 [ORP] |
1712 | x(40D80068): ADD R0, SB, 68H [data] |
1713 | x .FIXUP D |
1713 | x(8D100002): LDR SB, MT, MOD1 [Texts] |
1714 | x(41D80005): ADD R1, SB, VAR5 |
1715 | y .FIXUP D |
1715 | y(8D000002): LDR SB, MT, MOD0 [ORP] |
1716 | y(82D00020): LDR R2, SB, 20H [data] |
1717 | z(43000006): MOV R3, R0, 6H |
1718 | a .FIXUP P |
1718 | a(F711E008): BL MOD1 [Texts] PROC30 |
1719 | b .FIXUP D |
1719 | b(8D000004): LDR SB, MT, MOD0 [ORP] |
171A | b(40D80068): ADD R0, SB, 68H [data] |
171B | b .FIXUP D |
171B | b(8D100002): LDR SB, MT, MOD1 [Texts] |
171C | b(41D80005): ADD R1, SB, VAR5 |
171D | c(82E00004): LDR R2, SP, 4H |
| ELSEd Textse.WriteLn(W)f;g Texts.WriteString(W,h "compilation FAILED")i |
171E | d .FIXUP P |
171E | d(F711F006): BL MOD1 [Texts] PROC31 |
171F | e(E700000D): B 13 [172DH] |
1720 | f .FIXUP D |
1720 | f(8D000005): LDR SB, MT, MOD0 [ORP] |
1721 | f(40D80068): ADD R0, SB, 68H [data] |
1722 | f .FIXUP D |
1722 | f(8D100002): LDR SB, MT, MOD1 [Texts] |
1723 | f(41D80005): ADD R1, SB, VAR5 |
1724 | g .FIXUP P |
1724 | g(F711C006): BL MOD1 [Texts] PROC28 |
1725 | h .FIXUP D |
1725 | h(8D000003): LDR SB, MT, MOD0 [ORP] |
1726 | h(40D80068): ADD R0, SB, 68H [data] |
1727 | h .FIXUP D |
1727 | h(8D100002): LDR SB, MT, MOD1 [Texts] |
1728 | h(41D80005): ADD R1, SB, VAR5 |
1729 | i .FIXUP D |
1729 | i(8D000002): LDR SB, MT, MOD0 [ORP] |
172A | i(42D80950): ADD R2, SB, 950H ["compilation FAILED"] |
172B | i(43000013): MOV R3, R0, 13H |
| ENDj ; |
172C | j .FIXUP P |
172C | j(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)k;l Texts.Append(Oberon.Log,m W.buf)n;o |
172D | k .FIXUP D |
172D | k(8D000004): LDR SB, MT, MOD0 [ORP] |
172E | k(40D80068): ADD R0, SB, 68H [data] |
172F | k .FIXUP D |
172F | k(8D100002): LDR SB, MT, MOD1 [Texts] |
1730 | k(41D80005): ADD R1, SB, VAR5 |
1731 | l .FIXUP P |
1731 | l(F711C005): BL MOD1 [Texts] PROC28 |
1732 | m .FIXUP D |
1732 | m(8D400003): LDR SB, MT, MOD4 [Oberon] |
1733 | m(80D0000D): LDR R0, SB, VAR13 |
1734 | n .FIXUP D |
1734 | n(8D000002): LDR SB, MT, MOD0 [ORP] |
1735 | n(81D00068): LDR R1, SB, 68H [data] |
1736 | o .FIXUP P |
1736 | o(F710E005): BL MOD1 [Texts] PROC14 |
| ORB.CloseScope;p pbsList := NIL |
1737 | p .FIXUP P |
1737 | p(F7814001): BL MOD8 [ORB] PROC20 |
| ELSEq ORSr.Mark("must start with MODULE")s |
1738 | q(40000000): MOV R0, R0, 0H |
1739 | q .FIXUP D |
1739 | q(8D000005): LDR SB, MT, MOD0 [ORP] |
173A | q(A0D00060): STR R0, SB, 60H [data] |
173B | r(E7000004): B 4 [1740H] |
173C | s .FIXUP D |
173C | s(8D000003): LDR SB, MT, MOD0 [ORP] |
173D | s(40D80964): ADD R0, SB, 964H ["must start with MODULE"] |
173E | s(41000017): MOV R1, R0, 17H |
| ENDt |
173F | t .FIXUP P |
173F | t(F7709008): BL MOD7 [ORS] PROC9 |
| ENDu Module; |
1740 | u(8FE00000): LDR LNK, SP, 0H |
1741 | u(4EE80048): ADD SP, SP, 48H |
1742 | u(C700000F): B LNK |
| |
| PROCEDURE Option(VAR S: Texts.Scanner); |
| BEGINv newSF := FALSE;w |
1743 | v(4EE9000C): SUB SP, SP, CH |
1744 | v(AFE00000): STR LNK, SP, 0H |
1745 | v(A0E00004): STR R0, SP, 4H |
1746 | v(A1E00008): STR R1, SP, 8H |
1747 | w(40000000): MOV R0, R0, 0H |
1748 | w .FIXUP D |
1748 | w(8D00000C): LDR SB, MT, MOD0 [ORP] |
1749 | w(B0D00030): STR R0, SB, 30H [data] |
| IF S.nextCh = "/" THENx |
174A | x(80E00004): LDR R0, SP, 4H |
174B | x(90000034): LDR R0, R0, 34H |
174C | x(4009002F): SUB R0, R0, 2FH |
174D | x(E9000011): BNE 17 [175FH] |
| Texts.Scan(S)y;z Texts.Scan(S)a;b |
174E | y(80E00004): LDR R0, SP, 4H |
174F | y(81E00008): LDR R1, SP, 8H |
1750 | z .FIXUP P |
1750 | z(F7116011): BL MOD1 [Texts] PROC22 |
1751 | a(80E00004): LDR R0, SP, 4H |
1752 | a(81E00008): LDR R1, SP, 8H |
1753 | b .FIXUP P |
1753 | b(F7116003): BL MOD1 [Texts] PROC22 |
| IF (S.class = Texts.Name)c & (dS.s[0] = "s")e THENf newSF := TRUE ENDg |
1754 | c(80E00004): LDR R0, SP, 4H |
1755 | c(8000003C): LDR R0, R0, 3CH |
1756 | c(40090001): SUB R0, R0, 1H |
1757 | d(E9000007): BNE 7 [175FH] |
1758 | e(80E00004): LDR R0, SP, 4H |
1759 | e(90000054): LDR R0, R0, 54H |
175A | e(40090073): SUB R0, R0, 73H |
175B | f(E9000003): BNE 3 [175FH] |
175C | g(40000001): MOV R0, R0, 1H |
175D | g .FIXUP D |
175D | g(8D000015): LDR SB, MT, MOD0 [ORP] |
175E | g(B0D00030): STR R0, SB, 30H [data] |
| END |
| ENDh Option; |
175F | h(8FE00000): LDR LNK, SP, 0H |
1760 | h(4EE8000C): ADD SP, SP, CH |
1761 | h(C700000F): B LNK |
| |
| PROCEDURE Compile*; |
| VAR beg, end, time: LONGINT; |
| T: Texts.Text; |
| S: Texts.Scanner; |
| BEGINi Texts.OpenScanner(S,j Oberon.Par.text,k Oberon.Par.pos)l;m Texts.Scan(S)n;o |
1762 | i .PROC 1 |
1762 | i .COMMAND Compile |
1762 | i(4EE90088): SUB SP, SP, 88H |
1763 | i(AFE00000): STR LNK, SP, 0H |
1764 | j(40E80014): ADD R0, SP, 14H |
1765 | j .FIXUP D |
1765 | j(8D100008): LDR SB, MT, MOD1 [Texts] |
1766 | j(41D80003): ADD R1, SB, VAR3 |
1767 | k .FIXUP D |
1767 | k(8D400002): LDR SB, MT, MOD4 [Oberon] |
1768 | k(42D8000E): ADD R2, SB, VAR14 |
1769 | k(82200008): LDR R2, R2, 8H |
176A | l .FIXUP D |
176A | l(8D400003): LDR SB, MT, MOD4 [Oberon] |
176B | l(43D8000E): ADD R3, SB, VAR14 |
176C | l(8330000C): LDR R3, R3, CH |
176D | m .FIXUP P |
176D | m(F711501A): BL MOD1 [Texts] PROC21 |
176E | n(40E80014): ADD R0, SP, 14H |
176F | n .FIXUP D |
176F | n(8D100005): LDR SB, MT, MOD1 [Texts] |
1770 | n(41D80003): ADD R1, SB, VAR3 |
1771 | o .FIXUP P |
1771 | o(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Char THENp |
1772 | p(80E00050): LDR R0, SP, 50H |
1773 | p(40090006): SUB R0, R0, 6H |
1774 | p(E9000049): BNE 73 [17BEH] |
| IF S.c = "@" THENq |
1775 | q(90E00060): LDR R0, SP, 60H |
1776 | q(40090040): SUB R0, R0, 40H |
1777 | q(E9000011): BNE 17 [1789H] |
| Option(S)r;s Oberon.GetSelection(T,t beg,u end,v time)w;x |
1778 | r(40E80014): ADD R0, SP, 14H |
1779 | r .FIXUP D |
1779 | r(8D10000A): LDR SB, MT, MOD1 [Texts] |
177A | r(41D80003): ADD R1, SB, VAR3 |
177B | s(F7FFFFC7): BL -57 [1743H] |
177C | t(40E80010): ADD R0, SP, 10H |
177D | u(41E80004): ADD R1, SP, 4H |
177E | v(42E80008): ADD R2, SP, 8H |
177F | w(43E8000C): ADD R3, SP, CH |
1780 | x .FIXUP P |
1780 | x(F742900F): BL MOD4 [Oberon] PROC41 |
| IF time >= 0 THENy ORS.Init(T,z beg)a;b Module ENDc |
1781 | y(80E0000C): LDR R0, SP, CH |
1782 | y(40090000): SUB R0, R0, 0H |
1783 | y(E5000004): BLT 4 [1788H] |
1784 | z(80E00010): LDR R0, SP, 10H |
1785 | a(81E00004): LDR R1, SP, 4H |
1786 | b .FIXUP P |
1786 | b(F770B006): BL MOD7 [ORS] PROC11 |
1787 | c(F7FFFE7F): BL -385 [1607H] |
| ELSIF Sd.c = "^" THENe |
1788 | d(E7000034): B 52 [17BDH] |
1789 | e(90E00060): LDR R0, SP, 60H |
178A | e(4009005E): SUB R0, R0, 5EH |
178B | e(E9000031): BNE 49 [17BDH] |
| Option(S)f;g Oberon.GetSelection(T,h beg,i end,j time)k;l |
178C | f(40E80014): ADD R0, SP, 14H |
178D | f .FIXUP D |
178D | f(8D100014): LDR SB, MT, MOD1 [Texts] |
178E | f(41D80003): ADD R1, SB, VAR3 |
178F | g(F7FFFFB3): BL -77 [1743H] |
1790 | h(40E80010): ADD R0, SP, 10H |
1791 | i(41E80004): ADD R1, SP, 4H |
1792 | j(42E80008): ADD R2, SP, 8H |
1793 | k(43E8000C): ADD R3, SP, CH |
1794 | l .FIXUP P |
1794 | l(F742900E): BL MOD4 [Oberon] PROC41 |
| IF time >= 0 THENm |
1795 | m(80E0000C): LDR R0, SP, CH |
1796 | m(40090000): SUB R0, R0, 0H |
1797 | m(E5000025): BLT 37 [17BDH] |
| Texts.OpenScanner(S,n T,o beg)p;q Texts.Scan(S)r;s |
1798 | n(40E80014): ADD R0, SP, 14H |
1799 | n .FIXUP D |
1799 | n(8D10000C): LDR SB, MT, MOD1 [Texts] |
179A | n(41D80003): ADD R1, SB, VAR3 |
179B | o(82E00010): LDR R2, SP, 10H |
179C | p(83E00004): LDR R3, SP, 4H |
179D | q .FIXUP P |
179D | q(F7115009): BL MOD1 [Texts] PROC21 |
179E | r(40E80014): ADD R0, SP, 14H |
179F | r .FIXUP D |
179F | r(8D100006): LDR SB, MT, MOD1 [Texts] |
17A0 | r(41D80003): ADD R1, SB, VAR3 |
17A1 | s .FIXUP P |
17A1 | s(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Name THENt |
17A2 | t(80E00050): LDR R0, SP, 50H |
17A3 | t(40090001): SUB R0, R0, 1H |
17A4 | t(E9000018): BNE 24 [17BDH] |
| Texts.WriteString(W,u S.s)v;w NEW(T);x Texts.Open(T,y S.s)z;a |
17A5 | u .FIXUP D |
17A5 | u(8D000006): LDR SB, MT, MOD0 [ORP] |
17A6 | u(40D80068): ADD R0, SB, 68H [data] |
17A7 | u .FIXUP D |
17A7 | u(8D100002): LDR SB, MT, MOD1 [Texts] |
17A8 | u(41D80005): ADD R1, SB, VAR5 |
17A9 | v(42E80068): ADD R2, SP, 68H |
17AA | v(43000020): MOV R3, R0, 20H |
17AB | w .FIXUP P |
17AB | w(F711D00A): BL MOD1 [Texts] PROC29 |
17AC | x(40E80010): ADD R0, SP, 10H |
17AD | x .FIXUP D |
17AD | x(8D100006): LDR SB, MT, MOD1 [Texts] |
17AE | x(41D80001): ADD R1, SB, VAR1 |
17AF | x(D7A0DE0C): BL MT [trap=0, pos=41182] |
17B0 | y(80E00010): LDR R0, SP, 10H |
17B1 | z(41E80068): ADD R1, SP, 68H |
17B2 | z(42000020): MOV R2, R0, 20H |
17B3 | a .FIXUP P |
17B3 | a(F7107008): BL MOD1 [Texts] PROC7 |
| IF T.lenb > 0 THENc ORS.Init(T,d 0)e;f Module ENDg |
17B4 | b(80E00010): LDR R0, SP, 10H |
17B5 | b(D1A1074C): BLEQ MT [trap=4, pos=41223] |
17B6 | c(80000000): LDR R0, R0, 0H |
17B7 | c(40090000): SUB R0, R0, 0H |
17B8 | c(E6000004): BLE 4 [17BDH] |
17B9 | d(80E00010): LDR R0, SP, 10H |
17BA | e(41000000): MOV R1, R0, 0H |
17BB | f .FIXUP P |
17BB | f(F770B008): BL MOD7 [ORS] PROC11 |
17BC | g(F7FFFE4A): BL -438 [1607H] |
| END |
| END |
| END |
| ELSE |
| WHILEh S.class = Texts.Name DOi |
17BD | h(E7000041): B 65 [17FFH] |
17BE | i(80E00050): LDR R0, SP, 50H |
17BF | i(40090001): SUB R0, R0, 1H |
17C0 | i(E900003E): BNE 62 [17FFH] |
| NEW(T);j Texts.Open(T,k S.s)l;m |
17C1 | j(40E80010): ADD R0, SP, 10H |
17C2 | j .FIXUP D |
17C2 | j(8D100015): LDR SB, MT, MOD1 [Texts] |
17C3 | j(41D80001): ADD R1, SB, VAR1 |
17C4 | j(D7A18D0C): BL MT [trap=0, pos=41357] |
17C5 | k(80E00010): LDR R0, SP, 10H |
17C6 | l(41E80068): ADD R1, SP, 68H |
17C7 | l(42000020): MOV R2, R0, 20H |
17C8 | m .FIXUP P |
17C8 | m(F710700D): BL MOD1 [Texts] PROC7 |
| IF T.lenn > 0 THENo Option(S)p;q ORS.Init(T,r 0)s;t Module |
17C9 | n(80E00010): LDR R0, SP, 10H |
17CA | n(D1A1B24C): BLEQ MT [trap=4, pos=41394] |
17CB | o(80000000): LDR R0, R0, 0H |
17CC | o(40090000): SUB R0, R0, 0H |
17CD | o(E6000009): BLE 9 [17D7H] |
17CE | p(40E80014): ADD R0, SP, 14H |
17CF | p .FIXUP D |
17CF | p(8D10000D): LDR SB, MT, MOD1 [Texts] |
17D0 | p(41D80003): ADD R1, SB, VAR3 |
17D1 | q(F7FFFF71): BL -143 [1743H] |
17D2 | r(80E00010): LDR R0, SP, 10H |
17D3 | s(41000000): MOV R1, R0, 0H |
17D4 | t .FIXUP P |
17D4 | t(F770B00C): BL MOD7 [ORS] PROC11 |
| ELSEu Textsv.WriteString(W,w S.s)x;y Texts.WriteString(W,z " not found")a;b |
17D5 | u(F7FFFE31): BL -463 [1607H] |
17D6 | v(E7000019): B 25 [17F0H] |
17D7 | w .FIXUP D |
17D7 | w(8D000008): LDR SB, MT, MOD0 [ORP] |
17D8 | w(40D80068): ADD R0, SB, 68H [data] |
17D9 | w .FIXUP D |
17D9 | w(8D100002): LDR SB, MT, MOD1 [Texts] |
17DA | w(41D80005): ADD R1, SB, VAR5 |
17DB | x(42E80068): ADD R2, SP, 68H |
17DC | x(43000020): MOV R3, R0, 20H |
17DD | y .FIXUP P |
17DD | y(F711D009): BL MOD1 [Texts] PROC29 |
17DE | z .FIXUP D |
17DE | z(8D000005): LDR SB, MT, MOD0 [ORP] |
17DF | z(40D80068): ADD R0, SB, 68H [data] |
17E0 | z .FIXUP D |
17E0 | z(8D100002): LDR SB, MT, MOD1 [Texts] |
17E1 | z(41D80005): ADD R1, SB, VAR5 |
17E2 | a .FIXUP D |
17E2 | a(8D000002): LDR SB, MT, MOD0 [ORP] |
17E3 | a(42D8097C): ADD R2, SB, 97CH [" not found"] |
17E4 | a(4300000B): MOV R3, R0, BH |
17E5 | b .FIXUP P |
17E5 | b(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)c;d Texts.Append(Oberon.Log,e W.buf)f |
17E6 | c .FIXUP D |
17E6 | c(8D000004): LDR SB, MT, MOD0 [ORP] |
17E7 | c(40D80068): ADD R0, SB, 68H [data] |
17E8 | c .FIXUP D |
17E8 | c(8D100002): LDR SB, MT, MOD1 [Texts] |
17E9 | c(41D80005): ADD R1, SB, VAR5 |
17EA | d .FIXUP P |
17EA | d(F711C005): BL MOD1 [Texts] PROC28 |
17EB | e .FIXUP D |
17EB | e(8D400003): LDR SB, MT, MOD4 [Oberon] |
17EC | e(80D0000D): LDR R0, SB, VAR13 |
17ED | f .FIXUP D |
17ED | f(8D000002): LDR SB, MT, MOD0 [ORP] |
17EE | f(81D00068): LDR R1, SB, 68H [data] |
| ENDg ; |
17EF | g .FIXUP P |
17EF | g(F710E005): BL MOD1 [Texts] PROC14 |
| IF (T.lenh # 0)i & (jORS.errcnt = 0)k THENl Texts.Scan(S)m ELSEn So.class := 0 ENDp |
17F0 | h(80E00010): LDR R0, SP, 10H |
17F1 | h(D1A2854C): BLEQ MT [trap=4, pos=41605] |
17F2 | i(80000000): LDR R0, R0, 0H |
17F3 | j(E1000008): BEQ 8 [17FCH] |
17F4 | k .FIXUP D |
17F4 | k(8D700007): LDR SB, MT, MOD7 [ORS] |
17F5 | k(80D00006): LDR R0, SB, VAR6 |
17F6 | l(E9000005): BNE 5 [17FCH] |
17F7 | m(40E80014): ADD R0, SP, 14H |
17F8 | m .FIXUP D |
17F8 | m(8D100004): LDR SB, MT, MOD1 [Texts] |
17F9 | m(41D80003): ADD R1, SB, VAR3 |
17FA | n .FIXUP P |
17FA | n(F711600B): BL MOD1 [Texts] PROC22 |
17FB | o(E7000002): B 2 [17FEH] |
17FC | p(40000000): MOV R0, R0, 0H |
17FD | p(A0E00050): STR R0, SP, 50H |
| ENDq |
17FE | q(E7FFFFBF): B -65 [17BEH] |
| END ; |
| Oberon.Collect(0)r |
17FF | r(40000000): MOV R0, R0, 0H |
| ENDs Compile; |
1800 | s .FIXUP P |
1800 | s(F742D006): BL MOD4 [Oberon] PROC45 |
1801 | s(8FE00000): LDR LNK, SP, 0H |
1802 | s(4EE80088): ADD SP, SP, 88H |
1803 | s(C700000F): B LNK |
| |
| BEGINt Texts.OpenWriter(W)u;v Texts.WriteString(W,w "OR Compiler 4.4.2017")x;y |
1804 | t .PROC 0 |
1804 | t .ENTRYPOINT |
1804 | t(4EE90004): SUB SP, SP, 4H |
1805 | t(AFE00000): STR LNK, SP, 0H |
1806 | u .FIXUP D |
1806 | u(8D00000E): LDR SB, MT, MOD0 [ORP] |
1807 | u(40D80068): ADD R0, SB, 68H [data] |
1808 | u .FIXUP D |
1808 | u(8D100002): LDR SB, MT, MOD1 [Texts] |
1809 | u(41D80005): ADD R1, SB, VAR5 |
180A | v .FIXUP P |
180A | v(F711700A): BL MOD1 [Texts] PROC23 |
180B | w .FIXUP D |
180B | w(8D000003): LDR SB, MT, MOD0 [ORP] |
180C | w(40D80068): ADD R0, SB, 68H [data] |
180D | w .FIXUP D |
180D | w(8D100002): LDR SB, MT, MOD1 [Texts] |
180E | w(41D80005): ADD R1, SB, VAR5 |
180F | x .FIXUP D |
180F | x(8D000002): LDR SB, MT, MOD0 [ORP] |
1810 | x(42D80988): ADD R2, SB, 988H ["OR Compiler 4.4.2017"] |
1811 | x(43000016): MOV R3, R0, 16H |
1812 | y .FIXUP P |
1812 | y(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)z;a Texts.Append(Oberon.Log,b W.buf)c;d |
1813 | z .FIXUP D |
1813 | z(8D000004): LDR SB, MT, MOD0 [ORP] |
1814 | z(40D80068): ADD R0, SB, 68H [data] |
1815 | z .FIXUP D |
1815 | z(8D100002): LDR SB, MT, MOD1 [Texts] |
1816 | z(41D80005): ADD R1, SB, VAR5 |
1817 | a .FIXUP P |
1817 | a(F711C005): BL MOD1 [Texts] PROC28 |
1818 | b .FIXUP D |
1818 | b(8D400003): LDR SB, MT, MOD4 [Oberon] |
1819 | b(80D0000D): LDR R0, SB, VAR13 |
181A | c .FIXUP D |
181A | c(8D000002): LDR SB, MT, MOD0 [ORP] |
181B | c(81D00068): LDR R1, SB, 68H [data] |
181C | d .FIXUP P |
181C | d(F710E005): BL MOD1 [Texts] PROC14 |
| NEW(dummy);e dummy.classf := ORB.Var;g dummy.typeh := ORB.intType;i |
181D | e .FIXUP D |
181D | e(8D000003): LDR SB, MT, MOD0 [ORP] |
181E | e(40D80064): ADD R0, SB, 64H [data] |
181F | e .FIXUP D |
181F | e(8D800002): LDR SB, MT, MOD8 [ORB] |
1820 | e(41D80001): ADD R1, SB, VAR1 |
1821 | e(D7A38D0C): BL MT [trap=0, pos=41869] |
1822 | f .FIXUP D |
1822 | f(8D000003): LDR SB, MT, MOD0 [ORP] |
1823 | f(80D00064): LDR R0, SB, 64H [data] |
1824 | f(D1A3994C): BLEQ MT [trap=4, pos=41881] |
1825 | g(41000002): MOV R1, R0, 2H |
1826 | g(B1000000): STR R1, R0, 0H |
1827 | h(80D00064): LDR R0, SB, 64H |
1828 | h(D1A3B04C): BLEQ MT [trap=4, pos=41904] |
1829 | i .FIXUP D |
1829 | i(8D800007): LDR SB, MT, MOD8 [ORB] |
182A | i(81D00009): LDR R1, SB, VAR9 |
182B | i(A1000010): STR R1, R0, 10H |
| expression := expression0;j Type := Type0;k FormalType := FormalType0 |
182C | j(F7000000): BL 0 [182DH] |
182D | j(40F93D60): SUB R0, LNK, 3D60H |
182E | j .FIXUP D |
182E | j(8D000005): LDR SB, MT, MOD0 [ORP] |
182F | j(A0D00034): STR R0, SB, 34H [data] |
1830 | k(F7000000): BL 0 [1831H] |
1831 | k(40F91724): SUB R0, LNK, 1724H |
1832 | k(A0D00038): STR R0, SB, 38H |
| ENDl ORP.m |
1833 | l(F7000000): BL 0 [1834H] |
1834 | l(40F91960): SUB R0, LNK, 1960H |
1835 | l(A0D0003C): STR R0, SB, 3CH |
1836 | m(8FE00000): LDR LNK, SP, 0H |
1837 | m(4EE80004): ADD SP, SP, 4H |
1838 | m(C700000F): B LNK |