| 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) |
| .TYPEDESC 00000C00 FFFFFFFF FFFFFFFF FFFFFFFF 00000034 FFFFFFFF 00001600 00018007 FFFFFFFF FFFFFFFF 00000034 FFFFFFFF |
| .DATA 8H |
| .STRING 38H "Oberon10.Scn.Fnt" |
| .POINTER_REFERENCES 30H 34H |
| .FIXUP T 7H |
| IMPORT SYSTEM, Files; |
| |
| CONST FontFileId = 0DBH; |
| |
| TYPE Font* = POINTER TO FontDesc; |
| FontDesc* = RECORD |
| name*: ARRAY 32 OF CHAR; |
| height*, minX*, maxX*, minY*, maxY*: INTEGER; |
| next*: Font; |
| T: ARRAY 128 OF INTEGER; |
| raster: ARRAY 2360 OF BYTE |
| END ; |
| |
| 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 |
0000 | a .PROC 1 |
0000 | a .PROC 4 |
0000 | a(4EE90030): SUB SP, SP, 30H |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | a(A0E00004): STR R0, SP, 4H |
0003 | a(A1E00008): STR R1, SP, 8H |
0004 | a(A2E0000C): STR R2, SP, CH |
0005 | a(A3E00010): STR R3, SP, 10H |
0006 | a(A4E00014): STR R4, SP, 14H |
0007 | a(A5E00018): STR R5, SP, 18H |
0008 | a(A6E0001C): STR R6, SP, 1CH |
0009 | a(A7E00020): STR R7, SP, 20H |
000A | b(80E00004): LDR R0, SP, 4H |
000B | b(D103164C): BLEQ MT [trap=4, pos=790] |
000C | c .PROC 2 |
000C | c(91E00008): LDR R1, SP, 8H |
000D | d .PROC 3 |
000D | d(4114007F): AND R1, R1, 7FH |
000E | d(42190080): SUB R2, R1, 80H |
000F | d(DA03271C): BLCC MT [trap=1, pos=807] |
0010 | d(41110002): LSL R1, R1, 2H |
0011 | d(00080001): ADD R0, R0, R1 |
0012 | e(80000038): LDR R0, R0, 38H |
0013 | e(A0E00024): STR R0, SP, 24H |
0014 | f(80E00024): LDR R0, SP, 24H |
0015 | f(81E00020): LDR R1, SP, 20H |
0016 | f(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 |
0017 | g(80E00024): LDR R0, SP, 24H |
0018 | g(40090003): SUB R0, R0, 3H |
0019 | h(90000000): LDR R0, R0, 0H |
001A | h(B0E00028): STR R0, SP, 28H |
001B | i(80E00024): LDR R0, SP, 24H |
001C | i(40090002): SUB R0, R0, 2H |
001D | j(90000000): LDR R0, R0, 0H |
001E | j(B0E00029): STR R0, SP, 29H |
001F | k(80E00024): LDR R0, SP, 24H |
0020 | k(40090001): SUB R0, R0, 1H |
0021 | l(90000000): LDR R0, R0, 0H |
0022 | l(B0E0002A): STR R0, SP, 2AH |
0023 | m(80E00024): LDR R0, SP, 24H |
0024 | m(90000000): LDR R0, R0, 0H |
0025 | m(B0E0002B): STR R0, SP, 2BH |
0026 | n(80E00024): LDR R0, SP, 24H |
0027 | n(40080001): ADD R0, R0, 1H |
0028 | o(90000000): LDR R0, R0, 0H |
0029 | o(B0E0002C): STR R0, SP, 2CH |
| dx := dxb;p x := xb;q y := yb;r w := wb;s h := hb;t |
002A | p(90E00028): LDR R0, SP, 28H |
002B | p(81E0000C): LDR R1, SP, CH |
002C | p(A0100000): STR R0, R1, 0H |
002D | q(90E00029): LDR R0, SP, 29H |
002E | q(81E00010): LDR R1, SP, 10H |
002F | q(A0100000): STR R0, R1, 0H |
0030 | r(90E0002A): LDR R0, SP, 2AH |
0031 | r(81E00014): LDR R1, SP, 14H |
0032 | r(A0100000): STR R0, R1, 0H |
0033 | s(90E0002B): LDR R0, SP, 2BH |
0034 | s(81E00018): LDR R1, SP, 18H |
0035 | s(A0100000): STR R0, R1, 0H |
0036 | t(90E0002C): LDR R0, SP, 2CH |
0037 | t(81E0001C): LDR R1, SP, 1CH |
0038 | t(A0100000): STR R0, R1, 0H |
| IF yb < 128 THENu y := yb ELSEv yw := yb - 256 ENDx |
0039 | u(90E0002A): LDR R0, SP, 2AH |
003A | u(40090080): SUB R0, R0, 80H |
003B | u(ED000004): BGE 4 [0040H] |
003C | v(90E0002A): LDR R0, SP, 2AH |
003D | v(81E00014): LDR R1, SP, 14H |
003E | v(A0100000): STR R0, R1, 0H |
003F | w(E7000004): B 4 [0044H] |
0040 | x(90E0002A): LDR R0, SP, 2AH |
0041 | x(40090100): SUB R0, R0, 100H |
0042 | x(81E00014): LDR R1, SP, 14H |
0043 | x(A0100000): STR R0, R1, 0H |
| ENDy GetPat; |
0044 | y(8FE00000): LDR LNK, SP, 0H |
0045 | y(4EE80030): ADD SP, SP, 30H |
0046 | y(C700000F): B LNK |
| |
| PROCEDURE This*(name: ARRAY OF CHAR): Font; |
| |
| 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); |
0047 | z(E7000010): B 16 [0058H] |
| VAR b1: BYTE; |
| BEGINa Files.ReadByte(R,b b0)c;d Files.ReadByte(R,e b1)f |
0048 | a(4EE90014): SUB SP, SP, 14H |
0049 | a(AFE00000): STR LNK, SP, 0H |
004A | a(A0E00004): STR R0, SP, 4H |
004B | a(A1E00008): STR R1, SP, 8H |
004C | a(A2E0000C): STR R2, SP, CH |
004D | b(80E00004): LDR R0, SP, 4H |
004E | b(81E00008): LDR R1, SP, 8H |
004F | c(82E0000C): LDR R2, SP, CH |
0050 | d .FIXUP P |
0050 | d(F710E050): BL MOD1 [Files] PROC14 |
0051 | e(80E00004): LDR R0, SP, 4H |
0052 | e(81E00008): LDR R1, SP, 8H |
0053 | f(42E80010): ADD R2, SP, 10H |
| ENDg RdInt16; |
0054 | g .FIXUP P |
0054 | g(F710E004): BL MOD1 [Files] PROC14 |
0055 | g(8FE00000): LDR LNK, SP, 0H |
0056 | g(4EE80014): ADD SP, SP, 14H |
0057 | g(C700000F): B LNK |
| |
| BEGINh F := root;i |
0058 | h .PROC 5 |
0058 | h(4EE910A0): SUB SP, SP, 10A0H |
0059 | h(AFE00000): STR LNK, SP, 0H |
005A | h(A0E00004): STR R0, SP, 4H |
005B | h(A1E00008): STR R1, SP, 8H |
005C | i .FIXUP D |
005C | i(8D00005C): LDR SB, MT, MOD0 [Fonts] |
005D | i(80D00034): LDR R0, SB, 34H [data] |
005E | i(A0E0000C): STR R0, SP, CH |
| WHILE (F # NIL)j & (kname # F.namel)m DOn F := F.nexto ENDp; |
005F | j(80E0000C): LDR R0, SP, CH |
0060 | k(E1000011): BEQ 17 [0072H] |
0061 | l(80E0000C): LDR R0, SP, CH |
0062 | l(D106864C): BLEQ MT [trap=4, pos=1670] |
0063 | m(81E00004): LDR R1, SP, 4H |
0064 | m(92100000): LDR R2, R1, 0H |
0065 | m(41180001): ADD R1, R1, 1H |
0066 | m(93000000): LDR R3, R0, 0H |
0067 | m(40080001): ADD R0, R0, 1H |
0068 | m(04290003): SUB R4, R2, R3 |
0069 | m(E9000002): BNE 2 [006CH] |
006A | m(44290000): SUB R4, R2, 0H |
006B | m(E9FFFFF8): BNE -8 [0064H] |
006C | n(E1000005): BEQ 5 [0072H] |
006D | o(80E0000C): LDR R0, SP, CH |
006E | o(D106964C): BLEQ MT [trap=4, pos=1686] |
006F | p(80000034): LDR R0, R0, 34H |
0070 | p(A0E0000C): STR R0, SP, CH |
0071 | p(E7FFFFED): B -19 [005FH] |
| IF F = NIL THENq |
0072 | q(80E0000C): LDR R0, SP, CH |
0073 | q(E90001DB): BNE 475 [024FH] |
| f := Files.Old(name)r;s |
0074 | r(80E00004): LDR R0, SP, 4H |
0075 | r(81E00008): LDR R1, SP, 8H |
0076 | s .FIXUP P |
0076 | s(F7102022): BL MOD1 [Files] PROC2 |
0077 | s(A0E00014): STR R0, SP, 14H |
| IF f # NIL THENt |
0078 | t(80E00014): LDR R0, SP, 14H |
0079 | t(E10001D2): BEQ 466 [024CH] |
| Files.Set(R,u f,v 0)w;x Files.ReadByte(R,y b)z;a |
007A | u(40E80018): ADD R0, SP, 18H |
007B | u .FIXUP D |
007B | u(8D10001F): LDR SB, MT, MOD1 [Files] |
007C | u(41D80001): ADD R1, SB, VAR1 |
007D | v(82E00014): LDR R2, SP, 14H |
007E | w(43000000): MOV R3, R0, 0H |
007F | x .FIXUP P |
007F | x(F710B009): BL MOD1 [Files] PROC11 |
0080 | y(40E80018): ADD R0, SP, 18H |
0081 | y .FIXUP D |
0081 | y(8D100006): LDR SB, MT, MOD1 [Files] |
0082 | y(41D80001): ADD R1, SB, VAR1 |
0083 | z(42E8005C): ADD R2, SP, 5CH |
0084 | a .FIXUP P |
0084 | a(F710E005): BL MOD1 [Files] PROC14 |
| IF b = FontFileId THENb |
0085 | b(90E0005C): LDR R0, SP, 5CH |
0086 | b(400900DB): SUB R0, R0, DBH |
0087 | b(E90001C0): BNE 448 [0248H] |
| Files.ReadByte(R,c b)d;e (*abstraction*) |
0088 | c(40E80018): ADD R0, SP, 18H |
0089 | c .FIXUP D |
0089 | c(8D100008): LDR SB, MT, MOD1 [Files] |
008A | c(41D80001): ADD R1, SB, VAR1 |
008B | d(42E8005C): ADD R2, SP, 5CH |
008C | e .FIXUP P |
008C | e(F710E008): BL MOD1 [Files] PROC14 |
| Files.ReadByte(R,f b)g;h (*family*) |
008D | f(40E80018): ADD R0, SP, 18H |
008E | f .FIXUP D |
008E | f(8D100005): LDR SB, MT, MOD1 [Files] |
008F | f(41D80001): ADD R1, SB, VAR1 |
0090 | g(42E8005C): ADD R2, SP, 5CH |
0091 | h .FIXUP P |
0091 | h(F710E005): BL MOD1 [Files] PROC14 |
| Files.ReadByte(R,i b)j;k (*variant*) |
0092 | i(40E80018): ADD R0, SP, 18H |
0093 | i .FIXUP D |
0093 | i(8D100005): LDR SB, MT, MOD1 [Files] |
0094 | i(41D80001): ADD R1, SB, VAR1 |
0095 | j(42E8005C): ADD R2, SP, 5CH |
0096 | k .FIXUP P |
0096 | k(F710E005): BL MOD1 [Files] PROC14 |
| NEW(F);l F.namem := name;n |
0097 | l(40E8000C): ADD R0, SP, CH |
0098 | l .FIXUP D |
0098 | l(8D000005): LDR SB, MT, MOD0 [Fonts] |
0099 | l(41D80000): ADD R1, SB, 0H [data] |
009A | l(D707B90C): BL MT [trap=0, pos=1977] |
009B | m(80E0000C): LDR R0, SP, CH |
009C | m(D107C04C): BLEQ MT [trap=4, pos=1984] |
009D | n(81E00004): LDR R1, SP, 4H |
009E | n(82E00008): LDR R2, SP, 8H |
009F | n(E100000B): BEQ 11 [00ABH] |
00A0 | n(42280003): ADD R2, R2, 3H |
00A1 | n(42220002): ASR R2, R2, 2H |
00A2 | n(43000008): MOV R3, R0, 8H |
00A3 | n(03290003): SUB R3, R2, R3 |
00A4 | n(DE07C93C): BLGT MT [trap=3, pos=1993] |
00A5 | n(83100000): LDR R3, R1, 0H |
00A6 | n(41180004): ADD R1, R1, 4H |
00A7 | n(A3000000): STR R3, R0, 0H |
00A8 | n(40080004): ADD R0, R0, 4H |
00A9 | n(42290001): SUB R2, R2, 1H |
00AA | n(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 |
00AB | o(40E80018): ADD R0, SP, 18H |
00AC | o .FIXUP D |
00AC | o(8D100014): LDR SB, MT, MOD1 [Files] |
00AD | o(41D80001): ADD R1, SB, VAR1 |
00AE | p(42E80038): ADD R2, SP, 38H |
00AF | q(F7FFFF98): BL -104 [0048H] |
00B0 | r(40E80018): ADD R0, SP, 18H |
00B1 | r .FIXUP D |
00B1 | r(8D100005): LDR SB, MT, MOD1 [Files] |
00B2 | r(41D80001): ADD R1, SB, VAR1 |
00B3 | s(42E80039): ADD R2, SP, 39H |
00B4 | t(F7FFFF93): BL -109 [0048H] |
00B5 | u(40E80018): ADD R0, SP, 18H |
00B6 | u .FIXUP D |
00B6 | u(8D100005): LDR SB, MT, MOD1 [Files] |
00B7 | u(41D80001): ADD R1, SB, VAR1 |
00B8 | v(42E8003A): ADD R2, SP, 3AH |
00B9 | w(F7FFFF8E): BL -114 [0048H] |
00BA | x(40E80018): ADD R0, SP, 18H |
00BB | x .FIXUP D |
00BB | x(8D100005): LDR SB, MT, MOD1 [Files] |
00BC | x(41D80001): ADD R1, SB, VAR1 |
00BD | y(42E8003B): ADD R2, SP, 3BH |
00BE | z(F7FFFF89): BL -119 [0048H] |
00BF | a(40E80018): ADD R0, SP, 18H |
00C0 | a .FIXUP D |
00C0 | a(8D100005): LDR SB, MT, MOD1 [Files] |
00C1 | a(41D80001): ADD R1, SB, VAR1 |
00C2 | b(42E8003C): ADD R2, SP, 3CH |
00C3 | c(F7FFFF84): BL -124 [0048H] |
00C4 | d(40E80018): ADD R0, SP, 18H |
00C5 | d .FIXUP D |
00C5 | d(8D100005): LDR SB, MT, MOD1 [Files] |
00C6 | d(41D80001): ADD R1, SB, VAR1 |
00C7 | e(42E80030): ADD R2, SP, 30H |
00C8 | f(F7FFFF7F): BL -129 [0048H] |
| NofBoxes := 0;g k := 0;h |
00C9 | g(40000000): MOV R0, R0, 0H |
00CA | g(B0E00031): STR R0, SP, 31H |
00CB | h(40000000): MOV R0, R0, 0H |
00CC | h(A0E00048): STR R0, SP, 48H |
| WHILE k # NofRuns DOi |
00CD | i(80E00048): LDR R0, SP, 48H |
00CE | i(91E00030): LDR R1, SP, 30H |
00CF | i(00090001): SUB R0, R0, R1 |
00D0 | i(E1000022): BEQ 34 [00F3H] |
| RdInt16(R,j beg)k;l |
00D1 | j(40E80018): ADD R0, SP, 18H |
00D2 | j .FIXUP D |
00D2 | j(8D10000D): LDR SB, MT, MOD1 [Files] |
00D3 | j(41D80001): ADD R1, SB, VAR1 |
00D4 | k(42E8005D): ADD R2, SP, 5DH |
00D5 | l(F7FFFF72): BL -142 [0048H] |
| run[k]m.beg := beg;n RdInt16(R,o end)p;q |
00D6 | m(80E00048): LDR R0, SP, 48H |
00D7 | m(41090010): SUB R1, R0, 10H |
00D8 | m(DA08AA1C): BLCC MT [trap=1, pos=2218] |
00D9 | m(40010002): LSL R0, R0, 2H |
00DA | m(00E80000): ADD R0, SP, R0 |
00DB | n(91E0005D): LDR R1, SP, 5DH |
00DC | n(B1000060): STR R1, R0, 60H |
00DD | o(40E80018): ADD R0, SP, 18H |
00DE | o .FIXUP D |
00DE | o(8D10000C): LDR SB, MT, MOD1 [Files] |
00DF | o(41D80001): ADD R1, SB, VAR1 |
00E0 | p(42E8005E): ADD R2, SP, 5EH |
00E1 | q(F7FFFF66): BL -154 [0048H] |
| run[k]r.end := end;s NofBoxes := NofBoxes + end -t beg;u INC(k) |
00E2 | r(80E00048): LDR R0, SP, 48H |
00E3 | r(41090010): SUB R1, R0, 10H |
00E4 | r(DA08D81C): BLCC MT [trap=1, pos=2264] |
00E5 | r(40010002): LSL R0, R0, 2H |
00E6 | r(00E80000): ADD R0, SP, R0 |
00E7 | s(91E0005E): LDR R1, SP, 5EH |
00E8 | s(B1000061): STR R1, R0, 61H |
00E9 | t(90E00031): LDR R0, SP, 31H |
00EA | t(91E0005E): LDR R1, SP, 5EH |
00EB | t(00080001): ADD R0, R0, R1 |
00EC | u(91E0005D): LDR R1, SP, 5DH |
00ED | u(00090001): SUB R0, R0, R1 |
00EE | u(B0E00031): STR R0, SP, 31H |
| ENDv; |
00EF | v(80E00048): LDR R0, SP, 48H |
00F0 | v(40080001): ADD R0, R0, 1H |
00F1 | v(A0E00048): STR R0, SP, 48H |
00F2 | v(E7FFFFDA): B -38 [00CDH] |
| NofBytes := 5;w j := 0;x |
00F3 | w(40000005): MOV R0, R0, 5H |
00F4 | w(A0E00034): STR R0, SP, 34H |
00F5 | x(40000000): MOV R0, R0, 0H |
00F6 | x(A0E00044): STR R0, SP, 44H |
| WHILE j # NofBoxes DOy |
00F7 | y(80E00044): LDR R0, SP, 44H |
00F8 | y(91E00031): LDR R1, SP, 31H |
00F9 | y(00090001): SUB R0, R0, R1 |
00FA | y(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 |
00FB | z(40E80018): ADD R0, SP, 18H |
00FC | z .FIXUP D |
00FC | z(8D10001E): LDR SB, MT, MOD1 [Files] |
00FD | z(41D80001): ADD R1, SB, VAR1 |
00FE | a(82E00044): LDR R2, SP, 44H |
00FF | a(43290200): SUB R3, R2, 200H |
0100 | a(DA09731C): BLCC MT [trap=1, pos=2419] |
0101 | a(422A0008): MUL R2, R2, 8H |
0102 | a(02E80002): ADD R2, SP, R2 |
0103 | b(422800A0): ADD R2, R2, A0H |
0104 | c(F7FFFF43): BL -189 [0048H] |
0105 | d(40E80018): ADD R0, SP, 18H |
0106 | d .FIXUP D |
0106 | d(8D10000A): LDR SB, MT, MOD1 [Files] |
0107 | d(41D80001): ADD R1, SB, VAR1 |
0108 | e(82E00044): LDR R2, SP, 44H |
0109 | e(43290200): SUB R3, R2, 200H |
010A | e(DA098A1C): BLCC MT [trap=1, pos=2442] |
010B | e(422A0008): MUL R2, R2, 8H |
010C | e(02E80002): ADD R2, SP, R2 |
010D | f(422800A1): ADD R2, R2, A1H |
010E | g(F7FFFF39): BL -199 [0048H] |
010F | h(40E80018): ADD R0, SP, 18H |
0110 | h .FIXUP D |
0110 | h(8D10000A): LDR SB, MT, MOD1 [Files] |
0111 | h(41D80001): ADD R1, SB, VAR1 |
0112 | i(82E00044): LDR R2, SP, 44H |
0113 | i(43290200): SUB R3, R2, 200H |
0114 | i(DA09A01C): BLCC MT [trap=1, pos=2464] |
0115 | i(422A0008): MUL R2, R2, 8H |
0116 | i(02E80002): ADD R2, SP, R2 |
0117 | j(422800A2): ADD R2, R2, A2H |
0118 | k(F7FFFF2F): BL -209 [0048H] |
| RdInt16(R,l box[j]m.w)n;o RdInt16(R,p box[j]q.h)r;s |
0119 | l(40E80018): ADD R0, SP, 18H |
011A | l .FIXUP D |
011A | l(8D10000A): LDR SB, MT, MOD1 [Files] |
011B | l(41D80001): ADD R1, SB, VAR1 |
011C | m(82E00044): LDR R2, SP, 44H |
011D | m(43290200): SUB R3, R2, 200H |
011E | m(DA09C01C): BLCC MT [trap=1, pos=2496] |
011F | m(422A0008): MUL R2, R2, 8H |
0120 | m(02E80002): ADD R2, SP, R2 |
0121 | n(422800A3): ADD R2, R2, A3H |
0122 | o(F7FFFF25): BL -219 [0048H] |
0123 | p(40E80018): ADD R0, SP, 18H |
0124 | p .FIXUP D |
0124 | p(8D10000A): LDR SB, MT, MOD1 [Files] |
0125 | p(41D80001): ADD R1, SB, VAR1 |
0126 | q(82E00044): LDR R2, SP, 44H |
0127 | q(43290200): SUB R3, R2, 200H |
0128 | q(DA09D61C): BLCC MT [trap=1, pos=2518] |
0129 | q(422A0008): MUL R2, R2, 8H |
012A | q(02E80002): ADD R2, SP, R2 |
012B | r(422800A4): ADD R2, R2, A4H |
012C | s(F7FFFF1B): BL -229 [0048H] |
| NofBytes := NofBytes + 5 +t (box[j]u.w + 7)v DIV 8 *w box[j]x.h;y |
012D | t(80E00034): LDR R0, SP, 34H |
012E | t(40080005): ADD R0, R0, 5H |
012F | u(81E00044): LDR R1, SP, 44H |
0130 | u(42190200): SUB R2, R1, 200H |
0131 | u(DA0A071C): BLCC MT [trap=1, pos=2567] |
0132 | u(411A0008): MUL R1, R1, 8H |
0133 | u(01E80001): ADD R1, SP, R1 |
0134 | v(911000A3): LDR R1, R1, A3H |
0135 | v(41180007): ADD R1, R1, 7H |
0136 | w(41120003): ASR R1, R1, 3H |
0137 | x(82E00044): LDR R2, SP, 44H |
0138 | x(43290200): SUB R3, R2, 200H |
0139 | x(DA0A1D1C): BLCC MT [trap=1, pos=2589] |
013A | x(422A0008): MUL R2, R2, 8H |
013B | x(02E80002): ADD R2, SP, R2 |
013C | y(922000A4): LDR R2, R2, A4H |
013D | y(011A0002): MUL R1, R1, R2 |
013E | y(00080001): ADD R0, R0, R1 |
013F | y(A0E00034): STR R0, SP, 34H |
| INC(j) |
| ENDz; |
0140 | z(80E00044): LDR R0, SP, 44H |
0141 | z(40080001): ADD R0, R0, 1H |
0142 | z(A0E00044): STR R0, SP, 44H |
0143 | z(E7FFFFB3): B -77 [00F7H] |
| IF NofBytes < 2300 THENa NEW(F) ELSEb NEWc(LF);d F := LF ENDe ; |
0144 | a(80E00034): LDR R0, SP, 34H |
0145 | a(400908FC): SUB R0, R0, 8FCH |
0146 | a(ED000005): BGE 5 [014CH] |
0147 | b(40E8000C): ADD R0, SP, CH |
0148 | b .FIXUP D |
0148 | b(8D000024): LDR SB, MT, MOD0 [Fonts] |
0149 | b(41D80000): ADD R1, SB, 0H [data] |
014A | b(D70A6A0C): BL MT [trap=0, pos=2666] |
014B | c(E7000006): B 6 [0152H] |
014C | d(40E80010): ADD R0, SP, 10H |
014D | d .FIXUP D |
014D | d(8D000005): LDR SB, MT, MOD0 [Fonts] |
014E | d(41D80018): ADD R1, SB, 18H [data] |
014F | d(D70A730C): BL MT [trap=0, pos=2675] |
0150 | e(80E00010): LDR R0, SP, 10H |
0151 | e(A0E0000C): STR R0, SP, CH |
| F.namef := name;g |
0152 | f(80E0000C): LDR R0, SP, CH |
0153 | f(D10A904C): BLEQ MT [trap=4, pos=2704] |
0154 | g(81E00004): LDR R1, SP, 4H |
0155 | g(82E00008): LDR R2, SP, 8H |
0156 | g(E100000B): BEQ 11 [0162H] |
0157 | g(42280003): ADD R2, R2, 3H |
0158 | g(42220002): ASR R2, R2, 2H |
0159 | g(43000008): MOV R3, R0, 8H |
015A | g(03290003): SUB R3, R2, R3 |
015B | g(DE0A993C): BLGT MT [trap=3, pos=2713] |
015C | g(83100000): LDR R3, R1, 0H |
015D | g(41180004): ADD R1, R1, 4H |
015E | g(A3000000): STR R3, R0, 0H |
015F | g(40080004): ADD R0, R0, 4H |
0160 | g(42290001): SUB R2, R2, 1H |
0161 | g(E9FFFFFA): BNE -6 [015CH] |
| F.heighth := height;i F.minXj := minX;k F.maxXl := maxX;m F.maxYn := maxY;o |
0162 | h(80E0000C): LDR R0, SP, CH |
0163 | h(D10AAA4C): BLEQ MT [trap=4, pos=2730] |
0164 | i(91E00038): LDR R1, SP, 38H |
0165 | i(A1000020): STR R1, R0, 20H |
0166 | j(80E0000C): LDR R0, SP, CH |
0167 | j(D10ABC4C): BLEQ MT [trap=4, pos=2748] |
0168 | k(91E00039): LDR R1, SP, 39H |
0169 | k(A1000024): STR R1, R0, 24H |
016A | l(80E0000C): LDR R0, SP, CH |
016B | l(D10ACC4C): BLEQ MT [trap=4, pos=2764] |
016C | m(91E0003A): LDR R1, SP, 3AH |
016D | m(A1000028): STR R1, R0, 28H |
016E | n(80E0000C): LDR R0, SP, CH |
016F | n(D10ADC4C): BLEQ MT [trap=4, pos=2780] |
0170 | o(91E0003C): LDR R1, SP, 3CH |
0171 | o(A1000030): STR R1, R0, 30H |
| IF minY >= 80H THENp F.minYq := minY - 100H ELSEr Fs.minYt := minY ENDu ; |
0172 | p(90E0003B): LDR R0, SP, 3BH |
0173 | p(40090080): SUB R0, R0, 80H |
0174 | p(E5000006): BLT 6 [017BH] |
0175 | q(80E0000C): LDR R0, SP, CH |
0176 | q(D10B084C): BLEQ MT [trap=4, pos=2824] |
0177 | r(91E0003B): LDR R1, SP, 3BH |
0178 | r(41190100): SUB R1, R1, 100H |
0179 | r(A100002C): STR R1, R0, 2CH |
017A | s(E7000004): B 4 [017FH] |
017B | t(80E0000C): LDR R0, SP, CH |
017C | t(D10B234C): BLEQ MT [trap=4, pos=2851] |
017D | u(91E0003B): LDR R1, SP, 3BH |
017E | u(A100002C): STR R1, R0, 2CH |
| a0 := SYSTEM.ADR(F.rasterv);w |
017F | v(80E0000C): LDR R0, SP, CH |
0180 | v(D10B534C): BLEQ MT [trap=4, pos=2899] |
0181 | w(40080238): ADD R0, R0, 238H |
0182 | w(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 |
0183 | x(80E00058): LDR R0, SP, 58H |
0184 | x(41000000): MOV R1, R0, 0H |
0185 | x(B1000000): STR R1, R0, 0H |
0186 | y(80E00058): LDR R0, SP, 58H |
0187 | y(40080001): ADD R0, R0, 1H |
0188 | z(41000000): MOV R1, R0, 0H |
0189 | z(B1000000): STR R1, R0, 0H |
018A | a(80E00058): LDR R0, SP, 58H |
018B | a(40080002): ADD R0, R0, 2H |
018C | b(41000000): MOV R1, R0, 0H |
018D | b(B1000000): STR R1, R0, 0H |
018E | c(80E00058): LDR R0, SP, 58H |
018F | c(40080003): ADD R0, R0, 3H |
0190 | d(41000000): MOV R1, R0, 0H |
0191 | d(B1000000): STR R1, R0, 0H |
0192 | e(80E00058): LDR R0, SP, 58H |
0193 | e(40080004): ADD R0, R0, 4H |
0194 | f(41000000): MOV R1, R0, 0H |
0195 | f(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 |
0196 | g(80E00058): LDR R0, SP, 58H |
0197 | g(40080002): ADD R0, R0, 2H |
0198 | g(A0E00058): STR R0, SP, 58H |
0199 | h(80E00058): LDR R0, SP, 58H |
019A | h(40080003): ADD R0, R0, 3H |
019B | h(A0E00054): STR R0, SP, 54H |
019C | i(40000000): MOV R0, R0, 0H |
019D | i(A0E00044): STR R0, SP, 44H |
019E | j(40000000): MOV R0, R0, 0H |
019F | j(A0E00048): STR R0, SP, 48H |
01A0 | k(40000000): MOV R0, R0, 0H |
01A1 | k(A0E0004C): STR R0, SP, 4CH |
| WHILE k < NofRuns DOl |
01A2 | l(80E00048): LDR R0, SP, 48H |
01A3 | l(91E00030): LDR R1, SP, 30H |
01A4 | l(00090001): SUB R0, R0, R1 |
01A5 | l(ED00008A): BGE 138 [0230H] |
| WHILE (m < run[k]m.beg)n & (om < 128)p DOq F.Tr[m]s := a0;t INC(m) ENDu; |
01A6 | m(80E00048): LDR R0, SP, 48H |
01A7 | m(41090010): SUB R1, R0, 10H |
01A8 | m(DA0C6E1C): BLCC MT [trap=1, pos=3182] |
01A9 | m(40010002): LSL R0, R0, 2H |
01AA | m(00E80000): ADD R0, SP, R0 |
01AB | n(81E0004C): LDR R1, SP, 4CH |
01AC | n(90000060): LDR R0, R0, 60H |
01AD | n(01190000): SUB R1, R1, R0 |
01AE | o(ED000010): BGE 16 [01BFH] |
01AF | p(80E0004C): LDR R0, SP, 4CH |
01B0 | p(40090080): SUB R0, R0, 80H |
01B1 | q(ED00000D): BGE 13 [01BFH] |
01B2 | r(80E0000C): LDR R0, SP, CH |
01B3 | r(D10C864C): BLEQ MT [trap=4, pos=3206] |
01B4 | s(81E0004C): LDR R1, SP, 4CH |
01B5 | s(42190080): SUB R2, R1, 80H |
01B6 | s(DA0C891C): BLCC MT [trap=1, pos=3209] |
01B7 | s(41110002): LSL R1, R1, 2H |
01B8 | s(00080001): ADD R0, R0, R1 |
01B9 | t(81E00058): LDR R1, SP, 58H |
01BA | t(A1000038): STR R1, R0, 38H |
01BB | u(80E0004C): LDR R0, SP, 4CH |
01BC | u(40080001): ADD R0, R0, 1H |
01BD | u(A0E0004C): STR R0, SP, 4CH |
01BE | u(E7FFFFE7): B -25 [01A6H] |
| WHILE (m < run[k]v.end)w & (xm < 128)y DOz |
01BF | v(80E00048): LDR R0, SP, 48H |
01C0 | v(41090010): SUB R1, R0, 10H |
01C1 | v(DA0CB81C): BLCC MT [trap=1, pos=3256] |
01C2 | v(40010002): LSL R0, R0, 2H |
01C3 | v(00E80000): ADD R0, SP, R0 |
01C4 | w(81E0004C): LDR R1, SP, 4CH |
01C5 | w(90000061): LDR R0, R0, 61H |
01C6 | w(01190000): SUB R1, R1, R0 |
01C7 | x(ED000064): BGE 100 [022CH] |
01C8 | y(80E0004C): LDR R0, SP, 4CH |
01C9 | y(40090080): SUB R0, R0, 80H |
01CA | z(ED000061): BGE 97 [022CH] |
| F.Ta[m]b := a+3;c |
01CB | a(80E0000C): LDR R0, SP, CH |
01CC | a(D10CDC4C): BLEQ MT [trap=4, pos=3292] |
01CD | b(81E0004C): LDR R1, SP, 4CH |
01CE | b(42190080): SUB R2, R1, 80H |
01CF | b(DA0CDF1C): BLCC MT [trap=1, pos=3295] |
01D0 | b(41110002): LSL R1, R1, 2H |
01D1 | b(00080001): ADD R0, R0, R1 |
01D2 | c(81E00054): LDR R1, SP, 54H |
01D3 | c(41180003): ADD R1, R1, 3H |
01D4 | c(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 |
01D5 | d(80E00044): LDR R0, SP, 44H |
01D6 | d(41090200): SUB R1, R0, 200H |
01D7 | d(DA0D081C): BLCC MT [trap=1, pos=3336] |
01D8 | d(400A0008): MUL R0, R0, 8H |
01D9 | d(00E80000): ADD R0, SP, R0 |
01DA | e(81E00054): LDR R1, SP, 54H |
01DB | e(900000A0): LDR R0, R0, A0H |
01DC | e(B0100000): STR R0, R1, 0H |
01DD | f(80E00054): LDR R0, SP, 54H |
01DE | f(40080001): ADD R0, R0, 1H |
01DF | g(81E00044): LDR R1, SP, 44H |
01E0 | g(42190200): SUB R2, R1, 200H |
01E1 | g(DA0D241C): BLCC MT [trap=1, pos=3364] |
01E2 | g(411A0008): MUL R1, R1, 8H |
01E3 | g(01E80001): ADD R1, SP, R1 |
01E4 | h(911000A1): LDR R1, R1, A1H |
01E5 | h(B1000000): STR R1, R0, 0H |
01E6 | i(80E00054): LDR R0, SP, 54H |
01E7 | i(40080002): ADD R0, R0, 2H |
01E8 | j(81E00044): LDR R1, SP, 44H |
01E9 | j(42190200): SUB R2, R1, 200H |
01EA | j(DA0D3F1C): BLCC MT [trap=1, pos=3391] |
01EB | j(411A0008): MUL R1, R1, 8H |
01EC | j(01E80001): ADD R1, SP, R1 |
01ED | k(911000A2): LDR R1, R1, A2H |
01EE | k(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 |
01EF | l(80E00054): LDR R0, SP, 54H |
01F0 | l(40080003): ADD R0, R0, 3H |
01F1 | m(81E00044): LDR R1, SP, 44H |
01F2 | m(42190200): SUB R2, R1, 200H |
01F3 | m(DA0D661C): BLCC MT [trap=1, pos=3430] |
01F4 | m(411A0008): MUL R1, R1, 8H |
01F5 | m(01E80001): ADD R1, SP, R1 |
01F6 | n(911000A3): LDR R1, R1, A3H |
01F7 | n(B1000000): STR R1, R0, 0H |
01F8 | o(80E00054): LDR R0, SP, 54H |
01F9 | o(40080004): ADD R0, R0, 4H |
01FA | p(81E00044): LDR R1, SP, 44H |
01FB | p(42190200): SUB R2, R1, 200H |
01FC | p(DA0D811C): BLCC MT [trap=1, pos=3457] |
01FD | p(411A0008): MUL R1, R1, 8H |
01FE | p(01E80001): ADD R1, SP, R1 |
01FF | q(911000A4): LDR R1, R1, A4H |
0200 | q(B1000000): STR R1, R0, 0H |
0201 | r(80E00054): LDR R0, SP, 54H |
0202 | r(40080005): ADD R0, R0, 5H |
0203 | r(A0E00054): STR R0, SP, 54H |
| n := (box[j]s.w + 7)t DIV 8 *u box[j]v.h;w |
0204 | s(80E00044): LDR R0, SP, 44H |
0205 | s(41090200): SUB R1, R0, 200H |
0206 | s(DA0DA91C): BLCC MT [trap=1, pos=3497] |
0207 | s(400A0008): MUL R0, R0, 8H |
0208 | s(00E80000): ADD R0, SP, R0 |
0209 | t(900000A3): LDR R0, R0, A3H |
020A | t(40080007): ADD R0, R0, 7H |
020B | u(40020003): ASR R0, R0, 3H |
020C | v(81E00044): LDR R1, SP, 44H |
020D | v(42190200): SUB R2, R1, 200H |
020E | v(DA0DBF1C): BLCC MT [trap=1, pos=3519] |
020F | v(411A0008): MUL R1, R1, 8H |
0210 | v(01E80001): ADD R1, SP, R1 |
0211 | w(911000A4): LDR R1, R1, A4H |
0212 | w(000A0001): MUL R0, R0, R1 |
0213 | w(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 ; |
0214 | x(80E00050): LDR R0, SP, 50H |
0215 | x(E100000F): BEQ 15 [0225H] |
0216 | y(80E00050): LDR R0, SP, 50H |
0217 | y(40090001): SUB R0, R0, 1H |
0218 | y(A0E00050): STR R0, SP, 50H |
0219 | z(40E80018): ADD R0, SP, 18H |
021A | z .FIXUP D |
021A | z(8D1000CD): LDR SB, MT, MOD1 [Files] |
021B | z(41D80001): ADD R1, SB, VAR1 |
021C | a(42E8005C): ADD R2, SP, 5CH |
021D | b .FIXUP P |
021D | b(F710E187): BL MOD1 [Files] PROC14 |
021E | c(80E00054): LDR R0, SP, 54H |
021F | c(91E0005C): LDR R1, SP, 5CH |
0220 | c(B1000000): STR R1, R0, 0H |
0221 | d(80E00054): LDR R0, SP, 54H |
0222 | d(40080001): ADD R0, R0, 1H |
0223 | d(A0E00054): STR R0, SP, 54H |
0224 | d(E7FFFFEF): B -17 [0214H] |
| INC(j);e INC(m) |
0225 | e(80E00044): LDR R0, SP, 44H |
0226 | e(40080001): ADD R0, R0, 1H |
0227 | e(A0E00044): STR R0, SP, 44H |
| ENDf; |
0228 | f(80E0004C): LDR R0, SP, 4CH |
0229 | f(40080001): ADD R0, R0, 1H |
022A | f(A0E0004C): STR R0, SP, 4CH |
022B | f(E7FFFF93): B -109 [01BFH] |
| INC(k) |
| ENDg; |
022C | g(80E00048): LDR R0, SP, 48H |
022D | g(40080001): ADD R0, R0, 1H |
022E | g(A0E00048): STR R0, SP, 48H |
022F | g(E7FFFF72): B -142 [01A2H] |
| WHILE m < 128 DOh F.Ti[m]j := a0;k INC(m) ENDl ; |
0230 | h(80E0004C): LDR R0, SP, 4CH |
0231 | h(40090080): SUB R0, R0, 80H |
0232 | h(ED00000D): BGE 13 [0240H] |
0233 | i(80E0000C): LDR R0, SP, CH |
0234 | i(D10E7F4C): BLEQ MT [trap=4, pos=3711] |
0235 | j(81E0004C): LDR R1, SP, 4CH |
0236 | j(42190080): SUB R2, R1, 80H |
0237 | j(DA0E821C): BLCC MT [trap=1, pos=3714] |
0238 | j(41110002): LSL R1, R1, 2H |
0239 | j(00080001): ADD R0, R0, R1 |
023A | k(81E00058): LDR R1, SP, 58H |
023B | k(A1000038): STR R1, R0, 38H |
023C | l(80E0004C): LDR R0, SP, 4CH |
023D | l(40080001): ADD R0, R0, 1H |
023E | l(A0E0004C): STR R0, SP, 4CH |
023F | l(E7FFFFF0): B -16 [0230H] |
| F.nextm := root;n root := F |
0240 | m(80E0000C): LDR R0, SP, CH |
0241 | m(D10EA54C): BLEQ MT [trap=4, pos=3749] |
0242 | n .FIXUP D |
0242 | n(8D000028): LDR SB, MT, MOD0 [Fonts] |
0243 | n(81D00034): LDR R1, SB, 34H [data] |
0244 | n(A1000034): STR R1, R0, 34H |
| ELSEo (*bad file id*) Fp := Default |
0245 | o(80E0000C): LDR R0, SP, CH |
0246 | o(A0D00034): STR R0, SB, 34H |
0247 | p(E7000003): B 3 [024BH] |
| ENDq |
0248 | q .FIXUP D |
0248 | q(8D000006): LDR SB, MT, MOD0 [Fonts] |
0249 | q(80D00030): LDR R0, SB, 30H [data] |
024A | q(A0E0000C): STR R0, SP, CH |
| ELSE (*font file not available*) Fr := Default |
024B | r(E7000003): B 3 [024FH] |
| ENDs |
024C | s .FIXUP D |
024C | s(8D000004): LDR SB, MT, MOD0 [Fonts] |
024D | s(80D00030): LDR R0, SB, 30H [data] |
024E | s(A0E0000C): STR R0, SP, CH |
| END; |
| RETURN F |
| ENDt This; |
024F | t(80E0000C): LDR R0, SP, CH |
0250 | t(8FE00000): LDR LNK, SP, 0H |
0251 | t(4EE810A0): ADD SP, SP, 10A0H |
0252 | t(C700000F): B LNK |
| |
| PROCEDURE Free*; (*remove all but first two from font list*) |
| VAR f: Font; |
| BEGINu f := root.nextv;w |
0253 | u .PROC 6 |
0253 | u .COMMAND Free |
0253 | u(4EE90008): SUB SP, SP, 8H |
0254 | u(AFE00000): STR LNK, SP, 0H |
0255 | v .FIXUP D |
0255 | v(8D000009): LDR SB, MT, MOD0 [Fonts] |
0256 | v(80D00034): LDR R0, SB, 34H [data] |
0257 | v(D10FA34C): BLEQ MT [trap=4, pos=4003] |
0258 | w(80000034): LDR R0, R0, 34H |
0259 | w(A0E00004): STR R0, SP, 4H |
| IF f # NIL THENx f := f.nexty ENDz ; |
025A | x(80E00004): LDR R0, SP, 4H |
025B | x(E1000004): BEQ 4 [0260H] |
025C | y(80E00004): LDR R0, SP, 4H |
025D | y(D10FC24C): BLEQ MT [trap=4, pos=4034] |
025E | z(80000034): LDR R0, R0, 34H |
025F | z(A0E00004): STR R0, SP, 4H |
| f.nexta := NIL |
0260 | a(80E00004): LDR R0, SP, 4H |
0261 | a(D10FD14C): BLEQ MT [trap=4, pos=4049] |
| ENDb Free; |
0262 | b(41000000): MOV R1, R0, 0H |
0263 | b(A1000034): STR R1, R0, 34H |
0264 | b(8FE00000): LDR LNK, SP, 0H |
0265 | b(4EE80008): ADD SP, SP, 8H |
0266 | b(C700000F): B LNK |
| |
| BEGINc root := NIL;d Default := This("Oberon10.Scn.Fnt")e |
0267 | c .PROC 0 |
0267 | c .ENTRYPOINT |
0267 | c(4EE90004): SUB SP, SP, 4H |
0268 | c(AFE00000): STR LNK, SP, 0H |
0269 | d(40000000): MOV R0, R0, 0H |
026A | d .FIXUP D |
026A | d(8D000015): LDR SB, MT, MOD0 [Fonts] |
026B | d(A0D00034): STR R0, SB, 34H [data] |
026C | e(40D80038): ADD R0, SB, 38H |
026D | e(41000011): MOV R1, R0, 11H |
| ENDf Fonts.g |
026E | f(F7FFFDE9): BL -535 [0058H] |
026F | f .FIXUP D |
026F | f(8D000005): LDR SB, MT, MOD0 [Fonts] |
0270 | f(A0D00030): STR R0, SB, 30H [data] |
0271 | g(8FE00000): LDR LNK, SP, 0H |
0272 | g(4EE80004): ADD SP, SP, 4H |
0273 | g(C700000F): B LNK |