Texts

Used Exports

BUILTINS: ASR BOOLEAN BYTE CHAR CHR DEC FLOOR FLT INC INTEGER LONGINT LONGREAL LSL NEW ODD ORD REAL ROR SET
Files: Base File Length New Old Pos Read ReadByte ReadInt ReadString Register Rider Set Write WriteByte WriteInt WriteString
Fonts: Default Font FontDesc.name This

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
0000a(4EE90008): SUB SP, SP, 8H
0001a(AFE00000): STR LNK, SP, 0H
0002b(40E80004): ADD R0, SP, 4H
0003b .FIXUP D
0003b(8D000003): LDR SB, MT, MOD0 [Texts]
0004b(41D80000): ADD R1, SB, 0H [data]
0005b(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
0006c(80E00004): LDR R0, SP, 4H
0007c(D107A74C): BLEQ MT [trap=4, pos=1959]
0008d .FIXUP D
0008d(8D000005): LDR SB, MT, MOD0 [Texts]
0009d .PROC 1
0009d(81D000C8): LDR R1, SB, C8H [data]
000Ad(A1000000): STR R1, R0, 0H
000Be(80E00004): LDR R0, SP, 4H
000Ce(D107BD4C): BLEQ MT [trap=4, pos=1981]
000Df(5100FFFF): MOV R1, R0, FFFFFFFFH
000Ef(A1000004): STR R1, R0, 4H
000Fg(80E00004): LDR R0, SP, 4H
0010g .PROC 2
0010g(D107CA4C): BLEQ MT [trap=4, pos=1994]
0011h(41000001): MOV R1, R0, 1H
0012h(A1000008): STR R1, R0, 8H
0013i(80E00004): LDR R0, SP, 4H
0014i(D107D64C): BLEQ MT [trap=4, pos=2006]
0015j(41000000): MOV R1, R0, 0H
0016j(A100000C): STR R1, R0, CH
0017k(80E00004): LDR R0, SP, 4H
0018k(D107E44C): BLEQ MT [trap=4, pos=2020]
0019l .PROC 3
0019l(41000000): MOV R1, R0, 0H
001Al(A1000010): STR R1, R0, 10H
001Bm(80E00004): LDR R0, SP, 4H
001Cm(D107F14C): BLEQ MT [trap=4, pos=2033]
001Dn(41000000): MOV R1, R0, 0H
001En(A1000014): STR R1, R0, 14H
ENDo Trailer;
001Fo(80E00004): LDR R0, SP, 4H
0020o(8FE00000): LDR LNK, SP, 0H
0021o(4EE80008): ADD SP, SP, 8H
0022o .PROC 4
0022o(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
0023p .PROC 6
0023p(4EE900D0): SUB SP, SP, D0H
0024p(AFE00000): STR LNK, SP, 0H
0025p(A0E00004): STR R0, SP, 4H
0026p(A1E00008): STR R1, SP, 8H
0027p(A2E0000C): STR R2, SP, CH
0028q(80E00004): LDR R0, SP, 4H
0029q .PROC 5
0029q(81E00008): LDR R1, SP, 8H
002Ar .FIXUP P
002Ar(F710D02A): BL MOD1 [Files] PROC13
002Br(A0E0002C): STR R0, SP, 2CH
002Cs(40000001): MOV R0, R0, 1H
002Ds(A0E00020): STR R0, SP, 20H
002Et(F7FFFFD1): BL -47 [0000H]
002Ft(A0E00010): STR R0, SP, 10H
0030u(80E00010): LDR R0, SP, 10H
0031u(A0E00018): STR R0, SP, 18H
Files.ReadInt(R,v off)w;x Files.ReadByte(R,y bt)z;a fno := bt;b
0032v(80E00004): LDR R0, SP, 4H
0033v(81E00008): LDR R1, SP, 8H
0034w(42E8001C): ADD R2, SP, 1CH
0035x .FIXUP P
0035x(F711100B): BL MOD1 [Files] PROC17
0036y(80E00004): LDR R0, SP, 4H
0037y(81E00008): LDR R1, SP, 8H
0038z(42E80028): ADD R2, SP, 28H
0039a .FIXUP P
0039a(F710E004): BL MOD1 [Files] PROC14
003Ab(90E00028): LDR R0, SP, 28H
003Bb(A0E00024): STR R0, SP, 24H
WHILE fno # 0 DOc
003Cc(80E00024): LDR R0, SP, 24H
003Dc(E100005E): BEQ 94 [009CH]
IF fno = N THENd
003Ed(80E00024): LDR R0, SP, 24H
003Fd(81E00020): LDR R1, SP, 20H
0040d(00090001): SUB R0, R0, R1
0041d(E9000016): BNE 22 [0058H]
Files.ReadString(R,e FName)f;g
0042e(80E00004): LDR R0, SP, 4H
0043e(81E00008): LDR R1, SP, 8H
0044f(42E80030): ADD R2, SP, 30H
0045f(43000020): MOV R3, R0, 20H
0046g .FIXUP P
0046g(F711400D): BL MOD1 [Files] PROC20
Dict[N]h := Fonts.This(FNamei)j;k INC(N)
0047h(80E00020): LDR R0, SP, 20H
0048h(41090020): SUB R1, R0, 20H
0049h(DA09BE1C): BLCC MT [trap=1, pos=2494]
004Ah(40010002): LSL R0, R0, 2H
004Bh(00E80000): ADD R0, SP, R0
004Ci(4EE90004): SUB SP, SP, 4H
004Di(A0E00000): STR R0, SP, 0H
004Ej(40E80034): ADD R0, SP, 34H
004Fj(41000020): MOV R1, R0, 20H
0050k .FIXUP P
0050k(F720500A): BL MOD2 [Fonts] PROC5
0051k(01000000): MOV R1, R0, R0
0052k(80E00000): LDR R0, SP, 0H
0053k(4EE80004): ADD SP, SP, 4H
0054k(A1000050): STR R1, R0, 50H
ENDl;
0055l(80E00020): LDR R0, SP, 20H
0056l(40080001): ADD R0, R0, 1H
0057l(A0E00020): STR R0, SP, 20H
NEW(q);m q.fntn := Dict[fno]o;p
0058m(40E80014): ADD R0, SP, 14H
0059m .FIXUP D
0059m(8D000051): LDR SB, MT, MOD0 [Texts]
005Am(41D80000): ADD R1, SB, 0H [data]
005Bm(D709F40C): BL MT [trap=0, pos=2548]
005Cn(80E00014): LDR R0, SP, 14H
005Dn(D109FA4C): BLEQ MT [trap=4, pos=2554]
005Eo(81E00024): LDR R1, SP, 24H
005Fo(42190020): SUB R2, R1, 20H
0060o(DA0A071C): BLCC MT [trap=1, pos=2567]
0061o(41110002): LSL R1, R1, 2H
0062o(01E80001): ADD R1, SP, R1
0063p(81100050): LDR R1, R1, 50H
0064p(A100000C): STR R1, R0, CH
Files.ReadByte(R,q bt)r;s q.colt := bt;u
0065q(80E00004): LDR R0, SP, 4H
0066q(81E00008): LDR R1, SP, 8H
0067r(42E80028): ADD R2, SP, 28H
0068s .FIXUP P
0068s(F710E018): BL MOD1 [Files] PROC14
0069t(80E00014): LDR R0, SP, 14H
006At(D10A2B4C): BLEQ MT [trap=4, pos=2603]
006Bu(91E00028): LDR R1, SP, 28H
006Cu(A1000010): STR R1, R0, 10H
Files.ReadByte(R,v bt)w;x q.voffy := ASR(LSL(bt, -24),z 24);a
006Dv(80E00004): LDR R0, SP, 4H
006Ev(81E00008): LDR R1, SP, 8H
006Fw(42E80028): ADD R2, SP, 28H
0070x .FIXUP P
0070x(F710E008): BL MOD1 [Files] PROC14
0071y(80E00014): LDR R0, SP, 14H
0072y(D10A564C): BLEQ MT [trap=4, pos=2646]
0073z(91E00028): LDR R1, SP, 28H
0074z(41110008): LSL R1, R1, 8H
0075a(41120018): ASR R1, R1, 18H
0076a(A1000014): STR R1, R0, 14H
Files.ReadInt(R,b q.lenc)d;e
0077b(80E00004): LDR R0, SP, 4H
0078b(81E00008): LDR R1, SP, 8H
0079c(82E00014): LDR R2, SP, 14H
007Ac(D10A8D4C): BLEQ MT [trap=4, pos=2701]
007Bd(42280008): ADD R2, R2, 8H
007Ce .FIXUP P
007Ce(F711100C): BL MOD1 [Files] PROC17
Files.ReadByte(R,f bt)g;h fno := bt;i
007Df(80E00004): LDR R0, SP, 4H
007Ef(81E00008): LDR R1, SP, 8H
007Fg(42E80028): ADD R2, SP, 28H
0080h .FIXUP P
0080h(F710E004): BL MOD1 [Files] PROC14
0081i(90E00028): LDR R0, SP, 28H
0082i(A0E00024): STR R0, SP, 24H
q.fj := f;k q.offl := off;m off := off + q.lenn;o
0083j(80E00014): LDR R0, SP, 14H
0084j(D10AC14C): BLEQ MT [trap=4, pos=2753]
0085k(81E0002C): LDR R1, SP, 2CH
0086k(A1000000): STR R1, R0, 0H
0087l(80E00014): LDR R0, SP, 14H
0088l(D10ACD4C): BLEQ MT [trap=4, pos=2765]
0089m(81E0001C): LDR R1, SP, 1CH
008Am(A1000004): STR R1, R0, 4H
008Bn(80E00014): LDR R0, SP, 14H
008Cn(D10AE84C): BLEQ MT [trap=4, pos=2792]
008Do(81E0001C): LDR R1, SP, 1CH
008Eo(80000008): LDR R0, R0, 8H
008Fo(00180000): ADD R0, R1, R0
0090o(A0E0001C): STR R0, SP, 1CH
p.nextp := q;q q.prevr := p;s p := q
0091p(80E00018): LDR R0, SP, 18H
0092p(D10AF64C): BLEQ MT [trap=4, pos=2806]
0093q(81E00014): LDR R1, SP, 14H
0094q(A100001C): STR R1, R0, 1CH
0095r(80E00014): LDR R0, SP, 14H
0096r(D10B034C): BLEQ MT [trap=4, pos=2819]
0097s(81E00018): LDR R1, SP, 18H
0098s(A1000018): STR R1, R0, 18H
ENDt;
0099t(80E00014): LDR R0, SP, 14H
009At(A0E00018): STR R0, SP, 18H
009Bt(E7FFFFA0): B -96 [003CH]
p.nextu := Q;v Q.prevw := p;x
009Cu(80E00018): LDR R0, SP, 18H
009Du(D10B244C): BLEQ MT [trap=4, pos=2852]
009Ev(81E00010): LDR R1, SP, 10H
009Fv(A100001C): STR R1, R0, 1CH
00A0w(80E00010): LDR R0, SP, 10H
00A1w(D10B314C): BLEQ MT [trap=4, pos=2865]
00A2x(81E00018): LDR R1, SP, 18H
00A3x(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)*)
00A4y(80E0000C): LDR R0, SP, CH
00A5y(D10B454C): BLEQ MT [trap=4, pos=2885]
00A6z(81E00010): LDR R1, SP, 10H
00A7z(A100000C): STR R1, R0, CH
00A8a(80E00004): LDR R0, SP, 4H
00A9a(81E00008): LDR R1, SP, 8H
00AAb(82E0000C): LDR R2, SP, CH
00ABb(D10B624C): BLEQ MT [trap=4, pos=2914]
00ACc .FIXUP P
00ACc(F711102C): BL MOD1 [Files] PROC17
ENDd Load;
00ADd(8FE00000): LDR LNK, SP, 0H
00AEd(4EE800D0): ADD SP, SP, D0H
00AFd(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
00B0e .PROC 7
00B0e(4EE9003C): SUB SP, SP, 3CH
00B1e(AFE00000): STR LNK, SP, 0H
00B2e(A0E00004): STR R0, SP, 4H
00B3e(A1E00008): STR R1, SP, 8H
00B4e(A2E0000C): STR R2, SP, CH
00B5f(80E00008): LDR R0, SP, 8H
00B6f(81E0000C): LDR R1, SP, CH
00B7g .FIXUP P
00B7g(F710200B): BL MOD1 [Files] PROC2
00B8g(A0E00010): STR R0, SP, 10H
IF f # NIL THENh
00B9h(80E00010): LDR R0, SP, 10H
00BAh(E100004F): BEQ 79 [010AH]
Files.Set(R,i f,j 0)k;l Files.Read(R,m tag)n;o
00BBi(40E80014): ADD R0, SP, 14H
00BCi .FIXUP D
00BCi(8D100063): LDR SB, MT, MOD1 [Files]
00BDi(41D80001): ADD R1, SB, VAR1
00BEj(82E00010): LDR R2, SP, 10H
00BFk(43000000): MOV R3, R0, 0H
00C0l .FIXUP P
00C0l(F710B009): BL MOD1 [Files] PROC11
00C1m(40E80014): ADD R0, SP, 14H
00C2m .FIXUP D
00C2m(8D100006): LDR SB, MT, MOD1 [Files]
00C3m(41D80001): ADD R1, SB, VAR1
00C4n(42E80034): ADD R2, SP, 34H
00C5o .FIXUP P
00C5o(F7110005): BL MOD1 [Files] PROC16
IF tag = TextTag THENp Load(R,q T)r
00C6p(90E00034): LDR R0, SP, 34H
00C7p(400900F1): SUB R0, R0, F1H
00C8p(E9000006): BNE 6 [00CFH]
00C9q(40E80014): ADD R0, SP, 14H
00CAq .FIXUP D
00CAq(8D100008): LDR SB, MT, MOD1 [Files]
00CBq(41D80001): ADD R1, SB, VAR1
00CCr(82E00004): LDR R2, SP, 4H
ELSEs (*Ascii file*)
00CDs(F7FFFF55): BL -171 [0023H]
lent := Files.Length(f)u;v Q := Trailer();w
00CEt(E700003A): B 58 [0109H]
00CFu(80E00010): LDR R0, SP, 10H
00D0v .FIXUP P
00D0v(F710900B): BL MOD1 [Files] PROC9
00D1v(A0E00038): STR R0, SP, 38H
00D2w(F7FFFF2D): BL -211 [0000H]
00D3w(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
00D4x(40E80030): ADD R0, SP, 30H
00D5x .FIXUP D
00D5x(8D00000B): LDR SB, MT, MOD0 [Texts]
00D6x(41D80000): ADD R1, SB, 0H [data]
00D7x(D70D020C): BL MT [trap=0, pos=3330]
00D8y(80E00030): LDR R0, SP, 30H
00D9y(D10D084C): BLEQ MT [trap=4, pos=3336]
00DAz .FIXUP D
00DAz(8D200005): LDR SB, MT, MOD2 [Fonts]
00DBz(81D00002): LDR R1, SB, VAR2
00DCz(A100000C): STR R1, R0, CH
00DDa(80E00030): LDR R0, SP, 30H
00DEa(D10D204C): BLEQ MT [trap=4, pos=3360]
00DFb(41000001): MOV R1, R0, 1H
00E0b(A1000010): STR R1, R0, 10H
00E1c(80E00030): LDR R0, SP, 30H
00E2c(D10D2D4C): BLEQ MT [trap=4, pos=3373]
00E3d(41000000): MOV R1, R0, 0H
00E4d(A1000014): STR R1, R0, 14H
00E5e(80E00030): LDR R0, SP, 30H
00E6e(D10D374C): BLEQ MT [trap=4, pos=3383]
00E7f(81E00010): LDR R1, SP, 10H
00E8f(A1000000): STR R1, R0, 0H
00E9g(80E00030): LDR R0, SP, 30H
00EAg(D10D434C): BLEQ MT [trap=4, pos=3395]
00EBh(41000000): MOV R1, R0, 0H
00ECh(A1000004): STR R1, R0, 4H
00EDi(80E00030): LDR R0, SP, 30H
00EEi(D10D4F4C): BLEQ MT [trap=4, pos=3407]
00EFj(81E00038): LDR R1, SP, 38H
00F0j(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
00F1k(80E0002C): LDR R0, SP, 2CH
00F2k(D10D664C): BLEQ MT [trap=4, pos=3430]
00F3l(81E00030): LDR R1, SP, 30H
00F4l(A100001C): STR R1, R0, 1CH
00F5m(80E00030): LDR R0, SP, 30H
00F6m(D10D734C): BLEQ MT [trap=4, pos=3443]
00F7n(81E0002C): LDR R1, SP, 2CH
00F8n(A1000018): STR R1, R0, 18H
00F9o(80E00030): LDR R0, SP, 30H
00FAo(D10D804C): BLEQ MT [trap=4, pos=3456]
00FBp(81E0002C): LDR R1, SP, 2CH
00FCp(A100001C): STR R1, R0, 1CH
00FDq(80E0002C): LDR R0, SP, 2CH
00FEq(D10D8D4C): BLEQ MT [trap=4, pos=3469]
00FFr(81E00030): LDR R1, SP, 30H
0100r(A1000018): STR R1, R0, 18H
0101s(80E00004): LDR R0, SP, 4H
0102s(D10D9D4C): BLEQ MT [trap=4, pos=3485]
0103t(81E0002C): LDR R1, SP, 2CH
0104t(A100000C): STR R1, R0, CH
0105u(80E00004): LDR R0, SP, 4H
0106u(D10DA94C): BLEQ MT [trap=4, pos=3497]
ENDv
0107v(81E00038): LDR R1, SP, 38H
0108v(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
0109w(E7000012): B 18 [011CH]
010Ax(F7FFFEF5): BL -267 [0000H]
010Bx(A0E0002C): STR R0, SP, 2CH
010Cy(80E0002C): LDR R0, SP, 2CH
010Dy(D10DF44C): BLEQ MT [trap=4, pos=3572]
010Ez(81E0002C): LDR R1, SP, 2CH
010Fz(A100001C): STR R1, R0, 1CH
0110a(80E0002C): LDR R0, SP, 2CH
0111a(D10E014C): BLEQ MT [trap=4, pos=3585]
0112b(81E0002C): LDR R1, SP, 2CH
0113b(A1000018): STR R1, R0, 18H
0114c(80E00004): LDR R0, SP, 4H
0115c(D10E114C): BLEQ MT [trap=4, pos=3601]
0116d(81E0002C): LDR R1, SP, 2CH
0117d(A100000C): STR R1, R0, CH
0118e(80E00004): LDR R0, SP, 4H
0119e(D10E1D4C): BLEQ MT [trap=4, pos=3613]
ENDf ;
011Af(41000000): MOV R1, R0, 0H
011Bf(A1000000): STR R1, R0, 0H
T.changedg := FALSE;h T.orgi := -1;j T.pcek := T.trailerl (*init cache*)
011Cg(80E00004): LDR R0, SP, 4H
011Dg(D10E3A4C): BLEQ MT [trap=4, pos=3642]
011Eh(41000000): MOV R1, R0, 0H
011Fh(B1000004): STR R1, R0, 4H
0120i(80E00004): LDR R0, SP, 4H
0121i(D10E4A4C): BLEQ MT [trap=4, pos=3658]
0122j(5100FFFF): MOV R1, R0, FFFFFFFFH
0123j(A1000014): STR R1, R0, 14H
0124k(80E00004): LDR R0, SP, 4H
0125k(D10E574C): BLEQ MT [trap=4, pos=3671]
0126l(81E00004): LDR R1, SP, 4H
0127l(D10E644C): BLEQ MT [trap=4, pos=3684]
ENDm Open;
0128m(8110000C): LDR R1, R1, CH
0129m(A1000010): STR R1, R0, 10H
012Am(8FE00000): LDR LNK, SP, 0H
012Bm(4EE8003C): ADD SP, SP, 3CH
012Cm(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*)
012Dn .PROC 8
012Dn(4EE90448): SUB SP, SP, 448H
012En(AFE00000): STR LNK, SP, 0H
012Fn(A0E00004): STR R0, SP, 4H
0130n(A1E00008): STR R1, SP, 8H
0131n(A2E0000C): STR R2, SP, CH
0132o(80E00004): LDR R0, SP, 4H
0133o(81E00008): LDR R1, SP, 8H
0134p .FIXUP P
0134p(F710C064): BL MOD1 [Files] PROC12
0135p(A0E00038): STR R0, SP, 38H
0136q(80E00004): LDR R0, SP, 4H
0137q(81E00008): LDR R1, SP, 8H
0138r(42000000): MOV R2, R0, 0H
0139s .FIXUP P
0139s(F7119005): BL MOD1 [Files] PROC25
N := 1;t p := T.traileru.nextv;w
013At(40000001): MOV R0, R0, 1H
013Bt(A0E0003C): STR R0, SP, 3CH
013Cu(80E0000C): LDR R0, SP, CH
013Du(D10FA24C): BLEQ MT [trap=4, pos=4002]
013Ev(8000000C): LDR R0, R0, CH
013Fv(D10FA74C): BLEQ MT [trap=4, pos=4007]
0140w(8000001C): LDR R0, R0, 1CH
0141w(A0E00010): STR R0, SP, 10H
WHILE p # T.trailerx DOy
0142x(80E0000C): LDR R0, SP, CH
0143x(D10FC04C): BLEQ MT [trap=4, pos=4032]
0144y(81E00010): LDR R1, SP, 10H
0145y(8000000C): LDR R0, R0, CH
0146y(01190000): SUB R1, R1, R0
0147y(E1000081): BEQ 129 [01C9H]
rlen := p.lenz;a q := p.nextb;c
0148z(80E00010): LDR R0, SP, 10H
0149z(D10FD74C): BLEQ MT [trap=4, pos=4055]
014Aa(80000008): LDR R0, R0, 8H
014Ba(A0E00034): STR R0, SP, 34H
014Cb(80E00010): LDR R0, SP, 10H
014Db(D10FE44C): BLEQ MT [trap=4, pos=4068]
014Ec(8000001C): LDR R0, R0, 1CH
014Fc(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
0150d(80E0000C): LDR R0, SP, CH
0151d(D110004C): BLEQ MT [trap=4, pos=4096]
0152e(81E00014): LDR R1, SP, 14H
0153e(8000000C): LDR R0, R0, CH
0154e(01190000): SUB R1, R1, R0
0155f(E1000023): BEQ 35 [0179H]
0156g(80E00014): LDR R0, SP, 14H
0157g(D1100A4C): BLEQ MT [trap=4, pos=4106]
0158h(81E00010): LDR R1, SP, 10H
0159h(D110124C): BLEQ MT [trap=4, pos=4114]
015Ai(8000000C): LDR R0, R0, CH
015Bi(8110000C): LDR R1, R1, CH
015Ci(00090001): SUB R0, R0, R1
015Dj(E900001B): BNE 27 [0179H]
015Ek(80E00014): LDR R0, SP, 14H
015Fk(D1101C4C): BLEQ MT [trap=4, pos=4124]
0160l(81E00010): LDR R1, SP, 10H
0161l(D110244C): BLEQ MT [trap=4, pos=4132]
0162m(80000010): LDR R0, R0, 10H
0163m(81100010): LDR R1, R1, 10H
0164m(00090001): SUB R0, R0, R1
0165n(E9000013): BNE 19 [0179H]
0166o(80E00014): LDR R0, SP, 14H
0167o(D1102F4C): BLEQ MT [trap=4, pos=4143]
0168p(81E00010): LDR R1, SP, 10H
0169p(D110384C): BLEQ MT [trap=4, pos=4152]
016Aq(80000014): LDR R0, R0, 14H
016Bq(81100014): LDR R1, R1, 14H
016Cq(00090001): SUB R0, R0, R1
016Dr(E900000B): BNE 11 [0179H]
rlen := rlen + q.lens;t q := q.nextu
016Es(80E00014): LDR R0, SP, 14H
016Fs(D110594C): BLEQ MT [trap=4, pos=4185]
0170t(81E00034): LDR R1, SP, 34H
0171t(80000008): LDR R0, R0, 8H
0172t(00180000): ADD R0, R1, R0
0173t(A0E00034): STR R0, SP, 34H
0174u(80E00014): LDR R0, SP, 14H
0175u(D110664C): BLEQ MT [trap=4, pos=4198]
ENDv;
0176v(8000001C): LDR R0, R0, 1CH
0177v(A0E00014): STR R0, SP, 14H
0178v(E7FFFFD7): B -41 [0150H]
Dict[N]w := p.fntx.namey;z
0179w(80E0003C): LDR R0, SP, 3CH
017Aw(41090020): SUB R1, R0, 20H
017Bw(DA107F1C): BLCC MT [trap=1, pos=4223]
017Cw(400A0020): MUL R0, R0, 20H
017Dw(00E80000): ADD R0, SP, R0
017Ex(81E00010): LDR R1, SP, 10H
017Fx(D110884C): BLEQ MT [trap=4, pos=4232]
0180y(8110000C): LDR R1, R1, CH
0181y(D1108D4C): BLEQ MT [trap=4, pos=4237]
0182z(40080048): ADD R0, R0, 48H
0183z(42000008): MOV R2, R0, 8H
0184z(83100000): LDR R3, R1, 0H
0185z(41180004): ADD R1, R1, 4H
0186z(A3000000): STR R3, R0, 0H
0187z(40080004): ADD R0, R0, 4H
0188z(42290001): SUB R2, R2, 1H
0189z(E9FFFFFA): BNE -6 [0184H]
n := 1;a
018Aa(40000001): MOV R0, R0, 1H
018Ba(A0E00040): STR R0, SP, 40H
WHILE Dict[n]b # p.fntc.named DOe INC(n) ENDf;
018Cb(80E00040): LDR R0, SP, 40H
018Db(41090020): SUB R1, R0, 20H
018Eb(DA10B01C): BLCC MT [trap=1, pos=4272]
018Fb(400A0020): MUL R0, R0, 20H
0190b(00E80000): ADD R0, SP, R0
0191c(81E00010): LDR R1, SP, 10H
0192c(D110B84C): BLEQ MT [trap=4, pos=4280]
0193d(8110000C): LDR R1, R1, CH
0194d(D110BD4C): BLEQ MT [trap=4, pos=4285]
0195e(40080048): ADD R0, R0, 48H
0196e(92000000): LDR R2, R0, 0H
0197e(40080001): ADD R0, R0, 1H
0198e(93100000): LDR R3, R1, 0H
0199e(41180001): ADD R1, R1, 1H
019Ae(04290003): SUB R4, R2, R3
019Be(E9000002): BNE 2 [019EH]
019Ce(44290000): SUB R4, R2, 0H
019De(E9FFFFF8): BNE -8 [0196H]
019Ee(E1000004): BEQ 4 [01A3H]
019Ff(80E00040): LDR R0, SP, 40H
01A0f(40080001): ADD R0, R0, 1H
01A1f(A0E00040): STR R0, SP, 40H
01A2f(E7FFFFE9): B -23 [018CH]
Files.WriteByte(W,g n)h;i
01A3g(80E00004): LDR R0, SP, 4H
01A4g(81E00008): LDR R1, SP, 8H
01A5h(82E00040): LDR R2, SP, 40H
01A6i .FIXUP P
01A6i(F711606D): BL MOD1 [Files] PROC22
IF n = N THENj Files.WriteString(W,k p.fntl.namem)n;o INC(N) ENDp;
01A7j(80E00040): LDR R0, SP, 40H
01A8j(81E0003C): LDR R1, SP, 3CH
01A9j(00090001): SUB R0, R0, R1
01AAj(E900000B): BNE 11 [01B6H]
01ABk(80E00004): LDR R0, SP, 4H
01ACk(81E00008): LDR R1, SP, 8H
01ADl(82E00010): LDR R2, SP, 10H
01AEl(D111184C): BLEQ MT [trap=4, pos=4376]
01AFm(8220000C): LDR R2, R2, CH
01B0m(D1111D4C): BLEQ MT [trap=4, pos=4381]
01B1n(43000020): MOV R3, R0, 20H
01B2o .FIXUP P
01B2o(F711C00C): BL MOD1 [Files] PROC28
01B3p(80E0003C): LDR R0, SP, 3CH
01B4p(40080001): ADD R0, R0, 1H
01B5p(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
01B6q(80E00004): LDR R0, SP, 4H
01B7q(81E00008): LDR R1, SP, 8H
01B8r(82E00010): LDR R2, SP, 10H
01B9r(D1114A4C): BLEQ MT [trap=4, pos=4426]
01BAs(82200010): LDR R2, R2, 10H
01BBt .FIXUP P
01BBt(F7116009): BL MOD1 [Files] PROC22
01BCu(80E00004): LDR R0, SP, 4H
01BDu(81E00008): LDR R1, SP, 8H
01BEv(82E00010): LDR R2, SP, 10H
01BFv(D111664C): BLEQ MT [trap=4, pos=4454]
01C0w(82200014): LDR R2, R2, 14H
01C1x .FIXUP P
01C1x(F7116006): BL MOD1 [Files] PROC22
01C2y(80E00004): LDR R0, SP, 4H
01C3y(81E00008): LDR R1, SP, 8H
01C4z(82E00034): LDR R2, SP, 34H
01C5a .FIXUP P
01C5a(F7119004): BL MOD1 [Files] PROC25
p := q
ENDb;
01C6b(80E00014): LDR R0, SP, 14H
01C7b(A0E00010): STR R0, SP, 10H
01C8b(E7FFFF79): B -135 [0142H]
Files.WriteByte(W,c 0)d;e Files.WriteInt(W,f T.leng)h;i
01C9c(80E00004): LDR R0, SP, 4H
01CAc(81E00008): LDR R1, SP, 8H
01CBd(42000000): MOV R2, R0, 0H
01CCe .FIXUP P
01CCe(F7116007): BL MOD1 [Files] PROC22
01CDf(80E00004): LDR R0, SP, 4H
01CEf(81E00008): LDR R1, SP, 8H
01CFg(82E0000C): LDR R2, SP, CH
01D0g(D111CA4C): BLEQ MT [trap=4, pos=4554]
01D1h(82200000): LDR R2, R2, 0H
01D2i .FIXUP P
01D2i(F7119006): BL MOD1 [Files] PROC25
off := Files.Pos(W)j;k p := T.trailerl.nextm;n
01D3j(80E00004): LDR R0, SP, 4H
01D4j(81E00008): LDR R1, SP, 8H
01D5k .FIXUP P
01D5k(F710C003): BL MOD1 [Files] PROC12
01D6k(A0E00030): STR R0, SP, 30H
01D7l(80E0000C): LDR R0, SP, CH
01D8l(D111F44C): BLEQ MT [trap=4, pos=4596]
01D9m(8000000C): LDR R0, R0, CH
01DAm(D111F94C): BLEQ MT [trap=4, pos=4601]
01DBn(8000001C): LDR R0, R0, 1CH
01DCn(A0E00010): STR R0, SP, 10H
WHILE p # T.trailero DOp
01DDo(80E0000C): LDR R0, SP, CH
01DEo(D112124C): BLEQ MT [trap=4, pos=4626]
01DFp(81E00010): LDR R1, SP, 10H
01E0p(8000000C): LDR R0, R0, CH
01E1p(01190000): SUB R1, R1, R0
01E2p(E1000023): BEQ 35 [0206H]
rlen := p.lenq;r Files.Set(R,s p.ft,u p.offv)w;x
01E3q(80E00010): LDR R0, SP, 10H
01E4q(D112294C): BLEQ MT [trap=4, pos=4649]
01E5r(80000008): LDR R0, R0, 8H
01E6r(A0E00034): STR R0, SP, 34H
01E7s(40E80018): ADD R0, SP, 18H
01E8s .FIXUP D
01E8s(8D10010E): LDR SB, MT, MOD1 [Files]
01E9s(41D80001): ADD R1, SB, VAR1
01EAt(82E00010): LDR R2, SP, 10H
01EBt(D1123B4C): BLEQ MT [trap=4, pos=4667]
01ECu(82200000): LDR R2, R2, 0H
01EDv(83E00010): LDR R3, SP, 10H
01EEv(D112424C): BLEQ MT [trap=4, pos=4674]
01EFw(83300004): LDR R3, R3, 4H
01F0x .FIXUP P
01F0x(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 ;
01F1y(80E00034): LDR R0, SP, 34H
01F2y(40090000): SUB R0, R0, 0H
01F3y(E600000D): BLE 13 [0201H]
01F4z(40E80018): ADD R0, SP, 18H
01F5z .FIXUP D
01F5z(8D10000D): LDR SB, MT, MOD1 [Files]
01F6z(41D80001): ADD R1, SB, VAR1
01F7a(42E80044): ADD R2, SP, 44H
01F8b .FIXUP P
01F8b(F7110008): BL MOD1 [Files] PROC16
01F9c(80E00004): LDR R0, SP, 4H
01FAc(81E00008): LDR R1, SP, 8H
01FBd(92E00044): LDR R2, SP, 44H
01FCe .FIXUP P
01FCe(F7118004): BL MOD1 [Files] PROC24
01FDf(80E00034): LDR R0, SP, 34H
01FEf(40090001): SUB R0, R0, 1H
01FFf(A0E00034): STR R0, SP, 34H
0200f(E7FFFFF0): B -16 [01F1H]
p := p.nextg
0201g(80E00010): LDR R0, SP, 10H
0202g(D112A54C): BLEQ MT [trap=4, pos=4773]
ENDh ;
0203h(8000001C): LDR R0, R0, 1CH
0204h(A0E00010): STR R0, SP, 10H
0205h(E7FFFFD7): B -41 [01DDH]
Files.Set(W,i Files.Base(Wj)k,l pos)m;n Files.WriteInt(W,o off)p;q (*fixup*)
0206i(80E00004): LDR R0, SP, 4H
0207i(81E00008): LDR R1, SP, 8H
0208j(4EE90008): SUB SP, SP, 8H
0209j(A0E00004): STR R0, SP, 4H
020Aj(A1E00000): STR R1, SP, 0H
020Bk(80E0000C): LDR R0, SP, CH
020Ck(81E00010): LDR R1, SP, 10H
020Dl .FIXUP P
020Dl(F710D011): BL MOD1 [Files] PROC13
020El(02000000): MOV R2, R0, R0
020Fl(81E00000): LDR R1, SP, 0H
0210l(80E00004): LDR R0, SP, 4H
0211l(4EE80008): ADD SP, SP, 8H
0212m(83E00038): LDR R3, SP, 38H
0213n .FIXUP P
0213n(F710B006): BL MOD1 [Files] PROC11
0214o(80E00004): LDR R0, SP, 4H
0215o(81E00008): LDR R1, SP, 8H
0216p(82E00030): LDR R2, SP, 30H
0217q .FIXUP P
0217q(F7119004): BL MOD1 [Files] PROC25
T.changedr := FALSE;s
0218r(80E0000C): LDR R0, SP, CH
0219r(D113054C): BLEQ MT [trap=4, pos=4869]
021As(41000000): MOV R1, R0, 0H
021Bs(B1000004): STR R1, R0, 4H
IF T.notifyt # NIL THENu T.notifyv(Tw,x unmark,y 0,z 0)a ENDb
021Ct(80E0000C): LDR R0, SP, CH
021Dt(D1131F4C): BLEQ MT [trap=4, pos=4895]
021Eu(80000008): LDR R0, R0, 8H
021Fu(E100000D): BEQ 13 [022DH]
0220v(80E0000C): LDR R0, SP, CH
0221v(D113334C): BLEQ MT [trap=4, pos=4915]
0222w(80000008): LDR R0, R0, 8H
0223w(4EE90004): SUB SP, SP, 4H
0224w(A0E00000): STR R0, SP, 0H
0225x(80E00010): LDR R0, SP, 10H
0226y(41000003): MOV R1, R0, 3H
0227z(42000000): MOV R2, R0, 0H
0228a(43000000): MOV R3, R0, 0H
0229b(84E00000): LDR R4, SP, 0H
022Ab(4EE80004): ADD SP, SP, 4H
022Bb(D113485C): BLEQ MT [trap=5, pos=4936]
022Cb(D7000004): BL R4
ENDc Store;
022Dc(8FE00000): LDR LNK, SP, 0H
022Ec(4EE80448): ADD SP, SP, 448H
022Fc(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
0230d .PROC 9
0230d(4EE9002C): SUB SP, SP, 2CH
0231d(AFE00000): STR LNK, SP, 0H
0232d(A0E00004): STR R0, SP, 4H
0233d(A1E00008): STR R1, SP, 8H
0234d(A2E0000C): STR R2, SP, CH
0235e(80E00008): LDR R0, SP, 8H
0236e(81E0000C): LDR R1, SP, CH
0237f .FIXUP P
0237f(F7103020): BL MOD1 [Files] PROC3
0238f(A0E00010): STR R0, SP, 10H
0239g(40E80014): ADD R0, SP, 14H
023Ag .FIXUP D
023Ag(8D100045): LDR SB, MT, MOD1 [Files]
023Bg(41D80001): ADD R1, SB, VAR1
023Ch(82E00010): LDR R2, SP, 10H
023Di(43000000): MOV R3, R0, 0H
023Ej .FIXUP P
023Ej(F710B007): BL MOD1 [Files] PROC11
Files.Write(w,k TextTag)l;m Store(w,n T)o;p Files.Register(f)q
023Fk(40E80014): ADD R0, SP, 14H
0240k .FIXUP D
0240k(8D100006): LDR SB, MT, MOD1 [Files]
0241k(41D80001): ADD R1, SB, VAR1
0242l(420000F1): MOV R2, R0, F1H
0243m .FIXUP P
0243m(F7118005): BL MOD1 [Files] PROC24
0244n(40E80014): ADD R0, SP, 14H
0245n .FIXUP D
0245n(8D100005): LDR SB, MT, MOD1 [Files]
0246n(41D80001): ADD R1, SB, VAR1
0247o(82E00004): LDR R2, SP, 4H
0248p(F7FFFEE4): BL -284 [012DH]
0249q(80E00010): LDR R0, SP, 10H
ENDr Close;
024Ar .FIXUP P
024Ar(F7104007): BL MOD1 [Files] PROC4
024Br(8FE00000): LDR LNK, SP, 0H
024Cr(4EE8002C): ADD SP, SP, 2CH
024Dr(C700000F): B LNK
(* -------------------- Editing ----------------------- *)
PROCEDURE OpenBuf* (B: Buffer);
BEGINs NEW(B.headert);u (*null piece*)
024Es .PROC 10
024Es(4EE90008): SUB SP, SP, 8H
024Fs(AFE00000): STR LNK, SP, 0H
0250s(A0E00004): STR R0, SP, 4H
0251t(80E00004): LDR R0, SP, 4H
0252t(D114A04C): BLEQ MT [trap=4, pos=5280]
0253u(40080004): ADD R0, R0, 4H
0254u .FIXUP D
0254u(8D00000F): LDR SB, MT, MOD0 [Texts]
0255u(41D80000): ADD R1, SB, 0H [data]
0256u(D714A20C): BL MT [trap=0, pos=5282]
B.lastv := B.headerw;x B.leny := 0
0257v(80E00004): LDR R0, SP, 4H
0258v(D114BC4C): BLEQ MT [trap=4, pos=5308]
0259w(81E00004): LDR R1, SP, 4H
025Aw(D114C84C): BLEQ MT [trap=4, pos=5320]
025Bx(81100004): LDR R1, R1, 4H
025Cx(A1000008): STR R1, R0, 8H
025Dy(80E00004): LDR R0, SP, 4H
025Ey(D114CF4C): BLEQ MT [trap=4, pos=5327]
ENDz OpenBuf;
025Fz(41000000): MOV R1, R0, 0H
0260z(A1000000): STR R1, R0, 0H
0261z(8FE00000): LDR LNK, SP, 0H
0262z(4EE80008): ADD SP, SP, 8H
0263z(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
0264a(4EE9001C): SUB SP, SP, 1CH
0265a(AFE00000): STR LNK, SP, 0H
0266a(A0E00004): STR R0, SP, 4H
0267a(A1E00008): STR R1, SP, 8H
0268a(A2E0000C): STR R2, SP, CH
0269a(A3E00010): STR R3, SP, 10H
026Ab(80E00004): LDR R0, SP, 4H
026Bb(D115694C): BLEQ MT [trap=4, pos=5481]
026Cc(80000010): LDR R0, R0, 10H
026Dc(A0E00014): STR R0, SP, 14H
026Ed(80E00004): LDR R0, SP, 4H
026Fd(D115784C): BLEQ MT [trap=4, pos=5496]
0270e(80000014): LDR R0, R0, 14H
0271e(A0E00018): STR R0, SP, 18H
IF pos >= porg THENf
0272f(80E00008): LDR R0, SP, 8H
0273f(81E00018): LDR R1, SP, 18H
0274f(00090001): SUB R0, R0, R1
0275f(E5000014): BLT 20 [028AH]
WHILE pos >= porg + p.leng DOh INC(porg, p.leni);j p := p.nextk ENDl
0276g(80E00014): LDR R0, SP, 14H
0277g(D115B14C): BLEQ MT [trap=4, pos=5553]
0278h(81E00018): LDR R1, SP, 18H
0279h(80000008): LDR R0, R0, 8H
027Ah(00180000): ADD R0, R1, R0
027Bh(81E00008): LDR R1, SP, 8H
027Ch(01190000): SUB R1, R1, R0
027Dh(E500000B): BLT 11 [0289H]
027Ei(80E00014): LDR R0, SP, 14H
027Fi(D115C44C): BLEQ MT [trap=4, pos=5572]
0280j(81E00018): LDR R1, SP, 18H
0281j(80000008): LDR R0, R0, 8H
0282j(01180000): ADD R1, R1, R0
0283j(A1E00018): STR R1, SP, 18H
0284k(80E00014): LDR R0, SP, 14H
0285k(D115D24C): BLEQ MT [trap=4, pos=5586]
0286l(8000001C): LDR R0, R0, 1CH
0287l(A0E00014): STR R0, SP, 14H
0288l(E7FFFFED): B -19 [0276H]
ELSE pm := p.prevn;o DEC(porg, p.lenp);q
0289m(E7000019): B 25 [02A3H]
028An(80E00014): LDR R0, SP, 14H
028Bn(D115EB4C): BLEQ MT [trap=4, pos=5611]
028Co(80000018): LDR R0, R0, 18H
028Do(A0E00014): STR R0, SP, 14H
028Ep(80E00014): LDR R0, SP, 14H
028Fp(D115FC4C): BLEQ MT [trap=4, pos=5628]
0290q(81E00018): LDR R1, SP, 18H
0291q(80000008): LDR R0, R0, 8H
0292q(01190000): SUB R1, R1, R0
0293q(A1E00018): STR R1, SP, 18H
WHILE pos < porg DOr p := p.prevs;t DEC(porg, p.lenu) ENDv
0294r(80E00008): LDR R0, SP, 8H
0295r(81E00018): LDR R1, SP, 18H
0296r(00090001): SUB R0, R0, R1
0297r(ED00000B): BGE 11 [02A3H]
0298s(80E00014): LDR R0, SP, 14H
0299s(D116244C): BLEQ MT [trap=4, pos=5668]
029At(80000018): LDR R0, R0, 18H
029Bt(A0E00014): STR R0, SP, 14H
029Cu(80E00014): LDR R0, SP, 14H
029Du(D116354C): BLEQ MT [trap=4, pos=5685]
029Ev(81E00018): LDR R1, SP, 18H
029Fv(80000008): LDR R0, R0, 8H
02A0v(01190000): SUB R1, R1, R0
02A1v(A1E00018): STR R1, SP, 18H
02A2v(E7FFFFF1): B -15 [0294H]
END ;
T.pcew := p;x T.orgy := porg;z (*update cache*)
02A3w(80E00004): LDR R0, SP, 4H
02A4w(D1164E4C): BLEQ MT [trap=4, pos=5710]
02A5x(81E00014): LDR R1, SP, 14H
02A6x(A1000010): STR R1, R0, 10H
02A7y(80E00004): LDR R0, SP, 4H
02A8y(D1165A4C): BLEQ MT [trap=4, pos=5722]
02A9z(81E00018): LDR R1, SP, 18H
02AAz(A1000014): STR R1, R0, 14H
pce := p;a org := porg
02ABa(80E00014): LDR R0, SP, 14H
02ACa(81E00010): LDR R1, SP, 10H
02ADa(A0100000): STR R0, R1, 0H
ENDb FindPiece;
02AEb(80E00018): LDR R0, SP, 18H
02AFb(81E0000C): LDR R1, SP, CH
02B0b(A0100000): STR R0, R1, 0H
02B1b(8FE00000): LDR LNK, SP, 0H
02B2b(4EE8001C): ADD SP, SP, 1CH
02B3b(C700000F): B LNK
PROCEDURE SplitPiece (p: Piece; off: LONGINT; VAR pr: Piece);
VAR q: Piece;
BEGINc
02B4c(4EE90014): SUB SP, SP, 14H
02B5c(AFE00000): STR LNK, SP, 0H
02B6c(A0E00004): STR R0, SP, 4H
02B7c(A1E00008): STR R1, SP, 8H
02B8c(A2E0000C): STR R2, SP, CH
IF off > 0 THENd NEW(q);e
02B9d(80E00008): LDR R0, SP, 8H
02BAd(40090000): SUB R0, R0, 0H
02BBd(E6000048): BLE 72 [0304H]
02BCe(40E80010): ADD R0, SP, 10H
02BDe .FIXUP D
02BDe(8D000069): LDR SB, MT, MOD0 [Texts]
02BEe(41D80000): ADD R1, SB, 0H [data]
02BFe(D717170C): BL MT [trap=0, pos=5911]
q.fntf := p.fntg;h q.coli := p.colj;k q.voffl := p.voffm;n
02C0f(80E00010): LDR R0, SP, 10H
02C1f(D117234C): BLEQ MT [trap=4, pos=5923]
02C2g(81E00004): LDR R1, SP, 4H
02C3g(D1172C4C): BLEQ MT [trap=4, pos=5932]
02C4h(8110000C): LDR R1, R1, CH
02C5h(A100000C): STR R1, R0, CH
02C6i(80E00010): LDR R0, SP, 10H
02C7i(D117334C): BLEQ MT [trap=4, pos=5939]
02C8j(81E00004): LDR R1, SP, 4H
02C9j(D1173C4C): BLEQ MT [trap=4, pos=5948]
02CAk(81100010): LDR R1, R1, 10H
02CBk(A1000010): STR R1, R0, 10H
02CCl(80E00010): LDR R0, SP, 10H
02CDl(D117444C): BLEQ MT [trap=4, pos=5956]
02CEm(81E00004): LDR R1, SP, 4H
02CFm(D1174E4C): BLEQ MT [trap=4, pos=5966]
02D0n(81100014): LDR R1, R1, 14H
02D1n(A1000014): STR R1, R0, 14H
q.leno := p.lenp - off;q
02D2o(80E00010): LDR R0, SP, 10H
02D3o(D1175B4C): BLEQ MT [trap=4, pos=5979]
02D4p(81E00004): LDR R1, SP, 4H
02D5p(D117644C): BLEQ MT [trap=4, pos=5988]
02D6q(81100008): LDR R1, R1, 8H
02D7q(82E00008): LDR R2, SP, 8H
02D8q(01190002): SUB R1, R1, R2
02D9q(A1000008): STR R1, R0, 8H
q.fr := p.fs;t q.offu := p.offv + off;w
02DAr(80E00010): LDR R0, SP, 10H
02DBr(D117754C): BLEQ MT [trap=4, pos=6005]
02DCs(81E00004): LDR R1, SP, 4H
02DDs(D1177C4C): BLEQ MT [trap=4, pos=6012]
02DEt(81100000): LDR R1, R1, 0H
02DFt(A1000000): STR R1, R0, 0H
02E0u(80E00010): LDR R0, SP, 10H
02E1u(D117834C): BLEQ MT [trap=4, pos=6019]
02E2v(81E00004): LDR R1, SP, 4H
02E3v(D1178C4C): BLEQ MT [trap=4, pos=6028]
02E4w(81100004): LDR R1, R1, 4H
02E5w(82E00008): LDR R2, SP, 8H
02E6w(01180002): ADD R1, R1, R2
02E7w(A1000004): STR R1, R0, 4H
p.lenx := off;y
02E8x(80E00004): LDR R0, SP, 4H
02E9x(D1179F4C): BLEQ MT [trap=4, pos=6047]
02EAy(81E00008): LDR R1, SP, 8H
02EBy(A1000008): STR R1, R0, 8H
q.nextz := p.nexta;b p.nextc := q;d
02ECz(80E00010): LDR R0, SP, 10H
02EDz(D117B44C): BLEQ MT [trap=4, pos=6068]
02EEa(81E00004): LDR R1, SP, 4H
02EFa(D117BE4C): BLEQ MT [trap=4, pos=6078]
02F0b(8110001C): LDR R1, R1, 1CH
02F1b(A100001C): STR R1, R0, 1CH
02F2c(80E00004): LDR R0, SP, 4H
02F3c(D117C64C): BLEQ MT [trap=4, pos=6086]
02F4d(81E00010): LDR R1, SP, 10H
02F5d(A100001C): STR R1, R0, 1CH
q.preve := p;f q.nextg.prevh := q;i
02F6e(80E00010): LDR R0, SP, 10H
02F7e(D117D94C): BLEQ MT [trap=4, pos=6105]
02F8f(81E00004): LDR R1, SP, 4H
02F9f(A1000018): STR R1, R0, 18H
02FAg(80E00010): LDR R0, SP, 10H
02FBg(D117E64C): BLEQ MT [trap=4, pos=6118]
02FCh(8000001C): LDR R0, R0, 1CH
02FDh(D117EB4C): BLEQ MT [trap=4, pos=6123]
02FEi(81E00010): LDR R1, SP, 10H
02FFi(A1000018): STR R1, R0, 18H
pr := q
ELSEj prk := p
0300j(80E00010): LDR R0, SP, 10H
0301j(81E0000C): LDR R1, SP, CH
0302j(A0100000): STR R0, R1, 0H
0303k(E7000003): B 3 [0307H]
ENDl
0304l(80E00004): LDR R0, SP, 4H
0305l(81E0000C): LDR R1, SP, CH
0306l(A0100000): STR R0, R1, 0H
ENDm SplitPiece;
0307m(8FE00000): LDR LNK, SP, 0H
0308m(4EE80014): ADD SP, SP, 14H
0309m(C700000F): B LNK
PROCEDURE Save* (T: Text; beg, end: LONGINT; B: Buffer);
VAR p, q, qb, qe: Piece; org: LONGINT;
BEGINn
030An .PROC 11
030An(4EE90028): SUB SP, SP, 28H
030Bn(AFE00000): STR LNK, SP, 0H
030Cn(A0E00004): STR R0, SP, 4H
030Dn(A1E00008): STR R1, SP, 8H
030En(A2E0000C): STR R2, SP, CH
030Fn(A3E00010): STR R3, SP, 10H
IF end > T.leno THENp end := T.lenq ENDr;
0310o(80E00004): LDR R0, SP, 4H
0311o(D118AC4C): BLEQ MT [trap=4, pos=6316]
0312p(81E0000C): LDR R1, SP, CH
0313p(80000000): LDR R0, R0, 0H
0314p(01190000): SUB R1, R1, R0
0315p(E6000004): BLE 4 [031AH]
0316q(80E00004): LDR R0, SP, 4H
0317q(D118BE4C): BLEQ MT [trap=4, pos=6334]
0318r(80000000): LDR R0, R0, 0H
0319r(A0E0000C): STR R0, SP, CH
FindPiece(T,s beg,t org,u p)v;w
031As(80E00004): LDR R0, SP, 4H
031Bt(81E00008): LDR R1, SP, 8H
031Cu(42E80024): ADD R2, SP, 24H
031Dv(43E80014): ADD R3, SP, 14H
031Ew(F7FFFF45): BL -187 [0264H]
NEW(qb);x qb^ :=y p^;z
031Fx(40E8001C): ADD R0, SP, 1CH
0320x .FIXUP D
0320x(8D000063): LDR SB, MT, MOD0 [Texts]
0321x(41D80000): ADD R1, SB, 0H [data]
0322x(D718EF0C): BL MT [trap=0, pos=6383]
0323y(80E0001C): LDR R0, SP, 1CH
0324y(D118F64C): BLEQ MT [trap=4, pos=6390]
0325z(81E00014): LDR R1, SP, 14H
0326z(D118FA4C): BLEQ MT [trap=4, pos=6394]
0327z(42000008): MOV R2, R0, 8H
0328z(83100000): LDR R3, R1, 0H
0329z(41180004): ADD R1, R1, 4H
032Az(A3000000): STR R3, R0, 0H
032Bz(40080004): ADD R0, R0, 4H
032Cz(42290001): SUB R2, R2, 1H
032Dz(E9FFFFFA): BNE -6 [0328H]
qb.lena := qb.lenb - (beg - org)c;d
032Ea(80E0001C): LDR R0, SP, 1CH
032Fa(D119054C): BLEQ MT [trap=4, pos=6405]
0330b(81E0001C): LDR R1, SP, 1CH
0331b(D1190F4C): BLEQ MT [trap=4, pos=6415]
0332c(82E00008): LDR R2, SP, 8H
0333c(83E00024): LDR R3, SP, 24H
0334c(02290003): SUB R2, R2, R3
0335d(81100008): LDR R1, R1, 8H
0336d(01190002): SUB R1, R1, R2
0337d(A1000008): STR R1, R0, 8H
qb.offe := qb.offf + (beg - org)g;h
0338e(80E0001C): LDR R0, SP, 1CH
0339e(D119294C): BLEQ MT [trap=4, pos=6441]
033Af(81E0001C): LDR R1, SP, 1CH
033Bf(D119334C): BLEQ MT [trap=4, pos=6451]
033Cg(82E00008): LDR R2, SP, 8H
033Dg(83E00024): LDR R3, SP, 24H
033Eg(02290003): SUB R2, R2, R3
033Fh(81100004): LDR R1, R1, 4H
0340h(01180002): ADD R1, R1, R2
0341h(A1000004): STR R1, R0, 4H
qe := qb;i
0342i(80E0001C): LDR R0, SP, 1CH
0343i(A0E00020): STR R0, SP, 20H
WHILE end > org + p.lenj DOk
0344j(80E00014): LDR R0, SP, 14H
0345j(D1196C4C): BLEQ MT [trap=4, pos=6508]
0346k(81E00024): LDR R1, SP, 24H
0347k(80000008): LDR R0, R0, 8H
0348k(00180000): ADD R0, R1, R0
0349k(81E0000C): LDR R1, SP, CH
034Ak(01190000): SUB R1, R1, R0
034Bk(E6000024): BLE 36 [0370H]
org := org + p.lenl;m p := p.nextn;o
034Cl(80E00014): LDR R0, SP, 14H
034Dl(D119894C): BLEQ MT [trap=4, pos=6537]
034Em(81E00024): LDR R1, SP, 24H
034Fm(80000008): LDR R0, R0, 8H
0350m(00180000): ADD R0, R1, R0
0351m(A0E00024): STR R0, SP, 24H
0352n(80E00014): LDR R0, SP, 14H
0353n(D119964C): BLEQ MT [trap=4, pos=6550]
0354o(8000001C): LDR R0, R0, 1CH
0355o(A0E00014): STR R0, SP, 14H
NEW(q);p q^ :=q p^;r qe.nexts := q;t q.prevu := qe;v qe := q
0356p(40E80018): ADD R0, SP, 18H
0357p .FIXUP D
0357p(8D000037): LDR SB, MT, MOD0 [Texts]
0358p(41D80000): ADD R1, SB, 0H [data]
0359p(D719A50C): BL MT [trap=0, pos=6565]
035Aq(80E00018): LDR R0, SP, 18H
035Bq(D119AB4C): BLEQ MT [trap=4, pos=6571]
035Cr(81E00014): LDR R1, SP, 14H
035Dr(D119AF4C): BLEQ MT [trap=4, pos=6575]
035Er(42000008): MOV R2, R0, 8H
035Fr(83100000): LDR R3, R1, 0H
0360r(41180004): ADD R1, R1, 4H
0361r(A3000000): STR R3, R0, 0H
0362r(40080004): ADD R0, R0, 4H
0363r(42290001): SUB R2, R2, 1H
0364r(E9FFFFFA): BNE -6 [035FH]
0365s(80E00020): LDR R0, SP, 20H
0366s(D119B74C): BLEQ MT [trap=4, pos=6583]
0367t(81E00018): LDR R1, SP, 18H
0368t(A100001C): STR R1, R0, 1CH
0369u(80E00018): LDR R0, SP, 18H
036Au(D119C44C): BLEQ MT [trap=4, pos=6596]
036Bv(81E00020): LDR R1, SP, 20H
036Cv(A1000018): STR R1, R0, 18H
ENDw;
036Dw(80E00018): LDR R0, SP, 18H
036Ew(A0E00020): STR R0, SP, 20H
036Fw(E7FFFFD4): B -44 [0344H]
qe.nextx := NIL;y qe.lenz := qe.lena - (org + p.lenb -c end)d;e
0370x(80E00020): LDR R0, SP, 20H
0371x(D119E84C): BLEQ MT [trap=4, pos=6632]
0372y(41000000): MOV R1, R0, 0H
0373y(A100001C): STR R1, R0, 1CH
0374z(80E00020): LDR R0, SP, 20H
0375z(D119F74C): BLEQ MT [trap=4, pos=6647]
0376a(81E00020): LDR R1, SP, 20H
0377a(D11A014C): BLEQ MT [trap=4, pos=6657]
0378b(82E00014): LDR R2, SP, 14H
0379b(D11A104C): BLEQ MT [trap=4, pos=6672]
037Ac(83E00024): LDR R3, SP, 24H
037Bc(82200008): LDR R2, R2, 8H
037Cc(02380002): ADD R2, R3, R2
037Dd(83E0000C): LDR R3, SP, CH
037Ed(02290003): SUB R2, R2, R3
037Fe(81100008): LDR R1, R1, 8H
0380e(01190002): SUB R1, R1, R2
0381e(A1000008): STR R1, R0, 8H
B.lastf.nextg := qb;h qb.previ := B.lastj;k B.lastl := qe;m
0382f(80E00010): LDR R0, SP, 10H
0383f(D11A234C): BLEQ MT [trap=4, pos=6691]
0384g(80000008): LDR R0, R0, 8H
0385g(D11A284C): BLEQ MT [trap=4, pos=6696]
0386h(81E0001C): LDR R1, SP, 1CH
0387h(A100001C): STR R1, R0, 1CH
0388i(80E0001C): LDR R0, SP, 1CH
0389i(D11A374C): BLEQ MT [trap=4, pos=6711]
038Aj(81E00010): LDR R1, SP, 10H
038Bj(D11A414C): BLEQ MT [trap=4, pos=6721]
038Ck(81100008): LDR R1, R1, 8H
038Dk(A1000018): STR R1, R0, 18H
038El(80E00010): LDR R0, SP, 10H
038Fl(D11A494C): BLEQ MT [trap=4, pos=6729]
0390m(81E00020): LDR R1, SP, 20H
0391m(A1000008): STR R1, R0, 8H
B.lenn := B.leno + (end - beg)p
0392n(80E00010): LDR R0, SP, 10H
0393n(D11A5A4C): BLEQ MT [trap=4, pos=6746]
0394o(81E00010): LDR R1, SP, 10H
0395o(D11A634C): BLEQ MT [trap=4, pos=6755]
0396p(82E0000C): LDR R2, SP, CH
0397p(83E00008): LDR R3, SP, 8H
0398p(02290003): SUB R2, R2, R3
ENDq Save;
0399q(81100000): LDR R1, R1, 0H
039Aq(01180002): ADD R1, R1, R2
039Bq(A1000000): STR R1, R0, 0H
039Cq(8FE00000): LDR LNK, SP, 0H
039Dq(4EE80028): ADD SP, SP, 28H
039Eq(C700000F): B LNK
PROCEDURE Copy* (SB, DB: Buffer);
VAR Q, q, p: Piece;
BEGINr p := SB.headers;t Q := DB.lastu;v
039Fr .PROC 12
039Fr(4EE90018): SUB SP, SP, 18H
03A0r(AFE00000): STR LNK, SP, 0H
03A1r(A0E00004): STR R0, SP, 4H
03A2r(A1E00008): STR R1, SP, 8H
03A3s(80E00004): LDR R0, SP, 4H
03A4s(D11AD14C): BLEQ MT [trap=4, pos=6865]
03A5t(80000004): LDR R0, R0, 4H
03A6t(A0E00014): STR R0, SP, 14H
03A7u(80E00008): LDR R0, SP, 8H
03A8u(D11ADF4C): BLEQ MT [trap=4, pos=6879]
03A9v(80000008): LDR R0, R0, 8H
03AAv(A0E0000C): STR R0, SP, CH
WHILE p # SB.lastw DOx p := p.nexty;z
03ABw(80E00004): LDR R0, SP, 4H
03ACw(D11AF64C): BLEQ MT [trap=4, pos=6902]
03ADx(81E00014): LDR R1, SP, 14H
03AEx(80000008): LDR R0, R0, 8H
03AFx(01190000): SUB R1, R1, R0
03B0x(E100001E): BEQ 30 [03CFH]
03B1y(80E00014): LDR R0, SP, 14H
03B2y(D11B054C): BLEQ MT [trap=4, pos=6917]
03B3z(8000001C): LDR R0, R0, 1CH
03B4z(A0E00014): STR R0, SP, 14H
NEW(q);a q^ :=b p^;c Q.nextd := q;e q.prevf := Q;g Q := q
03B5a(40E80010): ADD R0, SP, 10H
03B6a .FIXUP D
03B6a(8D00005F): LDR SB, MT, MOD0 [Texts]
03B7a(41D80000): ADD R1, SB, 0H [data]
03B8a(D71B140C): BL MT [trap=0, pos=6932]
03B9b(80E00010): LDR R0, SP, 10H
03BAb(D11B1A4C): BLEQ MT [trap=4, pos=6938]
03BBc(81E00014): LDR R1, SP, 14H
03BCc(D11B1E4C): BLEQ MT [trap=4, pos=6942]
03BDc(42000008): MOV R2, R0, 8H
03BEc(83100000): LDR R3, R1, 0H
03BFc(41180004): ADD R1, R1, 4H
03C0c(A3000000): STR R3, R0, 0H
03C1c(40080004): ADD R0, R0, 4H
03C2c(42290001): SUB R2, R2, 1H
03C3c(E9FFFFFA): BNE -6 [03BEH]
03C4d(80E0000C): LDR R0, SP, CH
03C5d(D11B254C): BLEQ MT [trap=4, pos=6949]
03C6e(81E00010): LDR R1, SP, 10H
03C7e(A100001C): STR R1, R0, 1CH
03C8f(80E00010): LDR R0, SP, 10H
03C9f(D11B324C): BLEQ MT [trap=4, pos=6962]
03CAg(81E0000C): LDR R1, SP, CH
03CBg(A1000018): STR R1, R0, 18H
ENDh;
03CCh(80E00010): LDR R0, SP, 10H
03CDh(A0E0000C): STR R0, SP, CH
03CEh(E7FFFFDC): B -36 [03ABH]
DB.lasti := Q;j DB.lenk := DB.lenl + SB.lenm
03CFi(80E00008): LDR R0, SP, 8H
03D0i(D11B544C): BLEQ MT [trap=4, pos=6996]
03D1j(81E0000C): LDR R1, SP, CH
03D2j(A1000008): STR R1, R0, 8H
03D3k(80E00008): LDR R0, SP, 8H
03D4k(D11B614C): BLEQ MT [trap=4, pos=7009]
03D5l(81E00008): LDR R1, SP, 8H
03D6l(D11B6B4C): BLEQ MT [trap=4, pos=7019]
03D7m(82E00004): LDR R2, SP, 4H
03D8m(D11B744C): BLEQ MT [trap=4, pos=7028]
ENDn Copy;
03D9n(81100000): LDR R1, R1, 0H
03DAn(82200000): LDR R2, R2, 0H
03DBn(01180002): ADD R1, R1, R2
03DCn(A1000000): STR R1, R0, 0H
03DDn(8FE00000): LDR LNK, SP, 0H
03DEn(4EE80018): ADD SP, SP, 18H
03DFn(C700000F): B LNK
PROCEDURE Insert* (T: Text; pos: LONGINT; B: Buffer);
VAR pl, pr, p, qb, qe: Piece; org, end: LONGINT;
BEGINo
03E0o .PROC 13
03E0o(4EE9002C): SUB SP, SP, 2CH
03E1o(AFE00000): STR LNK, SP, 0H
03E2o(A0E00004): STR R0, SP, 4H
03E3o(A1E00008): STR R1, SP, 8H
03E4o(A2E0000C): STR R2, SP, CH
FindPiece(T,p pos,q org,r p)s;t SplitPiece(p,u pos - org,v pr)w;x
03E5p(80E00004): LDR R0, SP, 4H
03E6q(81E00008): LDR R1, SP, 8H
03E7r(42E80024): ADD R2, SP, 24H
03E8s(43E80018): ADD R3, SP, 18H
03E9t(F7FFFE7A): BL -390 [0264H]
03EAu(80E00018): LDR R0, SP, 18H
03EBv(81E00008): LDR R1, SP, 8H
03ECv(82E00024): LDR R2, SP, 24H
03EDv(01190002): SUB R1, R1, R2
03EEw(42E80014): ADD R2, SP, 14H
03EFx(F7FFFEC4): BL -316 [02B4H]
IF T.orgy >= org THENz T.orga := org - p.prevb.lenc;d T.pcee := p.prevf ENDg ;
03F0y(80E00004): LDR R0, SP, 4H
03F1y(D11C404C): BLEQ MT [trap=4, pos=7232]
03F2z(80000014): LDR R0, R0, 14H
03F3z(81E00024): LDR R1, SP, 24H
03F4z(00090001): SUB R0, R0, R1
03F5z(E5000010): BLT 16 [0406H]
03F6a(80E00004): LDR R0, SP, 4H
03F7a(D11C524C): BLEQ MT [trap=4, pos=7250]
03F8b(81E00018): LDR R1, SP, 18H
03F9b(D11C624C): BLEQ MT [trap=4, pos=7266]
03FAc(81100018): LDR R1, R1, 18H
03FBc(D11C664C): BLEQ MT [trap=4, pos=7270]
03FCd(82E00024): LDR R2, SP, 24H
03FDd(81100008): LDR R1, R1, 8H
03FEd(01290001): SUB R1, R2, R1
03FFd(A1000014): STR R1, R0, 14H
0400e(80E00004): LDR R0, SP, 4H
0401e(D11C6D4C): BLEQ MT [trap=4, pos=7277]
0402f(81E00018): LDR R1, SP, 18H
0403f(D11C774C): BLEQ MT [trap=4, pos=7287]
0404g(81100018): LDR R1, R1, 18H
0405g(A1000010): STR R1, R0, 10H
pl := pr.prevh;i qb := B.headerj.nextk;l
0406h(80E00014): LDR R0, SP, 14H
0407h(D11C8F4C): BLEQ MT [trap=4, pos=7311]
0408i(80000018): LDR R0, R0, 18H
0409i(A0E00010): STR R0, SP, 10H
040Aj(80E0000C): LDR R0, SP, CH
040Bj(D11C9F4C): BLEQ MT [trap=4, pos=7327]
040Ck(80000004): LDR R0, R0, 4H
040Dk(D11CA44C): BLEQ MT [trap=4, pos=7332]
040El(8000001C): LDR R0, R0, 1CH
040Fl(A0E0001C): STR R0, SP, 1CH
IF (qb # NIL)m & (nqb.fo = pl.fp)q & (rqb.offs = pl.offt + pl.lenu)v
0410m(80E0001C): LDR R0, SP, 1CH
0411n(E100003A): BEQ 58 [044CH]
0412o(80E0001C): LDR R0, SP, 1CH
0413o(D11CBF4C): BLEQ MT [trap=4, pos=7359]
0414p(81E00010): LDR R1, SP, 10H
0415p(D11CC64C): BLEQ MT [trap=4, pos=7366]
0416q(80000000): LDR R0, R0, 0H
0417q(81100000): LDR R1, R1, 0H
0418q(00090001): SUB R0, R0, R1
0419r(E9000032): BNE 50 [044CH]
041As(80E0001C): LDR R0, SP, 1CH
041Bs(D11CD14C): BLEQ MT [trap=4, pos=7377]
041Ct(81E00010): LDR R1, SP, 10H
041Dt(D11CDA4C): BLEQ MT [trap=4, pos=7386]
041Eu(82E00010): LDR R2, SP, 10H
041Fu(D11CE34C): BLEQ MT [trap=4, pos=7395]
0420v(81100004): LDR R1, R1, 4H
0421v(82200008): LDR R2, R2, 8H
0422v(01180002): ADD R1, R1, R2
0423v(80000004): LDR R0, R0, 4H
0424v(00090001): SUB R0, R0, R1
& (wqb.fntx = pl.fnty)z & (aqb.colb = pl.colc)d & (eqb.vofff = pl.voffg)h THENi
0425w(E9000026): BNE 38 [044CH]
0426x(80E0001C): LDR R0, SP, 1CH
0427x(D11CF64C): BLEQ MT [trap=4, pos=7414]
0428y(81E00010): LDR R1, SP, 10H
0429y(D11CFF4C): BLEQ MT [trap=4, pos=7423]
042Az(8000000C): LDR R0, R0, CH
042Bz(8110000C): LDR R1, R1, CH
042Cz(00090001): SUB R0, R0, R1
042Da(E900001E): BNE 30 [044CH]
042Eb(80E0001C): LDR R0, SP, 1CH
042Fb(D11D0A4C): BLEQ MT [trap=4, pos=7434]
0430c(81E00010): LDR R1, SP, 10H
0431c(D11D134C): BLEQ MT [trap=4, pos=7443]
0432d(80000010): LDR R0, R0, 10H
0433d(81100010): LDR R1, R1, 10H
0434d(00090001): SUB R0, R0, R1
0435e(E9000016): BNE 22 [044CH]
0436f(80E0001C): LDR R0, SP, 1CH
0437f(D11D1F4C): BLEQ MT [trap=4, pos=7455]
0438g(81E00010): LDR R1, SP, 10H
0439g(D11D294C): BLEQ MT [trap=4, pos=7465]
043Ah(80000014): LDR R0, R0, 14H
043Bh(81100014): LDR R1, R1, 14H
043Ch(00090001): SUB R0, R0, R1
043Di(E900000E): BNE 14 [044CH]
pl.lenj := pl.lenk + qb.lenl;m qb := qb.nextn
043Ej(80E00010): LDR R0, SP, 10H
043Fj(D11D3C4C): BLEQ MT [trap=4, pos=7484]
0440k(81E00010): LDR R1, SP, 10H
0441k(D11D464C): BLEQ MT [trap=4, pos=7494]
0442l(82E0001C): LDR R2, SP, 1CH
0443l(D11D4F4C): BLEQ MT [trap=4, pos=7503]
0444m(81100008): LDR R1, R1, 8H
0445m(82200008): LDR R2, R2, 8H
0446m(01180002): ADD R1, R1, R2
0447m(A1000008): STR R1, R0, 8H
0448n(80E0001C): LDR R0, SP, 1CH
0449n(D11D5E4C): BLEQ MT [trap=4, pos=7518]
ENDo;
044Ao(8000001C): LDR R0, R0, 1CH
044Bo(A0E0001C): STR R0, SP, 1CH
IF qb # NIL THENp qe := B.lastq;r
044Cp(80E0001C): LDR R0, SP, 1CH
044Dp(E1000014): BEQ 20 [0462H]
044Eq(80E0000C): LDR R0, SP, CH
044Fq(D11D894C): BLEQ MT [trap=4, pos=7561]
0450r(80000008): LDR R0, R0, 8H
0451r(A0E00020): STR R0, SP, 20H
qb.prevs := pl;t pl.nextu := qb;v qe.nextw := pr;x pr.prevy := qe
0452s(80E0001C): LDR R0, SP, 1CH
0453s(D11D984C): BLEQ MT [trap=4, pos=7576]
0454t(81E00010): LDR R1, SP, 10H
0455t(A1000018): STR R1, R0, 18H
0456u(80E00010): LDR R0, SP, 10H
0457u(D11DA74C): BLEQ MT [trap=4, pos=7591]
0458v(81E0001C): LDR R1, SP, 1CH
0459v(A100001C): STR R1, R0, 1CH
045Aw(80E00020): LDR R0, SP, 20H
045Bw(D11DB64C): BLEQ MT [trap=4, pos=7606]
045Cx(81E00014): LDR R1, SP, 14H
045Dx(A100001C): STR R1, R0, 1CH
045Ey(80E00014): LDR R0, SP, 14H
045Fy(D11DC54C): BLEQ MT [trap=4, pos=7621]
ENDz;
0460z(81E00020): LDR R1, SP, 20H
0461z(A1000018): STR R1, R0, 18H
T.lena := T.lenb + B.lenc;d end := pos + B.lene;f
0462a(80E00004): LDR R0, SP, 4H
0463a(D11DDE4C): BLEQ MT [trap=4, pos=7646]
0464b(81E00004): LDR R1, SP, 4H
0465b(D11DE74C): BLEQ MT [trap=4, pos=7655]
0466c(82E0000C): LDR R2, SP, CH
0467c(D11DEF4C): BLEQ MT [trap=4, pos=7663]
0468d(81100000): LDR R1, R1, 0H
0469d(82200000): LDR R2, R2, 0H
046Ad(01180002): ADD R1, R1, R2
046Bd(A1000000): STR R1, R0, 0H
046Ce(80E0000C): LDR R0, SP, CH
046De(D11E034C): BLEQ MT [trap=4, pos=7683]
046Ef(81E00008): LDR R1, SP, 8H
046Ff(80000000): LDR R0, R0, 0H
0470f(00180000): ADD R0, R1, R0
0471f(A0E00028): STR R0, SP, 28H
B.lastg := B.headerh;i B.lastj.nextk := NIL;l B.lenm := 0;n
0472g(80E0000C): LDR R0, SP, CH
0473g(D11E0F4C): BLEQ MT [trap=4, pos=7695]
0474h(81E0000C): LDR R1, SP, CH
0475h(D11E1B4C): BLEQ MT [trap=4, pos=7707]
0476i(81100004): LDR R1, R1, 4H
0477i(A1000008): STR R1, R0, 8H
0478j(80E0000C): LDR R0, SP, CH
0479j(D11E234C): BLEQ MT [trap=4, pos=7715]
047Ak(80000008): LDR R0, R0, 8H
047Bk(D11E284C): BLEQ MT [trap=4, pos=7720]
047Cl(41000000): MOV R1, R0, 0H
047Dl(A100001C): STR R1, R0, 1CH
047Em(80E0000C): LDR R0, SP, CH
047Fm(D11E364C): BLEQ MT [trap=4, pos=7734]
0480n(41000000): MOV R1, R0, 0H
0481n(A1000000): STR R1, R0, 0H
T.changedo := TRUE;p T.notifyq(Tr,s insert,t pos,u end)v
0482o(80E00004): LDR R0, SP, 4H
0483o(D11E4A4C): BLEQ MT [trap=4, pos=7754]
0484p(41000001): MOV R1, R0, 1H
0485p(B1000004): STR R1, R0, 4H
0486q(80E00004): LDR R0, SP, 4H
0487q(D11E5C4C): BLEQ MT [trap=4, pos=7772]
0488r(80000008): LDR R0, R0, 8H
0489r(4EE90004): SUB SP, SP, 4H
048Ar(A0E00000): STR R0, SP, 0H
048Bs(80E00008): LDR R0, SP, 8H
048Ct(41000001): MOV R1, R0, 1H
048Du(82E0000C): LDR R2, SP, CH
048Ev(83E0002C): LDR R3, SP, 2CH
ENDw Insert;
048Fw(84E00000): LDR R4, SP, 0H
0490w(4EE80004): ADD SP, SP, 4H
0491w(D11E775C): BLEQ MT [trap=5, pos=7799]
0492w(D7000004): BL R4
0493w(8FE00000): LDR LNK, SP, 0H
0494w(4EE8002C): ADD SP, SP, 2CH
0495w(C700000F): B LNK
PROCEDURE Append* (T: Text; B: Buffer);
BEGINx Insert(T,y T.lenz,a B)b
0496x .PROC 14
0496x(4EE9000C): SUB SP, SP, CH
0497x(AFE00000): STR LNK, SP, 0H
0498x(A0E00004): STR R0, SP, 4H
0499x(A1E00008): STR R1, SP, 8H
049Ay(80E00004): LDR R0, SP, 4H
049Bz(81E00004): LDR R1, SP, 4H
049Cz(D11EC24C): BLEQ MT [trap=4, pos=7874]
049Da(81100000): LDR R1, R1, 0H
049Eb(82E00008): LDR R2, SP, 8H
ENDc Append;
049Fc(F7FFFF40): BL -192 [03E0H]
04A0c(8FE00000): LDR LNK, SP, 0H
04A1c(4EE8000C): ADD SP, SP, CH
04A2c(C700000F): B LNK
PROCEDURE Delete* (T: Text; beg, end: LONGINT; B: Buffer);
VAR pb, pe, pbr, per: Piece; orgb, orge: LONGINT;
BEGINd
04A3d .PROC 15
04A3d(4EE9002C): SUB SP, SP, 2CH
04A4d(AFE00000): STR LNK, SP, 0H
04A5d(A0E00004): STR R0, SP, 4H
04A6d(A1E00008): STR R1, SP, 8H
04A7d(A2E0000C): STR R2, SP, CH
04A8d(A3E00010): STR R3, SP, 10H
IF end > T.lene THENf end := T.leng ENDh;
04A9e(80E00004): LDR R0, SP, 4H
04AAe(D11F634C): BLEQ MT [trap=4, pos=8035]
04ABf(81E0000C): LDR R1, SP, CH
04ACf(80000000): LDR R0, R0, 0H
04ADf(01190000): SUB R1, R1, R0
04AEf(E6000004): BLE 4 [04B3H]
04AFg(80E00004): LDR R0, SP, 4H
04B0g(D11F754C): BLEQ MT [trap=4, pos=8053]
04B1h(80000000): LDR R0, R0, 0H
04B2h(A0E0000C): STR R0, SP, CH
FindPiece(T,i beg,j orgb,k pb)l;m SplitPiece(pb,n beg - orgb,o pbr)p;q
04B3i(80E00004): LDR R0, SP, 4H
04B4j(81E00008): LDR R1, SP, 8H
04B5k(42E80024): ADD R2, SP, 24H
04B6l(43E80014): ADD R3, SP, 14H
04B7m(F7FFFDAC): BL -596 [0264H]
04B8n(80E00014): LDR R0, SP, 14H
04B9o(81E00008): LDR R1, SP, 8H
04BAo(82E00024): LDR R2, SP, 24H
04BBo(01190002): SUB R1, R1, R2
04BCp(42E8001C): ADD R2, SP, 1CH
04BDq(F7FFFDF6): BL -522 [02B4H]
FindPiece(T,r end,s orge,t pe)u;v
04BEr(80E00004): LDR R0, SP, 4H
04BFs(81E0000C): LDR R1, SP, CH
04C0t(42E80028): ADD R2, SP, 28H
04C1u(43E80018): ADD R3, SP, 18H
04C2v(F7FFFDA1): BL -607 [0264H]
SplitPiece(pe,w end - orge,x per)y;z
04C3w(80E00018): LDR R0, SP, 18H
04C4x(81E0000C): LDR R1, SP, CH
04C5x(82E00028): LDR R2, SP, 28H
04C6x(01190002): SUB R1, R1, R2
04C7y(42E80020): ADD R2, SP, 20H
04C8z(F7FFFDEB): BL -533 [02B4H]
IF T.orga >= orgb THENb (*adjust cache*)
04C9a(80E00004): LDR R0, SP, 4H
04CAa(D1200F4C): BLEQ MT [trap=4, pos=8207]
04CBb(80000014): LDR R0, R0, 14H
04CCb(81E00024): LDR R1, SP, 24H
04CDb(00090001): SUB R0, R0, R1
04CEb(E5000010): BLT 16 [04DFH]
T.orgc := orgb - pb.prevd.lene;f T.pceg := pb.prevh
04CFc(80E00004): LDR R0, SP, 4H
04D0c(D120394C): BLEQ MT [trap=4, pos=8249]
04D1d(81E00014): LDR R1, SP, 14H
04D2d(D1204B4C): BLEQ MT [trap=4, pos=8267]
04D3e(81100018): LDR R1, R1, 18H
04D4e(D1204F4C): BLEQ MT [trap=4, pos=8271]
04D5f(82E00024): LDR R2, SP, 24H
04D6f(81100008): LDR R1, R1, 8H
04D7f(01290001): SUB R1, R2, R1
04D8f(A1000014): STR R1, R0, 14H
04D9g(80E00004): LDR R0, SP, 4H
04DAg(D120564C): BLEQ MT [trap=4, pos=8278]
04DBh(81E00014): LDR R1, SP, 14H
04DCh(D120614C): BLEQ MT [trap=4, pos=8289]
ENDi;
04DDi(81100018): LDR R1, R1, 18H
04DEi(A1000010): STR R1, R0, 10H
B.headerj.nextk := pbr;l B.lastm := per.prevn;o
04DFj(80E00010): LDR R0, SP, 10H
04E0j(D120774C): BLEQ MT [trap=4, pos=8311]
04E1k(80000004): LDR R0, R0, 4H
04E2k(D1207C4C): BLEQ MT [trap=4, pos=8316]
04E3l(81E0001C): LDR R1, SP, 1CH
04E4l(A100001C): STR R1, R0, 1CH
04E5m(80E00010): LDR R0, SP, 10H
04E6m(D1208B4C): BLEQ MT [trap=4, pos=8331]
04E7n(81E00020): LDR R1, SP, 20H
04E8n(D120974C): BLEQ MT [trap=4, pos=8343]
04E9o(81100018): LDR R1, R1, 18H
04EAo(A1000008): STR R1, R0, 8H
B.lastp.nextq := NIL;r B.lens := end - beg;t
04EBp(80E00010): LDR R0, SP, 10H
04ECp(D120A34C): BLEQ MT [trap=4, pos=8355]
04EDq(80000008): LDR R0, R0, 8H
04EEq(D120A84C): BLEQ MT [trap=4, pos=8360]
04EFr(41000000): MOV R1, R0, 0H
04F0r(A100001C): STR R1, R0, 1CH
04F1s(80E00010): LDR R0, SP, 10H
04F2s(D120B64C): BLEQ MT [trap=4, pos=8374]
04F3t(81E0000C): LDR R1, SP, CH
04F4t(82E00008): LDR R2, SP, 8H
04F5t(01190002): SUB R1, R1, R2
04F6t(A1000000): STR R1, R0, 0H
per.prevu := pbr.prevv;w pbr.prevx.nexty := per;z
04F7u(80E00020): LDR R0, SP, 20H
04F8u(D120D14C): BLEQ MT [trap=4, pos=8401]
04F9v(81E0001C): LDR R1, SP, 1CH
04FAv(D120DD4C): BLEQ MT [trap=4, pos=8413]
04FBw(81100018): LDR R1, R1, 18H
04FCw(A1000018): STR R1, R0, 18H
04FDx(80E0001C): LDR R0, SP, 1CH
04FEx(D120E74C): BLEQ MT [trap=4, pos=8423]
04FFy(80000018): LDR R0, R0, 18H
0500y(D120EC4C): BLEQ MT [trap=4, pos=8428]
0501z(81E00020): LDR R1, SP, 20H
0502z(A100001C): STR R1, R0, 1CH
T.lena := T.lenb - B.lenc;d
0503a(80E00004): LDR R0, SP, 4H
0504a(D120FE4C): BLEQ MT [trap=4, pos=8446]
0505b(81E00004): LDR R1, SP, 4H
0506b(D121074C): BLEQ MT [trap=4, pos=8455]
0507c(82E00010): LDR R2, SP, 10H
0508c(D1210F4C): BLEQ MT [trap=4, pos=8463]
0509d(81100000): LDR R1, R1, 0H
050Ad(82200000): LDR R2, R2, 0H
050Bd(01190002): SUB R1, R1, R2
050Cd(A1000000): STR R1, R0, 0H
T.changede := TRUE;f T.notifyg(Th,i delete,j beg,k end)l
050De(80E00004): LDR R0, SP, 4H
050Ee(D1211E4C): BLEQ MT [trap=4, pos=8478]
050Ff(41000001): MOV R1, R0, 1H
0510f(B1000004): STR R1, R0, 4H
0511g(80E00004): LDR R0, SP, 4H
0512g(D121304C): BLEQ MT [trap=4, pos=8496]
0513h(80000008): LDR R0, R0, 8H
0514h(4EE90004): SUB SP, SP, 4H
0515h(A0E00000): STR R0, SP, 0H
0516i(80E00008): LDR R0, SP, 8H
0517j(41000002): MOV R1, R0, 2H
0518k(82E0000C): LDR R2, SP, CH
0519l(83E00010): LDR R3, SP, 10H
ENDm Delete;
051Am(84E00000): LDR R4, SP, 0H
051Bm(4EE80004): ADD SP, SP, 4H
051Cm(D1214B5C): BLEQ MT [trap=5, pos=8523]
051Dm(D7000004): BL R4
051Em(8FE00000): LDR LNK, SP, 0H
051Fm(4EE8002C): ADD SP, SP, 2CH
0520m(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
0521n .PROC 16
0521n(4EE90030): SUB SP, SP, 30H
0522n(AFE00000): STR LNK, SP, 0H
0523n(A0E00004): STR R0, SP, 4H
0524n(A1E00008): STR R1, SP, 8H
0525n(A2E0000C): STR R2, SP, CH
0526n(A3E00010): STR R3, SP, 10H
0527n(A4E00014): STR R4, SP, 14H
0528n(A5E00018): STR R5, SP, 18H
0529n(A6E0001C): STR R6, SP, 1CH
IF end > T.leno THENp end := T.lenq ENDr;
052Ao(80E00004): LDR R0, SP, 4H
052Bo(D121FD4C): BLEQ MT [trap=4, pos=8701]
052Cp(81E0000C): LDR R1, SP, CH
052Dp(80000000): LDR R0, R0, 0H
052Ep(01190000): SUB R1, R1, R0
052Fp(E6000004): BLE 4 [0534H]
0530q(80E00004): LDR R0, SP, 4H
0531q(D1220F4C): BLEQ MT [trap=4, pos=8719]
0532r(80000000): LDR R0, R0, 0H
0533r(A0E0000C): STR R0, SP, CH
FindPiece(T,s beg,t org,u p)v;w SplitPiece(p,x beg - org,y pb)z;a
0534s(80E00004): LDR R0, SP, 4H
0535t(81E00008): LDR R1, SP, 8H
0536u(42E8002C): ADD R2, SP, 2CH
0537v(43E80028): ADD R3, SP, 28H
0538w(F7FFFD2B): BL -725 [0264H]
0539x(80E00028): LDR R0, SP, 28H
053Ay(81E00008): LDR R1, SP, 8H
053By(82E0002C): LDR R2, SP, 2CH
053Cy(01190002): SUB R1, R1, R2
053Dz(42E80020): ADD R2, SP, 20H
053Ea(F7FFFD75): BL -651 [02B4H]
FindPiece(T,b end,c org,d p)e;f SplitPiece(p,g end - org,h pe)i;j
053Fb(80E00004): LDR R0, SP, 4H
0540c(81E0000C): LDR R1, SP, CH
0541d(42E8002C): ADD R2, SP, 2CH
0542e(43E80028): ADD R3, SP, 28H
0543f(F7FFFD20): BL -736 [0264H]
0544g(80E00028): LDR R0, SP, 28H
0545h(81E0000C): LDR R1, SP, CH
0546h(82E0002C): LDR R2, SP, 2CH
0547h(01190002): SUB R1, R1, R2
0548i(42E80024): ADD R2, SP, 24H
0549j(F7FFFD6A): BL -662 [02B4H]
p := pb;k
054Ak(80E00020): LDR R0, SP, 20H
054Bk(A0E00028): STR R0, SP, 28H
REPEAT
IF 0 IN sel THENl p.fntm := fnt ENDn;
054Cl(80E00010): LDR R0, SP, 10H
054Dl(40030001): ROR R0, R0, 1H
054El(E8000004): BPL 4 [0553H]
054Fm(80E00028): LDR R0, SP, 28H
0550m(D122C34C): BLEQ MT [trap=4, pos=8899]
0551n(81E00014): LDR R1, SP, 14H
0552n(A100000C): STR R1, R0, CH
IF 1 IN sel THENo p.colp := col ENDq;
0553o(80E00010): LDR R0, SP, 10H
0554o(40030002): ROR R0, R0, 2H
0555o(E8000004): BPL 4 [055AH]
0556p(80E00028): LDR R0, SP, 28H
0557p(D122EC4C): BLEQ MT [trap=4, pos=8940]
0558q(81E00018): LDR R1, SP, 18H
0559q(A1000010): STR R1, R0, 10H
IF 2 IN sel THENr p.voffs := voff ENDt;
055Ar(80E00010): LDR R0, SP, 10H
055Br(40030003): ROR R0, R0, 3H
055Cr(E8000004): BPL 4 [0561H]
055Ds(80E00028): LDR R0, SP, 28H
055Es(D123164C): BLEQ MT [trap=4, pos=8982]
055Ft(81E0001C): LDR R1, SP, 1CH
0560t(A1000014): STR R1, R0, 14H
p := p.nextu
0561u(80E00028): LDR R0, SP, 28H
0562u(D123354C): BLEQ MT [trap=4, pos=9013]
UNTILv p = pe;w
0563v(8000001C): LDR R0, R0, 1CH
0564v(A0E00028): STR R0, SP, 28H
0565w(80E00028): LDR R0, SP, 28H
0566w(81E00024): LDR R1, SP, 24H
0567w(00090001): SUB R0, R0, R1
0568w(E9FFFFE3): BNE -29 [054CH]
T.changedx := TRUE;y T.notifyz(Ta,b replace,c beg,d end)e
0569x(80E00004): LDR R0, SP, 4H
056Ax(D123554C): BLEQ MT [trap=4, pos=9045]
056By(41000001): MOV R1, R0, 1H
056Cy(B1000004): STR R1, R0, 4H
056Dz(80E00004): LDR R0, SP, 4H
056Ez(D123674C): BLEQ MT [trap=4, pos=9063]
056Fa(80000008): LDR R0, R0, 8H
0570a(4EE90004): SUB SP, SP, 4H
0571a(A0E00000): STR R0, SP, 0H
0572b(80E00008): LDR R0, SP, 8H
0573c(41000000): MOV R1, R0, 0H
0574d(82E0000C): LDR R2, SP, CH
0575e(83E00010): LDR R3, SP, 10H
ENDf ChangeLooks;
0576f(84E00000): LDR R4, SP, 0H
0577f(4EE80004): ADD SP, SP, 4H
0578f(D123835C): BLEQ MT [trap=5, pos=9091]
0579f(D7000004): BL R4
057Af(8FE00000): LDR LNK, SP, 0H
057Bf(4EE80030): ADD SP, SP, 30H
057Cf(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
057Dg .PROC 17
057Dg(4EE90020): SUB SP, SP, 20H
057Eg(AFE00000): STR LNK, SP, 0H
057Fg(A0E00004): STR R0, SP, 4H
0580g(A1E00008): STR R1, SP, 8H
0581g(A2E0000C): STR R2, SP, CH
0582g(A3E00010): STR R3, SP, 10H
0583g(A4E00014): STR R4, SP, 14H
0584h(80E00004): LDR R0, SP, 4H
0585i(81E00008): LDR R1, SP, 8H
0586j(42E8001C): ADD R2, SP, 1CH
0587k(43E80018): ADD R3, SP, 18H
0588l(F7FFFCDB): BL -805 [0264H]
0589m(80E00018): LDR R0, SP, 18H
058Am(D1243E4C): BLEQ MT [trap=4, pos=9278]
058Bn(8000000C): LDR R0, R0, CH
058Cn(81E0000C): LDR R1, SP, CH
058Dn(A0100000): STR R0, R1, 0H
058Eo(80E00018): LDR R0, SP, 18H
058Fo(D1244C4C): BLEQ MT [trap=4, pos=9292]
0590p(80000010): LDR R0, R0, 10H
0591p(81E00010): LDR R1, SP, 10H
0592p(A0100000): STR R0, R1, 0H
0593q(80E00018): LDR R0, SP, 18H
0594q(D1245C4C): BLEQ MT [trap=4, pos=9308]
ENDr Attributes;
0595r(80000014): LDR R0, R0, 14H
0596r(81E00014): LDR R1, SP, 14H
0597r(A0100000): STR R0, R1, 0H
0598r(8FE00000): LDR LNK, SP, 0H
0599r(4EE80020): ADD SP, SP, 20H
059Ar(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
059Bs .PROC 18
059Bs(4EE9001C): SUB SP, SP, 1CH
059Cs(AFE00000): STR LNK, SP, 0H
059Ds(A0E00004): STR R0, SP, 4H
059Es(A1E00008): STR R1, SP, 8H
059Fs(A2E0000C): STR R2, SP, CH
05A0s(A3E00010): STR R3, SP, 10H
05A1t(80E0000C): LDR R0, SP, CH
05A2u(81E00010): LDR R1, SP, 10H
05A3v(42E80018): ADD R2, SP, 18H
05A4w(43E80014): ADD R3, SP, 14H
05A5x(F7FFFCBE): BL -834 [0264H]
R.ref := p;y R.org := org;z R.off := pos - org;a
05A6y(80E00014): LDR R0, SP, 14H
05A7y(81E00004): LDR R1, SP, 4H
05A8y(A0100010): STR R0, R1, 10H
05A9z(80E00018): LDR R0, SP, 18H
05AAz(81E00004): LDR R1, SP, 4H
05ABz(A0100014): STR R0, R1, 14H
05ACa(80E00010): LDR R0, SP, 10H
05ADa(81E00018): LDR R1, SP, 18H
05AEa(00090001): SUB R0, R0, R1
05AFa(81E00004): LDR R1, SP, 4H
05B0a(A0100018): STR R0, R1, 18H
Files.Set(R.rider,b p.fc,d p.offe + R.off)f;g R.eot := FALSE
05B1b(80E00004): LDR R0, SP, 4H
05B2b(4008001C): ADD R0, R0, 1CH
05B3b(81E00008): LDR R1, SP, 8H
05B4c(82E00014): LDR R2, SP, 14H
05B5c(D125854C): BLEQ MT [trap=4, pos=9605]
05B6d(82200000): LDR R2, R2, 0H
05B7e(83E00014): LDR R3, SP, 14H
05B8e(D1258C4C): BLEQ MT [trap=4, pos=9612]
05B9f(83300004): LDR R3, R3, 4H
05BAf(84E00004): LDR R4, SP, 4H
05BBf(84400018): LDR R4, R4, 18H
05BCf(03380004): ADD R3, R3, R4
05BDg .FIXUP P
05BDg(F710B373): BL MOD1 [Files] PROC11
ENDh OpenReader;
05BEh(40000000): MOV R0, R0, 0H
05BFh(81E00004): LDR R1, SP, 4H
05C0h(B0100000): STR R0, R1, 0H
05C1h(8FE00000): LDR LNK, SP, 0H
05C2h(4EE8001C): ADD SP, SP, 1CH
05C3h(C700000F): B LNK
PROCEDURE Read* (VAR R: Reader; VAR ch: CHAR);
BEGINi Files.Read(R.rider,j ch)k;l
05C4i .PROC 19
05C4i(4EE90010): SUB SP, SP, 10H
05C5i(AFE00000): STR LNK, SP, 0H
05C6i(A0E00004): STR R0, SP, 4H
05C7i(A1E00008): STR R1, SP, 8H
05C8i(A2E0000C): STR R2, SP, CH
05C9j(80E00004): LDR R0, SP, 4H
05CAj(4008001C): ADD R0, R0, 1CH
05CBj(81E00008): LDR R1, SP, 8H
05CCk(82E0000C): LDR R2, SP, CH
05CDl .FIXUP P
05CDl(F7110010): BL MOD1 [Files] PROC16
R.fnt := R.ref.fntm;n R.col := R.ref.colo;p R.voff := R.ref.voffq;r
05CEm(80E00004): LDR R0, SP, 4H
05CFm(80000010): LDR R0, R0, 10H
05D0m(D126214C): BLEQ MT [trap=4, pos=9761]
05D1n(8000000C): LDR R0, R0, CH
05D2n(81E00004): LDR R1, SP, 4H
05D3n(A0100004): STR R0, R1, 4H
05D4o(80E00004): LDR R0, SP, 4H
05D5o(80000010): LDR R0, R0, 10H
05D6o(D126354C): BLEQ MT [trap=4, pos=9781]
05D7p(80000010): LDR R0, R0, 10H
05D8p(81E00004): LDR R1, SP, 4H
05D9p(A0100008): STR R0, R1, 8H
05DAq(80E00004): LDR R0, SP, 4H
05DBq(80000010): LDR R0, R0, 10H
05DCq(D1264B4C): BLEQ MT [trap=4, pos=9803]
05DDr(80000014): LDR R0, R0, 14H
05DEr(81E00004): LDR R1, SP, 4H
05DFr(A010000C): STR R0, R1, CH
INC(R.off);s
05E0s(80E00004): LDR R0, SP, 4H
05E1s(40080018): ADD R0, R0, 18H
05E2s(81000000): LDR R1, R0, 0H
05E3s(41180001): ADD R1, R1, 1H
05E4s(A1000000): STR R1, R0, 0H
IF R.off = R.ref.lent THENu
05E5t(80E00004): LDR R0, SP, 4H
05E6t(80000010): LDR R0, R0, 10H
05E7t(D126754C): BLEQ MT [trap=4, pos=9845]
05E8u(81E00004): LDR R1, SP, 4H
05E9u(81100018): LDR R1, R1, 18H
05EAu(80000008): LDR R0, R0, 8H
05EBu(01190000): SUB R1, R1, R0
05ECu(E9000031): BNE 49 [061EH]
IF R.ref.fv = TrailerFile THENw R.eot := TRUE ENDx;
05EDv(80E00004): LDR R0, SP, 4H
05EEv(80000010): LDR R0, R0, 10H
05EFv(D1268B4C): BLEQ MT [trap=4, pos=9867]
05F0w(80000000): LDR R0, R0, 0H
05F1w .FIXUP D
05F1w(8D00023B): LDR SB, MT, MOD0 [Texts]
05F2w(81D000C8): LDR R1, SB, C8H [data]
05F3w(00090001): SUB R0, R0, R1
05F4w(E9000003): BNE 3 [05F8H]
05F5x(40000001): MOV R0, R0, 1H
05F6x(81E00004): LDR R1, SP, 4H
05F7x(B0100000): STR R0, R1, 0H
R.org := R.org + R.off;y R.off := 0;z
05F8y(80E00004): LDR R0, SP, 4H
05F9y(80000014): LDR R0, R0, 14H
05FAy(81E00004): LDR R1, SP, 4H
05FBy(81100018): LDR R1, R1, 18H
05FCy(00080001): ADD R0, R0, R1
05FDy(81E00004): LDR R1, SP, 4H
05FEy(A0100014): STR R0, R1, 14H
05FFz(40000000): MOV R0, R0, 0H
0600z(81E00004): LDR R1, SP, 4H
0601z(A0100018): STR R0, R1, 18H
R.ref := R.ref.nexta;b R.org := R.org + R.off;c R.off := 0;d
0602a(80E00004): LDR R0, SP, 4H
0603a(80000010): LDR R0, R0, 10H
0604a(D126F54C): BLEQ MT [trap=4, pos=9973]
0605b(8000001C): LDR R0, R0, 1CH
0606b(81E00004): LDR R1, SP, 4H
0607b(A0100010): STR R0, R1, 10H
0608c(80E00004): LDR R0, SP, 4H
0609c(80000014): LDR R0, R0, 14H
060Ac(81E00004): LDR R1, SP, 4H
060Bc(81100018): LDR R1, R1, 18H
060Cc(00080001): ADD R0, R0, R1
060Dc(81E00004): LDR R1, SP, 4H
060Ec(A0100014): STR R0, R1, 14H
060Fd(40000000): MOV R0, R0, 0H
0610d(81E00004): LDR R1, SP, 4H
0611d(A0100018): STR R0, R1, 18H
Files.Set(R.rider,e R.ref.ff,g R.ref.offh)i
0612e(80E00004): LDR R0, SP, 4H
0613e(4008001C): ADD R0, R0, 1CH
0614e(81E00008): LDR R1, SP, 8H
0615f(82E00004): LDR R2, SP, 4H
0616f(82200010): LDR R2, R2, 10H
0617f(D1273B4C): BLEQ MT [trap=4, pos=10043]
0618g(82200000): LDR R2, R2, 0H
0619h(83E00004): LDR R3, SP, 4H
061Ah(83300010): LDR R3, R3, 10H
061Bh(D127464C): BLEQ MT [trap=4, pos=10054]
061Ci(83300004): LDR R3, R3, 4H
ENDj
061Dj .FIXUP P
061Dj(F710B050): BL MOD1 [Files] PROC11
ENDk Read;
061Ek(8FE00000): LDR LNK, SP, 0H
061Fk(4EE80010): ADD SP, SP, 10H
0620k(C700000F): B LNK
PROCEDURE Pos* (VAR R: Reader): LONGINT;
BEGINl RETURN R.org + R.off
0621l .PROC 20
0621l(4EE9000C): SUB SP, SP, CH
0622l(AFE00000): STR LNK, SP, 0H
0623l(A0E00004): STR R0, SP, 4H
0624l(A1E00008): STR R1, SP, 8H
ENDm Pos;
0625m(80E00004): LDR R0, SP, 4H
0626m(80000014): LDR R0, R0, 14H
0627m(81E00004): LDR R1, SP, 4H
0628m(81100018): LDR R1, R1, 18H
0629m(00080001): ADD R0, R0, R1
062Am(8FE00000): LDR LNK, SP, 0H
062Bm(4EE8000C): ADD SP, SP, CH
062Cm(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 := " "
062Dn .PROC 21
062Dn(4EE90014): SUB SP, SP, 14H
062En(AFE00000): STR LNK, SP, 0H
062Fn(A0E00004): STR R0, SP, 4H
0630n(A1E00008): STR R1, SP, 8H
0631n(A2E0000C): STR R2, SP, CH
0632n(A3E00010): STR R3, SP, 10H
0633o(80E00004): LDR R0, SP, 4H
0634o(81E00008): LDR R1, SP, 8H
0635p(82E0000C): LDR R2, SP, CH
0636q(83E00010): LDR R3, SP, 10H
0637r(F7FFFF63): BL -157 [059BH]
0638s(40000000): MOV R0, R0, 0H
0639s(81E00004): LDR R1, SP, 4H
063As(A0100038): STR R0, R1, 38H
ENDt OpenScanner;
063Bt(40000020): MOV R0, R0, 20H
063Ct(81E00004): LDR R1, SP, 4H
063Dt(B0100034): STR R0, R1, 34H
063Et(8FE00000): LDR LNK, SP, 0H
063Ft(4EE80014): ADD SP, SP, 14H
0640t(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 *)
0641u(4EE90010): SUB SP, SP, 10H
0642u(AFE00000): STR LNK, SP, 0H
0643u(A0E00004): STR R0, SP, 4H
0644v(60003F80): MOV' R0, R0, 3F80H
0645v(A0E00008): STR R0, SP, 8H
0646w(60004120): MOV' R0, R0, 4120H
0647w(A0E0000C): STR R0, SP, CH
WHILE n > 0 DOx
0648x(80E00004): LDR R0, SP, 4H
0649x(40090000): SUB R0, R0, 0H
064Ax(E600000F): BLE 15 [065AH]
IF ODD(n) THENy t := p * t ENDz ;
064By(80E00004): LDR R0, SP, 4H
064Cy(40040001): AND R0, R0, 1H
064Dy(E1000004): BEQ 4 [0652H]
064Ez(80E0000C): LDR R0, SP, CH
064Fz(81E00008): LDR R1, SP, 8H
0650z(000E0001): FML R0, R0, R1
0651z(A0E00008): STR R0, SP, 8H
p := p*p;a n := n DIV 2
0652a(80E0000C): LDR R0, SP, CH
0653a(81E0000C): LDR R1, SP, CH
0654a(000E0001): FML R0, R0, R1
0655a(A0E0000C): STR R0, SP, CH
ENDb ;
0656b(80E00004): LDR R0, SP, 4H
0657b(40020001): ASR R0, R0, 1H
0658b(A0E00004): STR R0, SP, 4H
0659b(E7FFFFEE): B -18 [0648H]
RETURN t
ENDc Ten;
065Ac(80E00008): LDR R0, SP, 8H
065Bc(8FE00000): LDR LNK, SP, 0H
065Cc(4EE80010): ADD SP, SP, 10H
065Dc(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
065Ed .PROC 22
065Ed(4EE90038): SUB SP, SP, 38H
065Fd(AFE00000): STR LNK, SP, 0H
0660d(A0E00004): STR R0, SP, 4H
0661d(A1E00008): STR R1, SP, 8H
0662e(80E00004): LDR R0, SP, 4H
0663e(90000034): LDR R0, R0, 34H
0664e(B0E0000C): STR R0, SP, CH
0665f(40000000): MOV R0, R0, 0H
0666f(A0E00014): STR R0, SP, 14H
WHILE ~S.eot &g (hch <= " ")i DOj
0667g(80E00004): LDR R0, SP, 4H
0668g(90000000): LDR R0, R0, 0H
0669h(E9000010): BNE 16 [067AH]
066Ai(90E0000C): LDR R0, SP, CH
066Bi(40090020): SUB R0, R0, 20H
066Cj(EE00000D): BGT 13 [067AH]
IF ch = CR THENk INC(S.line) ENDl ;
066Dk(90E0000C): LDR R0, SP, CH
066Ek(4009000D): SUB R0, R0, DH
066Fk(E9000005): BNE 5 [0675H]
0670l(80E00004): LDR R0, SP, 4H
0671l(40080038): ADD R0, R0, 38H
0672l(81000000): LDR R1, R0, 0H
0673l(41180001): ADD R1, R1, 1H
0674l(A1000000): STR R1, R0, 0H
Read(S,m ch)n
0675m(80E00004): LDR R0, SP, 4H
0676m(81E00008): LDR R1, SP, 8H
0677n(42E8000C): ADD R2, SP, CH
ENDo ;
0678o(F7FFFF4B): BL -181 [05C4H]
0679o(E7FFFFED): B -19 [0667H]
IF ("A" <= ch)p & (qch <= "Z")r OR (s"a" <= ch)t & (uch <= "z")v THENw (*name*)
067Ap(40000041): MOV R0, R0, 41H
067Bp(91E0000C): LDR R1, SP, CH
067Cp(00090001): SUB R0, R0, R1
067Dq(EE000003): BGT 3 [0681H]
067Er(90E0000C): LDR R0, SP, CH
067Fr(4009005A): SUB R0, R0, 5AH
0680s(E6000007): BLE 7 [0688H]
0681t(40000061): MOV R0, R0, 61H
0682t(91E0000C): LDR R1, SP, CH
0683t(00090001): SUB R0, R0, R1
0684u(EE00003A): BGT 58 [06BFH]
0685v(90E0000C): LDR R0, SP, CH
0686v(4009007A): SUB R0, R0, 7AH
0687w(EE000037): BGT 55 [06BFH]
REPEAT S.s[i]x := ch;y INC(i);z Read(S,a ch)b
0688x(80E00014): LDR R0, SP, 14H
0689x(41090020): SUB R1, R0, 20H
068Ax(DA2BCE1C): BLCC MT [trap=1, pos=11214]
068Bx(81E00004): LDR R1, SP, 4H
068Cx(00180000): ADD R0, R1, R0
068Dy(91E0000C): LDR R1, SP, CH
068Ey(B1000054): STR R1, R0, 54H
068Fz(80E00014): LDR R0, SP, 14H
0690z(40080001): ADD R0, R0, 1H
0691z(A0E00014): STR R0, SP, 14H
0692a(80E00004): LDR R0, SP, 4H
0693a(81E00008): LDR R1, SP, 8H
0694b(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
0695c(F7FFFF2E): BL -210 [05C4H]
0696d(90E0000C): LDR R0, SP, CH
0697d(40090030): SUB R0, R0, 30H
0698e(ED000003): BGE 3 [069CH]
0699f(90E0000C): LDR R0, SP, CH
069Af(4009002E): SUB R0, R0, 2EH
069Bg(E9000015): BNE 21 [06B1H]
069Ch(40000039): MOV R0, R0, 39H
069Dh(91E0000C): LDR R1, SP, CH
069Eh(00090001): SUB R0, R0, R1
069Fi(ED000003): BGE 3 [06A3H]
06A0j(90E0000C): LDR R0, SP, CH
06A1j(40090041): SUB R0, R0, 41H
06A2k(E500000E): BLT 14 [06B1H]
06A3l(4000005A): MOV R0, R0, 5AH
06A4l(91E0000C): LDR R1, SP, CH
06A5l(00090001): SUB R0, R0, R1
06A6m(ED000003): BGE 3 [06AAH]
06A7n(90E0000C): LDR R0, SP, CH
06A8n(40090061): SUB R0, R0, 61H
06A9o(E5000007): BLT 7 [06B1H]
06AAp(4000007A): MOV R0, R0, 7AH
06ABp(91E0000C): LDR R1, SP, CH
06ACp(00090001): SUB R0, R0, R1
06ADq(E5000003): BLT 3 [06B1H]
06AEr(80E00014): LDR R0, SP, 14H
06AFr(4009001F): SUB R0, R0, 1FH
06B0s(E9FFFFD7): BNE -41 [0688H]
S.s[i]t := 0X;u S.len := i;v S.class := Name
06B1t(80E00014): LDR R0, SP, 14H
06B2t(41090020): SUB R1, R0, 20H
06B3t(DA2C6D1C): BLCC MT [trap=1, pos=11373]
06B4t(81E00004): LDR R1, SP, 4H
06B5t(00180000): ADD R0, R1, R0
06B6u(41000000): MOV R1, R0, 0H
06B7u(B1000054): STR R1, R0, 54H
06B8v(80E00014): LDR R0, SP, 14H
06B9v(81E00004): LDR R1, SP, 4H
06BAv(A0100050): STR R0, R1, 50H
ELSIFw chx = 22X THENy (*string*)
06BBw(40000001): MOV R0, R0, 1H
06BCw(81E00004): LDR R1, SP, 4H
06BDw(A010003C): STR R0, R1, 3CH
06BEx(E7000149): B 329 [0808H]
06BFy(90E0000C): LDR R0, SP, CH
06C0y(40090022): SUB R0, R0, 22H
06C1y(E900002F): BNE 47 [06F1H]
Read(S,z ch)a;b
06C2z(80E00004): LDR R0, SP, 4H
06C3z(81E00008): LDR R1, SP, 8H
06C4a(42E8000C): ADD R2, SP, CH
06C5b(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;
06C6c(90E0000C): LDR R0, SP, CH
06C7c(40090022): SUB R0, R0, 22H
06C8d(E1000015): BEQ 21 [06DEH]
06C9e(90E0000C): LDR R0, SP, CH
06CAe(40090020): SUB R0, R0, 20H
06CBf(E5000012): BLT 18 [06DEH]
06CCg(80E00014): LDR R0, SP, 14H
06CDg(4009001F): SUB R0, R0, 1FH
06CEh(E100000F): BEQ 15 [06DEH]
06CFi(80E00014): LDR R0, SP, 14H
06D0i(41090020): SUB R1, R0, 20H
06D1i(DA2D001C): BLCC MT [trap=1, pos=11520]
06D2i(81E00004): LDR R1, SP, 4H
06D3i(00180000): ADD R0, R1, R0
06D4j(91E0000C): LDR R1, SP, CH
06D5j(B1000054): STR R1, R0, 54H
06D6k(80E00014): LDR R0, SP, 14H
06D7k(40080001): ADD R0, R0, 1H
06D8k(A0E00014): STR R0, SP, 14H
06D9l(80E00004): LDR R0, SP, 4H
06DAl(81E00008): LDR R1, SP, 8H
06DBm(42E8000C): ADD R2, SP, CH
06DCn(F7FFFEE7): BL -281 [05C4H]
06DDn(E7FFFFE8): B -24 [06C6H]
S.s[i]o := 0X;p S.len := i+1;q Read(S,r ch)s;t S.class := String
06DEo(80E00014): LDR R0, SP, 14H
06DFo(41090020): SUB R1, R0, 20H
06E0o(DA2D2D1C): BLCC MT [trap=1, pos=11565]
06E1o(81E00004): LDR R1, SP, 4H
06E2o(00180000): ADD R0, R1, R0
06E3p(41000000): MOV R1, R0, 0H
06E4p(B1000054): STR R1, R0, 54H
06E5q(80E00014): LDR R0, SP, 14H
06E6q(40080001): ADD R0, R0, 1H
06E7q(81E00004): LDR R1, SP, 4H
06E8q(A0100050): STR R0, R1, 50H
06E9r(80E00004): LDR R0, SP, 4H
06EAr(81E00008): LDR R1, SP, 8H
06EBs(42E8000C): ADD R2, SP, CH
06ECt(F7FFFED7): BL -297 [05C4H]
ELSEu hexv := FALSE;w
06EDu(40000002): MOV R0, R0, 2H
06EEu(81E00004): LDR R1, SP, 4H
06EFu(A010003C): STR R0, R1, 3CH
06F0v(E7000117): B 279 [0808H]
06F1w(40000000): MOV R0, R0, 0H
06F2w(B0E00010): STR R0, SP, 10H
IF ch = "-" THENx neg := TRUE;y Read(S,z ch)a ELSEb negc := FALSE ENDd ;
06F3x(90E0000C): LDR R0, SP, CH
06F4x(4009002D): SUB R0, R0, 2DH
06F5x(E9000007): BNE 7 [06FDH]
06F6y(40000001): MOV R0, R0, 1H
06F7y(B0E0000E): STR R0, SP, EH
06F8z(80E00004): LDR R0, SP, 4H
06F9z(81E00008): LDR R1, SP, 8H
06FAa(42E8000C): ADD R2, SP, CH
06FBb(F7FFFEC8): BL -312 [05C4H]
06FCc(E7000002): B 2 [06FFH]
06FDd(40000000): MOV R0, R0, 0H
06FEd(B0E0000E): STR R0, SP, EH
IF ("0" <= ch)e & (fch <= "9")g THENh (*number*)
06FFe(40000030): MOV R0, R0, 30H
0700e(91E0000C): LDR R1, SP, CH
0701e(00090001): SUB R0, R0, R1
0702f(EE0000F5): BGT 245 [07F8H]
0703g(90E0000C): LDR R0, SP, CH
0704g(40090039): SUB R0, R0, 39H
0705h(EE0000F2): BGT 242 [07F8H]
n := ORD(ch) -i 30H;j h := n;k Read(S,l ch)m;n
0706i(90E0000C): LDR R0, SP, CH
0707j(40090030): SUB R0, R0, 30H
0708j(A0E00028): STR R0, SP, 28H
0709k(80E00028): LDR R0, SP, 28H
070Ak(A0E0001C): STR R0, SP, 1CH
070Bl(80E00004): LDR R0, SP, 4H
070Cl(81E00008): LDR R1, SP, 8H
070Dm(42E8000C): ADD R2, SP, CH
070En(F7FFFEB5): BL -331 [05C4H]
WHILE ("0" <= ch)o & (pch <= "9")q OR (r"A" <= ch)s & (tch <= "F")u DOv
070Fo(40000030): MOV R0, R0, 30H
0710o(91E0000C): LDR R1, SP, CH
0711o(00090001): SUB R0, R0, R1
0712p(EE000003): BGT 3 [0716H]
0713q(90E0000C): LDR R0, SP, CH
0714q(40090039): SUB R0, R0, 39H
0715r(E6000007): BLE 7 [071DH]
0716s(40000041): MOV R0, R0, 41H
0717s(91E0000C): LDR R1, SP, CH
0718s(00090001): SUB R0, R0, R1
0719t(EE00001E): BGT 30 [0738H]
071Au(90E0000C): LDR R0, SP, CH
071Bu(40090046): SUB R0, R0, 46H
071Cv(EE00001B): BGT 27 [0738H]
IF ch <= "9" THENw d := ORD(ch) -x 30H ELSEy dz := ORD(ch) -a 37H;b hex := TRUE ENDc ;
071Dw(90E0000C): LDR R0, SP, CH
071Ew(40090039): SUB R0, R0, 39H
071Fw(EE000004): BGT 4 [0724H]
0720x(90E0000C): LDR R0, SP, CH
0721y(40090030): SUB R0, R0, 30H
0722y(A0E00020): STR R0, SP, 20H
0723z(E7000005): B 5 [0729H]
0724a(90E0000C): LDR R0, SP, CH
0725b(40090037): SUB R0, R0, 37H
0726b(A0E00020): STR R0, SP, 20H
0727c(40000001): MOV R0, R0, 1H
0728c(B0E00010): STR R0, SP, 10H
n := 10*n +d d;e h := 10H*h +f d;g Read(S,h ch)i
0729d(80E00028): LDR R0, SP, 28H
072Ad(400A000A): MUL R0, R0, AH
072Be(81E00020): LDR R1, SP, 20H
072Ce(00080001): ADD R0, R0, R1
072De(A0E00028): STR R0, SP, 28H
072Ef(80E0001C): LDR R0, SP, 1CH
072Ff(40010004): LSL R0, R0, 4H
0730g(81E00020): LDR R1, SP, 20H
0731g(00080001): ADD R0, R0, R1
0732g(A0E0001C): STR R0, SP, 1CH
0733h(80E00004): LDR R0, SP, 4H
0734h(81E00008): LDR R1, SP, 8H
0735i(42E8000C): ADD R2, SP, CH
ENDj ;
0736j(F7FFFE8D): BL -371 [05C4H]
0737j(E7FFFFD7): B -41 [070FH]
IF ch = "H" THENk (*hex integer*) Read(S,l ch)m;n S.i := h;o S.class := Int (*neg?*)
0738k(90E0000C): LDR R0, SP, CH
0739k(40090048): SUB R0, R0, 48H
073Ak(E900000B): BNE 11 [0746H]
073Bl(80E00004): LDR R0, SP, 4H
073Cl(81E00008): LDR R1, SP, 8H
073Dm(42E8000C): ADD R2, SP, CH
073En(F7FFFE85): BL -379 [05C4H]
073Fo(80E0001C): LDR R0, SP, 1CH
0740o(81E00004): LDR R1, SP, 4H
0741o(A0100040): STR R0, R1, 40H
ELSIFp chq = "." THENr (*real number*)
0742p(40000003): MOV R0, R0, 3H
0743p(81E00004): LDR R1, SP, 4H
0744p(A010003C): STR R0, R1, 3CH
0745q(E70000B1): B 177 [07F7H]
0746r(90E0000C): LDR R0, SP, CH
0747r(4009002E): SUB R0, R0, 2EH
0748r(E900009A): BNE 154 [07E3H]
Read(S,s ch)t;u x := 0.0;v e := 0;w j := 0;x
0749s(80E00004): LDR R0, SP, 4H
074As(81E00008): LDR R1, SP, 8H
074Bt(42E8000C): ADD R2, SP, CH
074Cu(F7FFFE77): BL -393 [05C4H]
074Dv(40000000): MOV R0, R0, 0H
074Ev(A0E00034): STR R0, SP, 34H
074Fw(40000000): MOV R0, R0, 0H
0750w(A0E00024): STR R0, SP, 24H
0751x(40000000): MOV R0, R0, 0H
0752x(A0E00018): STR R0, SP, 18H
WHILE ("0" <= ch)y & (zch <= "9")a DOb (*fraction*)
0753y(40000030): MOV R0, R0, 30H
0754y(91E0000C): LDR R1, SP, CH
0755y(00090001): SUB R0, R0, R1
0756z(EE000017): BGT 23 [076EH]
0757a(90E0000C): LDR R0, SP, CH
0758a(40090039): SUB R0, R0, 39H
0759b(EE000014): BGT 20 [076EH]
h := 10*n +c (ORD(ch) -d 30H)e;f
075Ac(80E00028): LDR R0, SP, 28H
075Bc(400A000A): MUL R0, R0, AH
075Cd(91E0000C): LDR R1, SP, CH
075De(41190030): SUB R1, R1, 30H
075Ef(00080001): ADD R0, R0, R1
075Ff(A0E0001C): STR R0, SP, 1CH
IF h < maxM THENg n := h;h INC(j) ENDi ;
0760g(80E0001C): LDR R0, SP, 1CH
0761g(61000100): MOV' R1, R0, 100H
0762g(00090001): SUB R0, R0, R1
0763g(ED000005): BGE 5 [0769H]
0764h(80E0001C): LDR R0, SP, 1CH
0765h(A0E00028): STR R0, SP, 28H
0766i(80E00018): LDR R0, SP, 18H
0767i(40080001): ADD R0, R0, 1H
0768i(A0E00018): STR R0, SP, 18H
Read(S,j ch)k
0769j(80E00004): LDR R0, SP, 4H
076Aj(81E00008): LDR R1, SP, 8H
076Bk(42E8000C): ADD R2, SP, CH
ENDl ;
076Cl(F7FFFE57): BL -425 [05C4H]
076Dl(E7FFFFE5): B -27 [0753H]
IF ch = "E" THENm (*scale factor*)
076Em(90E0000C): LDR R0, SP, CH
076Fm(40090045): SUB R0, R0, 45H
0770m(E9000036): BNE 54 [07A7H]
s := 0;n Read(S,o ch)p;q
0771n(40000000): MOV R0, R0, 0H
0772n(A0E0002C): STR R0, SP, 2CH
0773o(80E00004): LDR R0, SP, 4H
0774o(81E00008): LDR R1, SP, 8H
0775p(42E8000C): ADD R2, SP, CH
0776q(F7FFFE4D): BL -435 [05C4H]
IF ch = "-" THENr negE := TRUE;s Read(S,t ch)u
0777r(90E0000C): LDR R0, SP, CH
0778r(4009002D): SUB R0, R0, 2DH
0779r(E9000007): BNE 7 [0781H]
077As(40000001): MOV R0, R0, 1H
077Bs(B0E0000F): STR R0, SP, FH
077Ct(80E00004): LDR R0, SP, 4H
077Dt(81E00008): LDR R1, SP, 8H
077Eu(42E8000C): ADD R2, SP, CH
ELSEv negEw := FALSE;x
077Fv(F7FFFE44): BL -444 [05C4H]
0780w(E7000009): B 9 [078AH]
0781x(40000000): MOV R0, R0, 0H
0782x(B0E0000F): STR R0, SP, FH
IF ch = "+" THENy Read(S,z ch)a ENDb
0783y(90E0000C): LDR R0, SP, CH
0784y(4009002B): SUB R0, R0, 2BH
0785y(E9000004): BNE 4 [078AH]
0786z(80E00004): LDR R0, SP, 4H
0787z(81E00008): LDR R1, SP, 8H
0788a(42E8000C): ADD R2, SP, CH
0789b(F7FFFE3A): BL -454 [05C4H]
END ;
WHILE ("0" <= ch)c & (dch <= "9")e DOf
078Ac(40000030): MOV R0, R0, 30H
078Bc(91E0000C): LDR R1, SP, CH
078Cc(00090001): SUB R0, R0, R1
078Dd(EE00000E): BGT 14 [079CH]
078Ee(90E0000C): LDR R0, SP, CH
078Fe(40090039): SUB R0, R0, 39H
0790f(EE00000B): BGT 11 [079CH]
s := s*10 +g ORD(ch) -h 30H;i Read(S,j ch)k
0791g(80E0002C): LDR R0, SP, 2CH
0792g(400A000A): MUL R0, R0, AH
0793h(91E0000C): LDR R1, SP, CH
0794h(00080001): ADD R0, R0, R1
0795i(40090030): SUB R0, R0, 30H
0796i(A0E0002C): STR R0, SP, 2CH
0797j(80E00004): LDR R0, SP, 4H
0798j(81E00008): LDR R1, SP, 8H
0799k(42E8000C): ADD R2, SP, CH
ENDl ;
079Al(F7FFFE29): BL -471 [05C4H]
079Bl(E7FFFFEE): B -18 [078AH]
IF negE THENm DEC(e, s) ELSEn INCo(e, s) ENDp ;
079Cm(90E0000F): LDR R0, SP, FH
079Dm(E1000005): BEQ 5 [07A3H]
079En(80E00024): LDR R0, SP, 24H
079Fn(81E0002C): LDR R1, SP, 2CH
07A0n(00090001): SUB R0, R0, R1
07A1n(A0E00024): STR R0, SP, 24H
07A2o(E7000004): B 4 [07A7H]
07A3p(80E00024): LDR R0, SP, 24H
07A4p(81E0002C): LDR R1, SP, 2CH
07A5p(00080001): ADD R0, R0, R1
07A6p(A0E00024): STR R0, SP, 24H
END ;
x := FLT(n);q DEC(e, j);r
07A7q(80E00028): LDR R0, SP, 28H
07A8q(61004B00): MOV' R1, R0, 4B00H
07A9q(200C0001): FAD' R0, R0, R1
07AAq(A0E00034): STR R0, SP, 34H
07ABr(80E00024): LDR R0, SP, 24H
07ACr(81E00018): LDR R1, SP, 18H
07ADr(00090001): SUB R0, R0, R1
07AEr(A0E00024): STR R0, SP, 24H
IF e < 0 THENs
07AFs(80E00024): LDR R0, SP, 24H
07B0s(40090000): SUB R0, R0, 0H
07B1s(ED00000E): BGE 14 [07C0H]
IF e >= -maxExp THENt x := x / Ten(-e)u ELSEv xw := 0.0 ENDx
07B2t(80E00024): LDR R0, SP, 24H
07B3t(5009FFDA): SUB R0, R0, FFFFFFDAH
07B4t(E5000008): BLT 8 [07BDH]
07B5u(80E00024): LDR R0, SP, 24H
07B6u(41000000): MOV R1, R0, 0H
07B7u(00190000): SUB R0, R1, R0
07B8v(F7FFFE88): BL -376 [0641H]
07B9v(81E00034): LDR R1, SP, 34H
07BAv(001F0000): FDV R0, R1, R0
07BBv(A0E00034): STR R0, SP, 34H
07BCw(E7000002): B 2 [07BFH]
07BDx(40000000): MOV R0, R0, 0H
07BEx(A0E00034): STR R0, SP, 34H
ELSIF ey > 0 THENz
07BFy(E700000E): B 14 [07CEH]
07C0z(80E00024): LDR R0, SP, 24H
07C1z(40090000): SUB R0, R0, 0H
07C2z(E600000B): BLE 11 [07CEH]
IF e <= maxExp THENa x := Ten(e)b *c x ELSEd xe := 0.0 ENDf
07C3a(80E00024): LDR R0, SP, 24H
07C4a(40090026): SUB R0, R0, 26H
07C5a(EE000006): BGT 6 [07CCH]
07C6b(80E00024): LDR R0, SP, 24H
07C7c(F7FFFE79): BL -391 [0641H]
07C8d(81E00034): LDR R1, SP, 34H
07C9d(000E0001): FML R0, R0, R1
07CAd(A0E00034): STR R0, SP, 34H
07CBe(E7000002): B 2 [07CEH]
07CCf(40000000): MOV R0, R0, 0H
07CDf(A0E00034): STR R0, SP, 34H
END ;
IF neg THENg S.x := -x ELSEh Si.x := x ENDj ;
07CEg(90E0000E): LDR R0, SP, EH
07CFg(E1000006): BEQ 6 [07D6H]
07D0h(80E00034): LDR R0, SP, 34H
07D1h(41000000): MOV R1, R0, 0H
07D2h(001D0000): FSB R0, R1, R0
07D3h(81E00004): LDR R1, SP, 4H
07D4h(A0100044): STR R0, R1, 44H
07D5i(E7000003): B 3 [07D9H]
07D6j(80E00034): LDR R0, SP, 34H
07D7j(81E00004): LDR R1, SP, 4H
07D8j(A0100044): STR R0, R1, 44H
IF hex THENk S.class := 0 ELSEl Sm.class := Real ENDn
07D9k(90E00010): LDR R0, SP, 10H
07DAk(E1000004): BEQ 4 [07DFH]
07DBl(40000000): MOV R0, R0, 0H
07DCl(81E00004): LDR R1, SP, 4H
07DDl(A010003C): STR R0, R1, 3CH
07DEm(E7000003): B 3 [07E2H]
07DFn(40000004): MOV R0, R0, 4H
07E0n(81E00004): LDR R1, SP, 4H
07E1n(A010003C): STR R0, R1, 3CH
ELSE (*decimal integer*)
IFo neg THENp S.i := -n ELSEq Sr.i := n ENDs;
07E2o(E7000014): B 20 [07F7H]
07E3p(90E0000E): LDR R0, SP, EH
07E4p(E1000006): BEQ 6 [07EBH]
07E5q(80E00028): LDR R0, SP, 28H
07E6q(41000000): MOV R1, R0, 0H
07E7q(00190000): SUB R0, R1, R0
07E8q(81E00004): LDR R1, SP, 4H
07E9q(A0100040): STR R0, R1, 40H
07EAr(E7000003): B 3 [07EEH]
07EBs(80E00028): LDR R0, SP, 28H
07ECs(81E00004): LDR R1, SP, 4H
07EDs(A0100040): STR R0, R1, 40H
IF hex THENt S.class := Inval ELSEu Sv.class := Int ENDw
07EEt(90E00010): LDR R0, SP, 10H
07EFt(E1000004): BEQ 4 [07F4H]
07F0u(40000000): MOV R0, R0, 0H
07F1u(81E00004): LDR R1, SP, 4H
07F2u(A010003C): STR R0, R1, 3CH
07F3v(E7000003): B 3 [07F7H]
07F4w(40000003): MOV R0, R0, 3H
07F5w(81E00004): LDR R1, SP, 4H
07F6w(A010003C): STR R0, R1, 3CH
END
ELSE (*spectal character*) Sx.class := Char;y
07F7x(E7000010): B 16 [0808H]
07F8y(40000006): MOV R0, R0, 6H
07F9y(81E00004): LDR R1, SP, 4H
07FAy(A010003C): STR R0, R1, 3CH
IF neg THENz S.c := "-" ELSEa Sb.c := ch;c Read(S,d ch)e ENDf
07FBz(90E0000E): LDR R0, SP, EH
07FCz(E1000004): BEQ 4 [0801H]
07FDa(4000002D): MOV R0, R0, 2DH
07FEa(81E00004): LDR R1, SP, 4H
07FFa(B010004C): STR R0, R1, 4CH
0800b(E7000007): B 7 [0808H]
0801c(90E0000C): LDR R0, SP, CH
0802c(81E00004): LDR R1, SP, 4H
0803c(B010004C): STR R0, R1, 4CH
0804d(80E00004): LDR R0, SP, 4H
0805d(81E00008): LDR R1, SP, 8H
0806e(42E8000C): ADD R2, SP, CH
0807f(F7FFFDBC): BL -580 [05C4H]
END
END ;
S.nextCh := ch
ENDg Scan;
0808g(90E0000C): LDR R0, SP, CH
0809g(81E00004): LDR R1, SP, 4H
080Ag(B0100034): STR R0, R1, 34H
080Bg(8FE00000): LDR LNK, SP, 0H
080Cg(4EE80038): ADD SP, SP, 38H
080Dg(C700000F): B LNK
(* --------------- Access: Writers (NW) ------------------ *)
PROCEDURE OpenWriter* (VAR W: Writer);
BEGINh NEW(W.buf);i
080Eh .PROC 23
080Eh(4EE9000C): SUB SP, SP, CH
080Fh(AFE00000): STR LNK, SP, 0H
0810h(A0E00004): STR R0, SP, 4H
0811h(A1E00008): STR R1, SP, 8H
0812i(80E00004): LDR R0, SP, 4H
0813i .FIXUP D
0813i(8D000222): LDR SB, MT, MOD0 [Texts]
0814i(41D80088): ADD R1, SB, 88H [data]
0815i(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
0816j(80E00004): LDR R0, SP, 4H
0817j(80000000): LDR R0, R0, 0H
0818k(F7FFFA35): BL -1483 [024EH]
0819l .FIXUP D
0819l(8D200006): LDR SB, MT, MOD2 [Fonts]
081Al(80D00002): LDR R0, SB, VAR2
081Bl(81E00004): LDR R1, SP, 4H
081Cl(A0100004): STR R0, R1, 4H
081Dm(4000000F): MOV R0, R0, FH
081Em(81E00004): LDR R1, SP, 4H
081Fm(A0100008): STR R0, R1, 8H
0820n(40000000): MOV R0, R0, 0H
0821n(81E00004): LDR R1, SP, 4H
0822n(A010000C): STR R0, R1, CH
Files.Set(W.rider,o Files.New(""p)q,r 0)s
0823o(80E00004): LDR R0, SP, 4H
0824o(40080010): ADD R0, R0, 10H
0825o(81E00008): LDR R1, SP, 8H
0826p(4EE90008): SUB SP, SP, 8H
0827p(A0E00004): STR R0, SP, 4H
0828p(A1E00000): STR R1, SP, 0H
0829q .FIXUP D
0829q(8D000010): LDR SB, MT, MOD0 [Texts]
082Aq(40D800CC): ADD R0, SB, CCH [""]
082Bq(41000001): MOV R1, R0, 1H
082Cr .FIXUP P
082Cr(F710320F): BL MOD1 [Files] PROC3
082Dr(02000000): MOV R2, R0, R0
082Er(81E00000): LDR R1, SP, 0H
082Fr(80E00004): LDR R0, SP, 4H
0830r(4EE80008): ADD SP, SP, 8H
0831s(43000000): MOV R3, R0, 0H
ENDt OpenWriter;
0832t .FIXUP P
0832t(F710B006): BL MOD1 [Files] PROC11
0833t(8FE00000): LDR LNK, SP, 0H
0834t(4EE8000C): ADD SP, SP, CH
0835t(C700000F): B LNK
PROCEDURE SetFont* (VAR W: Writer; fnt: Fonts.Font);
BEGINu W.fnt := fnt
0836u .PROC 24
0836u(4EE90010): SUB SP, SP, 10H
0837u(AFE00000): STR LNK, SP, 0H
0838u(A0E00004): STR R0, SP, 4H
0839u(A1E00008): STR R1, SP, 8H
083Au(A2E0000C): STR R2, SP, CH
ENDv SetFont;
083Bv(80E0000C): LDR R0, SP, CH
083Cv(81E00004): LDR R1, SP, 4H
083Dv(A0100004): STR R0, R1, 4H
083Ev(8FE00000): LDR LNK, SP, 0H
083Fv(4EE80010): ADD SP, SP, 10H
0840v(C700000F): B LNK
PROCEDURE SetColor* (VAR W: Writer; col: INTEGER);
BEGINw W.col := col
0841w .PROC 25
0841w(4EE90010): SUB SP, SP, 10H
0842w(AFE00000): STR LNK, SP, 0H
0843w(A0E00004): STR R0, SP, 4H
0844w(A1E00008): STR R1, SP, 8H
0845w(A2E0000C): STR R2, SP, CH
ENDx SetColor;
0846x(80E0000C): LDR R0, SP, CH
0847x(81E00004): LDR R1, SP, 4H
0848x(A0100008): STR R0, R1, 8H
0849x(8FE00000): LDR LNK, SP, 0H
084Ax(4EE80010): ADD SP, SP, 10H
084Bx(C700000F): B LNK
PROCEDURE SetOffset* (VAR W: Writer; voff: INTEGER);
BEGINy W.voff := voff
084Cy .PROC 26
084Cy(4EE90010): SUB SP, SP, 10H
084Dy(AFE00000): STR LNK, SP, 0H
084Ey(A0E00004): STR R0, SP, 4H
084Fy(A1E00008): STR R1, SP, 8H
0850y(A2E0000C): STR R2, SP, CH
ENDz SetOffset;
0851z(80E0000C): LDR R0, SP, CH
0852z(81E00004): LDR R1, SP, 4H
0853z(A010000C): STR R0, R1, CH
0854z(8FE00000): LDR LNK, SP, 0H
0855z(4EE80010): ADD SP, SP, 10H
0856z(C700000F): B LNK
PROCEDURE Write* (VAR W: Writer; ch: CHAR);
VAR p: Piece;
BEGINa
0857a .PROC 27
0857a(4EE90014): SUB SP, SP, 14H
0858a(AFE00000): STR LNK, SP, 0H
0859a(A0E00004): STR R0, SP, 4H
085Aa(A1E00008): STR R1, SP, 8H
085Ba(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
085Cb(80E00004): LDR R0, SP, 4H
085Db(80000000): LDR R0, R0, 0H
085Eb(D137314C): BLEQ MT [trap=4, pos=14129]
085Fc(80000008): LDR R0, R0, 8H
0860c(D137354C): BLEQ MT [trap=4, pos=14133]
0861d(8000000C): LDR R0, R0, CH
0862d(81E00004): LDR R1, SP, 4H
0863d(81100004): LDR R1, R1, 4H
0864d(00090001): SUB R0, R0, R1
0865e(E9000014): BNE 20 [087AH]
0866f(80E00004): LDR R0, SP, 4H
0867f(80000000): LDR R0, R0, 0H
0868f(D1374D4C): BLEQ MT [trap=4, pos=14157]
0869g(80000008): LDR R0, R0, 8H
086Ag(D137514C): BLEQ MT [trap=4, pos=14161]
086Bh(80000010): LDR R0, R0, 10H
086Ch(81E00004): LDR R1, SP, 4H
086Dh(81100008): LDR R1, R1, 8H
086Eh(00090001): SUB R0, R0, R1
086Fi(E900000A): BNE 10 [087AH]
0870j(80E00004): LDR R0, SP, 4H
0871j(80000000): LDR R0, R0, 0H
0872j(D137694C): BLEQ MT [trap=4, pos=14185]
0873k(80000008): LDR R0, R0, 8H
0874k(D1376E4C): BLEQ MT [trap=4, pos=14190]
0875l(80000014): LDR R0, R0, 14H
0876l(81E00004): LDR R1, SP, 4H
0877l(8110000C): LDR R1, R1, CH
0878l(00090001): SUB R0, R0, R1
0879m(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
087An(40E80010): ADD R0, SP, 10H
087Bn .FIXUP D
087Bn(8D000052): LDR SB, MT, MOD0 [Texts]
087Cn(41D80000): ADD R1, SB, 0H [data]
087Dn(D7378B0C): BL MT [trap=0, pos=14219]
087Eo(80E00010): LDR R0, SP, 10H
087Fo(D1378F4C): BLEQ MT [trap=4, pos=14223]
0880p(4EE90004): SUB SP, SP, 4H
0881p(A0E00000): STR R0, SP, 0H
0882q(80E00008): LDR R0, SP, 8H
0883q(40080010): ADD R0, R0, 10H
0884q(81E0000C): LDR R1, SP, CH
0885r .FIXUP P
0885r(F710D053): BL MOD1 [Files] PROC13
0886r(01000000): MOV R1, R0, R0
0887r(80E00000): LDR R0, SP, 0H
0888r(4EE80004): ADD SP, SP, 4H
0889r(A1000000): STR R1, R0, 0H
088As(80E00010): LDR R0, SP, 10H
088Bs(D137AD4C): BLEQ MT [trap=4, pos=14253]
088Ct(4EE90004): SUB SP, SP, 4H
088Dt(A0E00000): STR R0, SP, 0H
088Eu(80E00008): LDR R0, SP, 8H
088Fu(40080010): ADD R0, R0, 10H
0890u(81E0000C): LDR R1, SP, CH
0891v .FIXUP P
0891v(F710C00C): BL MOD1 [Files] PROC12
0892v(01000000): MOV R1, R0, R0
0893v(80E00000): LDR R0, SP, 0H
0894v(4EE80004): ADD SP, SP, 4H
0895v(A1000004): STR R1, R0, 4H
0896w(80E00010): LDR R0, SP, 10H
0897w(D137CA4C): BLEQ MT [trap=4, pos=14282]
0898x(41000000): MOV R1, R0, 0H
0899x(A1000008): STR R1, R0, 8H
p.fnty := W.fnt;z p.cola := W.col;b p.voffc:= W.voff;d
089Ay(80E00010): LDR R0, SP, 10H
089By(D137DC4C): BLEQ MT [trap=4, pos=14300]
089Cz(81E00004): LDR R1, SP, 4H
089Dz(81100004): LDR R1, R1, 4H
089Ez(A100000C): STR R1, R0, CH
089Fa(80E00010): LDR R0, SP, 10H
08A0a(D137EC4C): BLEQ MT [trap=4, pos=14316]
08A1b(81E00004): LDR R1, SP, 4H
08A2b(81100008): LDR R1, R1, 8H
08A3b(A1000010): STR R1, R0, 10H
08A4c(80E00010): LDR R0, SP, 10H
08A5c(D137FD4C): BLEQ MT [trap=4, pos=14333]
08A6d(81E00004): LDR R1, SP, 4H
08A7d(8110000C): LDR R1, R1, CH
08A8d(A1000014): STR R1, R0, 14H
p.nexte := NIL;f W.buf.lastg.nexth := p;i
08A9e(80E00010): LDR R0, SP, 10H
08AAe(D138144C): BLEQ MT [trap=4, pos=14356]
08ABf(41000000): MOV R1, R0, 0H
08ACf(A100001C): STR R1, R0, 1CH
08ADg(80E00004): LDR R0, SP, 4H
08AEg(80000000): LDR R0, R0, 0H
08AFg(D138274C): BLEQ MT [trap=4, pos=14375]
08B0h(80000008): LDR R0, R0, 8H
08B1h(D1382C4C): BLEQ MT [trap=4, pos=14380]
08B2i(81E00010): LDR R1, SP, 10H
08B3i(A100001C): STR R1, R0, 1CH
p.prevj := W.buf.lastk;l W.buf.lastm := p
08B4j(80E00010): LDR R0, SP, 10H
08B5j(D1383F4C): BLEQ MT [trap=4, pos=14399]
08B6k(81E00004): LDR R1, SP, 4H
08B7k(81100000): LDR R1, R1, 0H
08B8k(D1384D4C): BLEQ MT [trap=4, pos=14413]
08B9l(81100008): LDR R1, R1, 8H
08BAl(A1000018): STR R1, R0, 18H
08BBm(80E00004): LDR R0, SP, 4H
08BCm(80000000): LDR R0, R0, 0H
08BDm(D138594C): BLEQ MT [trap=4, pos=14425]
ENDn;
08BEn(81E00010): LDR R1, SP, 10H
08BFn(A1000008): STR R1, R0, 8H
Files.Write(W.rider,o ch)p;q
08C0o(80E00004): LDR R0, SP, 4H
08C1o(40080010): ADD R0, R0, 10H
08C2o(81E00008): LDR R1, SP, 8H
08C3p(92E0000C): LDR R2, SP, CH
08C4q .FIXUP P
08C4q(F7118033): BL MOD1 [Files] PROC24
INC(W.buf.lastr.lens);t INC(W.buf.lenu)
08C5r(80E00004): LDR R0, SP, 4H
08C6r(80000000): LDR R0, R0, 0H
08C7r(D138984C): BLEQ MT [trap=4, pos=14488]
08C8s(80000008): LDR R0, R0, 8H
08C9s(D1389C4C): BLEQ MT [trap=4, pos=14492]
08CAt(40080008): ADD R0, R0, 8H
08CBt(81000000): LDR R1, R0, 0H
08CCt(41180001): ADD R1, R1, 1H
08CDt(A1000000): STR R1, R0, 0H
08CEu(80E00004): LDR R0, SP, 4H
08CFu(80000000): LDR R0, R0, 0H
08D0u(D138AC4C): BLEQ MT [trap=4, pos=14508]
ENDv Write;
08D1v(81000000): LDR R1, R0, 0H
08D2v(41180001): ADD R1, R1, 1H
08D3v(A1000000): STR R1, R0, 0H
08D4v(8FE00000): LDR LNK, SP, 0H
08D5v(4EE80014): ADD SP, SP, 14H
08D6v(C700000F): B LNK
PROCEDURE WriteLn* (VAR W: Writer);
BEGINw Write(W,x CR)y
08D7w .PROC 28
08D7w(4EE9000C): SUB SP, SP, CH
08D8w(AFE00000): STR LNK, SP, 0H
08D9w(A0E00004): STR R0, SP, 4H
08DAw(A1E00008): STR R1, SP, 8H
08DBx(80E00004): LDR R0, SP, 4H
08DCx(81E00008): LDR R1, SP, 8H
08DDy(4200000D): MOV R2, R0, DH
ENDz WriteLn;
08DEz(F7FFFF78): BL -136 [0857H]
08DFz(8FE00000): LDR LNK, SP, 0H
08E0z(4EE8000C): ADD SP, SP, CH
08E1z(C700000F): B LNK
PROCEDURE WriteString* (VAR W: Writer; s: ARRAY OF CHAR);
VAR i: INTEGER;
BEGINa i := 0;b
08E2a .PROC 29
08E2a(4EE90018): SUB SP, SP, 18H
08E3a(AFE00000): STR LNK, SP, 0H
08E4a(A0E00004): STR R0, SP, 4H
08E5a(A1E00008): STR R1, SP, 8H
08E6a(A2E0000C): STR R2, SP, CH
08E7a(A3E00010): STR R3, SP, 10H
08E8b(40000000): MOV R0, R0, 0H
08E9b(A0E00014): STR R0, SP, 14H
WHILE s[i]c >= " " DOd Write(W,e s[i]f)g;h INC(i) ENDi
08EAc(80E00014): LDR R0, SP, 14H
08EBc(81E00010): LDR R1, SP, 10H
08ECc(01090001): SUB R1, R0, R1
08EDc(DA39751C): BLCC MT [trap=1, pos=14709]
08EEc(81E0000C): LDR R1, SP, CH
08EFc(00180000): ADD R0, R1, R0
08F0d(90000000): LDR R0, R0, 0H
08F1d(40090020): SUB R0, R0, 20H
08F2d(E500000E): BLT 14 [0901H]
08F3e(80E00004): LDR R0, SP, 4H
08F4e(81E00008): LDR R1, SP, 8H
08F5f(82E00014): LDR R2, SP, 14H
08F6f(83E00010): LDR R3, SP, 10H
08F7f(03290003): SUB R3, R2, R3
08F8f(DA398D1C): BLCC MT [trap=1, pos=14733]
08F9f(83E0000C): LDR R3, SP, CH
08FAf(02380002): ADD R2, R3, R2
08FBg(92200000): LDR R2, R2, 0H
08FCh(F7FFFF5A): BL -166 [0857H]
08FDi(80E00014): LDR R0, SP, 14H
08FEi(40080001): ADD R0, R0, 1H
08FFi(A0E00014): STR R0, SP, 14H
0900i(E7FFFFE9): B -23 [08EAH]
ENDj WriteString;
0901j(8FE00000): LDR LNK, SP, 0H
0902j(4EE80018): ADD SP, SP, 18H
0903j(C700000F): B LNK
PROCEDURE WriteInt* (VAR W: Writer; x, n: LONGINT);
VAR i: INTEGER; x0: LONGINT;
a: ARRAY 10 OF CHAR;
BEGINk
0904k .PROC 30
0904k(4EE90028): SUB SP, SP, 28H
0905k(AFE00000): STR LNK, SP, 0H
0906k(A0E00004): STR R0, SP, 4H
0907k(A1E00008): STR R1, SP, 8H
0908k(A2E0000C): STR R2, SP, CH
0909k(A3E00010): STR R3, SP, 10H
IF ROR(x, 31) =l 1 THENm WriteString(W,n " -2147483648")o
090Al(80E0000C): LDR R0, SP, CH
090Bl(4003001F): ROR R0, R0, 1FH
090Cm(40090001): SUB R0, R0, 1H
090Dm(E9000007): BNE 7 [0915H]
090En(80E00004): LDR R0, SP, 4H
090Fn(81E00008): LDR R1, SP, 8H
0910o .FIXUP D
0910o(8D000095): LDR SB, MT, MOD0 [Texts]
0911o(42D800D0): ADD R2, SB, D0H [" -2147483648"]
0912o(4300000D): MOV R3, R0, DH
ELSEp iq := 0;r
0913p(F7FFFFCE): BL -50 [08E2H]
0914q(E7000040): B 64 [0955H]
0915r(40000000): MOV R0, R0, 0H
0916r(A0E00014): STR R0, SP, 14H
IF x < 0 THENs DEC(n);t x0 := -x ELSEu x0v := x ENDw;
0917s(80E0000C): LDR R0, SP, CH
0918s(40090000): SUB R0, R0, 0H
0919s(ED000008): BGE 8 [0922H]
091At(80E00010): LDR R0, SP, 10H
091Bt(40090001): SUB R0, R0, 1H
091Ct(A0E00010): STR R0, SP, 10H
091Du(80E0000C): LDR R0, SP, CH
091Eu(41000000): MOV R1, R0, 0H
091Fu(00190000): SUB R0, R1, R0
0920u(A0E00018): STR R0, SP, 18H
0921v(E7000002): B 2 [0924H]
0922w(80E0000C): LDR R0, SP, CH
0923w(A0E00018): STR R0, SP, 18H
REPEAT
a[i]x := CHR(x0 MOD 10 +y 30H)z;a x0 := x0 DIV 10;b INC(i)
0924x(80E00014): LDR R0, SP, 14H
0925x(4109000A): SUB R1, R0, AH
0926x(DA3AC41C): BLCC MT [trap=1, pos=15044]
0927x(00E80000): ADD R0, SP, R0
0928y(81E00018): LDR R1, SP, 18H
0929y(411B000A): DIV R1, R1, AH
092Ay(21000000): MOV' R1, R0, R0
092Bz(41180030): ADD R1, R1, 30H
092Ca(B100001C): STR R1, R0, 1CH
092Db(80E00018): LDR R0, SP, 18H
092Eb(400B000A): DIV R0, R0, AH
092Fb(A0E00018): STR R0, SP, 18H
UNTILc x0 = 0;d
0930c(80E00014): LDR R0, SP, 14H
0931c(40080001): ADD R0, R0, 1H
0932c(A0E00014): STR R0, SP, 14H
0933d(80E00018): LDR R0, SP, 18H
0934d(E9FFFFEF): BNE -17 [0924H]
WHILE n > i DOe Write(W,f " ")g;h DEC(n) ENDi;
0935e(80E00010): LDR R0, SP, 10H
0936e(81E00014): LDR R1, SP, 14H
0937e(00090001): SUB R0, R0, R1
0938e(E6000008): BLE 8 [0941H]
0939f(80E00004): LDR R0, SP, 4H
093Af(81E00008): LDR R1, SP, 8H
093Bg(42000020): MOV R2, R0, 20H
093Ch(F7FFFF1A): BL -230 [0857H]
093Di(80E00010): LDR R0, SP, 10H
093Ei(40090001): SUB R0, R0, 1H
093Fi(A0E00010): STR R0, SP, 10H
0940i(E7FFFFF4): B -12 [0935H]
IF x < 0 THENj Write(W,k "-")l ENDm;
0941j(80E0000C): LDR R0, SP, CH
0942j(40090000): SUB R0, R0, 0H
0943j(ED000004): BGE 4 [0948H]
0944k(80E00004): LDR R0, SP, 4H
0945k(81E00008): LDR R1, SP, 8H
0946l(4200002D): MOV R2, R0, 2DH
0947m(F7FFFF0F): BL -241 [0857H]
REPEAT DEC(i);n Write(W,o a[i]p)q UNTILr i = 0
0948n(80E00014): LDR R0, SP, 14H
0949n(40090001): SUB R0, R0, 1H
094An(A0E00014): STR R0, SP, 14H
094Bo(80E00004): LDR R0, SP, 4H
094Co(81E00008): LDR R1, SP, 8H
094Dp(82E00014): LDR R2, SP, 14H
094Ep(4329000A): SUB R3, R2, AH
094Fp(DA3B831C): BLCC MT [trap=1, pos=15235]
0950p(02E80002): ADD R2, SP, R2
0951q(9220001C): LDR R2, R2, 1CH
0952r(F7FFFF04): BL -252 [0857H]
ENDs
0953s(80E00014): LDR R0, SP, 14H
0954s(E9FFFFF3): BNE -13 [0948H]
ENDt WriteInt;
0955t(8FE00000): LDR LNK, SP, 0H
0956t(4EE80028): ADD SP, SP, 28H
0957t(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
0958u .PROC 31
0958u(4EE90024): SUB SP, SP, 24H
0959u(AFE00000): STR LNK, SP, 0H
095Au(A0E00004): STR R0, SP, 4H
095Bu(A1E00008): STR R1, SP, 8H
095Cu(A2E0000C): STR R2, SP, CH
095Dv(40000000): MOV R0, R0, 0H
095Ev(A0E00010): STR R0, SP, 10H
095Fw(80E00004): LDR R0, SP, 4H
0960w(81E00008): LDR R1, SP, 8H
0961x(42000020): MOV R2, R0, 20H
0962y(F7FFFEF4): BL -268 [0857H]
REPEAT y := x MOD 10H;z
0963z(80E0000C): LDR R0, SP, CH
0964z(4004000F): AND R0, R0, FH
0965z(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;
0966a(80E00014): LDR R0, SP, 14H
0967a(4009000A): SUB R0, R0, AH
0968a(ED000008): BGE 8 [0971H]
0969b(80E00010): LDR R0, SP, 10H
096Ab(4109000A): SUB R1, R0, AH
096Bb(DA3C6B1C): BLCC MT [trap=1, pos=15467]
096Cb(00E80000): ADD R0, SP, R0
096Dc(81E00014): LDR R1, SP, 14H
096Ec(41180030): ADD R1, R1, 30H
096Fd(B1000018): STR R1, R0, 18H
0970e(E7000007): B 7 [0978H]
0971f(80E00010): LDR R0, SP, 10H
0972f(4109000A): SUB R1, R0, AH
0973f(DA3C851C): BLCC MT [trap=1, pos=15493]
0974f(00E80000): ADD R0, SP, R0
0975g(81E00014): LDR R1, SP, 14H
0976g(41180037): ADD R1, R1, 37H
0977h(B1000018): STR R1, R0, 18H
x := x DIV 10H;i INC(i)
0978i(80E0000C): LDR R0, SP, CH
0979i(40020004): ASR R0, R0, 4H
097Ai(A0E0000C): STR R0, SP, CH
UNTILj i = 8;k
097Bj(80E00010): LDR R0, SP, 10H
097Cj(40080001): ADD R0, R0, 1H
097Dj(A0E00010): STR R0, SP, 10H
097Ek(80E00010): LDR R0, SP, 10H
097Fk(40090008): SUB R0, R0, 8H
0980k(E9FFFFE2): BNE -30 [0963H]
REPEAT DEC(i);l Write(W,m a[i]n)o UNTILp i = 0
0981l(80E00010): LDR R0, SP, 10H
0982l(40090001): SUB R0, R0, 1H
0983l(A0E00010): STR R0, SP, 10H
0984m(80E00004): LDR R0, SP, 4H
0985m(81E00008): LDR R1, SP, 8H
0986n(82E00010): LDR R2, SP, 10H
0987n(4329000A): SUB R3, R2, AH
0988n(DA3CE91C): BLCC MT [trap=1, pos=15593]
0989n(02E80002): ADD R2, SP, R2
098Ao(92200018): LDR R2, R2, 18H
098Bp(F7FFFECB): BL -309 [0857H]
ENDq WriteHex;
098Cq(80E00010): LDR R0, SP, 10H
098Dq(E9FFFFF3): BNE -13 [0981H]
098Eq(8FE00000): LDR LNK, SP, 0H
098Fq(4EE80024): ADD SP, SP, 24H
0990q(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*)
0991r .PROC 32
0991r(4EE90030): SUB SP, SP, 30H
0992r(AFE00000): STR LNK, SP, 0H
0993r(A0E00004): STR R0, SP, 4H
0994r(A1E00008): STR R1, SP, 8H
0995r(A2E0000C): STR R2, SP, CH
0996r(A3E00010): STR R3, SP, 10H
0997s(80E0000C): LDR R0, SP, CH
0998t(40020017): ASR R0, R0, 17H
0999u(400400FF): AND R0, R0, FFH
099Au(A0E00014): STR R0, SP, 14H
IF e = 0 THENv
099Bv(80E00014): LDR R0, SP, 14H
099Cv(E9000012): BNE 18 [09AFH]
WriteString(W,w " 0 ")x;y
099Dw(80E00004): LDR R0, SP, 4H
099Ew(81E00008): LDR R1, SP, 8H
099Fx .FIXUP D
099Fx(8D00008F): LDR SB, MT, MOD0 [Texts]
09A0x(42D800E0): ADD R2, SB, E0H [" 0 "]
09A1x(43000005): MOV R3, R0, 5H
09A2y(F7FFFF3F): BL -193 [08E2H]
WHILE n >= 3 DOz Write(W,a " ")b;c DEC(n) ENDd
09A3z(80E00010): LDR R0, SP, 10H
09A4z(40090003): SUB R0, R0, 3H
09A5z(E5000008): BLT 8 [09AEH]
09A6a(80E00004): LDR R0, SP, 4H
09A7a(81E00008): LDR R1, SP, 8H
09A8b(42000020): MOV R2, R0, 20H
09A9c(F7FFFEAD): BL -339 [0857H]
09AAd(80E00010): LDR R0, SP, 10H
09ABd(40090001): SUB R0, R0, 1H
09ACd(A0E00010): STR R0, SP, 10H
09ADd(E7FFFFF5): B -11 [09A3H]
ELSIF ee = 255 THENf WriteString(W,g " NaN ")h
09AEe(E70000B1): B 177 [0A60H]
09AFf(80E00014): LDR R0, SP, 14H
09B0f(400900FF): SUB R0, R0, FFH
09B1f(E9000007): BNE 7 [09B9H]
09B2g(80E00004): LDR R0, SP, 4H
09B3g(81E00008): LDR R1, SP, 8H
09B4h .FIXUP D
09B4h(8D000015): LDR SB, MT, MOD0 [Texts]
09B5h(42D800E8): ADD R2, SB, E8H [" NaN "]
09B6h(43000006): MOV R3, R0, 6H
ELSEi Writej(W,k " ")l;m
09B7i(F7FFFF2A): BL -214 [08E2H]
09B8j(E70000A7): B 167 [0A60H]
09B9k(80E00004): LDR R0, SP, 4H
09BAk(81E00008): LDR R1, SP, 8H
09BBl(42000020): MOV R2, R0, 20H
09BCm(F7FFFE9A): BL -358 [0857H]
WHILE n >= 15 DOn DEC(n);o Write(W,p " ")q ENDr ;
09BDn(80E00010): LDR R0, SP, 10H
09BEn(4009000F): SUB R0, R0, FH
09BFn(E5000008): BLT 8 [09C8H]
09C0o(80E00010): LDR R0, SP, 10H
09C1o(40090001): SUB R0, R0, 1H
09C2o(A0E00010): STR R0, SP, 10H
09C3p(80E00004): LDR R0, SP, 4H
09C4p(81E00008): LDR R1, SP, 8H
09C5q(42000020): MOV R2, R0, 20H
09C6r(F7FFFE90): BL -368 [0857H]
09C7r(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 ;
09C8s(80E0000C): LDR R0, SP, CH
09C9s(ED000009): BGE 9 [09D3H]
09CAt(80E00004): LDR R0, SP, 4H
09CBt(81E00008): LDR R1, SP, 8H
09CCu(4200002D): MOV R2, R0, 2DH
09CDv(F7FFFE89): BL -375 [0857H]
09CEw(80E0000C): LDR R0, SP, CH
09CFw(41000000): MOV R1, R0, 0H
09D0w(001D0000): FSB R0, R1, R0
09D1w(A0E0000C): STR R0, SP, CH
09D2x(E7000004): B 4 [09D7H]
09D3y(80E00004): LDR R0, SP, 4H
09D4y(81E00008): LDR R1, SP, 8H
09D5z(42000020): MOV R2, R0, 20H
09D6a(F7FFFE80): BL -384 [0857H]
e := (e - 127)b * 77 DIVc 256 -d 6;e (*decimal exponent*)
09D7b(80E00014): LDR R0, SP, 14H
09D8b(4009007F): SUB R0, R0, 7FH
09D9c(400A004D): MUL R0, R0, 4DH
09DAd(40020008): ASR R0, R0, 8H
09DBe(40090006): SUB R0, R0, 6H
09DCe(A0E00014): STR R0, SP, 14H
IF e >= 0 THENf x := x / Ten(e)g ELSEh xi := Ten(-e)j *k x ENDl ;
09DDf(80E00014): LDR R0, SP, 14H
09DEf(40090000): SUB R0, R0, 0H
09DFf(E5000006): BLT 6 [09E6H]
09E0g(80E00014): LDR R0, SP, 14H
09E1h(F7FFFC5F): BL -929 [0641H]
09E2h(81E0000C): LDR R1, SP, CH
09E3h(001F0000): FDV R0, R1, R0
09E4h(A0E0000C): STR R0, SP, CH
09E5i(E7000007): B 7 [09EDH]
09E6j(80E00014): LDR R0, SP, 14H
09E7j(41000000): MOV R1, R0, 0H
09E8j(00190000): SUB R0, R1, R0
09E9k(F7FFFC57): BL -937 [0641H]
09EAl(81E0000C): LDR R1, SP, CH
09EBl(000E0001): FML R0, R0, R1
09ECl(A0E0000C): STR R0, SP, CH
m := FLOOR(x + 0.5)m;n i := 0;o
09EDm(80E0000C): LDR R0, SP, CH
09EEm(61003F00): MOV' R1, R0, 3F00H
09EFm(000C0001): FAD R0, R0, R1
09F0n(61004B00): MOV' R1, R0, 4B00H
09F1n(100C0001): FAD R0, R0, R1
09F2n(A0E0001C): STR R0, SP, 1CH
09F3o(40000000): MOV R0, R0, 0H
09F4o(A0E00018): STR R0, SP, 18H
IF m >= 10000000 THENp INC(e);q m := m DIV 10 ENDr ;
09F5p(80E0001C): LDR R0, SP, 1CH
09F6p(61000098): MOV' R1, R0, 98H
09F7p(41169680): IOR R1, R1, FFFF9680H
09F8p(00090001): SUB R0, R0, R1
09F9p(E5000006): BLT 6 [0A00H]
09FAq(80E00014): LDR R0, SP, 14H
09FBq(40080001): ADD R0, R0, 1H
09FCq(A0E00014): STR R0, SP, 14H
09FDr(80E0001C): LDR R0, SP, 1CH
09FEr(400B000A): DIV R0, R0, AH
09FFr(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
0A00s(80E00018): LDR R0, SP, 18H
0A01s(41090010): SUB R1, R0, 10H
0A02s(DA3FE91C): BLCC MT [trap=1, pos=16361]
0A03s(00E80000): ADD R0, SP, R0
0A04t(81E0001C): LDR R1, SP, 1CH
0A05t(411B000A): DIV R1, R1, AH
0A06t(21000000): MOV' R1, R0, R0
0A07u(41180030): ADD R1, R1, 30H
0A08v(B1000020): STR R1, R0, 20H
0A09w(80E0001C): LDR R0, SP, 1CH
0A0Aw(400B000A): DIV R0, R0, AH
0A0Bw(A0E0001C): STR R0, SP, 1CH
0A0Cx(80E00018): LDR R0, SP, 18H
0A0Dx(40080001): ADD R0, R0, 1H
0A0Ex(A0E00018): STR R0, SP, 18H
0A0Fy(80E0001C): LDR R0, SP, 1CH
0A10y(E9FFFFEF): BNE -17 [0A00H]
DEC(i);z Write(W,a d[i]b)c;d Write(W,e ".")f;g
0A11z(80E00018): LDR R0, SP, 18H
0A12z(40090001): SUB R0, R0, 1H
0A13z(A0E00018): STR R0, SP, 18H
0A14a(80E00004): LDR R0, SP, 4H
0A15a(81E00008): LDR R1, SP, 8H
0A16b(82E00018): LDR R2, SP, 18H
0A17b(43290010): SUB R3, R2, 10H
0A18b(DA40401C): BLCC MT [trap=1, pos=16448]
0A19b(02E80002): ADD R2, SP, R2
0A1Ac(92200020): LDR R2, R2, 20H
0A1Bd(F7FFFE3B): BL -453 [0857H]
0A1Ce(80E00004): LDR R0, SP, 4H
0A1De(81E00008): LDR R1, SP, 8H
0A1Ef(4200002E): MOV R2, R0, 2EH
0A1Fg(F7FFFE37): BL -457 [0857H]
IF i < n-7 THENh n := 0 ELSEi nj := 14 - n ENDk ;
0A20h(80E00010): LDR R0, SP, 10H
0A21h(40090007): SUB R0, R0, 7H
0A22h(81E00018): LDR R1, SP, 18H
0A23h(01190000): SUB R1, R1, R0
0A24h(ED000003): BGE 3 [0A28H]
0A25i(40000000): MOV R0, R0, 0H
0A26i(A0E00010): STR R0, SP, 10H
0A27j(E7000004): B 4 [0A2CH]
0A28k(4000000E): MOV R0, R0, EH
0A29k(81E00010): LDR R1, SP, 10H
0A2Ak(00090001): SUB R0, R0, R1
0A2Bk(A0E00010): STR R0, SP, 10H
WHILE i > n DOl DEC(i);m Write(W,n d[i]o)p ENDq ;
0A2Cl(80E00018): LDR R0, SP, 18H
0A2Dl(81E00010): LDR R1, SP, 10H
0A2El(00090001): SUB R0, R0, R1
0A2Fl(E600000C): BLE 12 [0A3CH]
0A30m(80E00018): LDR R0, SP, 18H
0A31m(40090001): SUB R0, R0, 1H
0A32m(A0E00018): STR R0, SP, 18H
0A33n(80E00004): LDR R0, SP, 4H
0A34n(81E00008): LDR R1, SP, 8H
0A35o(82E00018): LDR R2, SP, 18H
0A36o(43290010): SUB R3, R2, 10H
0A37o(DA40B01C): BLCC MT [trap=1, pos=16560]
0A38o(02E80002): ADD R2, SP, R2
0A39p(92200020): LDR R2, R2, 20H
0A3Aq(F7FFFE1C): BL -484 [0857H]
0A3Bq(E7FFFFF0): B -16 [0A2CH]
Write(W,r "E")s;t INC(e, 6);u
0A3Cr(80E00004): LDR R0, SP, 4H
0A3Dr(81E00008): LDR R1, SP, 8H
0A3Es(42000045): MOV R2, R0, 45H
0A3Ft(F7FFFE17): BL -489 [0857H]
0A40u(80E00014): LDR R0, SP, 14H
0A41u(40080006): ADD R0, R0, 6H
0A42u(A0E00014): STR R0, SP, 14H
IF e < 0 THENv Write(W,w "-")x;y e := -e ELSEz Writea(W,b "+")c ENDd ;
0A43v(80E00014): LDR R0, SP, 14H
0A44v(40090000): SUB R0, R0, 0H
0A45v(ED000009): BGE 9 [0A4FH]
0A46w(80E00004): LDR R0, SP, 4H
0A47w(81E00008): LDR R1, SP, 8H
0A48x(4200002D): MOV R2, R0, 2DH
0A49y(F7FFFE0D): BL -499 [0857H]
0A4Az(80E00014): LDR R0, SP, 14H
0A4Bz(41000000): MOV R1, R0, 0H
0A4Cz(00190000): SUB R0, R1, R0
0A4Dz(A0E00014): STR R0, SP, 14H
0A4Ea(E7000004): B 4 [0A53H]
0A4Fb(80E00004): LDR R0, SP, 4H
0A50b(81E00008): LDR R1, SP, 8H
0A51c(4200002B): MOV R2, R0, 2BH
0A52d(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)
0A53e(80E00004): LDR R0, SP, 4H
0A54e(81E00008): LDR R1, SP, 8H
0A55f(82E00014): LDR R2, SP, 14H
0A56f(422B000A): DIV R2, R2, AH
0A57g(42280030): ADD R2, R2, 30H
0A58h(F7FFFDFE): BL -514 [0857H]
0A59i(80E00004): LDR R0, SP, 4H
0A5Ai(81E00008): LDR R1, SP, 8H
0A5Bj(82E00014): LDR R2, SP, 14H
0A5Cj(422B000A): DIV R2, R2, AH
0A5Dj(22000000): MOV' R2, R0, R0
0A5Ek(42280030): ADD R2, R2, 30H
ENDl
0A5Fl(F7FFFDF7): BL -521 [0857H]
ENDm WriteReal;
0A60m(8FE00000): LDR LNK, SP, 0H
0A61m(4EE80030): ADD SP, SP, 30H
0A62m(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
0A63n .PROC 33
0A63n(4EE90030): SUB SP, SP, 30H
0A64n(AFE00000): STR LNK, SP, 0H
0A65n(A0E00004): STR R0, SP, 4H
0A66n(A1E00008): STR R1, SP, 8H
0A67n(A2E0000C): STR R2, SP, CH
0A68n(A3E00010): STR R3, SP, 10H
0A69n(A4E00014): STR R4, SP, 14H
IF x = 0.0 THENo WriteString(W,p " 0")q
0A6Ao(80E0000C): LDR R0, SP, CH
0A6Bo(E9000007): BNE 7 [0A73H]
0A6Cp(80E00004): LDR R0, SP, 4H
0A6Dp(81E00008): LDR R1, SP, 8H
0A6Eq .FIXUP D
0A6Eq(8D0000BA): LDR SB, MT, MOD0 [Texts]
0A6Fq(42D800F0): ADD R2, SB, F0H [" 0"]
0A70q(43000004): MOV R3, R0, 4H
ELSEr
0A71r(F7FFFE70): BL -400 [08E2H]
IFs x < 0.0 THENt x := -x;u neg := TRUE ELSEv negw := FALSE ENDx ;
0A72s(E700007C): B 124 [0AEFH]
0A73t(80E0000C): LDR R0, SP, CH
0A74t(ED000007): BGE 7 [0A7CH]
0A75u(80E0000C): LDR R0, SP, CH
0A76u(41000000): MOV R1, R0, 0H
0A77u(001D0000): FSB R0, R1, R0
0A78u(A0E0000C): STR R0, SP, CH
0A79v(40000001): MOV R0, R0, 1H
0A7Av(B0E00020): STR R0, SP, 20H
0A7Bw(E7000002): B 2 [0A7EH]
0A7Cx(40000000): MOV R0, R0, 0H
0A7Dx(B0E00020): STR R0, SP, 20H
IF k > 7 THENy k := 7 ENDz ;
0A7Ey(80E00014): LDR R0, SP, 14H
0A7Fy(40090007): SUB R0, R0, 7H
0A80y(E6000002): BLE 2 [0A83H]
0A81z(40000007): MOV R0, R0, 7H
0A82z(A0E00014): STR R0, SP, 14H
x := Ten(k)a *b x;c m := FLOOR(x + 0.5)d;e
0A83a(80E00014): LDR R0, SP, 14H
0A84b(F7FFFBBC): BL -1092 [0641H]
0A85c(81E0000C): LDR R1, SP, CH
0A86c(000E0001): FML R0, R0, R1
0A87c(A0E0000C): STR R0, SP, CH
0A88d(80E0000C): LDR R0, SP, CH
0A89d(61003F00): MOV' R1, R0, 3F00H
0A8Ad(000C0001): FAD R0, R0, R1
0A8Be(61004B00): MOV' R1, R0, 4B00H
0A8Ce(100C0001): FAD R0, R0, R1
0A8De(A0E0001C): STR R0, SP, 1CH
i := 0;f
0A8Ef(40000000): MOV R0, R0, 0H
0A8Ff(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
0A90g(80E00018): LDR R0, SP, 18H
0A91g(4109000C): SUB R1, R0, CH
0A92g(DA42E71C): BLCC MT [trap=1, pos=17127]
0A93g(00E80000): ADD R0, SP, R0
0A94h(81E0001C): LDR R1, SP, 1CH
0A95h(411B000A): DIV R1, R1, AH
0A96h(21000000): MOV' R1, R0, R0
0A97i(41180030): ADD R1, R1, 30H
0A98j(B1000024): STR R1, R0, 24H
0A99k(80E0001C): LDR R0, SP, 1CH
0A9Ak(400B000A): DIV R0, R0, AH
0A9Bk(A0E0001C): STR R0, SP, 1CH
0A9Cl(80E00018): LDR R0, SP, 18H
0A9Dl(40080001): ADD R0, R0, 1H
0A9El(A0E00018): STR R0, SP, 18H
0A9Fm(80E0001C): LDR R0, SP, 1CH
0AA0m(E9FFFFEF): BNE -17 [0A90H]
Write(W,n " ")o;p
0AA1n(80E00004): LDR R0, SP, 4H
0AA2n(81E00008): LDR R1, SP, 8H
0AA3o(42000020): MOV R2, R0, 20H
0AA4p(F7FFFDB2): BL -590 [0857H]
WHILE n > i+3 DOq Write(W,r " ")s;t DEC(n) ENDu ;
0AA5q(80E00018): LDR R0, SP, 18H
0AA6q(40080003): ADD R0, R0, 3H
0AA7q(81E00010): LDR R1, SP, 10H
0AA8q(01190000): SUB R1, R1, R0
0AA9q(E6000008): BLE 8 [0AB2H]
0AAAr(80E00004): LDR R0, SP, 4H
0AABr(81E00008): LDR R1, SP, 8H
0AACs(42000020): MOV R2, R0, 20H
0AADt(F7FFFDA9): BL -599 [0857H]
0AAEu(80E00010): LDR R0, SP, 10H
0AAFu(40090001): SUB R0, R0, 1H
0AB0u(A0E00010): STR R0, SP, 10H
0AB1u(E7FFFFF3): B -13 [0AA5H]
IF neg THENv Write(W,w "-")x;y DEC(n) ELSEz Writea(W,b " ")c ENDd ;
0AB2v(90E00020): LDR R0, SP, 20H
0AB3v(E1000008): BEQ 8 [0ABCH]
0AB4w(80E00004): LDR R0, SP, 4H
0AB5w(81E00008): LDR R1, SP, 8H
0AB6x(4200002D): MOV R2, R0, 2DH
0AB7y(F7FFFD9F): BL -609 [0857H]
0AB8z(80E00010): LDR R0, SP, 10H
0AB9z(40090001): SUB R0, R0, 1H
0ABAz(A0E00010): STR R0, SP, 10H
0ABBa(E7000004): B 4 [0AC0H]
0ABCb(80E00004): LDR R0, SP, 4H
0ABDb(81E00008): LDR R1, SP, 8H
0ABEc(42000020): MOV R2, R0, 20H
0ABFd(F7FFFD97): BL -617 [0857H]
WHILE i > k DOe DEC(i);f Write(W,g d[i]h)i ENDj ;
0AC0e(80E00018): LDR R0, SP, 18H
0AC1e(81E00014): LDR R1, SP, 14H
0AC2e(00090001): SUB R0, R0, R1
0AC3e(E600000C): BLE 12 [0AD0H]
0AC4f(80E00018): LDR R0, SP, 18H
0AC5f(40090001): SUB R0, R0, 1H
0AC6f(A0E00018): STR R0, SP, 18H
0AC7g(80E00004): LDR R0, SP, 4H
0AC8g(81E00008): LDR R1, SP, 8H
0AC9h(82E00018): LDR R2, SP, 18H
0ACAh(4329000C): SUB R3, R2, CH
0ACBh(DA43D71C): BLCC MT [trap=1, pos=17367]
0ACCh(02E80002): ADD R2, SP, R2
0ACDi(92200024): LDR R2, R2, 24H
0ACEj(F7FFFD88): BL -632 [0857H]
0ACFj(E7FFFFF0): B -16 [0AC0H]
Write(W,k ".")l;m
0AD0k(80E00004): LDR R0, SP, 4H
0AD1k(81E00008): LDR R1, SP, 8H
0AD2l(4200002E): MOV R2, R0, 2EH
0AD3m(F7FFFD83): BL -637 [0857H]
WHILE k > i DOn DEC(k);o Write(W,p "0")q ENDr ;
0AD4n(80E00014): LDR R0, SP, 14H
0AD5n(81E00018): LDR R1, SP, 18H
0AD6n(00090001): SUB R0, R0, R1
0AD7n(E6000008): BLE 8 [0AE0H]
0AD8o(80E00014): LDR R0, SP, 14H
0AD9o(40090001): SUB R0, R0, 1H
0ADAo(A0E00014): STR R0, SP, 14H
0ADBp(80E00004): LDR R0, SP, 4H
0ADCp(81E00008): LDR R1, SP, 8H
0ADDq(42000030): MOV R2, R0, 30H
0ADEr(F7FFFD78): BL -648 [0857H]
0ADFr(E7FFFFF4): B -12 [0AD4H]
WHILE i > 0 DOs DEC(i);t Write(W,u d[i]v)w ENDx
0AE0s(80E00018): LDR R0, SP, 18H
0AE1s(40090000): SUB R0, R0, 0H
0AE2s(E600000C): BLE 12 [0AEFH]
0AE3t(80E00018): LDR R0, SP, 18H
0AE4t(40090001): SUB R0, R0, 1H
0AE5t(A0E00018): STR R0, SP, 18H
0AE6u(80E00004): LDR R0, SP, 4H
0AE7u(81E00008): LDR R1, SP, 8H
0AE8v(82E00018): LDR R2, SP, 18H
0AE9v(4329000C): SUB R3, R2, CH
0AEAv(DA444F1C): BLCC MT [trap=1, pos=17487]
0AEBv(02E80002): ADD R2, SP, R2
0AECw(92200024): LDR R2, R2, 24H
0AEDx(F7FFFD69): BL -663 [0857H]
0AEEx(E7FFFFF1): B -15 [0AE0H]
END
ENDy WriteRealFix;
0AEFy(8FE00000): LDR LNK, SP, 0H
0AF0y(4EE80030): ADD SP, SP, 30H
0AF1y(C700000F): B LNK
PROCEDURE WritePair(VAR W: Writer; ch: CHAR; x: LONGINT);
BEGINz Write(W,a ch)b;c
0AF2z(4EE90014): SUB SP, SP, 14H
0AF3z(AFE00000): STR LNK, SP, 0H
0AF4z(A0E00004): STR R0, SP, 4H
0AF5z(A1E00008): STR R1, SP, 8H
0AF6z(A2E0000C): STR R2, SP, CH
0AF7z(A3E00010): STR R3, SP, 10H
0AF8a(80E00004): LDR R0, SP, 4H
0AF9a(81E00008): LDR R1, SP, 8H
0AFAb(92E0000C): LDR R2, SP, CH
0AFBc(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)
0AFCd(80E00004): LDR R0, SP, 4H
0AFDd(81E00008): LDR R1, SP, 8H
0AFEe(82E00010): LDR R2, SP, 10H
0AFFe(422B000A): DIV R2, R2, AH
0B00f(42280030): ADD R2, R2, 30H
0B01g(F7FFFD55): BL -683 [0857H]
0B02h(80E00004): LDR R0, SP, 4H
0B03h(81E00008): LDR R1, SP, 8H
0B04i(82E00010): LDR R2, SP, 10H
0B05i(422B000A): DIV R2, R2, AH
0B06i(22000000): MOV' R2, R0, R0
0B07j(42280030): ADD R2, R2, 30H
ENDk WritePair;
0B08k(F7FFFD4E): BL -690 [0857H]
0B09k(8FE00000): LDR LNK, SP, 0H
0B0Ak(4EE80014): ADD SP, SP, 14H
0B0Bk(C700000F): B LNK
PROCEDURE WriteClock* (VAR W: Writer; d: LONGINT);
BEGINl
0B0Cl .PROC 34
0B0Cl(4EE90010): SUB SP, SP, 10H
0B0Dl(AFE00000): STR LNK, SP, 0H
0B0El(A0E00004): STR R0, SP, 4H
0B0Fl(A1E00008): STR R1, SP, 8H
0B10l(A2E0000C): STR R2, SP, CH
WritePair(W,m " ",n d DIV 20000H MODo 20H)p;q (*day*)
0B11m(80E00004): LDR R0, SP, 4H
0B12m(81E00008): LDR R1, SP, 8H
0B13n(42000020): MOV R2, R0, 20H
0B14o(83E0000C): LDR R3, SP, CH
0B15o(43320011): ASR R3, R3, 11H
0B16p(4334001F): AND R3, R3, 1FH
0B17q(F7FFFFDA): BL -38 [0AF2H]
WritePair(W,r ".",s d DIV 400000H MODt 10H)u;v (*month*)
0B18r(80E00004): LDR R0, SP, 4H
0B19r(81E00008): LDR R1, SP, 8H
0B1As(4200002E): MOV R2, R0, 2EH
0B1Bt(83E0000C): LDR R3, SP, CH
0B1Ct(43320016): ASR R3, R3, 16H
0B1Du(4334000F): AND R3, R3, FH
0B1Ev(F7FFFFD3): BL -45 [0AF2H]
WritePair(W,w ".",x d DIV 4000000H MODy 40H)z;a (*year*)
0B1Fw(80E00004): LDR R0, SP, 4H
0B20w(81E00008): LDR R1, SP, 8H
0B21x(4200002E): MOV R2, R0, 2EH
0B22y(83E0000C): LDR R3, SP, CH
0B23y(4332001A): ASR R3, R3, 1AH
0B24z(4334003F): AND R3, R3, 3FH
0B25a(F7FFFFCC): BL -52 [0AF2H]
WritePair(W,b " ",c d DIV 1000H MODd 20H)e;f (*hour*)
0B26b(80E00004): LDR R0, SP, 4H
0B27b(81E00008): LDR R1, SP, 8H
0B28c(42000020): MOV R2, R0, 20H
0B29d(83E0000C): LDR R3, SP, CH
0B2Ad(4332000C): ASR R3, R3, CH
0B2Be(4334001F): AND R3, R3, 1FH
0B2Cf(F7FFFFC5): BL -59 [0AF2H]
WritePair(W,g ":",h d DIV 40H MODi 40H)j;k (*min*)
0B2Dg(80E00004): LDR R0, SP, 4H
0B2Eg(81E00008): LDR R1, SP, 8H
0B2Fh(4200003A): MOV R2, R0, 3AH
0B30i(83E0000C): LDR R3, SP, CH
0B31i(43320006): ASR R3, R3, 6H
0B32j(4334003F): AND R3, R3, 3FH
0B33k(F7FFFFBE): BL -66 [0AF2H]
WritePair(W,l ":",m d MOD 40H)n (*sec*)
0B34l(80E00004): LDR R0, SP, 4H
0B35l(81E00008): LDR R1, SP, 8H
0B36m(4200003A): MOV R2, R0, 3AH
0B37n(83E0000C): LDR R3, SP, CH
0B38n(4334003F): AND R3, R3, 3FH
ENDo WriteClock;
0B39o(F7FFFFB8): BL -72 [0AF2H]
0B3Ao(8FE00000): LDR LNK, SP, 0H
0B3Bo(4EE80010): ADD SP, SP, 10H
0B3Co(C700000F): B LNK
BEGINp TrailerFile := Files.New("")q
0B3Dp .PROC 0
0B3Dp .ENTRYPOINT
0B3Dp(4EE90004): SUB SP, SP, 4H
0B3Ep(AFE00000): STR LNK, SP, 0H
0B3Fq .FIXUP D
0B3Fq(8D0000D1): LDR SB, MT, MOD0 [Texts]
0B40q(40D800F4): ADD R0, SB, F4H [""]
0B41q(41000001): MOV R1, R0, 1H
ENDr Texts.s
0B42r .FIXUP P
0B42r(F710327E): BL MOD1 [Files] PROC3
0B43r .FIXUP D
0B43r(8D000004): LDR SB, MT, MOD0 [Texts]
0B44r(A0D000C8): STR R0, SB, C8H [data]
0B45s(8FE00000): LDR LNK, SP, 0H
0B46s(4EE80004): ADD SP, SP, 4H
0B47s(C700000F): B LNK