| MODULE Texts; (*JG 21.11.90 / NW 11.7.90 / 24.12.95 / 22.11.10 / 20.3.2017*) |
| .MODULE Texts (KEY 0B9E9984, VERSION 1, SIZE 00002EB8) |
| .IMPORT Files (KEY 73F5D686) |
| .IMPORT Fonts (KEY F4C9F557) |
| .TYPEDESC 00000040 FFFFFFFF FFFFFFFF FFFFFFFF 0000001C 00000018 0000000C 00000000 FFFFFFFF 00000020 FFFFFFFF FFFFFFFF FFFFFFFF 00000010 0000000C FFFFFFFF 00000040 FFFFFFFF FFFFFFFF FFFFFFFF 00000024 00000030 00000010 00000004 FFFFFFFF 00000080 0006401A FFFFFFFF FFFFFFFF 00000024 00000030 00000010 00000004 FFFFFFFF 00000020 FFFFFFFF FFFFFFFF FFFFFFFF 00000008 00000004 FFFFFFFF 00000040 FFFFFFFF FFFFFFFF FFFFFFFF 00000018 00000024 00000004 00000000 FFFFFFFF |
| .DATA 4H |
| .STRING CCH "" |
| .STRING D0H " -2147483648" |
| .STRING E0H " 0 " |
| .STRING E8H " NaN " |
| .STRING F0H " 0" |
| .STRING F4H "" |
| .POINTER_REFERENCES C8H |
| .FIXUP T 1AH |
| IMPORT Files, Fonts; |
| |
| CONST (*scanner symbol classes*) |
| Inval* = 0; (*invalid symbol*) |
| Name* = 1; (*name s (length len)*) |
| String* = 2; (*literal string s (length len)*) |
| Int* = 3; (*integer i (decimal or hexadecimal)*) |
| Real* = 4; (*real number x*) |
| Char* = 6; (*special character c*) |
| |
| (* TextBlock = TextTag "1" offset run {run} "0" len {AsciiCode}. |
| run = fnt [name] col voff len. *) |
| |
| TAB = 9X; CR = 0DX; maxD = 9; |
| TextTag = 0F1X; |
| replace* = 0; insert* = 1; delete* = 2; unmark* = 3; (*op-codes*) |
| |
| TYPE Piece = POINTER TO PieceDesc; |
| PieceDesc = RECORD |
| f: Files.File; |
| off, len: LONGINT; |
| fnt: Fonts.Font; |
| col, voff: INTEGER; |
| prev, next: Piece |
| END; |
| |
| Text* = POINTER TO TextDesc; |
| Notifier* = PROCEDURE (T: Text; op: INTEGER; beg, end: LONGINT); |
| TextDesc* = RECORD |
| len*: LONGINT; |
| changed*: BOOLEAN; |
| notify*: Notifier; |
| trailer: Piece; |
| pce: Piece; (*cache*) |
| org: LONGINT; (*cache*) |
| END; |
| |
| Reader* = RECORD |
| eot*: BOOLEAN; |
| fnt*: Fonts.Font; |
| col*, voff*: INTEGER; |
| ref: Piece; |
| org: LONGINT; |
| off: LONGINT; |
| rider: Files.Rider |
| END; |
| |
| Scanner* = RECORD (Reader) |
| nextCh*: CHAR; |
| line*, class*: INTEGER; |
| i*: LONGINT; |
| x*: REAL; |
| y*: LONGREAL; |
| c*: CHAR; |
| len*: INTEGER; |
| s*: ARRAY 32 OF CHAR |
| END; |
| |
| Buffer* = POINTER TO BufDesc; |
| BufDesc* = RECORD |
| len*: LONGINT; |
| header, last: Piece |
| END; |
| |
| Writer* = RECORD |
| buf*: Buffer; |
| fnt*: Fonts.Font; |
| col*, voff*: INTEGER; |
| rider: Files.Rider |
| END; |
| |
| VAR TrailerFile: Files.File; |
| |
| (* -------------------- Filing ------------------------*) |
| |
| PROCEDURE Trailer(): Piece; |
| VAR Q: Piece; |
| BEGINa NEW(Q);b |
0000 | a(4EE90008): SUB SP, SP, 8H |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | b(40E80004): ADD R0, SP, 4H |
0003 | b .FIXUP D |
0003 | b(8D000003): LDR SB, MT, MOD0 [Texts] |
0004 | b(41D80000): ADD R1, SB, 0H [data] |
0005 | b(D7079F0C): BL MT [trap=0, pos=1951] |
| Q.fc := TrailerFile;d Q.offe := -1;f Q.leng := 1;h Q.fnti := NIL;j Q.colk := 0;l Q.voffm := 0;n RETURN Q |
0006 | c(80E00004): LDR R0, SP, 4H |
0007 | c(D107A74C): BLEQ MT [trap=4, pos=1959] |
0008 | d .FIXUP D |
0008 | d(8D000005): LDR SB, MT, MOD0 [Texts] |
0009 | d .PROC 1 |
0009 | d(81D000C8): LDR R1, SB, C8H [data] |
000A | d(A1000000): STR R1, R0, 0H |
000B | e(80E00004): LDR R0, SP, 4H |
000C | e(D107BD4C): BLEQ MT [trap=4, pos=1981] |
000D | f(5100FFFF): MOV R1, R0, FFFFFFFFH |
000E | f(A1000004): STR R1, R0, 4H |
000F | g(80E00004): LDR R0, SP, 4H |
0010 | g .PROC 2 |
0010 | g(D107CA4C): BLEQ MT [trap=4, pos=1994] |
0011 | h(41000001): MOV R1, R0, 1H |
0012 | h(A1000008): STR R1, R0, 8H |
0013 | i(80E00004): LDR R0, SP, 4H |
0014 | i(D107D64C): BLEQ MT [trap=4, pos=2006] |
0015 | j(41000000): MOV R1, R0, 0H |
0016 | j(A100000C): STR R1, R0, CH |
0017 | k(80E00004): LDR R0, SP, 4H |
0018 | k(D107E44C): BLEQ MT [trap=4, pos=2020] |
0019 | l .PROC 3 |
0019 | l(41000000): MOV R1, R0, 0H |
001A | l(A1000010): STR R1, R0, 10H |
001B | m(80E00004): LDR R0, SP, 4H |
001C | m(D107F14C): BLEQ MT [trap=4, pos=2033] |
001D | n(41000000): MOV R1, R0, 0H |
001E | n(A1000014): STR R1, R0, 14H |
| ENDo Trailer; |
001F | o(80E00004): LDR R0, SP, 4H |
0020 | o(8FE00000): LDR LNK, SP, 0H |
0021 | o(4EE80008): ADD SP, SP, 8H |
0022 | o .PROC 4 |
0022 | o(C700000F): B LNK |
| |
| PROCEDURE Load* (VAR R: Files.Rider; T: Text); |
| VAR Q, q, p: Piece; |
| off: LONGINT; |
| N, fno: INTEGER; bt: BYTE; |
| f: Files.File; |
| FName: ARRAY 32 OF CHAR; |
| Dict: ARRAY 32 OF Fonts.Font; |
| BEGINp f := Files.Base(R)q;r N := 1;s Q := Trailer();t p := Q;u |
0023 | p .PROC 6 |
0023 | p(4EE900D0): SUB SP, SP, D0H |
0024 | p(AFE00000): STR LNK, SP, 0H |
0025 | p(A0E00004): STR R0, SP, 4H |
0026 | p(A1E00008): STR R1, SP, 8H |
0027 | p(A2E0000C): STR R2, SP, CH |
0028 | q(80E00004): LDR R0, SP, 4H |
0029 | q .PROC 5 |
0029 | q(81E00008): LDR R1, SP, 8H |
002A | r .FIXUP P |
002A | r(F710D02A): BL MOD1 [Files] PROC13 |
002B | r(A0E0002C): STR R0, SP, 2CH |
002C | s(40000001): MOV R0, R0, 1H |
002D | s(A0E00020): STR R0, SP, 20H |
002E | t(F7FFFFD1): BL -47 [0000H] |
002F | t(A0E00010): STR R0, SP, 10H |
0030 | u(80E00010): LDR R0, SP, 10H |
0031 | u(A0E00018): STR R0, SP, 18H |
| Files.ReadInt(R,v off)w;x Files.ReadByte(R,y bt)z;a fno := bt;b |
0032 | v(80E00004): LDR R0, SP, 4H |
0033 | v(81E00008): LDR R1, SP, 8H |
0034 | w(42E8001C): ADD R2, SP, 1CH |
0035 | x .FIXUP P |
0035 | x(F711100B): BL MOD1 [Files] PROC17 |
0036 | y(80E00004): LDR R0, SP, 4H |
0037 | y(81E00008): LDR R1, SP, 8H |
0038 | z(42E80028): ADD R2, SP, 28H |
0039 | a .FIXUP P |
0039 | a(F710E004): BL MOD1 [Files] PROC14 |
003A | b(90E00028): LDR R0, SP, 28H |
003B | b(A0E00024): STR R0, SP, 24H |
| WHILE fno # 0 DOc |
003C | c(80E00024): LDR R0, SP, 24H |
003D | c(E100005E): BEQ 94 [009CH] |
| IF fno = N THENd |
003E | d(80E00024): LDR R0, SP, 24H |
003F | d(81E00020): LDR R1, SP, 20H |
0040 | d(00090001): SUB R0, R0, R1 |
0041 | d(E9000016): BNE 22 [0058H] |
| Files.ReadString(R,e FName)f;g |
0042 | e(80E00004): LDR R0, SP, 4H |
0043 | e(81E00008): LDR R1, SP, 8H |
0044 | f(42E80030): ADD R2, SP, 30H |
0045 | f(43000020): MOV R3, R0, 20H |
0046 | g .FIXUP P |
0046 | g(F711400D): BL MOD1 [Files] PROC20 |
| Dict[N]h := Fonts.This(FNamei)j;k INC(N) |
0047 | h(80E00020): LDR R0, SP, 20H |
0048 | h(41090020): SUB R1, R0, 20H |
0049 | h(DA09BE1C): BLCC MT [trap=1, pos=2494] |
004A | h(40010002): LSL R0, R0, 2H |
004B | h(00E80000): ADD R0, SP, R0 |
004C | i(4EE90004): SUB SP, SP, 4H |
004D | i(A0E00000): STR R0, SP, 0H |
004E | j(40E80034): ADD R0, SP, 34H |
004F | j(41000020): MOV R1, R0, 20H |
0050 | k .FIXUP P |
0050 | k(F720500A): BL MOD2 [Fonts] PROC5 |
0051 | k(01000000): MOV R1, R0, R0 |
0052 | k(80E00000): LDR R0, SP, 0H |
0053 | k(4EE80004): ADD SP, SP, 4H |
0054 | k(A1000050): STR R1, R0, 50H |
| ENDl; |
0055 | l(80E00020): LDR R0, SP, 20H |
0056 | l(40080001): ADD R0, R0, 1H |
0057 | l(A0E00020): STR R0, SP, 20H |
| NEW(q);m q.fntn := Dict[fno]o;p |
0058 | m(40E80014): ADD R0, SP, 14H |
0059 | m .FIXUP D |
0059 | m(8D000051): LDR SB, MT, MOD0 [Texts] |
005A | m(41D80000): ADD R1, SB, 0H [data] |
005B | m(D709F40C): BL MT [trap=0, pos=2548] |
005C | n(80E00014): LDR R0, SP, 14H |
005D | n(D109FA4C): BLEQ MT [trap=4, pos=2554] |
005E | o(81E00024): LDR R1, SP, 24H |
005F | o(42190020): SUB R2, R1, 20H |
0060 | o(DA0A071C): BLCC MT [trap=1, pos=2567] |
0061 | o(41110002): LSL R1, R1, 2H |
0062 | o(01E80001): ADD R1, SP, R1 |
0063 | p(81100050): LDR R1, R1, 50H |
0064 | p(A100000C): STR R1, R0, CH |
| Files.ReadByte(R,q bt)r;s q.colt := bt;u |
0065 | q(80E00004): LDR R0, SP, 4H |
0066 | q(81E00008): LDR R1, SP, 8H |
0067 | r(42E80028): ADD R2, SP, 28H |
0068 | s .FIXUP P |
0068 | s(F710E018): BL MOD1 [Files] PROC14 |
0069 | t(80E00014): LDR R0, SP, 14H |
006A | t(D10A2B4C): BLEQ MT [trap=4, pos=2603] |
006B | u(91E00028): LDR R1, SP, 28H |
006C | u(A1000010): STR R1, R0, 10H |
| Files.ReadByte(R,v bt)w;x q.voffy := ASR(LSL(bt, -24),z 24);a |
006D | v(80E00004): LDR R0, SP, 4H |
006E | v(81E00008): LDR R1, SP, 8H |
006F | w(42E80028): ADD R2, SP, 28H |
0070 | x .FIXUP P |
0070 | x(F710E008): BL MOD1 [Files] PROC14 |
0071 | y(80E00014): LDR R0, SP, 14H |
0072 | y(D10A564C): BLEQ MT [trap=4, pos=2646] |
0073 | z(91E00028): LDR R1, SP, 28H |
0074 | z(41110008): LSL R1, R1, 8H |
0075 | a(41120018): ASR R1, R1, 18H |
0076 | a(A1000014): STR R1, R0, 14H |
| Files.ReadInt(R,b q.lenc)d;e |
0077 | b(80E00004): LDR R0, SP, 4H |
0078 | b(81E00008): LDR R1, SP, 8H |
0079 | c(82E00014): LDR R2, SP, 14H |
007A | c(D10A8D4C): BLEQ MT [trap=4, pos=2701] |
007B | d(42280008): ADD R2, R2, 8H |
007C | e .FIXUP P |
007C | e(F711100C): BL MOD1 [Files] PROC17 |
| Files.ReadByte(R,f bt)g;h fno := bt;i |
007D | f(80E00004): LDR R0, SP, 4H |
007E | f(81E00008): LDR R1, SP, 8H |
007F | g(42E80028): ADD R2, SP, 28H |
0080 | h .FIXUP P |
0080 | h(F710E004): BL MOD1 [Files] PROC14 |
0081 | i(90E00028): LDR R0, SP, 28H |
0082 | i(A0E00024): STR R0, SP, 24H |
| q.fj := f;k q.offl := off;m off := off + q.lenn;o |
0083 | j(80E00014): LDR R0, SP, 14H |
0084 | j(D10AC14C): BLEQ MT [trap=4, pos=2753] |
0085 | k(81E0002C): LDR R1, SP, 2CH |
0086 | k(A1000000): STR R1, R0, 0H |
0087 | l(80E00014): LDR R0, SP, 14H |
0088 | l(D10ACD4C): BLEQ MT [trap=4, pos=2765] |
0089 | m(81E0001C): LDR R1, SP, 1CH |
008A | m(A1000004): STR R1, R0, 4H |
008B | n(80E00014): LDR R0, SP, 14H |
008C | n(D10AE84C): BLEQ MT [trap=4, pos=2792] |
008D | o(81E0001C): LDR R1, SP, 1CH |
008E | o(80000008): LDR R0, R0, 8H |
008F | o(00180000): ADD R0, R1, R0 |
0090 | o(A0E0001C): STR R0, SP, 1CH |
| p.nextp := q;q q.prevr := p;s p := q |
0091 | p(80E00018): LDR R0, SP, 18H |
0092 | p(D10AF64C): BLEQ MT [trap=4, pos=2806] |
0093 | q(81E00014): LDR R1, SP, 14H |
0094 | q(A100001C): STR R1, R0, 1CH |
0095 | r(80E00014): LDR R0, SP, 14H |
0096 | r(D10B034C): BLEQ MT [trap=4, pos=2819] |
0097 | s(81E00018): LDR R1, SP, 18H |
0098 | s(A1000018): STR R1, R0, 18H |
| ENDt; |
0099 | t(80E00014): LDR R0, SP, 14H |
009A | t(A0E00018): STR R0, SP, 18H |
009B | t(E7FFFFA0): B -96 [003CH] |
| p.nextu := Q;v Q.prevw := p;x |
009C | u(80E00018): LDR R0, SP, 18H |
009D | u(D10B244C): BLEQ MT [trap=4, pos=2852] |
009E | v(81E00010): LDR R1, SP, 10H |
009F | v(A100001C): STR R1, R0, 1CH |
00A0 | w(80E00010): LDR R0, SP, 10H |
00A1 | w(D10B314C): BLEQ MT [trap=4, pos=2865] |
00A2 | x(81E00018): LDR R1, SP, 18H |
00A3 | x(A1000018): STR R1, R0, 18H |
| T.trailery := Q;z Files.ReadInt(R,a T.lenb);c (*Files.Set(R, f, Files.Pos(R) + T.len)*) |
00A4 | y(80E0000C): LDR R0, SP, CH |
00A5 | y(D10B454C): BLEQ MT [trap=4, pos=2885] |
00A6 | z(81E00010): LDR R1, SP, 10H |
00A7 | z(A100000C): STR R1, R0, CH |
00A8 | a(80E00004): LDR R0, SP, 4H |
00A9 | a(81E00008): LDR R1, SP, 8H |
00AA | b(82E0000C): LDR R2, SP, CH |
00AB | b(D10B624C): BLEQ MT [trap=4, pos=2914] |
00AC | c .FIXUP P |
00AC | c(F711102C): BL MOD1 [Files] PROC17 |
| ENDd Load; |
00AD | d(8FE00000): LDR LNK, SP, 0H |
00AE | d(4EE800D0): ADD SP, SP, D0H |
00AF | d(C700000F): B LNK |
| |
| PROCEDURE Open* (T: Text; name: ARRAY OF CHAR); |
| VAR f: Files.File; R: Files.Rider; Q, q: Piece; |
| tag: CHAR; len: LONGINT; |
| BEGINe f := Files.Old(name)f;g |
00B0 | e .PROC 7 |
00B0 | e(4EE9003C): SUB SP, SP, 3CH |
00B1 | e(AFE00000): STR LNK, SP, 0H |
00B2 | e(A0E00004): STR R0, SP, 4H |
00B3 | e(A1E00008): STR R1, SP, 8H |
00B4 | e(A2E0000C): STR R2, SP, CH |
00B5 | f(80E00008): LDR R0, SP, 8H |
00B6 | f(81E0000C): LDR R1, SP, CH |
00B7 | g .FIXUP P |
00B7 | g(F710200B): BL MOD1 [Files] PROC2 |
00B8 | g(A0E00010): STR R0, SP, 10H |
| IF f # NIL THENh |
00B9 | h(80E00010): LDR R0, SP, 10H |
00BA | h(E100004F): BEQ 79 [010AH] |
| Files.Set(R,i f,j 0)k;l Files.Read(R,m tag)n;o |
00BB | i(40E80014): ADD R0, SP, 14H |
00BC | i .FIXUP D |
00BC | i(8D100063): LDR SB, MT, MOD1 [Files] |
00BD | i(41D80001): ADD R1, SB, VAR1 |
00BE | j(82E00010): LDR R2, SP, 10H |
00BF | k(43000000): MOV R3, R0, 0H |
00C0 | l .FIXUP P |
00C0 | l(F710B009): BL MOD1 [Files] PROC11 |
00C1 | m(40E80014): ADD R0, SP, 14H |
00C2 | m .FIXUP D |
00C2 | m(8D100006): LDR SB, MT, MOD1 [Files] |
00C3 | m(41D80001): ADD R1, SB, VAR1 |
00C4 | n(42E80034): ADD R2, SP, 34H |
00C5 | o .FIXUP P |
00C5 | o(F7110005): BL MOD1 [Files] PROC16 |
| IF tag = TextTag THENp Load(R,q T)r |
00C6 | p(90E00034): LDR R0, SP, 34H |
00C7 | p(400900F1): SUB R0, R0, F1H |
00C8 | p(E9000006): BNE 6 [00CFH] |
00C9 | q(40E80014): ADD R0, SP, 14H |
00CA | q .FIXUP D |
00CA | q(8D100008): LDR SB, MT, MOD1 [Files] |
00CB | q(41D80001): ADD R1, SB, VAR1 |
00CC | r(82E00004): LDR R2, SP, 4H |
| ELSEs (*Ascii file*) |
00CD | s(F7FFFF55): BL -171 [0023H] |
| lent := Files.Length(f)u;v Q := Trailer();w |
00CE | t(E700003A): B 58 [0109H] |
00CF | u(80E00010): LDR R0, SP, 10H |
00D0 | v .FIXUP P |
00D0 | v(F710900B): BL MOD1 [Files] PROC9 |
00D1 | v(A0E00038): STR R0, SP, 38H |
00D2 | w(F7FFFF2D): BL -211 [0000H] |
00D3 | w(A0E0002C): STR R0, SP, 2CH |
| NEW(q);x q.fnty := Fonts.Default;z q.cola := 1;b q.voffc := 0;d q.fe := f;f q.offg := 0;h q.leni := len;j |
00D4 | x(40E80030): ADD R0, SP, 30H |
00D5 | x .FIXUP D |
00D5 | x(8D00000B): LDR SB, MT, MOD0 [Texts] |
00D6 | x(41D80000): ADD R1, SB, 0H [data] |
00D7 | x(D70D020C): BL MT [trap=0, pos=3330] |
00D8 | y(80E00030): LDR R0, SP, 30H |
00D9 | y(D10D084C): BLEQ MT [trap=4, pos=3336] |
00DA | z .FIXUP D |
00DA | z(8D200005): LDR SB, MT, MOD2 [Fonts] |
00DB | z(81D00002): LDR R1, SB, VAR2 |
00DC | z(A100000C): STR R1, R0, CH |
00DD | a(80E00030): LDR R0, SP, 30H |
00DE | a(D10D204C): BLEQ MT [trap=4, pos=3360] |
00DF | b(41000001): MOV R1, R0, 1H |
00E0 | b(A1000010): STR R1, R0, 10H |
00E1 | c(80E00030): LDR R0, SP, 30H |
00E2 | c(D10D2D4C): BLEQ MT [trap=4, pos=3373] |
00E3 | d(41000000): MOV R1, R0, 0H |
00E4 | d(A1000014): STR R1, R0, 14H |
00E5 | e(80E00030): LDR R0, SP, 30H |
00E6 | e(D10D374C): BLEQ MT [trap=4, pos=3383] |
00E7 | f(81E00010): LDR R1, SP, 10H |
00E8 | f(A1000000): STR R1, R0, 0H |
00E9 | g(80E00030): LDR R0, SP, 30H |
00EA | g(D10D434C): BLEQ MT [trap=4, pos=3395] |
00EB | h(41000000): MOV R1, R0, 0H |
00EC | h(A1000004): STR R1, R0, 4H |
00ED | i(80E00030): LDR R0, SP, 30H |
00EE | i(D10D4F4C): BLEQ MT [trap=4, pos=3407] |
00EF | j(81E00038): LDR R1, SP, 38H |
00F0 | j(A1000008): STR R1, R0, 8H |
| Q.nextk := q;l q.prevm := Q;n q.nexto := Q;p Q.prevq := q;r T.trailers := Q;t T.lenu := len |
00F1 | k(80E0002C): LDR R0, SP, 2CH |
00F2 | k(D10D664C): BLEQ MT [trap=4, pos=3430] |
00F3 | l(81E00030): LDR R1, SP, 30H |
00F4 | l(A100001C): STR R1, R0, 1CH |
00F5 | m(80E00030): LDR R0, SP, 30H |
00F6 | m(D10D734C): BLEQ MT [trap=4, pos=3443] |
00F7 | n(81E0002C): LDR R1, SP, 2CH |
00F8 | n(A1000018): STR R1, R0, 18H |
00F9 | o(80E00030): LDR R0, SP, 30H |
00FA | o(D10D804C): BLEQ MT [trap=4, pos=3456] |
00FB | p(81E0002C): LDR R1, SP, 2CH |
00FC | p(A100001C): STR R1, R0, 1CH |
00FD | q(80E0002C): LDR R0, SP, 2CH |
00FE | q(D10D8D4C): BLEQ MT [trap=4, pos=3469] |
00FF | r(81E00030): LDR R1, SP, 30H |
0100 | r(A1000018): STR R1, R0, 18H |
0101 | s(80E00004): LDR R0, SP, 4H |
0102 | s(D10D9D4C): BLEQ MT [trap=4, pos=3485] |
0103 | t(81E0002C): LDR R1, SP, 2CH |
0104 | t(A100000C): STR R1, R0, CH |
0105 | u(80E00004): LDR R0, SP, 4H |
0106 | u(D10DA94C): BLEQ MT [trap=4, pos=3497] |
| ENDv |
0107 | v(81E00038): LDR R1, SP, 38H |
0108 | v(A1000000): STR R1, R0, 0H |
| ELSE (*create new text*) |
| Qw := Trailer();x Q.nexty := Q;z Q.preva := Q;b T.trailerc := Q;d T.lene := 0 |
0109 | w(E7000012): B 18 [011CH] |
010A | x(F7FFFEF5): BL -267 [0000H] |
010B | x(A0E0002C): STR R0, SP, 2CH |
010C | y(80E0002C): LDR R0, SP, 2CH |
010D | y(D10DF44C): BLEQ MT [trap=4, pos=3572] |
010E | z(81E0002C): LDR R1, SP, 2CH |
010F | z(A100001C): STR R1, R0, 1CH |
0110 | a(80E0002C): LDR R0, SP, 2CH |
0111 | a(D10E014C): BLEQ MT [trap=4, pos=3585] |
0112 | b(81E0002C): LDR R1, SP, 2CH |
0113 | b(A1000018): STR R1, R0, 18H |
0114 | c(80E00004): LDR R0, SP, 4H |
0115 | c(D10E114C): BLEQ MT [trap=4, pos=3601] |
0116 | d(81E0002C): LDR R1, SP, 2CH |
0117 | d(A100000C): STR R1, R0, CH |
0118 | e(80E00004): LDR R0, SP, 4H |
0119 | e(D10E1D4C): BLEQ MT [trap=4, pos=3613] |
| ENDf ; |
011A | f(41000000): MOV R1, R0, 0H |
011B | f(A1000000): STR R1, R0, 0H |
| T.changedg := FALSE;h T.orgi := -1;j T.pcek := T.trailerl (*init cache*) |
011C | g(80E00004): LDR R0, SP, 4H |
011D | g(D10E3A4C): BLEQ MT [trap=4, pos=3642] |
011E | h(41000000): MOV R1, R0, 0H |
011F | h(B1000004): STR R1, R0, 4H |
0120 | i(80E00004): LDR R0, SP, 4H |
0121 | i(D10E4A4C): BLEQ MT [trap=4, pos=3658] |
0122 | j(5100FFFF): MOV R1, R0, FFFFFFFFH |
0123 | j(A1000014): STR R1, R0, 14H |
0124 | k(80E00004): LDR R0, SP, 4H |
0125 | k(D10E574C): BLEQ MT [trap=4, pos=3671] |
0126 | l(81E00004): LDR R1, SP, 4H |
0127 | l(D10E644C): BLEQ MT [trap=4, pos=3684] |
| ENDm Open; |
0128 | m(8110000C): LDR R1, R1, CH |
0129 | m(A1000010): STR R1, R0, 10H |
012A | m(8FE00000): LDR LNK, SP, 0H |
012B | m(4EE8003C): ADD SP, SP, 3CH |
012C | m(C700000F): B LNK |
| |
| PROCEDURE Store* (VAR W: Files.Rider; T: Text); |
| VAR p, q: Piece; |
| R: Files.Rider; |
| off, rlen, pos: LONGINT; |
| N, n: INTEGER; |
| ch: CHAR; |
| Dict: ARRAY 32, 32 OF CHAR; |
| BEGINn pos := Files.Pos(W)o;p Files.WriteInt(W,q 0)r;s (*place holder*) |
012D | n .PROC 8 |
012D | n(4EE90448): SUB SP, SP, 448H |
012E | n(AFE00000): STR LNK, SP, 0H |
012F | n(A0E00004): STR R0, SP, 4H |
0130 | n(A1E00008): STR R1, SP, 8H |
0131 | n(A2E0000C): STR R2, SP, CH |
0132 | o(80E00004): LDR R0, SP, 4H |
0133 | o(81E00008): LDR R1, SP, 8H |
0134 | p .FIXUP P |
0134 | p(F710C064): BL MOD1 [Files] PROC12 |
0135 | p(A0E00038): STR R0, SP, 38H |
0136 | q(80E00004): LDR R0, SP, 4H |
0137 | q(81E00008): LDR R1, SP, 8H |
0138 | r(42000000): MOV R2, R0, 0H |
0139 | s .FIXUP P |
0139 | s(F7119005): BL MOD1 [Files] PROC25 |
| N := 1;t p := T.traileru.nextv;w |
013A | t(40000001): MOV R0, R0, 1H |
013B | t(A0E0003C): STR R0, SP, 3CH |
013C | u(80E0000C): LDR R0, SP, CH |
013D | u(D10FA24C): BLEQ MT [trap=4, pos=4002] |
013E | v(8000000C): LDR R0, R0, CH |
013F | v(D10FA74C): BLEQ MT [trap=4, pos=4007] |
0140 | w(8000001C): LDR R0, R0, 1CH |
0141 | w(A0E00010): STR R0, SP, 10H |
| WHILE p # T.trailerx DOy |
0142 | x(80E0000C): LDR R0, SP, CH |
0143 | x(D10FC04C): BLEQ MT [trap=4, pos=4032] |
0144 | y(81E00010): LDR R1, SP, 10H |
0145 | y(8000000C): LDR R0, R0, CH |
0146 | y(01190000): SUB R1, R1, R0 |
0147 | y(E1000081): BEQ 129 [01C9H] |
| rlen := p.lenz;a q := p.nextb;c |
0148 | z(80E00010): LDR R0, SP, 10H |
0149 | z(D10FD74C): BLEQ MT [trap=4, pos=4055] |
014A | a(80000008): LDR R0, R0, 8H |
014B | a(A0E00034): STR R0, SP, 34H |
014C | b(80E00010): LDR R0, SP, 10H |
014D | b(D10FE44C): BLEQ MT [trap=4, pos=4068] |
014E | c(8000001C): LDR R0, R0, 1CH |
014F | c(A0E00014): STR R0, SP, 14H |
| WHILE (q # T.trailerd)e & (fq.fntg = p.fnth)i & (jq.colk = p.coll)m & (nq.voffo = p.voffp)q DOr |
0150 | d(80E0000C): LDR R0, SP, CH |
0151 | d(D110004C): BLEQ MT [trap=4, pos=4096] |
0152 | e(81E00014): LDR R1, SP, 14H |
0153 | e(8000000C): LDR R0, R0, CH |
0154 | e(01190000): SUB R1, R1, R0 |
0155 | f(E1000023): BEQ 35 [0179H] |
0156 | g(80E00014): LDR R0, SP, 14H |
0157 | g(D1100A4C): BLEQ MT [trap=4, pos=4106] |
0158 | h(81E00010): LDR R1, SP, 10H |
0159 | h(D110124C): BLEQ MT [trap=4, pos=4114] |
015A | i(8000000C): LDR R0, R0, CH |
015B | i(8110000C): LDR R1, R1, CH |
015C | i(00090001): SUB R0, R0, R1 |
015D | j(E900001B): BNE 27 [0179H] |
015E | k(80E00014): LDR R0, SP, 14H |
015F | k(D1101C4C): BLEQ MT [trap=4, pos=4124] |
0160 | l(81E00010): LDR R1, SP, 10H |
0161 | l(D110244C): BLEQ MT [trap=4, pos=4132] |
0162 | m(80000010): LDR R0, R0, 10H |
0163 | m(81100010): LDR R1, R1, 10H |
0164 | m(00090001): SUB R0, R0, R1 |
0165 | n(E9000013): BNE 19 [0179H] |
0166 | o(80E00014): LDR R0, SP, 14H |
0167 | o(D1102F4C): BLEQ MT [trap=4, pos=4143] |
0168 | p(81E00010): LDR R1, SP, 10H |
0169 | p(D110384C): BLEQ MT [trap=4, pos=4152] |
016A | q(80000014): LDR R0, R0, 14H |
016B | q(81100014): LDR R1, R1, 14H |
016C | q(00090001): SUB R0, R0, R1 |
016D | r(E900000B): BNE 11 [0179H] |
| rlen := rlen + q.lens;t q := q.nextu |
016E | s(80E00014): LDR R0, SP, 14H |
016F | s(D110594C): BLEQ MT [trap=4, pos=4185] |
0170 | t(81E00034): LDR R1, SP, 34H |
0171 | t(80000008): LDR R0, R0, 8H |
0172 | t(00180000): ADD R0, R1, R0 |
0173 | t(A0E00034): STR R0, SP, 34H |
0174 | u(80E00014): LDR R0, SP, 14H |
0175 | u(D110664C): BLEQ MT [trap=4, pos=4198] |
| ENDv; |
0176 | v(8000001C): LDR R0, R0, 1CH |
0177 | v(A0E00014): STR R0, SP, 14H |
0178 | v(E7FFFFD7): B -41 [0150H] |
| Dict[N]w := p.fntx.namey;z |
0179 | w(80E0003C): LDR R0, SP, 3CH |
017A | w(41090020): SUB R1, R0, 20H |
017B | w(DA107F1C): BLCC MT [trap=1, pos=4223] |
017C | w(400A0020): MUL R0, R0, 20H |
017D | w(00E80000): ADD R0, SP, R0 |
017E | x(81E00010): LDR R1, SP, 10H |
017F | x(D110884C): BLEQ MT [trap=4, pos=4232] |
0180 | y(8110000C): LDR R1, R1, CH |
0181 | y(D1108D4C): BLEQ MT [trap=4, pos=4237] |
0182 | z(40080048): ADD R0, R0, 48H |
0183 | z(42000008): MOV R2, R0, 8H |
0184 | z(83100000): LDR R3, R1, 0H |
0185 | z(41180004): ADD R1, R1, 4H |
0186 | z(A3000000): STR R3, R0, 0H |
0187 | z(40080004): ADD R0, R0, 4H |
0188 | z(42290001): SUB R2, R2, 1H |
0189 | z(E9FFFFFA): BNE -6 [0184H] |
| n := 1;a |
018A | a(40000001): MOV R0, R0, 1H |
018B | a(A0E00040): STR R0, SP, 40H |
| WHILE Dict[n]b # p.fntc.named DOe INC(n) ENDf; |
018C | b(80E00040): LDR R0, SP, 40H |
018D | b(41090020): SUB R1, R0, 20H |
018E | b(DA10B01C): BLCC MT [trap=1, pos=4272] |
018F | b(400A0020): MUL R0, R0, 20H |
0190 | b(00E80000): ADD R0, SP, R0 |
0191 | c(81E00010): LDR R1, SP, 10H |
0192 | c(D110B84C): BLEQ MT [trap=4, pos=4280] |
0193 | d(8110000C): LDR R1, R1, CH |
0194 | d(D110BD4C): BLEQ MT [trap=4, pos=4285] |
0195 | e(40080048): ADD R0, R0, 48H |
0196 | e(92000000): LDR R2, R0, 0H |
0197 | e(40080001): ADD R0, R0, 1H |
0198 | e(93100000): LDR R3, R1, 0H |
0199 | e(41180001): ADD R1, R1, 1H |
019A | e(04290003): SUB R4, R2, R3 |
019B | e(E9000002): BNE 2 [019EH] |
019C | e(44290000): SUB R4, R2, 0H |
019D | e(E9FFFFF8): BNE -8 [0196H] |
019E | e(E1000004): BEQ 4 [01A3H] |
019F | f(80E00040): LDR R0, SP, 40H |
01A0 | f(40080001): ADD R0, R0, 1H |
01A1 | f(A0E00040): STR R0, SP, 40H |
01A2 | f(E7FFFFE9): B -23 [018CH] |
| Files.WriteByte(W,g n)h;i |
01A3 | g(80E00004): LDR R0, SP, 4H |
01A4 | g(81E00008): LDR R1, SP, 8H |
01A5 | h(82E00040): LDR R2, SP, 40H |
01A6 | i .FIXUP P |
01A6 | i(F711606D): BL MOD1 [Files] PROC22 |
| IF n = N THENj Files.WriteString(W,k p.fntl.namem)n;o INC(N) ENDp; |
01A7 | j(80E00040): LDR R0, SP, 40H |
01A8 | j(81E0003C): LDR R1, SP, 3CH |
01A9 | j(00090001): SUB R0, R0, R1 |
01AA | j(E900000B): BNE 11 [01B6H] |
01AB | k(80E00004): LDR R0, SP, 4H |
01AC | k(81E00008): LDR R1, SP, 8H |
01AD | l(82E00010): LDR R2, SP, 10H |
01AE | l(D111184C): BLEQ MT [trap=4, pos=4376] |
01AF | m(8220000C): LDR R2, R2, CH |
01B0 | m(D1111D4C): BLEQ MT [trap=4, pos=4381] |
01B1 | n(43000020): MOV R3, R0, 20H |
01B2 | o .FIXUP P |
01B2 | o(F711C00C): BL MOD1 [Files] PROC28 |
01B3 | p(80E0003C): LDR R0, SP, 3CH |
01B4 | p(40080001): ADD R0, R0, 1H |
01B5 | p(A0E0003C): STR R0, SP, 3CH |
| Files.WriteByte(W,q p.colr)s;t Files.WriteByte(W,u p.voffv)w;x Files.WriteInt(W,y rlen)z;a |
01B6 | q(80E00004): LDR R0, SP, 4H |
01B7 | q(81E00008): LDR R1, SP, 8H |
01B8 | r(82E00010): LDR R2, SP, 10H |
01B9 | r(D1114A4C): BLEQ MT [trap=4, pos=4426] |
01BA | s(82200010): LDR R2, R2, 10H |
01BB | t .FIXUP P |
01BB | t(F7116009): BL MOD1 [Files] PROC22 |
01BC | u(80E00004): LDR R0, SP, 4H |
01BD | u(81E00008): LDR R1, SP, 8H |
01BE | v(82E00010): LDR R2, SP, 10H |
01BF | v(D111664C): BLEQ MT [trap=4, pos=4454] |
01C0 | w(82200014): LDR R2, R2, 14H |
01C1 | x .FIXUP P |
01C1 | x(F7116006): BL MOD1 [Files] PROC22 |
01C2 | y(80E00004): LDR R0, SP, 4H |
01C3 | y(81E00008): LDR R1, SP, 8H |
01C4 | z(82E00034): LDR R2, SP, 34H |
01C5 | a .FIXUP P |
01C5 | a(F7119004): BL MOD1 [Files] PROC25 |
| p := q |
| ENDb; |
01C6 | b(80E00014): LDR R0, SP, 14H |
01C7 | b(A0E00010): STR R0, SP, 10H |
01C8 | b(E7FFFF79): B -135 [0142H] |
| Files.WriteByte(W,c 0)d;e Files.WriteInt(W,f T.leng)h;i |
01C9 | c(80E00004): LDR R0, SP, 4H |
01CA | c(81E00008): LDR R1, SP, 8H |
01CB | d(42000000): MOV R2, R0, 0H |
01CC | e .FIXUP P |
01CC | e(F7116007): BL MOD1 [Files] PROC22 |
01CD | f(80E00004): LDR R0, SP, 4H |
01CE | f(81E00008): LDR R1, SP, 8H |
01CF | g(82E0000C): LDR R2, SP, CH |
01D0 | g(D111CA4C): BLEQ MT [trap=4, pos=4554] |
01D1 | h(82200000): LDR R2, R2, 0H |
01D2 | i .FIXUP P |
01D2 | i(F7119006): BL MOD1 [Files] PROC25 |
| off := Files.Pos(W)j;k p := T.trailerl.nextm;n |
01D3 | j(80E00004): LDR R0, SP, 4H |
01D4 | j(81E00008): LDR R1, SP, 8H |
01D5 | k .FIXUP P |
01D5 | k(F710C003): BL MOD1 [Files] PROC12 |
01D6 | k(A0E00030): STR R0, SP, 30H |
01D7 | l(80E0000C): LDR R0, SP, CH |
01D8 | l(D111F44C): BLEQ MT [trap=4, pos=4596] |
01D9 | m(8000000C): LDR R0, R0, CH |
01DA | m(D111F94C): BLEQ MT [trap=4, pos=4601] |
01DB | n(8000001C): LDR R0, R0, 1CH |
01DC | n(A0E00010): STR R0, SP, 10H |
| WHILE p # T.trailero DOp |
01DD | o(80E0000C): LDR R0, SP, CH |
01DE | o(D112124C): BLEQ MT [trap=4, pos=4626] |
01DF | p(81E00010): LDR R1, SP, 10H |
01E0 | p(8000000C): LDR R0, R0, CH |
01E1 | p(01190000): SUB R1, R1, R0 |
01E2 | p(E1000023): BEQ 35 [0206H] |
| rlen := p.lenq;r Files.Set(R,s p.ft,u p.offv)w;x |
01E3 | q(80E00010): LDR R0, SP, 10H |
01E4 | q(D112294C): BLEQ MT [trap=4, pos=4649] |
01E5 | r(80000008): LDR R0, R0, 8H |
01E6 | r(A0E00034): STR R0, SP, 34H |
01E7 | s(40E80018): ADD R0, SP, 18H |
01E8 | s .FIXUP D |
01E8 | s(8D10010E): LDR SB, MT, MOD1 [Files] |
01E9 | s(41D80001): ADD R1, SB, VAR1 |
01EA | t(82E00010): LDR R2, SP, 10H |
01EB | t(D1123B4C): BLEQ MT [trap=4, pos=4667] |
01EC | u(82200000): LDR R2, R2, 0H |
01ED | v(83E00010): LDR R3, SP, 10H |
01EE | v(D112424C): BLEQ MT [trap=4, pos=4674] |
01EF | w(83300004): LDR R3, R3, 4H |
01F0 | x .FIXUP P |
01F0 | x(F710B01B): BL MOD1 [Files] PROC11 |
| WHILE rlen > 0 DOy Files.Read(R,z ch)a;b Files.Write(W,c ch)d;e DEC(rlen) ENDf ; |
01F1 | y(80E00034): LDR R0, SP, 34H |
01F2 | y(40090000): SUB R0, R0, 0H |
01F3 | y(E600000D): BLE 13 [0201H] |
01F4 | z(40E80018): ADD R0, SP, 18H |
01F5 | z .FIXUP D |
01F5 | z(8D10000D): LDR SB, MT, MOD1 [Files] |
01F6 | z(41D80001): ADD R1, SB, VAR1 |
01F7 | a(42E80044): ADD R2, SP, 44H |
01F8 | b .FIXUP P |
01F8 | b(F7110008): BL MOD1 [Files] PROC16 |
01F9 | c(80E00004): LDR R0, SP, 4H |
01FA | c(81E00008): LDR R1, SP, 8H |
01FB | d(92E00044): LDR R2, SP, 44H |
01FC | e .FIXUP P |
01FC | e(F7118004): BL MOD1 [Files] PROC24 |
01FD | f(80E00034): LDR R0, SP, 34H |
01FE | f(40090001): SUB R0, R0, 1H |
01FF | f(A0E00034): STR R0, SP, 34H |
0200 | f(E7FFFFF0): B -16 [01F1H] |
| p := p.nextg |
0201 | g(80E00010): LDR R0, SP, 10H |
0202 | g(D112A54C): BLEQ MT [trap=4, pos=4773] |
| ENDh ; |
0203 | h(8000001C): LDR R0, R0, 1CH |
0204 | h(A0E00010): STR R0, SP, 10H |
0205 | h(E7FFFFD7): B -41 [01DDH] |
| Files.Set(W,i Files.Base(Wj)k,l pos)m;n Files.WriteInt(W,o off)p;q (*fixup*) |
0206 | i(80E00004): LDR R0, SP, 4H |
0207 | i(81E00008): LDR R1, SP, 8H |
0208 | j(4EE90008): SUB SP, SP, 8H |
0209 | j(A0E00004): STR R0, SP, 4H |
020A | j(A1E00000): STR R1, SP, 0H |
020B | k(80E0000C): LDR R0, SP, CH |
020C | k(81E00010): LDR R1, SP, 10H |
020D | l .FIXUP P |
020D | l(F710D011): BL MOD1 [Files] PROC13 |
020E | l(02000000): MOV R2, R0, R0 |
020F | l(81E00000): LDR R1, SP, 0H |
0210 | l(80E00004): LDR R0, SP, 4H |
0211 | l(4EE80008): ADD SP, SP, 8H |
0212 | m(83E00038): LDR R3, SP, 38H |
0213 | n .FIXUP P |
0213 | n(F710B006): BL MOD1 [Files] PROC11 |
0214 | o(80E00004): LDR R0, SP, 4H |
0215 | o(81E00008): LDR R1, SP, 8H |
0216 | p(82E00030): LDR R2, SP, 30H |
0217 | q .FIXUP P |
0217 | q(F7119004): BL MOD1 [Files] PROC25 |
| T.changedr := FALSE;s |
0218 | r(80E0000C): LDR R0, SP, CH |
0219 | r(D113054C): BLEQ MT [trap=4, pos=4869] |
021A | s(41000000): MOV R1, R0, 0H |
021B | s(B1000004): STR R1, R0, 4H |
| IF T.notifyt # NIL THENu T.notifyv(Tw,x unmark,y 0,z 0)a ENDb |
021C | t(80E0000C): LDR R0, SP, CH |
021D | t(D1131F4C): BLEQ MT [trap=4, pos=4895] |
021E | u(80000008): LDR R0, R0, 8H |
021F | u(E100000D): BEQ 13 [022DH] |
0220 | v(80E0000C): LDR R0, SP, CH |
0221 | v(D113334C): BLEQ MT [trap=4, pos=4915] |
0222 | w(80000008): LDR R0, R0, 8H |
0223 | w(4EE90004): SUB SP, SP, 4H |
0224 | w(A0E00000): STR R0, SP, 0H |
0225 | x(80E00010): LDR R0, SP, 10H |
0226 | y(41000003): MOV R1, R0, 3H |
0227 | z(42000000): MOV R2, R0, 0H |
0228 | a(43000000): MOV R3, R0, 0H |
0229 | b(84E00000): LDR R4, SP, 0H |
022A | b(4EE80004): ADD SP, SP, 4H |
022B | b(D113485C): BLEQ MT [trap=5, pos=4936] |
022C | b(D7000004): BL R4 |
| ENDc Store; |
022D | c(8FE00000): LDR LNK, SP, 0H |
022E | c(4EE80448): ADD SP, SP, 448H |
022F | c(C700000F): B LNK |
| |
| PROCEDURE Close*(T: Text; name: ARRAY OF CHAR); |
| VAR f: Files.File; w: Files.Rider; |
| BEGINd f := Files.New(name)e;f Files.Set(w,g f,h 0)i;j |
0230 | d .PROC 9 |
0230 | d(4EE9002C): SUB SP, SP, 2CH |
0231 | d(AFE00000): STR LNK, SP, 0H |
0232 | d(A0E00004): STR R0, SP, 4H |
0233 | d(A1E00008): STR R1, SP, 8H |
0234 | d(A2E0000C): STR R2, SP, CH |
0235 | e(80E00008): LDR R0, SP, 8H |
0236 | e(81E0000C): LDR R1, SP, CH |
0237 | f .FIXUP P |
0237 | f(F7103020): BL MOD1 [Files] PROC3 |
0238 | f(A0E00010): STR R0, SP, 10H |
0239 | g(40E80014): ADD R0, SP, 14H |
023A | g .FIXUP D |
023A | g(8D100045): LDR SB, MT, MOD1 [Files] |
023B | g(41D80001): ADD R1, SB, VAR1 |
023C | h(82E00010): LDR R2, SP, 10H |
023D | i(43000000): MOV R3, R0, 0H |
023E | j .FIXUP P |
023E | j(F710B007): BL MOD1 [Files] PROC11 |
| Files.Write(w,k TextTag)l;m Store(w,n T)o;p Files.Register(f)q |
023F | k(40E80014): ADD R0, SP, 14H |
0240 | k .FIXUP D |
0240 | k(8D100006): LDR SB, MT, MOD1 [Files] |
0241 | k(41D80001): ADD R1, SB, VAR1 |
0242 | l(420000F1): MOV R2, R0, F1H |
0243 | m .FIXUP P |
0243 | m(F7118005): BL MOD1 [Files] PROC24 |
0244 | n(40E80014): ADD R0, SP, 14H |
0245 | n .FIXUP D |
0245 | n(8D100005): LDR SB, MT, MOD1 [Files] |
0246 | n(41D80001): ADD R1, SB, VAR1 |
0247 | o(82E00004): LDR R2, SP, 4H |
0248 | p(F7FFFEE4): BL -284 [012DH] |
0249 | q(80E00010): LDR R0, SP, 10H |
| ENDr Close; |
024A | r .FIXUP P |
024A | r(F7104007): BL MOD1 [Files] PROC4 |
024B | r(8FE00000): LDR LNK, SP, 0H |
024C | r(4EE8002C): ADD SP, SP, 2CH |
024D | r(C700000F): B LNK |
| |
| (* -------------------- Editing ----------------------- *) |
| |
| PROCEDURE OpenBuf* (B: Buffer); |
| BEGINs NEW(B.headert);u (*null piece*) |
024E | s .PROC 10 |
024E | s(4EE90008): SUB SP, SP, 8H |
024F | s(AFE00000): STR LNK, SP, 0H |
0250 | s(A0E00004): STR R0, SP, 4H |
0251 | t(80E00004): LDR R0, SP, 4H |
0252 | t(D114A04C): BLEQ MT [trap=4, pos=5280] |
0253 | u(40080004): ADD R0, R0, 4H |
0254 | u .FIXUP D |
0254 | u(8D00000F): LDR SB, MT, MOD0 [Texts] |
0255 | u(41D80000): ADD R1, SB, 0H [data] |
0256 | u(D714A20C): BL MT [trap=0, pos=5282] |
| B.lastv := B.headerw;x B.leny := 0 |
0257 | v(80E00004): LDR R0, SP, 4H |
0258 | v(D114BC4C): BLEQ MT [trap=4, pos=5308] |
0259 | w(81E00004): LDR R1, SP, 4H |
025A | w(D114C84C): BLEQ MT [trap=4, pos=5320] |
025B | x(81100004): LDR R1, R1, 4H |
025C | x(A1000008): STR R1, R0, 8H |
025D | y(80E00004): LDR R0, SP, 4H |
025E | y(D114CF4C): BLEQ MT [trap=4, pos=5327] |
| ENDz OpenBuf; |
025F | z(41000000): MOV R1, R0, 0H |
0260 | z(A1000000): STR R1, R0, 0H |
0261 | z(8FE00000): LDR LNK, SP, 0H |
0262 | z(4EE80008): ADD SP, SP, 8H |
0263 | z(C700000F): B LNK |
| |
| PROCEDURE FindPiece (T: Text; pos: LONGINT; VAR org: LONGINT; VAR pce: Piece); |
| VAR p: Piece; porg: LONGINT; |
| BEGINa p := T.pceb;c porg := T.orgd;e |
0264 | a(4EE9001C): SUB SP, SP, 1CH |
0265 | a(AFE00000): STR LNK, SP, 0H |
0266 | a(A0E00004): STR R0, SP, 4H |
0267 | a(A1E00008): STR R1, SP, 8H |
0268 | a(A2E0000C): STR R2, SP, CH |
0269 | a(A3E00010): STR R3, SP, 10H |
026A | b(80E00004): LDR R0, SP, 4H |
026B | b(D115694C): BLEQ MT [trap=4, pos=5481] |
026C | c(80000010): LDR R0, R0, 10H |
026D | c(A0E00014): STR R0, SP, 14H |
026E | d(80E00004): LDR R0, SP, 4H |
026F | d(D115784C): BLEQ MT [trap=4, pos=5496] |
0270 | e(80000014): LDR R0, R0, 14H |
0271 | e(A0E00018): STR R0, SP, 18H |
| IF pos >= porg THENf |
0272 | f(80E00008): LDR R0, SP, 8H |
0273 | f(81E00018): LDR R1, SP, 18H |
0274 | f(00090001): SUB R0, R0, R1 |
0275 | f(E5000014): BLT 20 [028AH] |
| WHILE pos >= porg + p.leng DOh INC(porg, p.leni);j p := p.nextk ENDl |
0276 | g(80E00014): LDR R0, SP, 14H |
0277 | g(D115B14C): BLEQ MT [trap=4, pos=5553] |
0278 | h(81E00018): LDR R1, SP, 18H |
0279 | h(80000008): LDR R0, R0, 8H |
027A | h(00180000): ADD R0, R1, R0 |
027B | h(81E00008): LDR R1, SP, 8H |
027C | h(01190000): SUB R1, R1, R0 |
027D | h(E500000B): BLT 11 [0289H] |
027E | i(80E00014): LDR R0, SP, 14H |
027F | i(D115C44C): BLEQ MT [trap=4, pos=5572] |
0280 | j(81E00018): LDR R1, SP, 18H |
0281 | j(80000008): LDR R0, R0, 8H |
0282 | j(01180000): ADD R1, R1, R0 |
0283 | j(A1E00018): STR R1, SP, 18H |
0284 | k(80E00014): LDR R0, SP, 14H |
0285 | k(D115D24C): BLEQ MT [trap=4, pos=5586] |
0286 | l(8000001C): LDR R0, R0, 1CH |
0287 | l(A0E00014): STR R0, SP, 14H |
0288 | l(E7FFFFED): B -19 [0276H] |
| ELSE pm := p.prevn;o DEC(porg, p.lenp);q |
0289 | m(E7000019): B 25 [02A3H] |
028A | n(80E00014): LDR R0, SP, 14H |
028B | n(D115EB4C): BLEQ MT [trap=4, pos=5611] |
028C | o(80000018): LDR R0, R0, 18H |
028D | o(A0E00014): STR R0, SP, 14H |
028E | p(80E00014): LDR R0, SP, 14H |
028F | p(D115FC4C): BLEQ MT [trap=4, pos=5628] |
0290 | q(81E00018): LDR R1, SP, 18H |
0291 | q(80000008): LDR R0, R0, 8H |
0292 | q(01190000): SUB R1, R1, R0 |
0293 | q(A1E00018): STR R1, SP, 18H |
| WHILE pos < porg DOr p := p.prevs;t DEC(porg, p.lenu) ENDv |
0294 | r(80E00008): LDR R0, SP, 8H |
0295 | r(81E00018): LDR R1, SP, 18H |
0296 | r(00090001): SUB R0, R0, R1 |
0297 | r(ED00000B): BGE 11 [02A3H] |
0298 | s(80E00014): LDR R0, SP, 14H |
0299 | s(D116244C): BLEQ MT [trap=4, pos=5668] |
029A | t(80000018): LDR R0, R0, 18H |
029B | t(A0E00014): STR R0, SP, 14H |
029C | u(80E00014): LDR R0, SP, 14H |
029D | u(D116354C): BLEQ MT [trap=4, pos=5685] |
029E | v(81E00018): LDR R1, SP, 18H |
029F | v(80000008): LDR R0, R0, 8H |
02A0 | v(01190000): SUB R1, R1, R0 |
02A1 | v(A1E00018): STR R1, SP, 18H |
02A2 | v(E7FFFFF1): B -15 [0294H] |
| END ; |
| T.pcew := p;x T.orgy := porg;z (*update cache*) |
02A3 | w(80E00004): LDR R0, SP, 4H |
02A4 | w(D1164E4C): BLEQ MT [trap=4, pos=5710] |
02A5 | x(81E00014): LDR R1, SP, 14H |
02A6 | x(A1000010): STR R1, R0, 10H |
02A7 | y(80E00004): LDR R0, SP, 4H |
02A8 | y(D1165A4C): BLEQ MT [trap=4, pos=5722] |
02A9 | z(81E00018): LDR R1, SP, 18H |
02AA | z(A1000014): STR R1, R0, 14H |
| pce := p;a org := porg |
02AB | a(80E00014): LDR R0, SP, 14H |
02AC | a(81E00010): LDR R1, SP, 10H |
02AD | a(A0100000): STR R0, R1, 0H |
| ENDb FindPiece; |
02AE | b(80E00018): LDR R0, SP, 18H |
02AF | b(81E0000C): LDR R1, SP, CH |
02B0 | b(A0100000): STR R0, R1, 0H |
02B1 | b(8FE00000): LDR LNK, SP, 0H |
02B2 | b(4EE8001C): ADD SP, SP, 1CH |
02B3 | b(C700000F): B LNK |
| |
| PROCEDURE SplitPiece (p: Piece; off: LONGINT; VAR pr: Piece); |
| VAR q: Piece; |
| BEGINc |
02B4 | c(4EE90014): SUB SP, SP, 14H |
02B5 | c(AFE00000): STR LNK, SP, 0H |
02B6 | c(A0E00004): STR R0, SP, 4H |
02B7 | c(A1E00008): STR R1, SP, 8H |
02B8 | c(A2E0000C): STR R2, SP, CH |
| IF off > 0 THENd NEW(q);e |
02B9 | d(80E00008): LDR R0, SP, 8H |
02BA | d(40090000): SUB R0, R0, 0H |
02BB | d(E6000048): BLE 72 [0304H] |
02BC | e(40E80010): ADD R0, SP, 10H |
02BD | e .FIXUP D |
02BD | e(8D000069): LDR SB, MT, MOD0 [Texts] |
02BE | e(41D80000): ADD R1, SB, 0H [data] |
02BF | e(D717170C): BL MT [trap=0, pos=5911] |
| q.fntf := p.fntg;h q.coli := p.colj;k q.voffl := p.voffm;n |
02C0 | f(80E00010): LDR R0, SP, 10H |
02C1 | f(D117234C): BLEQ MT [trap=4, pos=5923] |
02C2 | g(81E00004): LDR R1, SP, 4H |
02C3 | g(D1172C4C): BLEQ MT [trap=4, pos=5932] |
02C4 | h(8110000C): LDR R1, R1, CH |
02C5 | h(A100000C): STR R1, R0, CH |
02C6 | i(80E00010): LDR R0, SP, 10H |
02C7 | i(D117334C): BLEQ MT [trap=4, pos=5939] |
02C8 | j(81E00004): LDR R1, SP, 4H |
02C9 | j(D1173C4C): BLEQ MT [trap=4, pos=5948] |
02CA | k(81100010): LDR R1, R1, 10H |
02CB | k(A1000010): STR R1, R0, 10H |
02CC | l(80E00010): LDR R0, SP, 10H |
02CD | l(D117444C): BLEQ MT [trap=4, pos=5956] |
02CE | m(81E00004): LDR R1, SP, 4H |
02CF | m(D1174E4C): BLEQ MT [trap=4, pos=5966] |
02D0 | n(81100014): LDR R1, R1, 14H |
02D1 | n(A1000014): STR R1, R0, 14H |
| q.leno := p.lenp - off;q |
02D2 | o(80E00010): LDR R0, SP, 10H |
02D3 | o(D1175B4C): BLEQ MT [trap=4, pos=5979] |
02D4 | p(81E00004): LDR R1, SP, 4H |
02D5 | p(D117644C): BLEQ MT [trap=4, pos=5988] |
02D6 | q(81100008): LDR R1, R1, 8H |
02D7 | q(82E00008): LDR R2, SP, 8H |
02D8 | q(01190002): SUB R1, R1, R2 |
02D9 | q(A1000008): STR R1, R0, 8H |
| q.fr := p.fs;t q.offu := p.offv + off;w |
02DA | r(80E00010): LDR R0, SP, 10H |
02DB | r(D117754C): BLEQ MT [trap=4, pos=6005] |
02DC | s(81E00004): LDR R1, SP, 4H |
02DD | s(D1177C4C): BLEQ MT [trap=4, pos=6012] |
02DE | t(81100000): LDR R1, R1, 0H |
02DF | t(A1000000): STR R1, R0, 0H |
02E0 | u(80E00010): LDR R0, SP, 10H |
02E1 | u(D117834C): BLEQ MT [trap=4, pos=6019] |
02E2 | v(81E00004): LDR R1, SP, 4H |
02E3 | v(D1178C4C): BLEQ MT [trap=4, pos=6028] |
02E4 | w(81100004): LDR R1, R1, 4H |
02E5 | w(82E00008): LDR R2, SP, 8H |
02E6 | w(01180002): ADD R1, R1, R2 |
02E7 | w(A1000004): STR R1, R0, 4H |
| p.lenx := off;y |
02E8 | x(80E00004): LDR R0, SP, 4H |
02E9 | x(D1179F4C): BLEQ MT [trap=4, pos=6047] |
02EA | y(81E00008): LDR R1, SP, 8H |
02EB | y(A1000008): STR R1, R0, 8H |
| q.nextz := p.nexta;b p.nextc := q;d |
02EC | z(80E00010): LDR R0, SP, 10H |
02ED | z(D117B44C): BLEQ MT [trap=4, pos=6068] |
02EE | a(81E00004): LDR R1, SP, 4H |
02EF | a(D117BE4C): BLEQ MT [trap=4, pos=6078] |
02F0 | b(8110001C): LDR R1, R1, 1CH |
02F1 | b(A100001C): STR R1, R0, 1CH |
02F2 | c(80E00004): LDR R0, SP, 4H |
02F3 | c(D117C64C): BLEQ MT [trap=4, pos=6086] |
02F4 | d(81E00010): LDR R1, SP, 10H |
02F5 | d(A100001C): STR R1, R0, 1CH |
| q.preve := p;f q.nextg.prevh := q;i |
02F6 | e(80E00010): LDR R0, SP, 10H |
02F7 | e(D117D94C): BLEQ MT [trap=4, pos=6105] |
02F8 | f(81E00004): LDR R1, SP, 4H |
02F9 | f(A1000018): STR R1, R0, 18H |
02FA | g(80E00010): LDR R0, SP, 10H |
02FB | g(D117E64C): BLEQ MT [trap=4, pos=6118] |
02FC | h(8000001C): LDR R0, R0, 1CH |
02FD | h(D117EB4C): BLEQ MT [trap=4, pos=6123] |
02FE | i(81E00010): LDR R1, SP, 10H |
02FF | i(A1000018): STR R1, R0, 18H |
| pr := q |
| ELSEj prk := p |
0300 | j(80E00010): LDR R0, SP, 10H |
0301 | j(81E0000C): LDR R1, SP, CH |
0302 | j(A0100000): STR R0, R1, 0H |
0303 | k(E7000003): B 3 [0307H] |
| ENDl |
0304 | l(80E00004): LDR R0, SP, 4H |
0305 | l(81E0000C): LDR R1, SP, CH |
0306 | l(A0100000): STR R0, R1, 0H |
| ENDm SplitPiece; |
0307 | m(8FE00000): LDR LNK, SP, 0H |
0308 | m(4EE80014): ADD SP, SP, 14H |
0309 | m(C700000F): B LNK |
| |
| PROCEDURE Save* (T: Text; beg, end: LONGINT; B: Buffer); |
| VAR p, q, qb, qe: Piece; org: LONGINT; |
| BEGINn |
030A | n .PROC 11 |
030A | n(4EE90028): SUB SP, SP, 28H |
030B | n(AFE00000): STR LNK, SP, 0H |
030C | n(A0E00004): STR R0, SP, 4H |
030D | n(A1E00008): STR R1, SP, 8H |
030E | n(A2E0000C): STR R2, SP, CH |
030F | n(A3E00010): STR R3, SP, 10H |
| IF end > T.leno THENp end := T.lenq ENDr; |
0310 | o(80E00004): LDR R0, SP, 4H |
0311 | o(D118AC4C): BLEQ MT [trap=4, pos=6316] |
0312 | p(81E0000C): LDR R1, SP, CH |
0313 | p(80000000): LDR R0, R0, 0H |
0314 | p(01190000): SUB R1, R1, R0 |
0315 | p(E6000004): BLE 4 [031AH] |
0316 | q(80E00004): LDR R0, SP, 4H |
0317 | q(D118BE4C): BLEQ MT [trap=4, pos=6334] |
0318 | r(80000000): LDR R0, R0, 0H |
0319 | r(A0E0000C): STR R0, SP, CH |
| FindPiece(T,s beg,t org,u p)v;w |
031A | s(80E00004): LDR R0, SP, 4H |
031B | t(81E00008): LDR R1, SP, 8H |
031C | u(42E80024): ADD R2, SP, 24H |
031D | v(43E80014): ADD R3, SP, 14H |
031E | w(F7FFFF45): BL -187 [0264H] |
| NEW(qb);x qb^ :=y p^;z |
031F | x(40E8001C): ADD R0, SP, 1CH |
0320 | x .FIXUP D |
0320 | x(8D000063): LDR SB, MT, MOD0 [Texts] |
0321 | x(41D80000): ADD R1, SB, 0H [data] |
0322 | x(D718EF0C): BL MT [trap=0, pos=6383] |
0323 | y(80E0001C): LDR R0, SP, 1CH |
0324 | y(D118F64C): BLEQ MT [trap=4, pos=6390] |
0325 | z(81E00014): LDR R1, SP, 14H |
0326 | z(D118FA4C): BLEQ MT [trap=4, pos=6394] |
0327 | z(42000008): MOV R2, R0, 8H |
0328 | z(83100000): LDR R3, R1, 0H |
0329 | z(41180004): ADD R1, R1, 4H |
032A | z(A3000000): STR R3, R0, 0H |
032B | z(40080004): ADD R0, R0, 4H |
032C | z(42290001): SUB R2, R2, 1H |
032D | z(E9FFFFFA): BNE -6 [0328H] |
| qb.lena := qb.lenb - (beg - org)c;d |
032E | a(80E0001C): LDR R0, SP, 1CH |
032F | a(D119054C): BLEQ MT [trap=4, pos=6405] |
0330 | b(81E0001C): LDR R1, SP, 1CH |
0331 | b(D1190F4C): BLEQ MT [trap=4, pos=6415] |
0332 | c(82E00008): LDR R2, SP, 8H |
0333 | c(83E00024): LDR R3, SP, 24H |
0334 | c(02290003): SUB R2, R2, R3 |
0335 | d(81100008): LDR R1, R1, 8H |
0336 | d(01190002): SUB R1, R1, R2 |
0337 | d(A1000008): STR R1, R0, 8H |
| qb.offe := qb.offf + (beg - org)g;h |
0338 | e(80E0001C): LDR R0, SP, 1CH |
0339 | e(D119294C): BLEQ MT [trap=4, pos=6441] |
033A | f(81E0001C): LDR R1, SP, 1CH |
033B | f(D119334C): BLEQ MT [trap=4, pos=6451] |
033C | g(82E00008): LDR R2, SP, 8H |
033D | g(83E00024): LDR R3, SP, 24H |
033E | g(02290003): SUB R2, R2, R3 |
033F | h(81100004): LDR R1, R1, 4H |
0340 | h(01180002): ADD R1, R1, R2 |
0341 | h(A1000004): STR R1, R0, 4H |
| qe := qb;i |
0342 | i(80E0001C): LDR R0, SP, 1CH |
0343 | i(A0E00020): STR R0, SP, 20H |
| WHILE end > org + p.lenj DOk |
0344 | j(80E00014): LDR R0, SP, 14H |
0345 | j(D1196C4C): BLEQ MT [trap=4, pos=6508] |
0346 | k(81E00024): LDR R1, SP, 24H |
0347 | k(80000008): LDR R0, R0, 8H |
0348 | k(00180000): ADD R0, R1, R0 |
0349 | k(81E0000C): LDR R1, SP, CH |
034A | k(01190000): SUB R1, R1, R0 |
034B | k(E6000024): BLE 36 [0370H] |
| org := org + p.lenl;m p := p.nextn;o |
034C | l(80E00014): LDR R0, SP, 14H |
034D | l(D119894C): BLEQ MT [trap=4, pos=6537] |
034E | m(81E00024): LDR R1, SP, 24H |
034F | m(80000008): LDR R0, R0, 8H |
0350 | m(00180000): ADD R0, R1, R0 |
0351 | m(A0E00024): STR R0, SP, 24H |
0352 | n(80E00014): LDR R0, SP, 14H |
0353 | n(D119964C): BLEQ MT [trap=4, pos=6550] |
0354 | o(8000001C): LDR R0, R0, 1CH |
0355 | o(A0E00014): STR R0, SP, 14H |
| NEW(q);p q^ :=q p^;r qe.nexts := q;t q.prevu := qe;v qe := q |
0356 | p(40E80018): ADD R0, SP, 18H |
0357 | p .FIXUP D |
0357 | p(8D000037): LDR SB, MT, MOD0 [Texts] |
0358 | p(41D80000): ADD R1, SB, 0H [data] |
0359 | p(D719A50C): BL MT [trap=0, pos=6565] |
035A | q(80E00018): LDR R0, SP, 18H |
035B | q(D119AB4C): BLEQ MT [trap=4, pos=6571] |
035C | r(81E00014): LDR R1, SP, 14H |
035D | r(D119AF4C): BLEQ MT [trap=4, pos=6575] |
035E | r(42000008): MOV R2, R0, 8H |
035F | r(83100000): LDR R3, R1, 0H |
0360 | r(41180004): ADD R1, R1, 4H |
0361 | r(A3000000): STR R3, R0, 0H |
0362 | r(40080004): ADD R0, R0, 4H |
0363 | r(42290001): SUB R2, R2, 1H |
0364 | r(E9FFFFFA): BNE -6 [035FH] |
0365 | s(80E00020): LDR R0, SP, 20H |
0366 | s(D119B74C): BLEQ MT [trap=4, pos=6583] |
0367 | t(81E00018): LDR R1, SP, 18H |
0368 | t(A100001C): STR R1, R0, 1CH |
0369 | u(80E00018): LDR R0, SP, 18H |
036A | u(D119C44C): BLEQ MT [trap=4, pos=6596] |
036B | v(81E00020): LDR R1, SP, 20H |
036C | v(A1000018): STR R1, R0, 18H |
| ENDw; |
036D | w(80E00018): LDR R0, SP, 18H |
036E | w(A0E00020): STR R0, SP, 20H |
036F | w(E7FFFFD4): B -44 [0344H] |
| qe.nextx := NIL;y qe.lenz := qe.lena - (org + p.lenb -c end)d;e |
0370 | x(80E00020): LDR R0, SP, 20H |
0371 | x(D119E84C): BLEQ MT [trap=4, pos=6632] |
0372 | y(41000000): MOV R1, R0, 0H |
0373 | y(A100001C): STR R1, R0, 1CH |
0374 | z(80E00020): LDR R0, SP, 20H |
0375 | z(D119F74C): BLEQ MT [trap=4, pos=6647] |
0376 | a(81E00020): LDR R1, SP, 20H |
0377 | a(D11A014C): BLEQ MT [trap=4, pos=6657] |
0378 | b(82E00014): LDR R2, SP, 14H |
0379 | b(D11A104C): BLEQ MT [trap=4, pos=6672] |
037A | c(83E00024): LDR R3, SP, 24H |
037B | c(82200008): LDR R2, R2, 8H |
037C | c(02380002): ADD R2, R3, R2 |
037D | d(83E0000C): LDR R3, SP, CH |
037E | d(02290003): SUB R2, R2, R3 |
037F | e(81100008): LDR R1, R1, 8H |
0380 | e(01190002): SUB R1, R1, R2 |
0381 | e(A1000008): STR R1, R0, 8H |
| B.lastf.nextg := qb;h qb.previ := B.lastj;k B.lastl := qe;m |
0382 | f(80E00010): LDR R0, SP, 10H |
0383 | f(D11A234C): BLEQ MT [trap=4, pos=6691] |
0384 | g(80000008): LDR R0, R0, 8H |
0385 | g(D11A284C): BLEQ MT [trap=4, pos=6696] |
0386 | h(81E0001C): LDR R1, SP, 1CH |
0387 | h(A100001C): STR R1, R0, 1CH |
0388 | i(80E0001C): LDR R0, SP, 1CH |
0389 | i(D11A374C): BLEQ MT [trap=4, pos=6711] |
038A | j(81E00010): LDR R1, SP, 10H |
038B | j(D11A414C): BLEQ MT [trap=4, pos=6721] |
038C | k(81100008): LDR R1, R1, 8H |
038D | k(A1000018): STR R1, R0, 18H |
038E | l(80E00010): LDR R0, SP, 10H |
038F | l(D11A494C): BLEQ MT [trap=4, pos=6729] |
0390 | m(81E00020): LDR R1, SP, 20H |
0391 | m(A1000008): STR R1, R0, 8H |
| B.lenn := B.leno + (end - beg)p |
0392 | n(80E00010): LDR R0, SP, 10H |
0393 | n(D11A5A4C): BLEQ MT [trap=4, pos=6746] |
0394 | o(81E00010): LDR R1, SP, 10H |
0395 | o(D11A634C): BLEQ MT [trap=4, pos=6755] |
0396 | p(82E0000C): LDR R2, SP, CH |
0397 | p(83E00008): LDR R3, SP, 8H |
0398 | p(02290003): SUB R2, R2, R3 |
| ENDq Save; |
0399 | q(81100000): LDR R1, R1, 0H |
039A | q(01180002): ADD R1, R1, R2 |
039B | q(A1000000): STR R1, R0, 0H |
039C | q(8FE00000): LDR LNK, SP, 0H |
039D | q(4EE80028): ADD SP, SP, 28H |
039E | q(C700000F): B LNK |
| |
| PROCEDURE Copy* (SB, DB: Buffer); |
| VAR Q, q, p: Piece; |
| BEGINr p := SB.headers;t Q := DB.lastu;v |
039F | r .PROC 12 |
039F | r(4EE90018): SUB SP, SP, 18H |
03A0 | r(AFE00000): STR LNK, SP, 0H |
03A1 | r(A0E00004): STR R0, SP, 4H |
03A2 | r(A1E00008): STR R1, SP, 8H |
03A3 | s(80E00004): LDR R0, SP, 4H |
03A4 | s(D11AD14C): BLEQ MT [trap=4, pos=6865] |
03A5 | t(80000004): LDR R0, R0, 4H |
03A6 | t(A0E00014): STR R0, SP, 14H |
03A7 | u(80E00008): LDR R0, SP, 8H |
03A8 | u(D11ADF4C): BLEQ MT [trap=4, pos=6879] |
03A9 | v(80000008): LDR R0, R0, 8H |
03AA | v(A0E0000C): STR R0, SP, CH |
| WHILE p # SB.lastw DOx p := p.nexty;z |
03AB | w(80E00004): LDR R0, SP, 4H |
03AC | w(D11AF64C): BLEQ MT [trap=4, pos=6902] |
03AD | x(81E00014): LDR R1, SP, 14H |
03AE | x(80000008): LDR R0, R0, 8H |
03AF | x(01190000): SUB R1, R1, R0 |
03B0 | x(E100001E): BEQ 30 [03CFH] |
03B1 | y(80E00014): LDR R0, SP, 14H |
03B2 | y(D11B054C): BLEQ MT [trap=4, pos=6917] |
03B3 | z(8000001C): LDR R0, R0, 1CH |
03B4 | z(A0E00014): STR R0, SP, 14H |
| NEW(q);a q^ :=b p^;c Q.nextd := q;e q.prevf := Q;g Q := q |
03B5 | a(40E80010): ADD R0, SP, 10H |
03B6 | a .FIXUP D |
03B6 | a(8D00005F): LDR SB, MT, MOD0 [Texts] |
03B7 | a(41D80000): ADD R1, SB, 0H [data] |
03B8 | a(D71B140C): BL MT [trap=0, pos=6932] |
03B9 | b(80E00010): LDR R0, SP, 10H |
03BA | b(D11B1A4C): BLEQ MT [trap=4, pos=6938] |
03BB | c(81E00014): LDR R1, SP, 14H |
03BC | c(D11B1E4C): BLEQ MT [trap=4, pos=6942] |
03BD | c(42000008): MOV R2, R0, 8H |
03BE | c(83100000): LDR R3, R1, 0H |
03BF | c(41180004): ADD R1, R1, 4H |
03C0 | c(A3000000): STR R3, R0, 0H |
03C1 | c(40080004): ADD R0, R0, 4H |
03C2 | c(42290001): SUB R2, R2, 1H |
03C3 | c(E9FFFFFA): BNE -6 [03BEH] |
03C4 | d(80E0000C): LDR R0, SP, CH |
03C5 | d(D11B254C): BLEQ MT [trap=4, pos=6949] |
03C6 | e(81E00010): LDR R1, SP, 10H |
03C7 | e(A100001C): STR R1, R0, 1CH |
03C8 | f(80E00010): LDR R0, SP, 10H |
03C9 | f(D11B324C): BLEQ MT [trap=4, pos=6962] |
03CA | g(81E0000C): LDR R1, SP, CH |
03CB | g(A1000018): STR R1, R0, 18H |
| ENDh; |
03CC | h(80E00010): LDR R0, SP, 10H |
03CD | h(A0E0000C): STR R0, SP, CH |
03CE | h(E7FFFFDC): B -36 [03ABH] |
| DB.lasti := Q;j DB.lenk := DB.lenl + SB.lenm |
03CF | i(80E00008): LDR R0, SP, 8H |
03D0 | i(D11B544C): BLEQ MT [trap=4, pos=6996] |
03D1 | j(81E0000C): LDR R1, SP, CH |
03D2 | j(A1000008): STR R1, R0, 8H |
03D3 | k(80E00008): LDR R0, SP, 8H |
03D4 | k(D11B614C): BLEQ MT [trap=4, pos=7009] |
03D5 | l(81E00008): LDR R1, SP, 8H |
03D6 | l(D11B6B4C): BLEQ MT [trap=4, pos=7019] |
03D7 | m(82E00004): LDR R2, SP, 4H |
03D8 | m(D11B744C): BLEQ MT [trap=4, pos=7028] |
| ENDn Copy; |
03D9 | n(81100000): LDR R1, R1, 0H |
03DA | n(82200000): LDR R2, R2, 0H |
03DB | n(01180002): ADD R1, R1, R2 |
03DC | n(A1000000): STR R1, R0, 0H |
03DD | n(8FE00000): LDR LNK, SP, 0H |
03DE | n(4EE80018): ADD SP, SP, 18H |
03DF | n(C700000F): B LNK |
| |
| PROCEDURE Insert* (T: Text; pos: LONGINT; B: Buffer); |
| VAR pl, pr, p, qb, qe: Piece; org, end: LONGINT; |
| BEGINo |
03E0 | o .PROC 13 |
03E0 | o(4EE9002C): SUB SP, SP, 2CH |
03E1 | o(AFE00000): STR LNK, SP, 0H |
03E2 | o(A0E00004): STR R0, SP, 4H |
03E3 | o(A1E00008): STR R1, SP, 8H |
03E4 | o(A2E0000C): STR R2, SP, CH |
| FindPiece(T,p pos,q org,r p)s;t SplitPiece(p,u pos - org,v pr)w;x |
03E5 | p(80E00004): LDR R0, SP, 4H |
03E6 | q(81E00008): LDR R1, SP, 8H |
03E7 | r(42E80024): ADD R2, SP, 24H |
03E8 | s(43E80018): ADD R3, SP, 18H |
03E9 | t(F7FFFE7A): BL -390 [0264H] |
03EA | u(80E00018): LDR R0, SP, 18H |
03EB | v(81E00008): LDR R1, SP, 8H |
03EC | v(82E00024): LDR R2, SP, 24H |
03ED | v(01190002): SUB R1, R1, R2 |
03EE | w(42E80014): ADD R2, SP, 14H |
03EF | x(F7FFFEC4): BL -316 [02B4H] |
| IF T.orgy >= org THENz T.orga := org - p.prevb.lenc;d T.pcee := p.prevf ENDg ; |
03F0 | y(80E00004): LDR R0, SP, 4H |
03F1 | y(D11C404C): BLEQ MT [trap=4, pos=7232] |
03F2 | z(80000014): LDR R0, R0, 14H |
03F3 | z(81E00024): LDR R1, SP, 24H |
03F4 | z(00090001): SUB R0, R0, R1 |
03F5 | z(E5000010): BLT 16 [0406H] |
03F6 | a(80E00004): LDR R0, SP, 4H |
03F7 | a(D11C524C): BLEQ MT [trap=4, pos=7250] |
03F8 | b(81E00018): LDR R1, SP, 18H |
03F9 | b(D11C624C): BLEQ MT [trap=4, pos=7266] |
03FA | c(81100018): LDR R1, R1, 18H |
03FB | c(D11C664C): BLEQ MT [trap=4, pos=7270] |
03FC | d(82E00024): LDR R2, SP, 24H |
03FD | d(81100008): LDR R1, R1, 8H |
03FE | d(01290001): SUB R1, R2, R1 |
03FF | d(A1000014): STR R1, R0, 14H |
0400 | e(80E00004): LDR R0, SP, 4H |
0401 | e(D11C6D4C): BLEQ MT [trap=4, pos=7277] |
0402 | f(81E00018): LDR R1, SP, 18H |
0403 | f(D11C774C): BLEQ MT [trap=4, pos=7287] |
0404 | g(81100018): LDR R1, R1, 18H |
0405 | g(A1000010): STR R1, R0, 10H |
| pl := pr.prevh;i qb := B.headerj.nextk;l |
0406 | h(80E00014): LDR R0, SP, 14H |
0407 | h(D11C8F4C): BLEQ MT [trap=4, pos=7311] |
0408 | i(80000018): LDR R0, R0, 18H |
0409 | i(A0E00010): STR R0, SP, 10H |
040A | j(80E0000C): LDR R0, SP, CH |
040B | j(D11C9F4C): BLEQ MT [trap=4, pos=7327] |
040C | k(80000004): LDR R0, R0, 4H |
040D | k(D11CA44C): BLEQ MT [trap=4, pos=7332] |
040E | l(8000001C): LDR R0, R0, 1CH |
040F | l(A0E0001C): STR R0, SP, 1CH |
| IF (qb # NIL)m & (nqb.fo = pl.fp)q & (rqb.offs = pl.offt + pl.lenu)v |
0410 | m(80E0001C): LDR R0, SP, 1CH |
0411 | n(E100003A): BEQ 58 [044CH] |
0412 | o(80E0001C): LDR R0, SP, 1CH |
0413 | o(D11CBF4C): BLEQ MT [trap=4, pos=7359] |
0414 | p(81E00010): LDR R1, SP, 10H |
0415 | p(D11CC64C): BLEQ MT [trap=4, pos=7366] |
0416 | q(80000000): LDR R0, R0, 0H |
0417 | q(81100000): LDR R1, R1, 0H |
0418 | q(00090001): SUB R0, R0, R1 |
0419 | r(E9000032): BNE 50 [044CH] |
041A | s(80E0001C): LDR R0, SP, 1CH |
041B | s(D11CD14C): BLEQ MT [trap=4, pos=7377] |
041C | t(81E00010): LDR R1, SP, 10H |
041D | t(D11CDA4C): BLEQ MT [trap=4, pos=7386] |
041E | u(82E00010): LDR R2, SP, 10H |
041F | u(D11CE34C): BLEQ MT [trap=4, pos=7395] |
0420 | v(81100004): LDR R1, R1, 4H |
0421 | v(82200008): LDR R2, R2, 8H |
0422 | v(01180002): ADD R1, R1, R2 |
0423 | v(80000004): LDR R0, R0, 4H |
0424 | v(00090001): SUB R0, R0, R1 |
| & (wqb.fntx = pl.fnty)z & (aqb.colb = pl.colc)d & (eqb.vofff = pl.voffg)h THENi |
0425 | w(E9000026): BNE 38 [044CH] |
0426 | x(80E0001C): LDR R0, SP, 1CH |
0427 | x(D11CF64C): BLEQ MT [trap=4, pos=7414] |
0428 | y(81E00010): LDR R1, SP, 10H |
0429 | y(D11CFF4C): BLEQ MT [trap=4, pos=7423] |
042A | z(8000000C): LDR R0, R0, CH |
042B | z(8110000C): LDR R1, R1, CH |
042C | z(00090001): SUB R0, R0, R1 |
042D | a(E900001E): BNE 30 [044CH] |
042E | b(80E0001C): LDR R0, SP, 1CH |
042F | b(D11D0A4C): BLEQ MT [trap=4, pos=7434] |
0430 | c(81E00010): LDR R1, SP, 10H |
0431 | c(D11D134C): BLEQ MT [trap=4, pos=7443] |
0432 | d(80000010): LDR R0, R0, 10H |
0433 | d(81100010): LDR R1, R1, 10H |
0434 | d(00090001): SUB R0, R0, R1 |
0435 | e(E9000016): BNE 22 [044CH] |
0436 | f(80E0001C): LDR R0, SP, 1CH |
0437 | f(D11D1F4C): BLEQ MT [trap=4, pos=7455] |
0438 | g(81E00010): LDR R1, SP, 10H |
0439 | g(D11D294C): BLEQ MT [trap=4, pos=7465] |
043A | h(80000014): LDR R0, R0, 14H |
043B | h(81100014): LDR R1, R1, 14H |
043C | h(00090001): SUB R0, R0, R1 |
043D | i(E900000E): BNE 14 [044CH] |
| pl.lenj := pl.lenk + qb.lenl;m qb := qb.nextn |
043E | j(80E00010): LDR R0, SP, 10H |
043F | j(D11D3C4C): BLEQ MT [trap=4, pos=7484] |
0440 | k(81E00010): LDR R1, SP, 10H |
0441 | k(D11D464C): BLEQ MT [trap=4, pos=7494] |
0442 | l(82E0001C): LDR R2, SP, 1CH |
0443 | l(D11D4F4C): BLEQ MT [trap=4, pos=7503] |
0444 | m(81100008): LDR R1, R1, 8H |
0445 | m(82200008): LDR R2, R2, 8H |
0446 | m(01180002): ADD R1, R1, R2 |
0447 | m(A1000008): STR R1, R0, 8H |
0448 | n(80E0001C): LDR R0, SP, 1CH |
0449 | n(D11D5E4C): BLEQ MT [trap=4, pos=7518] |
| ENDo; |
044A | o(8000001C): LDR R0, R0, 1CH |
044B | o(A0E0001C): STR R0, SP, 1CH |
| IF qb # NIL THENp qe := B.lastq;r |
044C | p(80E0001C): LDR R0, SP, 1CH |
044D | p(E1000014): BEQ 20 [0462H] |
044E | q(80E0000C): LDR R0, SP, CH |
044F | q(D11D894C): BLEQ MT [trap=4, pos=7561] |
0450 | r(80000008): LDR R0, R0, 8H |
0451 | r(A0E00020): STR R0, SP, 20H |
| qb.prevs := pl;t pl.nextu := qb;v qe.nextw := pr;x pr.prevy := qe |
0452 | s(80E0001C): LDR R0, SP, 1CH |
0453 | s(D11D984C): BLEQ MT [trap=4, pos=7576] |
0454 | t(81E00010): LDR R1, SP, 10H |
0455 | t(A1000018): STR R1, R0, 18H |
0456 | u(80E00010): LDR R0, SP, 10H |
0457 | u(D11DA74C): BLEQ MT [trap=4, pos=7591] |
0458 | v(81E0001C): LDR R1, SP, 1CH |
0459 | v(A100001C): STR R1, R0, 1CH |
045A | w(80E00020): LDR R0, SP, 20H |
045B | w(D11DB64C): BLEQ MT [trap=4, pos=7606] |
045C | x(81E00014): LDR R1, SP, 14H |
045D | x(A100001C): STR R1, R0, 1CH |
045E | y(80E00014): LDR R0, SP, 14H |
045F | y(D11DC54C): BLEQ MT [trap=4, pos=7621] |
| ENDz; |
0460 | z(81E00020): LDR R1, SP, 20H |
0461 | z(A1000018): STR R1, R0, 18H |
| T.lena := T.lenb + B.lenc;d end := pos + B.lene;f |
0462 | a(80E00004): LDR R0, SP, 4H |
0463 | a(D11DDE4C): BLEQ MT [trap=4, pos=7646] |
0464 | b(81E00004): LDR R1, SP, 4H |
0465 | b(D11DE74C): BLEQ MT [trap=4, pos=7655] |
0466 | c(82E0000C): LDR R2, SP, CH |
0467 | c(D11DEF4C): BLEQ MT [trap=4, pos=7663] |
0468 | d(81100000): LDR R1, R1, 0H |
0469 | d(82200000): LDR R2, R2, 0H |
046A | d(01180002): ADD R1, R1, R2 |
046B | d(A1000000): STR R1, R0, 0H |
046C | e(80E0000C): LDR R0, SP, CH |
046D | e(D11E034C): BLEQ MT [trap=4, pos=7683] |
046E | f(81E00008): LDR R1, SP, 8H |
046F | f(80000000): LDR R0, R0, 0H |
0470 | f(00180000): ADD R0, R1, R0 |
0471 | f(A0E00028): STR R0, SP, 28H |
| B.lastg := B.headerh;i B.lastj.nextk := NIL;l B.lenm := 0;n |
0472 | g(80E0000C): LDR R0, SP, CH |
0473 | g(D11E0F4C): BLEQ MT [trap=4, pos=7695] |
0474 | h(81E0000C): LDR R1, SP, CH |
0475 | h(D11E1B4C): BLEQ MT [trap=4, pos=7707] |
0476 | i(81100004): LDR R1, R1, 4H |
0477 | i(A1000008): STR R1, R0, 8H |
0478 | j(80E0000C): LDR R0, SP, CH |
0479 | j(D11E234C): BLEQ MT [trap=4, pos=7715] |
047A | k(80000008): LDR R0, R0, 8H |
047B | k(D11E284C): BLEQ MT [trap=4, pos=7720] |
047C | l(41000000): MOV R1, R0, 0H |
047D | l(A100001C): STR R1, R0, 1CH |
047E | m(80E0000C): LDR R0, SP, CH |
047F | m(D11E364C): BLEQ MT [trap=4, pos=7734] |
0480 | n(41000000): MOV R1, R0, 0H |
0481 | n(A1000000): STR R1, R0, 0H |
| T.changedo := TRUE;p T.notifyq(Tr,s insert,t pos,u end)v |
0482 | o(80E00004): LDR R0, SP, 4H |
0483 | o(D11E4A4C): BLEQ MT [trap=4, pos=7754] |
0484 | p(41000001): MOV R1, R0, 1H |
0485 | p(B1000004): STR R1, R0, 4H |
0486 | q(80E00004): LDR R0, SP, 4H |
0487 | q(D11E5C4C): BLEQ MT [trap=4, pos=7772] |
0488 | r(80000008): LDR R0, R0, 8H |
0489 | r(4EE90004): SUB SP, SP, 4H |
048A | r(A0E00000): STR R0, SP, 0H |
048B | s(80E00008): LDR R0, SP, 8H |
048C | t(41000001): MOV R1, R0, 1H |
048D | u(82E0000C): LDR R2, SP, CH |
048E | v(83E0002C): LDR R3, SP, 2CH |
| ENDw Insert; |
048F | w(84E00000): LDR R4, SP, 0H |
0490 | w(4EE80004): ADD SP, SP, 4H |
0491 | w(D11E775C): BLEQ MT [trap=5, pos=7799] |
0492 | w(D7000004): BL R4 |
0493 | w(8FE00000): LDR LNK, SP, 0H |
0494 | w(4EE8002C): ADD SP, SP, 2CH |
0495 | w(C700000F): B LNK |
| |
| PROCEDURE Append* (T: Text; B: Buffer); |
| BEGINx Insert(T,y T.lenz,a B)b |
0496 | x .PROC 14 |
0496 | x(4EE9000C): SUB SP, SP, CH |
0497 | x(AFE00000): STR LNK, SP, 0H |
0498 | x(A0E00004): STR R0, SP, 4H |
0499 | x(A1E00008): STR R1, SP, 8H |
049A | y(80E00004): LDR R0, SP, 4H |
049B | z(81E00004): LDR R1, SP, 4H |
049C | z(D11EC24C): BLEQ MT [trap=4, pos=7874] |
049D | a(81100000): LDR R1, R1, 0H |
049E | b(82E00008): LDR R2, SP, 8H |
| ENDc Append; |
049F | c(F7FFFF40): BL -192 [03E0H] |
04A0 | c(8FE00000): LDR LNK, SP, 0H |
04A1 | c(4EE8000C): ADD SP, SP, CH |
04A2 | c(C700000F): B LNK |
| |
| PROCEDURE Delete* (T: Text; beg, end: LONGINT; B: Buffer); |
| VAR pb, pe, pbr, per: Piece; orgb, orge: LONGINT; |
| BEGINd |
04A3 | d .PROC 15 |
04A3 | d(4EE9002C): SUB SP, SP, 2CH |
04A4 | d(AFE00000): STR LNK, SP, 0H |
04A5 | d(A0E00004): STR R0, SP, 4H |
04A6 | d(A1E00008): STR R1, SP, 8H |
04A7 | d(A2E0000C): STR R2, SP, CH |
04A8 | d(A3E00010): STR R3, SP, 10H |
| IF end > T.lene THENf end := T.leng ENDh; |
04A9 | e(80E00004): LDR R0, SP, 4H |
04AA | e(D11F634C): BLEQ MT [trap=4, pos=8035] |
04AB | f(81E0000C): LDR R1, SP, CH |
04AC | f(80000000): LDR R0, R0, 0H |
04AD | f(01190000): SUB R1, R1, R0 |
04AE | f(E6000004): BLE 4 [04B3H] |
04AF | g(80E00004): LDR R0, SP, 4H |
04B0 | g(D11F754C): BLEQ MT [trap=4, pos=8053] |
04B1 | h(80000000): LDR R0, R0, 0H |
04B2 | h(A0E0000C): STR R0, SP, CH |
| FindPiece(T,i beg,j orgb,k pb)l;m SplitPiece(pb,n beg - orgb,o pbr)p;q |
04B3 | i(80E00004): LDR R0, SP, 4H |
04B4 | j(81E00008): LDR R1, SP, 8H |
04B5 | k(42E80024): ADD R2, SP, 24H |
04B6 | l(43E80014): ADD R3, SP, 14H |
04B7 | m(F7FFFDAC): BL -596 [0264H] |
04B8 | n(80E00014): LDR R0, SP, 14H |
04B9 | o(81E00008): LDR R1, SP, 8H |
04BA | o(82E00024): LDR R2, SP, 24H |
04BB | o(01190002): SUB R1, R1, R2 |
04BC | p(42E8001C): ADD R2, SP, 1CH |
04BD | q(F7FFFDF6): BL -522 [02B4H] |
| FindPiece(T,r end,s orge,t pe)u;v |
04BE | r(80E00004): LDR R0, SP, 4H |
04BF | s(81E0000C): LDR R1, SP, CH |
04C0 | t(42E80028): ADD R2, SP, 28H |
04C1 | u(43E80018): ADD R3, SP, 18H |
04C2 | v(F7FFFDA1): BL -607 [0264H] |
| SplitPiece(pe,w end - orge,x per)y;z |
04C3 | w(80E00018): LDR R0, SP, 18H |
04C4 | x(81E0000C): LDR R1, SP, CH |
04C5 | x(82E00028): LDR R2, SP, 28H |
04C6 | x(01190002): SUB R1, R1, R2 |
04C7 | y(42E80020): ADD R2, SP, 20H |
04C8 | z(F7FFFDEB): BL -533 [02B4H] |
| IF T.orga >= orgb THENb (*adjust cache*) |
04C9 | a(80E00004): LDR R0, SP, 4H |
04CA | a(D1200F4C): BLEQ MT [trap=4, pos=8207] |
04CB | b(80000014): LDR R0, R0, 14H |
04CC | b(81E00024): LDR R1, SP, 24H |
04CD | b(00090001): SUB R0, R0, R1 |
04CE | b(E5000010): BLT 16 [04DFH] |
| T.orgc := orgb - pb.prevd.lene;f T.pceg := pb.prevh |
04CF | c(80E00004): LDR R0, SP, 4H |
04D0 | c(D120394C): BLEQ MT [trap=4, pos=8249] |
04D1 | d(81E00014): LDR R1, SP, 14H |
04D2 | d(D1204B4C): BLEQ MT [trap=4, pos=8267] |
04D3 | e(81100018): LDR R1, R1, 18H |
04D4 | e(D1204F4C): BLEQ MT [trap=4, pos=8271] |
04D5 | f(82E00024): LDR R2, SP, 24H |
04D6 | f(81100008): LDR R1, R1, 8H |
04D7 | f(01290001): SUB R1, R2, R1 |
04D8 | f(A1000014): STR R1, R0, 14H |
04D9 | g(80E00004): LDR R0, SP, 4H |
04DA | g(D120564C): BLEQ MT [trap=4, pos=8278] |
04DB | h(81E00014): LDR R1, SP, 14H |
04DC | h(D120614C): BLEQ MT [trap=4, pos=8289] |
| ENDi; |
04DD | i(81100018): LDR R1, R1, 18H |
04DE | i(A1000010): STR R1, R0, 10H |
| B.headerj.nextk := pbr;l B.lastm := per.prevn;o |
04DF | j(80E00010): LDR R0, SP, 10H |
04E0 | j(D120774C): BLEQ MT [trap=4, pos=8311] |
04E1 | k(80000004): LDR R0, R0, 4H |
04E2 | k(D1207C4C): BLEQ MT [trap=4, pos=8316] |
04E3 | l(81E0001C): LDR R1, SP, 1CH |
04E4 | l(A100001C): STR R1, R0, 1CH |
04E5 | m(80E00010): LDR R0, SP, 10H |
04E6 | m(D1208B4C): BLEQ MT [trap=4, pos=8331] |
04E7 | n(81E00020): LDR R1, SP, 20H |
04E8 | n(D120974C): BLEQ MT [trap=4, pos=8343] |
04E9 | o(81100018): LDR R1, R1, 18H |
04EA | o(A1000008): STR R1, R0, 8H |
| B.lastp.nextq := NIL;r B.lens := end - beg;t |
04EB | p(80E00010): LDR R0, SP, 10H |
04EC | p(D120A34C): BLEQ MT [trap=4, pos=8355] |
04ED | q(80000008): LDR R0, R0, 8H |
04EE | q(D120A84C): BLEQ MT [trap=4, pos=8360] |
04EF | r(41000000): MOV R1, R0, 0H |
04F0 | r(A100001C): STR R1, R0, 1CH |
04F1 | s(80E00010): LDR R0, SP, 10H |
04F2 | s(D120B64C): BLEQ MT [trap=4, pos=8374] |
04F3 | t(81E0000C): LDR R1, SP, CH |
04F4 | t(82E00008): LDR R2, SP, 8H |
04F5 | t(01190002): SUB R1, R1, R2 |
04F6 | t(A1000000): STR R1, R0, 0H |
| per.prevu := pbr.prevv;w pbr.prevx.nexty := per;z |
04F7 | u(80E00020): LDR R0, SP, 20H |
04F8 | u(D120D14C): BLEQ MT [trap=4, pos=8401] |
04F9 | v(81E0001C): LDR R1, SP, 1CH |
04FA | v(D120DD4C): BLEQ MT [trap=4, pos=8413] |
04FB | w(81100018): LDR R1, R1, 18H |
04FC | w(A1000018): STR R1, R0, 18H |
04FD | x(80E0001C): LDR R0, SP, 1CH |
04FE | x(D120E74C): BLEQ MT [trap=4, pos=8423] |
04FF | y(80000018): LDR R0, R0, 18H |
0500 | y(D120EC4C): BLEQ MT [trap=4, pos=8428] |
0501 | z(81E00020): LDR R1, SP, 20H |
0502 | z(A100001C): STR R1, R0, 1CH |
| T.lena := T.lenb - B.lenc;d |
0503 | a(80E00004): LDR R0, SP, 4H |
0504 | a(D120FE4C): BLEQ MT [trap=4, pos=8446] |
0505 | b(81E00004): LDR R1, SP, 4H |
0506 | b(D121074C): BLEQ MT [trap=4, pos=8455] |
0507 | c(82E00010): LDR R2, SP, 10H |
0508 | c(D1210F4C): BLEQ MT [trap=4, pos=8463] |
0509 | d(81100000): LDR R1, R1, 0H |
050A | d(82200000): LDR R2, R2, 0H |
050B | d(01190002): SUB R1, R1, R2 |
050C | d(A1000000): STR R1, R0, 0H |
| T.changede := TRUE;f T.notifyg(Th,i delete,j beg,k end)l |
050D | e(80E00004): LDR R0, SP, 4H |
050E | e(D1211E4C): BLEQ MT [trap=4, pos=8478] |
050F | f(41000001): MOV R1, R0, 1H |
0510 | f(B1000004): STR R1, R0, 4H |
0511 | g(80E00004): LDR R0, SP, 4H |
0512 | g(D121304C): BLEQ MT [trap=4, pos=8496] |
0513 | h(80000008): LDR R0, R0, 8H |
0514 | h(4EE90004): SUB SP, SP, 4H |
0515 | h(A0E00000): STR R0, SP, 0H |
0516 | i(80E00008): LDR R0, SP, 8H |
0517 | j(41000002): MOV R1, R0, 2H |
0518 | k(82E0000C): LDR R2, SP, CH |
0519 | l(83E00010): LDR R3, SP, 10H |
| ENDm Delete; |
051A | m(84E00000): LDR R4, SP, 0H |
051B | m(4EE80004): ADD SP, SP, 4H |
051C | m(D1214B5C): BLEQ MT [trap=5, pos=8523] |
051D | m(D7000004): BL R4 |
051E | m(8FE00000): LDR LNK, SP, 0H |
051F | m(4EE8002C): ADD SP, SP, 2CH |
0520 | m(C700000F): B LNK |
| |
| PROCEDURE ChangeLooks* (T: Text; beg, end: LONGINT; sel: SET; fnt: Fonts.Font; col, voff: INTEGER); |
| VAR pb, pe, p: Piece; org: LONGINT; |
| BEGINn |
0521 | n .PROC 16 |
0521 | n(4EE90030): SUB SP, SP, 30H |
0522 | n(AFE00000): STR LNK, SP, 0H |
0523 | n(A0E00004): STR R0, SP, 4H |
0524 | n(A1E00008): STR R1, SP, 8H |
0525 | n(A2E0000C): STR R2, SP, CH |
0526 | n(A3E00010): STR R3, SP, 10H |
0527 | n(A4E00014): STR R4, SP, 14H |
0528 | n(A5E00018): STR R5, SP, 18H |
0529 | n(A6E0001C): STR R6, SP, 1CH |
| IF end > T.leno THENp end := T.lenq ENDr; |
052A | o(80E00004): LDR R0, SP, 4H |
052B | o(D121FD4C): BLEQ MT [trap=4, pos=8701] |
052C | p(81E0000C): LDR R1, SP, CH |
052D | p(80000000): LDR R0, R0, 0H |
052E | p(01190000): SUB R1, R1, R0 |
052F | p(E6000004): BLE 4 [0534H] |
0530 | q(80E00004): LDR R0, SP, 4H |
0531 | q(D1220F4C): BLEQ MT [trap=4, pos=8719] |
0532 | r(80000000): LDR R0, R0, 0H |
0533 | r(A0E0000C): STR R0, SP, CH |
| FindPiece(T,s beg,t org,u p)v;w SplitPiece(p,x beg - org,y pb)z;a |
0534 | s(80E00004): LDR R0, SP, 4H |
0535 | t(81E00008): LDR R1, SP, 8H |
0536 | u(42E8002C): ADD R2, SP, 2CH |
0537 | v(43E80028): ADD R3, SP, 28H |
0538 | w(F7FFFD2B): BL -725 [0264H] |
0539 | x(80E00028): LDR R0, SP, 28H |
053A | y(81E00008): LDR R1, SP, 8H |
053B | y(82E0002C): LDR R2, SP, 2CH |
053C | y(01190002): SUB R1, R1, R2 |
053D | z(42E80020): ADD R2, SP, 20H |
053E | a(F7FFFD75): BL -651 [02B4H] |
| FindPiece(T,b end,c org,d p)e;f SplitPiece(p,g end - org,h pe)i;j |
053F | b(80E00004): LDR R0, SP, 4H |
0540 | c(81E0000C): LDR R1, SP, CH |
0541 | d(42E8002C): ADD R2, SP, 2CH |
0542 | e(43E80028): ADD R3, SP, 28H |
0543 | f(F7FFFD20): BL -736 [0264H] |
0544 | g(80E00028): LDR R0, SP, 28H |
0545 | h(81E0000C): LDR R1, SP, CH |
0546 | h(82E0002C): LDR R2, SP, 2CH |
0547 | h(01190002): SUB R1, R1, R2 |
0548 | i(42E80024): ADD R2, SP, 24H |
0549 | j(F7FFFD6A): BL -662 [02B4H] |
| p := pb;k |
054A | k(80E00020): LDR R0, SP, 20H |
054B | k(A0E00028): STR R0, SP, 28H |
| REPEAT |
| IF 0 IN sel THENl p.fntm := fnt ENDn; |
054C | l(80E00010): LDR R0, SP, 10H |
054D | l(40030001): ROR R0, R0, 1H |
054E | l(E8000004): BPL 4 [0553H] |
054F | m(80E00028): LDR R0, SP, 28H |
0550 | m(D122C34C): BLEQ MT [trap=4, pos=8899] |
0551 | n(81E00014): LDR R1, SP, 14H |
0552 | n(A100000C): STR R1, R0, CH |
| IF 1 IN sel THENo p.colp := col ENDq; |
0553 | o(80E00010): LDR R0, SP, 10H |
0554 | o(40030002): ROR R0, R0, 2H |
0555 | o(E8000004): BPL 4 [055AH] |
0556 | p(80E00028): LDR R0, SP, 28H |
0557 | p(D122EC4C): BLEQ MT [trap=4, pos=8940] |
0558 | q(81E00018): LDR R1, SP, 18H |
0559 | q(A1000010): STR R1, R0, 10H |
| IF 2 IN sel THENr p.voffs := voff ENDt; |
055A | r(80E00010): LDR R0, SP, 10H |
055B | r(40030003): ROR R0, R0, 3H |
055C | r(E8000004): BPL 4 [0561H] |
055D | s(80E00028): LDR R0, SP, 28H |
055E | s(D123164C): BLEQ MT [trap=4, pos=8982] |
055F | t(81E0001C): LDR R1, SP, 1CH |
0560 | t(A1000014): STR R1, R0, 14H |
| p := p.nextu |
0561 | u(80E00028): LDR R0, SP, 28H |
0562 | u(D123354C): BLEQ MT [trap=4, pos=9013] |
| UNTILv p = pe;w |
0563 | v(8000001C): LDR R0, R0, 1CH |
0564 | v(A0E00028): STR R0, SP, 28H |
0565 | w(80E00028): LDR R0, SP, 28H |
0566 | w(81E00024): LDR R1, SP, 24H |
0567 | w(00090001): SUB R0, R0, R1 |
0568 | w(E9FFFFE3): BNE -29 [054CH] |
| T.changedx := TRUE;y T.notifyz(Ta,b replace,c beg,d end)e |
0569 | x(80E00004): LDR R0, SP, 4H |
056A | x(D123554C): BLEQ MT [trap=4, pos=9045] |
056B | y(41000001): MOV R1, R0, 1H |
056C | y(B1000004): STR R1, R0, 4H |
056D | z(80E00004): LDR R0, SP, 4H |
056E | z(D123674C): BLEQ MT [trap=4, pos=9063] |
056F | a(80000008): LDR R0, R0, 8H |
0570 | a(4EE90004): SUB SP, SP, 4H |
0571 | a(A0E00000): STR R0, SP, 0H |
0572 | b(80E00008): LDR R0, SP, 8H |
0573 | c(41000000): MOV R1, R0, 0H |
0574 | d(82E0000C): LDR R2, SP, CH |
0575 | e(83E00010): LDR R3, SP, 10H |
| ENDf ChangeLooks; |
0576 | f(84E00000): LDR R4, SP, 0H |
0577 | f(4EE80004): ADD SP, SP, 4H |
0578 | f(D123835C): BLEQ MT [trap=5, pos=9091] |
0579 | f(D7000004): BL R4 |
057A | f(8FE00000): LDR LNK, SP, 0H |
057B | f(4EE80030): ADD SP, SP, 30H |
057C | f(C700000F): B LNK |
| |
| PROCEDURE Attributes*(T: Text; pos: LONGINT; VAR fnt: Fonts.Font; VAR col, voff: INTEGER); |
| VAR p: Piece; org: LONGINT; |
| BEGINg FindPiece(T,h pos,i org,j p)k;l fnt := p.fntm;n col := p.colo;p voff := p.voffq |
057D | g .PROC 17 |
057D | g(4EE90020): SUB SP, SP, 20H |
057E | g(AFE00000): STR LNK, SP, 0H |
057F | g(A0E00004): STR R0, SP, 4H |
0580 | g(A1E00008): STR R1, SP, 8H |
0581 | g(A2E0000C): STR R2, SP, CH |
0582 | g(A3E00010): STR R3, SP, 10H |
0583 | g(A4E00014): STR R4, SP, 14H |
0584 | h(80E00004): LDR R0, SP, 4H |
0585 | i(81E00008): LDR R1, SP, 8H |
0586 | j(42E8001C): ADD R2, SP, 1CH |
0587 | k(43E80018): ADD R3, SP, 18H |
0588 | l(F7FFFCDB): BL -805 [0264H] |
0589 | m(80E00018): LDR R0, SP, 18H |
058A | m(D1243E4C): BLEQ MT [trap=4, pos=9278] |
058B | n(8000000C): LDR R0, R0, CH |
058C | n(81E0000C): LDR R1, SP, CH |
058D | n(A0100000): STR R0, R1, 0H |
058E | o(80E00018): LDR R0, SP, 18H |
058F | o(D1244C4C): BLEQ MT [trap=4, pos=9292] |
0590 | p(80000010): LDR R0, R0, 10H |
0591 | p(81E00010): LDR R1, SP, 10H |
0592 | p(A0100000): STR R0, R1, 0H |
0593 | q(80E00018): LDR R0, SP, 18H |
0594 | q(D1245C4C): BLEQ MT [trap=4, pos=9308] |
| ENDr Attributes; |
0595 | r(80000014): LDR R0, R0, 14H |
0596 | r(81E00014): LDR R1, SP, 14H |
0597 | r(A0100000): STR R0, R1, 0H |
0598 | r(8FE00000): LDR LNK, SP, 0H |
0599 | r(4EE80020): ADD SP, SP, 20H |
059A | r(C700000F): B LNK |
| |
| (* ------------------ Access: Readers ------------------------- *) |
| |
| PROCEDURE OpenReader* (VAR R: Reader; T: Text; pos: LONGINT); |
| VAR p: Piece; org: LONGINT; |
| BEGINs FindPiece(T,t pos,u org,v p)w;x |
059B | s .PROC 18 |
059B | s(4EE9001C): SUB SP, SP, 1CH |
059C | s(AFE00000): STR LNK, SP, 0H |
059D | s(A0E00004): STR R0, SP, 4H |
059E | s(A1E00008): STR R1, SP, 8H |
059F | s(A2E0000C): STR R2, SP, CH |
05A0 | s(A3E00010): STR R3, SP, 10H |
05A1 | t(80E0000C): LDR R0, SP, CH |
05A2 | u(81E00010): LDR R1, SP, 10H |
05A3 | v(42E80018): ADD R2, SP, 18H |
05A4 | w(43E80014): ADD R3, SP, 14H |
05A5 | x(F7FFFCBE): BL -834 [0264H] |
| R.ref := p;y R.org := org;z R.off := pos - org;a |
05A6 | y(80E00014): LDR R0, SP, 14H |
05A7 | y(81E00004): LDR R1, SP, 4H |
05A8 | y(A0100010): STR R0, R1, 10H |
05A9 | z(80E00018): LDR R0, SP, 18H |
05AA | z(81E00004): LDR R1, SP, 4H |
05AB | z(A0100014): STR R0, R1, 14H |
05AC | a(80E00010): LDR R0, SP, 10H |
05AD | a(81E00018): LDR R1, SP, 18H |
05AE | a(00090001): SUB R0, R0, R1 |
05AF | a(81E00004): LDR R1, SP, 4H |
05B0 | a(A0100018): STR R0, R1, 18H |
| Files.Set(R.rider,b p.fc,d p.offe + R.off)f;g R.eot := FALSE |
05B1 | b(80E00004): LDR R0, SP, 4H |
05B2 | b(4008001C): ADD R0, R0, 1CH |
05B3 | b(81E00008): LDR R1, SP, 8H |
05B4 | c(82E00014): LDR R2, SP, 14H |
05B5 | c(D125854C): BLEQ MT [trap=4, pos=9605] |
05B6 | d(82200000): LDR R2, R2, 0H |
05B7 | e(83E00014): LDR R3, SP, 14H |
05B8 | e(D1258C4C): BLEQ MT [trap=4, pos=9612] |
05B9 | f(83300004): LDR R3, R3, 4H |
05BA | f(84E00004): LDR R4, SP, 4H |
05BB | f(84400018): LDR R4, R4, 18H |
05BC | f(03380004): ADD R3, R3, R4 |
05BD | g .FIXUP P |
05BD | g(F710B373): BL MOD1 [Files] PROC11 |
| ENDh OpenReader; |
05BE | h(40000000): MOV R0, R0, 0H |
05BF | h(81E00004): LDR R1, SP, 4H |
05C0 | h(B0100000): STR R0, R1, 0H |
05C1 | h(8FE00000): LDR LNK, SP, 0H |
05C2 | h(4EE8001C): ADD SP, SP, 1CH |
05C3 | h(C700000F): B LNK |
| |
| PROCEDURE Read* (VAR R: Reader; VAR ch: CHAR); |
| BEGINi Files.Read(R.rider,j ch)k;l |
05C4 | i .PROC 19 |
05C4 | i(4EE90010): SUB SP, SP, 10H |
05C5 | i(AFE00000): STR LNK, SP, 0H |
05C6 | i(A0E00004): STR R0, SP, 4H |
05C7 | i(A1E00008): STR R1, SP, 8H |
05C8 | i(A2E0000C): STR R2, SP, CH |
05C9 | j(80E00004): LDR R0, SP, 4H |
05CA | j(4008001C): ADD R0, R0, 1CH |
05CB | j(81E00008): LDR R1, SP, 8H |
05CC | k(82E0000C): LDR R2, SP, CH |
05CD | l .FIXUP P |
05CD | l(F7110010): BL MOD1 [Files] PROC16 |
| R.fnt := R.ref.fntm;n R.col := R.ref.colo;p R.voff := R.ref.voffq;r |
05CE | m(80E00004): LDR R0, SP, 4H |
05CF | m(80000010): LDR R0, R0, 10H |
05D0 | m(D126214C): BLEQ MT [trap=4, pos=9761] |
05D1 | n(8000000C): LDR R0, R0, CH |
05D2 | n(81E00004): LDR R1, SP, 4H |
05D3 | n(A0100004): STR R0, R1, 4H |
05D4 | o(80E00004): LDR R0, SP, 4H |
05D5 | o(80000010): LDR R0, R0, 10H |
05D6 | o(D126354C): BLEQ MT [trap=4, pos=9781] |
05D7 | p(80000010): LDR R0, R0, 10H |
05D8 | p(81E00004): LDR R1, SP, 4H |
05D9 | p(A0100008): STR R0, R1, 8H |
05DA | q(80E00004): LDR R0, SP, 4H |
05DB | q(80000010): LDR R0, R0, 10H |
05DC | q(D1264B4C): BLEQ MT [trap=4, pos=9803] |
05DD | r(80000014): LDR R0, R0, 14H |
05DE | r(81E00004): LDR R1, SP, 4H |
05DF | r(A010000C): STR R0, R1, CH |
| INC(R.off);s |
05E0 | s(80E00004): LDR R0, SP, 4H |
05E1 | s(40080018): ADD R0, R0, 18H |
05E2 | s(81000000): LDR R1, R0, 0H |
05E3 | s(41180001): ADD R1, R1, 1H |
05E4 | s(A1000000): STR R1, R0, 0H |
| IF R.off = R.ref.lent THENu |
05E5 | t(80E00004): LDR R0, SP, 4H |
05E6 | t(80000010): LDR R0, R0, 10H |
05E7 | t(D126754C): BLEQ MT [trap=4, pos=9845] |
05E8 | u(81E00004): LDR R1, SP, 4H |
05E9 | u(81100018): LDR R1, R1, 18H |
05EA | u(80000008): LDR R0, R0, 8H |
05EB | u(01190000): SUB R1, R1, R0 |
05EC | u(E9000031): BNE 49 [061EH] |
| IF R.ref.fv = TrailerFile THENw R.eot := TRUE ENDx; |
05ED | v(80E00004): LDR R0, SP, 4H |
05EE | v(80000010): LDR R0, R0, 10H |
05EF | v(D1268B4C): BLEQ MT [trap=4, pos=9867] |
05F0 | w(80000000): LDR R0, R0, 0H |
05F1 | w .FIXUP D |
05F1 | w(8D00023B): LDR SB, MT, MOD0 [Texts] |
05F2 | w(81D000C8): LDR R1, SB, C8H [data] |
05F3 | w(00090001): SUB R0, R0, R1 |
05F4 | w(E9000003): BNE 3 [05F8H] |
05F5 | x(40000001): MOV R0, R0, 1H |
05F6 | x(81E00004): LDR R1, SP, 4H |
05F7 | x(B0100000): STR R0, R1, 0H |
| R.org := R.org + R.off;y R.off := 0;z |
05F8 | y(80E00004): LDR R0, SP, 4H |
05F9 | y(80000014): LDR R0, R0, 14H |
05FA | y(81E00004): LDR R1, SP, 4H |
05FB | y(81100018): LDR R1, R1, 18H |
05FC | y(00080001): ADD R0, R0, R1 |
05FD | y(81E00004): LDR R1, SP, 4H |
05FE | y(A0100014): STR R0, R1, 14H |
05FF | z(40000000): MOV R0, R0, 0H |
0600 | z(81E00004): LDR R1, SP, 4H |
0601 | z(A0100018): STR R0, R1, 18H |
| R.ref := R.ref.nexta;b R.org := R.org + R.off;c R.off := 0;d |
0602 | a(80E00004): LDR R0, SP, 4H |
0603 | a(80000010): LDR R0, R0, 10H |
0604 | a(D126F54C): BLEQ MT [trap=4, pos=9973] |
0605 | b(8000001C): LDR R0, R0, 1CH |
0606 | b(81E00004): LDR R1, SP, 4H |
0607 | b(A0100010): STR R0, R1, 10H |
0608 | c(80E00004): LDR R0, SP, 4H |
0609 | c(80000014): LDR R0, R0, 14H |
060A | c(81E00004): LDR R1, SP, 4H |
060B | c(81100018): LDR R1, R1, 18H |
060C | c(00080001): ADD R0, R0, R1 |
060D | c(81E00004): LDR R1, SP, 4H |
060E | c(A0100014): STR R0, R1, 14H |
060F | d(40000000): MOV R0, R0, 0H |
0610 | d(81E00004): LDR R1, SP, 4H |
0611 | d(A0100018): STR R0, R1, 18H |
| Files.Set(R.rider,e R.ref.ff,g R.ref.offh)i |
0612 | e(80E00004): LDR R0, SP, 4H |
0613 | e(4008001C): ADD R0, R0, 1CH |
0614 | e(81E00008): LDR R1, SP, 8H |
0615 | f(82E00004): LDR R2, SP, 4H |
0616 | f(82200010): LDR R2, R2, 10H |
0617 | f(D1273B4C): BLEQ MT [trap=4, pos=10043] |
0618 | g(82200000): LDR R2, R2, 0H |
0619 | h(83E00004): LDR R3, SP, 4H |
061A | h(83300010): LDR R3, R3, 10H |
061B | h(D127464C): BLEQ MT [trap=4, pos=10054] |
061C | i(83300004): LDR R3, R3, 4H |
| ENDj |
061D | j .FIXUP P |
061D | j(F710B050): BL MOD1 [Files] PROC11 |
| ENDk Read; |
061E | k(8FE00000): LDR LNK, SP, 0H |
061F | k(4EE80010): ADD SP, SP, 10H |
0620 | k(C700000F): B LNK |
| |
| PROCEDURE Pos* (VAR R: Reader): LONGINT; |
| BEGINl RETURN R.org + R.off |
0621 | l .PROC 20 |
0621 | l(4EE9000C): SUB SP, SP, CH |
0622 | l(AFE00000): STR LNK, SP, 0H |
0623 | l(A0E00004): STR R0, SP, 4H |
0624 | l(A1E00008): STR R1, SP, 8H |
| ENDm Pos; |
0625 | m(80E00004): LDR R0, SP, 4H |
0626 | m(80000014): LDR R0, R0, 14H |
0627 | m(81E00004): LDR R1, SP, 4H |
0628 | m(81100018): LDR R1, R1, 18H |
0629 | m(00080001): ADD R0, R0, R1 |
062A | m(8FE00000): LDR LNK, SP, 0H |
062B | m(4EE8000C): ADD SP, SP, CH |
062C | m(C700000F): B LNK |
| |
| (* ------------------ Access: Scanners (NW) ------------------------- *) |
| |
| PROCEDURE OpenScanner* (VAR S: Scanner; T: Text; pos: LONGINT); |
| BEGINn OpenReader(S,o T,p pos)q;r S.line := 0;s S.nextCh := " " |
062D | n .PROC 21 |
062D | n(4EE90014): SUB SP, SP, 14H |
062E | n(AFE00000): STR LNK, SP, 0H |
062F | n(A0E00004): STR R0, SP, 4H |
0630 | n(A1E00008): STR R1, SP, 8H |
0631 | n(A2E0000C): STR R2, SP, CH |
0632 | n(A3E00010): STR R3, SP, 10H |
0633 | o(80E00004): LDR R0, SP, 4H |
0634 | o(81E00008): LDR R1, SP, 8H |
0635 | p(82E0000C): LDR R2, SP, CH |
0636 | q(83E00010): LDR R3, SP, 10H |
0637 | r(F7FFFF63): BL -157 [059BH] |
0638 | s(40000000): MOV R0, R0, 0H |
0639 | s(81E00004): LDR R1, SP, 4H |
063A | s(A0100038): STR R0, R1, 38H |
| ENDt OpenScanner; |
063B | t(40000020): MOV R0, R0, 20H |
063C | t(81E00004): LDR R1, SP, 4H |
063D | t(B0100034): STR R0, R1, 34H |
063E | t(8FE00000): LDR LNK, SP, 0H |
063F | t(4EE80014): ADD SP, SP, 14H |
0640 | t(C700000F): B LNK |
| |
| (*floating point formats: |
| x = 1.m * 2^(e-127) bit 0: sign, bits 1- 8: e, bits 9-31: m |
| x = 1.m * 2^(e-1023) bit 0: sign, bits 1-11: e, bits 12-63: m *) |
| |
| PROCEDURE Ten(n: INTEGER): REAL; |
| VAR t, p: REAL; |
| BEGINu t := 1.0;v p := 10.0;w (*compute 10^n *) |
0641 | u(4EE90010): SUB SP, SP, 10H |
0642 | u(AFE00000): STR LNK, SP, 0H |
0643 | u(A0E00004): STR R0, SP, 4H |
0644 | v(60003F80): MOV' R0, R0, 3F80H |
0645 | v(A0E00008): STR R0, SP, 8H |
0646 | w(60004120): MOV' R0, R0, 4120H |
0647 | w(A0E0000C): STR R0, SP, CH |
| WHILE n > 0 DOx |
0648 | x(80E00004): LDR R0, SP, 4H |
0649 | x(40090000): SUB R0, R0, 0H |
064A | x(E600000F): BLE 15 [065AH] |
| IF ODD(n) THENy t := p * t ENDz ; |
064B | y(80E00004): LDR R0, SP, 4H |
064C | y(40040001): AND R0, R0, 1H |
064D | y(E1000004): BEQ 4 [0652H] |
064E | z(80E0000C): LDR R0, SP, CH |
064F | z(81E00008): LDR R1, SP, 8H |
0650 | z(000E0001): FML R0, R0, R1 |
0651 | z(A0E00008): STR R0, SP, 8H |
| p := p*p;a n := n DIV 2 |
0652 | a(80E0000C): LDR R0, SP, CH |
0653 | a(81E0000C): LDR R1, SP, CH |
0654 | a(000E0001): FML R0, R0, R1 |
0655 | a(A0E0000C): STR R0, SP, CH |
| ENDb ; |
0656 | b(80E00004): LDR R0, SP, 4H |
0657 | b(40020001): ASR R0, R0, 1H |
0658 | b(A0E00004): STR R0, SP, 4H |
0659 | b(E7FFFFEE): B -18 [0648H] |
| RETURN t |
| ENDc Ten; |
065A | c(80E00008): LDR R0, SP, 8H |
065B | c(8FE00000): LDR LNK, SP, 0H |
065C | c(4EE80010): ADD SP, SP, 10H |
065D | c(C700000F): B LNK |
| |
| PROCEDURE Scan* (VAR S: Scanner); |
| CONST maxExp = 38; maxM = 16777216; (*2^24*) |
| VAR ch, term: CHAR; |
| neg, negE, hex: BOOLEAN; |
| i, j, h, d, e, n, s: INTEGER; |
| k: LONGINT; |
| x: REAL; |
| BEGINd ch := S.nextCh;e i := 0;f |
065E | d .PROC 22 |
065E | d(4EE90038): SUB SP, SP, 38H |
065F | d(AFE00000): STR LNK, SP, 0H |
0660 | d(A0E00004): STR R0, SP, 4H |
0661 | d(A1E00008): STR R1, SP, 8H |
0662 | e(80E00004): LDR R0, SP, 4H |
0663 | e(90000034): LDR R0, R0, 34H |
0664 | e(B0E0000C): STR R0, SP, CH |
0665 | f(40000000): MOV R0, R0, 0H |
0666 | f(A0E00014): STR R0, SP, 14H |
| WHILE ~S.eot &g (hch <= " ")i DOj |
0667 | g(80E00004): LDR R0, SP, 4H |
0668 | g(90000000): LDR R0, R0, 0H |
0669 | h(E9000010): BNE 16 [067AH] |
066A | i(90E0000C): LDR R0, SP, CH |
066B | i(40090020): SUB R0, R0, 20H |
066C | j(EE00000D): BGT 13 [067AH] |
| IF ch = CR THENk INC(S.line) ENDl ; |
066D | k(90E0000C): LDR R0, SP, CH |
066E | k(4009000D): SUB R0, R0, DH |
066F | k(E9000005): BNE 5 [0675H] |
0670 | l(80E00004): LDR R0, SP, 4H |
0671 | l(40080038): ADD R0, R0, 38H |
0672 | l(81000000): LDR R1, R0, 0H |
0673 | l(41180001): ADD R1, R1, 1H |
0674 | l(A1000000): STR R1, R0, 0H |
| Read(S,m ch)n |
0675 | m(80E00004): LDR R0, SP, 4H |
0676 | m(81E00008): LDR R1, SP, 8H |
0677 | n(42E8000C): ADD R2, SP, CH |
| ENDo ; |
0678 | o(F7FFFF4B): BL -181 [05C4H] |
0679 | o(E7FFFFED): B -19 [0667H] |
| IF ("A" <= ch)p & (qch <= "Z")r OR (s"a" <= ch)t & (uch <= "z")v THENw (*name*) |
067A | p(40000041): MOV R0, R0, 41H |
067B | p(91E0000C): LDR R1, SP, CH |
067C | p(00090001): SUB R0, R0, R1 |
067D | q(EE000003): BGT 3 [0681H] |
067E | r(90E0000C): LDR R0, SP, CH |
067F | r(4009005A): SUB R0, R0, 5AH |
0680 | s(E6000007): BLE 7 [0688H] |
0681 | t(40000061): MOV R0, R0, 61H |
0682 | t(91E0000C): LDR R1, SP, CH |
0683 | t(00090001): SUB R0, R0, R1 |
0684 | u(EE00003A): BGT 58 [06BFH] |
0685 | v(90E0000C): LDR R0, SP, CH |
0686 | v(4009007A): SUB R0, R0, 7AH |
0687 | w(EE000037): BGT 55 [06BFH] |
| REPEAT S.s[i]x := ch;y INC(i);z Read(S,a ch)b |
0688 | x(80E00014): LDR R0, SP, 14H |
0689 | x(41090020): SUB R1, R0, 20H |
068A | x(DA2BCE1C): BLCC MT [trap=1, pos=11214] |
068B | x(81E00004): LDR R1, SP, 4H |
068C | x(00180000): ADD R0, R1, R0 |
068D | y(91E0000C): LDR R1, SP, CH |
068E | y(B1000054): STR R1, R0, 54H |
068F | z(80E00014): LDR R0, SP, 14H |
0690 | z(40080001): ADD R0, R0, 1H |
0691 | z(A0E00014): STR R0, SP, 14H |
0692 | a(80E00004): LDR R0, SP, 4H |
0693 | a(81E00008): LDR R1, SP, 8H |
0694 | b(42E8000C): ADD R2, SP, CH |
| UNTILc ((ch < "0")d & (ech # ".")f OR (g"9" < ch)h & (ich < "A")j OR (k"Z" < ch)l & (mch < "a")n OR (o"z" < ch)p) OR (qi = 31)r;s |
0695 | c(F7FFFF2E): BL -210 [05C4H] |
0696 | d(90E0000C): LDR R0, SP, CH |
0697 | d(40090030): SUB R0, R0, 30H |
0698 | e(ED000003): BGE 3 [069CH] |
0699 | f(90E0000C): LDR R0, SP, CH |
069A | f(4009002E): SUB R0, R0, 2EH |
069B | g(E9000015): BNE 21 [06B1H] |
069C | h(40000039): MOV R0, R0, 39H |
069D | h(91E0000C): LDR R1, SP, CH |
069E | h(00090001): SUB R0, R0, R1 |
069F | i(ED000003): BGE 3 [06A3H] |
06A0 | j(90E0000C): LDR R0, SP, CH |
06A1 | j(40090041): SUB R0, R0, 41H |
06A2 | k(E500000E): BLT 14 [06B1H] |
06A3 | l(4000005A): MOV R0, R0, 5AH |
06A4 | l(91E0000C): LDR R1, SP, CH |
06A5 | l(00090001): SUB R0, R0, R1 |
06A6 | m(ED000003): BGE 3 [06AAH] |
06A7 | n(90E0000C): LDR R0, SP, CH |
06A8 | n(40090061): SUB R0, R0, 61H |
06A9 | o(E5000007): BLT 7 [06B1H] |
06AA | p(4000007A): MOV R0, R0, 7AH |
06AB | p(91E0000C): LDR R1, SP, CH |
06AC | p(00090001): SUB R0, R0, R1 |
06AD | q(E5000003): BLT 3 [06B1H] |
06AE | r(80E00014): LDR R0, SP, 14H |
06AF | r(4009001F): SUB R0, R0, 1FH |
06B0 | s(E9FFFFD7): BNE -41 [0688H] |
| S.s[i]t := 0X;u S.len := i;v S.class := Name |
06B1 | t(80E00014): LDR R0, SP, 14H |
06B2 | t(41090020): SUB R1, R0, 20H |
06B3 | t(DA2C6D1C): BLCC MT [trap=1, pos=11373] |
06B4 | t(81E00004): LDR R1, SP, 4H |
06B5 | t(00180000): ADD R0, R1, R0 |
06B6 | u(41000000): MOV R1, R0, 0H |
06B7 | u(B1000054): STR R1, R0, 54H |
06B8 | v(80E00014): LDR R0, SP, 14H |
06B9 | v(81E00004): LDR R1, SP, 4H |
06BA | v(A0100050): STR R0, R1, 50H |
| ELSIFw chx = 22X THENy (*string*) |
06BB | w(40000001): MOV R0, R0, 1H |
06BC | w(81E00004): LDR R1, SP, 4H |
06BD | w(A010003C): STR R0, R1, 3CH |
06BE | x(E7000149): B 329 [0808H] |
06BF | y(90E0000C): LDR R0, SP, CH |
06C0 | y(40090022): SUB R0, R0, 22H |
06C1 | y(E900002F): BNE 47 [06F1H] |
| Read(S,z ch)a;b |
06C2 | z(80E00004): LDR R0, SP, 4H |
06C3 | z(81E00008): LDR R1, SP, 8H |
06C4 | a(42E8000C): ADD R2, SP, CH |
06C5 | b(F7FFFEFE): BL -258 [05C4H] |
| WHILE (ch # 22X)c & (dch >= " ")e & (fi # 31)g DOh S.s[i]i := ch;j INC(i);k Read(S,l ch)m ENDn; |
06C6 | c(90E0000C): LDR R0, SP, CH |
06C7 | c(40090022): SUB R0, R0, 22H |
06C8 | d(E1000015): BEQ 21 [06DEH] |
06C9 | e(90E0000C): LDR R0, SP, CH |
06CA | e(40090020): SUB R0, R0, 20H |
06CB | f(E5000012): BLT 18 [06DEH] |
06CC | g(80E00014): LDR R0, SP, 14H |
06CD | g(4009001F): SUB R0, R0, 1FH |
06CE | h(E100000F): BEQ 15 [06DEH] |
06CF | i(80E00014): LDR R0, SP, 14H |
06D0 | i(41090020): SUB R1, R0, 20H |
06D1 | i(DA2D001C): BLCC MT [trap=1, pos=11520] |
06D2 | i(81E00004): LDR R1, SP, 4H |
06D3 | i(00180000): ADD R0, R1, R0 |
06D4 | j(91E0000C): LDR R1, SP, CH |
06D5 | j(B1000054): STR R1, R0, 54H |
06D6 | k(80E00014): LDR R0, SP, 14H |
06D7 | k(40080001): ADD R0, R0, 1H |
06D8 | k(A0E00014): STR R0, SP, 14H |
06D9 | l(80E00004): LDR R0, SP, 4H |
06DA | l(81E00008): LDR R1, SP, 8H |
06DB | m(42E8000C): ADD R2, SP, CH |
06DC | n(F7FFFEE7): BL -281 [05C4H] |
06DD | n(E7FFFFE8): B -24 [06C6H] |
| S.s[i]o := 0X;p S.len := i+1;q Read(S,r ch)s;t S.class := String |
06DE | o(80E00014): LDR R0, SP, 14H |
06DF | o(41090020): SUB R1, R0, 20H |
06E0 | o(DA2D2D1C): BLCC MT [trap=1, pos=11565] |
06E1 | o(81E00004): LDR R1, SP, 4H |
06E2 | o(00180000): ADD R0, R1, R0 |
06E3 | p(41000000): MOV R1, R0, 0H |
06E4 | p(B1000054): STR R1, R0, 54H |
06E5 | q(80E00014): LDR R0, SP, 14H |
06E6 | q(40080001): ADD R0, R0, 1H |
06E7 | q(81E00004): LDR R1, SP, 4H |
06E8 | q(A0100050): STR R0, R1, 50H |
06E9 | r(80E00004): LDR R0, SP, 4H |
06EA | r(81E00008): LDR R1, SP, 8H |
06EB | s(42E8000C): ADD R2, SP, CH |
06EC | t(F7FFFED7): BL -297 [05C4H] |
| ELSEu hexv := FALSE;w |
06ED | u(40000002): MOV R0, R0, 2H |
06EE | u(81E00004): LDR R1, SP, 4H |
06EF | u(A010003C): STR R0, R1, 3CH |
06F0 | v(E7000117): B 279 [0808H] |
06F1 | w(40000000): MOV R0, R0, 0H |
06F2 | w(B0E00010): STR R0, SP, 10H |
| IF ch = "-" THENx neg := TRUE;y Read(S,z ch)a ELSEb negc := FALSE ENDd ; |
06F3 | x(90E0000C): LDR R0, SP, CH |
06F4 | x(4009002D): SUB R0, R0, 2DH |
06F5 | x(E9000007): BNE 7 [06FDH] |
06F6 | y(40000001): MOV R0, R0, 1H |
06F7 | y(B0E0000E): STR R0, SP, EH |
06F8 | z(80E00004): LDR R0, SP, 4H |
06F9 | z(81E00008): LDR R1, SP, 8H |
06FA | a(42E8000C): ADD R2, SP, CH |
06FB | b(F7FFFEC8): BL -312 [05C4H] |
06FC | c(E7000002): B 2 [06FFH] |
06FD | d(40000000): MOV R0, R0, 0H |
06FE | d(B0E0000E): STR R0, SP, EH |
| IF ("0" <= ch)e & (fch <= "9")g THENh (*number*) |
06FF | e(40000030): MOV R0, R0, 30H |
0700 | e(91E0000C): LDR R1, SP, CH |
0701 | e(00090001): SUB R0, R0, R1 |
0702 | f(EE0000F5): BGT 245 [07F8H] |
0703 | g(90E0000C): LDR R0, SP, CH |
0704 | g(40090039): SUB R0, R0, 39H |
0705 | h(EE0000F2): BGT 242 [07F8H] |
| n := ORD(ch) -i 30H;j h := n;k Read(S,l ch)m;n |
0706 | i(90E0000C): LDR R0, SP, CH |
0707 | j(40090030): SUB R0, R0, 30H |
0708 | j(A0E00028): STR R0, SP, 28H |
0709 | k(80E00028): LDR R0, SP, 28H |
070A | k(A0E0001C): STR R0, SP, 1CH |
070B | l(80E00004): LDR R0, SP, 4H |
070C | l(81E00008): LDR R1, SP, 8H |
070D | m(42E8000C): ADD R2, SP, CH |
070E | n(F7FFFEB5): BL -331 [05C4H] |
| WHILE ("0" <= ch)o & (pch <= "9")q OR (r"A" <= ch)s & (tch <= "F")u DOv |
070F | o(40000030): MOV R0, R0, 30H |
0710 | o(91E0000C): LDR R1, SP, CH |
0711 | o(00090001): SUB R0, R0, R1 |
0712 | p(EE000003): BGT 3 [0716H] |
0713 | q(90E0000C): LDR R0, SP, CH |
0714 | q(40090039): SUB R0, R0, 39H |
0715 | r(E6000007): BLE 7 [071DH] |
0716 | s(40000041): MOV R0, R0, 41H |
0717 | s(91E0000C): LDR R1, SP, CH |
0718 | s(00090001): SUB R0, R0, R1 |
0719 | t(EE00001E): BGT 30 [0738H] |
071A | u(90E0000C): LDR R0, SP, CH |
071B | u(40090046): SUB R0, R0, 46H |
071C | v(EE00001B): BGT 27 [0738H] |
| IF ch <= "9" THENw d := ORD(ch) -x 30H ELSEy dz := ORD(ch) -a 37H;b hex := TRUE ENDc ; |
071D | w(90E0000C): LDR R0, SP, CH |
071E | w(40090039): SUB R0, R0, 39H |
071F | w(EE000004): BGT 4 [0724H] |
0720 | x(90E0000C): LDR R0, SP, CH |
0721 | y(40090030): SUB R0, R0, 30H |
0722 | y(A0E00020): STR R0, SP, 20H |
0723 | z(E7000005): B 5 [0729H] |
0724 | a(90E0000C): LDR R0, SP, CH |
0725 | b(40090037): SUB R0, R0, 37H |
0726 | b(A0E00020): STR R0, SP, 20H |
0727 | c(40000001): MOV R0, R0, 1H |
0728 | c(B0E00010): STR R0, SP, 10H |
| n := 10*n +d d;e h := 10H*h +f d;g Read(S,h ch)i |
0729 | d(80E00028): LDR R0, SP, 28H |
072A | d(400A000A): MUL R0, R0, AH |
072B | e(81E00020): LDR R1, SP, 20H |
072C | e(00080001): ADD R0, R0, R1 |
072D | e(A0E00028): STR R0, SP, 28H |
072E | f(80E0001C): LDR R0, SP, 1CH |
072F | f(40010004): LSL R0, R0, 4H |
0730 | g(81E00020): LDR R1, SP, 20H |
0731 | g(00080001): ADD R0, R0, R1 |
0732 | g(A0E0001C): STR R0, SP, 1CH |
0733 | h(80E00004): LDR R0, SP, 4H |
0734 | h(81E00008): LDR R1, SP, 8H |
0735 | i(42E8000C): ADD R2, SP, CH |
| ENDj ; |
0736 | j(F7FFFE8D): BL -371 [05C4H] |
0737 | j(E7FFFFD7): B -41 [070FH] |
| IF ch = "H" THENk (*hex integer*) Read(S,l ch)m;n S.i := h;o S.class := Int (*neg?*) |
0738 | k(90E0000C): LDR R0, SP, CH |
0739 | k(40090048): SUB R0, R0, 48H |
073A | k(E900000B): BNE 11 [0746H] |
073B | l(80E00004): LDR R0, SP, 4H |
073C | l(81E00008): LDR R1, SP, 8H |
073D | m(42E8000C): ADD R2, SP, CH |
073E | n(F7FFFE85): BL -379 [05C4H] |
073F | o(80E0001C): LDR R0, SP, 1CH |
0740 | o(81E00004): LDR R1, SP, 4H |
0741 | o(A0100040): STR R0, R1, 40H |
| ELSIFp chq = "." THENr (*real number*) |
0742 | p(40000003): MOV R0, R0, 3H |
0743 | p(81E00004): LDR R1, SP, 4H |
0744 | p(A010003C): STR R0, R1, 3CH |
0745 | q(E70000B1): B 177 [07F7H] |
0746 | r(90E0000C): LDR R0, SP, CH |
0747 | r(4009002E): SUB R0, R0, 2EH |
0748 | r(E900009A): BNE 154 [07E3H] |
| Read(S,s ch)t;u x := 0.0;v e := 0;w j := 0;x |
0749 | s(80E00004): LDR R0, SP, 4H |
074A | s(81E00008): LDR R1, SP, 8H |
074B | t(42E8000C): ADD R2, SP, CH |
074C | u(F7FFFE77): BL -393 [05C4H] |
074D | v(40000000): MOV R0, R0, 0H |
074E | v(A0E00034): STR R0, SP, 34H |
074F | w(40000000): MOV R0, R0, 0H |
0750 | w(A0E00024): STR R0, SP, 24H |
0751 | x(40000000): MOV R0, R0, 0H |
0752 | x(A0E00018): STR R0, SP, 18H |
| WHILE ("0" <= ch)y & (zch <= "9")a DOb (*fraction*) |
0753 | y(40000030): MOV R0, R0, 30H |
0754 | y(91E0000C): LDR R1, SP, CH |
0755 | y(00090001): SUB R0, R0, R1 |
0756 | z(EE000017): BGT 23 [076EH] |
0757 | a(90E0000C): LDR R0, SP, CH |
0758 | a(40090039): SUB R0, R0, 39H |
0759 | b(EE000014): BGT 20 [076EH] |
| h := 10*n +c (ORD(ch) -d 30H)e;f |
075A | c(80E00028): LDR R0, SP, 28H |
075B | c(400A000A): MUL R0, R0, AH |
075C | d(91E0000C): LDR R1, SP, CH |
075D | e(41190030): SUB R1, R1, 30H |
075E | f(00080001): ADD R0, R0, R1 |
075F | f(A0E0001C): STR R0, SP, 1CH |
| IF h < maxM THENg n := h;h INC(j) ENDi ; |
0760 | g(80E0001C): LDR R0, SP, 1CH |
0761 | g(61000100): MOV' R1, R0, 100H |
0762 | g(00090001): SUB R0, R0, R1 |
0763 | g(ED000005): BGE 5 [0769H] |
0764 | h(80E0001C): LDR R0, SP, 1CH |
0765 | h(A0E00028): STR R0, SP, 28H |
0766 | i(80E00018): LDR R0, SP, 18H |
0767 | i(40080001): ADD R0, R0, 1H |
0768 | i(A0E00018): STR R0, SP, 18H |
| Read(S,j ch)k |
0769 | j(80E00004): LDR R0, SP, 4H |
076A | j(81E00008): LDR R1, SP, 8H |
076B | k(42E8000C): ADD R2, SP, CH |
| ENDl ; |
076C | l(F7FFFE57): BL -425 [05C4H] |
076D | l(E7FFFFE5): B -27 [0753H] |
| IF ch = "E" THENm (*scale factor*) |
076E | m(90E0000C): LDR R0, SP, CH |
076F | m(40090045): SUB R0, R0, 45H |
0770 | m(E9000036): BNE 54 [07A7H] |
| s := 0;n Read(S,o ch)p;q |
0771 | n(40000000): MOV R0, R0, 0H |
0772 | n(A0E0002C): STR R0, SP, 2CH |
0773 | o(80E00004): LDR R0, SP, 4H |
0774 | o(81E00008): LDR R1, SP, 8H |
0775 | p(42E8000C): ADD R2, SP, CH |
0776 | q(F7FFFE4D): BL -435 [05C4H] |
| IF ch = "-" THENr negE := TRUE;s Read(S,t ch)u |
0777 | r(90E0000C): LDR R0, SP, CH |
0778 | r(4009002D): SUB R0, R0, 2DH |
0779 | r(E9000007): BNE 7 [0781H] |
077A | s(40000001): MOV R0, R0, 1H |
077B | s(B0E0000F): STR R0, SP, FH |
077C | t(80E00004): LDR R0, SP, 4H |
077D | t(81E00008): LDR R1, SP, 8H |
077E | u(42E8000C): ADD R2, SP, CH |
| ELSEv negEw := FALSE;x |
077F | v(F7FFFE44): BL -444 [05C4H] |
0780 | w(E7000009): B 9 [078AH] |
0781 | x(40000000): MOV R0, R0, 0H |
0782 | x(B0E0000F): STR R0, SP, FH |
| IF ch = "+" THENy Read(S,z ch)a ENDb |
0783 | y(90E0000C): LDR R0, SP, CH |
0784 | y(4009002B): SUB R0, R0, 2BH |
0785 | y(E9000004): BNE 4 [078AH] |
0786 | z(80E00004): LDR R0, SP, 4H |
0787 | z(81E00008): LDR R1, SP, 8H |
0788 | a(42E8000C): ADD R2, SP, CH |
0789 | b(F7FFFE3A): BL -454 [05C4H] |
| END ; |
| WHILE ("0" <= ch)c & (dch <= "9")e DOf |
078A | c(40000030): MOV R0, R0, 30H |
078B | c(91E0000C): LDR R1, SP, CH |
078C | c(00090001): SUB R0, R0, R1 |
078D | d(EE00000E): BGT 14 [079CH] |
078E | e(90E0000C): LDR R0, SP, CH |
078F | e(40090039): SUB R0, R0, 39H |
0790 | f(EE00000B): BGT 11 [079CH] |
| s := s*10 +g ORD(ch) -h 30H;i Read(S,j ch)k |
0791 | g(80E0002C): LDR R0, SP, 2CH |
0792 | g(400A000A): MUL R0, R0, AH |
0793 | h(91E0000C): LDR R1, SP, CH |
0794 | h(00080001): ADD R0, R0, R1 |
0795 | i(40090030): SUB R0, R0, 30H |
0796 | i(A0E0002C): STR R0, SP, 2CH |
0797 | j(80E00004): LDR R0, SP, 4H |
0798 | j(81E00008): LDR R1, SP, 8H |
0799 | k(42E8000C): ADD R2, SP, CH |
| ENDl ; |
079A | l(F7FFFE29): BL -471 [05C4H] |
079B | l(E7FFFFEE): B -18 [078AH] |
| IF negE THENm DEC(e, s) ELSEn INCo(e, s) ENDp ; |
079C | m(90E0000F): LDR R0, SP, FH |
079D | m(E1000005): BEQ 5 [07A3H] |
079E | n(80E00024): LDR R0, SP, 24H |
079F | n(81E0002C): LDR R1, SP, 2CH |
07A0 | n(00090001): SUB R0, R0, R1 |
07A1 | n(A0E00024): STR R0, SP, 24H |
07A2 | o(E7000004): B 4 [07A7H] |
07A3 | p(80E00024): LDR R0, SP, 24H |
07A4 | p(81E0002C): LDR R1, SP, 2CH |
07A5 | p(00080001): ADD R0, R0, R1 |
07A6 | p(A0E00024): STR R0, SP, 24H |
| END ; |
| x := FLT(n);q DEC(e, j);r |
07A7 | q(80E00028): LDR R0, SP, 28H |
07A8 | q(61004B00): MOV' R1, R0, 4B00H |
07A9 | q(200C0001): FAD' R0, R0, R1 |
07AA | q(A0E00034): STR R0, SP, 34H |
07AB | r(80E00024): LDR R0, SP, 24H |
07AC | r(81E00018): LDR R1, SP, 18H |
07AD | r(00090001): SUB R0, R0, R1 |
07AE | r(A0E00024): STR R0, SP, 24H |
| IF e < 0 THENs |
07AF | s(80E00024): LDR R0, SP, 24H |
07B0 | s(40090000): SUB R0, R0, 0H |
07B1 | s(ED00000E): BGE 14 [07C0H] |
| IF e >= -maxExp THENt x := x / Ten(-e)u ELSEv xw := 0.0 ENDx |
07B2 | t(80E00024): LDR R0, SP, 24H |
07B3 | t(5009FFDA): SUB R0, R0, FFFFFFDAH |
07B4 | t(E5000008): BLT 8 [07BDH] |
07B5 | u(80E00024): LDR R0, SP, 24H |
07B6 | u(41000000): MOV R1, R0, 0H |
07B7 | u(00190000): SUB R0, R1, R0 |
07B8 | v(F7FFFE88): BL -376 [0641H] |
07B9 | v(81E00034): LDR R1, SP, 34H |
07BA | v(001F0000): FDV R0, R1, R0 |
07BB | v(A0E00034): STR R0, SP, 34H |
07BC | w(E7000002): B 2 [07BFH] |
07BD | x(40000000): MOV R0, R0, 0H |
07BE | x(A0E00034): STR R0, SP, 34H |
| ELSIF ey > 0 THENz |
07BF | y(E700000E): B 14 [07CEH] |
07C0 | z(80E00024): LDR R0, SP, 24H |
07C1 | z(40090000): SUB R0, R0, 0H |
07C2 | z(E600000B): BLE 11 [07CEH] |
| IF e <= maxExp THENa x := Ten(e)b *c x ELSEd xe := 0.0 ENDf |
07C3 | a(80E00024): LDR R0, SP, 24H |
07C4 | a(40090026): SUB R0, R0, 26H |
07C5 | a(EE000006): BGT 6 [07CCH] |
07C6 | b(80E00024): LDR R0, SP, 24H |
07C7 | c(F7FFFE79): BL -391 [0641H] |
07C8 | d(81E00034): LDR R1, SP, 34H |
07C9 | d(000E0001): FML R0, R0, R1 |
07CA | d(A0E00034): STR R0, SP, 34H |
07CB | e(E7000002): B 2 [07CEH] |
07CC | f(40000000): MOV R0, R0, 0H |
07CD | f(A0E00034): STR R0, SP, 34H |
| END ; |
| IF neg THENg S.x := -x ELSEh Si.x := x ENDj ; |
07CE | g(90E0000E): LDR R0, SP, EH |
07CF | g(E1000006): BEQ 6 [07D6H] |
07D0 | h(80E00034): LDR R0, SP, 34H |
07D1 | h(41000000): MOV R1, R0, 0H |
07D2 | h(001D0000): FSB R0, R1, R0 |
07D3 | h(81E00004): LDR R1, SP, 4H |
07D4 | h(A0100044): STR R0, R1, 44H |
07D5 | i(E7000003): B 3 [07D9H] |
07D6 | j(80E00034): LDR R0, SP, 34H |
07D7 | j(81E00004): LDR R1, SP, 4H |
07D8 | j(A0100044): STR R0, R1, 44H |
| IF hex THENk S.class := 0 ELSEl Sm.class := Real ENDn |
07D9 | k(90E00010): LDR R0, SP, 10H |
07DA | k(E1000004): BEQ 4 [07DFH] |
07DB | l(40000000): MOV R0, R0, 0H |
07DC | l(81E00004): LDR R1, SP, 4H |
07DD | l(A010003C): STR R0, R1, 3CH |
07DE | m(E7000003): B 3 [07E2H] |
07DF | n(40000004): MOV R0, R0, 4H |
07E0 | n(81E00004): LDR R1, SP, 4H |
07E1 | n(A010003C): STR R0, R1, 3CH |
| ELSE (*decimal integer*) |
| IFo neg THENp S.i := -n ELSEq Sr.i := n ENDs; |
07E2 | o(E7000014): B 20 [07F7H] |
07E3 | p(90E0000E): LDR R0, SP, EH |
07E4 | p(E1000006): BEQ 6 [07EBH] |
07E5 | q(80E00028): LDR R0, SP, 28H |
07E6 | q(41000000): MOV R1, R0, 0H |
07E7 | q(00190000): SUB R0, R1, R0 |
07E8 | q(81E00004): LDR R1, SP, 4H |
07E9 | q(A0100040): STR R0, R1, 40H |
07EA | r(E7000003): B 3 [07EEH] |
07EB | s(80E00028): LDR R0, SP, 28H |
07EC | s(81E00004): LDR R1, SP, 4H |
07ED | s(A0100040): STR R0, R1, 40H |
| IF hex THENt S.class := Inval ELSEu Sv.class := Int ENDw |
07EE | t(90E00010): LDR R0, SP, 10H |
07EF | t(E1000004): BEQ 4 [07F4H] |
07F0 | u(40000000): MOV R0, R0, 0H |
07F1 | u(81E00004): LDR R1, SP, 4H |
07F2 | u(A010003C): STR R0, R1, 3CH |
07F3 | v(E7000003): B 3 [07F7H] |
07F4 | w(40000003): MOV R0, R0, 3H |
07F5 | w(81E00004): LDR R1, SP, 4H |
07F6 | w(A010003C): STR R0, R1, 3CH |
| END |
| ELSE (*spectal character*) Sx.class := Char;y |
07F7 | x(E7000010): B 16 [0808H] |
07F8 | y(40000006): MOV R0, R0, 6H |
07F9 | y(81E00004): LDR R1, SP, 4H |
07FA | y(A010003C): STR R0, R1, 3CH |
| IF neg THENz S.c := "-" ELSEa Sb.c := ch;c Read(S,d ch)e ENDf |
07FB | z(90E0000E): LDR R0, SP, EH |
07FC | z(E1000004): BEQ 4 [0801H] |
07FD | a(4000002D): MOV R0, R0, 2DH |
07FE | a(81E00004): LDR R1, SP, 4H |
07FF | a(B010004C): STR R0, R1, 4CH |
0800 | b(E7000007): B 7 [0808H] |
0801 | c(90E0000C): LDR R0, SP, CH |
0802 | c(81E00004): LDR R1, SP, 4H |
0803 | c(B010004C): STR R0, R1, 4CH |
0804 | d(80E00004): LDR R0, SP, 4H |
0805 | d(81E00008): LDR R1, SP, 8H |
0806 | e(42E8000C): ADD R2, SP, CH |
0807 | f(F7FFFDBC): BL -580 [05C4H] |
| END |
| END ; |
| S.nextCh := ch |
| ENDg Scan; |
0808 | g(90E0000C): LDR R0, SP, CH |
0809 | g(81E00004): LDR R1, SP, 4H |
080A | g(B0100034): STR R0, R1, 34H |
080B | g(8FE00000): LDR LNK, SP, 0H |
080C | g(4EE80038): ADD SP, SP, 38H |
080D | g(C700000F): B LNK |
| |
| (* --------------- Access: Writers (NW) ------------------ *) |
| |
| PROCEDURE OpenWriter* (VAR W: Writer); |
| BEGINh NEW(W.buf);i |
080E | h .PROC 23 |
080E | h(4EE9000C): SUB SP, SP, CH |
080F | h(AFE00000): STR LNK, SP, 0H |
0810 | h(A0E00004): STR R0, SP, 4H |
0811 | h(A1E00008): STR R1, SP, 8H |
0812 | i(80E00004): LDR R0, SP, 4H |
0813 | i .FIXUP D |
0813 | i(8D000222): LDR SB, MT, MOD0 [Texts] |
0814 | i(41D80088): ADD R1, SB, 88H [data] |
0815 | i(D7353D0C): BL MT [trap=0, pos=13629] |
| OpenBuf(W.buf)j;k W.fnt := Fonts.Default;l W.col := 15;m W.voff := 0;n |
0816 | j(80E00004): LDR R0, SP, 4H |
0817 | j(80000000): LDR R0, R0, 0H |
0818 | k(F7FFFA35): BL -1483 [024EH] |
0819 | l .FIXUP D |
0819 | l(8D200006): LDR SB, MT, MOD2 [Fonts] |
081A | l(80D00002): LDR R0, SB, VAR2 |
081B | l(81E00004): LDR R1, SP, 4H |
081C | l(A0100004): STR R0, R1, 4H |
081D | m(4000000F): MOV R0, R0, FH |
081E | m(81E00004): LDR R1, SP, 4H |
081F | m(A0100008): STR R0, R1, 8H |
0820 | n(40000000): MOV R0, R0, 0H |
0821 | n(81E00004): LDR R1, SP, 4H |
0822 | n(A010000C): STR R0, R1, CH |
| Files.Set(W.rider,o Files.New(""p)q,r 0)s |
0823 | o(80E00004): LDR R0, SP, 4H |
0824 | o(40080010): ADD R0, R0, 10H |
0825 | o(81E00008): LDR R1, SP, 8H |
0826 | p(4EE90008): SUB SP, SP, 8H |
0827 | p(A0E00004): STR R0, SP, 4H |
0828 | p(A1E00000): STR R1, SP, 0H |
0829 | q .FIXUP D |
0829 | q(8D000010): LDR SB, MT, MOD0 [Texts] |
082A | q(40D800CC): ADD R0, SB, CCH [""] |
082B | q(41000001): MOV R1, R0, 1H |
082C | r .FIXUP P |
082C | r(F710320F): BL MOD1 [Files] PROC3 |
082D | r(02000000): MOV R2, R0, R0 |
082E | r(81E00000): LDR R1, SP, 0H |
082F | r(80E00004): LDR R0, SP, 4H |
0830 | r(4EE80008): ADD SP, SP, 8H |
0831 | s(43000000): MOV R3, R0, 0H |
| ENDt OpenWriter; |
0832 | t .FIXUP P |
0832 | t(F710B006): BL MOD1 [Files] PROC11 |
0833 | t(8FE00000): LDR LNK, SP, 0H |
0834 | t(4EE8000C): ADD SP, SP, CH |
0835 | t(C700000F): B LNK |
| |
| PROCEDURE SetFont* (VAR W: Writer; fnt: Fonts.Font); |
| BEGINu W.fnt := fnt |
0836 | u .PROC 24 |
0836 | u(4EE90010): SUB SP, SP, 10H |
0837 | u(AFE00000): STR LNK, SP, 0H |
0838 | u(A0E00004): STR R0, SP, 4H |
0839 | u(A1E00008): STR R1, SP, 8H |
083A | u(A2E0000C): STR R2, SP, CH |
| ENDv SetFont; |
083B | v(80E0000C): LDR R0, SP, CH |
083C | v(81E00004): LDR R1, SP, 4H |
083D | v(A0100004): STR R0, R1, 4H |
083E | v(8FE00000): LDR LNK, SP, 0H |
083F | v(4EE80010): ADD SP, SP, 10H |
0840 | v(C700000F): B LNK |
| |
| PROCEDURE SetColor* (VAR W: Writer; col: INTEGER); |
| BEGINw W.col := col |
0841 | w .PROC 25 |
0841 | w(4EE90010): SUB SP, SP, 10H |
0842 | w(AFE00000): STR LNK, SP, 0H |
0843 | w(A0E00004): STR R0, SP, 4H |
0844 | w(A1E00008): STR R1, SP, 8H |
0845 | w(A2E0000C): STR R2, SP, CH |
| ENDx SetColor; |
0846 | x(80E0000C): LDR R0, SP, CH |
0847 | x(81E00004): LDR R1, SP, 4H |
0848 | x(A0100008): STR R0, R1, 8H |
0849 | x(8FE00000): LDR LNK, SP, 0H |
084A | x(4EE80010): ADD SP, SP, 10H |
084B | x(C700000F): B LNK |
| |
| PROCEDURE SetOffset* (VAR W: Writer; voff: INTEGER); |
| BEGINy W.voff := voff |
084C | y .PROC 26 |
084C | y(4EE90010): SUB SP, SP, 10H |
084D | y(AFE00000): STR LNK, SP, 0H |
084E | y(A0E00004): STR R0, SP, 4H |
084F | y(A1E00008): STR R1, SP, 8H |
0850 | y(A2E0000C): STR R2, SP, CH |
| ENDz SetOffset; |
0851 | z(80E0000C): LDR R0, SP, CH |
0852 | z(81E00004): LDR R1, SP, 4H |
0853 | z(A010000C): STR R0, R1, CH |
0854 | z(8FE00000): LDR LNK, SP, 0H |
0855 | z(4EE80010): ADD SP, SP, 10H |
0856 | z(C700000F): B LNK |
| |
| PROCEDURE Write* (VAR W: Writer; ch: CHAR); |
| VAR p: Piece; |
| BEGINa |
0857 | a .PROC 27 |
0857 | a(4EE90014): SUB SP, SP, 14H |
0858 | a(AFE00000): STR LNK, SP, 0H |
0859 | a(A0E00004): STR R0, SP, 4H |
085A | a(A1E00008): STR R1, SP, 8H |
085B | a(A2E0000C): STR R2, SP, CH |
| IF (W.buf.lastb.fntc # W.fnt)d OR (eW.buf.lastf.colg # W.col)h OR (iW.buf.lastj.voffk # W.voff)l THENm |
085C | b(80E00004): LDR R0, SP, 4H |
085D | b(80000000): LDR R0, R0, 0H |
085E | b(D137314C): BLEQ MT [trap=4, pos=14129] |
085F | c(80000008): LDR R0, R0, 8H |
0860 | c(D137354C): BLEQ MT [trap=4, pos=14133] |
0861 | d(8000000C): LDR R0, R0, CH |
0862 | d(81E00004): LDR R1, SP, 4H |
0863 | d(81100004): LDR R1, R1, 4H |
0864 | d(00090001): SUB R0, R0, R1 |
0865 | e(E9000014): BNE 20 [087AH] |
0866 | f(80E00004): LDR R0, SP, 4H |
0867 | f(80000000): LDR R0, R0, 0H |
0868 | f(D1374D4C): BLEQ MT [trap=4, pos=14157] |
0869 | g(80000008): LDR R0, R0, 8H |
086A | g(D137514C): BLEQ MT [trap=4, pos=14161] |
086B | h(80000010): LDR R0, R0, 10H |
086C | h(81E00004): LDR R1, SP, 4H |
086D | h(81100008): LDR R1, R1, 8H |
086E | h(00090001): SUB R0, R0, R1 |
086F | i(E900000A): BNE 10 [087AH] |
0870 | j(80E00004): LDR R0, SP, 4H |
0871 | j(80000000): LDR R0, R0, 0H |
0872 | j(D137694C): BLEQ MT [trap=4, pos=14185] |
0873 | k(80000008): LDR R0, R0, 8H |
0874 | k(D1376E4C): BLEQ MT [trap=4, pos=14190] |
0875 | l(80000014): LDR R0, R0, 14H |
0876 | l(81E00004): LDR R1, SP, 4H |
0877 | l(8110000C): LDR R1, R1, CH |
0878 | l(00090001): SUB R0, R0, R1 |
0879 | m(E1000046): BEQ 70 [08C0H] |
| NEW(p);n p.fo := Files.Base(Wp.rider)q;r p.offs := Files.Pos(Wt.rider)u;v p.lenw := 0;x |
087A | n(40E80010): ADD R0, SP, 10H |
087B | n .FIXUP D |
087B | n(8D000052): LDR SB, MT, MOD0 [Texts] |
087C | n(41D80000): ADD R1, SB, 0H [data] |
087D | n(D7378B0C): BL MT [trap=0, pos=14219] |
087E | o(80E00010): LDR R0, SP, 10H |
087F | o(D1378F4C): BLEQ MT [trap=4, pos=14223] |
0880 | p(4EE90004): SUB SP, SP, 4H |
0881 | p(A0E00000): STR R0, SP, 0H |
0882 | q(80E00008): LDR R0, SP, 8H |
0883 | q(40080010): ADD R0, R0, 10H |
0884 | q(81E0000C): LDR R1, SP, CH |
0885 | r .FIXUP P |
0885 | r(F710D053): BL MOD1 [Files] PROC13 |
0886 | r(01000000): MOV R1, R0, R0 |
0887 | r(80E00000): LDR R0, SP, 0H |
0888 | r(4EE80004): ADD SP, SP, 4H |
0889 | r(A1000000): STR R1, R0, 0H |
088A | s(80E00010): LDR R0, SP, 10H |
088B | s(D137AD4C): BLEQ MT [trap=4, pos=14253] |
088C | t(4EE90004): SUB SP, SP, 4H |
088D | t(A0E00000): STR R0, SP, 0H |
088E | u(80E00008): LDR R0, SP, 8H |
088F | u(40080010): ADD R0, R0, 10H |
0890 | u(81E0000C): LDR R1, SP, CH |
0891 | v .FIXUP P |
0891 | v(F710C00C): BL MOD1 [Files] PROC12 |
0892 | v(01000000): MOV R1, R0, R0 |
0893 | v(80E00000): LDR R0, SP, 0H |
0894 | v(4EE80004): ADD SP, SP, 4H |
0895 | v(A1000004): STR R1, R0, 4H |
0896 | w(80E00010): LDR R0, SP, 10H |
0897 | w(D137CA4C): BLEQ MT [trap=4, pos=14282] |
0898 | x(41000000): MOV R1, R0, 0H |
0899 | x(A1000008): STR R1, R0, 8H |
| p.fnty := W.fnt;z p.cola := W.col;b p.voffc:= W.voff;d |
089A | y(80E00010): LDR R0, SP, 10H |
089B | y(D137DC4C): BLEQ MT [trap=4, pos=14300] |
089C | z(81E00004): LDR R1, SP, 4H |
089D | z(81100004): LDR R1, R1, 4H |
089E | z(A100000C): STR R1, R0, CH |
089F | a(80E00010): LDR R0, SP, 10H |
08A0 | a(D137EC4C): BLEQ MT [trap=4, pos=14316] |
08A1 | b(81E00004): LDR R1, SP, 4H |
08A2 | b(81100008): LDR R1, R1, 8H |
08A3 | b(A1000010): STR R1, R0, 10H |
08A4 | c(80E00010): LDR R0, SP, 10H |
08A5 | c(D137FD4C): BLEQ MT [trap=4, pos=14333] |
08A6 | d(81E00004): LDR R1, SP, 4H |
08A7 | d(8110000C): LDR R1, R1, CH |
08A8 | d(A1000014): STR R1, R0, 14H |
| p.nexte := NIL;f W.buf.lastg.nexth := p;i |
08A9 | e(80E00010): LDR R0, SP, 10H |
08AA | e(D138144C): BLEQ MT [trap=4, pos=14356] |
08AB | f(41000000): MOV R1, R0, 0H |
08AC | f(A100001C): STR R1, R0, 1CH |
08AD | g(80E00004): LDR R0, SP, 4H |
08AE | g(80000000): LDR R0, R0, 0H |
08AF | g(D138274C): BLEQ MT [trap=4, pos=14375] |
08B0 | h(80000008): LDR R0, R0, 8H |
08B1 | h(D1382C4C): BLEQ MT [trap=4, pos=14380] |
08B2 | i(81E00010): LDR R1, SP, 10H |
08B3 | i(A100001C): STR R1, R0, 1CH |
| p.prevj := W.buf.lastk;l W.buf.lastm := p |
08B4 | j(80E00010): LDR R0, SP, 10H |
08B5 | j(D1383F4C): BLEQ MT [trap=4, pos=14399] |
08B6 | k(81E00004): LDR R1, SP, 4H |
08B7 | k(81100000): LDR R1, R1, 0H |
08B8 | k(D1384D4C): BLEQ MT [trap=4, pos=14413] |
08B9 | l(81100008): LDR R1, R1, 8H |
08BA | l(A1000018): STR R1, R0, 18H |
08BB | m(80E00004): LDR R0, SP, 4H |
08BC | m(80000000): LDR R0, R0, 0H |
08BD | m(D138594C): BLEQ MT [trap=4, pos=14425] |
| ENDn; |
08BE | n(81E00010): LDR R1, SP, 10H |
08BF | n(A1000008): STR R1, R0, 8H |
| Files.Write(W.rider,o ch)p;q |
08C0 | o(80E00004): LDR R0, SP, 4H |
08C1 | o(40080010): ADD R0, R0, 10H |
08C2 | o(81E00008): LDR R1, SP, 8H |
08C3 | p(92E0000C): LDR R2, SP, CH |
08C4 | q .FIXUP P |
08C4 | q(F7118033): BL MOD1 [Files] PROC24 |
| INC(W.buf.lastr.lens);t INC(W.buf.lenu) |
08C5 | r(80E00004): LDR R0, SP, 4H |
08C6 | r(80000000): LDR R0, R0, 0H |
08C7 | r(D138984C): BLEQ MT [trap=4, pos=14488] |
08C8 | s(80000008): LDR R0, R0, 8H |
08C9 | s(D1389C4C): BLEQ MT [trap=4, pos=14492] |
08CA | t(40080008): ADD R0, R0, 8H |
08CB | t(81000000): LDR R1, R0, 0H |
08CC | t(41180001): ADD R1, R1, 1H |
08CD | t(A1000000): STR R1, R0, 0H |
08CE | u(80E00004): LDR R0, SP, 4H |
08CF | u(80000000): LDR R0, R0, 0H |
08D0 | u(D138AC4C): BLEQ MT [trap=4, pos=14508] |
| ENDv Write; |
08D1 | v(81000000): LDR R1, R0, 0H |
08D2 | v(41180001): ADD R1, R1, 1H |
08D3 | v(A1000000): STR R1, R0, 0H |
08D4 | v(8FE00000): LDR LNK, SP, 0H |
08D5 | v(4EE80014): ADD SP, SP, 14H |
08D6 | v(C700000F): B LNK |
| |
| PROCEDURE WriteLn* (VAR W: Writer); |
| BEGINw Write(W,x CR)y |
08D7 | w .PROC 28 |
08D7 | w(4EE9000C): SUB SP, SP, CH |
08D8 | w(AFE00000): STR LNK, SP, 0H |
08D9 | w(A0E00004): STR R0, SP, 4H |
08DA | w(A1E00008): STR R1, SP, 8H |
08DB | x(80E00004): LDR R0, SP, 4H |
08DC | x(81E00008): LDR R1, SP, 8H |
08DD | y(4200000D): MOV R2, R0, DH |
| ENDz WriteLn; |
08DE | z(F7FFFF78): BL -136 [0857H] |
08DF | z(8FE00000): LDR LNK, SP, 0H |
08E0 | z(4EE8000C): ADD SP, SP, CH |
08E1 | z(C700000F): B LNK |
| |
| PROCEDURE WriteString* (VAR W: Writer; s: ARRAY OF CHAR); |
| VAR i: INTEGER; |
| BEGINa i := 0;b |
08E2 | a .PROC 29 |
08E2 | a(4EE90018): SUB SP, SP, 18H |
08E3 | a(AFE00000): STR LNK, SP, 0H |
08E4 | a(A0E00004): STR R0, SP, 4H |
08E5 | a(A1E00008): STR R1, SP, 8H |
08E6 | a(A2E0000C): STR R2, SP, CH |
08E7 | a(A3E00010): STR R3, SP, 10H |
08E8 | b(40000000): MOV R0, R0, 0H |
08E9 | b(A0E00014): STR R0, SP, 14H |
| WHILE s[i]c >= " " DOd Write(W,e s[i]f)g;h INC(i) ENDi |
08EA | c(80E00014): LDR R0, SP, 14H |
08EB | c(81E00010): LDR R1, SP, 10H |
08EC | c(01090001): SUB R1, R0, R1 |
08ED | c(DA39751C): BLCC MT [trap=1, pos=14709] |
08EE | c(81E0000C): LDR R1, SP, CH |
08EF | c(00180000): ADD R0, R1, R0 |
08F0 | d(90000000): LDR R0, R0, 0H |
08F1 | d(40090020): SUB R0, R0, 20H |
08F2 | d(E500000E): BLT 14 [0901H] |
08F3 | e(80E00004): LDR R0, SP, 4H |
08F4 | e(81E00008): LDR R1, SP, 8H |
08F5 | f(82E00014): LDR R2, SP, 14H |
08F6 | f(83E00010): LDR R3, SP, 10H |
08F7 | f(03290003): SUB R3, R2, R3 |
08F8 | f(DA398D1C): BLCC MT [trap=1, pos=14733] |
08F9 | f(83E0000C): LDR R3, SP, CH |
08FA | f(02380002): ADD R2, R3, R2 |
08FB | g(92200000): LDR R2, R2, 0H |
08FC | h(F7FFFF5A): BL -166 [0857H] |
08FD | i(80E00014): LDR R0, SP, 14H |
08FE | i(40080001): ADD R0, R0, 1H |
08FF | i(A0E00014): STR R0, SP, 14H |
0900 | i(E7FFFFE9): B -23 [08EAH] |
| ENDj WriteString; |
0901 | j(8FE00000): LDR LNK, SP, 0H |
0902 | j(4EE80018): ADD SP, SP, 18H |
0903 | j(C700000F): B LNK |
| |
| PROCEDURE WriteInt* (VAR W: Writer; x, n: LONGINT); |
| VAR i: INTEGER; x0: LONGINT; |
| a: ARRAY 10 OF CHAR; |
| BEGINk |
0904 | k .PROC 30 |
0904 | k(4EE90028): SUB SP, SP, 28H |
0905 | k(AFE00000): STR LNK, SP, 0H |
0906 | k(A0E00004): STR R0, SP, 4H |
0907 | k(A1E00008): STR R1, SP, 8H |
0908 | k(A2E0000C): STR R2, SP, CH |
0909 | k(A3E00010): STR R3, SP, 10H |
| IF ROR(x, 31) =l 1 THENm WriteString(W,n " -2147483648")o |
090A | l(80E0000C): LDR R0, SP, CH |
090B | l(4003001F): ROR R0, R0, 1FH |
090C | m(40090001): SUB R0, R0, 1H |
090D | m(E9000007): BNE 7 [0915H] |
090E | n(80E00004): LDR R0, SP, 4H |
090F | n(81E00008): LDR R1, SP, 8H |
0910 | o .FIXUP D |
0910 | o(8D000095): LDR SB, MT, MOD0 [Texts] |
0911 | o(42D800D0): ADD R2, SB, D0H [" -2147483648"] |
0912 | o(4300000D): MOV R3, R0, DH |
| ELSEp iq := 0;r |
0913 | p(F7FFFFCE): BL -50 [08E2H] |
0914 | q(E7000040): B 64 [0955H] |
0915 | r(40000000): MOV R0, R0, 0H |
0916 | r(A0E00014): STR R0, SP, 14H |
| IF x < 0 THENs DEC(n);t x0 := -x ELSEu x0v := x ENDw; |
0917 | s(80E0000C): LDR R0, SP, CH |
0918 | s(40090000): SUB R0, R0, 0H |
0919 | s(ED000008): BGE 8 [0922H] |
091A | t(80E00010): LDR R0, SP, 10H |
091B | t(40090001): SUB R0, R0, 1H |
091C | t(A0E00010): STR R0, SP, 10H |
091D | u(80E0000C): LDR R0, SP, CH |
091E | u(41000000): MOV R1, R0, 0H |
091F | u(00190000): SUB R0, R1, R0 |
0920 | u(A0E00018): STR R0, SP, 18H |
0921 | v(E7000002): B 2 [0924H] |
0922 | w(80E0000C): LDR R0, SP, CH |
0923 | w(A0E00018): STR R0, SP, 18H |
| REPEAT |
| a[i]x := CHR(x0 MOD 10 +y 30H)z;a x0 := x0 DIV 10;b INC(i) |
0924 | x(80E00014): LDR R0, SP, 14H |
0925 | x(4109000A): SUB R1, R0, AH |
0926 | x(DA3AC41C): BLCC MT [trap=1, pos=15044] |
0927 | x(00E80000): ADD R0, SP, R0 |
0928 | y(81E00018): LDR R1, SP, 18H |
0929 | y(411B000A): DIV R1, R1, AH |
092A | y(21000000): MOV' R1, R0, R0 |
092B | z(41180030): ADD R1, R1, 30H |
092C | a(B100001C): STR R1, R0, 1CH |
092D | b(80E00018): LDR R0, SP, 18H |
092E | b(400B000A): DIV R0, R0, AH |
092F | b(A0E00018): STR R0, SP, 18H |
| UNTILc x0 = 0;d |
0930 | c(80E00014): LDR R0, SP, 14H |
0931 | c(40080001): ADD R0, R0, 1H |
0932 | c(A0E00014): STR R0, SP, 14H |
0933 | d(80E00018): LDR R0, SP, 18H |
0934 | d(E9FFFFEF): BNE -17 [0924H] |
| WHILE n > i DOe Write(W,f " ")g;h DEC(n) ENDi; |
0935 | e(80E00010): LDR R0, SP, 10H |
0936 | e(81E00014): LDR R1, SP, 14H |
0937 | e(00090001): SUB R0, R0, R1 |
0938 | e(E6000008): BLE 8 [0941H] |
0939 | f(80E00004): LDR R0, SP, 4H |
093A | f(81E00008): LDR R1, SP, 8H |
093B | g(42000020): MOV R2, R0, 20H |
093C | h(F7FFFF1A): BL -230 [0857H] |
093D | i(80E00010): LDR R0, SP, 10H |
093E | i(40090001): SUB R0, R0, 1H |
093F | i(A0E00010): STR R0, SP, 10H |
0940 | i(E7FFFFF4): B -12 [0935H] |
| IF x < 0 THENj Write(W,k "-")l ENDm; |
0941 | j(80E0000C): LDR R0, SP, CH |
0942 | j(40090000): SUB R0, R0, 0H |
0943 | j(ED000004): BGE 4 [0948H] |
0944 | k(80E00004): LDR R0, SP, 4H |
0945 | k(81E00008): LDR R1, SP, 8H |
0946 | l(4200002D): MOV R2, R0, 2DH |
0947 | m(F7FFFF0F): BL -241 [0857H] |
| REPEAT DEC(i);n Write(W,o a[i]p)q UNTILr i = 0 |
0948 | n(80E00014): LDR R0, SP, 14H |
0949 | n(40090001): SUB R0, R0, 1H |
094A | n(A0E00014): STR R0, SP, 14H |
094B | o(80E00004): LDR R0, SP, 4H |
094C | o(81E00008): LDR R1, SP, 8H |
094D | p(82E00014): LDR R2, SP, 14H |
094E | p(4329000A): SUB R3, R2, AH |
094F | p(DA3B831C): BLCC MT [trap=1, pos=15235] |
0950 | p(02E80002): ADD R2, SP, R2 |
0951 | q(9220001C): LDR R2, R2, 1CH |
0952 | r(F7FFFF04): BL -252 [0857H] |
| ENDs |
0953 | s(80E00014): LDR R0, SP, 14H |
0954 | s(E9FFFFF3): BNE -13 [0948H] |
| ENDt WriteInt; |
0955 | t(8FE00000): LDR LNK, SP, 0H |
0956 | t(4EE80028): ADD SP, SP, 28H |
0957 | t(C700000F): B LNK |
| |
| PROCEDURE WriteHex* (VAR W: Writer; x: LONGINT); |
| VAR i: INTEGER; y: LONGINT; |
| a: ARRAY 10 OF CHAR; |
| BEGINu i := 0;v Write(W,w " ")x;y |
0958 | u .PROC 31 |
0958 | u(4EE90024): SUB SP, SP, 24H |
0959 | u(AFE00000): STR LNK, SP, 0H |
095A | u(A0E00004): STR R0, SP, 4H |
095B | u(A1E00008): STR R1, SP, 8H |
095C | u(A2E0000C): STR R2, SP, CH |
095D | v(40000000): MOV R0, R0, 0H |
095E | v(A0E00010): STR R0, SP, 10H |
095F | w(80E00004): LDR R0, SP, 4H |
0960 | w(81E00008): LDR R1, SP, 8H |
0961 | x(42000020): MOV R2, R0, 20H |
0962 | y(F7FFFEF4): BL -268 [0857H] |
| REPEAT y := x MOD 10H;z |
0963 | z(80E0000C): LDR R0, SP, CH |
0964 | z(4004000F): AND R0, R0, FH |
0965 | z(A0E00014): STR R0, SP, 14H |
| IF y < 10 THENa a[i]b := CHR(y + 30H)c ELSEd ae[i]f := CHR(y + 37H)g ENDh; |
0966 | a(80E00014): LDR R0, SP, 14H |
0967 | a(4009000A): SUB R0, R0, AH |
0968 | a(ED000008): BGE 8 [0971H] |
0969 | b(80E00010): LDR R0, SP, 10H |
096A | b(4109000A): SUB R1, R0, AH |
096B | b(DA3C6B1C): BLCC MT [trap=1, pos=15467] |
096C | b(00E80000): ADD R0, SP, R0 |
096D | c(81E00014): LDR R1, SP, 14H |
096E | c(41180030): ADD R1, R1, 30H |
096F | d(B1000018): STR R1, R0, 18H |
0970 | e(E7000007): B 7 [0978H] |
0971 | f(80E00010): LDR R0, SP, 10H |
0972 | f(4109000A): SUB R1, R0, AH |
0973 | f(DA3C851C): BLCC MT [trap=1, pos=15493] |
0974 | f(00E80000): ADD R0, SP, R0 |
0975 | g(81E00014): LDR R1, SP, 14H |
0976 | g(41180037): ADD R1, R1, 37H |
0977 | h(B1000018): STR R1, R0, 18H |
| x := x DIV 10H;i INC(i) |
0978 | i(80E0000C): LDR R0, SP, CH |
0979 | i(40020004): ASR R0, R0, 4H |
097A | i(A0E0000C): STR R0, SP, CH |
| UNTILj i = 8;k |
097B | j(80E00010): LDR R0, SP, 10H |
097C | j(40080001): ADD R0, R0, 1H |
097D | j(A0E00010): STR R0, SP, 10H |
097E | k(80E00010): LDR R0, SP, 10H |
097F | k(40090008): SUB R0, R0, 8H |
0980 | k(E9FFFFE2): BNE -30 [0963H] |
| REPEAT DEC(i);l Write(W,m a[i]n)o UNTILp i = 0 |
0981 | l(80E00010): LDR R0, SP, 10H |
0982 | l(40090001): SUB R0, R0, 1H |
0983 | l(A0E00010): STR R0, SP, 10H |
0984 | m(80E00004): LDR R0, SP, 4H |
0985 | m(81E00008): LDR R1, SP, 8H |
0986 | n(82E00010): LDR R2, SP, 10H |
0987 | n(4329000A): SUB R3, R2, AH |
0988 | n(DA3CE91C): BLCC MT [trap=1, pos=15593] |
0989 | n(02E80002): ADD R2, SP, R2 |
098A | o(92200018): LDR R2, R2, 18H |
098B | p(F7FFFECB): BL -309 [0857H] |
| ENDq WriteHex; |
098C | q(80E00010): LDR R0, SP, 10H |
098D | q(E9FFFFF3): BNE -13 [0981H] |
098E | q(8FE00000): LDR LNK, SP, 0H |
098F | q(4EE80024): ADD SP, SP, 24H |
0990 | q(C700000F): B LNK |
| |
| PROCEDURE WriteReal* (VAR W: Writer; x: REAL; n: INTEGER); |
| VAR e, i, m: INTEGER; |
| d: ARRAY 16 OF CHAR; |
| BEGINr e := ASR(ORD(x),s 23) MODt 100H;u (*binary exponent*) |
0991 | r .PROC 32 |
0991 | r(4EE90030): SUB SP, SP, 30H |
0992 | r(AFE00000): STR LNK, SP, 0H |
0993 | r(A0E00004): STR R0, SP, 4H |
0994 | r(A1E00008): STR R1, SP, 8H |
0995 | r(A2E0000C): STR R2, SP, CH |
0996 | r(A3E00010): STR R3, SP, 10H |
0997 | s(80E0000C): LDR R0, SP, CH |
0998 | t(40020017): ASR R0, R0, 17H |
0999 | u(400400FF): AND R0, R0, FFH |
099A | u(A0E00014): STR R0, SP, 14H |
| IF e = 0 THENv |
099B | v(80E00014): LDR R0, SP, 14H |
099C | v(E9000012): BNE 18 [09AFH] |
| WriteString(W,w " 0 ")x;y |
099D | w(80E00004): LDR R0, SP, 4H |
099E | w(81E00008): LDR R1, SP, 8H |
099F | x .FIXUP D |
099F | x(8D00008F): LDR SB, MT, MOD0 [Texts] |
09A0 | x(42D800E0): ADD R2, SB, E0H [" 0 "] |
09A1 | x(43000005): MOV R3, R0, 5H |
09A2 | y(F7FFFF3F): BL -193 [08E2H] |
| WHILE n >= 3 DOz Write(W,a " ")b;c DEC(n) ENDd |
09A3 | z(80E00010): LDR R0, SP, 10H |
09A4 | z(40090003): SUB R0, R0, 3H |
09A5 | z(E5000008): BLT 8 [09AEH] |
09A6 | a(80E00004): LDR R0, SP, 4H |
09A7 | a(81E00008): LDR R1, SP, 8H |
09A8 | b(42000020): MOV R2, R0, 20H |
09A9 | c(F7FFFEAD): BL -339 [0857H] |
09AA | d(80E00010): LDR R0, SP, 10H |
09AB | d(40090001): SUB R0, R0, 1H |
09AC | d(A0E00010): STR R0, SP, 10H |
09AD | d(E7FFFFF5): B -11 [09A3H] |
| ELSIF ee = 255 THENf WriteString(W,g " NaN ")h |
09AE | e(E70000B1): B 177 [0A60H] |
09AF | f(80E00014): LDR R0, SP, 14H |
09B0 | f(400900FF): SUB R0, R0, FFH |
09B1 | f(E9000007): BNE 7 [09B9H] |
09B2 | g(80E00004): LDR R0, SP, 4H |
09B3 | g(81E00008): LDR R1, SP, 8H |
09B4 | h .FIXUP D |
09B4 | h(8D000015): LDR SB, MT, MOD0 [Texts] |
09B5 | h(42D800E8): ADD R2, SB, E8H [" NaN "] |
09B6 | h(43000006): MOV R3, R0, 6H |
| ELSEi Writej(W,k " ")l;m |
09B7 | i(F7FFFF2A): BL -214 [08E2H] |
09B8 | j(E70000A7): B 167 [0A60H] |
09B9 | k(80E00004): LDR R0, SP, 4H |
09BA | k(81E00008): LDR R1, SP, 8H |
09BB | l(42000020): MOV R2, R0, 20H |
09BC | m(F7FFFE9A): BL -358 [0857H] |
| WHILE n >= 15 DOn DEC(n);o Write(W,p " ")q ENDr ; |
09BD | n(80E00010): LDR R0, SP, 10H |
09BE | n(4009000F): SUB R0, R0, FH |
09BF | n(E5000008): BLT 8 [09C8H] |
09C0 | o(80E00010): LDR R0, SP, 10H |
09C1 | o(40090001): SUB R0, R0, 1H |
09C2 | o(A0E00010): STR R0, SP, 10H |
09C3 | p(80E00004): LDR R0, SP, 4H |
09C4 | p(81E00008): LDR R1, SP, 8H |
09C5 | q(42000020): MOV R2, R0, 20H |
09C6 | r(F7FFFE90): BL -368 [0857H] |
09C7 | r(E7FFFFF5): B -11 [09BDH] |
| (* 2 < n < 9 digits to be written*) |
| IF x < 0.0 THENs Write(W,t "-")u;v x := -x ELSEw Writex(W,y " ")z ENDa ; |
09C8 | s(80E0000C): LDR R0, SP, CH |
09C9 | s(ED000009): BGE 9 [09D3H] |
09CA | t(80E00004): LDR R0, SP, 4H |
09CB | t(81E00008): LDR R1, SP, 8H |
09CC | u(4200002D): MOV R2, R0, 2DH |
09CD | v(F7FFFE89): BL -375 [0857H] |
09CE | w(80E0000C): LDR R0, SP, CH |
09CF | w(41000000): MOV R1, R0, 0H |
09D0 | w(001D0000): FSB R0, R1, R0 |
09D1 | w(A0E0000C): STR R0, SP, CH |
09D2 | x(E7000004): B 4 [09D7H] |
09D3 | y(80E00004): LDR R0, SP, 4H |
09D4 | y(81E00008): LDR R1, SP, 8H |
09D5 | z(42000020): MOV R2, R0, 20H |
09D6 | a(F7FFFE80): BL -384 [0857H] |
| e := (e - 127)b * 77 DIVc 256 -d 6;e (*decimal exponent*) |
09D7 | b(80E00014): LDR R0, SP, 14H |
09D8 | b(4009007F): SUB R0, R0, 7FH |
09D9 | c(400A004D): MUL R0, R0, 4DH |
09DA | d(40020008): ASR R0, R0, 8H |
09DB | e(40090006): SUB R0, R0, 6H |
09DC | e(A0E00014): STR R0, SP, 14H |
| IF e >= 0 THENf x := x / Ten(e)g ELSEh xi := Ten(-e)j *k x ENDl ; |
09DD | f(80E00014): LDR R0, SP, 14H |
09DE | f(40090000): SUB R0, R0, 0H |
09DF | f(E5000006): BLT 6 [09E6H] |
09E0 | g(80E00014): LDR R0, SP, 14H |
09E1 | h(F7FFFC5F): BL -929 [0641H] |
09E2 | h(81E0000C): LDR R1, SP, CH |
09E3 | h(001F0000): FDV R0, R1, R0 |
09E4 | h(A0E0000C): STR R0, SP, CH |
09E5 | i(E7000007): B 7 [09EDH] |
09E6 | j(80E00014): LDR R0, SP, 14H |
09E7 | j(41000000): MOV R1, R0, 0H |
09E8 | j(00190000): SUB R0, R1, R0 |
09E9 | k(F7FFFC57): BL -937 [0641H] |
09EA | l(81E0000C): LDR R1, SP, CH |
09EB | l(000E0001): FML R0, R0, R1 |
09EC | l(A0E0000C): STR R0, SP, CH |
| m := FLOOR(x + 0.5)m;n i := 0;o |
09ED | m(80E0000C): LDR R0, SP, CH |
09EE | m(61003F00): MOV' R1, R0, 3F00H |
09EF | m(000C0001): FAD R0, R0, R1 |
09F0 | n(61004B00): MOV' R1, R0, 4B00H |
09F1 | n(100C0001): FAD R0, R0, R1 |
09F2 | n(A0E0001C): STR R0, SP, 1CH |
09F3 | o(40000000): MOV R0, R0, 0H |
09F4 | o(A0E00018): STR R0, SP, 18H |
| IF m >= 10000000 THENp INC(e);q m := m DIV 10 ENDr ; |
09F5 | p(80E0001C): LDR R0, SP, 1CH |
09F6 | p(61000098): MOV' R1, R0, 98H |
09F7 | p(41169680): IOR R1, R1, FFFF9680H |
09F8 | p(00090001): SUB R0, R0, R1 |
09F9 | p(E5000006): BLT 6 [0A00H] |
09FA | q(80E00014): LDR R0, SP, 14H |
09FB | q(40080001): ADD R0, R0, 1H |
09FC | q(A0E00014): STR R0, SP, 14H |
09FD | r(80E0001C): LDR R0, SP, 1CH |
09FE | r(400B000A): DIV R0, R0, AH |
09FF | r(A0E0001C): STR R0, SP, 1CH |
| REPEAT d[i]s := CHR(m MOD 10 +t 30H)u;v m := m DIV 10;w INC(i) UNTILx m = 0;y |
0A00 | s(80E00018): LDR R0, SP, 18H |
0A01 | s(41090010): SUB R1, R0, 10H |
0A02 | s(DA3FE91C): BLCC MT [trap=1, pos=16361] |
0A03 | s(00E80000): ADD R0, SP, R0 |
0A04 | t(81E0001C): LDR R1, SP, 1CH |
0A05 | t(411B000A): DIV R1, R1, AH |
0A06 | t(21000000): MOV' R1, R0, R0 |
0A07 | u(41180030): ADD R1, R1, 30H |
0A08 | v(B1000020): STR R1, R0, 20H |
0A09 | w(80E0001C): LDR R0, SP, 1CH |
0A0A | w(400B000A): DIV R0, R0, AH |
0A0B | w(A0E0001C): STR R0, SP, 1CH |
0A0C | x(80E00018): LDR R0, SP, 18H |
0A0D | x(40080001): ADD R0, R0, 1H |
0A0E | x(A0E00018): STR R0, SP, 18H |
0A0F | y(80E0001C): LDR R0, SP, 1CH |
0A10 | y(E9FFFFEF): BNE -17 [0A00H] |
| DEC(i);z Write(W,a d[i]b)c;d Write(W,e ".")f;g |
0A11 | z(80E00018): LDR R0, SP, 18H |
0A12 | z(40090001): SUB R0, R0, 1H |
0A13 | z(A0E00018): STR R0, SP, 18H |
0A14 | a(80E00004): LDR R0, SP, 4H |
0A15 | a(81E00008): LDR R1, SP, 8H |
0A16 | b(82E00018): LDR R2, SP, 18H |
0A17 | b(43290010): SUB R3, R2, 10H |
0A18 | b(DA40401C): BLCC MT [trap=1, pos=16448] |
0A19 | b(02E80002): ADD R2, SP, R2 |
0A1A | c(92200020): LDR R2, R2, 20H |
0A1B | d(F7FFFE3B): BL -453 [0857H] |
0A1C | e(80E00004): LDR R0, SP, 4H |
0A1D | e(81E00008): LDR R1, SP, 8H |
0A1E | f(4200002E): MOV R2, R0, 2EH |
0A1F | g(F7FFFE37): BL -457 [0857H] |
| IF i < n-7 THENh n := 0 ELSEi nj := 14 - n ENDk ; |
0A20 | h(80E00010): LDR R0, SP, 10H |
0A21 | h(40090007): SUB R0, R0, 7H |
0A22 | h(81E00018): LDR R1, SP, 18H |
0A23 | h(01190000): SUB R1, R1, R0 |
0A24 | h(ED000003): BGE 3 [0A28H] |
0A25 | i(40000000): MOV R0, R0, 0H |
0A26 | i(A0E00010): STR R0, SP, 10H |
0A27 | j(E7000004): B 4 [0A2CH] |
0A28 | k(4000000E): MOV R0, R0, EH |
0A29 | k(81E00010): LDR R1, SP, 10H |
0A2A | k(00090001): SUB R0, R0, R1 |
0A2B | k(A0E00010): STR R0, SP, 10H |
| WHILE i > n DOl DEC(i);m Write(W,n d[i]o)p ENDq ; |
0A2C | l(80E00018): LDR R0, SP, 18H |
0A2D | l(81E00010): LDR R1, SP, 10H |
0A2E | l(00090001): SUB R0, R0, R1 |
0A2F | l(E600000C): BLE 12 [0A3CH] |
0A30 | m(80E00018): LDR R0, SP, 18H |
0A31 | m(40090001): SUB R0, R0, 1H |
0A32 | m(A0E00018): STR R0, SP, 18H |
0A33 | n(80E00004): LDR R0, SP, 4H |
0A34 | n(81E00008): LDR R1, SP, 8H |
0A35 | o(82E00018): LDR R2, SP, 18H |
0A36 | o(43290010): SUB R3, R2, 10H |
0A37 | o(DA40B01C): BLCC MT [trap=1, pos=16560] |
0A38 | o(02E80002): ADD R2, SP, R2 |
0A39 | p(92200020): LDR R2, R2, 20H |
0A3A | q(F7FFFE1C): BL -484 [0857H] |
0A3B | q(E7FFFFF0): B -16 [0A2CH] |
| Write(W,r "E")s;t INC(e, 6);u |
0A3C | r(80E00004): LDR R0, SP, 4H |
0A3D | r(81E00008): LDR R1, SP, 8H |
0A3E | s(42000045): MOV R2, R0, 45H |
0A3F | t(F7FFFE17): BL -489 [0857H] |
0A40 | u(80E00014): LDR R0, SP, 14H |
0A41 | u(40080006): ADD R0, R0, 6H |
0A42 | u(A0E00014): STR R0, SP, 14H |
| IF e < 0 THENv Write(W,w "-")x;y e := -e ELSEz Writea(W,b "+")c ENDd ; |
0A43 | v(80E00014): LDR R0, SP, 14H |
0A44 | v(40090000): SUB R0, R0, 0H |
0A45 | v(ED000009): BGE 9 [0A4FH] |
0A46 | w(80E00004): LDR R0, SP, 4H |
0A47 | w(81E00008): LDR R1, SP, 8H |
0A48 | x(4200002D): MOV R2, R0, 2DH |
0A49 | y(F7FFFE0D): BL -499 [0857H] |
0A4A | z(80E00014): LDR R0, SP, 14H |
0A4B | z(41000000): MOV R1, R0, 0H |
0A4C | z(00190000): SUB R0, R1, R0 |
0A4D | z(A0E00014): STR R0, SP, 14H |
0A4E | a(E7000004): B 4 [0A53H] |
0A4F | b(80E00004): LDR R0, SP, 4H |
0A50 | b(81E00008): LDR R1, SP, 8H |
0A51 | c(4200002B): MOV R2, R0, 2BH |
0A52 | d(F7FFFE04): BL -508 [0857H] |
| Write(W,e CHR(e DIV 10 +f 30H)g);h Write(W,i CHR(e MOD 10 +j 30H)k) |
0A53 | e(80E00004): LDR R0, SP, 4H |
0A54 | e(81E00008): LDR R1, SP, 8H |
0A55 | f(82E00014): LDR R2, SP, 14H |
0A56 | f(422B000A): DIV R2, R2, AH |
0A57 | g(42280030): ADD R2, R2, 30H |
0A58 | h(F7FFFDFE): BL -514 [0857H] |
0A59 | i(80E00004): LDR R0, SP, 4H |
0A5A | i(81E00008): LDR R1, SP, 8H |
0A5B | j(82E00014): LDR R2, SP, 14H |
0A5C | j(422B000A): DIV R2, R2, AH |
0A5D | j(22000000): MOV' R2, R0, R0 |
0A5E | k(42280030): ADD R2, R2, 30H |
| ENDl |
0A5F | l(F7FFFDF7): BL -521 [0857H] |
| ENDm WriteReal; |
0A60 | m(8FE00000): LDR LNK, SP, 0H |
0A61 | m(4EE80030): ADD SP, SP, 30H |
0A62 | m(C700000F): B LNK |
| |
| PROCEDURE WriteRealFix* (VAR W: Writer; x: REAL; n, k: INTEGER); |
| VAR i, m: INTEGER; neg: BOOLEAN; |
| d: ARRAY 12 OF CHAR; |
| BEGINn |
0A63 | n .PROC 33 |
0A63 | n(4EE90030): SUB SP, SP, 30H |
0A64 | n(AFE00000): STR LNK, SP, 0H |
0A65 | n(A0E00004): STR R0, SP, 4H |
0A66 | n(A1E00008): STR R1, SP, 8H |
0A67 | n(A2E0000C): STR R2, SP, CH |
0A68 | n(A3E00010): STR R3, SP, 10H |
0A69 | n(A4E00014): STR R4, SP, 14H |
| IF x = 0.0 THENo WriteString(W,p " 0")q |
0A6A | o(80E0000C): LDR R0, SP, CH |
0A6B | o(E9000007): BNE 7 [0A73H] |
0A6C | p(80E00004): LDR R0, SP, 4H |
0A6D | p(81E00008): LDR R1, SP, 8H |
0A6E | q .FIXUP D |
0A6E | q(8D0000BA): LDR SB, MT, MOD0 [Texts] |
0A6F | q(42D800F0): ADD R2, SB, F0H [" 0"] |
0A70 | q(43000004): MOV R3, R0, 4H |
| ELSEr |
0A71 | r(F7FFFE70): BL -400 [08E2H] |
| IFs x < 0.0 THENt x := -x;u neg := TRUE ELSEv negw := FALSE ENDx ; |
0A72 | s(E700007C): B 124 [0AEFH] |
0A73 | t(80E0000C): LDR R0, SP, CH |
0A74 | t(ED000007): BGE 7 [0A7CH] |
0A75 | u(80E0000C): LDR R0, SP, CH |
0A76 | u(41000000): MOV R1, R0, 0H |
0A77 | u(001D0000): FSB R0, R1, R0 |
0A78 | u(A0E0000C): STR R0, SP, CH |
0A79 | v(40000001): MOV R0, R0, 1H |
0A7A | v(B0E00020): STR R0, SP, 20H |
0A7B | w(E7000002): B 2 [0A7EH] |
0A7C | x(40000000): MOV R0, R0, 0H |
0A7D | x(B0E00020): STR R0, SP, 20H |
| IF k > 7 THENy k := 7 ENDz ; |
0A7E | y(80E00014): LDR R0, SP, 14H |
0A7F | y(40090007): SUB R0, R0, 7H |
0A80 | y(E6000002): BLE 2 [0A83H] |
0A81 | z(40000007): MOV R0, R0, 7H |
0A82 | z(A0E00014): STR R0, SP, 14H |
| x := Ten(k)a *b x;c m := FLOOR(x + 0.5)d;e |
0A83 | a(80E00014): LDR R0, SP, 14H |
0A84 | b(F7FFFBBC): BL -1092 [0641H] |
0A85 | c(81E0000C): LDR R1, SP, CH |
0A86 | c(000E0001): FML R0, R0, R1 |
0A87 | c(A0E0000C): STR R0, SP, CH |
0A88 | d(80E0000C): LDR R0, SP, CH |
0A89 | d(61003F00): MOV' R1, R0, 3F00H |
0A8A | d(000C0001): FAD R0, R0, R1 |
0A8B | e(61004B00): MOV' R1, R0, 4B00H |
0A8C | e(100C0001): FAD R0, R0, R1 |
0A8D | e(A0E0001C): STR R0, SP, 1CH |
| i := 0;f |
0A8E | f(40000000): MOV R0, R0, 0H |
0A8F | f(A0E00018): STR R0, SP, 18H |
| REPEAT d[i]g := CHR(m MOD 10 +h 30H)i;j m := m DIV 10;k INC(i) UNTILl m = 0;m |
0A90 | g(80E00018): LDR R0, SP, 18H |
0A91 | g(4109000C): SUB R1, R0, CH |
0A92 | g(DA42E71C): BLCC MT [trap=1, pos=17127] |
0A93 | g(00E80000): ADD R0, SP, R0 |
0A94 | h(81E0001C): LDR R1, SP, 1CH |
0A95 | h(411B000A): DIV R1, R1, AH |
0A96 | h(21000000): MOV' R1, R0, R0 |
0A97 | i(41180030): ADD R1, R1, 30H |
0A98 | j(B1000024): STR R1, R0, 24H |
0A99 | k(80E0001C): LDR R0, SP, 1CH |
0A9A | k(400B000A): DIV R0, R0, AH |
0A9B | k(A0E0001C): STR R0, SP, 1CH |
0A9C | l(80E00018): LDR R0, SP, 18H |
0A9D | l(40080001): ADD R0, R0, 1H |
0A9E | l(A0E00018): STR R0, SP, 18H |
0A9F | m(80E0001C): LDR R0, SP, 1CH |
0AA0 | m(E9FFFFEF): BNE -17 [0A90H] |
| Write(W,n " ")o;p |
0AA1 | n(80E00004): LDR R0, SP, 4H |
0AA2 | n(81E00008): LDR R1, SP, 8H |
0AA3 | o(42000020): MOV R2, R0, 20H |
0AA4 | p(F7FFFDB2): BL -590 [0857H] |
| WHILE n > i+3 DOq Write(W,r " ")s;t DEC(n) ENDu ; |
0AA5 | q(80E00018): LDR R0, SP, 18H |
0AA6 | q(40080003): ADD R0, R0, 3H |
0AA7 | q(81E00010): LDR R1, SP, 10H |
0AA8 | q(01190000): SUB R1, R1, R0 |
0AA9 | q(E6000008): BLE 8 [0AB2H] |
0AAA | r(80E00004): LDR R0, SP, 4H |
0AAB | r(81E00008): LDR R1, SP, 8H |
0AAC | s(42000020): MOV R2, R0, 20H |
0AAD | t(F7FFFDA9): BL -599 [0857H] |
0AAE | u(80E00010): LDR R0, SP, 10H |
0AAF | u(40090001): SUB R0, R0, 1H |
0AB0 | u(A0E00010): STR R0, SP, 10H |
0AB1 | u(E7FFFFF3): B -13 [0AA5H] |
| IF neg THENv Write(W,w "-")x;y DEC(n) ELSEz Writea(W,b " ")c ENDd ; |
0AB2 | v(90E00020): LDR R0, SP, 20H |
0AB3 | v(E1000008): BEQ 8 [0ABCH] |
0AB4 | w(80E00004): LDR R0, SP, 4H |
0AB5 | w(81E00008): LDR R1, SP, 8H |
0AB6 | x(4200002D): MOV R2, R0, 2DH |
0AB7 | y(F7FFFD9F): BL -609 [0857H] |
0AB8 | z(80E00010): LDR R0, SP, 10H |
0AB9 | z(40090001): SUB R0, R0, 1H |
0ABA | z(A0E00010): STR R0, SP, 10H |
0ABB | a(E7000004): B 4 [0AC0H] |
0ABC | b(80E00004): LDR R0, SP, 4H |
0ABD | b(81E00008): LDR R1, SP, 8H |
0ABE | c(42000020): MOV R2, R0, 20H |
0ABF | d(F7FFFD97): BL -617 [0857H] |
| WHILE i > k DOe DEC(i);f Write(W,g d[i]h)i ENDj ; |
0AC0 | e(80E00018): LDR R0, SP, 18H |
0AC1 | e(81E00014): LDR R1, SP, 14H |
0AC2 | e(00090001): SUB R0, R0, R1 |
0AC3 | e(E600000C): BLE 12 [0AD0H] |
0AC4 | f(80E00018): LDR R0, SP, 18H |
0AC5 | f(40090001): SUB R0, R0, 1H |
0AC6 | f(A0E00018): STR R0, SP, 18H |
0AC7 | g(80E00004): LDR R0, SP, 4H |
0AC8 | g(81E00008): LDR R1, SP, 8H |
0AC9 | h(82E00018): LDR R2, SP, 18H |
0ACA | h(4329000C): SUB R3, R2, CH |
0ACB | h(DA43D71C): BLCC MT [trap=1, pos=17367] |
0ACC | h(02E80002): ADD R2, SP, R2 |
0ACD | i(92200024): LDR R2, R2, 24H |
0ACE | j(F7FFFD88): BL -632 [0857H] |
0ACF | j(E7FFFFF0): B -16 [0AC0H] |
| Write(W,k ".")l;m |
0AD0 | k(80E00004): LDR R0, SP, 4H |
0AD1 | k(81E00008): LDR R1, SP, 8H |
0AD2 | l(4200002E): MOV R2, R0, 2EH |
0AD3 | m(F7FFFD83): BL -637 [0857H] |
| WHILE k > i DOn DEC(k);o Write(W,p "0")q ENDr ; |
0AD4 | n(80E00014): LDR R0, SP, 14H |
0AD5 | n(81E00018): LDR R1, SP, 18H |
0AD6 | n(00090001): SUB R0, R0, R1 |
0AD7 | n(E6000008): BLE 8 [0AE0H] |
0AD8 | o(80E00014): LDR R0, SP, 14H |
0AD9 | o(40090001): SUB R0, R0, 1H |
0ADA | o(A0E00014): STR R0, SP, 14H |
0ADB | p(80E00004): LDR R0, SP, 4H |
0ADC | p(81E00008): LDR R1, SP, 8H |
0ADD | q(42000030): MOV R2, R0, 30H |
0ADE | r(F7FFFD78): BL -648 [0857H] |
0ADF | r(E7FFFFF4): B -12 [0AD4H] |
| WHILE i > 0 DOs DEC(i);t Write(W,u d[i]v)w ENDx |
0AE0 | s(80E00018): LDR R0, SP, 18H |
0AE1 | s(40090000): SUB R0, R0, 0H |
0AE2 | s(E600000C): BLE 12 [0AEFH] |
0AE3 | t(80E00018): LDR R0, SP, 18H |
0AE4 | t(40090001): SUB R0, R0, 1H |
0AE5 | t(A0E00018): STR R0, SP, 18H |
0AE6 | u(80E00004): LDR R0, SP, 4H |
0AE7 | u(81E00008): LDR R1, SP, 8H |
0AE8 | v(82E00018): LDR R2, SP, 18H |
0AE9 | v(4329000C): SUB R3, R2, CH |
0AEA | v(DA444F1C): BLCC MT [trap=1, pos=17487] |
0AEB | v(02E80002): ADD R2, SP, R2 |
0AEC | w(92200024): LDR R2, R2, 24H |
0AED | x(F7FFFD69): BL -663 [0857H] |
0AEE | x(E7FFFFF1): B -15 [0AE0H] |
| END |
| ENDy WriteRealFix; |
0AEF | y(8FE00000): LDR LNK, SP, 0H |
0AF0 | y(4EE80030): ADD SP, SP, 30H |
0AF1 | y(C700000F): B LNK |
| |
| PROCEDURE WritePair(VAR W: Writer; ch: CHAR; x: LONGINT); |
| BEGINz Write(W,a ch)b;c |
0AF2 | z(4EE90014): SUB SP, SP, 14H |
0AF3 | z(AFE00000): STR LNK, SP, 0H |
0AF4 | z(A0E00004): STR R0, SP, 4H |
0AF5 | z(A1E00008): STR R1, SP, 8H |
0AF6 | z(A2E0000C): STR R2, SP, CH |
0AF7 | z(A3E00010): STR R3, SP, 10H |
0AF8 | a(80E00004): LDR R0, SP, 4H |
0AF9 | a(81E00008): LDR R1, SP, 8H |
0AFA | b(92E0000C): LDR R2, SP, CH |
0AFB | c(F7FFFD5B): BL -677 [0857H] |
| Write(W,d CHR(x DIV 10 +e 30H)f);g Write(W,h CHR(x MOD 10 +i 30H)j) |
0AFC | d(80E00004): LDR R0, SP, 4H |
0AFD | d(81E00008): LDR R1, SP, 8H |
0AFE | e(82E00010): LDR R2, SP, 10H |
0AFF | e(422B000A): DIV R2, R2, AH |
0B00 | f(42280030): ADD R2, R2, 30H |
0B01 | g(F7FFFD55): BL -683 [0857H] |
0B02 | h(80E00004): LDR R0, SP, 4H |
0B03 | h(81E00008): LDR R1, SP, 8H |
0B04 | i(82E00010): LDR R2, SP, 10H |
0B05 | i(422B000A): DIV R2, R2, AH |
0B06 | i(22000000): MOV' R2, R0, R0 |
0B07 | j(42280030): ADD R2, R2, 30H |
| ENDk WritePair; |
0B08 | k(F7FFFD4E): BL -690 [0857H] |
0B09 | k(8FE00000): LDR LNK, SP, 0H |
0B0A | k(4EE80014): ADD SP, SP, 14H |
0B0B | k(C700000F): B LNK |
| |
| PROCEDURE WriteClock* (VAR W: Writer; d: LONGINT); |
| BEGINl |
0B0C | l .PROC 34 |
0B0C | l(4EE90010): SUB SP, SP, 10H |
0B0D | l(AFE00000): STR LNK, SP, 0H |
0B0E | l(A0E00004): STR R0, SP, 4H |
0B0F | l(A1E00008): STR R1, SP, 8H |
0B10 | l(A2E0000C): STR R2, SP, CH |
| WritePair(W,m " ",n d DIV 20000H MODo 20H)p;q (*day*) |
0B11 | m(80E00004): LDR R0, SP, 4H |
0B12 | m(81E00008): LDR R1, SP, 8H |
0B13 | n(42000020): MOV R2, R0, 20H |
0B14 | o(83E0000C): LDR R3, SP, CH |
0B15 | o(43320011): ASR R3, R3, 11H |
0B16 | p(4334001F): AND R3, R3, 1FH |
0B17 | q(F7FFFFDA): BL -38 [0AF2H] |
| WritePair(W,r ".",s d DIV 400000H MODt 10H)u;v (*month*) |
0B18 | r(80E00004): LDR R0, SP, 4H |
0B19 | r(81E00008): LDR R1, SP, 8H |
0B1A | s(4200002E): MOV R2, R0, 2EH |
0B1B | t(83E0000C): LDR R3, SP, CH |
0B1C | t(43320016): ASR R3, R3, 16H |
0B1D | u(4334000F): AND R3, R3, FH |
0B1E | v(F7FFFFD3): BL -45 [0AF2H] |
| WritePair(W,w ".",x d DIV 4000000H MODy 40H)z;a (*year*) |
0B1F | w(80E00004): LDR R0, SP, 4H |
0B20 | w(81E00008): LDR R1, SP, 8H |
0B21 | x(4200002E): MOV R2, R0, 2EH |
0B22 | y(83E0000C): LDR R3, SP, CH |
0B23 | y(4332001A): ASR R3, R3, 1AH |
0B24 | z(4334003F): AND R3, R3, 3FH |
0B25 | a(F7FFFFCC): BL -52 [0AF2H] |
| WritePair(W,b " ",c d DIV 1000H MODd 20H)e;f (*hour*) |
0B26 | b(80E00004): LDR R0, SP, 4H |
0B27 | b(81E00008): LDR R1, SP, 8H |
0B28 | c(42000020): MOV R2, R0, 20H |
0B29 | d(83E0000C): LDR R3, SP, CH |
0B2A | d(4332000C): ASR R3, R3, CH |
0B2B | e(4334001F): AND R3, R3, 1FH |
0B2C | f(F7FFFFC5): BL -59 [0AF2H] |
| WritePair(W,g ":",h d DIV 40H MODi 40H)j;k (*min*) |
0B2D | g(80E00004): LDR R0, SP, 4H |
0B2E | g(81E00008): LDR R1, SP, 8H |
0B2F | h(4200003A): MOV R2, R0, 3AH |
0B30 | i(83E0000C): LDR R3, SP, CH |
0B31 | i(43320006): ASR R3, R3, 6H |
0B32 | j(4334003F): AND R3, R3, 3FH |
0B33 | k(F7FFFFBE): BL -66 [0AF2H] |
| WritePair(W,l ":",m d MOD 40H)n (*sec*) |
0B34 | l(80E00004): LDR R0, SP, 4H |
0B35 | l(81E00008): LDR R1, SP, 8H |
0B36 | m(4200003A): MOV R2, R0, 3AH |
0B37 | n(83E0000C): LDR R3, SP, CH |
0B38 | n(4334003F): AND R3, R3, 3FH |
| ENDo WriteClock; |
0B39 | o(F7FFFFB8): BL -72 [0AF2H] |
0B3A | o(8FE00000): LDR LNK, SP, 0H |
0B3B | o(4EE80010): ADD SP, SP, 10H |
0B3C | o(C700000F): B LNK |
| |
| BEGINp TrailerFile := Files.New("")q |
0B3D | p .PROC 0 |
0B3D | p .ENTRYPOINT |
0B3D | p(4EE90004): SUB SP, SP, 4H |
0B3E | p(AFE00000): STR LNK, SP, 0H |
0B3F | q .FIXUP D |
0B3F | q(8D0000D1): LDR SB, MT, MOD0 [Texts] |
0B40 | q(40D800F4): ADD R0, SB, F4H [""] |
0B41 | q(41000001): MOV R1, R0, 1H |
| ENDr Texts.s |
0B42 | r .FIXUP P |
0B42 | r(F710327E): BL MOD1 [Files] PROC3 |
0B43 | r .FIXUP D |
0B43 | r(8D000004): LDR SB, MT, MOD0 [Texts] |
0B44 | r(A0D000C8): STR R0, SB, C8H [data] |
0B45 | s(8FE00000): LDR LNK, SP, 0H |
0B46 | s(4EE80004): ADD SP, SP, 4H |
0B47 | s(C700000F): B LNK |