| MODULE ORS; (* NW 19.9.93 / 20.3.2017 Scanner in Oberon-07*) |
| .MODULE ORS (KEY 76547166, VERSION 1, SIZE 00002144) |
| .IMPORT Texts (KEY 0B9E9984) |
| .IMPORT Fonts (KEY F4C9F557) |
| .IMPORT Files (KEY 73F5D686) |
| .IMPORT Oberon (KEY A89CCEE2) |
| .IMPORT Display (KEY 4C08D3EA) |
| .IMPORT Viewers (KEY 25ABF199) |
| .DATA 3E0H |
| .STRING 3E0H " pos " |
| .STRING 3E8H "string too long" |
| .STRING 3F8H "hexdig expected" |
| .STRING 408H "hexdig expected" |
| .STRING 418H "string too long" |
| .STRING 428H "too many digits" |
| .STRING 438H "illegal value" |
| .STRING 448H "too large" |
| .STRING 454H "bad integer" |
| .STRING 460H "digit?" |
| .STRING 468H "too large" |
| .STRING 474H "too large" |
| .STRING 480H "bad integer" |
| .STRING 48CH "unterminated comment" |
| .STRING 4A4H "IF" |
| .STRING 4A8H "DO" |
| .STRING 4ACH "OF" |
| .STRING 4B0H "OR" |
| .STRING 4B4H "TO" |
| .STRING 4B8H "IN" |
| .STRING 4BCH "IS" |
| .STRING 4C0H "BY" |
| .STRING 4C4H "END" |
| .STRING 4C8H "NIL" |
| .STRING 4CCH "VAR" |
| .STRING 4D0H "DIV" |
| .STRING 4D4H "MOD" |
| .STRING 4D8H "FOR" |
| .STRING 4DCH "ELSE" |
| .STRING 4E4H "THEN" |
| .STRING 4ECH "TRUE" |
| .STRING 4F4H "TYPE" |
| .STRING 4FCH "CASE" |
| .STRING 504H "ELSIF" |
| .STRING 50CH "FALSE" |
| .STRING 514H "ARRAY" |
| .STRING 51CH "BEGIN" |
| .STRING 524H "CONST" |
| .STRING 52CH "UNTIL" |
| .STRING 534H "WHILE" |
| .STRING 53CH "RECORD" |
| .STRING 544H "REPEAT" |
| .STRING 54CH "RETURN" |
| .STRING 554H "IMPORT" |
| .STRING 55CH "MODULE" |
| .STRING 564H "POINTER" |
| .STRING 56CH "PROCEDURE" |
| .POINTER_REFERENCES 13CH 148H 168H 15CH 16CH 170H 190H 184H |
| .FIXUP T 0H |
| IMPORT SYSTEM, Texts, Oberon; |
| |
| (* Oberon Scanner does lexical analysis. Input is Oberon-Text, output is |
| sequence of symbols, i.e identifiers, numbers, strings, and special symbols. |
| Recognises all Oberon keywords and skips comments. The keywords are |
| recorded in a table. |
| Get(sym) delivers next symbol from input text with Reader R. |
| Mark(msg) records error and delivers error message with Writer W. |
| If Get delivers ident, then the identifier (a string) is in variable id, if int or char |
| in ival, if real in rval, and if string in str (and slen) *) |
| |
| CONST IdLen* = 32; |
| NKW = 34; (*nof keywords*) |
| maxExp = 38; stringBufSize = 256; |
| |
| (*lexical symbols*) |
| null = 0; times* = 1; rdiv* = 2; div* = 3; mod* = 4; |
| and* = 5; plus* = 6; minus* = 7; or* = 8; eql* = 9; |
| neq* = 10; lss* = 11; leq* = 12; gtr* = 13; geq* = 14; |
| in* = 15; is* = 16; arrow* = 17; period* = 18; |
| char* = 20; int* = 21; real* = 22; false* = 23; true* = 24; |
| nil* = 25; string* = 26; not* = 27; lparen* = 28; lbrak* = 29; |
| lbrace* = 30; ident* = 31; |
| if* = 32; while* = 34; repeat* = 35; case* = 36; for* = 37; |
| comma* = 40; colon* = 41; becomes* = 42; upto* = 43; rparen* = 44; |
| rbrak* = 45; rbrace* = 46; then* = 47; of* = 48; do* = 49; |
| to* = 50; by* = 51; semicolon* = 52; end* = 53; bar* = 54; |
| else* = 55; elsif* = 56; until* = 57; return* = 58; |
| array* = 60; record* = 61; pointer* = 62; const* = 63; type* = 64; |
| var* = 65; procedure* = 66; begin* = 67; import* = 68; module* = 69; eot = 70; |
| |
| TYPE Ident* = ARRAY IdLen OF CHAR; |
| |
| VAR ival*, slen*: LONGINT; (*results of Get*) |
| rval*: REAL; |
| id*: Ident; (*for identifiers*) |
| str*: ARRAY stringBufSize OF CHAR; |
| errcnt*: INTEGER; |
| |
| ch: CHAR; (*last character read*) |
| errpos: LONGINT; |
| R: Texts.Reader; |
| W: Texts.Writer; |
| k: INTEGER; |
| KWX: ARRAY 10 OF INTEGER; |
| keyTab: ARRAY NKW OF |
| RECORD sym: INTEGER; id: ARRAY 12 OF CHAR END; |
| |
| PROCEDURE CopyId*(VAR ident: Ident); |
| BEGINa ident := id |
0000 | a .PROC 1 |
0000 | a .PROC 7 |
0000 | a(4EE90008): SUB SP, SP, 8H |
0001 | a .PROC 2 |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | a .PROC 3 |
0002 | a(A0E00004): STR R0, SP, 4H |
| ENDb CopyId; |
0003 | b .PROC 4 |
0003 | b(80E00004): LDR R0, SP, 4H |
0004 | b .FIXUP D |
0004 | b(8D000004): LDR SB, MT, MOD0 [ORS] |
0005 | b(41D8000C): ADD R1, SB, CH [data] |
0006 | b(42000008): MOV R2, R0, 8H |
0007 | b(83100000): LDR R3, R1, 0H |
0008 | b(41180004): ADD R1, R1, 4H |
0009 | b(A3000000): STR R3, R0, 0H |
000A | b(40080004): ADD R0, R0, 4H |
000B | b .PROC 5 |
000B | b(42290001): SUB R2, R2, 1H |
000C | b(E9FFFFFA): BNE -6 [0007H] |
000D | b(8FE00000): LDR LNK, SP, 0H |
000E | b(4EE80008): ADD SP, SP, 8H |
000F | b(C700000F): B LNK |
| |
| PROCEDURE Pos*(): LONGINT; |
| BEGINc RETURN Texts.Pos(R)d -e 1 |
0010 | c .PROC 8 |
0010 | c(4EE90004): SUB SP, SP, 4H |
0011 | c(AFE00000): STR LNK, SP, 0H |
0012 | d .FIXUP D |
0012 | d(8D00000E): LDR SB, MT, MOD0 [ORS] |
0013 | d(40D80138): ADD R0, SB, 138H [data] |
0014 | d .FIXUP D |
0014 | d(8D100002): LDR SB, MT, MOD1 [Texts] |
0015 | d(41D80002): ADD R1, SB, VAR2 |
0016 | e .FIXUP P |
0016 | e(F7114016): BL MOD1 [Texts] PROC20 |
| ENDf Pos; |
0017 | f(40090001): SUB R0, R0, 1H |
0018 | f(8FE00000): LDR LNK, SP, 0H |
0019 | f(4EE80004): ADD SP, SP, 4H |
001A | f(C700000F): B LNK |
| |
| PROCEDURE Mark*(msg: ARRAY OF CHAR); |
| VAR p: LONGINT; |
| BEGINg p := Pos();h |
001B | g .PROC 9 |
001B | g(4EE90010): SUB SP, SP, 10H |
001C | g(AFE00000): STR LNK, SP, 0H |
001D | g(A0E00004): STR R0, SP, 4H |
001E | g(A1E00008): STR R1, SP, 8H |
001F | h(F7FFFFF0): BL -16 [0010H] |
0020 | h(A0E0000C): STR R0, SP, CH |
| IF (p > errpos)i & (jerrcnt < 25)k THENl |
0021 | i(80E0000C): LDR R0, SP, CH |
0022 | i .FIXUP D |
0022 | i(8D00000E): LDR SB, MT, MOD0 [ORS] |
0023 | i(81D00134): LDR R1, SB, 134H [data] |
0024 | i(00090001): SUB R0, R0, R1 |
0025 | j(E600002A): BLE 42 [0050H] |
0026 | k .FIXUP D |
0026 | k(8D000004): LDR SB, MT, MOD0 [ORS] |
0027 | k(80D0012C): LDR R0, SB, 12CH [data] |
0028 | k(40090019): SUB R0, R0, 19H |
0029 | l(ED000026): BGE 38 [0050H] |
| Texts.WriteLn(W)m;n Texts.WriteString(W,o " pos ")p;q Texts.WriteInt(W,r p,s 1)t;u Texts.Write(W,v " ")w;x |
002A | m .FIXUP D |
002A | m(8D000004): LDR SB, MT, MOD0 [ORS] |
002B | m(40D8016C): ADD R0, SB, 16CH [data] |
002C | m .FIXUP D |
002C | m(8D100002): LDR SB, MT, MOD1 [Texts] |
002D | m(41D80005): ADD R1, SB, VAR5 |
002E | n .FIXUP P |
002E | n(F711C018): BL MOD1 [Texts] PROC28 |
002F | o .FIXUP D |
002F | o(8D000003): LDR SB, MT, MOD0 [ORS] |
0030 | o(40D8016C): ADD R0, SB, 16CH [data] |
0031 | o .FIXUP D |
0031 | o(8D100002): LDR SB, MT, MOD1 [Texts] |
0032 | o(41D80005): ADD R1, SB, VAR5 |
0033 | p .FIXUP D |
0033 | p(8D000002): LDR SB, MT, MOD0 [ORS] |
0034 | p(42D803E0): ADD R2, SB, 3E0H [" pos "] |
0035 | p(43000007): MOV R3, R0, 7H |
0036 | q .FIXUP P |
0036 | q(F711D008): BL MOD1 [Texts] PROC29 |
0037 | r .FIXUP D |
0037 | r(8D000004): LDR SB, MT, MOD0 [ORS] |
0038 | r(40D8016C): ADD R0, SB, 16CH [data] |
0039 | r .FIXUP D |
0039 | r(8D100002): LDR SB, MT, MOD1 [Texts] |
003A | r(41D80005): ADD R1, SB, VAR5 |
003B | s(82E0000C): LDR R2, SP, CH |
003C | t(43000001): MOV R3, R0, 1H |
003D | u .FIXUP P |
003D | u(F711E007): BL MOD1 [Texts] PROC30 |
003E | v .FIXUP D |
003E | v(8D000005): LDR SB, MT, MOD0 [ORS] |
003F | v(40D8016C): ADD R0, SB, 16CH [data] |
0040 | v .FIXUP D |
0040 | v(8D100002): LDR SB, MT, MOD1 [Texts] |
0041 | v(41D80005): ADD R1, SB, VAR5 |
0042 | w(42000020): MOV R2, R0, 20H |
0043 | x .FIXUP P |
0043 | x(F711B006): BL MOD1 [Texts] PROC27 |
| Texts.WriteString(W,y msg)z;a Texts.Append(Oberon.Log,b W.buf)c |
0044 | y .FIXUP D |
0044 | y(8D000004): LDR SB, MT, MOD0 [ORS] |
0045 | y(40D8016C): ADD R0, SB, 16CH [data] |
0046 | y .FIXUP D |
0046 | y(8D100002): LDR SB, MT, MOD1 [Texts] |
0047 | y(41D80005): ADD R1, SB, VAR5 |
0048 | z(82E00004): LDR R2, SP, 4H |
0049 | z(83E00008): LDR R3, SP, 8H |
004A | a .FIXUP P |
004A | a(F711D007): BL MOD1 [Texts] PROC29 |
004B | b .PROC 6 |
004B | b .FIXUP D |
004B | b(8D400005): LDR SB, MT, MOD4 [Oberon] |
004C | b(80D0000D): LDR R0, SB, VAR13 |
004D | c .FIXUP D |
004D | c(8D000002): LDR SB, MT, MOD0 [ORS] |
004E | c(81D0016C): LDR R1, SB, 16CH [data] |
| ENDd ; |
004F | d .FIXUP P |
004F | d(F710E005): BL MOD1 [Texts] PROC14 |
| INC(errcnt);e errpos := p + 4 |
0050 | e .FIXUP D |
0050 | e(8D000003): LDR SB, MT, MOD0 [ORS] |
0051 | e(40D8012C): ADD R0, SB, 12CH [data] |
0052 | e(81000000): LDR R1, R0, 0H |
0053 | e(41180001): ADD R1, R1, 1H |
0054 | e(A1000000): STR R1, R0, 0H |
| ENDf Mark; |
0055 | f(80E0000C): LDR R0, SP, CH |
0056 | f(40080004): ADD R0, R0, 4H |
0057 | f(A0D00134): STR R0, SB, 134H |
0058 | f(8FE00000): LDR LNK, SP, 0H |
0059 | f(4EE80010): ADD SP, SP, 10H |
005A | f(C700000F): B LNK |
| |
| PROCEDURE Identifier(VAR sym: INTEGER); |
| VAR i, k: INTEGER; |
| BEGINg i := 0;h |
005B | g(4EE90010): SUB SP, SP, 10H |
005C | g(AFE00000): STR LNK, SP, 0H |
005D | g(A0E00004): STR R0, SP, 4H |
005E | h(40000000): MOV R0, R0, 0H |
005F | h(A0E00008): STR R0, SP, 8H |
| REPEAT |
| IF i < IdLen-1 THENi id[i]j := ch;k INC(i) ENDl ; |
0060 | i(80E00008): LDR R0, SP, 8H |
0061 | i(4009001F): SUB R0, R0, 1FH |
0062 | i(ED00000A): BGE 10 [006DH] |
0063 | j(80E00008): LDR R0, SP, 8H |
0064 | j(41090020): SUB R1, R0, 20H |
0065 | j(DA0A591C): BLCC MT [trap=1, pos=2649] |
0066 | j .FIXUP D |
0066 | j(8D000016): LDR SB, MT, MOD0 [ORS] |
0067 | j(00D80000): ADD R0, SB, R0 [global array] |
0068 | k(91D00130): LDR R1, SB, 130H |
0069 | k(B100000C): STR R1, R0, CH |
006A | l(80E00008): LDR R0, SP, 8H |
006B | l(40080001): ADD R0, R0, 1H |
006C | l(A0E00008): STR R0, SP, 8H |
| Texts.Read(R,m ch)n |
006D | m .FIXUP D |
006D | m(8D000007): LDR SB, MT, MOD0 [ORS] |
006E | m(40D80138): ADD R0, SB, 138H [data] |
006F | m .FIXUP D |
006F | m(8D100002): LDR SB, MT, MOD1 [Texts] |
0070 | m(41D80002): ADD R1, SB, VAR2 |
0071 | n .FIXUP D |
0071 | n(8D000002): LDR SB, MT, MOD0 [ORS] |
0072 | n(42D80130): ADD R2, SB, 130H [data] |
| UNTILo (ch < "0")p OR (qch > "9")r & (sch < "A")t OR (uch > "Z")v & (wch < "a")x OR (ych > "z")z;a |
0073 | o .FIXUP P |
0073 | o(F7113024): BL MOD1 [Texts] PROC19 |
0074 | p .FIXUP D |
0074 | p(8D000003): LDR SB, MT, MOD0 [ORS] |
0075 | p(90D00130): LDR R0, SB, 130H [data] |
0076 | p(40090030): SUB R0, R0, 30H |
0077 | q(E5000014): BLT 20 [008CH] |
0078 | r .FIXUP D |
0078 | r(8D000004): LDR SB, MT, MOD0 [ORS] |
0079 | r(90D00130): LDR R0, SB, 130H [data] |
007A | r(40090039): SUB R0, R0, 39H |
007B | s(E6000004): BLE 4 [0080H] |
007C | t .FIXUP D |
007C | t(8D000004): LDR SB, MT, MOD0 [ORS] |
007D | t(90D00130): LDR R0, SB, 130H [data] |
007E | t(40090041): SUB R0, R0, 41H |
007F | u(E500000C): BLT 12 [008CH] |
0080 | v .FIXUP D |
0080 | v(8D000004): LDR SB, MT, MOD0 [ORS] |
0081 | v(90D00130): LDR R0, SB, 130H [data] |
0082 | v(4009005A): SUB R0, R0, 5AH |
0083 | w(E6000004): BLE 4 [0088H] |
0084 | x .FIXUP D |
0084 | x(8D000004): LDR SB, MT, MOD0 [ORS] |
0085 | x(90D00130): LDR R0, SB, 130H [data] |
0086 | x(40090061): SUB R0, R0, 61H |
0087 | y(E5000004): BLT 4 [008CH] |
0088 | z .FIXUP D |
0088 | z(8D000004): LDR SB, MT, MOD0 [ORS] |
0089 | z(90D00130): LDR R0, SB, 130H [data] |
008A | z(4009007A): SUB R0, R0, 7AH |
008B | a(E6FFFFD4): BLE -44 [0060H] |
| id[i]b := 0X;c |
008C | b(80E00008): LDR R0, SP, 8H |
008D | b(41090020): SUB R1, R0, 20H |
008E | b(DA0AE91C): BLCC MT [trap=1, pos=2793] |
008F | b .FIXUP D |
008F | b(8D000007): LDR SB, MT, MOD0 [ORS] |
0090 | b(00D80000): ADD R0, SB, R0 [global array] |
0091 | c(41000000): MOV R1, R0, 0H |
0092 | c(B100000C): STR R1, R0, CH |
| IF i < 10 THENd k := KWX[i-1]e;f (*search for keyword*) |
0093 | d(80E00008): LDR R0, SP, 8H |
0094 | d(4009000A): SUB R0, R0, AH |
0095 | d(ED000040): BGE 64 [00D6H] |
0096 | e(80E00008): LDR R0, SP, 8H |
0097 | e(40090001): SUB R0, R0, 1H |
0098 | e(4109000A): SUB R1, R0, AH |
0099 | e(DA0B121C): BLCC MT [trap=1, pos=2834] |
009A | e(40010002): LSL R0, R0, 2H |
009B | e .FIXUP D |
009B | e(8D00000C): LDR SB, MT, MOD0 [ORS] |
009C | e(00D80000): ADD R0, SB, R0 [global array] |
009D | f(80000198): LDR R0, R0, 198H |
009E | f(A0E0000C): STR R0, SP, CH |
| WHILE (id # keyTab[k]g.id)h & (ik < KWX[i]j)k DOl INC(k) ENDm ; |
009F | g(80E0000C): LDR R0, SP, CH |
00A0 | g(41090022): SUB R1, R0, 22H |
00A1 | g(DA0B471C): BLCC MT [trap=1, pos=2887] |
00A2 | g(400A0010): MUL R0, R0, 10H |
00A3 | g .FIXUP D |
00A3 | g(8D000008): LDR SB, MT, MOD0 [ORS] |
00A4 | g(00D80000): ADD R0, SB, R0 [global array] |
00A5 | h(41D8000C): ADD R1, SB, CH |
00A6 | h(400801C4): ADD R0, R0, 1C4H |
00A7 | h(92100000): LDR R2, R1, 0H |
00A8 | h(41180001): ADD R1, R1, 1H |
00A9 | h(93000000): LDR R3, R0, 0H |
00AA | h(40080001): ADD R0, R0, 1H |
00AB | h(04290003): SUB R4, R2, R3 |
00AC | h(E9000002): BNE 2 [00AFH] |
00AD | h(44290000): SUB R4, R2, 0H |
00AE | h(E9FFFFF8): BNE -8 [00A7H] |
00AF | i(E100000E): BEQ 14 [00BEH] |
00B0 | j(80E00008): LDR R0, SP, 8H |
00B1 | j(4109000A): SUB R1, R0, AH |
00B2 | j(DA0B591C): BLCC MT [trap=1, pos=2905] |
00B3 | j(40010002): LSL R0, R0, 2H |
00B4 | j .FIXUP D |
00B4 | j(8D000011): LDR SB, MT, MOD0 [ORS] |
00B5 | j(00D80000): ADD R0, SB, R0 [global array] |
00B6 | k(81E0000C): LDR R1, SP, CH |
00B7 | k(80000198): LDR R0, R0, 198H |
00B8 | k(01190000): SUB R1, R1, R0 |
00B9 | l(ED000004): BGE 4 [00BEH] |
00BA | m(80E0000C): LDR R0, SP, CH |
00BB | m(40080001): ADD R0, R0, 1H |
00BC | m(A0E0000C): STR R0, SP, CH |
00BD | m(E7FFFFE1): B -31 [009FH] |
| IF k < KWX[i]n THENo sym := keyTab[k]p.sym ELSEq symr := ident ENDs |
00BE | n(80E00008): LDR R0, SP, 8H |
00BF | n(4109000A): SUB R1, R0, AH |
00C0 | n(DA0B7E1C): BLCC MT [trap=1, pos=2942] |
00C1 | n(40010002): LSL R0, R0, 2H |
00C2 | n .FIXUP D |
00C2 | n(8D00000E): LDR SB, MT, MOD0 [ORS] |
00C3 | n(00D80000): ADD R0, SB, R0 [global array] |
00C4 | o(81E0000C): LDR R1, SP, CH |
00C5 | o(80000198): LDR R0, R0, 198H |
00C6 | o(01190000): SUB R1, R1, R0 |
00C7 | o(ED00000A): BGE 10 [00D2H] |
00C8 | p(80E0000C): LDR R0, SP, CH |
00C9 | p(41090022): SUB R1, R0, 22H |
00CA | p(DA0B941C): BLCC MT [trap=1, pos=2964] |
00CB | p(400A0010): MUL R0, R0, 10H |
00CC | p .FIXUP D |
00CC | p(8D00000A): LDR SB, MT, MOD0 [ORS] |
00CD | p(00D80000): ADD R0, SB, R0 [global array] |
00CE | q(800001C0): LDR R0, R0, 1C0H |
00CF | q(81E00004): LDR R1, SP, 4H |
00D0 | q(A0100000): STR R0, R1, 0H |
00D1 | r(E7000003): B 3 [00D5H] |
00D2 | s(4000001F): MOV R0, R0, 1FH |
00D3 | s(81E00004): LDR R1, SP, 4H |
00D4 | s(A0100000): STR R0, R1, 0H |
| ELSE symt := ident |
00D5 | t(E7000003): B 3 [00D9H] |
| ENDu |
00D6 | u(4000001F): MOV R0, R0, 1FH |
00D7 | u(81E00004): LDR R1, SP, 4H |
00D8 | u(A0100000): STR R0, R1, 0H |
| ENDv Identifier; |
00D9 | v(8FE00000): LDR LNK, SP, 0H |
00DA | v(4EE80010): ADD SP, SP, 10H |
00DB | v(C700000F): B LNK |
| |
| PROCEDURE String; |
| VAR i: INTEGER; |
| BEGINw i := 0;x Texts.Read(R,y ch)z;a |
00DC | w(4EE90008): SUB SP, SP, 8H |
00DD | w(AFE00000): STR LNK, SP, 0H |
00DE | x(40000000): MOV R0, R0, 0H |
00DF | x(A0E00004): STR R0, SP, 4H |
00E0 | y .FIXUP D |
00E0 | y(8D000014): LDR SB, MT, MOD0 [ORS] |
00E1 | y(40D80138): ADD R0, SB, 138H [data] |
00E2 | y .FIXUP D |
00E2 | y(8D100002): LDR SB, MT, MOD1 [Texts] |
00E3 | y(41D80002): ADD R1, SB, VAR2 |
00E4 | z .FIXUP D |
00E4 | z(8D000002): LDR SB, MT, MOD0 [ORS] |
00E5 | z(42D80130): ADD R2, SB, 130H [data] |
00E6 | a .FIXUP P |
00E6 | a(F7113073): BL MOD1 [Texts] PROC19 |
| WHILE ~R.eot &b (cch # 22X)d DOe |
00E7 | b .FIXUP D |
00E7 | b(8D000003): LDR SB, MT, MOD0 [ORS] |
00E8 | b(90D00138): LDR R0, SB, 138H [data] |
00E9 | c(E9000022): BNE 34 [010CH] |
00EA | d .FIXUP D |
00EA | d(8D000003): LDR SB, MT, MOD0 [ORS] |
00EB | d(90D00130): LDR R0, SB, 130H [data] |
00EC | d(40090022): SUB R0, R0, 22H |
00ED | e(E100001E): BEQ 30 [010CH] |
| IF ch >= " " THENf |
00EE | f .FIXUP D |
00EE | f(8D000004): LDR SB, MT, MOD0 [ORS] |
00EF | f(90D00130): LDR R0, SB, 130H [data] |
00F0 | f(40090020): SUB R0, R0, 20H |
00F1 | f(E5000012): BLT 18 [0104H] |
| IF i < stringBufSize-1 THENg str[i]h := ch;i INC(i) ELSEj Markk("string too long")l ENDm ; |
00F2 | g(80E00004): LDR R0, SP, 4H |
00F3 | g(400900FF): SUB R0, R0, FFH |
00F4 | g(ED00000B): BGE 11 [0100H] |
00F5 | h(80E00004): LDR R0, SP, 4H |
00F6 | h(41090100): SUB R1, R0, 100H |
00F7 | h(DA0C8E1C): BLCC MT [trap=1, pos=3214] |
00F8 | h .FIXUP D |
00F8 | h(8D00000A): LDR SB, MT, MOD0 [ORS] |
00F9 | h(00D80000): ADD R0, SB, R0 [global array] |
00FA | i(91D00130): LDR R1, SB, 130H |
00FB | i(B100002C): STR R1, R0, 2CH |
00FC | j(80E00004): LDR R0, SP, 4H |
00FD | j(40080001): ADD R0, R0, 1H |
00FE | j(A0E00004): STR R0, SP, 4H |
00FF | k(E7000004): B 4 [0104H] |
0100 | l .FIXUP D |
0100 | l(8D000008): LDR SB, MT, MOD0 [ORS] |
0101 | l(40D803E8): ADD R0, SB, 3E8H ["string too long"] |
0102 | l(41000010): MOV R1, R0, 10H |
0103 | m(F7FFFF17): BL -233 [001BH] |
| END ; |
| Texts.Read(R,n ch)o |
0104 | n .FIXUP D |
0104 | n(8D000004): LDR SB, MT, MOD0 [ORS] |
0105 | n(40D80138): ADD R0, SB, 138H [data] |
0106 | n .FIXUP D |
0106 | n(8D100002): LDR SB, MT, MOD1 [Texts] |
0107 | n(41D80002): ADD R1, SB, VAR2 |
0108 | o .FIXUP D |
0108 | o(8D000002): LDR SB, MT, MOD0 [ORS] |
0109 | o(42D80130): ADD R2, SB, 130H [data] |
| ENDp ; |
010A | p .FIXUP P |
010A | p(F7113024): BL MOD1 [Texts] PROC19 |
010B | p(E7FFFFDB): B -37 [00E7H] |
| str[i]q := 0X;r INC(i);s Texts.Read(R,t ch)u;v slen := i |
010C | q(80E00004): LDR R0, SP, 4H |
010D | q(41090100): SUB R1, R0, 100H |
010E | q(DA0CF81C): BLCC MT [trap=1, pos=3320] |
010F | q .FIXUP D |
010F | q(8D000007): LDR SB, MT, MOD0 [ORS] |
0110 | q(00D80000): ADD R0, SB, R0 [global array] |
0111 | r(41000000): MOV R1, R0, 0H |
0112 | r(B100002C): STR R1, R0, 2CH |
0113 | s(80E00004): LDR R0, SP, 4H |
0114 | s(40080001): ADD R0, R0, 1H |
0115 | s(A0E00004): STR R0, SP, 4H |
0116 | t(40D80138): ADD R0, SB, 138H |
0117 | t .FIXUP D |
0117 | t(8D100008): LDR SB, MT, MOD1 [Texts] |
0118 | t(41D80002): ADD R1, SB, VAR2 |
0119 | u .FIXUP D |
0119 | u(8D000002): LDR SB, MT, MOD0 [ORS] |
011A | u(42D80130): ADD R2, SB, 130H [data] |
011B | v .FIXUP P |
011B | v(F7113011): BL MOD1 [Texts] PROC19 |
| ENDw String; |
011C | w(80E00004): LDR R0, SP, 4H |
011D | w .FIXUP D |
011D | w(8D000004): LDR SB, MT, MOD0 [ORS] |
011E | w(A0D00004): STR R0, SB, 4H [data] |
011F | w(8FE00000): LDR LNK, SP, 0H |
0120 | w(4EE80008): ADD SP, SP, 8H |
0121 | w(C700000F): B LNK |
| |
| PROCEDURE HexString; |
| VAR i, m, n: INTEGER; |
| BEGINx i := 0;y Texts.Read(R,z ch)a;b |
0122 | x(4EE90010): SUB SP, SP, 10H |
0123 | x(AFE00000): STR LNK, SP, 0H |
0124 | y(40000000): MOV R0, R0, 0H |
0125 | y(A0E00004): STR R0, SP, 4H |
0126 | z .FIXUP D |
0126 | z(8D000009): LDR SB, MT, MOD0 [ORS] |
0127 | z(40D80138): ADD R0, SB, 138H [data] |
0128 | z .FIXUP D |
0128 | z(8D100002): LDR SB, MT, MOD1 [Texts] |
0129 | z(41D80002): ADD R1, SB, VAR2 |
012A | a .FIXUP D |
012A | a(8D000002): LDR SB, MT, MOD0 [ORS] |
012B | a(42D80130): ADD R2, SB, 130H [data] |
012C | b .FIXUP P |
012C | b(F7113011): BL MOD1 [Texts] PROC19 |
| WHILE ~R.eot &c (dch # "$")e DOf |
012D | c .FIXUP D |
012D | c(8D000003): LDR SB, MT, MOD0 [ORS] |
012E | c(90D00138): LDR R0, SB, 138H [data] |
012F | d(E900007B): BNE 123 [01ABH] |
0130 | e .FIXUP D |
0130 | e(8D000003): LDR SB, MT, MOD0 [ORS] |
0131 | e(90D00130): LDR R0, SB, 130H [data] |
0132 | e(40090024): SUB R0, R0, 24H |
0133 | f(E1000077): BEQ 119 [01ABH] |
| WHILE ~R.eot &g (hch <= " ")i DOj Texts.Read(R,k ch)l ENDm ; (*skip*) |
0134 | g .FIXUP D |
0134 | g(8D000004): LDR SB, MT, MOD0 [ORS] |
0135 | g(90D00138): LDR R0, SB, 138H [data] |
0136 | h(E900000C): BNE 12 [0143H] |
0137 | i .FIXUP D |
0137 | i(8D000003): LDR SB, MT, MOD0 [ORS] |
0138 | i(90D00130): LDR R0, SB, 130H [data] |
0139 | i(40090020): SUB R0, R0, 20H |
013A | j(EE000008): BGT 8 [0143H] |
013B | k .FIXUP D |
013B | k(8D000004): LDR SB, MT, MOD0 [ORS] |
013C | k(40D80138): ADD R0, SB, 138H [data] |
013D | k .FIXUP D |
013D | k(8D100002): LDR SB, MT, MOD1 [Texts] |
013E | k(41D80002): ADD R1, SB, VAR2 |
013F | l .FIXUP D |
013F | l(8D000002): LDR SB, MT, MOD0 [ORS] |
0140 | l(42D80130): ADD R2, SB, 130H [data] |
0141 | m .FIXUP P |
0141 | m(F7113015): BL MOD1 [Texts] PROC19 |
0142 | m(E7FFFFF1): B -15 [0134H] |
| IF ("0" <= ch)n & (och <= "9")p THENq m := ORD(ch) -r 30H |
0143 | n(40000030): MOV R0, R0, 30H |
0144 | n .FIXUP D |
0144 | n(8D000005): LDR SB, MT, MOD0 [ORS] |
0145 | n(91D00130): LDR R1, SB, 130H [data] |
0146 | n(00090001): SUB R0, R0, R1 |
0147 | o(EE000009): BGT 9 [0151H] |
0148 | p .FIXUP D |
0148 | p(8D000004): LDR SB, MT, MOD0 [ORS] |
0149 | p(90D00130): LDR R0, SB, 130H [data] |
014A | p(40090039): SUB R0, R0, 39H |
014B | q(EE000005): BGT 5 [0151H] |
014C | r .FIXUP D |
014C | r(8D000004): LDR SB, MT, MOD0 [ORS] |
014D | r(90D00130): LDR R0, SB, 130H [data] |
| ELSIFs (t"A" <= ch)u & (vch <= "F")w THENx m := ORD(ch) -y 37H |
014E | s(40090030): SUB R0, R0, 30H |
014F | s(A0E00008): STR R0, SP, 8H |
0150 | t(E7000014): B 20 [0165H] |
0151 | u(40000041): MOV R0, R0, 41H |
0152 | u .FIXUP D |
0152 | u(8D000006): LDR SB, MT, MOD0 [ORS] |
0153 | u(91D00130): LDR R1, SB, 130H [data] |
0154 | u(00090001): SUB R0, R0, R1 |
0155 | v(EE000009): BGT 9 [015FH] |
0156 | w .FIXUP D |
0156 | w(8D000004): LDR SB, MT, MOD0 [ORS] |
0157 | w(90D00130): LDR R0, SB, 130H [data] |
0158 | w(40090046): SUB R0, R0, 46H |
0159 | x(EE000005): BGT 5 [015FH] |
015A | y .FIXUP D |
015A | y(8D000004): LDR SB, MT, MOD0 [ORS] |
015B | y(90D00130): LDR R0, SB, 130H [data] |
| ELSEz ma := 0;b Mark("hexdig expected")c |
015C | z(40090037): SUB R0, R0, 37H |
015D | z(A0E00008): STR R0, SP, 8H |
015E | a(E7000006): B 6 [0165H] |
015F | b(40000000): MOV R0, R0, 0H |
0160 | b(A0E00008): STR R0, SP, 8H |
0161 | c .FIXUP D |
0161 | c(8D000007): LDR SB, MT, MOD0 [ORS] |
0162 | c(40D803F8): ADD R0, SB, 3F8H ["hexdig expected"] |
0163 | c(41000010): MOV R1, R0, 10H |
| ENDd ; |
0164 | d(F7FFFEB6): BL -330 [001BH] |
| Texts.Read(R,e ch)f;g |
0165 | e .FIXUP D |
0165 | e(8D000004): LDR SB, MT, MOD0 [ORS] |
0166 | e(40D80138): ADD R0, SB, 138H [data] |
0167 | e .FIXUP D |
0167 | e(8D100002): LDR SB, MT, MOD1 [Texts] |
0168 | e(41D80002): ADD R1, SB, VAR2 |
0169 | f .FIXUP D |
0169 | f(8D000002): LDR SB, MT, MOD0 [ORS] |
016A | f(42D80130): ADD R2, SB, 130H [data] |
016B | g .FIXUP P |
016B | g(F711302A): BL MOD1 [Texts] PROC19 |
| IF ("0" <= ch)h & (ich <= "9")j THENk n := ORD(ch) -l 30H |
016C | h(40000030): MOV R0, R0, 30H |
016D | h .FIXUP D |
016D | h(8D000004): LDR SB, MT, MOD0 [ORS] |
016E | h(91D00130): LDR R1, SB, 130H [data] |
016F | h(00090001): SUB R0, R0, R1 |
0170 | i(EE000009): BGT 9 [017AH] |
0171 | j .FIXUP D |
0171 | j(8D000004): LDR SB, MT, MOD0 [ORS] |
0172 | j(90D00130): LDR R0, SB, 130H [data] |
0173 | j(40090039): SUB R0, R0, 39H |
0174 | k(EE000005): BGT 5 [017AH] |
0175 | l .FIXUP D |
0175 | l(8D000004): LDR SB, MT, MOD0 [ORS] |
0176 | l(90D00130): LDR R0, SB, 130H [data] |
| ELSIFm (n"A" <= ch)o & (pch <= "F")q THENr n := ORD(ch) -s 37H |
0177 | m(40090030): SUB R0, R0, 30H |
0178 | m(A0E0000C): STR R0, SP, CH |
0179 | n(E7000014): B 20 [018EH] |
017A | o(40000041): MOV R0, R0, 41H |
017B | o .FIXUP D |
017B | o(8D000006): LDR SB, MT, MOD0 [ORS] |
017C | o(91D00130): LDR R1, SB, 130H [data] |
017D | o(00090001): SUB R0, R0, R1 |
017E | p(EE000009): BGT 9 [0188H] |
017F | q .FIXUP D |
017F | q(8D000004): LDR SB, MT, MOD0 [ORS] |
0180 | q(90D00130): LDR R0, SB, 130H [data] |
0181 | q(40090046): SUB R0, R0, 46H |
0182 | r(EE000005): BGT 5 [0188H] |
0183 | s .FIXUP D |
0183 | s(8D000004): LDR SB, MT, MOD0 [ORS] |
0184 | s(90D00130): LDR R0, SB, 130H [data] |
| ELSEt nu := 0;v Mark("hexdig expected")w |
0185 | t(40090037): SUB R0, R0, 37H |
0186 | t(A0E0000C): STR R0, SP, CH |
0187 | u(E7000006): B 6 [018EH] |
0188 | v(40000000): MOV R0, R0, 0H |
0189 | v(A0E0000C): STR R0, SP, CH |
018A | w .FIXUP D |
018A | w(8D000007): LDR SB, MT, MOD0 [ORS] |
018B | w(40D80408): ADD R0, SB, 408H ["hexdig expected"] |
018C | w(41000010): MOV R1, R0, 10H |
| ENDx ; |
018D | x(F7FFFE8D): BL -371 [001BH] |
| IF i < stringBufSize THENy str[i]z := CHR(m*10H +a n)b;c INC(i) ELSEd Marke("string too long")f ENDg ; |
018E | y(80E00004): LDR R0, SP, 4H |
018F | y(40090100): SUB R0, R0, 100H |
0190 | y(ED00000E): BGE 14 [019FH] |
0191 | z(80E00004): LDR R0, SP, 4H |
0192 | z(41090100): SUB R1, R0, 100H |
0193 | z(DA0F8E1C): BLCC MT [trap=1, pos=3982] |
0194 | z .FIXUP D |
0194 | z(8D00000A): LDR SB, MT, MOD0 [ORS] |
0195 | z(00D80000): ADD R0, SB, R0 [global array] |
0196 | a(81E00008): LDR R1, SP, 8H |
0197 | a(41110004): LSL R1, R1, 4H |
0198 | b(82E0000C): LDR R2, SP, CH |
0199 | b(01180002): ADD R1, R1, R2 |
019A | c(B100002C): STR R1, R0, 2CH |
019B | d(80E00004): LDR R0, SP, 4H |
019C | d(40080001): ADD R0, R0, 1H |
019D | d(A0E00004): STR R0, SP, 4H |
019E | e(E7000004): B 4 [01A3H] |
019F | f .FIXUP D |
019F | f(8D00000B): LDR SB, MT, MOD0 [ORS] |
01A0 | f(40D80418): ADD R0, SB, 418H ["string too long"] |
01A1 | f(41000010): MOV R1, R0, 10H |
01A2 | g(F7FFFE78): BL -392 [001BH] |
| Texts.Read(R,h ch)i |
01A3 | h .FIXUP D |
01A3 | h(8D000004): LDR SB, MT, MOD0 [ORS] |
01A4 | h(40D80138): ADD R0, SB, 138H [data] |
01A5 | h .FIXUP D |
01A5 | h(8D100002): LDR SB, MT, MOD1 [Texts] |
01A6 | h(41D80002): ADD R1, SB, VAR2 |
01A7 | i .FIXUP D |
01A7 | i(8D000002): LDR SB, MT, MOD0 [ORS] |
01A8 | i(42D80130): ADD R2, SB, 130H [data] |
| ENDj ; |
01A9 | j .FIXUP P |
01A9 | j(F711303E): BL MOD1 [Texts] PROC19 |
01AA | j(E7FFFF82): B -126 [012DH] |
| Texts.Read(R,k ch)l;m slen := i (*no 0X appended!*) |
01AB | k .FIXUP D |
01AB | k(8D000004): LDR SB, MT, MOD0 [ORS] |
01AC | k(40D80138): ADD R0, SB, 138H [data] |
01AD | k .FIXUP D |
01AD | k(8D100002): LDR SB, MT, MOD1 [Texts] |
01AE | k(41D80002): ADD R1, SB, VAR2 |
01AF | l .FIXUP D |
01AF | l(8D000002): LDR SB, MT, MOD0 [ORS] |
01B0 | l(42D80130): ADD R2, SB, 130H [data] |
01B1 | m .FIXUP P |
01B1 | m(F7113008): BL MOD1 [Texts] PROC19 |
| ENDn HexString; |
01B2 | n(80E00004): LDR R0, SP, 4H |
01B3 | n .FIXUP D |
01B3 | n(8D000004): LDR SB, MT, MOD0 [ORS] |
01B4 | n(A0D00004): STR R0, SB, 4H [data] |
01B5 | n(8FE00000): LDR LNK, SP, 0H |
01B6 | n(4EE80010): ADD SP, SP, 10H |
01B7 | n(C700000F): B LNK |
| |
| PROCEDURE Ten(e: LONGINT): REAL; |
| VAR x, t: REAL; |
| BEGINo x := 1.0;p t := 10.0;q |
01B8 | o(4EE90010): SUB SP, SP, 10H |
01B9 | o(AFE00000): STR LNK, SP, 0H |
01BA | o(A0E00004): STR R0, SP, 4H |
01BB | p(60003F80): MOV' R0, R0, 3F80H |
01BC | p(A0E00008): STR R0, SP, 8H |
01BD | q(60004120): MOV' R0, R0, 4120H |
01BE | q(A0E0000C): STR R0, SP, CH |
| WHILE e > 0 DOr |
01BF | r(80E00004): LDR R0, SP, 4H |
01C0 | r(40090000): SUB R0, R0, 0H |
01C1 | r(E600000F): BLE 15 [01D1H] |
| IF ODD(e) THENs x := t * x ENDt ; |
01C2 | s(80E00004): LDR R0, SP, 4H |
01C3 | s(40040001): AND R0, R0, 1H |
01C4 | s(E1000004): BEQ 4 [01C9H] |
01C5 | t(80E0000C): LDR R0, SP, CH |
01C6 | t(81E00008): LDR R1, SP, 8H |
01C7 | t(000E0001): FML R0, R0, R1 |
01C8 | t(A0E00008): STR R0, SP, 8H |
| t := t * t;u e := e DIV 2 |
01C9 | u(80E0000C): LDR R0, SP, CH |
01CA | u(81E0000C): LDR R1, SP, CH |
01CB | u(000E0001): FML R0, R0, R1 |
01CC | u(A0E0000C): STR R0, SP, CH |
| ENDv ; |
01CD | v(80E00004): LDR R0, SP, 4H |
01CE | v(40020001): ASR R0, R0, 1H |
01CF | v(A0E00004): STR R0, SP, 4H |
01D0 | v(E7FFFFEE): B -18 [01BFH] |
| RETURN x |
| ENDw Ten; |
01D1 | w(80E00008): LDR R0, SP, 8H |
01D2 | w(8FE00000): LDR LNK, SP, 0H |
01D3 | w(4EE80010): ADD SP, SP, 10H |
01D4 | w(C700000F): B LNK |
| |
| PROCEDURE Number(VAR sym: INTEGER); |
| CONST max = 2147483647 (*2^31 - 1*); |
| VAR i, k, e, n, s, h: LONGINT; x: REAL; |
| d: ARRAY 16 OF INTEGER; |
| negE: BOOLEAN; |
| BEGINx ival := 0;y i := 0;z n := 0;a k := 0;b |
01D5 | x(4EE90068): SUB SP, SP, 68H |
01D6 | x(AFE00000): STR LNK, SP, 0H |
01D7 | x(A0E00004): STR R0, SP, 4H |
01D8 | y(40000000): MOV R0, R0, 0H |
01D9 | y .FIXUP D |
01D9 | y(8D000026): LDR SB, MT, MOD0 [ORS] |
01DA | y(A0D00000): STR R0, SB, 0H [data] |
01DB | z(40000000): MOV R0, R0, 0H |
01DC | z(A0E00008): STR R0, SP, 8H |
01DD | a(40000000): MOV R0, R0, 0H |
01DE | a(A0E00014): STR R0, SP, 14H |
01DF | b(40000000): MOV R0, R0, 0H |
01E0 | b(A0E0000C): STR R0, SP, CH |
| REPEAT |
| IF n < 16 THENc d[n]d := ORD(ch)-e30H;f INC(n) ELSEg Markh("too many digits")i;j n := 0 ENDk ; |
01E1 | c(80E00014): LDR R0, SP, 14H |
01E2 | c(40090010): SUB R0, R0, 10H |
01E3 | c(ED00000D): BGE 13 [01F1H] |
01E4 | d(80E00014): LDR R0, SP, 14H |
01E5 | d(41090010): SUB R1, R0, 10H |
01E6 | d(DA12021C): BLCC MT [trap=1, pos=4610] |
01E7 | d(40010002): LSL R0, R0, 2H |
01E8 | d(00E80000): ADD R0, SP, R0 |
01E9 | e .FIXUP D |
01E9 | e(8D000010): LDR SB, MT, MOD0 [ORS] |
01EA | e(91D00130): LDR R1, SB, 130H [data] |
01EB | f(41190030): SUB R1, R1, 30H |
01EC | f(A1000024): STR R1, R0, 24H |
01ED | g(80E00014): LDR R0, SP, 14H |
01EE | g(40080001): ADD R0, R0, 1H |
01EF | g(A0E00014): STR R0, SP, 14H |
01F0 | h(E7000006): B 6 [01F7H] |
01F1 | i .FIXUP D |
01F1 | i(8D000008): LDR SB, MT, MOD0 [ORS] |
01F2 | i(40D80428): ADD R0, SB, 428H ["too many digits"] |
01F3 | i(41000010): MOV R1, R0, 10H |
01F4 | j(F7FFFE26): BL -474 [001BH] |
01F5 | k(40000000): MOV R0, R0, 0H |
01F6 | k(A0E00014): STR R0, SP, 14H |
| Texts.Read(R,l ch)m |
01F7 | l .FIXUP D |
01F7 | l(8D000006): LDR SB, MT, MOD0 [ORS] |
01F8 | l(40D80138): ADD R0, SB, 138H [data] |
01F9 | l .FIXUP D |
01F9 | l(8D100002): LDR SB, MT, MOD1 [Texts] |
01FA | l(41D80002): ADD R1, SB, VAR2 |
01FB | m .FIXUP D |
01FB | m(8D000002): LDR SB, MT, MOD0 [ORS] |
01FC | m(42D80130): ADD R2, SB, 130H [data] |
| UNTILn (ch < "0")o OR (pch > "9")q & (rch < "A")s OR (tch > "F")u;v |
01FD | n .FIXUP P |
01FD | n(F711304C): BL MOD1 [Texts] PROC19 |
01FE | o .FIXUP D |
01FE | o(8D000003): LDR SB, MT, MOD0 [ORS] |
01FF | o(90D00130): LDR R0, SB, 130H [data] |
0200 | o(40090030): SUB R0, R0, 30H |
0201 | p(E500000C): BLT 12 [020EH] |
0202 | q .FIXUP D |
0202 | q(8D000004): LDR SB, MT, MOD0 [ORS] |
0203 | q(90D00130): LDR R0, SB, 130H [data] |
0204 | q(40090039): SUB R0, R0, 39H |
0205 | r(E6000004): BLE 4 [020AH] |
0206 | s .FIXUP D |
0206 | s(8D000004): LDR SB, MT, MOD0 [ORS] |
0207 | s(90D00130): LDR R0, SB, 130H [data] |
0208 | s(40090041): SUB R0, R0, 41H |
0209 | t(E5000004): BLT 4 [020EH] |
020A | u .FIXUP D |
020A | u(8D000004): LDR SB, MT, MOD0 [ORS] |
020B | u(90D00130): LDR R0, SB, 130H [data] |
020C | u(40090046): SUB R0, R0, 46H |
020D | v(E6FFFFD3): BLE -45 [01E1H] |
| IF (ch = "H")w OR (xch = "R")y OR (zch = "X")a THENb (*hex*) |
020E | w .FIXUP D |
020E | w(8D000004): LDR SB, MT, MOD0 [ORS] |
020F | w(90D00130): LDR R0, SB, 130H [data] |
0210 | w(40090048): SUB R0, R0, 48H |
0211 | x(E1000008): BEQ 8 [021AH] |
0212 | y .FIXUP D |
0212 | y(8D000004): LDR SB, MT, MOD0 [ORS] |
0213 | y(90D00130): LDR R0, SB, 130H [data] |
0214 | y(40090052): SUB R0, R0, 52H |
0215 | z(E1000004): BEQ 4 [021AH] |
0216 | a .FIXUP D |
0216 | a(8D000004): LDR SB, MT, MOD0 [ORS] |
0217 | a(90D00130): LDR R0, SB, 130H [data] |
0218 | a(40090058): SUB R0, R0, 58H |
0219 | b(E9000048): BNE 72 [0262H] |
| REPEAT h := d[i]c;d |
021A | c(80E00008): LDR R0, SP, 8H |
021B | c(41090010): SUB R1, R0, 10H |
021C | c(DA12EE1C): BLCC MT [trap=1, pos=4846] |
021D | c(40010002): LSL R0, R0, 2H |
021E | c(00E80000): ADD R0, SP, R0 |
021F | d(80000024): LDR R0, R0, 24H |
0220 | d(A0E0001C): STR R0, SP, 1CH |
| IF h >= 10 THENe h := h-7 ENDf ; |
0221 | e(80E0001C): LDR R0, SP, 1CH |
0222 | e(4009000A): SUB R0, R0, AH |
0223 | e(E5000003): BLT 3 [0227H] |
0224 | f(80E0001C): LDR R0, SP, 1CH |
0225 | f(40090007): SUB R0, R0, 7H |
0226 | f(A0E0001C): STR R0, SP, 1CH |
| k := k*10H +g h;h INC(i) (*no overflow check*) |
0227 | g(80E0000C): LDR R0, SP, CH |
0228 | g(40010004): LSL R0, R0, 4H |
0229 | h(81E0001C): LDR R1, SP, 1CH |
022A | h(00080001): ADD R0, R0, R1 |
022B | h(A0E0000C): STR R0, SP, CH |
| UNTILi i = n;j |
022C | i(80E00008): LDR R0, SP, 8H |
022D | i(40080001): ADD R0, R0, 1H |
022E | i(A0E00008): STR R0, SP, 8H |
022F | j(80E00008): LDR R0, SP, 8H |
0230 | j(81E00014): LDR R1, SP, 14H |
0231 | j(00090001): SUB R0, R0, R1 |
0232 | j(E9FFFFE7): BNE -25 [021AH] |
| IF ch = "X" THENk sym := char;l |
0233 | k .FIXUP D |
0233 | k(8D00001D): LDR SB, MT, MOD0 [ORS] |
0234 | k(90D00130): LDR R0, SB, 130H [data] |
0235 | k(40090058): SUB R0, R0, 58H |
0236 | k(E9000012): BNE 18 [0249H] |
0237 | l(40000014): MOV R0, R0, 14H |
0238 | l(81E00004): LDR R1, SP, 4H |
0239 | l(A0100000): STR R0, R1, 0H |
| IF k < 100H THENm ival := k ELSEn Marko("illegal value")p;q ival := 0 ENDr |
023A | m(80E0000C): LDR R0, SP, CH |
023B | m(40090100): SUB R0, R0, 100H |
023C | m(ED000004): BGE 4 [0241H] |
023D | n(80E0000C): LDR R0, SP, CH |
023E | n .FIXUP D |
023E | n(8D00000B): LDR SB, MT, MOD0 [ORS] |
023F | n(A0D00000): STR R0, SB, 0H [data] |
0240 | o(E7000007): B 7 [0248H] |
0241 | p .FIXUP D |
0241 | p(8D000003): LDR SB, MT, MOD0 [ORS] |
0242 | p(40D80438): ADD R0, SB, 438H ["illegal value"] |
0243 | p(4100000E): MOV R1, R0, EH |
0244 | q(F7FFFDD6): BL -554 [001BH] |
0245 | r(40000000): MOV R0, R0, 0H |
0246 | r .FIXUP D |
0246 | r(8D000005): LDR SB, MT, MOD0 [ORS] |
0247 | r(A0D00000): STR R0, SB, 0H [data] |
| ELSIF chs = "R" THENt sym := real;u rval := SYSTEM.VAL(REAL, k) |
0248 | s(E7000011): B 17 [025AH] |
0249 | t .FIXUP D |
0249 | t(8D000003): LDR SB, MT, MOD0 [ORS] |
024A | t(90D00130): LDR R0, SB, 130H [data] |
024B | t(40090052): SUB R0, R0, 52H |
024C | t(E9000007): BNE 7 [0254H] |
024D | u(40000016): MOV R0, R0, 16H |
024E | u(81E00004): LDR R1, SP, 4H |
024F | u(A0100000): STR R0, R1, 0H |
| ELSEv symw := int;x ival := k |
0250 | v(80E0000C): LDR R0, SP, CH |
0251 | v .FIXUP D |
0251 | v(8D000008): LDR SB, MT, MOD0 [ORS] |
0252 | v(A0D00008): STR R0, SB, 8H [data] |
0253 | w(E7000006): B 6 [025AH] |
0254 | x(40000015): MOV R0, R0, 15H |
0255 | x(81E00004): LDR R1, SP, 4H |
0256 | x(A0100000): STR R0, R1, 0H |
| ENDy ; |
0257 | y(80E0000C): LDR R0, SP, CH |
0258 | y .FIXUP D |
0258 | y(8D000007): LDR SB, MT, MOD0 [ORS] |
0259 | y(A0D00000): STR R0, SB, 0H [data] |
| Texts.Read(R,z ch)a |
025A | z .FIXUP D |
025A | z(8D000002): LDR SB, MT, MOD0 [ORS] |
025B | z(40D80138): ADD R0, SB, 138H [data] |
025C | z .FIXUP D |
025C | z(8D100002): LDR SB, MT, MOD1 [Texts] |
025D | z(41D80002): ADD R1, SB, VAR2 |
025E | a .FIXUP D |
025E | a(8D000002): LDR SB, MT, MOD0 [ORS] |
025F | a(42D80130): ADD R2, SB, 130H [data] |
| ELSIFb chc = "." THENd |
0260 | b .FIXUP P |
0260 | b(F7113063): BL MOD1 [Texts] PROC19 |
0261 | c(E700013A): B 314 [039CH] |
0262 | d .FIXUP D |
0262 | d(8D000004): LDR SB, MT, MOD0 [ORS] |
0263 | d(90D00130): LDR R0, SB, 130H [data] |
0264 | d(4009002E): SUB R0, R0, 2EH |
0265 | d(E90000FE): BNE 254 [0364H] |
| Texts.Read(R,e ch)f;g |
0266 | e .FIXUP D |
0266 | e(8D000004): LDR SB, MT, MOD0 [ORS] |
0267 | e(40D80138): ADD R0, SB, 138H [data] |
0268 | e .FIXUP D |
0268 | e(8D100002): LDR SB, MT, MOD1 [Texts] |
0269 | e(41D80002): ADD R1, SB, VAR2 |
026A | f .FIXUP D |
026A | f(8D000002): LDR SB, MT, MOD0 [ORS] |
026B | f(42D80130): ADD R2, SB, 130H [data] |
026C | g .FIXUP P |
026C | g(F711300C): BL MOD1 [Texts] PROC19 |
| IF ch = "." THENh (*double dot*) ch := 7FX;i (*decimal integer*) |
026D | h .FIXUP D |
026D | h(8D000003): LDR SB, MT, MOD0 [ORS] |
026E | h(90D00130): LDR R0, SB, 130H [data] |
026F | h(4009002E): SUB R0, R0, 2EH |
0270 | h(E900003C): BNE 60 [02ADH] |
0271 | i(4000007F): MOV R0, R0, 7FH |
0272 | i .FIXUP D |
0272 | i(8D000005): LDR SB, MT, MOD0 [ORS] |
0273 | i(B0D00130): STR R0, SB, 130H [data] |
| REPEAT |
| IF d[i]j < 10 THENk |
0274 | j(80E00008): LDR R0, SP, 8H |
0275 | j(41090010): SUB R1, R0, 10H |
0276 | j(DA14EF1C): BLCC MT [trap=1, pos=5359] |
0277 | j(40010002): LSL R0, R0, 2H |
0278 | j(00E80000): ADD R0, SP, R0 |
0279 | k(80000024): LDR R0, R0, 24H |
027A | k(4009000A): SUB R0, R0, AH |
027B | k(ED00001F): BGE 31 [029BH] |
| IF k <= (max-d[i]l)m DIV 10 THENn k := k *10 +o d[i]p ELSEq Markr("too large")s;t k := 0 ENDu |
027C | l(80E00008): LDR R0, SP, 8H |
027D | l(41090010): SUB R1, R0, 10H |
027E | l(DA15171C): BLCC MT [trap=1, pos=5399] |
027F | l(40010002): LSL R0, R0, 2H |
0280 | l(00E80000): ADD R0, SP, R0 |
0281 | m(61007FFF): MOV' R1, R0, 7FFFH |
0282 | m(4116FFFF): IOR R1, R1, FFFFFFFFH |
0283 | m(80000024): LDR R0, R0, 24H |
0284 | m(00190000): SUB R0, R1, R0 |
0285 | n(400B000A): DIV R0, R0, AH |
0286 | n(81E0000C): LDR R1, SP, CH |
0287 | n(01190000): SUB R1, R1, R0 |
0288 | n(EE00000B): BGT 11 [0294H] |
0289 | o(80E0000C): LDR R0, SP, CH |
028A | o(400A000A): MUL R0, R0, AH |
028B | p(81E00008): LDR R1, SP, 8H |
028C | p(42190010): SUB R2, R1, 10H |
028D | p(DA15361C): BLCC MT [trap=1, pos=5430] |
028E | p(41110002): LSL R1, R1, 2H |
028F | p(01E80001): ADD R1, SP, R1 |
0290 | q(81100024): LDR R1, R1, 24H |
0291 | q(00080001): ADD R0, R0, R1 |
0292 | q(A0E0000C): STR R0, SP, CH |
0293 | r(E7000006): B 6 [029AH] |
0294 | s .FIXUP D |
0294 | s(8D000022): LDR SB, MT, MOD0 [ORS] |
0295 | s(40D80448): ADD R0, SB, 448H ["too large"] |
0296 | s(4100000A): MOV R1, R0, AH |
0297 | t(F7FFFD83): BL -637 [001BH] |
0298 | u(40000000): MOV R0, R0, 0H |
0299 | u(A0E0000C): STR R0, SP, CH |
| ELSE Markv("bad integer")w |
029A | v(E7000004): B 4 [029FH] |
029B | w .FIXUP D |
029B | w(8D000007): LDR SB, MT, MOD0 [ORS] |
029C | w(40D80454): ADD R0, SB, 454H ["bad integer"] |
029D | w(4100000C): MOV R1, R0, CH |
| ENDx ; |
029E | x(F7FFFD7C): BL -644 [001BH] |
| INC(i) |
| UNTILy i = n;z |
029F | y(80E00008): LDR R0, SP, 8H |
02A0 | y(40080001): ADD R0, R0, 1H |
02A1 | y(A0E00008): STR R0, SP, 8H |
02A2 | z(80E00008): LDR R0, SP, 8H |
02A3 | z(81E00014): LDR R1, SP, 14H |
02A4 | z(00090001): SUB R0, R0, R1 |
02A5 | z(E9FFFFCE): BNE -50 [0274H] |
| sym := int;a ival := k |
02A6 | a(40000015): MOV R0, R0, 15H |
02A7 | a(81E00004): LDR R1, SP, 4H |
02A8 | a(A0100000): STR R0, R1, 0H |
| ELSEb (*real number*) xc := 0.0;d e := 0;e |
02A9 | b(80E0000C): LDR R0, SP, CH |
02AA | b .FIXUP D |
02AA | b(8D00000F): LDR SB, MT, MOD0 [ORS] |
02AB | b(A0D00000): STR R0, SB, 0H [data] |
02AC | c(E70000B6): B 182 [0363H] |
02AD | d(40000000): MOV R0, R0, 0H |
02AE | d(A0E00020): STR R0, SP, 20H |
02AF | e(40000000): MOV R0, R0, 0H |
02B0 | e(A0E00010): STR R0, SP, 10H |
| REPEAT (*integer part*) x := x * 10.0 +f FLT(d[i]g);h INC(i) UNTILi i = n;j |
02B1 | f(80E00020): LDR R0, SP, 20H |
02B2 | f(61004120): MOV' R1, R0, 4120H |
02B3 | f(000E0001): FML R0, R0, R1 |
02B4 | g(81E00008): LDR R1, SP, 8H |
02B5 | g(42190010): SUB R2, R1, 10H |
02B6 | g(DA16371C): BLCC MT [trap=1, pos=5687] |
02B7 | g(41110002): LSL R1, R1, 2H |
02B8 | g(01E80001): ADD R1, SP, R1 |
02B9 | h(81100024): LDR R1, R1, 24H |
02BA | h(62004B00): MOV' R2, R0, 4B00H |
02BB | h(211C0002): FAD' R1, R1, R2 |
02BC | h(000C0001): FAD R0, R0, R1 |
02BD | h(A0E00020): STR R0, SP, 20H |
02BE | i(80E00008): LDR R0, SP, 8H |
02BF | i(40080001): ADD R0, R0, 1H |
02C0 | i(A0E00008): STR R0, SP, 8H |
02C1 | j(80E00008): LDR R0, SP, 8H |
02C2 | j(81E00014): LDR R1, SP, 14H |
02C3 | j(00090001): SUB R0, R0, R1 |
02C4 | j(E9FFFFEC): BNE -20 [02B1H] |
| WHILE (ch >= "0")k & (lch <= "9")m DOn (*fraction*) |
02C5 | k .FIXUP D |
02C5 | k(8D00001B): LDR SB, MT, MOD0 [ORS] |
02C6 | k(90D00130): LDR R0, SB, 130H [data] |
02C7 | k(40090030): SUB R0, R0, 30H |
02C8 | l(E5000018): BLT 24 [02E1H] |
02C9 | m .FIXUP D |
02C9 | m(8D000004): LDR SB, MT, MOD0 [ORS] |
02CA | m(90D00130): LDR R0, SB, 130H [data] |
02CB | m(40090039): SUB R0, R0, 39H |
02CC | n(EE000014): BGT 20 [02E1H] |
| x := x * 10.0 +o FLT(ORD(ch) -p 30H)q;r DEC(e);s Texts.Read(R,t ch)u |
02CD | o(80E00020): LDR R0, SP, 20H |
02CE | o(61004120): MOV' R1, R0, 4120H |
02CF | o(000E0001): FML R0, R0, R1 |
02D0 | p .FIXUP D |
02D0 | p(8D000007): LDR SB, MT, MOD0 [ORS] |
02D1 | p(91D00130): LDR R1, SB, 130H [data] |
02D2 | q(41190030): SUB R1, R1, 30H |
02D3 | r(62004B00): MOV' R2, R0, 4B00H |
02D4 | r(211C0002): FAD' R1, R1, R2 |
02D5 | r(000C0001): FAD R0, R0, R1 |
02D6 | r(A0E00020): STR R0, SP, 20H |
02D7 | s(80E00010): LDR R0, SP, 10H |
02D8 | s(40090001): SUB R0, R0, 1H |
02D9 | s(A0E00010): STR R0, SP, 10H |
02DA | t(40D80138): ADD R0, SB, 138H |
02DB | t .FIXUP D |
02DB | t(8D10000B): LDR SB, MT, MOD1 [Texts] |
02DC | t(41D80002): ADD R1, SB, VAR2 |
02DD | u .FIXUP D |
02DD | u(8D000002): LDR SB, MT, MOD0 [ORS] |
02DE | u(42D80130): ADD R2, SB, 130H [data] |
| ENDv ; |
02DF | v .FIXUP P |
02DF | v(F7113073): BL MOD1 [Texts] PROC19 |
02E0 | v(E7FFFFE4): B -28 [02C5H] |
| IF (ch = "E")w OR (xch = "D")y THENz (*scale factor*) |
02E1 | w .FIXUP D |
02E1 | w(8D000004): LDR SB, MT, MOD0 [ORS] |
02E2 | w(90D00130): LDR R0, SB, 130H [data] |
02E3 | w(40090045): SUB R0, R0, 45H |
02E4 | x(E1000004): BEQ 4 [02E9H] |
02E5 | y .FIXUP D |
02E5 | y(8D000004): LDR SB, MT, MOD0 [ORS] |
02E6 | y(90D00130): LDR R0, SB, 130H [data] |
02E7 | y(40090044): SUB R0, R0, 44H |
02E8 | z(E9000051): BNE 81 [033AH] |
| Texts.Read(R,a ch)b;c s := 0;d |
02E9 | a .FIXUP D |
02E9 | a(8D000004): LDR SB, MT, MOD0 [ORS] |
02EA | a(40D80138): ADD R0, SB, 138H [data] |
02EB | a .FIXUP D |
02EB | a(8D100002): LDR SB, MT, MOD1 [Texts] |
02EC | a(41D80002): ADD R1, SB, VAR2 |
02ED | b .FIXUP D |
02ED | b(8D000002): LDR SB, MT, MOD0 [ORS] |
02EE | b(42D80130): ADD R2, SB, 130H [data] |
02EF | c .FIXUP P |
02EF | c(F7113010): BL MOD1 [Texts] PROC19 |
02F0 | d(40000000): MOV R0, R0, 0H |
02F1 | d(A0E00018): STR R0, SP, 18H |
| IF ch = "-" THENe negE := TRUE;f Texts.Read(R,g ch)h |
02F2 | e .FIXUP D |
02F2 | e(8D000005): LDR SB, MT, MOD0 [ORS] |
02F3 | e(90D00130): LDR R0, SB, 130H [data] |
02F4 | e(4009002D): SUB R0, R0, 2DH |
02F5 | e(E900000A): BNE 10 [0300H] |
02F6 | f(40000001): MOV R0, R0, 1H |
02F7 | f(B0E00064): STR R0, SP, 64H |
02F8 | g .FIXUP D |
02F8 | g(8D000006): LDR SB, MT, MOD0 [ORS] |
02F9 | g(40D80138): ADD R0, SB, 138H [data] |
02FA | g .FIXUP D |
02FA | g(8D100002): LDR SB, MT, MOD1 [Texts] |
02FB | g(41D80002): ADD R1, SB, VAR2 |
02FC | h .FIXUP D |
02FC | h(8D000002): LDR SB, MT, MOD0 [ORS] |
02FD | h(42D80130): ADD R2, SB, 130H [data] |
| ELSEi negEj := FALSE;k |
02FE | i .FIXUP P |
02FE | i(F711300F): BL MOD1 [Texts] PROC19 |
02FF | j(E700000D): B 13 [030DH] |
0300 | k(40000000): MOV R0, R0, 0H |
0301 | k(B0E00064): STR R0, SP, 64H |
| IF ch = "+" THENl Texts.Read(R,m ch)n ENDo |
0302 | l .FIXUP D |
0302 | l(8D000006): LDR SB, MT, MOD0 [ORS] |
0303 | l(90D00130): LDR R0, SB, 130H [data] |
0304 | l(4009002B): SUB R0, R0, 2BH |
0305 | l(E9000007): BNE 7 [030DH] |
0306 | m .FIXUP D |
0306 | m(8D000004): LDR SB, MT, MOD0 [ORS] |
0307 | m(40D80138): ADD R0, SB, 138H [data] |
0308 | m .FIXUP D |
0308 | m(8D100002): LDR SB, MT, MOD1 [Texts] |
0309 | m(41D80002): ADD R1, SB, VAR2 |
030A | n .FIXUP D |
030A | n(8D000002): LDR SB, MT, MOD0 [ORS] |
030B | n(42D80130): ADD R2, SB, 130H [data] |
030C | o .FIXUP P |
030C | o(F711300E): BL MOD1 [Texts] PROC19 |
| END ; |
| IF (ch >= "0")p & (qch <= "9")r THENs |
030D | p .FIXUP D |
030D | p(8D000003): LDR SB, MT, MOD0 [ORS] |
030E | p(90D00130): LDR R0, SB, 130H [data] |
030F | p(40090030): SUB R0, R0, 30H |
0310 | q(E5000025): BLT 37 [0336H] |
0311 | r .FIXUP D |
0311 | r(8D000004): LDR SB, MT, MOD0 [ORS] |
0312 | r(90D00130): LDR R0, SB, 130H [data] |
0313 | r(40090039): SUB R0, R0, 39H |
0314 | s(EE000021): BGT 33 [0336H] |
| REPEAT s := s*10 +t ORD(ch)-u30H;v Texts.Read(R,w ch)x |
0315 | t(80E00018): LDR R0, SP, 18H |
0316 | t(400A000A): MUL R0, R0, AH |
0317 | u .FIXUP D |
0317 | u(8D000006): LDR SB, MT, MOD0 [ORS] |
0318 | u(91D00130): LDR R1, SB, 130H [data] |
0319 | u(00080001): ADD R0, R0, R1 |
031A | v(40090030): SUB R0, R0, 30H |
031B | v(A0E00018): STR R0, SP, 18H |
031C | w(40D80138): ADD R0, SB, 138H |
031D | w .FIXUP D |
031D | w(8D100006): LDR SB, MT, MOD1 [Texts] |
031E | w(41D80002): ADD R1, SB, VAR2 |
031F | x .FIXUP D |
031F | x(8D000002): LDR SB, MT, MOD0 [ORS] |
0320 | x(42D80130): ADD R2, SB, 130H [data] |
| UNTILy (ch < "0")z OR (ach >"9")b;c |
0321 | y .FIXUP P |
0321 | y(F7113015): BL MOD1 [Texts] PROC19 |
0322 | z .FIXUP D |
0322 | z(8D000003): LDR SB, MT, MOD0 [ORS] |
0323 | z(90D00130): LDR R0, SB, 130H [data] |
0324 | z(40090030): SUB R0, R0, 30H |
0325 | a(E5000004): BLT 4 [032AH] |
0326 | b .FIXUP D |
0326 | b(8D000004): LDR SB, MT, MOD0 [ORS] |
0327 | b(90D00130): LDR R0, SB, 130H [data] |
0328 | b(40090039): SUB R0, R0, 39H |
0329 | c(E6FFFFEB): BLE -21 [0315H] |
| IF negE THENd e := e-s ELSEe ef := e+s ENDg |
032A | d(90E00064): LDR R0, SP, 64H |
032B | d(E1000005): BEQ 5 [0331H] |
032C | e(80E00010): LDR R0, SP, 10H |
032D | e(81E00018): LDR R1, SP, 18H |
032E | e(00090001): SUB R0, R0, R1 |
032F | e(A0E00010): STR R0, SP, 10H |
0330 | f(E7000004): B 4 [0335H] |
0331 | g(80E00010): LDR R0, SP, 10H |
0332 | g(81E00018): LDR R1, SP, 18H |
0333 | g(00080001): ADD R0, R0, R1 |
0334 | g(A0E00010): STR R0, SP, 10H |
| ELSE Markh("digit?")i |
0335 | h(E7000004): B 4 [033AH] |
0336 | i .FIXUP D |
0336 | i(8D000010): LDR SB, MT, MOD0 [ORS] |
0337 | i(40D80460): ADD R0, SB, 460H ["digit?"] |
0338 | i(41000007): MOV R1, R0, 7H |
| ENDj |
0339 | j(F7FFFCE1): BL -799 [001BH] |
| END ; |
| IF e < 0 THENk |
033A | k(80E00010): LDR R0, SP, 10H |
033B | k(40090000): SUB R0, R0, 0H |
033C | k(ED00000E): BGE 14 [034BH] |
| IF e >= -maxExp THENl x := x / Ten(-e)m ELSEn xo := 0.0 ENDp |
033D | l(80E00010): LDR R0, SP, 10H |
033E | l(5009FFDA): SUB R0, R0, FFFFFFDAH |
033F | l(E5000008): BLT 8 [0348H] |
0340 | m(80E00010): LDR R0, SP, 10H |
0341 | m(41000000): MOV R1, R0, 0H |
0342 | m(00190000): SUB R0, R1, R0 |
0343 | n(F7FFFE74): BL -396 [01B8H] |
0344 | n(81E00020): LDR R1, SP, 20H |
0345 | n(001F0000): FDV R0, R1, R0 |
0346 | n(A0E00020): STR R0, SP, 20H |
0347 | o(E7000002): B 2 [034AH] |
0348 | p(40000000): MOV R0, R0, 0H |
0349 | p(A0E00020): STR R0, SP, 20H |
| ELSIF eq > 0 THENr |
034A | q(E7000012): B 18 [035DH] |
034B | r(80E00010): LDR R0, SP, 10H |
034C | r(40090000): SUB R0, R0, 0H |
034D | r(E600000F): BLE 15 [035DH] |
| IF e <= maxExp THENs x := Ten(e)t *u x ELSEv xw := 0.0;x Mark("too large")y ENDz |
034E | s(80E00010): LDR R0, SP, 10H |
034F | s(40090026): SUB R0, R0, 26H |
0350 | s(EE000006): BGT 6 [0357H] |
0351 | t(80E00010): LDR R0, SP, 10H |
0352 | u(F7FFFE65): BL -411 [01B8H] |
0353 | v(81E00020): LDR R1, SP, 20H |
0354 | v(000E0001): FML R0, R0, R1 |
0355 | v(A0E00020): STR R0, SP, 20H |
0356 | w(E7000006): B 6 [035DH] |
0357 | x(40000000): MOV R0, R0, 0H |
0358 | x(A0E00020): STR R0, SP, 20H |
0359 | y .FIXUP D |
0359 | y(8D000023): LDR SB, MT, MOD0 [ORS] |
035A | y(40D80468): ADD R0, SB, 468H ["too large"] |
035B | y(4100000A): MOV R1, R0, AH |
035C | z(F7FFFCBE): BL -834 [001BH] |
| END ; |
| sym := real;a rval := x |
035D | a(40000016): MOV R0, R0, 16H |
035E | a(81E00004): LDR R1, SP, 4H |
035F | a(A0100000): STR R0, R1, 0H |
| ENDb |
0360 | b(80E00020): LDR R0, SP, 20H |
0361 | b .FIXUP D |
0361 | b(8D000008): LDR SB, MT, MOD0 [ORS] |
0362 | b(A0D00008): STR R0, SB, 8H [data] |
| ELSE (*decimal integer*) |
| REPEATc |
0363 | c(E7000038): B 56 [039CH] |
| IF d[i]d < 10 THENe |
0364 | d(80E00008): LDR R0, SP, 8H |
0365 | d(41090010): SUB R1, R0, 10H |
0366 | d(DA1A121C): BLCC MT [trap=1, pos=6674] |
0367 | d(40010002): LSL R0, R0, 2H |
0368 | d(00E80000): ADD R0, SP, R0 |
0369 | e(80000024): LDR R0, R0, 24H |
036A | e(4009000A): SUB R0, R0, AH |
036B | e(ED00001F): BGE 31 [038BH] |
| IF k <= (max-d[i]f)g DIV 10 THENh k := k*10 +i d[i]j ELSEk Markl("too large")m;n k := 0 ENDo |
036C | f(80E00008): LDR R0, SP, 8H |
036D | f(41090010): SUB R1, R0, 10H |
036E | f(DA1A381C): BLCC MT [trap=1, pos=6712] |
036F | f(40010002): LSL R0, R0, 2H |
0370 | f(00E80000): ADD R0, SP, R0 |
0371 | g(61007FFF): MOV' R1, R0, 7FFFH |
0372 | g(4116FFFF): IOR R1, R1, FFFFFFFFH |
0373 | g(80000024): LDR R0, R0, 24H |
0374 | g(00190000): SUB R0, R1, R0 |
0375 | h(400B000A): DIV R0, R0, AH |
0376 | h(81E0000C): LDR R1, SP, CH |
0377 | h(01190000): SUB R1, R1, R0 |
0378 | h(EE00000B): BGT 11 [0384H] |
0379 | i(80E0000C): LDR R0, SP, CH |
037A | i(400A000A): MUL R0, R0, AH |
037B | j(81E00008): LDR R1, SP, 8H |
037C | j(42190010): SUB R2, R1, 10H |
037D | j(DA1A561C): BLCC MT [trap=1, pos=6742] |
037E | j(41110002): LSL R1, R1, 2H |
037F | j(01E80001): ADD R1, SP, R1 |
0380 | k(81100024): LDR R1, R1, 24H |
0381 | k(00080001): ADD R0, R0, R1 |
0382 | k(A0E0000C): STR R0, SP, CH |
0383 | l(E7000006): B 6 [038AH] |
0384 | m .FIXUP D |
0384 | m(8D000023): LDR SB, MT, MOD0 [ORS] |
0385 | m(40D80474): ADD R0, SB, 474H ["too large"] |
0386 | m(4100000A): MOV R1, R0, AH |
0387 | n(F7FFFC93): BL -877 [001BH] |
0388 | o(40000000): MOV R0, R0, 0H |
0389 | o(A0E0000C): STR R0, SP, CH |
| ELSE Markp("bad integer")q |
038A | p(E7000004): B 4 [038FH] |
038B | q .FIXUP D |
038B | q(8D000007): LDR SB, MT, MOD0 [ORS] |
038C | q(40D80480): ADD R0, SB, 480H ["bad integer"] |
038D | q(4100000C): MOV R1, R0, CH |
| ENDr ; |
038E | r(F7FFFC8C): BL -884 [001BH] |
| INC(i) |
| UNTILs i = n;t |
038F | s(80E00008): LDR R0, SP, 8H |
0390 | s(40080001): ADD R0, R0, 1H |
0391 | s(A0E00008): STR R0, SP, 8H |
0392 | t(80E00008): LDR R0, SP, 8H |
0393 | t(81E00014): LDR R1, SP, 14H |
0394 | t(00090001): SUB R0, R0, R1 |
0395 | t(E9FFFFCE): BNE -50 [0364H] |
| sym := int;u ival := k |
0396 | u(40000015): MOV R0, R0, 15H |
0397 | u(81E00004): LDR R1, SP, 4H |
0398 | u(A0100000): STR R0, R1, 0H |
| ENDv |
0399 | v(80E0000C): LDR R0, SP, CH |
039A | v .FIXUP D |
039A | v(8D00000F): LDR SB, MT, MOD0 [ORS] |
039B | v(A0D00000): STR R0, SB, 0H [data] |
| ENDw Number; |
039C | w(8FE00000): LDR LNK, SP, 0H |
039D | w(4EE80068): ADD SP, SP, 68H |
039E | w(C700000F): B LNK |
| |
| PROCEDURE comment; |
| BEGINx Texts.Read(R,y ch)z;a |
039F | x(4EE90004): SUB SP, SP, 4H |
03A0 | x(AFE00000): STR LNK, SP, 0H |
03A1 | y .FIXUP D |
03A1 | y(8D000007): LDR SB, MT, MOD0 [ORS] |
03A2 | y(40D80138): ADD R0, SB, 138H [data] |
03A3 | y .FIXUP D |
03A3 | y(8D100002): LDR SB, MT, MOD1 [Texts] |
03A4 | y(41D80002): ADD R1, SB, VAR2 |
03A5 | z .FIXUP D |
03A5 | z(8D000002): LDR SB, MT, MOD0 [ORS] |
03A6 | z(42D80130): ADD R2, SB, 130H [data] |
03A7 | a .FIXUP P |
03A7 | a(F7113086): BL MOD1 [Texts] PROC19 |
| REPEAT |
| WHILE ~R.eot &b (cch # "*")d DOe |
03A8 | b .FIXUP D |
03A8 | b(8D000003): LDR SB, MT, MOD0 [ORS] |
03A9 | b(90D00138): LDR R0, SB, 138H [data] |
03AA | c(E900001D): BNE 29 [03C8H] |
03AB | d .FIXUP D |
03AB | d(8D000003): LDR SB, MT, MOD0 [ORS] |
03AC | d(90D00130): LDR R0, SB, 130H [data] |
03AD | d(4009002A): SUB R0, R0, 2AH |
03AE | e(E1000019): BEQ 25 [03C8H] |
| IF ch = "(" THENf Texts.Read(R,g ch)h;i |
03AF | f .FIXUP D |
03AF | f(8D000004): LDR SB, MT, MOD0 [ORS] |
03B0 | f(90D00130): LDR R0, SB, 130H [data] |
03B1 | f(40090028): SUB R0, R0, 28H |
03B2 | f(E900000D): BNE 13 [03C0H] |
03B3 | g .FIXUP D |
03B3 | g(8D000004): LDR SB, MT, MOD0 [ORS] |
03B4 | g(40D80138): ADD R0, SB, 138H [data] |
03B5 | g .FIXUP D |
03B5 | g(8D100002): LDR SB, MT, MOD1 [Texts] |
03B6 | g(41D80002): ADD R1, SB, VAR2 |
03B7 | h .FIXUP D |
03B7 | h(8D000002): LDR SB, MT, MOD0 [ORS] |
03B8 | h(42D80130): ADD R2, SB, 130H [data] |
03B9 | i .FIXUP P |
03B9 | i(F7113012): BL MOD1 [Texts] PROC19 |
| IF ch = "*" THENj comment ENDk |
03BA | j .FIXUP D |
03BA | j(8D000003): LDR SB, MT, MOD0 [ORS] |
03BB | j(90D00130): LDR R0, SB, 130H [data] |
03BC | j(4009002A): SUB R0, R0, 2AH |
03BD | j(E9000001): BNE 1 [03BFH] |
03BE | k(F7FFFFE0): BL -32 [039FH] |
| ELSE Textsl.Read(R,m ch)n |
03BF | l(E7000007): B 7 [03C7H] |
03C0 | m .FIXUP D |
03C0 | m(8D000006): LDR SB, MT, MOD0 [ORS] |
03C1 | m(40D80138): ADD R0, SB, 138H [data] |
03C2 | m .FIXUP D |
03C2 | m(8D100002): LDR SB, MT, MOD1 [Texts] |
03C3 | m(41D80002): ADD R1, SB, VAR2 |
03C4 | n .FIXUP D |
03C4 | n(8D000002): LDR SB, MT, MOD0 [ORS] |
03C5 | n(42D80130): ADD R2, SB, 130H [data] |
| ENDo |
03C6 | o .FIXUP P |
03C6 | o(F711300D): BL MOD1 [Texts] PROC19 |
| ENDp ; |
03C7 | p(E7FFFFE0): B -32 [03A8H] |
| WHILE ch = "*" DOq Texts.Read(R,r ch)s ENDt |
03C8 | q .FIXUP D |
03C8 | q(8D000004): LDR SB, MT, MOD0 [ORS] |
03C9 | q(90D00130): LDR R0, SB, 130H [data] |
03CA | q(4009002A): SUB R0, R0, 2AH |
03CB | q(E9000008): BNE 8 [03D4H] |
03CC | r .FIXUP D |
03CC | r(8D000004): LDR SB, MT, MOD0 [ORS] |
03CD | r(40D80138): ADD R0, SB, 138H [data] |
03CE | r .FIXUP D |
03CE | r(8D100002): LDR SB, MT, MOD1 [Texts] |
03CF | r(41D80002): ADD R1, SB, VAR2 |
03D0 | s .FIXUP D |
03D0 | s(8D000002): LDR SB, MT, MOD0 [ORS] |
03D1 | s(42D80130): ADD R2, SB, 130H [data] |
03D2 | t .FIXUP P |
03D2 | t(F711300C): BL MOD1 [Texts] PROC19 |
03D3 | t(E7FFFFF4): B -12 [03C8H] |
| UNTIL (ch = ")")u OR Rv.eot;w |
03D4 | u .FIXUP D |
03D4 | u(8D000004): LDR SB, MT, MOD0 [ORS] |
03D5 | u(90D00130): LDR R0, SB, 130H [data] |
03D6 | u(40090029): SUB R0, R0, 29H |
03D7 | v(E1000003): BEQ 3 [03DBH] |
03D8 | w .FIXUP D |
03D8 | w(8D000004): LDR SB, MT, MOD0 [ORS] |
03D9 | w(90D00138): LDR R0, SB, 138H [data] |
03DA | w(E1FFFFCD): BEQ -51 [03A8H] |
| IF ~R.eot THENx Texts.Read(R,y ch)z ELSEa Markb("unterminated comment")c ENDd |
03DB | x .FIXUP D |
03DB | x(8D000003): LDR SB, MT, MOD0 [ORS] |
03DC | x(90D00138): LDR R0, SB, 138H [data] |
03DD | x(E9000008): BNE 8 [03E6H] |
03DE | y .FIXUP D |
03DE | y(8D000003): LDR SB, MT, MOD0 [ORS] |
03DF | y(40D80138): ADD R0, SB, 138H [data] |
03E0 | y .FIXUP D |
03E0 | y(8D100002): LDR SB, MT, MOD1 [Texts] |
03E1 | y(41D80002): ADD R1, SB, VAR2 |
03E2 | z .FIXUP D |
03E2 | z(8D000002): LDR SB, MT, MOD0 [ORS] |
03E3 | z(42D80130): ADD R2, SB, 130H [data] |
03E4 | a .FIXUP P |
03E4 | a(F7113012): BL MOD1 [Texts] PROC19 |
03E5 | b(E7000004): B 4 [03EAH] |
03E6 | c .FIXUP D |
03E6 | c(8D000004): LDR SB, MT, MOD0 [ORS] |
03E7 | c(40D8048C): ADD R0, SB, 48CH ["unterminated comment"] |
03E8 | c(41000015): MOV R1, R0, 15H |
03E9 | d(F7FFFC31): BL -975 [001BH] |
| ENDe comment; |
03EA | e(8FE00000): LDR LNK, SP, 0H |
03EB | e(4EE80004): ADD SP, SP, 4H |
03EC | e(C700000F): B LNK |
| |
| PROCEDURE Get*(VAR sym: INTEGER); |
| BEGINf |
03ED | f .PROC 10 |
03ED | f(4EE90008): SUB SP, SP, 8H |
03EE | f(AFE00000): STR LNK, SP, 0H |
03EF | f(A0E00004): STR R0, SP, 4H |
| REPEAT |
| WHILE ~R.eot &g (hch <= " ")i DOj Texts.Read(R,k ch)l ENDm; |
03F0 | g .FIXUP D |
03F0 | g(8D00000A): LDR SB, MT, MOD0 [ORS] |
03F1 | g(90D00138): LDR R0, SB, 138H [data] |
03F2 | h(E900000C): BNE 12 [03FFH] |
03F3 | i .FIXUP D |
03F3 | i(8D000003): LDR SB, MT, MOD0 [ORS] |
03F4 | i(90D00130): LDR R0, SB, 130H [data] |
03F5 | i(40090020): SUB R0, R0, 20H |
03F6 | j(EE000008): BGT 8 [03FFH] |
03F7 | k .FIXUP D |
03F7 | k(8D000004): LDR SB, MT, MOD0 [ORS] |
03F8 | k(40D80138): ADD R0, SB, 138H [data] |
03F9 | k .FIXUP D |
03F9 | k(8D100002): LDR SB, MT, MOD1 [Texts] |
03FA | k(41D80002): ADD R1, SB, VAR2 |
03FB | l .FIXUP D |
03FB | l(8D000002): LDR SB, MT, MOD0 [ORS] |
03FC | l(42D80130): ADD R2, SB, 130H [data] |
03FD | m .FIXUP P |
03FD | m(F7113019): BL MOD1 [Texts] PROC19 |
03FE | m(E7FFFFF1): B -15 [03F0H] |
| IF R.eot THENn sym := eot |
03FF | n .FIXUP D |
03FF | n(8D000004): LDR SB, MT, MOD0 [ORS] |
0400 | n(90D00138): LDR R0, SB, 138H [data] |
0401 | n(E1000004): BEQ 4 [0406H] |
| ELSIFo chp < "A" THENq |
0402 | o(40000046): MOV R0, R0, 46H |
0403 | o(81E00004): LDR R1, SP, 4H |
0404 | o(A0100000): STR R0, R1, 0H |
0405 | p(E70001C4): B 452 [05CAH] |
0406 | q .FIXUP D |
0406 | q(8D000007): LDR SB, MT, MOD0 [ORS] |
0407 | q(90D00130): LDR R0, SB, 130H [data] |
0408 | q(40090041): SUB R0, R0, 41H |
0409 | q(ED000159): BGE 345 [0563H] |
| IF ch < "0" THENr |
040A | r .FIXUP D |
040A | r(8D000004): LDR SB, MT, MOD0 [ORS] |
040B | r(90D00130): LDR R0, SB, 130H [data] |
040C | r(40090030): SUB R0, R0, 30H |
040D | r(ED0000CB): BGE 203 [04D9H] |
| IF ch = 22X THENs String;t sym := string |
040E | s .FIXUP D |
040E | s(8D000004): LDR SB, MT, MOD0 [ORS] |
040F | s(90D00130): LDR R0, SB, 130H [data] |
0410 | s(40090022): SUB R0, R0, 22H |
0411 | s(E9000005): BNE 5 [0417H] |
0412 | t(F7FFFCC9): BL -823 [00DCH] |
| ELSIFu chv = "#" THENw Texts.Read(R,x ch)y;z sym := neq |
0413 | u(4000001A): MOV R0, R0, 1AH |
0414 | u(81E00004): LDR R1, SP, 4H |
0415 | u(A0100000): STR R0, R1, 0H |
0416 | v(E70000C1): B 193 [04D8H] |
0417 | w .FIXUP D |
0417 | w(8D000009): LDR SB, MT, MOD0 [ORS] |
0418 | w(90D00130): LDR R0, SB, 130H [data] |
0419 | w(40090023): SUB R0, R0, 23H |
041A | w(E900000B): BNE 11 [0426H] |
041B | x .FIXUP D |
041B | x(8D000004): LDR SB, MT, MOD0 [ORS] |
041C | x(40D80138): ADD R0, SB, 138H [data] |
041D | x .FIXUP D |
041D | x(8D100002): LDR SB, MT, MOD1 [Texts] |
041E | x(41D80002): ADD R1, SB, VAR2 |
041F | y .FIXUP D |
041F | y(8D000002): LDR SB, MT, MOD0 [ORS] |
0420 | y(42D80130): ADD R2, SB, 130H [data] |
0421 | z .FIXUP P |
0421 | z(F7113024): BL MOD1 [Texts] PROC19 |
| ELSIFa chb = "$" THENc HexString;d sym := string |
0422 | a(4000000A): MOV R0, R0, AH |
0423 | a(81E00004): LDR R1, SP, 4H |
0424 | a(A0100000): STR R0, R1, 0H |
0425 | b(E70000B2): B 178 [04D8H] |
0426 | c .FIXUP D |
0426 | c(8D000007): LDR SB, MT, MOD0 [ORS] |
0427 | c(90D00130): LDR R0, SB, 130H [data] |
0428 | c(40090024): SUB R0, R0, 24H |
0429 | c(E9000005): BNE 5 [042FH] |
042A | d(F7FFFCF7): BL -777 [0122H] |
| ELSIFe chf = "&" THENg Texts.Read(R,h ch)i;j sym := and |
042B | e(4000001A): MOV R0, R0, 1AH |
042C | e(81E00004): LDR R1, SP, 4H |
042D | e(A0100000): STR R0, R1, 0H |
042E | f(E70000A9): B 169 [04D8H] |
042F | g .FIXUP D |
042F | g(8D000009): LDR SB, MT, MOD0 [ORS] |
0430 | g(90D00130): LDR R0, SB, 130H [data] |
0431 | g(40090026): SUB R0, R0, 26H |
0432 | g(E900000B): BNE 11 [043EH] |
0433 | h .FIXUP D |
0433 | h(8D000004): LDR SB, MT, MOD0 [ORS] |
0434 | h(40D80138): ADD R0, SB, 138H [data] |
0435 | h .FIXUP D |
0435 | h(8D100002): LDR SB, MT, MOD1 [Texts] |
0436 | h(41D80002): ADD R1, SB, VAR2 |
0437 | i .FIXUP D |
0437 | i(8D000002): LDR SB, MT, MOD0 [ORS] |
0438 | i(42D80130): ADD R2, SB, 130H [data] |
0439 | j .FIXUP P |
0439 | j(F7113018): BL MOD1 [Texts] PROC19 |
| ELSIFk chl = "(" THENm Texts.Read(R,n ch)o;p |
043A | k(40000005): MOV R0, R0, 5H |
043B | k(81E00004): LDR R1, SP, 4H |
043C | k(A0100000): STR R0, R1, 0H |
043D | l(E700009A): B 154 [04D8H] |
043E | m .FIXUP D |
043E | m(8D000007): LDR SB, MT, MOD0 [ORS] |
043F | m(90D00130): LDR R0, SB, 130H [data] |
0440 | m(40090028): SUB R0, R0, 28H |
0441 | m(E9000014): BNE 20 [0456H] |
0442 | n .FIXUP D |
0442 | n(8D000004): LDR SB, MT, MOD0 [ORS] |
0443 | n(40D80138): ADD R0, SB, 138H [data] |
0444 | n .FIXUP D |
0444 | n(8D100002): LDR SB, MT, MOD1 [Texts] |
0445 | n(41D80002): ADD R1, SB, VAR2 |
0446 | o .FIXUP D |
0446 | o(8D000002): LDR SB, MT, MOD0 [ORS] |
0447 | o(42D80130): ADD R2, SB, 130H [data] |
0448 | p .FIXUP P |
0448 | p(F711300F): BL MOD1 [Texts] PROC19 |
| IF ch = "*" THENq sym := null;r comment ELSEs symt := lparen ENDu |
0449 | q .FIXUP D |
0449 | q(8D000003): LDR SB, MT, MOD0 [ORS] |
044A | q(90D00130): LDR R0, SB, 130H [data] |
044B | q(4009002A): SUB R0, R0, 2AH |
044C | q(E9000005): BNE 5 [0452H] |
044D | r(40000000): MOV R0, R0, 0H |
044E | r(81E00004): LDR R1, SP, 4H |
044F | r(A0100000): STR R0, R1, 0H |
0450 | s(F7FFFF4E): BL -178 [039FH] |
0451 | t(E7000003): B 3 [0455H] |
0452 | u(4000001C): MOV R0, R0, 1CH |
0453 | u(81E00004): LDR R1, SP, 4H |
0454 | u(A0100000): STR R0, R1, 0H |
| ELSIF chv = ")" THENw Texts.Read(R,x ch)y;z sym := rparen |
0455 | v(E7000082): B 130 [04D8H] |
0456 | w .FIXUP D |
0456 | w(8D00000D): LDR SB, MT, MOD0 [ORS] |
0457 | w(90D00130): LDR R0, SB, 130H [data] |
0458 | w(40090029): SUB R0, R0, 29H |
0459 | w(E900000B): BNE 11 [0465H] |
045A | x .FIXUP D |
045A | x(8D000004): LDR SB, MT, MOD0 [ORS] |
045B | x(40D80138): ADD R0, SB, 138H [data] |
045C | x .FIXUP D |
045C | x(8D100002): LDR SB, MT, MOD1 [Texts] |
045D | x(41D80002): ADD R1, SB, VAR2 |
045E | y .FIXUP D |
045E | y(8D000002): LDR SB, MT, MOD0 [ORS] |
045F | y(42D80130): ADD R2, SB, 130H [data] |
0460 | z .FIXUP P |
0460 | z(F7113018): BL MOD1 [Texts] PROC19 |
| ELSIFa chb = "*" THENc Texts.Read(R,d ch)e;f sym := times |
0461 | a(4000002C): MOV R0, R0, 2CH |
0462 | a(81E00004): LDR R1, SP, 4H |
0463 | a(A0100000): STR R0, R1, 0H |
0464 | b(E7000073): B 115 [04D8H] |
0465 | c .FIXUP D |
0465 | c(8D000007): LDR SB, MT, MOD0 [ORS] |
0466 | c(90D00130): LDR R0, SB, 130H [data] |
0467 | c(4009002A): SUB R0, R0, 2AH |
0468 | c(E900000B): BNE 11 [0474H] |
0469 | d .FIXUP D |
0469 | d(8D000004): LDR SB, MT, MOD0 [ORS] |
046A | d(40D80138): ADD R0, SB, 138H [data] |
046B | d .FIXUP D |
046B | d(8D100002): LDR SB, MT, MOD1 [Texts] |
046C | d(41D80002): ADD R1, SB, VAR2 |
046D | e .FIXUP D |
046D | e(8D000002): LDR SB, MT, MOD0 [ORS] |
046E | e(42D80130): ADD R2, SB, 130H [data] |
046F | f .FIXUP P |
046F | f(F711300F): BL MOD1 [Texts] PROC19 |
| ELSIFg chh = "+" THENi Texts.Read(R,j ch)k;l sym := plus |
0470 | g(40000001): MOV R0, R0, 1H |
0471 | g(81E00004): LDR R1, SP, 4H |
0472 | g(A0100000): STR R0, R1, 0H |
0473 | h(E7000064): B 100 [04D8H] |
0474 | i .FIXUP D |
0474 | i(8D000007): LDR SB, MT, MOD0 [ORS] |
0475 | i(90D00130): LDR R0, SB, 130H [data] |
0476 | i(4009002B): SUB R0, R0, 2BH |
0477 | i(E900000B): BNE 11 [0483H] |
0478 | j .FIXUP D |
0478 | j(8D000004): LDR SB, MT, MOD0 [ORS] |
0479 | j(40D80138): ADD R0, SB, 138H [data] |
047A | j .FIXUP D |
047A | j(8D100002): LDR SB, MT, MOD1 [Texts] |
047B | j(41D80002): ADD R1, SB, VAR2 |
047C | k .FIXUP D |
047C | k(8D000002): LDR SB, MT, MOD0 [ORS] |
047D | k(42D80130): ADD R2, SB, 130H [data] |
047E | l .FIXUP P |
047E | l(F711300F): BL MOD1 [Texts] PROC19 |
| ELSIFm chn = "," THENo Texts.Read(R,p ch)q;r sym := comma |
047F | m(40000006): MOV R0, R0, 6H |
0480 | m(81E00004): LDR R1, SP, 4H |
0481 | m(A0100000): STR R0, R1, 0H |
0482 | n(E7000055): B 85 [04D8H] |
0483 | o .FIXUP D |
0483 | o(8D000007): LDR SB, MT, MOD0 [ORS] |
0484 | o(90D00130): LDR R0, SB, 130H [data] |
0485 | o(4009002C): SUB R0, R0, 2CH |
0486 | o(E900000B): BNE 11 [0492H] |
0487 | p .FIXUP D |
0487 | p(8D000004): LDR SB, MT, MOD0 [ORS] |
0488 | p(40D80138): ADD R0, SB, 138H [data] |
0489 | p .FIXUP D |
0489 | p(8D100002): LDR SB, MT, MOD1 [Texts] |
048A | p(41D80002): ADD R1, SB, VAR2 |
048B | q .FIXUP D |
048B | q(8D000002): LDR SB, MT, MOD0 [ORS] |
048C | q(42D80130): ADD R2, SB, 130H [data] |
048D | r .FIXUP P |
048D | r(F711300F): BL MOD1 [Texts] PROC19 |
| ELSIFs cht = "-" THENu Texts.Read(R,v ch)w;x sym := minus |
048E | s(40000028): MOV R0, R0, 28H |
048F | s(81E00004): LDR R1, SP, 4H |
0490 | s(A0100000): STR R0, R1, 0H |
0491 | t(E7000046): B 70 [04D8H] |
0492 | u .FIXUP D |
0492 | u(8D000007): LDR SB, MT, MOD0 [ORS] |
0493 | u(90D00130): LDR R0, SB, 130H [data] |
0494 | u(4009002D): SUB R0, R0, 2DH |
0495 | u(E900000B): BNE 11 [04A1H] |
0496 | v .FIXUP D |
0496 | v(8D000004): LDR SB, MT, MOD0 [ORS] |
0497 | v(40D80138): ADD R0, SB, 138H [data] |
0498 | v .FIXUP D |
0498 | v(8D100002): LDR SB, MT, MOD1 [Texts] |
0499 | v(41D80002): ADD R1, SB, VAR2 |
049A | w .FIXUP D |
049A | w(8D000002): LDR SB, MT, MOD0 [ORS] |
049B | w(42D80130): ADD R2, SB, 130H [data] |
049C | x .FIXUP P |
049C | x(F711300F): BL MOD1 [Texts] PROC19 |
| ELSIFy chz = "." THENa Texts.Read(R,b ch)c;d |
049D | y(40000007): MOV R0, R0, 7H |
049E | y(81E00004): LDR R1, SP, 4H |
049F | y(A0100000): STR R0, R1, 0H |
04A0 | z(E7000037): B 55 [04D8H] |
04A1 | a .FIXUP D |
04A1 | a(8D000007): LDR SB, MT, MOD0 [ORS] |
04A2 | a(90D00130): LDR R0, SB, 130H [data] |
04A3 | a(4009002E): SUB R0, R0, 2EH |
04A4 | a(E900001A): BNE 26 [04BFH] |
04A5 | b .FIXUP D |
04A5 | b(8D000004): LDR SB, MT, MOD0 [ORS] |
04A6 | b(40D80138): ADD R0, SB, 138H [data] |
04A7 | b .FIXUP D |
04A7 | b(8D100002): LDR SB, MT, MOD1 [Texts] |
04A8 | b(41D80002): ADD R1, SB, VAR2 |
04A9 | c .FIXUP D |
04A9 | c(8D000002): LDR SB, MT, MOD0 [ORS] |
04AA | c(42D80130): ADD R2, SB, 130H [data] |
04AB | d .FIXUP P |
04AB | d(F711300F): BL MOD1 [Texts] PROC19 |
| IF ch = "." THENe Texts.Read(R,f ch)g;h sym := upto ELSEi symj := period ENDk |
04AC | e .FIXUP D |
04AC | e(8D000003): LDR SB, MT, MOD0 [ORS] |
04AD | e(90D00130): LDR R0, SB, 130H [data] |
04AE | e(4009002E): SUB R0, R0, 2EH |
04AF | e(E900000B): BNE 11 [04BBH] |
04B0 | f .FIXUP D |
04B0 | f(8D000004): LDR SB, MT, MOD0 [ORS] |
04B1 | f(40D80138): ADD R0, SB, 138H [data] |
04B2 | f .FIXUP D |
04B2 | f(8D100002): LDR SB, MT, MOD1 [Texts] |
04B3 | f(41D80002): ADD R1, SB, VAR2 |
04B4 | g .FIXUP D |
04B4 | g(8D000002): LDR SB, MT, MOD0 [ORS] |
04B5 | g(42D80130): ADD R2, SB, 130H [data] |
04B6 | h .FIXUP P |
04B6 | h(F711300B): BL MOD1 [Texts] PROC19 |
04B7 | i(4000002B): MOV R0, R0, 2BH |
04B8 | i(81E00004): LDR R1, SP, 4H |
04B9 | i(A0100000): STR R0, R1, 0H |
04BA | j(E7000003): B 3 [04BEH] |
04BB | k(40000012): MOV R0, R0, 12H |
04BC | k(81E00004): LDR R1, SP, 4H |
04BD | k(A0100000): STR R0, R1, 0H |
| ELSIF chl = "/" THENm Texts.Read(R,n ch)o;p sym := rdiv |
04BE | l(E7000019): B 25 [04D8H] |
04BF | m .FIXUP D |
04BF | m(8D00000B): LDR SB, MT, MOD0 [ORS] |
04C0 | m(90D00130): LDR R0, SB, 130H [data] |
04C1 | m(4009002F): SUB R0, R0, 2FH |
04C2 | m(E900000B): BNE 11 [04CEH] |
04C3 | n .FIXUP D |
04C3 | n(8D000004): LDR SB, MT, MOD0 [ORS] |
04C4 | n(40D80138): ADD R0, SB, 138H [data] |
04C5 | n .FIXUP D |
04C5 | n(8D100002): LDR SB, MT, MOD1 [Texts] |
04C6 | n(41D80002): ADD R1, SB, VAR2 |
04C7 | o .FIXUP D |
04C7 | o(8D000002): LDR SB, MT, MOD0 [ORS] |
04C8 | o(42D80130): ADD R2, SB, 130H [data] |
04C9 | p .FIXUP P |
04C9 | p(F7113013): BL MOD1 [Texts] PROC19 |
| ELSEq Textsr.Read(R,s ch)t;u (* ! % ' *) sym := null |
04CA | q(40000002): MOV R0, R0, 2H |
04CB | q(81E00004): LDR R1, SP, 4H |
04CC | q(A0100000): STR R0, R1, 0H |
04CD | r(E700000A): B 10 [04D8H] |
04CE | s .FIXUP D |
04CE | s(8D000007): LDR SB, MT, MOD0 [ORS] |
04CF | s(40D80138): ADD R0, SB, 138H [data] |
04D0 | s .FIXUP D |
04D0 | s(8D100002): LDR SB, MT, MOD1 [Texts] |
04D1 | s(41D80002): ADD R1, SB, VAR2 |
04D2 | t .FIXUP D |
04D2 | t(8D000002): LDR SB, MT, MOD0 [ORS] |
04D3 | t(42D80130): ADD R2, SB, 130H [data] |
04D4 | u .FIXUP P |
04D4 | u(F711300B): BL MOD1 [Texts] PROC19 |
| ENDv |
04D5 | v(40000000): MOV R0, R0, 0H |
04D6 | v(81E00004): LDR R1, SP, 4H |
04D7 | v(A0100000): STR R0, R1, 0H |
| ELSIF chw < ":" THENx Number(sym)y |
04D8 | w(E7000089): B 137 [0562H] |
04D9 | x .FIXUP D |
04D9 | x(8D000007): LDR SB, MT, MOD0 [ORS] |
04DA | x(90D00130): LDR R0, SB, 130H [data] |
04DB | x(4009003A): SUB R0, R0, 3AH |
04DC | x(ED000003): BGE 3 [04E0H] |
04DD | y(80E00004): LDR R0, SP, 4H |
| ELSIFz cha = ":" THENb Texts.Read(R,c ch)d;e |
04DE | z(F7FFFCF6): BL -778 [01D5H] |
04DF | a(E7000082): B 130 [0562H] |
04E0 | b .FIXUP D |
04E0 | b(8D000007): LDR SB, MT, MOD0 [ORS] |
04E1 | b(90D00130): LDR R0, SB, 130H [data] |
04E2 | b(4009003A): SUB R0, R0, 3AH |
04E3 | b(E900001A): BNE 26 [04FEH] |
04E4 | c .FIXUP D |
04E4 | c(8D000004): LDR SB, MT, MOD0 [ORS] |
04E5 | c(40D80138): ADD R0, SB, 138H [data] |
04E6 | c .FIXUP D |
04E6 | c(8D100002): LDR SB, MT, MOD1 [Texts] |
04E7 | c(41D80002): ADD R1, SB, VAR2 |
04E8 | d .FIXUP D |
04E8 | d(8D000002): LDR SB, MT, MOD0 [ORS] |
04E9 | d(42D80130): ADD R2, SB, 130H [data] |
04EA | e .FIXUP P |
04EA | e(F7113016): BL MOD1 [Texts] PROC19 |
| IF ch = "=" THENf Texts.Read(R,g ch)h;i sym := becomes ELSEj symk := colon ENDl |
04EB | f .FIXUP D |
04EB | f(8D000003): LDR SB, MT, MOD0 [ORS] |
04EC | f(90D00130): LDR R0, SB, 130H [data] |
04ED | f(4009003D): SUB R0, R0, 3DH |
04EE | f(E900000B): BNE 11 [04FAH] |
04EF | g .FIXUP D |
04EF | g(8D000004): LDR SB, MT, MOD0 [ORS] |
04F0 | g(40D80138): ADD R0, SB, 138H [data] |
04F1 | g .FIXUP D |
04F1 | g(8D100002): LDR SB, MT, MOD1 [Texts] |
04F2 | g(41D80002): ADD R1, SB, VAR2 |
04F3 | h .FIXUP D |
04F3 | h(8D000002): LDR SB, MT, MOD0 [ORS] |
04F4 | h(42D80130): ADD R2, SB, 130H [data] |
04F5 | i .FIXUP P |
04F5 | i(F711300B): BL MOD1 [Texts] PROC19 |
04F6 | j(4000002A): MOV R0, R0, 2AH |
04F7 | j(81E00004): LDR R1, SP, 4H |
04F8 | j(A0100000): STR R0, R1, 0H |
04F9 | k(E7000003): B 3 [04FDH] |
04FA | l(40000029): MOV R0, R0, 29H |
04FB | l(81E00004): LDR R1, SP, 4H |
04FC | l(A0100000): STR R0, R1, 0H |
| ELSIF chm = ";" THENn Texts.Read(R,o ch)p;q sym := semicolon |
04FD | m(E7000064): B 100 [0562H] |
04FE | n .FIXUP D |
04FE | n(8D00000B): LDR SB, MT, MOD0 [ORS] |
04FF | n(90D00130): LDR R0, SB, 130H [data] |
0500 | n(4009003B): SUB R0, R0, 3BH |
0501 | n(E900000B): BNE 11 [050DH] |
0502 | o .FIXUP D |
0502 | o(8D000004): LDR SB, MT, MOD0 [ORS] |
0503 | o(40D80138): ADD R0, SB, 138H [data] |
0504 | o .FIXUP D |
0504 | o(8D100002): LDR SB, MT, MOD1 [Texts] |
0505 | o(41D80002): ADD R1, SB, VAR2 |
0506 | p .FIXUP D |
0506 | p(8D000002): LDR SB, MT, MOD0 [ORS] |
0507 | p(42D80130): ADD R2, SB, 130H [data] |
0508 | q .FIXUP P |
0508 | q(F7113013): BL MOD1 [Texts] PROC19 |
| ELSIFr chs = "<" THENt Texts.Read(R,u ch)v;w |
0509 | r(40000034): MOV R0, R0, 34H |
050A | r(81E00004): LDR R1, SP, 4H |
050B | r(A0100000): STR R0, R1, 0H |
050C | s(E7000055): B 85 [0562H] |
050D | t .FIXUP D |
050D | t(8D000007): LDR SB, MT, MOD0 [ORS] |
050E | t(90D00130): LDR R0, SB, 130H [data] |
050F | t(4009003C): SUB R0, R0, 3CH |
0510 | t(E900001A): BNE 26 [052BH] |
0511 | u .FIXUP D |
0511 | u(8D000004): LDR SB, MT, MOD0 [ORS] |
0512 | u(40D80138): ADD R0, SB, 138H [data] |
0513 | u .FIXUP D |
0513 | u(8D100002): LDR SB, MT, MOD1 [Texts] |
0514 | u(41D80002): ADD R1, SB, VAR2 |
0515 | v .FIXUP D |
0515 | v(8D000002): LDR SB, MT, MOD0 [ORS] |
0516 | v(42D80130): ADD R2, SB, 130H [data] |
0517 | w .FIXUP P |
0517 | w(F711300F): BL MOD1 [Texts] PROC19 |
| IF ch = "=" THENx Texts.Read(R,y ch)z;a sym := leq ELSEb symc := lss ENDd |
0518 | x .FIXUP D |
0518 | x(8D000003): LDR SB, MT, MOD0 [ORS] |
0519 | x(90D00130): LDR R0, SB, 130H [data] |
051A | x(4009003D): SUB R0, R0, 3DH |
051B | x(E900000B): BNE 11 [0527H] |
051C | y .FIXUP D |
051C | y(8D000004): LDR SB, MT, MOD0 [ORS] |
051D | y(40D80138): ADD R0, SB, 138H [data] |
051E | y .FIXUP D |
051E | y(8D100002): LDR SB, MT, MOD1 [Texts] |
051F | y(41D80002): ADD R1, SB, VAR2 |
0520 | z .FIXUP D |
0520 | z(8D000002): LDR SB, MT, MOD0 [ORS] |
0521 | z(42D80130): ADD R2, SB, 130H [data] |
0522 | a .FIXUP P |
0522 | a(F711300B): BL MOD1 [Texts] PROC19 |
0523 | b(4000000C): MOV R0, R0, CH |
0524 | b(81E00004): LDR R1, SP, 4H |
0525 | b(A0100000): STR R0, R1, 0H |
0526 | c(E7000003): B 3 [052AH] |
0527 | d(4000000B): MOV R0, R0, BH |
0528 | d(81E00004): LDR R1, SP, 4H |
0529 | d(A0100000): STR R0, R1, 0H |
| ELSIF che = "=" THENf Texts.Read(R,g ch)h;i sym := eql |
052A | e(E7000037): B 55 [0562H] |
052B | f .FIXUP D |
052B | f(8D00000B): LDR SB, MT, MOD0 [ORS] |
052C | f(90D00130): LDR R0, SB, 130H [data] |
052D | f(4009003D): SUB R0, R0, 3DH |
052E | f(E900000B): BNE 11 [053AH] |
052F | g .FIXUP D |
052F | g(8D000004): LDR SB, MT, MOD0 [ORS] |
0530 | g(40D80138): ADD R0, SB, 138H [data] |
0531 | g .FIXUP D |
0531 | g(8D100002): LDR SB, MT, MOD1 [Texts] |
0532 | g(41D80002): ADD R1, SB, VAR2 |
0533 | h .FIXUP D |
0533 | h(8D000002): LDR SB, MT, MOD0 [ORS] |
0534 | h(42D80130): ADD R2, SB, 130H [data] |
0535 | i .FIXUP P |
0535 | i(F7113013): BL MOD1 [Texts] PROC19 |
| ELSIFj chk = ">" THENl Texts.Read(R,m ch)n;o |
0536 | j(40000009): MOV R0, R0, 9H |
0537 | j(81E00004): LDR R1, SP, 4H |
0538 | j(A0100000): STR R0, R1, 0H |
0539 | k(E7000028): B 40 [0562H] |
053A | l .FIXUP D |
053A | l(8D000007): LDR SB, MT, MOD0 [ORS] |
053B | l(90D00130): LDR R0, SB, 130H [data] |
053C | l(4009003E): SUB R0, R0, 3EH |
053D | l(E900001A): BNE 26 [0558H] |
053E | m .FIXUP D |
053E | m(8D000004): LDR SB, MT, MOD0 [ORS] |
053F | m(40D80138): ADD R0, SB, 138H [data] |
0540 | m .FIXUP D |
0540 | m(8D100002): LDR SB, MT, MOD1 [Texts] |
0541 | m(41D80002): ADD R1, SB, VAR2 |
0542 | n .FIXUP D |
0542 | n(8D000002): LDR SB, MT, MOD0 [ORS] |
0543 | n(42D80130): ADD R2, SB, 130H [data] |
0544 | o .FIXUP P |
0544 | o(F711300F): BL MOD1 [Texts] PROC19 |
| IF ch = "=" THENp Texts.Read(R,q ch)r;s sym := geq ELSEt symu := gtr ENDv |
0545 | p .FIXUP D |
0545 | p(8D000003): LDR SB, MT, MOD0 [ORS] |
0546 | p(90D00130): LDR R0, SB, 130H [data] |
0547 | p(4009003D): SUB R0, R0, 3DH |
0548 | p(E900000B): BNE 11 [0554H] |
0549 | q .FIXUP D |
0549 | q(8D000004): LDR SB, MT, MOD0 [ORS] |
054A | q(40D80138): ADD R0, SB, 138H [data] |
054B | q .FIXUP D |
054B | q(8D100002): LDR SB, MT, MOD1 [Texts] |
054C | q(41D80002): ADD R1, SB, VAR2 |
054D | r .FIXUP D |
054D | r(8D000002): LDR SB, MT, MOD0 [ORS] |
054E | r(42D80130): ADD R2, SB, 130H [data] |
054F | s .FIXUP P |
054F | s(F711300B): BL MOD1 [Texts] PROC19 |
0550 | t(4000000E): MOV R0, R0, EH |
0551 | t(81E00004): LDR R1, SP, 4H |
0552 | t(A0100000): STR R0, R1, 0H |
0553 | u(E7000003): B 3 [0557H] |
0554 | v(4000000D): MOV R0, R0, DH |
0555 | v(81E00004): LDR R1, SP, 4H |
0556 | v(A0100000): STR R0, R1, 0H |
| ELSE (* ? @ *) Textsw.Read(R,x ch)y;z sym := null |
0557 | w(E700000A): B 10 [0562H] |
0558 | x .FIXUP D |
0558 | x(8D00000B): LDR SB, MT, MOD0 [ORS] |
0559 | x(40D80138): ADD R0, SB, 138H [data] |
055A | x .FIXUP D |
055A | x(8D100002): LDR SB, MT, MOD1 [Texts] |
055B | x(41D80002): ADD R1, SB, VAR2 |
055C | y .FIXUP D |
055C | y(8D000002): LDR SB, MT, MOD0 [ORS] |
055D | y(42D80130): ADD R2, SB, 130H [data] |
055E | z .FIXUP P |
055E | z(F711300F): BL MOD1 [Texts] PROC19 |
| ENDa |
055F | a(40000000): MOV R0, R0, 0H |
0560 | a(81E00004): LDR R1, SP, 4H |
0561 | a(A0100000): STR R0, R1, 0H |
| ELSIF chb < "[" THENc Identifier(sym)d |
0562 | b(E7000067): B 103 [05CAH] |
0563 | c .FIXUP D |
0563 | c(8D000007): LDR SB, MT, MOD0 [ORS] |
0564 | c(90D00130): LDR R0, SB, 130H [data] |
0565 | c(4009005B): SUB R0, R0, 5BH |
0566 | c(ED000003): BGE 3 [056AH] |
0567 | d(80E00004): LDR R0, SP, 4H |
| ELSIFe chf < "a" THENg |
0568 | e(F7FFFAF2): BL -1294 [005BH] |
0569 | f(E7000060): B 96 [05CAH] |
056A | g .FIXUP D |
056A | g(8D000007): LDR SB, MT, MOD0 [ORS] |
056B | g(90D00130): LDR R0, SB, 130H [data] |
056C | g(40090061): SUB R0, R0, 61H |
056D | g(ED000023): BGE 35 [0591H] |
| IF ch = "[" THENh sym := lbrak |
056E | h .FIXUP D |
056E | h(8D000004): LDR SB, MT, MOD0 [ORS] |
056F | h(90D00130): LDR R0, SB, 130H [data] |
0570 | h(4009005B): SUB R0, R0, 5BH |
0571 | h(E9000004): BNE 4 [0576H] |
| ELSIFi chj = "]" THENk sym := rbrak |
0572 | i(4000001D): MOV R0, R0, 1DH |
0573 | i(81E00004): LDR R1, SP, 4H |
0574 | i(A0100000): STR R0, R1, 0H |
0575 | j(E7000013): B 19 [0589H] |
0576 | k .FIXUP D |
0576 | k(8D000008): LDR SB, MT, MOD0 [ORS] |
0577 | k(90D00130): LDR R0, SB, 130H [data] |
0578 | k(4009005D): SUB R0, R0, 5DH |
0579 | k(E9000004): BNE 4 [057EH] |
| ELSIFl chm = "^" THENn sym := arrow |
057A | l(4000002D): MOV R0, R0, 2DH |
057B | l(81E00004): LDR R1, SP, 4H |
057C | l(A0100000): STR R0, R1, 0H |
057D | m(E700000B): B 11 [0589H] |
057E | n .FIXUP D |
057E | n(8D000008): LDR SB, MT, MOD0 [ORS] |
057F | n(90D00130): LDR R0, SB, 130H [data] |
0580 | n(4009005E): SUB R0, R0, 5EH |
0581 | n(E9000004): BNE 4 [0586H] |
| ELSEo (* _ ` *) symp := null |
0582 | o(40000011): MOV R0, R0, 11H |
0583 | o(81E00004): LDR R1, SP, 4H |
0584 | o(A0100000): STR R0, R1, 0H |
0585 | p(E7000003): B 3 [0589H] |
| ENDq ; |
0586 | q(40000000): MOV R0, R0, 0H |
0587 | q(81E00004): LDR R1, SP, 4H |
0588 | q(A0100000): STR R0, R1, 0H |
| Texts.Read(R,r ch)s |
0589 | r .FIXUP D |
0589 | r(8D00000B): LDR SB, MT, MOD0 [ORS] |
058A | r(40D80138): ADD R0, SB, 138H [data] |
058B | r .FIXUP D |
058B | r(8D100002): LDR SB, MT, MOD1 [Texts] |
058C | r(41D80002): ADD R1, SB, VAR2 |
058D | s .FIXUP D |
058D | s(8D000002): LDR SB, MT, MOD0 [ORS] |
058E | s(42D80130): ADD R2, SB, 130H [data] |
| ELSIFt chu < "{" THENv Identifier(sym)w ELSEx |
058F | t .FIXUP P |
058F | t(F7113031): BL MOD1 [Texts] PROC19 |
0590 | u(E7000039): B 57 [05CAH] |
0591 | v .FIXUP D |
0591 | v(8D000004): LDR SB, MT, MOD0 [ORS] |
0592 | v(90D00130): LDR R0, SB, 130H [data] |
0593 | v(4009007B): SUB R0, R0, 7BH |
0594 | v(ED000003): BGE 3 [0598H] |
0595 | w(80E00004): LDR R0, SP, 4H |
0596 | x(F7FFFAC4): BL -1340 [005BH] |
| IFy ch = "{" THENz sym := lbrace |
0597 | y(E7000032): B 50 [05CAH] |
0598 | z .FIXUP D |
0598 | z(8D000007): LDR SB, MT, MOD0 [ORS] |
0599 | z(90D00130): LDR R0, SB, 130H [data] |
059A | z(4009007B): SUB R0, R0, 7BH |
059B | z(E9000004): BNE 4 [05A0H] |
| ELSIFa chb = "}" THENc sym := rbrace |
059C | a(4000001E): MOV R0, R0, 1EH |
059D | a(81E00004): LDR R1, SP, 4H |
059E | a(A0100000): STR R0, R1, 0H |
059F | b(E7000023): B 35 [05C3H] |
05A0 | c .FIXUP D |
05A0 | c(8D000008): LDR SB, MT, MOD0 [ORS] |
05A1 | c(90D00130): LDR R0, SB, 130H [data] |
05A2 | c(4009007D): SUB R0, R0, 7DH |
05A3 | c(E9000004): BNE 4 [05A8H] |
| ELSIFd che = "|" THENf sym := bar |
05A4 | d(4000002E): MOV R0, R0, 2EH |
05A5 | d(81E00004): LDR R1, SP, 4H |
05A6 | d(A0100000): STR R0, R1, 0H |
05A7 | e(E700001B): B 27 [05C3H] |
05A8 | f .FIXUP D |
05A8 | f(8D000008): LDR SB, MT, MOD0 [ORS] |
05A9 | f(90D00130): LDR R0, SB, 130H [data] |
05AA | f(4009007C): SUB R0, R0, 7CH |
05AB | f(E9000004): BNE 4 [05B0H] |
| ELSIFg chh = "~" THENi sym := not |
05AC | g(40000036): MOV R0, R0, 36H |
05AD | g(81E00004): LDR R1, SP, 4H |
05AE | g(A0100000): STR R0, R1, 0H |
05AF | h(E7000013): B 19 [05C3H] |
05B0 | i .FIXUP D |
05B0 | i(8D000008): LDR SB, MT, MOD0 [ORS] |
05B1 | i(90D00130): LDR R0, SB, 130H [data] |
05B2 | i(4009007E): SUB R0, R0, 7EH |
05B3 | i(E9000004): BNE 4 [05B8H] |
| ELSIFj chk = 7FX THENl sym := upto |
05B4 | j(4000001B): MOV R0, R0, 1BH |
05B5 | j(81E00004): LDR R1, SP, 4H |
05B6 | j(A0100000): STR R0, R1, 0H |
05B7 | k(E700000B): B 11 [05C3H] |
05B8 | l .FIXUP D |
05B8 | l(8D000008): LDR SB, MT, MOD0 [ORS] |
05B9 | l(90D00130): LDR R0, SB, 130H [data] |
05BA | l(4009007F): SUB R0, R0, 7FH |
05BB | l(E9000004): BNE 4 [05C0H] |
| ELSEm symn := null |
05BC | m(4000002B): MOV R0, R0, 2BH |
05BD | m(81E00004): LDR R1, SP, 4H |
05BE | m(A0100000): STR R0, R1, 0H |
05BF | n(E7000003): B 3 [05C3H] |
| ENDo ; |
05C0 | o(40000000): MOV R0, R0, 0H |
05C1 | o(81E00004): LDR R1, SP, 4H |
05C2 | o(A0100000): STR R0, R1, 0H |
| Texts.Read(R,p ch)q |
05C3 | p .FIXUP D |
05C3 | p(8D00000B): LDR SB, MT, MOD0 [ORS] |
05C4 | p(40D80138): ADD R0, SB, 138H [data] |
05C5 | p .FIXUP D |
05C5 | p(8D100002): LDR SB, MT, MOD1 [Texts] |
05C6 | p(41D80002): ADD R1, SB, VAR2 |
05C7 | q .FIXUP D |
05C7 | q(8D000002): LDR SB, MT, MOD0 [ORS] |
05C8 | q(42D80130): ADD R2, SB, 130H [data] |
| ENDr |
05C9 | r .FIXUP P |
05C9 | r(F711303A): BL MOD1 [Texts] PROC19 |
| UNTIL sym # null |
| ENDs Get; |
05CA | s(80E00004): LDR R0, SP, 4H |
05CB | s(80000000): LDR R0, R0, 0H |
05CC | s(E1FFFE23): BEQ -477 [03F0H] |
05CD | s(8FE00000): LDR LNK, SP, 0H |
05CE | s(4EE80008): ADD SP, SP, 8H |
05CF | s(C700000F): B LNK |
| |
| PROCEDURE Init*(T: Texts.Text; pos: LONGINT); |
| BEGINt errpos := pos;u errcnt := 0;v Texts.OpenReader(R,w T,x pos)y;z Texts.Read(R,a ch)b |
05D0 | t .PROC 11 |
05D0 | t(4EE9000C): SUB SP, SP, CH |
05D1 | t(AFE00000): STR LNK, SP, 0H |
05D2 | t(A0E00004): STR R0, SP, 4H |
05D3 | t(A1E00008): STR R1, SP, 8H |
05D4 | u(80E00008): LDR R0, SP, 8H |
05D5 | u .FIXUP D |
05D5 | u(8D00000E): LDR SB, MT, MOD0 [ORS] |
05D6 | u(A0D00134): STR R0, SB, 134H [data] |
05D7 | v(40000000): MOV R0, R0, 0H |
05D8 | v(A0D0012C): STR R0, SB, 12CH |
05D9 | w(40D80138): ADD R0, SB, 138H |
05DA | w .FIXUP D |
05DA | w(8D100005): LDR SB, MT, MOD1 [Texts] |
05DB | w(41D80002): ADD R1, SB, VAR2 |
05DC | x(82E00004): LDR R2, SP, 4H |
05DD | y(83E00008): LDR R3, SP, 8H |
05DE | z .FIXUP P |
05DE | z(F7112015): BL MOD1 [Texts] PROC18 |
05DF | a .FIXUP D |
05DF | a(8D000005): LDR SB, MT, MOD0 [ORS] |
05E0 | a(40D80138): ADD R0, SB, 138H [data] |
05E1 | a .FIXUP D |
05E1 | a(8D100002): LDR SB, MT, MOD1 [Texts] |
05E2 | a(41D80002): ADD R1, SB, VAR2 |
05E3 | b .FIXUP D |
05E3 | b(8D000002): LDR SB, MT, MOD0 [ORS] |
05E4 | b(42D80130): ADD R2, SB, 130H [data] |
| ENDc Init; |
05E5 | c .FIXUP P |
05E5 | c(F7113007): BL MOD1 [Texts] PROC19 |
05E6 | c(8FE00000): LDR LNK, SP, 0H |
05E7 | c(4EE8000C): ADD SP, SP, CH |
05E8 | c(C700000F): B LNK |
| |
| PROCEDURE EnterKW(sym: INTEGER; name: ARRAY OF CHAR); |
| BEGINd keyTab[k]e.id := name;f keyTab[k]g.sym := sym;h INC(k) |
05E9 | d(4EE90010): SUB SP, SP, 10H |
05EA | d(AFE00000): STR LNK, SP, 0H |
05EB | d(A0E00004): STR R0, SP, 4H |
05EC | d(A1E00008): STR R1, SP, 8H |
05ED | d(A2E0000C): STR R2, SP, CH |
05EE | e .FIXUP D |
05EE | e(8D00000B): LDR SB, MT, MOD0 [ORS] |
05EF | e(80D00194): LDR R0, SB, 194H [data] |
05F0 | e(41090022): SUB R1, R0, 22H |
05F1 | e(DA26911C): BLCC MT [trap=1, pos=9873] |
05F2 | e(400A0010): MUL R0, R0, 10H |
05F3 | e(00D80000): ADD R0, SB, R0 |
05F4 | f(400801C4): ADD R0, R0, 1C4H |
05F5 | f(81E00008): LDR R1, SP, 8H |
05F6 | f(82E0000C): LDR R2, SP, CH |
05F7 | f(E100000B): BEQ 11 [0603H] |
05F8 | f(42280003): ADD R2, R2, 3H |
05F9 | f(42220002): ASR R2, R2, 2H |
05FA | f(43000003): MOV R3, R0, 3H |
05FB | f(03290003): SUB R3, R2, R3 |
05FC | f(DE269D3C): BLGT MT [trap=3, pos=9885] |
05FD | f(83100000): LDR R3, R1, 0H |
05FE | f(41180004): ADD R1, R1, 4H |
05FF | f(A3000000): STR R3, R0, 0H |
0600 | f(40080004): ADD R0, R0, 4H |
0601 | f(42290001): SUB R2, R2, 1H |
0602 | f(E9FFFFFA): BNE -6 [05FDH] |
0603 | g(80D00194): LDR R0, SB, 194H |
0604 | g(41090022): SUB R1, R0, 22H |
0605 | g(DA26A71C): BLCC MT [trap=1, pos=9895] |
0606 | g(400A0010): MUL R0, R0, 10H |
0607 | g(00D80000): ADD R0, SB, R0 |
0608 | h(81E00004): LDR R1, SP, 4H |
0609 | h(A10001C0): STR R1, R0, 1C0H |
| ENDi EnterKW; |
060A | i(40D80194): ADD R0, SB, 194H |
060B | i(81000000): LDR R1, R0, 0H |
060C | i(41180001): ADD R1, R1, 1H |
060D | i(A1000000): STR R1, R0, 0H |
060E | i(8FE00000): LDR LNK, SP, 0H |
060F | i(4EE80010): ADD SP, SP, 10H |
0610 | i(C700000F): B LNK |
| |
| BEGINj Texts.OpenWriter(W)k;l k := 0;m KWX[0] := 0;n KWX[1] := 0;o |
0611 | j .PROC 0 |
0611 | j .ENTRYPOINT |
0611 | j(4EE90004): SUB SP, SP, 4H |
0612 | j(AFE00000): STR LNK, SP, 0H |
0613 | k .FIXUP D |
0613 | k(8D000025): LDR SB, MT, MOD0 [ORS] |
0614 | k(40D8016C): ADD R0, SB, 16CH [data] |
0615 | k .FIXUP D |
0615 | k(8D100002): LDR SB, MT, MOD1 [Texts] |
0616 | k(41D80005): ADD R1, SB, VAR5 |
0617 | l .FIXUP P |
0617 | l(F7117032): BL MOD1 [Texts] PROC23 |
0618 | m(40000000): MOV R0, R0, 0H |
0619 | m .FIXUP D |
0619 | m(8D000004): LDR SB, MT, MOD0 [ORS] |
061A | m(A0D00194): STR R0, SB, 194H [data] |
061B | n(40000000): MOV R0, R0, 0H |
061C | n(A0D00198): STR R0, SB, 198H |
061D | o(40000000): MOV R0, R0, 0H |
061E | o(A0D0019C): STR R0, SB, 19CH |
| EnterKW(if,p "IF")q;r |
061F | p(40000020): MOV R0, R0, 20H |
0620 | q(41D804A4): ADD R1, SB, 4A4H |
0621 | q(42000003): MOV R2, R0, 3H |
0622 | r(F7FFFFC6): BL -58 [05E9H] |
| EnterKW(do,s "DO")t;u |
0623 | s(40000031): MOV R0, R0, 31H |
0624 | t .FIXUP D |
0624 | t(8D00000B): LDR SB, MT, MOD0 [ORS] |
0625 | t(41D804A8): ADD R1, SB, 4A8H ["DO"] |
0626 | t(42000003): MOV R2, R0, 3H |
0627 | u(F7FFFFC1): BL -63 [05E9H] |
| EnterKW(of,v "OF")w;x |
0628 | v(40000030): MOV R0, R0, 30H |
0629 | w .FIXUP D |
0629 | w(8D000005): LDR SB, MT, MOD0 [ORS] |
062A | w(41D804AC): ADD R1, SB, 4ACH ["OF"] |
062B | w(42000003): MOV R2, R0, 3H |
062C | x(F7FFFFBC): BL -68 [05E9H] |
| EnterKW(or,y "OR")z;a |
062D | y(40000008): MOV R0, R0, 8H |
062E | z .FIXUP D |
062E | z(8D000005): LDR SB, MT, MOD0 [ORS] |
062F | z(41D804B0): ADD R1, SB, 4B0H ["OR"] |
0630 | z(42000003): MOV R2, R0, 3H |
0631 | a(F7FFFFB7): BL -73 [05E9H] |
| EnterKW(to,b "TO")c;d |
0632 | b(40000032): MOV R0, R0, 32H |
0633 | c .FIXUP D |
0633 | c(8D000005): LDR SB, MT, MOD0 [ORS] |
0634 | c(41D804B4): ADD R1, SB, 4B4H ["TO"] |
0635 | c(42000003): MOV R2, R0, 3H |
0636 | d(F7FFFFB2): BL -78 [05E9H] |
| EnterKW(in,e "IN")f;g |
0637 | e(4000000F): MOV R0, R0, FH |
0638 | f .FIXUP D |
0638 | f(8D000005): LDR SB, MT, MOD0 [ORS] |
0639 | f(41D804B8): ADD R1, SB, 4B8H ["IN"] |
063A | f(42000003): MOV R2, R0, 3H |
063B | g(F7FFFFAD): BL -83 [05E9H] |
| EnterKW(is,h "IS")i;j |
063C | h(40000010): MOV R0, R0, 10H |
063D | i .FIXUP D |
063D | i(8D000005): LDR SB, MT, MOD0 [ORS] |
063E | i(41D804BC): ADD R1, SB, 4BCH ["IS"] |
063F | i(42000003): MOV R2, R0, 3H |
0640 | j(F7FFFFA8): BL -88 [05E9H] |
| EnterKW(by,k "BY")l;m |
0641 | k(40000033): MOV R0, R0, 33H |
0642 | l .FIXUP D |
0642 | l(8D000005): LDR SB, MT, MOD0 [ORS] |
0643 | l(41D804C0): ADD R1, SB, 4C0H ["BY"] |
0644 | l(42000003): MOV R2, R0, 3H |
0645 | m(F7FFFFA3): BL -93 [05E9H] |
| KWX[2] := k;n |
0646 | n .FIXUP D |
0646 | n(8D000004): LDR SB, MT, MOD0 [ORS] |
0647 | n(80D00194): LDR R0, SB, 194H [data] |
0648 | n(A0D001A0): STR R0, SB, 1A0H |
| EnterKW(end,o "END")p;q |
0649 | o(40000035): MOV R0, R0, 35H |
064A | p(41D804C4): ADD R1, SB, 4C4H |
064B | p(42000004): MOV R2, R0, 4H |
064C | q(F7FFFF9C): BL -100 [05E9H] |
| EnterKW(nil,r "NIL")s;t |
064D | r(40000019): MOV R0, R0, 19H |
064E | s .FIXUP D |
064E | s(8D000008): LDR SB, MT, MOD0 [ORS] |
064F | s(41D804C8): ADD R1, SB, 4C8H ["NIL"] |
0650 | s(42000004): MOV R2, R0, 4H |
0651 | t(F7FFFF97): BL -105 [05E9H] |
| EnterKW(var,u "VAR")v;w |
0652 | u(40000041): MOV R0, R0, 41H |
0653 | v .FIXUP D |
0653 | v(8D000005): LDR SB, MT, MOD0 [ORS] |
0654 | v(41D804CC): ADD R1, SB, 4CCH ["VAR"] |
0655 | v(42000004): MOV R2, R0, 4H |
0656 | w(F7FFFF92): BL -110 [05E9H] |
| EnterKW(div,x "DIV")y;z |
0657 | x(40000003): MOV R0, R0, 3H |
0658 | y .FIXUP D |
0658 | y(8D000005): LDR SB, MT, MOD0 [ORS] |
0659 | y(41D804D0): ADD R1, SB, 4D0H ["DIV"] |
065A | y(42000004): MOV R2, R0, 4H |
065B | z(F7FFFF8D): BL -115 [05E9H] |
| EnterKW(mod,a "MOD")b;c |
065C | a(40000004): MOV R0, R0, 4H |
065D | b .FIXUP D |
065D | b(8D000005): LDR SB, MT, MOD0 [ORS] |
065E | b(41D804D4): ADD R1, SB, 4D4H ["MOD"] |
065F | b(42000004): MOV R2, R0, 4H |
0660 | c(F7FFFF88): BL -120 [05E9H] |
| EnterKW(for,d "FOR")e;f |
0661 | d(40000025): MOV R0, R0, 25H |
0662 | e .FIXUP D |
0662 | e(8D000005): LDR SB, MT, MOD0 [ORS] |
0663 | e(41D804D8): ADD R1, SB, 4D8H ["FOR"] |
0664 | e(42000004): MOV R2, R0, 4H |
0665 | f(F7FFFF83): BL -125 [05E9H] |
| KWX[3] := k;g |
0666 | g .FIXUP D |
0666 | g(8D000004): LDR SB, MT, MOD0 [ORS] |
0667 | g(80D00194): LDR R0, SB, 194H [data] |
0668 | g(A0D001A4): STR R0, SB, 1A4H |
| EnterKW(else,h "ELSE")i;j |
0669 | h(40000037): MOV R0, R0, 37H |
066A | i(41D804DC): ADD R1, SB, 4DCH |
066B | i(42000005): MOV R2, R0, 5H |
066C | j(F7FFFF7C): BL -132 [05E9H] |
| EnterKW(then,k "THEN")l;m |
066D | k(4000002F): MOV R0, R0, 2FH |
066E | l .FIXUP D |
066E | l(8D000008): LDR SB, MT, MOD0 [ORS] |
066F | l(41D804E4): ADD R1, SB, 4E4H ["THEN"] |
0670 | l(42000005): MOV R2, R0, 5H |
0671 | m(F7FFFF77): BL -137 [05E9H] |
| EnterKW(true,n "TRUE")o;p |
0672 | n(40000018): MOV R0, R0, 18H |
0673 | o .FIXUP D |
0673 | o(8D000005): LDR SB, MT, MOD0 [ORS] |
0674 | o(41D804EC): ADD R1, SB, 4ECH ["TRUE"] |
0675 | o(42000005): MOV R2, R0, 5H |
0676 | p(F7FFFF72): BL -142 [05E9H] |
| EnterKW(type,q "TYPE")r;s |
0677 | q(40000040): MOV R0, R0, 40H |
0678 | r .FIXUP D |
0678 | r(8D000005): LDR SB, MT, MOD0 [ORS] |
0679 | r(41D804F4): ADD R1, SB, 4F4H ["TYPE"] |
067A | r(42000005): MOV R2, R0, 5H |
067B | s(F7FFFF6D): BL -147 [05E9H] |
| EnterKW(case,t "CASE")u;v |
067C | t(40000024): MOV R0, R0, 24H |
067D | u .FIXUP D |
067D | u(8D000005): LDR SB, MT, MOD0 [ORS] |
067E | u(41D804FC): ADD R1, SB, 4FCH ["CASE"] |
067F | u(42000005): MOV R2, R0, 5H |
0680 | v(F7FFFF68): BL -152 [05E9H] |
| KWX[4] := k;w |
0681 | w .FIXUP D |
0681 | w(8D000004): LDR SB, MT, MOD0 [ORS] |
0682 | w(80D00194): LDR R0, SB, 194H [data] |
0683 | w(A0D001A8): STR R0, SB, 1A8H |
| EnterKW(elsif,x "ELSIF")y;z |
0684 | x(40000038): MOV R0, R0, 38H |
0685 | y(41D80504): ADD R1, SB, 504H |
0686 | y(42000006): MOV R2, R0, 6H |
0687 | z(F7FFFF61): BL -159 [05E9H] |
| EnterKW(false,a "FALSE")b;c |
0688 | a(40000017): MOV R0, R0, 17H |
0689 | b .FIXUP D |
0689 | b(8D000008): LDR SB, MT, MOD0 [ORS] |
068A | b(41D8050C): ADD R1, SB, 50CH ["FALSE"] |
068B | b(42000006): MOV R2, R0, 6H |
068C | c(F7FFFF5C): BL -164 [05E9H] |
| EnterKW(array,d "ARRAY")e;f |
068D | d(4000003C): MOV R0, R0, 3CH |
068E | e .FIXUP D |
068E | e(8D000005): LDR SB, MT, MOD0 [ORS] |
068F | e(41D80514): ADD R1, SB, 514H ["ARRAY"] |
0690 | e(42000006): MOV R2, R0, 6H |
0691 | f(F7FFFF57): BL -169 [05E9H] |
| EnterKW(begin,g "BEGIN")h;i |
0692 | g(40000043): MOV R0, R0, 43H |
0693 | h .FIXUP D |
0693 | h(8D000005): LDR SB, MT, MOD0 [ORS] |
0694 | h(41D8051C): ADD R1, SB, 51CH ["BEGIN"] |
0695 | h(42000006): MOV R2, R0, 6H |
0696 | i(F7FFFF52): BL -174 [05E9H] |
| EnterKW(const,j "CONST")k;l |
0697 | j(4000003F): MOV R0, R0, 3FH |
0698 | k .FIXUP D |
0698 | k(8D000005): LDR SB, MT, MOD0 [ORS] |
0699 | k(41D80524): ADD R1, SB, 524H ["CONST"] |
069A | k(42000006): MOV R2, R0, 6H |
069B | l(F7FFFF4D): BL -179 [05E9H] |
| EnterKW(until,m "UNTIL")n;o |
069C | m(40000039): MOV R0, R0, 39H |
069D | n .FIXUP D |
069D | n(8D000005): LDR SB, MT, MOD0 [ORS] |
069E | n(41D8052C): ADD R1, SB, 52CH ["UNTIL"] |
069F | n(42000006): MOV R2, R0, 6H |
06A0 | o(F7FFFF48): BL -184 [05E9H] |
| EnterKW(while,p "WHILE")q;r |
06A1 | p(40000022): MOV R0, R0, 22H |
06A2 | q .FIXUP D |
06A2 | q(8D000005): LDR SB, MT, MOD0 [ORS] |
06A3 | q(41D80534): ADD R1, SB, 534H ["WHILE"] |
06A4 | q(42000006): MOV R2, R0, 6H |
06A5 | r(F7FFFF43): BL -189 [05E9H] |
| KWX[5] := k;s |
06A6 | s .FIXUP D |
06A6 | s(8D000004): LDR SB, MT, MOD0 [ORS] |
06A7 | s(80D00194): LDR R0, SB, 194H [data] |
06A8 | s(A0D001AC): STR R0, SB, 1ACH |
| EnterKW(record,t "RECORD")u;v |
06A9 | t(4000003D): MOV R0, R0, 3DH |
06AA | u(41D8053C): ADD R1, SB, 53CH |
06AB | u(42000007): MOV R2, R0, 7H |
06AC | v(F7FFFF3C): BL -196 [05E9H] |
| EnterKW(repeat,w "REPEAT")x;y |
06AD | w(40000023): MOV R0, R0, 23H |
06AE | x .FIXUP D |
06AE | x(8D000008): LDR SB, MT, MOD0 [ORS] |
06AF | x(41D80544): ADD R1, SB, 544H ["REPEAT"] |
06B0 | x(42000007): MOV R2, R0, 7H |
06B1 | y(F7FFFF37): BL -201 [05E9H] |
| EnterKW(return,z "RETURN")a;b |
06B2 | z(4000003A): MOV R0, R0, 3AH |
06B3 | a .FIXUP D |
06B3 | a(8D000005): LDR SB, MT, MOD0 [ORS] |
06B4 | a(41D8054C): ADD R1, SB, 54CH ["RETURN"] |
06B5 | a(42000007): MOV R2, R0, 7H |
06B6 | b(F7FFFF32): BL -206 [05E9H] |
| EnterKW(import,c "IMPORT")d;e |
06B7 | c(40000044): MOV R0, R0, 44H |
06B8 | d .FIXUP D |
06B8 | d(8D000005): LDR SB, MT, MOD0 [ORS] |
06B9 | d(41D80554): ADD R1, SB, 554H ["IMPORT"] |
06BA | d(42000007): MOV R2, R0, 7H |
06BB | e(F7FFFF2D): BL -211 [05E9H] |
| EnterKW(module,f "MODULE")g;h |
06BC | f(40000045): MOV R0, R0, 45H |
06BD | g .FIXUP D |
06BD | g(8D000005): LDR SB, MT, MOD0 [ORS] |
06BE | g(41D8055C): ADD R1, SB, 55CH ["MODULE"] |
06BF | g(42000007): MOV R2, R0, 7H |
06C0 | h(F7FFFF28): BL -216 [05E9H] |
| KWX[6] := k;i |
06C1 | i .FIXUP D |
06C1 | i(8D000004): LDR SB, MT, MOD0 [ORS] |
06C2 | i(80D00194): LDR R0, SB, 194H [data] |
06C3 | i(A0D001B0): STR R0, SB, 1B0H |
| EnterKW(pointer,j "POINTER")k;l |
06C4 | j(4000003E): MOV R0, R0, 3EH |
06C5 | k(41D80564): ADD R1, SB, 564H |
06C6 | k(42000008): MOV R2, R0, 8H |
06C7 | l(F7FFFF21): BL -223 [05E9H] |
| KWX[7] := k;m KWX[8] := k;n |
06C8 | m .FIXUP D |
06C8 | m(8D000007): LDR SB, MT, MOD0 [ORS] |
06C9 | m(80D00194): LDR R0, SB, 194H [data] |
06CA | m(A0D001B4): STR R0, SB, 1B4H |
06CB | n(80D00194): LDR R0, SB, 194H |
06CC | n(A0D001B8): STR R0, SB, 1B8H |
| EnterKW(procedure,o "PROCEDURE")p;q |
06CD | o(40000042): MOV R0, R0, 42H |
06CE | p(41D8056C): ADD R1, SB, 56CH |
06CF | p(4200000A): MOV R2, R0, AH |
06D0 | q(F7FFFF18): BL -232 [05E9H] |
| KWX[9] := k |
| ENDr ORS.s |
06D1 | r .FIXUP D |
06D1 | r(8D000009): LDR SB, MT, MOD0 [ORS] |
06D2 | r(80D00194): LDR R0, SB, 194H [data] |
06D3 | r(A0D001BC): STR R0, SB, 1BCH |
06D4 | s(8FE00000): LDR LNK, SP, 0H |
06D5 | s(4EE80004): ADD SP, SP, 4H |
06D6 | s(C700000F): B LNK |