| MODULE Display; (*NW 5.11.2013 / 3.7.2016*) |
| .MODULE Display (KEY 4C08D3EA, VERSION 1, SIZE 000011B0) |
| .TYPEDESC 00000020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000040 FFFFFFFF FFFFFFFF FFFFFFFF 00000004 00000000 FFFFFFFF |
| .DATA 28H |
| .STRING TABLE SKIPPED |
| .FIXUP T 0H |
| IMPORT SYSTEM; |
| |
| CONST black* = 0; white* = 1; (*black = background*) |
| replace* = 0; paint* = 1; invert* = 2; (*modes*) |
| base = 0E7F00H; (*adr of 1024 x 768 pixel, monocolor display frame*) |
| |
| TYPE Frame* = POINTER TO FrameDesc; |
| FrameMsg* = RECORD END ; |
| Handler* = PROCEDURE (F: Frame; VAR M: FrameMsg); |
| FrameDesc* = RECORD next*, dsc*: Frame; |
| X*, Y*, W*, H*: INTEGER; |
| handle*: Handler |
| END ; |
| |
| VAR Base*, Width*, Height*: INTEGER; |
| arrow*, star*, hook*, updown*, block*, cross*, grey*: INTEGER; |
| (*a pattern is an array of bytes; the first is its width (< 32), the second its height, the rest the raster*) |
| |
| PROCEDURE Handle*(F: Frame; VAR M: FrameMsg); |
| BEGINa |
0000 | a .PROC 1 |
0000 | a .PROC 13 |
0000 | a(4EE90010): SUB SP, SP, 10H |
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 |
| IF (F # NIL)b & (cF.handled # NIL)e THENf F.handleg(Fh,i M)j ENDk |
0005 | b .PROC 2 |
0005 | b(80E00004): LDR R0, SP, 4H |
0006 | c(E1000010): BEQ 16 [0017H] |
0007 | d(80E00004): LDR R0, SP, 4H |
0008 | d(D103154C): BLEQ MT [trap=4, pos=789] |
0009 | e(80000018): LDR R0, R0, 18H |
000A | f(E100000C): BEQ 12 [0017H] |
000B | g(80E00004): LDR R0, SP, 4H |
000C | g .PROC 3 |
000C | g(D1032A4C): BLEQ MT [trap=4, pos=810] |
000D | h .PROC 4 |
000D | h(80000018): LDR R0, R0, 18H |
000E | h .PROC 5 |
000E | h(4EE90004): SUB SP, SP, 4H |
000F | h .PROC 6 |
000F | h(A0E00000): STR R0, SP, 0H |
0010 | i .PROC 7 |
0010 | i(80E00008): LDR R0, SP, 8H |
0011 | j .PROC 8 |
0011 | j(81E0000C): LDR R1, SP, CH |
0012 | j .PROC 9 |
0012 | j(82E00010): LDR R2, SP, 10H |
0013 | k .PROC 10 |
0013 | k(83E00000): LDR R3, SP, 0H |
0014 | k .PROC 11 |
0014 | k(4EE80004): ADD SP, SP, 4H |
0015 | k .PROC 12 |
0015 | k(D103345C): BLEQ MT [trap=5, pos=820] |
0016 | k(D7000003): BL R3 |
| ENDl Handle; |
0017 | l(8FE00000): LDR LNK, SP, 0H |
0018 | l(4EE80010): ADD SP, SP, 10H |
0019 | l(C700000F): B LNK |
| |
| (* raster ops *) |
| |
| PROCEDURE Dot*(col, x, y, mode: INTEGER); |
| VAR a: INTEGER; u, s: SET; |
| BEGINm a := base + (x DIV 32)n*4 +o y*128;p |
001A | m .PROC 14 |
001A | m(4EE90020): SUB SP, SP, 20H |
001B | m(AFE00000): STR LNK, SP, 0H |
001C | m(A0E00004): STR R0, SP, 4H |
001D | m(A1E00008): STR R1, SP, 8H |
001E | m(A2E0000C): STR R2, SP, CH |
001F | m(A3E00010): STR R3, SP, 10H |
0020 | n(80E00008): LDR R0, SP, 8H |
0021 | n(40020005): ASR R0, R0, 5H |
0022 | o(40010002): LSL R0, R0, 2H |
0023 | o(6100000E): MOV' R1, R0, EH |
0024 | o(41167F00): IOR R1, R1, 7F00H |
0025 | o(00180000): ADD R0, R1, R0 |
0026 | p(81E0000C): LDR R1, SP, CH |
0027 | p(41110007): LSL R1, R1, 7H |
0028 | p(00080001): ADD R0, R0, R1 |
0029 | p(A0E00014): STR R0, SP, 14H |
| s := {x MOD 32}q;r SYSTEM.GET(a, u);s |
002A | q(80E00008): LDR R0, SP, 8H |
002B | q(4004001F): AND R0, R0, 1FH |
002C | q(41000001): MOV R1, R0, 1H |
002D | q(00110000): LSL R0, R1, R0 |
002E | r(A0E0001C): STR R0, SP, 1CH |
002F | s(80E00014): LDR R0, SP, 14H |
0030 | s(80000000): LDR R0, R0, 0H |
0031 | s(A0E00018): STR R0, SP, 18H |
| IF mode = paint THENt SYSTEM.PUT(a, u + s)u |
0032 | t(80E00010): LDR R0, SP, 10H |
0033 | t(40090001): SUB R0, R0, 1H |
0034 | t(E9000006): BNE 6 [003BH] |
0035 | u(80E00018): LDR R0, SP, 18H |
0036 | u(81E0001C): LDR R1, SP, 1CH |
0037 | u(00060001): IOR R0, R0, R1 |
| ELSIFv modew = invert THENx SYSTEM.PUT(a, u / s)y |
0038 | v(81E00014): LDR R1, SP, 14H |
0039 | v(A0100000): STR R0, R1, 0H |
003A | w(E7000016): B 22 [0051H] |
003B | x(80E00010): LDR R0, SP, 10H |
003C | x(40090002): SUB R0, R0, 2H |
003D | x(E9000006): BNE 6 [0044H] |
003E | y(80E00018): LDR R0, SP, 18H |
003F | y(81E0001C): LDR R1, SP, 1CH |
0040 | y(00070001): XOR R0, R0, R1 |
| ELSEz (*mode = replace*) |
0041 | z(81E00014): LDR R1, SP, 14H |
0042 | z(A0100000): STR R0, R1, 0H |
| IFa col # black THENb SYSTEM.PUT(a, u + s)c ELSEd SYSTEMe.PUT(a, u - s)f ENDg |
0043 | a(E700000D): B 13 [0051H] |
0044 | b(80E00004): LDR R0, SP, 4H |
0045 | b(E1000006): BEQ 6 [004CH] |
0046 | c(80E00018): LDR R0, SP, 18H |
0047 | c(81E0001C): LDR R1, SP, 1CH |
0048 | c(00060001): IOR R0, R0, R1 |
0049 | d(81E00014): LDR R1, SP, 14H |
004A | d(A0100000): STR R0, R1, 0H |
004B | e(E7000005): B 5 [0051H] |
004C | f(80E00018): LDR R0, SP, 18H |
004D | f(81E0001C): LDR R1, SP, 1CH |
004E | f(00050001): ANN R0, R0, R1 |
004F | g(81E00014): LDR R1, SP, 14H |
0050 | g(A0100000): STR R0, R1, 0H |
| END |
| ENDh Dot; |
0051 | h(8FE00000): LDR LNK, SP, 0H |
0052 | h(4EE80020): ADD SP, SP, 20H |
0053 | h(C700000F): B LNK |
| |
| PROCEDURE ReplConst*(col, x, y, w, h, mode: INTEGER); |
| VAR al, ar, a0, a1: INTEGER; left, right, mid, pix, pixl, pixr: SET; |
| BEGINi al := base + y*128;j |
0054 | i .PROC 15 |
0054 | i(4EE90044): SUB SP, SP, 44H |
0055 | i(AFE00000): STR LNK, SP, 0H |
0056 | i(A0E00004): STR R0, SP, 4H |
0057 | i(A1E00008): STR R1, SP, 8H |
0058 | i(A2E0000C): STR R2, SP, CH |
0059 | i(A3E00010): STR R3, SP, 10H |
005A | i(A4E00014): STR R4, SP, 14H |
005B | i(A5E00018): STR R5, SP, 18H |
005C | j(80E0000C): LDR R0, SP, CH |
005D | j(40010007): LSL R0, R0, 7H |
005E | j(6100000E): MOV' R1, R0, EH |
005F | j(41167F00): IOR R1, R1, 7F00H |
0060 | j(00180000): ADD R0, R1, R0 |
0061 | j(A0E0001C): STR R0, SP, 1CH |
| ar := ((x+w-k1)l DIV 32)m*4 +n al;o al := (x DIV 32)p*4 +q al;r |
0062 | k(80E00008): LDR R0, SP, 8H |
0063 | k(81E00010): LDR R1, SP, 10H |
0064 | k(00080001): ADD R0, R0, R1 |
0065 | l(40090001): SUB R0, R0, 1H |
0066 | m(40020005): ASR R0, R0, 5H |
0067 | n(40010002): LSL R0, R0, 2H |
0068 | o(81E0001C): LDR R1, SP, 1CH |
0069 | o(00080001): ADD R0, R0, R1 |
006A | o(A0E00020): STR R0, SP, 20H |
006B | p(80E00008): LDR R0, SP, 8H |
006C | p(40020005): ASR R0, R0, 5H |
006D | q(40010002): LSL R0, R0, 2H |
006E | r(81E0001C): LDR R1, SP, 1CH |
006F | r(00080001): ADD R0, R0, R1 |
0070 | r(A0E0001C): STR R0, SP, 1CH |
| IF ar = al THENs |
0071 | s(80E00020): LDR R0, SP, 20H |
0072 | s(81E0001C): LDR R1, SP, 1CH |
0073 | s(00090001): SUB R0, R0, R1 |
0074 | s(E9000035): BNE 53 [00AAH] |
| mid := {(x MOD 32)t .. ((x+w-u1)v MOD 32)w}x;y |
0075 | t(80E00008): LDR R0, SP, 8H |
0076 | t(4004001F): AND R0, R0, 1FH |
0077 | u(81E00008): LDR R1, SP, 8H |
0078 | u(82E00010): LDR R2, SP, 10H |
0079 | u(01180002): ADD R1, R1, R2 |
007A | v(41190001): SUB R1, R1, 1H |
007B | w(4114001F): AND R1, R1, 1FH |
007C | x(5200FFFF): MOV R2, R0, FFFFFFFFH |
007D | x(00210000): LSL R0, R2, R0 |
007E | x(5200FFFE): MOV R2, R0, FFFFFFFEH |
007F | x(01210001): LSL R1, R2, R1 |
0080 | x(00050001): ANN R0, R0, R1 |
0081 | y(A0E00034): STR R0, SP, 34H |
| FOR a1 := al TOz al + (h-1)a*128 BYb 128 DO |
0082 | z(80E0001C): LDR R0, SP, 1CH |
0083 | a(81E00014): LDR R1, SP, 14H |
0084 | a(41190001): SUB R1, R1, 1H |
0085 | b(41110007): LSL R1, R1, 7H |
0086 | b(82E0001C): LDR R2, SP, 1CH |
0087 | b(01280001): ADD R1, R2, R1 |
| SYSTEMc.GET(a1, pix);d |
0088 | c(01090001): SUB R1, R0, R1 |
0089 | c(EE00001F): BGT 31 [00A9H] |
008A | c(A0E00028): STR R0, SP, 28H |
008B | d(80E00028): LDR R0, SP, 28H |
008C | d(80000000): LDR R0, R0, 0H |
008D | d(A0E00038): STR R0, SP, 38H |
| IF mode = invert THENe SYSTEM.PUT(a1, pix / mid)f |
008E | e(80E00018): LDR R0, SP, 18H |
008F | e(40090002): SUB R0, R0, 2H |
0090 | e(E9000006): BNE 6 [0097H] |
0091 | f(80E00038): LDR R0, SP, 38H |
0092 | f(81E00034): LDR R1, SP, 34H |
0093 | f(00070001): XOR R0, R0, R1 |
| ELSIFg (hmode = replace)i & (jcol = black)k THENl (*erase*) SYSTEM.PUT(a1, pix - mid)m |
0094 | g(81E00028): LDR R1, SP, 28H |
0095 | g(A0100000): STR R0, R1, 0H |
0096 | h(E700000F): B 15 [00A6H] |
0097 | i(80E00018): LDR R0, SP, 18H |
0098 | j(E9000008): BNE 8 [00A1H] |
0099 | k(80E00004): LDR R0, SP, 4H |
009A | l(E9000006): BNE 6 [00A1H] |
009B | m(80E00038): LDR R0, SP, 38H |
009C | m(81E00034): LDR R1, SP, 34H |
009D | m(00050001): ANN R0, R0, R1 |
| ELSEn (* (mode = paint) OR (mode = replace) & (col # black) *) SYSTEMo.PUT(a1, pix + mid)p |
009E | n(81E00028): LDR R1, SP, 28H |
009F | n(A0100000): STR R0, R1, 0H |
00A0 | o(E7000005): B 5 [00A6H] |
00A1 | p(80E00038): LDR R0, SP, 38H |
00A2 | p(81E00034): LDR R1, SP, 34H |
00A3 | p(00060001): IOR R0, R0, R1 |
| ENDq |
00A4 | q(81E00028): LDR R1, SP, 28H |
00A5 | q(A0100000): STR R0, R1, 0H |
| END |
| ELSIFr ars > al THENt |
00A6 | r(80E00028): LDR R0, SP, 28H |
00A7 | r(40080080): ADD R0, R0, 80H |
00A8 | r(E7FFFFDA): B -38 [0083H] |
00A9 | s(E700007E): B 126 [0128H] |
00AA | t(80E00020): LDR R0, SP, 20H |
00AB | t(81E0001C): LDR R1, SP, 1CH |
00AC | t(00090001): SUB R0, R0, R1 |
00AD | t(E600007A): BLE 122 [0128H] |
| left := {(x MOD 32)u .. 31}v;w right := {0 .. ((x+w-x1)y MOD 32)z}a;b |
00AE | u(80E00008): LDR R0, SP, 8H |
00AF | u(4004001F): AND R0, R0, 1FH |
00B0 | v(5100FFFF): MOV R1, R0, FFFFFFFFH |
00B1 | v(00110000): LSL R0, R1, R0 |
00B2 | v(4100001F): MOV R1, R0, 1FH |
00B3 | v(5200FFFE): MOV R2, R0, FFFFFFFEH |
00B4 | v(01210001): LSL R1, R2, R1 |
00B5 | v(00050001): ANN R0, R0, R1 |
00B6 | w(A0E0002C): STR R0, SP, 2CH |
00B7 | x(80E00008): LDR R0, SP, 8H |
00B8 | x(81E00010): LDR R1, SP, 10H |
00B9 | x(00080001): ADD R0, R0, R1 |
00BA | y(40090001): SUB R0, R0, 1H |
00BB | z(4004001F): AND R0, R0, 1FH |
00BC | a(5100FFFE): MOV R1, R0, FFFFFFFEH |
00BD | a(00110000): LSL R0, R1, R0 |
00BE | a(5007FFFF): XOR R0, R0, FFFFFFFFH |
00BF | a(5004FFFF): AND R0, R0, FFFFFFFFH |
00C0 | b(A0E00030): STR R0, SP, 30H |
| FOR a0 := al TOc al + (h-1)d*128 BYe 128 DO |
00C1 | c(80E0001C): LDR R0, SP, 1CH |
00C2 | d(81E00014): LDR R1, SP, 14H |
00C3 | d(41190001): SUB R1, R1, 1H |
00C4 | e(41110007): LSL R1, R1, 7H |
00C5 | e(82E0001C): LDR R2, SP, 1CH |
00C6 | e(01280001): ADD R1, R2, R1 |
| SYSTEMf.GET(a0, pixl);g SYSTEM.GET(ar, pixr);h |
00C7 | f(01090001): SUB R1, R0, R1 |
00C8 | f(EE00005F): BGT 95 [0128H] |
00C9 | f(A0E00024): STR R0, SP, 24H |
00CA | g(80E00024): LDR R0, SP, 24H |
00CB | g(80000000): LDR R0, R0, 0H |
00CC | g(A0E0003C): STR R0, SP, 3CH |
00CD | h(80E00020): LDR R0, SP, 20H |
00CE | h(80000000): LDR R0, R0, 0H |
00CF | h(A0E00040): STR R0, SP, 40H |
| IF mode = invert THENi |
00D0 | i(80E00018): LDR R0, SP, 18H |
00D1 | i(40090002): SUB R0, R0, 2H |
00D2 | i(E900001C): BNE 28 [00EFH] |
| SYSTEM.PUT(a0, pixl / left)j;k |
00D3 | j(80E0003C): LDR R0, SP, 3CH |
00D4 | j(81E0002C): LDR R1, SP, 2CH |
00D5 | j(00070001): XOR R0, R0, R1 |
00D6 | k(81E00024): LDR R1, SP, 24H |
00D7 | k(A0100000): STR R0, R1, 0H |
| FOR a1 := a0+4 TOl ar-4 BYm 4 DO SYSTEMn.GET(a1, pix);o SYSTEM.PUT(a1, -pix)p ENDq ;r |
00D8 | l(80E00024): LDR R0, SP, 24H |
00D9 | l(40080004): ADD R0, R0, 4H |
00DA | m(81E00020): LDR R1, SP, 20H |
00DB | m(41190004): SUB R1, R1, 4H |
00DC | n(01090001): SUB R1, R0, R1 |
00DD | n(EE00000B): BGT 11 [00E9H] |
00DE | n(A0E00028): STR R0, SP, 28H |
00DF | o(80E00028): LDR R0, SP, 28H |
00E0 | o(80000000): LDR R0, R0, 0H |
00E1 | o(A0E00038): STR R0, SP, 38H |
00E2 | p(80E00038): LDR R0, SP, 38H |
00E3 | p(5007FFFF): XOR R0, R0, FFFFFFFFH |
00E4 | q(81E00028): LDR R1, SP, 28H |
00E5 | q(A0100000): STR R0, R1, 0H |
00E6 | r(80E00028): LDR R0, SP, 28H |
00E7 | r(40080004): ADD R0, R0, 4H |
00E8 | r(E7FFFFF1): B -15 [00DAH] |
| SYSTEM.PUT(ar, pixr / right)s |
00E9 | s(80E00040): LDR R0, SP, 40H |
00EA | s(81E00030): LDR R1, SP, 30H |
00EB | s(00070001): XOR R0, R0, R1 |
| ELSIFt (umode = replace)v & (wcol = black)x THENy (*erase*) |
00EC | t(81E00020): LDR R1, SP, 20H |
00ED | t(A0100000): STR R0, R1, 0H |
00EE | u(E7000033): B 51 [0122H] |
00EF | v(80E00018): LDR R0, SP, 18H |
00F0 | w(E900001A): BNE 26 [010BH] |
00F1 | x(80E00004): LDR R0, SP, 4H |
00F2 | y(E9000018): BNE 24 [010BH] |
| SYSTEM.PUT(a0, pixl - left)z;a |
00F3 | z(80E0003C): LDR R0, SP, 3CH |
00F4 | z(81E0002C): LDR R1, SP, 2CH |
00F5 | z(00050001): ANN R0, R0, R1 |
00F6 | a(81E00024): LDR R1, SP, 24H |
00F7 | a(A0100000): STR R0, R1, 0H |
| FOR a1 := a0+4 TOb ar-4 BYc 4 DO SYSTEMd.PUT(a1, {}) ENDe ;f |
00F8 | b(80E00024): LDR R0, SP, 24H |
00F9 | b(40080004): ADD R0, R0, 4H |
00FA | c(81E00020): LDR R1, SP, 20H |
00FB | c(41190004): SUB R1, R1, 4H |
00FC | d(01090001): SUB R1, R0, R1 |
00FD | d(EE000007): BGT 7 [0105H] |
00FE | d(A0E00028): STR R0, SP, 28H |
00FF | e(80E00028): LDR R0, SP, 28H |
0100 | e(41000000): MOV R1, R0, 0H |
0101 | e(A1000000): STR R1, R0, 0H |
0102 | f(80E00028): LDR R0, SP, 28H |
0103 | f(40080004): ADD R0, R0, 4H |
0104 | f(E7FFFFF5): B -11 [00FAH] |
| SYSTEM.PUT(ar, pixr - right)g |
0105 | g(80E00040): LDR R0, SP, 40H |
0106 | g(81E00030): LDR R1, SP, 30H |
0107 | g(00050001): ANN R0, R0, R1 |
| ELSEh (* (mode = paint) OR (mode = replace) & (col # black) *) |
0108 | h(81E00020): LDR R1, SP, 20H |
0109 | h(A0100000): STR R0, R1, 0H |
| SYSTEMi.PUT(a0, pixl + left)j;k |
010A | i(E7000017): B 23 [0122H] |
010B | j(80E0003C): LDR R0, SP, 3CH |
010C | j(81E0002C): LDR R1, SP, 2CH |
010D | j(00060001): IOR R0, R0, R1 |
010E | k(81E00024): LDR R1, SP, 24H |
010F | k(A0100000): STR R0, R1, 0H |
| FOR a1 := a0+4 TOl ar-4 BYm 4 DO SYSTEMn.PUT(a1, {0 .. 31}) ENDo ;p |
0110 | l(80E00024): LDR R0, SP, 24H |
0111 | l(40080004): ADD R0, R0, 4H |
0112 | m(81E00020): LDR R1, SP, 20H |
0113 | m(41190004): SUB R1, R1, 4H |
0114 | n(01090001): SUB R1, R0, R1 |
0115 | n(EE000007): BGT 7 [011DH] |
0116 | n(A0E00028): STR R0, SP, 28H |
0117 | o(80E00028): LDR R0, SP, 28H |
0118 | o(5100FFFF): MOV R1, R0, FFFFFFFFH |
0119 | o(A1000000): STR R1, R0, 0H |
011A | p(80E00028): LDR R0, SP, 28H |
011B | p(40080004): ADD R0, R0, 4H |
011C | p(E7FFFFF5): B -11 [0112H] |
| SYSTEM.PUT(ar, pixr + right)q |
011D | q(80E00040): LDR R0, SP, 40H |
011E | q(81E00030): LDR R1, SP, 30H |
011F | q(00060001): IOR R0, R0, R1 |
| ENDr ; |
0120 | r(81E00020): LDR R1, SP, 20H |
0121 | r(A0100000): STR R0, R1, 0H |
| INC(ar, 128) |
| ENDs |
0122 | s(80E00020): LDR R0, SP, 20H |
0123 | s(40080080): ADD R0, R0, 80H |
0124 | s(A0E00020): STR R0, SP, 20H |
| ENDt |
0125 | t(80E00024): LDR R0, SP, 24H |
0126 | t(40080080): ADD R0, R0, 80H |
0127 | t(E7FFFF9A): B -102 [00C2H] |
| ENDu ReplConst; |
0128 | u(8FE00000): LDR LNK, SP, 0H |
0129 | u(4EE80044): ADD SP, SP, 44H |
012A | u(C700000F): B LNK |
| |
| PROCEDURE CopyPattern*(col, patadr, x, y, mode: INTEGER); (*only for modes = paint, invert*) |
| VAR a, a0, pwd: INTEGER; |
| w, h, pbt: BYTE; pix: SET; |
| BEGINv SYSTEM.GET(patadr, w);w SYSTEM.GET(patadr+1,x h);y INC(patadr, 2);z |
012B | v .PROC 16 |
012B | v(4EE9002C): SUB SP, SP, 2CH |
012C | v(AFE00000): STR LNK, SP, 0H |
012D | v(A0E00004): STR R0, SP, 4H |
012E | v(A1E00008): STR R1, SP, 8H |
012F | v(A2E0000C): STR R2, SP, CH |
0130 | v(A3E00010): STR R3, SP, 10H |
0131 | v(A4E00014): STR R4, SP, 14H |
0132 | w(80E00008): LDR R0, SP, 8H |
0133 | w(90000000): LDR R0, R0, 0H |
0134 | w(B0E00024): STR R0, SP, 24H |
0135 | x(80E00008): LDR R0, SP, 8H |
0136 | x(40080001): ADD R0, R0, 1H |
0137 | y(90000000): LDR R0, R0, 0H |
0138 | y(B0E00025): STR R0, SP, 25H |
0139 | z(80E00008): LDR R0, SP, 8H |
013A | z(40080002): ADD R0, R0, 2H |
013B | z(A0E00008): STR R0, SP, 8H |
| a := base + (x DIV 32)a*4 +b y*128;c |
013C | a(80E0000C): LDR R0, SP, CH |
013D | a(40020005): ASR R0, R0, 5H |
013E | b(40010002): LSL R0, R0, 2H |
013F | b(6100000E): MOV' R1, R0, EH |
0140 | b(41167F00): IOR R1, R1, 7F00H |
0141 | b(00180000): ADD R0, R1, R0 |
0142 | c(81E00010): LDR R1, SP, 10H |
0143 | c(41110007): LSL R1, R1, 7H |
0144 | c(00080001): ADD R0, R0, R1 |
0145 | c(A0E00018): STR R0, SP, 18H |
| FOR a0 := a TOd a + (h-1)e*128 BYf 128 DO |
0146 | d(80E00018): LDR R0, SP, 18H |
0147 | e(91E00025): LDR R1, SP, 25H |
0148 | e(41190001): SUB R1, R1, 1H |
0149 | f(41110007): LSL R1, R1, 7H |
014A | f(82E00018): LDR R2, SP, 18H |
014B | f(01280001): ADD R1, R2, R1 |
| (*build pattern line; w < 32*) |
| SYSTEMg.GET(patadr, pbt);h INC(patadr);i pwd := pbt;j |
014C | g(01090001): SUB R1, R0, R1 |
014D | g(EE000071): BGT 113 [01BFH] |
014E | g(A0E0001C): STR R0, SP, 1CH |
014F | h(80E00008): LDR R0, SP, 8H |
0150 | h(90000000): LDR R0, R0, 0H |
0151 | h(B0E00026): STR R0, SP, 26H |
0152 | i(80E00008): LDR R0, SP, 8H |
0153 | i(40080001): ADD R0, R0, 1H |
0154 | i(A0E00008): STR R0, SP, 8H |
0155 | j(90E00026): LDR R0, SP, 26H |
0156 | j(A0E00020): STR R0, SP, 20H |
| IF w > 8 THENk SYSTEM.GET(patadr, pbt);l INC(patadr);m pwd := pbt*100H +n pwd;o |
0157 | k(90E00024): LDR R0, SP, 24H |
0158 | k(40090008): SUB R0, R0, 8H |
0159 | k(E6000027): BLE 39 [0181H] |
015A | l(80E00008): LDR R0, SP, 8H |
015B | l(90000000): LDR R0, R0, 0H |
015C | l(B0E00026): STR R0, SP, 26H |
015D | m(80E00008): LDR R0, SP, 8H |
015E | m(40080001): ADD R0, R0, 1H |
015F | m(A0E00008): STR R0, SP, 8H |
0160 | n(90E00026): LDR R0, SP, 26H |
0161 | n(40010008): LSL R0, R0, 8H |
0162 | o(81E00020): LDR R1, SP, 20H |
0163 | o(00080001): ADD R0, R0, R1 |
0164 | o(A0E00020): STR R0, SP, 20H |
| IF w > 16 THENp SYSTEM.GET(patadr, pbt);q INC(patadr);r pwd := pbt*10000H +s pwd;t |
0165 | p(90E00024): LDR R0, SP, 24H |
0166 | p(40090010): SUB R0, R0, 10H |
0167 | p(E6000019): BLE 25 [0181H] |
0168 | q(80E00008): LDR R0, SP, 8H |
0169 | q(90000000): LDR R0, R0, 0H |
016A | q(B0E00026): STR R0, SP, 26H |
016B | r(80E00008): LDR R0, SP, 8H |
016C | r(40080001): ADD R0, R0, 1H |
016D | r(A0E00008): STR R0, SP, 8H |
016E | s(90E00026): LDR R0, SP, 26H |
016F | s(40010010): LSL R0, R0, 10H |
0170 | t(81E00020): LDR R1, SP, 20H |
0171 | t(00080001): ADD R0, R0, R1 |
0172 | t(A0E00020): STR R0, SP, 20H |
| IF w > 24 THENu SYSTEM.GET(patadr, pbt);v INC(patadr);w pwd := pbt*1000000H +x pwd ENDy |
0173 | u(90E00024): LDR R0, SP, 24H |
0174 | u(40090018): SUB R0, R0, 18H |
0175 | u(E600000B): BLE 11 [0181H] |
0176 | v(80E00008): LDR R0, SP, 8H |
0177 | v(90000000): LDR R0, R0, 0H |
0178 | v(B0E00026): STR R0, SP, 26H |
0179 | w(80E00008): LDR R0, SP, 8H |
017A | w(40080001): ADD R0, R0, 1H |
017B | w(A0E00008): STR R0, SP, 8H |
017C | x(90E00026): LDR R0, SP, 26H |
017D | x(40010018): LSL R0, R0, 18H |
017E | y(81E00020): LDR R1, SP, 20H |
017F | y(00080001): ADD R0, R0, R1 |
0180 | y(A0E00020): STR R0, SP, 20H |
| END |
| END ; |
| SYSTEM.GET(a0, pix);z |
0181 | z(80E0001C): LDR R0, SP, 1CH |
0182 | z(80000000): LDR R0, R0, 0H |
0183 | z(A0E00028): STR R0, SP, 28H |
| IF mode = invert THENa SYSTEM.PUT(a0, SYSTEM.VAL(SET, LSL(pwd, x MOD 32)b)c / pix)d |
0184 | a(80E00014): LDR R0, SP, 14H |
0185 | a(40090002): SUB R0, R0, 2H |
0186 | a(E9000009): BNE 9 [0190H] |
0187 | b(80E0000C): LDR R0, SP, CH |
0188 | b(4004001F): AND R0, R0, 1FH |
0189 | c(81E00020): LDR R1, SP, 20H |
018A | c(00110000): LSL R0, R1, R0 |
018B | d(81E00028): LDR R1, SP, 28H |
018C | d(00070001): XOR R0, R0, R1 |
| ELSEe SYSTEMf.PUT(a0, SYSTEM.VAL(SET, LSL(pwd, x MOD 32)g)h + pix)i |
018D | e(81E0001C): LDR R1, SP, 1CH |
018E | e(A0100000): STR R0, R1, 0H |
018F | f(E7000008): B 8 [0198H] |
0190 | g(80E0000C): LDR R0, SP, CH |
0191 | g(4004001F): AND R0, R0, 1FH |
0192 | h(81E00020): LDR R1, SP, 20H |
0193 | h(00110000): LSL R0, R1, R0 |
0194 | i(81E00028): LDR R1, SP, 28H |
0195 | i(00060001): IOR R0, R0, R1 |
| ENDj ; |
0196 | j(81E0001C): LDR R1, SP, 1CH |
0197 | j(A0100000): STR R0, R1, 0H |
| IF (x MOD 32)k + w >l 32 THENm (*spill over*) |
0198 | k(80E0000C): LDR R0, SP, CH |
0199 | k(4004001F): AND R0, R0, 1FH |
019A | l(91E00024): LDR R1, SP, 24H |
019B | l(00080001): ADD R0, R0, R1 |
019C | m(40090020): SUB R0, R0, 20H |
019D | m(E600001E): BLE 30 [01BCH] |
| SYSTEM.GET(a0+4,n pix);o |
019E | n(80E0001C): LDR R0, SP, 1CH |
019F | n(40080004): ADD R0, R0, 4H |
01A0 | o(80000000): LDR R0, R0, 0H |
01A1 | o(A0E00028): STR R0, SP, 28H |
| IF mode = invert THENp SYSTEM.PUT(a0+4,q SYSTEM.VAL(SET, ASR(pwd, -(x MOD 32)r)s)t / pix)u |
01A2 | p(80E00014): LDR R0, SP, 14H |
01A3 | p(40090002): SUB R0, R0, 2H |
01A4 | p(E900000C): BNE 12 [01B1H] |
01A5 | q(80E0001C): LDR R0, SP, 1CH |
01A6 | q(40080004): ADD R0, R0, 4H |
01A7 | r(81E0000C): LDR R1, SP, CH |
01A8 | r(4114001F): AND R1, R1, 1FH |
01A9 | s(42000000): MOV R2, R0, 0H |
01AA | s(01290001): SUB R1, R2, R1 |
01AB | t(82E00020): LDR R2, SP, 20H |
01AC | t(01220001): ASR R1, R2, R1 |
01AD | u(82E00028): LDR R2, SP, 28H |
01AE | u(01170002): XOR R1, R1, R2 |
| ELSEv SYSTEMw.PUT(a0+4,x SYSTEM.VAL(SET, ASR(pwd, -(x MOD 32)y)z)a + pix)b |
01AF | v(A1000000): STR R1, R0, 0H |
01B0 | w(E700000B): B 11 [01BCH] |
01B1 | x(80E0001C): LDR R0, SP, 1CH |
01B2 | x(40080004): ADD R0, R0, 4H |
01B3 | y(81E0000C): LDR R1, SP, CH |
01B4 | y(4114001F): AND R1, R1, 1FH |
01B5 | z(42000000): MOV R2, R0, 0H |
01B6 | z(01290001): SUB R1, R2, R1 |
01B7 | a(82E00020): LDR R2, SP, 20H |
01B8 | a(01220001): ASR R1, R2, R1 |
01B9 | b(82E00028): LDR R2, SP, 28H |
01BA | b(01160002): IOR R1, R1, R2 |
| ENDc |
01BB | c(A1000000): STR R1, R0, 0H |
| END |
| END |
| ENDd CopyPattern; |
01BC | d(80E0001C): LDR R0, SP, 1CH |
01BD | d(40080080): ADD R0, R0, 80H |
01BE | d(E7FFFF88): B -120 [0147H] |
01BF | d(8FE00000): LDR LNK, SP, 0H |
01C0 | d(4EE8002C): ADD SP, SP, 2CH |
01C1 | d(C700000F): B LNK |
| |
| PROCEDURE CopyBlock*(sx, sy, w, h, dx, dy, mode: INTEGER); (*only for mode = replace*) |
| VAR sa, da, sa0, sa1, d, len: INTEGER; |
| u0, u1, u2, u3, v0, v1, v2, v3, n: INTEGER; |
| end, step: INTEGER; |
| src, dst, spill: SET; |
| m0, m1, m2, m3: SET; |
| BEGINe |
01C2 | e .PROC 17 |
01C2 | e(4EE90080): SUB SP, SP, 80H |
01C3 | e(AFE00000): STR LNK, SP, 0H |
01C4 | e(A0E00004): STR R0, SP, 4H |
01C5 | e(A1E00008): STR R1, SP, 8H |
01C6 | e(A2E0000C): STR R2, SP, CH |
01C7 | e(A3E00010): STR R3, SP, 10H |
01C8 | e(A4E00014): STR R4, SP, 14H |
01C9 | e(A5E00018): STR R5, SP, 18H |
01CA | e(A6E0001C): STR R6, SP, 1CH |
| u0 := sx DIV 32;f u1 := sx MOD 32;g u2 := (sx+w)h DIV 32;i u3 := (sx+w)j MOD 32;k |
01CB | f(80E00004): LDR R0, SP, 4H |
01CC | f(40020005): ASR R0, R0, 5H |
01CD | f(A0E00038): STR R0, SP, 38H |
01CE | g(80E00004): LDR R0, SP, 4H |
01CF | g(4004001F): AND R0, R0, 1FH |
01D0 | g(A0E0003C): STR R0, SP, 3CH |
01D1 | h(80E00004): LDR R0, SP, 4H |
01D2 | h(81E0000C): LDR R1, SP, CH |
01D3 | h(00080001): ADD R0, R0, R1 |
01D4 | i(40020005): ASR R0, R0, 5H |
01D5 | i(A0E00040): STR R0, SP, 40H |
01D6 | j(80E00004): LDR R0, SP, 4H |
01D7 | j(81E0000C): LDR R1, SP, CH |
01D8 | j(00080001): ADD R0, R0, R1 |
01D9 | k(4004001F): AND R0, R0, 1FH |
01DA | k(A0E00044): STR R0, SP, 44H |
| v0 := dx DIV 32;l v1 := dx MOD 32;m v2 := (dx+w)n DIV 32;o v3 := (dx+w)p MOD 32;q |
01DB | l(80E00014): LDR R0, SP, 14H |
01DC | l(40020005): ASR R0, R0, 5H |
01DD | l(A0E00048): STR R0, SP, 48H |
01DE | m(80E00014): LDR R0, SP, 14H |
01DF | m(4004001F): AND R0, R0, 1FH |
01E0 | m(A0E0004C): STR R0, SP, 4CH |
01E1 | n(80E00014): LDR R0, SP, 14H |
01E2 | n(81E0000C): LDR R1, SP, CH |
01E3 | n(00080001): ADD R0, R0, R1 |
01E4 | o(40020005): ASR R0, R0, 5H |
01E5 | o(A0E00050): STR R0, SP, 50H |
01E6 | p(80E00014): LDR R0, SP, 14H |
01E7 | p(81E0000C): LDR R1, SP, CH |
01E8 | p(00080001): ADD R0, R0, R1 |
01E9 | q(4004001F): AND R0, R0, 1FH |
01EA | q(A0E00054): STR R0, SP, 54H |
| sa := base + u0*4 +r sy*128;s da := base + v0*4 +t dy*128;u |
01EB | r(80E00038): LDR R0, SP, 38H |
01EC | r(40010002): LSL R0, R0, 2H |
01ED | r(6100000E): MOV' R1, R0, EH |
01EE | r(41167F00): IOR R1, R1, 7F00H |
01EF | r(00180000): ADD R0, R1, R0 |
01F0 | s(81E00008): LDR R1, SP, 8H |
01F1 | s(41110007): LSL R1, R1, 7H |
01F2 | s(00080001): ADD R0, R0, R1 |
01F3 | s(A0E00020): STR R0, SP, 20H |
01F4 | t(80E00048): LDR R0, SP, 48H |
01F5 | t(40010002): LSL R0, R0, 2H |
01F6 | t(6100000E): MOV' R1, R0, EH |
01F7 | t(41167F00): IOR R1, R1, 7F00H |
01F8 | t(00180000): ADD R0, R1, R0 |
01F9 | u(81E00018): LDR R1, SP, 18H |
01FA | u(41110007): LSL R1, R1, 7H |
01FB | u(00080001): ADD R0, R0, R1 |
01FC | u(A0E00024): STR R0, SP, 24H |
| d := da - sa;v n := u1 - v1;w (*displacement in words and bits*) |
01FD | v(80E00024): LDR R0, SP, 24H |
01FE | v(81E00020): LDR R1, SP, 20H |
01FF | v(00090001): SUB R0, R0, R1 |
0200 | v(A0E00030): STR R0, SP, 30H |
0201 | w(80E0003C): LDR R0, SP, 3CH |
0202 | w(81E0004C): LDR R1, SP, 4CH |
0203 | w(00090001): SUB R0, R0, R1 |
0204 | w(A0E00058): STR R0, SP, 58H |
| len := (u2 - u0)x * 4;y |
0205 | x(80E00040): LDR R0, SP, 40H |
0206 | x(81E00038): LDR R1, SP, 38H |
0207 | x(00090001): SUB R0, R0, R1 |
0208 | y(40010002): LSL R0, R0, 2H |
0209 | y(A0E00034): STR R0, SP, 34H |
| m0 := {v1 .. 31}z;a m2 := {v3 .. 31}b;c m3 := m0 / m2;d |
020A | z(80E0004C): LDR R0, SP, 4CH |
020B | z(5100FFFF): MOV R1, R0, FFFFFFFFH |
020C | z(00110000): LSL R0, R1, R0 |
020D | z(4100001F): MOV R1, R0, 1FH |
020E | z(5200FFFE): MOV R2, R0, FFFFFFFEH |
020F | z(01210001): LSL R1, R2, R1 |
0210 | z(00050001): ANN R0, R0, R1 |
0211 | a(A0E00070): STR R0, SP, 70H |
0212 | b(80E00054): LDR R0, SP, 54H |
0213 | b(5100FFFF): MOV R1, R0, FFFFFFFFH |
0214 | b(00110000): LSL R0, R1, R0 |
0215 | b(4100001F): MOV R1, R0, 1FH |
0216 | b(5200FFFE): MOV R2, R0, FFFFFFFEH |
0217 | b(01210001): LSL R1, R2, R1 |
0218 | b(00050001): ANN R0, R0, R1 |
0219 | c(A0E00078): STR R0, SP, 78H |
021A | d(80E00070): LDR R0, SP, 70H |
021B | d(81E00078): LDR R1, SP, 78H |
021C | d(00070001): XOR R0, R0, R1 |
021D | d(A0E0007C): STR R0, SP, 7CH |
| IF d >= 0 THENe (*copy up, scan down*) sa0 := sa + (h-1)f*128;g end := sa-128;h step := -128 |
021E | e(80E00030): LDR R0, SP, 30H |
021F | e(40090000): SUB R0, R0, 0H |
0220 | e(E500000C): BLT 12 [022DH] |
0221 | f(80E00010): LDR R0, SP, 10H |
0222 | f(40090001): SUB R0, R0, 1H |
0223 | g(40010007): LSL R0, R0, 7H |
0224 | g(81E00020): LDR R1, SP, 20H |
0225 | g(00180000): ADD R0, R1, R0 |
0226 | g(A0E00028): STR R0, SP, 28H |
0227 | h(80E00020): LDR R0, SP, 20H |
0228 | h(40090080): SUB R0, R0, 80H |
0229 | h(A0E0005C): STR R0, SP, 5CH |
| ELSEi (*copy down, scan up*) sa0j := sa;k end := sa + h*128;l step := 128 |
022A | i(5000FF80): MOV R0, R0, FFFFFF80H |
022B | i(A0E00060): STR R0, SP, 60H |
022C | j(E7000009): B 9 [0236H] |
022D | k(80E00020): LDR R0, SP, 20H |
022E | k(A0E00028): STR R0, SP, 28H |
022F | l(80E00010): LDR R0, SP, 10H |
0230 | l(40010007): LSL R0, R0, 7H |
0231 | l(81E00020): LDR R1, SP, 20H |
0232 | l(00180000): ADD R0, R1, R0 |
0233 | l(A0E0005C): STR R0, SP, 5CH |
| ENDm ; |
0234 | m(40000080): MOV R0, R0, 80H |
0235 | m(A0E00060): STR R0, SP, 60H |
| WHILE sa0 # end DOn |
0236 | n(80E00028): LDR R0, SP, 28H |
0237 | n(81E0005C): LDR R1, SP, 5CH |
0238 | n(00090001): SUB R0, R0, R1 |
0239 | n(E10000F9): BEQ 249 [0333H] |
| IF n >= 0 THENo (*shift right*) m1 := {n .. 31}p;q |
023A | o(80E00058): LDR R0, SP, 58H |
023B | o(40090000): SUB R0, R0, 0H |
023C | o(E500007E): BLT 126 [02BBH] |
023D | p(80E00058): LDR R0, SP, 58H |
023E | p(5100FFFF): MOV R1, R0, FFFFFFFFH |
023F | p(00110000): LSL R0, R1, R0 |
0240 | p(4100001F): MOV R1, R0, 1FH |
0241 | p(5200FFFE): MOV R2, R0, FFFFFFFEH |
0242 | p(01210001): LSL R1, R2, R1 |
0243 | p(00050001): ANN R0, R0, R1 |
0244 | q(A0E00074): STR R0, SP, 74H |
| IF v1 + w >=r 32 THENs |
0245 | r(80E0004C): LDR R0, SP, 4CH |
0246 | r(81E0000C): LDR R1, SP, CH |
0247 | r(00080001): ADD R0, R0, R1 |
0248 | s(40090020): SUB R0, R0, 20H |
0249 | s(E5000059): BLT 89 [02A3H] |
| SYSTEM.GET(sa0+len,t src);u src := ROR(src, n);v |
024A | t(80E00028): LDR R0, SP, 28H |
024B | t(81E00034): LDR R1, SP, 34H |
024C | t(00080001): ADD R0, R0, R1 |
024D | u(80000000): LDR R0, R0, 0H |
024E | u(A0E00064): STR R0, SP, 64H |
024F | v(80E00064): LDR R0, SP, 64H |
0250 | v(81E00058): LDR R1, SP, 58H |
0251 | v(00030001): ROR R0, R0, R1 |
0252 | v(A0E00064): STR R0, SP, 64H |
| SYSTEM.GET(sa0+len+wd,x dst);y |
0253 | w(80E00028): LDR R0, SP, 28H |
0254 | w(81E00034): LDR R1, SP, 34H |
0255 | w(00080001): ADD R0, R0, R1 |
0256 | x(81E00030): LDR R1, SP, 30H |
0257 | x(00080001): ADD R0, R0, R1 |
0258 | y(80000000): LDR R0, R0, 0H |
0259 | y(A0E00068): STR R0, SP, 68H |
| SYSTEM.PUT(sa0+len+zd,a (dst * m2)b + (src - m2)c)d;e |
025A | z(80E00028): LDR R0, SP, 28H |
025B | z(81E00034): LDR R1, SP, 34H |
025C | z(00080001): ADD R0, R0, R1 |
025D | a(81E00030): LDR R1, SP, 30H |
025E | a(00080001): ADD R0, R0, R1 |
025F | b(81E00068): LDR R1, SP, 68H |
0260 | b(82E00078): LDR R2, SP, 78H |
0261 | b(01140002): AND R1, R1, R2 |
0262 | c(82E00064): LDR R2, SP, 64H |
0263 | c(83E00078): LDR R3, SP, 78H |
0264 | c(02250003): ANN R2, R2, R3 |
0265 | d(01160002): IOR R1, R1, R2 |
0266 | e(A1000000): STR R1, R0, 0H |
| spill := src - m1;f |
0267 | f(80E00064): LDR R0, SP, 64H |
0268 | f(81E00074): LDR R1, SP, 74H |
0269 | f(00050001): ANN R0, R0, R1 |
026A | f(A0E0006C): STR R0, SP, 6CH |
| FOR sa1 := sa0 + len-g4 TOh sa0+4 BYi -4 DO |
026B | g(80E00028): LDR R0, SP, 28H |
026C | g(81E00034): LDR R1, SP, 34H |
026D | g(00080001): ADD R0, R0, R1 |
026E | h(40090004): SUB R0, R0, 4H |
026F | i(81E00028): LDR R1, SP, 28H |
0270 | i(41180004): ADD R1, R1, 4H |
| SYSTEMj.GET(sa1, src);k src := ROR(src, n);l |
0271 | j(01090001): SUB R1, R0, R1 |
0272 | j(E5000018): BLT 24 [028BH] |
0273 | j(A0E0002C): STR R0, SP, 2CH |
0274 | k(80E0002C): LDR R0, SP, 2CH |
0275 | k(80000000): LDR R0, R0, 0H |
0276 | k(A0E00064): STR R0, SP, 64H |
0277 | l(80E00064): LDR R0, SP, 64H |
0278 | l(81E00058): LDR R1, SP, 58H |
0279 | l(00030001): ROR R0, R0, R1 |
027A | l(A0E00064): STR R0, SP, 64H |
| SYSTEM.PUT(sa1+d,m spill + (src * m1)n)o;p |
027B | m(80E0002C): LDR R0, SP, 2CH |
027C | m(81E00030): LDR R1, SP, 30H |
027D | m(00080001): ADD R0, R0, R1 |
027E | n(81E00064): LDR R1, SP, 64H |
027F | n(82E00074): LDR R2, SP, 74H |
0280 | n(01140002): AND R1, R1, R2 |
0281 | o(82E0006C): LDR R2, SP, 6CH |
0282 | o(01260001): IOR R1, R2, R1 |
0283 | p(A1000000): STR R1, R0, 0H |
| spill := src - m1 |
| ENDq ;r |
0284 | q(80E00064): LDR R0, SP, 64H |
0285 | q(81E00074): LDR R1, SP, 74H |
0286 | q(00050001): ANN R0, R0, R1 |
0287 | q(A0E0006C): STR R0, SP, 6CH |
0288 | r(80E0002C): LDR R0, SP, 2CH |
0289 | r(5008FFFC): ADD R0, R0, FFFFFFFCH |
028A | r(E7FFFFE4): B -28 [026FH] |
| SYSTEM.GET(sa0, src);s src := ROR(src, n);t |
028B | s(80E00028): LDR R0, SP, 28H |
028C | s(80000000): LDR R0, R0, 0H |
028D | s(A0E00064): STR R0, SP, 64H |
028E | t(80E00064): LDR R0, SP, 64H |
028F | t(81E00058): LDR R1, SP, 58H |
0290 | t(00030001): ROR R0, R0, R1 |
0291 | t(A0E00064): STR R0, SP, 64H |
| SYSTEM.GET(sa0+d,u dst);v |
0292 | u(80E00028): LDR R0, SP, 28H |
0293 | u(81E00030): LDR R1, SP, 30H |
0294 | u(00080001): ADD R0, R0, R1 |
0295 | v(80000000): LDR R0, R0, 0H |
0296 | v(A0E00068): STR R0, SP, 68H |
| SYSTEM.PUT(sa0+d,w (src * m0)x + (dst - m0)y)z |
0297 | w(80E00028): LDR R0, SP, 28H |
0298 | w(81E00030): LDR R1, SP, 30H |
0299 | w(00080001): ADD R0, R0, R1 |
029A | x(81E00064): LDR R1, SP, 64H |
029B | x(82E00070): LDR R2, SP, 70H |
029C | x(01140002): AND R1, R1, R2 |
029D | y(82E00068): LDR R2, SP, 68H |
029E | y(83E00070): LDR R3, SP, 70H |
029F | y(02250003): ANN R2, R2, R3 |
02A0 | z(01160002): IOR R1, R1, R2 |
| ELSEa SYSTEMb.GET(sa0, src);c src := ROR(src, n);d |
02A1 | a(A1000000): STR R1, R0, 0H |
02A2 | b(E7000017): B 23 [02BAH] |
02A3 | c(80E00028): LDR R0, SP, 28H |
02A4 | c(80000000): LDR R0, R0, 0H |
02A5 | c(A0E00064): STR R0, SP, 64H |
02A6 | d(80E00064): LDR R0, SP, 64H |
02A7 | d(81E00058): LDR R1, SP, 58H |
02A8 | d(00030001): ROR R0, R0, R1 |
02A9 | d(A0E00064): STR R0, SP, 64H |
| SYSTEM.GET(sa0+d,e dst);f |
02AA | e(80E00028): LDR R0, SP, 28H |
02AB | e(81E00030): LDR R1, SP, 30H |
02AC | e(00080001): ADD R0, R0, R1 |
02AD | f(80000000): LDR R0, R0, 0H |
02AE | f(A0E00068): STR R0, SP, 68H |
| SYSTEM.PUT(sa0+d,g (src * m3)h + (dst - m3)i)j |
02AF | g(80E00028): LDR R0, SP, 28H |
02B0 | g(81E00030): LDR R1, SP, 30H |
02B1 | g(00080001): ADD R0, R0, R1 |
02B2 | h(81E00064): LDR R1, SP, 64H |
02B3 | h(82E0007C): LDR R2, SP, 7CH |
02B4 | h(01140002): AND R1, R1, R2 |
02B5 | i(82E00068): LDR R2, SP, 68H |
02B6 | i(83E0007C): LDR R3, SP, 7CH |
02B7 | i(02250003): ANN R2, R2, R3 |
02B8 | j(01160002): IOR R1, R1, R2 |
| ENDk |
02B9 | k(A1000000): STR R1, R0, 0H |
| ELSE (*shift left*) m1l := {-n ..m 31}n;o |
02BA | l(E7000073): B 115 [032EH] |
02BB | m(80E00058): LDR R0, SP, 58H |
02BC | m(41000000): MOV R1, R0, 0H |
02BD | m(00190000): SUB R0, R1, R0 |
02BE | n(5100FFFF): MOV R1, R0, FFFFFFFFH |
02BF | n(00110000): LSL R0, R1, R0 |
02C0 | n(4100001F): MOV R1, R0, 1FH |
02C1 | n(5200FFFE): MOV R2, R0, FFFFFFFEH |
02C2 | n(01210001): LSL R1, R2, R1 |
02C3 | n(00050001): ANN R0, R0, R1 |
02C4 | o(A0E00074): STR R0, SP, 74H |
| SYSTEM.GET(sa0, src);p src := ROR(src, n);q |
02C5 | p(80E00028): LDR R0, SP, 28H |
02C6 | p(80000000): LDR R0, R0, 0H |
02C7 | p(A0E00064): STR R0, SP, 64H |
02C8 | q(80E00064): LDR R0, SP, 64H |
02C9 | q(81E00058): LDR R1, SP, 58H |
02CA | q(00030001): ROR R0, R0, R1 |
02CB | q(A0E00064): STR R0, SP, 64H |
| SYSTEM.GET(sa0+d,r dst);s |
02CC | r(80E00028): LDR R0, SP, 28H |
02CD | r(81E00030): LDR R1, SP, 30H |
02CE | r(00080001): ADD R0, R0, R1 |
02CF | s(80000000): LDR R0, R0, 0H |
02D0 | s(A0E00068): STR R0, SP, 68H |
| IF v1 + w <t 32 THENu |
02D1 | t(80E0004C): LDR R0, SP, 4CH |
02D2 | t(81E0000C): LDR R1, SP, CH |
02D3 | t(00080001): ADD R0, R0, R1 |
02D4 | u(40090020): SUB R0, R0, 20H |
02D5 | u(ED00000C): BGE 12 [02E2H] |
| SYSTEM.PUT(sa0+d,v (dst - m3)w + (src * m3)x)y |
02D6 | v(80E00028): LDR R0, SP, 28H |
02D7 | v(81E00030): LDR R1, SP, 30H |
02D8 | v(00080001): ADD R0, R0, R1 |
02D9 | w(81E00068): LDR R1, SP, 68H |
02DA | w(82E0007C): LDR R2, SP, 7CH |
02DB | w(01150002): ANN R1, R1, R2 |
02DC | x(82E00064): LDR R2, SP, 64H |
02DD | x(83E0007C): LDR R3, SP, 7CH |
02DE | x(02240003): AND R2, R2, R3 |
02DF | y(01160002): IOR R1, R1, R2 |
| ELSEz SYSTEMa.PUT(sa0+d,b (dst - m0)c + (src * m0)d)e;f |
02E0 | z(A1000000): STR R1, R0, 0H |
02E1 | a(E700004C): B 76 [032EH] |
02E2 | b(80E00028): LDR R0, SP, 28H |
02E3 | b(81E00030): LDR R1, SP, 30H |
02E4 | b(00080001): ADD R0, R0, R1 |
02E5 | c(81E00068): LDR R1, SP, 68H |
02E6 | c(82E00070): LDR R2, SP, 70H |
02E7 | c(01150002): ANN R1, R1, R2 |
02E8 | d(82E00064): LDR R2, SP, 64H |
02E9 | d(83E00070): LDR R3, SP, 70H |
02EA | d(02240003): AND R2, R2, R3 |
02EB | e(01160002): IOR R1, R1, R2 |
02EC | f(A1000000): STR R1, R0, 0H |
| spill := src - m1;g |
02ED | g(80E00064): LDR R0, SP, 64H |
02EE | g(81E00074): LDR R1, SP, 74H |
02EF | g(00050001): ANN R0, R0, R1 |
02F0 | g(A0E0006C): STR R0, SP, 6CH |
| FOR sa1 := sa0+4 TOh sa0 + len-i4 BYj 4 DO |
02F1 | h(80E00028): LDR R0, SP, 28H |
02F2 | h(40080004): ADD R0, R0, 4H |
02F3 | i(81E00028): LDR R1, SP, 28H |
02F4 | i(82E00034): LDR R2, SP, 34H |
02F5 | i(01180002): ADD R1, R1, R2 |
02F6 | j(41190004): SUB R1, R1, 4H |
| SYSTEMk.GET(sa1, src);l src := ROR(src, n);m |
02F7 | k(01090001): SUB R1, R0, R1 |
02F8 | k(EE000018): BGT 24 [0311H] |
02F9 | k(A0E0002C): STR R0, SP, 2CH |
02FA | l(80E0002C): LDR R0, SP, 2CH |
02FB | l(80000000): LDR R0, R0, 0H |
02FC | l(A0E00064): STR R0, SP, 64H |
02FD | m(80E00064): LDR R0, SP, 64H |
02FE | m(81E00058): LDR R1, SP, 58H |
02FF | m(00030001): ROR R0, R0, R1 |
0300 | m(A0E00064): STR R0, SP, 64H |
| SYSTEM.PUT(sa1+d,n spill + (src * m1)o)p;q |
0301 | n(80E0002C): LDR R0, SP, 2CH |
0302 | n(81E00030): LDR R1, SP, 30H |
0303 | n(00080001): ADD R0, R0, R1 |
0304 | o(81E00064): LDR R1, SP, 64H |
0305 | o(82E00074): LDR R2, SP, 74H |
0306 | o(01140002): AND R1, R1, R2 |
0307 | p(82E0006C): LDR R2, SP, 6CH |
0308 | p(01260001): IOR R1, R2, R1 |
0309 | q(A1000000): STR R1, R0, 0H |
| spill := src - m1 |
| ENDr ;s |
030A | r(80E00064): LDR R0, SP, 64H |
030B | r(81E00074): LDR R1, SP, 74H |
030C | r(00050001): ANN R0, R0, R1 |
030D | r(A0E0006C): STR R0, SP, 6CH |
030E | s(80E0002C): LDR R0, SP, 2CH |
030F | s(40080004): ADD R0, R0, 4H |
0310 | s(E7FFFFE2): B -30 [02F3H] |
| SYSTEM.GET(sa0+len,t src);u src := ROR(src, n);v |
0311 | t(80E00028): LDR R0, SP, 28H |
0312 | t(81E00034): LDR R1, SP, 34H |
0313 | t(00080001): ADD R0, R0, R1 |
0314 | u(80000000): LDR R0, R0, 0H |
0315 | u(A0E00064): STR R0, SP, 64H |
0316 | v(80E00064): LDR R0, SP, 64H |
0317 | v(81E00058): LDR R1, SP, 58H |
0318 | v(00030001): ROR R0, R0, R1 |
0319 | v(A0E00064): STR R0, SP, 64H |
| SYSTEM.GET(sa0+len+wd,x dst);y |
031A | w(80E00028): LDR R0, SP, 28H |
031B | w(81E00034): LDR R1, SP, 34H |
031C | w(00080001): ADD R0, R0, R1 |
031D | x(81E00030): LDR R1, SP, 30H |
031E | x(00080001): ADD R0, R0, R1 |
031F | y(80000000): LDR R0, R0, 0H |
0320 | y(A0E00068): STR R0, SP, 68H |
| SYSTEM.PUT(sa0+len+zd,a (src - m2)b + (dst * m2)c)d |
0321 | z(80E00028): LDR R0, SP, 28H |
0322 | z(81E00034): LDR R1, SP, 34H |
0323 | z(00080001): ADD R0, R0, R1 |
0324 | a(81E00030): LDR R1, SP, 30H |
0325 | a(00080001): ADD R0, R0, R1 |
0326 | b(81E00064): LDR R1, SP, 64H |
0327 | b(82E00078): LDR R2, SP, 78H |
0328 | b(01150002): ANN R1, R1, R2 |
0329 | c(82E00068): LDR R2, SP, 68H |
032A | c(83E00078): LDR R3, SP, 78H |
032B | c(02240003): AND R2, R2, R3 |
032C | d(01160002): IOR R1, R1, R2 |
| ENDe |
032D | e(A1000000): STR R1, R0, 0H |
| END ; |
| INC(sa0, step) |
| ENDf |
032E | f(80E00028): LDR R0, SP, 28H |
032F | f(81E00060): LDR R1, SP, 60H |
0330 | f(00080001): ADD R0, R0, R1 |
0331 | f(A0E00028): STR R0, SP, 28H |
0332 | f(E7FFFF03): B -253 [0236H] |
| ENDg CopyBlock; |
0333 | g(8FE00000): LDR LNK, SP, 0H |
0334 | g(4EE80080): ADD SP, SP, 80H |
0335 | g(C700000F): B LNK |
| |
| PROCEDURE ReplPattern*(col, patadr, x, y, w, h, mode: INTEGER); |
| (* pattern width = 32, fixed; pattern starts at patadr+4, for mode = invert only *) |
| VAR al, ar, a0, a1: INTEGER; |
| pta0, pta1: INTEGER; (*pattern addresses*) |
| ph: BYTE; |
| left, right, mid, pix, pixl, pixr, ptw: SET; |
| BEGINh al := base + y*128;i SYSTEM.GET(patadr+1,j ph);k |
0336 | h .PROC 18 |
0336 | h(4EE90058): SUB SP, SP, 58H |
0337 | h(AFE00000): STR LNK, SP, 0H |
0338 | h(A0E00004): STR R0, SP, 4H |
0339 | h(A1E00008): STR R1, SP, 8H |
033A | h(A2E0000C): STR R2, SP, CH |
033B | h(A3E00010): STR R3, SP, 10H |
033C | h(A4E00014): STR R4, SP, 14H |
033D | h(A5E00018): STR R5, SP, 18H |
033E | h(A6E0001C): STR R6, SP, 1CH |
033F | i(80E00010): LDR R0, SP, 10H |
0340 | i(40010007): LSL R0, R0, 7H |
0341 | i(6100000E): MOV' R1, R0, EH |
0342 | i(41167F00): IOR R1, R1, 7F00H |
0343 | i(00180000): ADD R0, R1, R0 |
0344 | i(A0E00020): STR R0, SP, 20H |
0345 | j(80E00008): LDR R0, SP, 8H |
0346 | j(40080001): ADD R0, R0, 1H |
0347 | k(90000000): LDR R0, R0, 0H |
0348 | k(B0E00038): STR R0, SP, 38H |
| pta0 := patadr+4;l pta1 := ph*4 +m pta0;n |
0349 | l(80E00008): LDR R0, SP, 8H |
034A | l(40080004): ADD R0, R0, 4H |
034B | l(A0E00030): STR R0, SP, 30H |
034C | m(90E00038): LDR R0, SP, 38H |
034D | m(40010002): LSL R0, R0, 2H |
034E | n(81E00030): LDR R1, SP, 30H |
034F | n(00080001): ADD R0, R0, R1 |
0350 | n(A0E00034): STR R0, SP, 34H |
| ar := ((x+w-o1)p DIV 32)q*4 +r al;s al := (x DIV 32)t*4 +u al;v |
0351 | o(80E0000C): LDR R0, SP, CH |
0352 | o(81E00014): LDR R1, SP, 14H |
0353 | o(00080001): ADD R0, R0, R1 |
0354 | p(40090001): SUB R0, R0, 1H |
0355 | q(40020005): ASR R0, R0, 5H |
0356 | r(40010002): LSL R0, R0, 2H |
0357 | s(81E00020): LDR R1, SP, 20H |
0358 | s(00080001): ADD R0, R0, R1 |
0359 | s(A0E00024): STR R0, SP, 24H |
035A | t(80E0000C): LDR R0, SP, CH |
035B | t(40020005): ASR R0, R0, 5H |
035C | u(40010002): LSL R0, R0, 2H |
035D | v(81E00020): LDR R1, SP, 20H |
035E | v(00080001): ADD R0, R0, R1 |
035F | v(A0E00020): STR R0, SP, 20H |
| IF ar = al THENw |
0360 | w(80E00024): LDR R0, SP, 24H |
0361 | w(81E00020): LDR R1, SP, 20H |
0362 | w(00090001): SUB R0, R0, R1 |
0363 | w(E9000035): BNE 53 [0399H] |
| mid := {(x MOD 32)x .. ((x+w-y1)z MOD 32)a}b;c |
0364 | x(80E0000C): LDR R0, SP, CH |
0365 | x(4004001F): AND R0, R0, 1FH |
0366 | y(81E0000C): LDR R1, SP, CH |
0367 | y(82E00014): LDR R2, SP, 14H |
0368 | y(01180002): ADD R1, R1, R2 |
0369 | z(41190001): SUB R1, R1, 1H |
036A | a(4114001F): AND R1, R1, 1FH |
036B | b(5200FFFF): MOV R2, R0, FFFFFFFFH |
036C | b(00210000): LSL R0, R2, R0 |
036D | b(5200FFFE): MOV R2, R0, FFFFFFFEH |
036E | b(01210001): LSL R1, R2, R1 |
036F | b(00050001): ANN R0, R0, R1 |
0370 | c(A0E00044): STR R0, SP, 44H |
| FOR a1 := al TOd al + (h-1)e*128 BYf 128 DO |
0371 | d(80E00020): LDR R0, SP, 20H |
0372 | e(81E00018): LDR R1, SP, 18H |
0373 | e(41190001): SUB R1, R1, 1H |
0374 | f(41110007): LSL R1, R1, 7H |
0375 | f(82E00020): LDR R2, SP, 20H |
0376 | f(01280001): ADD R1, R2, R1 |
| SYSTEMg.GET(a1, pix);h SYSTEM.GET(pta0, ptw);i SYSTEM.PUT(a1, (pix - mid)j + (pix/ptw *k mid)l)m;n INC(pta0, 4);o |
0377 | g(01090001): SUB R1, R0, R1 |
0378 | g(EE00001F): BGT 31 [0398H] |
0379 | g(A0E0002C): STR R0, SP, 2CH |
037A | h(80E0002C): LDR R0, SP, 2CH |
037B | h(80000000): LDR R0, R0, 0H |
037C | h(A0E00048): STR R0, SP, 48H |
037D | i(80E00030): LDR R0, SP, 30H |
037E | i(80000000): LDR R0, R0, 0H |
037F | i(A0E00054): STR R0, SP, 54H |
0380 | j(80E00048): LDR R0, SP, 48H |
0381 | j(81E00044): LDR R1, SP, 44H |
0382 | j(00050001): ANN R0, R0, R1 |
0383 | k(81E00048): LDR R1, SP, 48H |
0384 | k(82E00054): LDR R2, SP, 54H |
0385 | k(01170002): XOR R1, R1, R2 |
0386 | l(82E00044): LDR R2, SP, 44H |
0387 | l(01140002): AND R1, R1, R2 |
0388 | m(00060001): IOR R0, R0, R1 |
0389 | n(81E0002C): LDR R1, SP, 2CH |
038A | n(A0100000): STR R0, R1, 0H |
038B | o(80E00030): LDR R0, SP, 30H |
038C | o(40080004): ADD R0, R0, 4H |
038D | o(A0E00030): STR R0, SP, 30H |
| IF pta0 = pta1 THENp pta0 := patadr+4 ENDq |
038E | p(80E00030): LDR R0, SP, 30H |
038F | p(81E00034): LDR R1, SP, 34H |
0390 | p(00090001): SUB R0, R0, R1 |
0391 | p(E9000003): BNE 3 [0395H] |
0392 | q(80E00008): LDR R0, SP, 8H |
0393 | q(40080004): ADD R0, R0, 4H |
0394 | q(A0E00030): STR R0, SP, 30H |
| END |
| ELSIFr ars > al THENt |
0395 | r(80E0002C): LDR R0, SP, 2CH |
0396 | r(40080080): ADD R0, R0, 80H |
0397 | r(E7FFFFDA): B -38 [0372H] |
0398 | s(E7000061): B 97 [03FAH] |
0399 | t(80E00024): LDR R0, SP, 24H |
039A | t(81E00020): LDR R1, SP, 20H |
039B | t(00090001): SUB R0, R0, R1 |
039C | t(E600005D): BLE 93 [03FAH] |
| left := {(x MOD 32)u .. 31}v;w right := {0 .. ((x+w-x1)y MOD 32)z}a;b |
039D | u(80E0000C): LDR R0, SP, CH |
039E | u(4004001F): AND R0, R0, 1FH |
039F | v(5100FFFF): MOV R1, R0, FFFFFFFFH |
03A0 | v(00110000): LSL R0, R1, R0 |
03A1 | v(4100001F): MOV R1, R0, 1FH |
03A2 | v(5200FFFE): MOV R2, R0, FFFFFFFEH |
03A3 | v(01210001): LSL R1, R2, R1 |
03A4 | v(00050001): ANN R0, R0, R1 |
03A5 | w(A0E0003C): STR R0, SP, 3CH |
03A6 | x(80E0000C): LDR R0, SP, CH |
03A7 | x(81E00014): LDR R1, SP, 14H |
03A8 | x(00080001): ADD R0, R0, R1 |
03A9 | y(40090001): SUB R0, R0, 1H |
03AA | z(4004001F): AND R0, R0, 1FH |
03AB | a(5100FFFE): MOV R1, R0, FFFFFFFEH |
03AC | a(00110000): LSL R0, R1, R0 |
03AD | a(5007FFFF): XOR R0, R0, FFFFFFFFH |
03AE | a(5004FFFF): AND R0, R0, FFFFFFFFH |
03AF | b(A0E00040): STR R0, SP, 40H |
| FOR a0 := al TOc al + (h-1)d*128 BYe 128 DO |
03B0 | c(80E00020): LDR R0, SP, 20H |
03B1 | d(81E00018): LDR R1, SP, 18H |
03B2 | d(41190001): SUB R1, R1, 1H |
03B3 | e(41110007): LSL R1, R1, 7H |
03B4 | e(82E00020): LDR R2, SP, 20H |
03B5 | e(01280001): ADD R1, R2, R1 |
| SYSTEMf.GET(a0, pixl);g SYSTEM.GET(pta0, ptw);h SYSTEM.PUT(a0, (pixl - left)i + (pixl/ptw *j left)k)l;m |
03B6 | f(01090001): SUB R1, R0, R1 |
03B7 | f(EE000042): BGT 66 [03FAH] |
03B8 | f(A0E00028): STR R0, SP, 28H |
03B9 | g(80E00028): LDR R0, SP, 28H |
03BA | g(80000000): LDR R0, R0, 0H |
03BB | g(A0E0004C): STR R0, SP, 4CH |
03BC | h(80E00030): LDR R0, SP, 30H |
03BD | h(80000000): LDR R0, R0, 0H |
03BE | h(A0E00054): STR R0, SP, 54H |
03BF | i(80E0004C): LDR R0, SP, 4CH |
03C0 | i(81E0003C): LDR R1, SP, 3CH |
03C1 | i(00050001): ANN R0, R0, R1 |
03C2 | j(81E0004C): LDR R1, SP, 4CH |
03C3 | j(82E00054): LDR R2, SP, 54H |
03C4 | j(01170002): XOR R1, R1, R2 |
03C5 | k(82E0003C): LDR R2, SP, 3CH |
03C6 | k(01140002): AND R1, R1, R2 |
03C7 | l(00060001): IOR R0, R0, R1 |
03C8 | m(81E00028): LDR R1, SP, 28H |
03C9 | m(A0100000): STR R0, R1, 0H |
| FOR a1 := a0+4 TOn ar-4 BYo 4 DO SYSTEMp.GET(a1, pix);q SYSTEM.PUT(a1, pix/ptw)r ENDs ;t |
03CA | n(80E00028): LDR R0, SP, 28H |
03CB | n(40080004): ADD R0, R0, 4H |
03CC | o(81E00024): LDR R1, SP, 24H |
03CD | o(41190004): SUB R1, R1, 4H |
03CE | p(01090001): SUB R1, R0, R1 |
03CF | p(EE00000C): BGT 12 [03DCH] |
03D0 | p(A0E0002C): STR R0, SP, 2CH |
03D1 | q(80E0002C): LDR R0, SP, 2CH |
03D2 | q(80000000): LDR R0, R0, 0H |
03D3 | q(A0E00048): STR R0, SP, 48H |
03D4 | r(80E00048): LDR R0, SP, 48H |
03D5 | r(81E00054): LDR R1, SP, 54H |
03D6 | r(00070001): XOR R0, R0, R1 |
03D7 | s(81E0002C): LDR R1, SP, 2CH |
03D8 | s(A0100000): STR R0, R1, 0H |
03D9 | t(80E0002C): LDR R0, SP, 2CH |
03DA | t(40080004): ADD R0, R0, 4H |
03DB | t(E7FFFFF0): B -16 [03CCH] |
| SYSTEM.GET(ar, pixr);u SYSTEM.PUT(ar, (pixr - right)v + (pixr/ptw *w right)x)y;z |
03DC | u(80E00024): LDR R0, SP, 24H |
03DD | u(80000000): LDR R0, R0, 0H |
03DE | u(A0E00050): STR R0, SP, 50H |
03DF | v(80E00050): LDR R0, SP, 50H |
03E0 | v(81E00040): LDR R1, SP, 40H |
03E1 | v(00050001): ANN R0, R0, R1 |
03E2 | w(81E00050): LDR R1, SP, 50H |
03E3 | w(82E00054): LDR R2, SP, 54H |
03E4 | w(01170002): XOR R1, R1, R2 |
03E5 | x(82E00040): LDR R2, SP, 40H |
03E6 | x(01140002): AND R1, R1, R2 |
03E7 | y(00060001): IOR R0, R0, R1 |
03E8 | z(81E00024): LDR R1, SP, 24H |
03E9 | z(A0100000): STR R0, R1, 0H |
| INC(pta0, 4);a INC(ar, 128);b |
03EA | a(80E00030): LDR R0, SP, 30H |
03EB | a(40080004): ADD R0, R0, 4H |
03EC | a(A0E00030): STR R0, SP, 30H |
03ED | b(80E00024): LDR R0, SP, 24H |
03EE | b(40080080): ADD R0, R0, 80H |
03EF | b(A0E00024): STR R0, SP, 24H |
| IF pta0 = pta1 THENc pta0 := patadr+4 ENDd |
03F0 | c(80E00030): LDR R0, SP, 30H |
03F1 | c(81E00034): LDR R1, SP, 34H |
03F2 | c(00090001): SUB R0, R0, R1 |
03F3 | c(E9000003): BNE 3 [03F7H] |
03F4 | d(80E00008): LDR R0, SP, 8H |
03F5 | d(40080004): ADD R0, R0, 4H |
03F6 | d(A0E00030): STR R0, SP, 30H |
| END |
| ENDe |
03F7 | e(80E00028): LDR R0, SP, 28H |
03F8 | e(40080080): ADD R0, R0, 80H |
03F9 | e(E7FFFFB7): B -73 [03B1H] |
| ENDf ReplPattern; |
03FA | f(8FE00000): LDR LNK, SP, 0H |
03FB | f(4EE80058): ADD SP, SP, 58H |
03FC | f(C700000F): B LNK |
| |
| BEGINg Base := base;h Width := 1024;i Height := 768;j |
03FD | g .PROC 0 |
03FD | g .ENTRYPOINT |
03FD | g(4EE90004): SUB SP, SP, 4H |
03FE | g(AFE00000): STR LNK, SP, 0H |
03FF | h(6000000E): MOV' R0, R0, EH |
0400 | h(40067F00): IOR R0, R0, 7F00H |
0401 | h .FIXUP D |
0401 | h(8D000401): LDR SB, MT, MOD0 [Display] |
0402 | h(A0D00030): STR R0, SB, 30H [data] |
0403 | i(40000400): MOV R0, R0, 400H |
0404 | i(A0D00034): STR R0, SB, 34H |
0405 | j(40000300): MOV R0, R0, 300H |
0406 | j(A0D00038): STR R0, SB, 38H |
| arrow := SYSTEM.ADR($0F0F 0060 0070 0038 001C 000E 0007 8003 C101 E300 7700 3F00 1F00 3F00 7F00 FF00$);k |
0407 | k(40D80058): ADD R0, SB, 58H |
0408 | k(A0D0003C): STR R0, SB, 3CH |
| star := SYSTEM.ADR($0F0F 8000 8220 8410 8808 9004 A002 C001 7F7F C001 A002 9004 8808 8410 8220 8000$);l |
0409 | l(40D80078): ADD R0, SB, 78H |
040A | l(A0D00040): STR R0, SB, 40H |
| hook := SYSTEM.ADR($0C0C 070F 8707 C703 E701 F700 7F00 3F00 1F00 0F00 0700 0300 01$);m |
040B | m(40D80098): ADD R0, SB, 98H |
040C | m(A0D00044): STR R0, SB, 44H |
| updown := SYSTEM.ADR($080E 183C 7EFF 1818 1818 1818 FF7E3C18$);n |
040D | n(40D800B4): ADD R0, SB, B4H |
040E | n(A0D00048): STR R0, SB, 48H |
| block := SYSTEM.ADR($0808 FFFF C3C3 C3C3 FFFF$);o |
040F | o(40D800C4): ADD R0, SB, C4H |
0410 | o(A0D0004C): STR R0, SB, 4CH |
| cross := SYSTEM.ADR($0F0F 0140 0220 0410 0808 1004 2002 4001 0000 4001 2002 1004 0808 0410 0220 0140$);p |
0411 | p(40D800D0): ADD R0, SB, D0H |
0412 | p(A0D00050): STR R0, SB, 50H |
| grey := SYSTEM.ADR($2002 0000 5555 5555 AAAA AAAA$) |
| ENDq Display.r |
0413 | q(40D800F0): ADD R0, SB, F0H |
0414 | q(A0D00054): STR R0, SB, 54H |
0415 | r(8FE00000): LDR LNK, SP, 0H |
0416 | r(4EE80004): ADD SP, SP, 4H |
0417 | r(C700000F): B LNK |