Used Exports

Files: File Old ReadByte Rider Set

MODULE Fonts; (*JG 18.11.90; PDR 8.6.12; NW 25.3.2013*)
.MODULE Fonts (KEY F4C9F557, VERSION 1, SIZE 00000A58)
.IMPORT Files (KEY 73F5D686)
.STRING 38H "Oberon10.Scn.Fnt"
CONST FontFileId = 0DBH;
TYPE Font* = POINTER TO FontDesc;
FontDesc* = RECORD
name*: ARRAY 32 OF CHAR;
height*, minX*, maxX*, minY*, maxY*: INTEGER;
next*: Font;
raster: ARRAY 2360 OF BYTE
LargeFontDesc = RECORD (FontDesc) ext: ARRAY 2560 OF BYTE END ;
LargeFont = POINTER TO LargeFontDesc;
(* raster sizes: Syntax8 1367, Syntax10 1628, Syntax12 1688, Syntax14 1843, Syntax14b 1983,
Syntax16 2271, Syntax20 3034, Syntac24 4274, Syntax24b 4302 *)
VAR Default*, root*: Font;
PROCEDURE GetPat*(fnt: Font; ch: CHAR; VAR dx, x, y, w, h, patadr: INTEGER);
VAR pa: INTEGER; dxb, xb, yb, wb, hb: BYTE;
BEGINa pa := fnt.Tb[ORD(ch) MODc 80H]d;e patadr := pa;f
0000a .PROC 1
0000a .PROC 4
0000a(4EE90030): SUB SP, SP, 30H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
0003a(A1E00008): STR R1, SP, 8H
0004a(A2E0000C): STR R2, SP, CH
0005a(A3E00010): STR R3, SP, 10H
0006a(A4E00014): STR R4, SP, 14H
0007a(A5E00018): STR R5, SP, 18H
0008a(A6E0001C): STR R6, SP, 1CH
0009a(A7E00020): STR R7, SP, 20H
000Ab(80E00004): LDR R0, SP, 4H
000Bb(D103164C): BLEQ MT [trap=4, pos=790]
000Cc .PROC 2
000Cc(91E00008): LDR R1, SP, 8H
000Dd .PROC 3
000Dd(4114007F): AND R1, R1, 7FH
000Ed(42190080): SUB R2, R1, 80H
000Fd(DA03271C): BLCC MT [trap=1, pos=807]
0010d(41110002): LSL R1, R1, 2H
0011d(00080001): ADD R0, R0, R1
0012e(80000038): LDR R0, R0, 38H
0013e(A0E00024): STR R0, SP, 24H
0014f(80E00024): LDR R0, SP, 24H
0015f(81E00020): LDR R1, SP, 20H
0016f(A0100000): STR R0, R1, 0H
SYSTEM.GET(pa-3,g dxb);h SYSTEM.GET(pa-2,i xb);j SYSTEM.GET(pa-1,k yb);l SYSTEM.GET(pa, wb);m SYSTEM.GET(pa+1,n hb);o
0017g(80E00024): LDR R0, SP, 24H
0018g(40090003): SUB R0, R0, 3H
0019h(90000000): LDR R0, R0, 0H
001Ah(B0E00028): STR R0, SP, 28H
001Bi(80E00024): LDR R0, SP, 24H
001Ci(40090002): SUB R0, R0, 2H
001Dj(90000000): LDR R0, R0, 0H
001Ej(B0E00029): STR R0, SP, 29H
001Fk(80E00024): LDR R0, SP, 24H
0020k(40090001): SUB R0, R0, 1H
0021l(90000000): LDR R0, R0, 0H
0022l(B0E0002A): STR R0, SP, 2AH
0023m(80E00024): LDR R0, SP, 24H
0024m(90000000): LDR R0, R0, 0H
0025m(B0E0002B): STR R0, SP, 2BH
0026n(80E00024): LDR R0, SP, 24H
0027n(40080001): ADD R0, R0, 1H
0028o(90000000): LDR R0, R0, 0H
0029o(B0E0002C): STR R0, SP, 2CH
dx := dxb;p x := xb;q y := yb;r w := wb;s h := hb;t
002Ap(90E00028): LDR R0, SP, 28H
002Bp(81E0000C): LDR R1, SP, CH
002Cp(A0100000): STR R0, R1, 0H
002Dq(90E00029): LDR R0, SP, 29H
002Eq(81E00010): LDR R1, SP, 10H
002Fq(A0100000): STR R0, R1, 0H
0030r(90E0002A): LDR R0, SP, 2AH
0031r(81E00014): LDR R1, SP, 14H
0032r(A0100000): STR R0, R1, 0H
0033s(90E0002B): LDR R0, SP, 2BH
0034s(81E00018): LDR R1, SP, 18H
0035s(A0100000): STR R0, R1, 0H
0036t(90E0002C): LDR R0, SP, 2CH
0037t(81E0001C): LDR R1, SP, 1CH
0038t(A0100000): STR R0, R1, 0H
IF yb < 128 THENu y := yb ELSEv yw := yb - 256 ENDx
0039u(90E0002A): LDR R0, SP, 2AH
003Au(40090080): SUB R0, R0, 80H
003Bu(ED000004): BGE 4 [0040H]
003Cv(90E0002A): LDR R0, SP, 2AH
003Dv(81E00014): LDR R1, SP, 14H
003Ev(A0100000): STR R0, R1, 0H
003Fw(E7000004): B 4 [0044H]
0040x(90E0002A): LDR R0, SP, 2AH
0041x(40090100): SUB R0, R0, 100H
0042x(81E00014): LDR R1, SP, 14H
0043x(A0100000): STR R0, R1, 0H
ENDy GetPat;
0044y(8FE00000): LDR LNK, SP, 0H
0045y(4EE80030): ADD SP, SP, 30H
0046y(C700000F): B LNK
TYPE RunRec = RECORD beg, end: BYTE END ;
BoxRec = RECORD dx, x, y, w, h: BYTE END ;
VAR F: Font; LF: LargeFont;
f: Files.File; R: Files.Rider;
NofRuns, NofBoxes: BYTE;
NofBytes: INTEGER;
height, minX, maxX, minY, maxY: BYTE;
i, j, k, m, n: INTEGER;
a, a0: INTEGER;
b, beg, end: BYTE;
run: ARRAY 16 OF RunRec;
box: ARRAY 512 OF BoxRec;
PROCEDUREz RdInt16(VAR R: Files.Rider; VAR b0: BYTE);
0047z(E7000010): B 16 [0058H]
BEGINa Files.ReadByte(R,b b0)c;d Files.ReadByte(R,e b1)f
0048a(4EE90014): SUB SP, SP, 14H
0049a(AFE00000): STR LNK, SP, 0H
004Aa(A0E00004): STR R0, SP, 4H
004Ba(A1E00008): STR R1, SP, 8H
004Ca(A2E0000C): STR R2, SP, CH
004Db(80E00004): LDR R0, SP, 4H
004Eb(81E00008): LDR R1, SP, 8H
004Fc(82E0000C): LDR R2, SP, CH
0050d .FIXUP P
0050d(F710E050): BL MOD1 [Files] PROC14
0051e(80E00004): LDR R0, SP, 4H
0052e(81E00008): LDR R1, SP, 8H
0053f(42E80010): ADD R2, SP, 10H
ENDg RdInt16;
0054g .FIXUP P
0054g(F710E004): BL MOD1 [Files] PROC14
0055g(8FE00000): LDR LNK, SP, 0H
0056g(4EE80014): ADD SP, SP, 14H
0057g(C700000F): B LNK
BEGINh F := root;i
0058h .PROC 5
0058h(4EE910A0): SUB SP, SP, 10A0H
0059h(AFE00000): STR LNK, SP, 0H
005Ah(A0E00004): STR R0, SP, 4H
005Bh(A1E00008): STR R1, SP, 8H
005Ci .FIXUP D
005Ci(8D00005C): LDR SB, MT, MOD0 [Fonts]
005Di(80D00034): LDR R0, SB, 34H [data]
005Ei(A0E0000C): STR R0, SP, CH
WHILE (F # NIL)j & (kname # F.namel)m DOn F := F.nexto ENDp;
005Fj(80E0000C): LDR R0, SP, CH
0060k(E1000011): BEQ 17 [0072H]
0061l(80E0000C): LDR R0, SP, CH
0062l(D106864C): BLEQ MT [trap=4, pos=1670]
0063m(81E00004): LDR R1, SP, 4H
0064m(92100000): LDR R2, R1, 0H
0065m(41180001): ADD R1, R1, 1H
0066m(93000000): LDR R3, R0, 0H
0067m(40080001): ADD R0, R0, 1H
0068m(04290003): SUB R4, R2, R3
0069m(E9000002): BNE 2 [006CH]
006Am(44290000): SUB R4, R2, 0H
006Bm(E9FFFFF8): BNE -8 [0064H]
006Cn(E1000005): BEQ 5 [0072H]
006Do(80E0000C): LDR R0, SP, CH
006Eo(D106964C): BLEQ MT [trap=4, pos=1686]
006Fp(80000034): LDR R0, R0, 34H
0070p(A0E0000C): STR R0, SP, CH
0071p(E7FFFFED): B -19 [005FH]
0072q(80E0000C): LDR R0, SP, CH
0073q(E90001DB): BNE 475 [024FH]
f := Files.Old(name)r;s
0074r(80E00004): LDR R0, SP, 4H
0075r(81E00008): LDR R1, SP, 8H
0076s .FIXUP P
0076s(F7102022): BL MOD1 [Files] PROC2
0077s(A0E00014): STR R0, SP, 14H
0078t(80E00014): LDR R0, SP, 14H
0079t(E10001D2): BEQ 466 [024CH]
Files.Set(R,u f,v 0)w;x Files.ReadByte(R,y b)z;a
007Au(40E80018): ADD R0, SP, 18H
007Bu .FIXUP D
007Bu(8D10001F): LDR SB, MT, MOD1 [Files]
007Cu(41D80001): ADD R1, SB, VAR1
007Dv(82E00014): LDR R2, SP, 14H
007Ew(43000000): MOV R3, R0, 0H
007Fx .FIXUP P
007Fx(F710B009): BL MOD1 [Files] PROC11
0080y(40E80018): ADD R0, SP, 18H
0081y .FIXUP D
0081y(8D100006): LDR SB, MT, MOD1 [Files]
0082y(41D80001): ADD R1, SB, VAR1
0083z(42E8005C): ADD R2, SP, 5CH
0084a .FIXUP P
0084a(F710E005): BL MOD1 [Files] PROC14
IF b = FontFileId THENb
0085b(90E0005C): LDR R0, SP, 5CH
0086b(400900DB): SUB R0, R0, DBH
0087b(E90001C0): BNE 448 [0248H]
Files.ReadByte(R,c b)d;e (*abstraction*)
0088c(40E80018): ADD R0, SP, 18H
0089c .FIXUP D
0089c(8D100008): LDR SB, MT, MOD1 [Files]
008Ac(41D80001): ADD R1, SB, VAR1
008Bd(42E8005C): ADD R2, SP, 5CH
008Ce .FIXUP P
008Ce(F710E008): BL MOD1 [Files] PROC14
Files.ReadByte(R,f b)g;h (*family*)
008Df(40E80018): ADD R0, SP, 18H
008Ef .FIXUP D
008Ef(8D100005): LDR SB, MT, MOD1 [Files]
008Ff(41D80001): ADD R1, SB, VAR1
0090g(42E8005C): ADD R2, SP, 5CH
0091h .FIXUP P
0091h(F710E005): BL MOD1 [Files] PROC14
Files.ReadByte(R,i b)j;k (*variant*)
0092i(40E80018): ADD R0, SP, 18H
0093i .FIXUP D
0093i(8D100005): LDR SB, MT, MOD1 [Files]
0094i(41D80001): ADD R1, SB, VAR1
0095j(42E8005C): ADD R2, SP, 5CH
0096k .FIXUP P
0096k(F710E005): BL MOD1 [Files] PROC14
NEW(F);l F.namem := name;n
0097l(40E8000C): ADD R0, SP, CH
0098l .FIXUP D
0098l(8D000005): LDR SB, MT, MOD0 [Fonts]
0099l(41D80000): ADD R1, SB, 0H [data]
009Al(D707B90C): BL MT [trap=0, pos=1977]
009Bm(80E0000C): LDR R0, SP, CH
009Cm(D107C04C): BLEQ MT [trap=4, pos=1984]
009Dn(81E00004): LDR R1, SP, 4H
009En(82E00008): LDR R2, SP, 8H
009Fn(E100000B): BEQ 11 [00ABH]
00A0n(42280003): ADD R2, R2, 3H
00A1n(42220002): ASR R2, R2, 2H
00A2n(43000008): MOV R3, R0, 8H
00A3n(03290003): SUB R3, R2, R3
00A4n(DE07C93C): BLGT MT [trap=3, pos=1993]
00A5n(83100000): LDR R3, R1, 0H
00A6n(41180004): ADD R1, R1, 4H
00A7n(A3000000): STR R3, R0, 0H
00A8n(40080004): ADD R0, R0, 4H
00A9n(42290001): SUB R2, R2, 1H
00AAn(E9FFFFFA): BNE -6 [00A5H]
RdInt16(R,o height)p;q RdInt16(R,r minX)s;t RdInt16(R,u maxX)v;w RdInt16(R,x minY)y;z RdInt16(R,a maxY)b;c RdInt16(R,d NofRuns)e;f
00ABo(40E80018): ADD R0, SP, 18H
00ACo(8D100014): LDR SB, MT, MOD1 [Files]
00ADo(41D80001): ADD R1, SB, VAR1
00AEp(42E80038): ADD R2, SP, 38H
00AFq(F7FFFF98): BL -104 [0048H]
00B0r(40E80018): ADD R0, SP, 18H
00B1r .FIXUP D
00B1r(8D100005): LDR SB, MT, MOD1 [Files]
00B2r(41D80001): ADD R1, SB, VAR1
00B3s(42E80039): ADD R2, SP, 39H
00B4t(F7FFFF93): BL -109 [0048H]
00B5u(40E80018): ADD R0, SP, 18H
00B6u .FIXUP D
00B6u(8D100005): LDR SB, MT, MOD1 [Files]
00B7u(41D80001): ADD R1, SB, VAR1
00B8v(42E8003A): ADD R2, SP, 3AH
00B9w(F7FFFF8E): BL -114 [0048H]
00BAx(40E80018): ADD R0, SP, 18H
00BBx(8D100005): LDR SB, MT, MOD1 [Files]
00BCx(41D80001): ADD R1, SB, VAR1
00BDy(42E8003B): ADD R2, SP, 3BH
00BEz(F7FFFF89): BL -119 [0048H]
00BFa(40E80018): ADD R0, SP, 18H
00C0a .FIXUP D
00C0a(8D100005): LDR SB, MT, MOD1 [Files]
00C1a(41D80001): ADD R1, SB, VAR1
00C2b(42E8003C): ADD R2, SP, 3CH
00C3c(F7FFFF84): BL -124 [0048H]
00C4d(40E80018): ADD R0, SP, 18H
00C5d .FIXUP D
00C5d(8D100005): LDR SB, MT, MOD1 [Files]
00C6d(41D80001): ADD R1, SB, VAR1
00C7e(42E80030): ADD R2, SP, 30H
00C8f(F7FFFF7F): BL -129 [0048H]
NofBoxes := 0;g k := 0;h
00C9g(40000000): MOV R0, R0, 0H
00CAg(B0E00031): STR R0, SP, 31H
00CBh(40000000): MOV R0, R0, 0H
00CCh(A0E00048): STR R0, SP, 48H
WHILE k # NofRuns DOi
00CDi(80E00048): LDR R0, SP, 48H
00CEi(91E00030): LDR R1, SP, 30H
00CFi(00090001): SUB R0, R0, R1
00D0i(E1000022): BEQ 34 [00F3H]
RdInt16(R,j beg)k;l
00D1j(40E80018): ADD R0, SP, 18H
00D2j .FIXUP D
00D2j(8D10000D): LDR SB, MT, MOD1 [Files]
00D3j(41D80001): ADD R1, SB, VAR1
00D4k(42E8005D): ADD R2, SP, 5DH
00D5l(F7FFFF72): BL -142 [0048H]
run[k]m.beg := beg;n RdInt16(R,o end)p;q
00D6m(80E00048): LDR R0, SP, 48H
00D7m(41090010): SUB R1, R0, 10H
00D8m(DA08AA1C): BLCC MT [trap=1, pos=2218]
00D9m(40010002): LSL R0, R0, 2H
00DAm(00E80000): ADD R0, SP, R0
00DBn(91E0005D): LDR R1, SP, 5DH
00DCn(B1000060): STR R1, R0, 60H
00DDo(40E80018): ADD R0, SP, 18H
00DEo(8D10000C): LDR SB, MT, MOD1 [Files]
00DFo(41D80001): ADD R1, SB, VAR1
00E0p(42E8005E): ADD R2, SP, 5EH
00E1q(F7FFFF66): BL -154 [0048H]
run[k]r.end := end;s NofBoxes := NofBoxes + end -t beg;u INC(k)
00E2r(80E00048): LDR R0, SP, 48H
00E3r(41090010): SUB R1, R0, 10H
00E4r(DA08D81C): BLCC MT [trap=1, pos=2264]
00E5r(40010002): LSL R0, R0, 2H
00E6r(00E80000): ADD R0, SP, R0
00E7s(91E0005E): LDR R1, SP, 5EH
00E8s(B1000061): STR R1, R0, 61H
00E9t(90E00031): LDR R0, SP, 31H
00EAt(91E0005E): LDR R1, SP, 5EH
00EBt(00080001): ADD R0, R0, R1
00ECu(91E0005D): LDR R1, SP, 5DH
00EDu(00090001): SUB R0, R0, R1
00EEu(B0E00031): STR R0, SP, 31H
00EFv(80E00048): LDR R0, SP, 48H
00F0v(40080001): ADD R0, R0, 1H
00F1v(A0E00048): STR R0, SP, 48H
00F2v(E7FFFFDA): B -38 [00CDH]
NofBytes := 5;w j := 0;x
00F3w(40000005): MOV R0, R0, 5H
00F4w(A0E00034): STR R0, SP, 34H
00F5x(40000000): MOV R0, R0, 0H
00F6x(A0E00044): STR R0, SP, 44H
WHILE j # NofBoxes DOy
00F7y(80E00044): LDR R0, SP, 44H
00F8y(91E00031): LDR R1, SP, 31H
00F9y(00090001): SUB R0, R0, R1
00FAy(E1000049): BEQ 73 [0144H]
RdInt16(R,z box[j]a.dx)b;c RdInt16(R,d box[j]e.x)f;g RdInt16(R,h box[j]i.y)j;k
00FBz(40E80018): ADD R0, SP, 18H
00FCz(8D10001E): LDR SB, MT, MOD1 [Files]
00FDz(41D80001): ADD R1, SB, VAR1
00FEa(82E00044): LDR R2, SP, 44H
00FFa(43290200): SUB R3, R2, 200H
0100a(DA09731C): BLCC MT [trap=1, pos=2419]
0101a(422A0008): MUL R2, R2, 8H
0102a(02E80002): ADD R2, SP, R2
0103b(422800A0): ADD R2, R2, A0H
0104c(F7FFFF43): BL -189 [0048H]
0105d(40E80018): ADD R0, SP, 18H
0106d .FIXUP D
0106d(8D10000A): LDR SB, MT, MOD1 [Files]
0107d(41D80001): ADD R1, SB, VAR1
0108e(82E00044): LDR R2, SP, 44H
0109e(43290200): SUB R3, R2, 200H
010Ae(DA098A1C): BLCC MT [trap=1, pos=2442]
010Be(422A0008): MUL R2, R2, 8H
010Ce(02E80002): ADD R2, SP, R2
010Df(422800A1): ADD R2, R2, A1H
010Eg(F7FFFF39): BL -199 [0048H]
010Fh(40E80018): ADD R0, SP, 18H
0110h .FIXUP D
0110h(8D10000A): LDR SB, MT, MOD1 [Files]
0111h(41D80001): ADD R1, SB, VAR1
0112i(82E00044): LDR R2, SP, 44H
0113i(43290200): SUB R3, R2, 200H
0114i(DA09A01C): BLCC MT [trap=1, pos=2464]
0115i(422A0008): MUL R2, R2, 8H
0116i(02E80002): ADD R2, SP, R2
0117j(422800A2): ADD R2, R2, A2H
0118k(F7FFFF2F): BL -209 [0048H]
RdInt16(R,l box[j]m.w)n;o RdInt16(R,p box[j]q.h)r;s
0119l(40E80018): ADD R0, SP, 18H
011Al .FIXUP D
011Al(8D10000A): LDR SB, MT, MOD1 [Files]
011Bl(41D80001): ADD R1, SB, VAR1
011Cm(82E00044): LDR R2, SP, 44H
011Dm(43290200): SUB R3, R2, 200H
011Em(DA09C01C): BLCC MT [trap=1, pos=2496]
011Fm(422A0008): MUL R2, R2, 8H
0120m(02E80002): ADD R2, SP, R2
0121n(422800A3): ADD R2, R2, A3H
0122o(F7FFFF25): BL -219 [0048H]
0123p(40E80018): ADD R0, SP, 18H
0124p .FIXUP D
0124p(8D10000A): LDR SB, MT, MOD1 [Files]
0125p(41D80001): ADD R1, SB, VAR1
0126q(82E00044): LDR R2, SP, 44H
0127q(43290200): SUB R3, R2, 200H
0128q(DA09D61C): BLCC MT [trap=1, pos=2518]
0129q(422A0008): MUL R2, R2, 8H
012Aq(02E80002): ADD R2, SP, R2
012Br(422800A4): ADD R2, R2, A4H
012Cs(F7FFFF1B): BL -229 [0048H]
NofBytes := NofBytes + 5 +t (box[j]u.w + 7)v DIV 8 *w box[j]x.h;y
012Dt(80E00034): LDR R0, SP, 34H
012Et(40080005): ADD R0, R0, 5H
012Fu(81E00044): LDR R1, SP, 44H
0130u(42190200): SUB R2, R1, 200H
0131u(DA0A071C): BLCC MT [trap=1, pos=2567]
0132u(411A0008): MUL R1, R1, 8H
0133u(01E80001): ADD R1, SP, R1
0134v(911000A3): LDR R1, R1, A3H
0135v(41180007): ADD R1, R1, 7H
0136w(41120003): ASR R1, R1, 3H
0137x(82E00044): LDR R2, SP, 44H
0138x(43290200): SUB R3, R2, 200H
0139x(DA0A1D1C): BLCC MT [trap=1, pos=2589]
013Ax(422A0008): MUL R2, R2, 8H
013Bx(02E80002): ADD R2, SP, R2
013Cy(922000A4): LDR R2, R2, A4H
013Dy(011A0002): MUL R1, R1, R2
013Ey(00080001): ADD R0, R0, R1
013Fy(A0E00034): STR R0, SP, 34H
0140z(80E00044): LDR R0, SP, 44H
0141z(40080001): ADD R0, R0, 1H
0142z(A0E00044): STR R0, SP, 44H
0143z(E7FFFFB3): B -77 [00F7H]
IF NofBytes < 2300 THENa NEW(F) ELSEb NEWc(LF);d F := LF ENDe ;
0144a(80E00034): LDR R0, SP, 34H
0145a(400908FC): SUB R0, R0, 8FCH
0146a(ED000005): BGE 5 [014CH]
0147b(40E8000C): ADD R0, SP, CH
0148b .FIXUP D
0148b(8D000024): LDR SB, MT, MOD0 [Fonts]
0149b(41D80000): ADD R1, SB, 0H [data]
014Ab(D70A6A0C): BL MT [trap=0, pos=2666]
014Bc(E7000006): B 6 [0152H]
014Cd(40E80010): ADD R0, SP, 10H
014Dd .FIXUP D
014Dd(8D000005): LDR SB, MT, MOD0 [Fonts]
014Ed(41D80018): ADD R1, SB, 18H [data]
014Fd(D70A730C): BL MT [trap=0, pos=2675]
0150e(80E00010): LDR R0, SP, 10H
0151e(A0E0000C): STR R0, SP, CH
F.namef := name;g
0152f(80E0000C): LDR R0, SP, CH
0153f(D10A904C): BLEQ MT [trap=4, pos=2704]
0154g(81E00004): LDR R1, SP, 4H
0155g(82E00008): LDR R2, SP, 8H
0156g(E100000B): BEQ 11 [0162H]
0157g(42280003): ADD R2, R2, 3H
0158g(42220002): ASR R2, R2, 2H
0159g(43000008): MOV R3, R0, 8H
015Ag(03290003): SUB R3, R2, R3
015Bg(DE0A993C): BLGT MT [trap=3, pos=2713]
015Cg(83100000): LDR R3, R1, 0H
015Dg(41180004): ADD R1, R1, 4H
015Eg(A3000000): STR R3, R0, 0H
015Fg(40080004): ADD R0, R0, 4H
0160g(42290001): SUB R2, R2, 1H
0161g(E9FFFFFA): BNE -6 [015CH]
F.heighth := height;i F.minXj := minX;k F.maxXl := maxX;m F.maxYn := maxY;o
0162h(80E0000C): LDR R0, SP, CH
0163h(D10AAA4C): BLEQ MT [trap=4, pos=2730]
0164i(91E00038): LDR R1, SP, 38H
0165i(A1000020): STR R1, R0, 20H
0166j(80E0000C): LDR R0, SP, CH
0167j(D10ABC4C): BLEQ MT [trap=4, pos=2748]
0168k(91E00039): LDR R1, SP, 39H
0169k(A1000024): STR R1, R0, 24H
016Al(80E0000C): LDR R0, SP, CH
016Bl(D10ACC4C): BLEQ MT [trap=4, pos=2764]
016Cm(91E0003A): LDR R1, SP, 3AH
016Dm(A1000028): STR R1, R0, 28H
016En(80E0000C): LDR R0, SP, CH
016Fn(D10ADC4C): BLEQ MT [trap=4, pos=2780]
0170o(91E0003C): LDR R1, SP, 3CH
0171o(A1000030): STR R1, R0, 30H
IF minY >= 80H THENp F.minYq := minY - 100H ELSEr Fs.minYt := minY ENDu ;
0172p(90E0003B): LDR R0, SP, 3BH
0173p(40090080): SUB R0, R0, 80H
0174p(E5000006): BLT 6 [017BH]
0175q(80E0000C): LDR R0, SP, CH
0176q(D10B084C): BLEQ MT [trap=4, pos=2824]
0177r(91E0003B): LDR R1, SP, 3BH
0178r(41190100): SUB R1, R1, 100H
0179r(A100002C): STR R1, R0, 2CH
017As(E7000004): B 4 [017FH]
017Bt(80E0000C): LDR R0, SP, CH
017Ct(D10B234C): BLEQ MT [trap=4, pos=2851]
017Du(91E0003B): LDR R1, SP, 3BH
017Eu(A100002C): STR R1, R0, 2CH
a0 := SYSTEM.ADR(F.rasterv);w
017Fv(80E0000C): LDR R0, SP, CH
0180v(D10B534C): BLEQ MT [trap=4, pos=2899]
0181w(40080238): ADD R0, R0, 238H
0182w(A0E00058): STR R0, SP, 58H
SYSTEM.PUT(a0, 0X);x SYSTEM.PUT(a0+1,y 0X);z SYSTEM.PUT(a0+2,a 0X);b SYSTEM.PUT(a0+3,c 0X);d SYSTEM.PUT(a0+4,e 0X);f
0183x(80E00058): LDR R0, SP, 58H
0184x(41000000): MOV R1, R0, 0H
0185x(B1000000): STR R1, R0, 0H
0186y(80E00058): LDR R0, SP, 58H
0187y(40080001): ADD R0, R0, 1H
0188z(41000000): MOV R1, R0, 0H
0189z(B1000000): STR R1, R0, 0H
018Aa(80E00058): LDR R0, SP, 58H
018Ba(40080002): ADD R0, R0, 2H
018Cb(41000000): MOV R1, R0, 0H
018Db(B1000000): STR R1, R0, 0H
018Ec(80E00058): LDR R0, SP, 58H
018Fc(40080003): ADD R0, R0, 3H
0190d(41000000): MOV R1, R0, 0H
0191d(B1000000): STR R1, R0, 0H
0192e(80E00058): LDR R0, SP, 58H
0193e(40080004): ADD R0, R0, 4H
0194f(41000000): MOV R1, R0, 0H
0195f(B1000000): STR R1, R0, 0H
(*null pattern for characters not in a run*)
INC(a0, 2);g a := a0+3;h j := 0;i k := 0;j m := 0;k
0196g(80E00058): LDR R0, SP, 58H
0197g(40080002): ADD R0, R0, 2H
0198g(A0E00058): STR R0, SP, 58H
0199h(80E00058): LDR R0, SP, 58H
019Ah(40080003): ADD R0, R0, 3H
019Bh(A0E00054): STR R0, SP, 54H
019Ci(40000000): MOV R0, R0, 0H
019Di(A0E00044): STR R0, SP, 44H
019Ej(40000000): MOV R0, R0, 0H
019Fj(A0E00048): STR R0, SP, 48H
01A0k(40000000): MOV R0, R0, 0H
01A1k(A0E0004C): STR R0, SP, 4CH
WHILE k < NofRuns DOl
01A2l(80E00048): LDR R0, SP, 48H
01A3l(91E00030): LDR R1, SP, 30H
01A4l(00090001): SUB R0, R0, R1
01A5l(ED00008A): BGE 138 [0230H]
WHILE (m < run[k]m.beg)n & (om < 128)p DOq F.Tr[m]s := a0;t INC(m) ENDu;
01A6m(80E00048): LDR R0, SP, 48H
01A7m(41090010): SUB R1, R0, 10H
01A8m(DA0C6E1C): BLCC MT [trap=1, pos=3182]
01A9m(40010002): LSL R0, R0, 2H
01AAm(00E80000): ADD R0, SP, R0
01ABn(81E0004C): LDR R1, SP, 4CH
01ACn(90000060): LDR R0, R0, 60H
01ADn(01190000): SUB R1, R1, R0
01AEo(ED000010): BGE 16 [01BFH]
01AFp(80E0004C): LDR R0, SP, 4CH
01B0p(40090080): SUB R0, R0, 80H
01B1q(ED00000D): BGE 13 [01BFH]
01B2r(80E0000C): LDR R0, SP, CH
01B3r(D10C864C): BLEQ MT [trap=4, pos=3206]
01B4s(81E0004C): LDR R1, SP, 4CH
01B5s(42190080): SUB R2, R1, 80H
01B6s(DA0C891C): BLCC MT [trap=1, pos=3209]
01B7s(41110002): LSL R1, R1, 2H
01B8s(00080001): ADD R0, R0, R1
01B9t(81E00058): LDR R1, SP, 58H
01BAt(A1000038): STR R1, R0, 38H
01BBu(80E0004C): LDR R0, SP, 4CH
01BCu(40080001): ADD R0, R0, 1H
01BDu(A0E0004C): STR R0, SP, 4CH
01BEu(E7FFFFE7): B -25 [01A6H]
WHILE (m < run[k]v.end)w & (xm < 128)y DOz
01BFv(80E00048): LDR R0, SP, 48H
01C0v(41090010): SUB R1, R0, 10H
01C1v(DA0CB81C): BLCC MT [trap=1, pos=3256]
01C2v(40010002): LSL R0, R0, 2H
01C3v(00E80000): ADD R0, SP, R0
01C4w(81E0004C): LDR R1, SP, 4CH
01C5w(90000061): LDR R0, R0, 61H
01C6w(01190000): SUB R1, R1, R0
01C7x(ED000064): BGE 100 [022CH]
01C8y(80E0004C): LDR R0, SP, 4CH
01C9y(40090080): SUB R0, R0, 80H
01CAz(ED000061): BGE 97 [022CH]
F.Ta[m]b := a+3;c
01CBa(80E0000C): LDR R0, SP, CH
01CCa(D10CDC4C): BLEQ MT [trap=4, pos=3292]
01CDb(81E0004C): LDR R1, SP, 4CH
01CEb(42190080): SUB R2, R1, 80H
01CFb(DA0CDF1C): BLCC MT [trap=1, pos=3295]
01D0b(41110002): LSL R1, R1, 2H
01D1b(00080001): ADD R0, R0, R1
01D2c(81E00054): LDR R1, SP, 54H
01D3c(41180003): ADD R1, R1, 3H
01D4c(A1000038): STR R1, R0, 38H
SYSTEM.PUT(a, box[j]d.dx);e SYSTEM.PUT(a+1,f box[j]g.x);h SYSTEM.PUT(a+2,i box[j]j.y);k
01D5d(80E00044): LDR R0, SP, 44H
01D6d(41090200): SUB R1, R0, 200H
01D7d(DA0D081C): BLCC MT [trap=1, pos=3336]
01D8d(400A0008): MUL R0, R0, 8H
01D9d(00E80000): ADD R0, SP, R0
01DAe(81E00054): LDR R1, SP, 54H
01DBe(900000A0): LDR R0, R0, A0H
01DCe(B0100000): STR R0, R1, 0H
01DDf(80E00054): LDR R0, SP, 54H
01DEf(40080001): ADD R0, R0, 1H
01DFg(81E00044): LDR R1, SP, 44H
01E0g(42190200): SUB R2, R1, 200H
01E1g(DA0D241C): BLCC MT [trap=1, pos=3364]
01E2g(411A0008): MUL R1, R1, 8H
01E3g(01E80001): ADD R1, SP, R1
01E4h(911000A1): LDR R1, R1, A1H
01E5h(B1000000): STR R1, R0, 0H
01E6i(80E00054): LDR R0, SP, 54H
01E7i(40080002): ADD R0, R0, 2H
01E8j(81E00044): LDR R1, SP, 44H
01E9j(42190200): SUB R2, R1, 200H
01EAj(DA0D3F1C): BLCC MT [trap=1, pos=3391]
01EBj(411A0008): MUL R1, R1, 8H
01ECj(01E80001): ADD R1, SP, R1
01EDk(911000A2): LDR R1, R1, A2H
01EEk(B1000000): STR R1, R0, 0H
SYSTEM.PUT(a+3,l box[j]m.w);n SYSTEM.PUT(a+4,o box[j]p.h);q INC(a, 5);r
01EFl(80E00054): LDR R0, SP, 54H
01F0l(40080003): ADD R0, R0, 3H
01F1m(81E00044): LDR R1, SP, 44H
01F2m(42190200): SUB R2, R1, 200H
01F3m(DA0D661C): BLCC MT [trap=1, pos=3430]
01F4m(411A0008): MUL R1, R1, 8H
01F5m(01E80001): ADD R1, SP, R1
01F6n(911000A3): LDR R1, R1, A3H
01F7n(B1000000): STR R1, R0, 0H
01F8o(80E00054): LDR R0, SP, 54H
01F9o(40080004): ADD R0, R0, 4H
01FAp(81E00044): LDR R1, SP, 44H
01FBp(42190200): SUB R2, R1, 200H
01FCp(DA0D811C): BLCC MT [trap=1, pos=3457]
01FDp(411A0008): MUL R1, R1, 8H
01FEp(01E80001): ADD R1, SP, R1
01FFq(911000A4): LDR R1, R1, A4H
0200q(B1000000): STR R1, R0, 0H
0201r(80E00054): LDR R0, SP, 54H
0202r(40080005): ADD R0, R0, 5H
0203r(A0E00054): STR R0, SP, 54H
n := (box[j]s.w + 7)t DIV 8 *u box[j]v.h;w
0204s(80E00044): LDR R0, SP, 44H
0205s(41090200): SUB R1, R0, 200H
0206s(DA0DA91C): BLCC MT [trap=1, pos=3497]
0207s(400A0008): MUL R0, R0, 8H
0208s(00E80000): ADD R0, SP, R0
0209t(900000A3): LDR R0, R0, A3H
020At(40080007): ADD R0, R0, 7H
020Bu(40020003): ASR R0, R0, 3H
020Cv(81E00044): LDR R1, SP, 44H
020Dv(42190200): SUB R2, R1, 200H
020Ev(DA0DBF1C): BLCC MT [trap=1, pos=3519]
020Fv(411A0008): MUL R1, R1, 8H
0210v(01E80001): ADD R1, SP, R1
0211w(911000A4): LDR R1, R1, A4H
0212w(000A0001): MUL R0, R0, R1
0213w(A0E00050): STR R0, SP, 50H
WHILE n # 0 DOx DEC(n);y Files.ReadByte(R,z b)a;b SYSTEM.PUT(a, b);c INC(a) ENDd ;
0214x(80E00050): LDR R0, SP, 50H
0215x(E100000F): BEQ 15 [0225H]
0216y(80E00050): LDR R0, SP, 50H
0217y(40090001): SUB R0, R0, 1H
0218y(A0E00050): STR R0, SP, 50H
0219z(40E80018): ADD R0, SP, 18H
021Az .FIXUP D
021Az(8D1000CD): LDR SB, MT, MOD1 [Files]
021Bz(41D80001): ADD R1, SB, VAR1
021Ca(42E8005C): ADD R2, SP, 5CH
021Db .FIXUP P
021Db(F710E187): BL MOD1 [Files] PROC14
021Ec(80E00054): LDR R0, SP, 54H
021Fc(91E0005C): LDR R1, SP, 5CH
0220c(B1000000): STR R1, R0, 0H
0221d(80E00054): LDR R0, SP, 54H
0222d(40080001): ADD R0, R0, 1H
0223d(A0E00054): STR R0, SP, 54H
0224d(E7FFFFEF): B -17 [0214H]
INC(j);e INC(m)
0225e(80E00044): LDR R0, SP, 44H
0226e(40080001): ADD R0, R0, 1H
0227e(A0E00044): STR R0, SP, 44H
0228f(80E0004C): LDR R0, SP, 4CH
0229f(40080001): ADD R0, R0, 1H
022Af(A0E0004C): STR R0, SP, 4CH
022Bf(E7FFFF93): B -109 [01BFH]
022Cg(80E00048): LDR R0, SP, 48H
022Dg(40080001): ADD R0, R0, 1H
022Eg(A0E00048): STR R0, SP, 48H
022Fg(E7FFFF72): B -142 [01A2H]
WHILE m < 128 DOh F.Ti[m]j := a0;k INC(m) ENDl ;
0230h(80E0004C): LDR R0, SP, 4CH
0231h(40090080): SUB R0, R0, 80H
0232h(ED00000D): BGE 13 [0240H]
0233i(80E0000C): LDR R0, SP, CH
0234i(D10E7F4C): BLEQ MT [trap=4, pos=3711]
0235j(81E0004C): LDR R1, SP, 4CH
0236j(42190080): SUB R2, R1, 80H
0237j(DA0E821C): BLCC MT [trap=1, pos=3714]
0238j(41110002): LSL R1, R1, 2H
0239j(00080001): ADD R0, R0, R1
023Ak(81E00058): LDR R1, SP, 58H
023Bk(A1000038): STR R1, R0, 38H
023Cl(80E0004C): LDR R0, SP, 4CH
023Dl(40080001): ADD R0, R0, 1H
023El(A0E0004C): STR R0, SP, 4CH
023Fl(E7FFFFF0): B -16 [0230H]
F.nextm := root;n root := F
0240m(80E0000C): LDR R0, SP, CH
0241m(D10EA54C): BLEQ MT [trap=4, pos=3749]
0242n .FIXUP D
0242n(8D000028): LDR SB, MT, MOD0 [Fonts]
0243n(81D00034): LDR R1, SB, 34H [data]
0244n(A1000034): STR R1, R0, 34H
ELSEo (*bad file id*) Fp := Default
0245o(80E0000C): LDR R0, SP, CH
0246o(A0D00034): STR R0, SB, 34H
0247p(E7000003): B 3 [024BH]
0248q .FIXUP D
0248q(8D000006): LDR SB, MT, MOD0 [Fonts]
0249q(80D00030): LDR R0, SB, 30H [data]
024Aq(A0E0000C): STR R0, SP, CH
ELSE (*font file not available*) Fr := Default
024Br(E7000003): B 3 [024FH]
024Cs .FIXUP D
024Cs(8D000004): LDR SB, MT, MOD0 [Fonts]
024Ds(80D00030): LDR R0, SB, 30H [data]
024Es(A0E0000C): STR R0, SP, CH
ENDt This;
024Ft(80E0000C): LDR R0, SP, CH
0250t(8FE00000): LDR LNK, SP, 0H
0251t(4EE810A0): ADD SP, SP, 10A0H
0252t(C700000F): B LNK
PROCEDURE Free*; (*remove all but first two from font list*)
VAR f: Font;
BEGINu f := root.nextv;w
0253u .PROC 6
0253u .COMMAND Free
0253u(4EE90008): SUB SP, SP, 8H
0254u(AFE00000): STR LNK, SP, 0H
0255v .FIXUP D
0255v(8D000009): LDR SB, MT, MOD0 [Fonts]
0256v(80D00034): LDR R0, SB, 34H [data]
0257v(D10FA34C): BLEQ MT [trap=4, pos=4003]
0258w(80000034): LDR R0, R0, 34H
0259w(A0E00004): STR R0, SP, 4H
IF f # NIL THENx f := f.nexty ENDz ;
025Ax(80E00004): LDR R0, SP, 4H
025Bx(E1000004): BEQ 4 [0260H]
025Cy(80E00004): LDR R0, SP, 4H
025Dy(D10FC24C): BLEQ MT [trap=4, pos=4034]
025Ez(80000034): LDR R0, R0, 34H
025Fz(A0E00004): STR R0, SP, 4H
f.nexta := NIL
0260a(80E00004): LDR R0, SP, 4H
0261a(D10FD14C): BLEQ MT [trap=4, pos=4049]
ENDb Free;
0262b(41000000): MOV R1, R0, 0H
0263b(A1000034): STR R1, R0, 34H
0264b(8FE00000): LDR LNK, SP, 0H
0265b(4EE80008): ADD SP, SP, 8H
0266b(C700000F): B LNK
BEGINc root := NIL;d Default := This("Oberon10.Scn.Fnt")e
0267c .PROC 0
0267c(4EE90004): SUB SP, SP, 4H
0268c(AFE00000): STR LNK, SP, 0H
0269d(40000000): MOV R0, R0, 0H
026Ad .FIXUP D
026Ad(8D000015): LDR SB, MT, MOD0 [Fonts]
026Bd(A0D00034): STR R0, SB, 34H [data]
026Ce(40D80038): ADD R0, SB, 38H
026De(41000011): MOV R1, R0, 11H
ENDf Fonts.g
026Ef(F7FFFDE9): BL -535 [0058H]
026Ff .FIXUP D
026Ff(8D000005): LDR SB, MT, MOD0 [Fonts]
0270f(A0D00030): STR R0, SB, 30H [data]
0271g(8FE00000): LDR LNK, SP, 0H
0272g(4EE80004): ADD SP, SP, 4H
0273g(C700000F): B LNK