| MODULE Hilbert; (*NW 8.1.2013 for RISC*) |
| .MODULE Hilbert (KEY D5264B1A, VERSION 1, SIZE 000008A8) |
| .IMPORT Display (KEY 4C08D3EA) |
| .IMPORT Viewers (KEY 25ABF199) |
| .IMPORT Texts (KEY 0B9E9984) |
| .IMPORT Fonts (KEY F4C9F557) |
| .IMPORT Files (KEY 73F5D686) |
| .IMPORT Oberon (KEY A89CCEE2) |
| .IMPORT MenuViewers (KEY 245ACC30) |
| .IMPORT TextFrames (KEY 650813D5) |
| .DATA 1CH |
| .STRING 1CH "System.Close System.Copy System.Grow" |
| .STRING 44H "Hilbert" |
| .FIXUP T 0H |
| IMPORT Display, Viewers, Texts, Oberon, MenuViewers, TextFrames; |
| |
| CONST Menu = "System.Close System.Copy System.Grow"; |
| |
| VAR x, y, d: INTEGER; |
| A, B, C, D: PROCEDURE (i: INTEGER); |
| |
| PROCEDURE E; |
| BEGINa Display.ReplConst(Display.white,b x,c y,d d,e 1,f Display.paint)g;h INC(x, d) |
0000 | a(4EE90004): SUB SP, SP, 4H |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | b(40000001): MOV R0, R0, 1H |
0003 | c .FIXUP D |
0003 | c(8D000003): LDR SB, MT, MOD0 [Hilbert] |
0004 | c(81D00000): LDR R1, SB, 0H [data] |
0005 | d(82D00004): LDR R2, SB, 4H |
0006 | e(83D00008): LDR R3, SB, 8H |
0007 | f(44000001): MOV R4, R0, 1H |
0008 | g(45000001): MOV R5, R0, 1H |
0009 | h .FIXUP P |
0009 | h(F710F009): BL MOD1 [Display] PROC15 |
| ENDi E; |
000A | i .FIXUP D |
000A | i(8D000007): LDR SB, MT, MOD0 [Hilbert] |
000B | i(40D80000): ADD R0, SB, 0H [data] |
000C | i(81000000): LDR R1, R0, 0H |
000D | i(82D00008): LDR R2, SB, 8H |
000E | i(01180002): ADD R1, R1, R2 |
000F | i(A1000000): STR R1, R0, 0H |
0010 | i(8FE00000): LDR LNK, SP, 0H |
0011 | i(4EE80004): ADD SP, SP, 4H |
0012 | i(C700000F): B LNK |
| |
| PROCEDURE N; |
| BEGINj Display.ReplConst(Display.white,k x,l y,m 1,n d,o Display.paint)p;q INC(y, d) |
0013 | j(4EE90004): SUB SP, SP, 4H |
0014 | j(AFE00000): STR LNK, SP, 0H |
0015 | k(40000001): MOV R0, R0, 1H |
0016 | l .FIXUP D |
0016 | l(8D00000C): LDR SB, MT, MOD0 [Hilbert] |
0017 | l(81D00000): LDR R1, SB, 0H [data] |
0018 | m(82D00004): LDR R2, SB, 4H |
0019 | n(43000001): MOV R3, R0, 1H |
001A | o(84D00008): LDR R4, SB, 8H |
001B | p(45000001): MOV R5, R0, 1H |
001C | q .FIXUP P |
001C | q(F710F013): BL MOD1 [Display] PROC15 |
| ENDr N; |
001D | r .FIXUP D |
001D | r(8D000007): LDR SB, MT, MOD0 [Hilbert] |
001E | r(40D80004): ADD R0, SB, 4H [data] |
001F | r(81000000): LDR R1, R0, 0H |
0020 | r(82D00008): LDR R2, SB, 8H |
0021 | r(01180002): ADD R1, R1, R2 |
0022 | r(A1000000): STR R1, R0, 0H |
0023 | r(8FE00000): LDR LNK, SP, 0H |
0024 | r(4EE80004): ADD SP, SP, 4H |
0025 | r(C700000F): B LNK |
| |
| PROCEDURE W; |
| BEGINs DEC(x, d);t Display.ReplConst(Display.white,u x,v y,w d,x 1,y Display.paint)z |
0026 | s(4EE90004): SUB SP, SP, 4H |
0027 | s(AFE00000): STR LNK, SP, 0H |
0028 | t .FIXUP D |
0028 | t(8D00000B): LDR SB, MT, MOD0 [Hilbert] |
0029 | t(40D80000): ADD R0, SB, 0H [data] |
002A | t(81000000): LDR R1, R0, 0H |
002B | t(82D00008): LDR R2, SB, 8H |
002C | t(01190002): SUB R1, R1, R2 |
002D | t(A1000000): STR R1, R0, 0H |
002E | u(40000001): MOV R0, R0, 1H |
002F | v(81D00000): LDR R1, SB, 0H |
0030 | w(82D00004): LDR R2, SB, 4H |
0031 | x(83D00008): LDR R3, SB, 8H |
0032 | y(44000001): MOV R4, R0, 1H |
0033 | z(45000001): MOV R5, R0, 1H |
| ENDa W; |
0034 | a .FIXUP P |
0034 | a(F710F018): BL MOD1 [Display] PROC15 |
0035 | a(8FE00000): LDR LNK, SP, 0H |
0036 | a(4EE80004): ADD SP, SP, 4H |
0037 | a(C700000F): B LNK |
| |
| PROCEDURE S; |
| BEGINb DEC(y, d);c Display.ReplConst(Display.white,d x,e y,f 1,g d,h Display.paint)i |
0038 | b(4EE90004): SUB SP, SP, 4H |
0039 | b(AFE00000): STR LNK, SP, 0H |
003A | c .FIXUP D |
003A | c(8D000012): LDR SB, MT, MOD0 [Hilbert] |
003B | c(40D80004): ADD R0, SB, 4H [data] |
003C | c(81000000): LDR R1, R0, 0H |
003D | c(82D00008): LDR R2, SB, 8H |
003E | c(01190002): SUB R1, R1, R2 |
003F | c(A1000000): STR R1, R0, 0H |
0040 | d(40000001): MOV R0, R0, 1H |
0041 | e(81D00000): LDR R1, SB, 0H |
0042 | f(82D00004): LDR R2, SB, 4H |
0043 | g(43000001): MOV R3, R0, 1H |
0044 | h(84D00008): LDR R4, SB, 8H |
0045 | i(45000001): MOV R5, R0, 1H |
| ENDj S; |
0046 | j .FIXUP P |
0046 | j(F710F012): BL MOD1 [Display] PROC15 |
0047 | j(8FE00000): LDR LNK, SP, 0H |
0048 | j(4EE80004): ADD SP, SP, 4H |
0049 | j(C700000F): B LNK |
| |
| PROCEDURE HA(i: INTEGER); |
| BEGINk |
004A | k(4EE90008): SUB SP, SP, 8H |
004B | k(AFE00000): STR LNK, SP, 0H |
004C | k(A0E00004): STR R0, SP, 4H |
| IF i > 0 THENl D(i-1)m;n W;o A(i-1)p;q S;r A(i-1)s;t E;u B(i-1)v ENDw |
004D | l(80E00004): LDR R0, SP, 4H |
004E | l(40090000): SUB R0, R0, 0H |
004F | l(E600001B): BLE 27 [006BH] |
0050 | m(80E00004): LDR R0, SP, 4H |
0051 | m(40090001): SUB R0, R0, 1H |
0052 | n .FIXUP D |
0052 | n(8D000018): LDR SB, MT, MOD0 [Hilbert] |
0053 | n(81D00018): LDR R1, SB, 18H [data] |
0054 | n(D102C75C): BLEQ MT [trap=5, pos=711] |
0055 | n(D7000001): BL R1 |
0056 | o(F7FFFFCF): BL -49 [0026H] |
0057 | p(80E00004): LDR R0, SP, 4H |
0058 | p(40090001): SUB R0, R0, 1H |
0059 | q .FIXUP D |
0059 | q(8D000007): LDR SB, MT, MOD0 [Hilbert] |
005A | q(81D0000C): LDR R1, SB, CH [data] |
005B | q(D102D25C): BLEQ MT [trap=5, pos=722] |
005C | q(D7000001): BL R1 |
005D | r(F7FFFFDA): BL -38 [0038H] |
005E | s(80E00004): LDR R0, SP, 4H |
005F | s(40090001): SUB R0, R0, 1H |
0060 | t .FIXUP D |
0060 | t(8D000007): LDR SB, MT, MOD0 [Hilbert] |
0061 | t(81D0000C): LDR R1, SB, CH [data] |
0062 | t(D102DD5C): BLEQ MT [trap=5, pos=733] |
0063 | t(D7000001): BL R1 |
0064 | u(F7FFFF9B): BL -101 [0000H] |
0065 | v(80E00004): LDR R0, SP, 4H |
0066 | v(40090001): SUB R0, R0, 1H |
0067 | w .FIXUP D |
0067 | w(8D000007): LDR SB, MT, MOD0 [Hilbert] |
0068 | w(81D00010): LDR R1, SB, 10H [data] |
0069 | w(D102EB5C): BLEQ MT [trap=5, pos=747] |
006A | w(D7000001): BL R1 |
| ENDx HA; |
006B | x(8FE00000): LDR LNK, SP, 0H |
006C | x(4EE80008): ADD SP, SP, 8H |
006D | x(C700000F): B LNK |
| |
| PROCEDURE HB(i: INTEGER); |
| BEGINy |
006E | y(4EE90008): SUB SP, SP, 8H |
006F | y(AFE00000): STR LNK, SP, 0H |
0070 | y(A0E00004): STR R0, SP, 4H |
| IF i > 0 THENz C(i-1)a;b N;c B(i-1)d;e E;f B(i-1)g;h S;i A(i-1)j ENDk |
0071 | z(80E00004): LDR R0, SP, 4H |
0072 | z(40090000): SUB R0, R0, 0H |
0073 | z(E600001B): BLE 27 [008FH] |
0074 | a(80E00004): LDR R0, SP, 4H |
0075 | a(40090001): SUB R0, R0, 1H |
0076 | b .FIXUP D |
0076 | b(8D00000F): LDR SB, MT, MOD0 [Hilbert] |
0077 | b(81D00014): LDR R1, SB, 14H [data] |
0078 | b(D103345C): BLEQ MT [trap=5, pos=820] |
0079 | b(D7000001): BL R1 |
007A | c(F7FFFF98): BL -104 [0013H] |
007B | d(80E00004): LDR R0, SP, 4H |
007C | d(40090001): SUB R0, R0, 1H |
007D | e .FIXUP D |
007D | e(8D000007): LDR SB, MT, MOD0 [Hilbert] |
007E | e(81D00010): LDR R1, SB, 10H [data] |
007F | e(D1033F5C): BLEQ MT [trap=5, pos=831] |
0080 | e(D7000001): BL R1 |
0081 | f(F7FFFF7E): BL -130 [0000H] |
0082 | g(80E00004): LDR R0, SP, 4H |
0083 | g(40090001): SUB R0, R0, 1H |
0084 | h .FIXUP D |
0084 | h(8D000007): LDR SB, MT, MOD0 [Hilbert] |
0085 | h(81D00010): LDR R1, SB, 10H [data] |
0086 | h(D1034A5C): BLEQ MT [trap=5, pos=842] |
0087 | h(D7000001): BL R1 |
0088 | i(F7FFFFAF): BL -81 [0038H] |
0089 | j(80E00004): LDR R0, SP, 4H |
008A | j(40090001): SUB R0, R0, 1H |
008B | k .FIXUP D |
008B | k(8D000007): LDR SB, MT, MOD0 [Hilbert] |
008C | k(81D0000C): LDR R1, SB, CH [data] |
008D | k(D103585C): BLEQ MT [trap=5, pos=856] |
008E | k(D7000001): BL R1 |
| ENDl HB; |
008F | l(8FE00000): LDR LNK, SP, 0H |
0090 | l(4EE80008): ADD SP, SP, 8H |
0091 | l(C700000F): B LNK |
| |
| PROCEDURE HC(i: INTEGER); |
| BEGINm |
0092 | m(4EE90008): SUB SP, SP, 8H |
0093 | m(AFE00000): STR LNK, SP, 0H |
0094 | m(A0E00004): STR R0, SP, 4H |
| IF i > 0 THENn B(i-1)o;p E;q C(i-1)r;s N;t C(i-1)u;v W;w D(i-1)x ENDy |
0095 | n(80E00004): LDR R0, SP, 4H |
0096 | n(40090000): SUB R0, R0, 0H |
0097 | n(E600001B): BLE 27 [00B3H] |
0098 | o(80E00004): LDR R0, SP, 4H |
0099 | o(40090001): SUB R0, R0, 1H |
009A | p .FIXUP D |
009A | p(8D00000F): LDR SB, MT, MOD0 [Hilbert] |
009B | p(81D00010): LDR R1, SB, 10H [data] |
009C | p(D103A15C): BLEQ MT [trap=5, pos=929] |
009D | p(D7000001): BL R1 |
009E | q(F7FFFF61): BL -159 [0000H] |
009F | r(80E00004): LDR R0, SP, 4H |
00A0 | r(40090001): SUB R0, R0, 1H |
00A1 | s .FIXUP D |
00A1 | s(8D000007): LDR SB, MT, MOD0 [Hilbert] |
00A2 | s(81D00014): LDR R1, SB, 14H [data] |
00A3 | s(D103AC5C): BLEQ MT [trap=5, pos=940] |
00A4 | s(D7000001): BL R1 |
00A5 | t(F7FFFF6D): BL -147 [0013H] |
00A6 | u(80E00004): LDR R0, SP, 4H |
00A7 | u(40090001): SUB R0, R0, 1H |
00A8 | v .FIXUP D |
00A8 | v(8D000007): LDR SB, MT, MOD0 [Hilbert] |
00A9 | v(81D00014): LDR R1, SB, 14H [data] |
00AA | v(D103B75C): BLEQ MT [trap=5, pos=951] |
00AB | v(D7000001): BL R1 |
00AC | w(F7FFFF79): BL -135 [0026H] |
00AD | x(80E00004): LDR R0, SP, 4H |
00AE | x(40090001): SUB R0, R0, 1H |
00AF | y .FIXUP D |
00AF | y(8D000007): LDR SB, MT, MOD0 [Hilbert] |
00B0 | y(81D00018): LDR R1, SB, 18H [data] |
00B1 | y(D103C55C): BLEQ MT [trap=5, pos=965] |
00B2 | y(D7000001): BL R1 |
| ENDz HC; |
00B3 | z(8FE00000): LDR LNK, SP, 0H |
00B4 | z(4EE80008): ADD SP, SP, 8H |
00B5 | z(C700000F): B LNK |
| |
| PROCEDURE HD(i: INTEGER); |
| BEGINa |
00B6 | a(4EE90008): SUB SP, SP, 8H |
00B7 | a(AFE00000): STR LNK, SP, 0H |
00B8 | a(A0E00004): STR R0, SP, 4H |
| IF i > 0 THENb A(i-1)c;d S;e D(i-1)f;g W;h D(i-1)i;j N;k C(i-1)l ENDm |
00B9 | b(80E00004): LDR R0, SP, 4H |
00BA | b(40090000): SUB R0, R0, 0H |
00BB | b(E600001B): BLE 27 [00D7H] |
00BC | c(80E00004): LDR R0, SP, 4H |
00BD | c(40090001): SUB R0, R0, 1H |
00BE | d .FIXUP D |
00BE | d(8D00000F): LDR SB, MT, MOD0 [Hilbert] |
00BF | d(81D0000C): LDR R1, SB, CH [data] |
00C0 | d(D1040E5C): BLEQ MT [trap=5, pos=1038] |
00C1 | d(D7000001): BL R1 |
00C2 | e(F7FFFF75): BL -139 [0038H] |
00C3 | f(80E00004): LDR R0, SP, 4H |
00C4 | f(40090001): SUB R0, R0, 1H |
00C5 | g .FIXUP D |
00C5 | g(8D000007): LDR SB, MT, MOD0 [Hilbert] |
00C6 | g(81D00018): LDR R1, SB, 18H [data] |
00C7 | g(D104195C): BLEQ MT [trap=5, pos=1049] |
00C8 | g(D7000001): BL R1 |
00C9 | h(F7FFFF5C): BL -164 [0026H] |
00CA | i(80E00004): LDR R0, SP, 4H |
00CB | i(40090001): SUB R0, R0, 1H |
00CC | j .FIXUP D |
00CC | j(8D000007): LDR SB, MT, MOD0 [Hilbert] |
00CD | j(81D00018): LDR R1, SB, 18H [data] |
00CE | j(D104245C): BLEQ MT [trap=5, pos=1060] |
00CF | j(D7000001): BL R1 |
00D0 | k(F7FFFF42): BL -190 [0013H] |
00D1 | l(80E00004): LDR R0, SP, 4H |
00D2 | l(40090001): SUB R0, R0, 1H |
00D3 | m .FIXUP D |
00D3 | m(8D000007): LDR SB, MT, MOD0 [Hilbert] |
00D4 | m(81D00014): LDR R1, SB, 14H [data] |
00D5 | m(D104325C): BLEQ MT [trap=5, pos=1074] |
00D6 | m(D7000001): BL R1 |
| ENDn HD; |
00D7 | n(8FE00000): LDR LNK, SP, 0H |
00D8 | n(4EE80008): ADD SP, SP, 8H |
00D9 | n(C700000F): B LNK |
| |
| PROCEDURE DrawHilbert(F: Display.Frame); |
| VAR k, n, w, x0, y0: INTEGER; |
| BEGINo k := 0;p d := 8;q |
00DA | o(4EE9001C): SUB SP, SP, 1CH |
00DB | o(AFE00000): STR LNK, SP, 0H |
00DC | o(A0E00004): STR R0, SP, 4H |
00DD | p(40000000): MOV R0, R0, 0H |
00DE | p(A0E00008): STR R0, SP, 8H |
00DF | q(40000008): MOV R0, R0, 8H |
00E0 | q .FIXUP D |
00E0 | q(8D00000D): LDR SB, MT, MOD0 [Hilbert] |
00E1 | q(A0D00008): STR R0, SB, 8H [data] |
| IF F.Wr < F.Hs THENt w := F.Wu ELSEv ww := F.Hx ENDy ; |
00E2 | r(80E00004): LDR R0, SP, 4H |
00E3 | r(D104AD4C): BLEQ MT [trap=4, pos=1197] |
00E4 | s(81E00004): LDR R1, SP, 4H |
00E5 | s(D104B34C): BLEQ MT [trap=4, pos=1203] |
00E6 | t(80000010): LDR R0, R0, 10H |
00E7 | t(81100014): LDR R1, R1, 14H |
00E8 | t(00090001): SUB R0, R0, R1 |
00E9 | t(ED000005): BGE 5 [00EFH] |
00EA | u(80E00004): LDR R0, SP, 4H |
00EB | u(D104C14C): BLEQ MT [trap=4, pos=1217] |
00EC | v(80000010): LDR R0, R0, 10H |
00ED | v(A0E00010): STR R0, SP, 10H |
00EE | w(E7000004): B 4 [00F3H] |
00EF | x(80E00004): LDR R0, SP, 4H |
00F0 | x(D104CF4C): BLEQ MT [trap=4, pos=1231] |
00F1 | y(80000014): LDR R0, R0, 14H |
00F2 | y(A0E00010): STR R0, SP, 10H |
| WHILE d*2 <z w DOa d := d*2;b INC(k) ENDc ; |
00F3 | z .FIXUP D |
00F3 | z(8D000013): LDR SB, MT, MOD0 [Hilbert] |
00F4 | z(80D00008): LDR R0, SB, 8H [data] |
00F5 | z(40010001): LSL R0, R0, 1H |
00F6 | a(81E00010): LDR R1, SP, 10H |
00F7 | a(00090001): SUB R0, R0, R1 |
00F8 | a(ED000008): BGE 8 [0101H] |
00F9 | b .FIXUP D |
00F9 | b(8D000006): LDR SB, MT, MOD0 [Hilbert] |
00FA | b(80D00008): LDR R0, SB, 8H [data] |
00FB | b(40010001): LSL R0, R0, 1H |
00FC | b(A0D00008): STR R0, SB, 8H |
00FD | c(80E00008): LDR R0, SP, 8H |
00FE | c(40080001): ADD R0, R0, 1H |
00FF | c(A0E00008): STR R0, SP, 8H |
0100 | c(E7FFFFF2): B -14 [00F3H] |
| Display.ReplConst(Display.black,d F.Xe,f F.Yg,h F.Wi,j F.Hk,l Display.replace)m;n |
0101 | d(40000000): MOV R0, R0, 0H |
0102 | e(81E00004): LDR R1, SP, 4H |
0103 | e(D1052A4C): BLEQ MT [trap=4, pos=1322] |
0104 | f(81100008): LDR R1, R1, 8H |
0105 | g(82E00004): LDR R2, SP, 4H |
0106 | g(D1052F4C): BLEQ MT [trap=4, pos=1327] |
0107 | h(8220000C): LDR R2, R2, CH |
0108 | i(83E00004): LDR R3, SP, 4H |
0109 | i(D105344C): BLEQ MT [trap=4, pos=1332] |
010A | j(83300010): LDR R3, R3, 10H |
010B | k(84E00004): LDR R4, SP, 4H |
010C | k(D105394C): BLEQ MT [trap=4, pos=1337] |
010D | l(84400014): LDR R4, R4, 14H |
010E | m(45000000): MOV R5, R0, 0H |
010F | n .FIXUP P |
010F | n(F710F0C9): BL MOD1 [Display] PROC15 |
| x0 := F.Wo DIV 2;p y0 := F.Hq DIV 2;r n := 0;s |
0110 | o(80E00004): LDR R0, SP, 4H |
0111 | o(D1055A4C): BLEQ MT [trap=4, pos=1370] |
0112 | p(80000010): LDR R0, R0, 10H |
0113 | p(40020001): ASR R0, R0, 1H |
0114 | p(A0E00014): STR R0, SP, 14H |
0115 | q(80E00004): LDR R0, SP, 4H |
0116 | q(D1056B4C): BLEQ MT [trap=4, pos=1387] |
0117 | r(80000014): LDR R0, R0, 14H |
0118 | r(40020001): ASR R0, R0, 1H |
0119 | r(A0E00018): STR R0, SP, 18H |
011A | s(40000000): MOV R0, R0, 0H |
011B | s(A0E0000C): STR R0, SP, CH |
| WHILE n < k DOt |
011C | t(80E0000C): LDR R0, SP, CH |
011D | t(81E00008): LDR R1, SP, 8H |
011E | t(00090001): SUB R0, R0, R1 |
011F | t(ED000020): BGE 32 [0140H] |
| d := d DIV 2;u INC(x0, d DIV 2)v;w INC(y0, d DIV 2)x;y |
0120 | u .FIXUP D |
0120 | u(8D000027): LDR SB, MT, MOD0 [Hilbert] |
0121 | u(80D00008): LDR R0, SB, 8H [data] |
0122 | u(40020001): ASR R0, R0, 1H |
0123 | u(A0D00008): STR R0, SB, 8H |
0124 | v(80D00008): LDR R0, SB, 8H |
0125 | v(40020001): ASR R0, R0, 1H |
0126 | w(81E00014): LDR R1, SP, 14H |
0127 | w(01180000): ADD R1, R1, R0 |
0128 | w(A1E00014): STR R1, SP, 14H |
0129 | x(80D00008): LDR R0, SB, 8H |
012A | x(40020001): ASR R0, R0, 1H |
012B | y(81E00018): LDR R1, SP, 18H |
012C | y(01180000): ADD R1, R1, R0 |
012D | y(A1E00018): STR R1, SP, 18H |
| x := F.Xz + x0;a y := F.Yb + y0;c INC(n);d HA(n)e |
012E | z(80E00004): LDR R0, SP, 4H |
012F | z(D105D44C): BLEQ MT [trap=4, pos=1492] |
0130 | a(80000008): LDR R0, R0, 8H |
0131 | a(81E00014): LDR R1, SP, 14H |
0132 | a(00080001): ADD R0, R0, R1 |
0133 | a(A0D00000): STR R0, SB, 0H |
0134 | b(80E00004): LDR R0, SP, 4H |
0135 | b(D105E34C): BLEQ MT [trap=4, pos=1507] |
0136 | c(8000000C): LDR R0, R0, CH |
0137 | c(81E00018): LDR R1, SP, 18H |
0138 | c(00080001): ADD R0, R0, R1 |
0139 | c(A0D00004): STR R0, SB, 4H |
013A | d(80E0000C): LDR R0, SP, CH |
013B | d(40080001): ADD R0, R0, 1H |
013C | d(A0E0000C): STR R0, SP, CH |
013D | e(80E0000C): LDR R0, SP, CH |
| ENDf |
013E | f(F7FFFF0B): BL -245 [004AH] |
013F | f(E7FFFFDC): B -36 [011CH] |
| ENDg DrawHilbert; |
0140 | g(8FE00000): LDR LNK, SP, 0H |
0141 | g(4EE8001C): ADD SP, SP, 1CH |
0142 | g(C700000F): B LNK |
| |
| PROCEDURE Handler(F: Display.Frame; VAR M: Display.FrameMsg); |
| VAR F0: Display.Frame; |
| BEGINh |
0143 | h(4EE90014): SUB SP, SP, 14H |
0144 | h(AFE00000): STR LNK, SP, 0H |
0145 | h(A0E00004): STR R0, SP, 4H |
0146 | h(A1E00008): STR R1, SP, 8H |
0147 | h(A2E0000C): STR R2, SP, CH |
| IF M IS Oberon.InputMsg THENi |
0148 | i(80E0000C): LDR R0, SP, CH |
0149 | i(80000004): LDR R0, R0, 4H |
014A | i .FIXUP D |
014A | i(8D60002A): LDR SB, MT, MOD6 [Oberon] |
014B | i(41D80003): ADD R1, SB, VAR3 |
014C | i(01190000): SUB R1, R1, R0 |
014D | i(E900001C): BNE 28 [016AH] |
| IF M(Oberon.InputMsg)j.id = Oberon.track THENk |
014E | j(80E0000C): LDR R0, SP, CH |
014F | j(80000004): LDR R0, R0, 4H |
0150 | j .FIXUP D |
0150 | j(8D600006): LDR SB, MT, MOD6 [Oberon] |
0151 | j(41D80003): ADD R1, SB, VAR3 |
0152 | j(01190000): SUB R1, R1, R0 |
0153 | j(D906B32C): BLNE MT [trap=2, pos=1715] |
0154 | k(80E00008): LDR R0, SP, 8H |
0155 | k(80000000): LDR R0, R0, 0H |
0156 | k(40090001): SUB R0, R0, 1H |
0157 | k(E9000011): BNE 17 [0169H] |
| Oberon.DrawMouseArrow(M(Oberon.InputMsg)l.X,m M(Oberon.InputMsg)n.Y)o |
0158 | l(80E0000C): LDR R0, SP, CH |
0159 | l(80000004): LDR R0, R0, 4H |
015A | l .FIXUP D |
015A | l(8D60000A): LDR SB, MT, MOD6 [Oberon] |
015B | l(41D80003): ADD R1, SB, VAR3 |
015C | l(01190000): SUB R1, R1, R0 |
015D | l(D906FB2C): BLNE MT [trap=2, pos=1787] |
015E | m(80E00008): LDR R0, SP, 8H |
015F | m(80000008): LDR R0, R0, 8H |
0160 | n(81E0000C): LDR R1, SP, CH |
0161 | n(81100004): LDR R1, R1, 4H |
0162 | n .FIXUP D |
0162 | n(8D600008): LDR SB, MT, MOD6 [Oberon] |
0163 | n(42D80003): ADD R2, SB, VAR3 |
0164 | n(02290001): SUB R2, R2, R1 |
0165 | n(D907112C): BLNE MT [trap=2, pos=1809] |
0166 | o(81E00008): LDR R1, SP, 8H |
0167 | o(8110000C): LDR R1, R1, CH |
| ENDp |
0168 | p .FIXUP P |
0168 | p(F7618059): BL MOD6 [Oberon] PROC24 |
| ELSIF Mq IS MenuViewers.ModifyMsg THENr |
0169 | q(E700005B): B 91 [01C5H] |
016A | r(80E0000C): LDR R0, SP, CH |
016B | r(80000004): LDR R0, R0, 4H |
016C | r .FIXUP D |
016C | r(8D70000A): LDR SB, MT, MOD7 [MenuViewers] |
016D | r(41D80002): ADD R1, SB, VAR2 |
016E | r(01190000): SUB R1, R1, R0 |
016F | r(E9000019): BNE 25 [0189H] |
| F.Ys := M(MenuViewers.ModifyMsg)t.Y;u F.Hv := M(MenuViewers.ModifyMsg)w.H;x DrawHilbert(F)y |
0170 | s(80E00004): LDR R0, SP, 4H |
0171 | s(D107524C): BLEQ MT [trap=4, pos=1874] |
0172 | t(81E0000C): LDR R1, SP, CH |
0173 | t(81100004): LDR R1, R1, 4H |
0174 | t .FIXUP D |
0174 | t(8D700008): LDR SB, MT, MOD7 [MenuViewers] |
0175 | t(42D80002): ADD R2, SB, VAR2 |
0176 | t(02290001): SUB R2, R2, R1 |
0177 | t(D9076E2C): BLNE MT [trap=2, pos=1902] |
0178 | u(81E00008): LDR R1, SP, 8H |
0179 | u(81100008): LDR R1, R1, 8H |
017A | u(A100000C): STR R1, R0, CH |
017B | v(80E00004): LDR R0, SP, 4H |
017C | v(D107754C): BLEQ MT [trap=4, pos=1909] |
017D | w(81E0000C): LDR R1, SP, CH |
017E | w(81100004): LDR R1, R1, 4H |
017F | w .FIXUP D |
017F | w(8D70000B): LDR SB, MT, MOD7 [MenuViewers] |
0180 | w(42D80002): ADD R2, SB, VAR2 |
0181 | w(02290001): SUB R2, R2, R1 |
0182 | w(D907912C): BLNE MT [trap=2, pos=1937] |
0183 | x(81E00008): LDR R1, SP, 8H |
0184 | x(8110000C): LDR R1, R1, CH |
0185 | x(A1000014): STR R1, R0, 14H |
0186 | y(80E00004): LDR R0, SP, 4H |
| ELSIFz Ma IS Oberon.ControlMsg THENb |
0187 | z(F7FFFF52): BL -174 [00DAH] |
0188 | a(E700003C): B 60 [01C5H] |
0189 | b(80E0000C): LDR R0, SP, CH |
018A | b(80000004): LDR R0, R0, 4H |
018B | b .FIXUP D |
018B | b(8D60000C): LDR SB, MT, MOD6 [Oberon] |
018C | b(41D80005): ADD R1, SB, VAR5 |
018D | b(01190000): SUB R1, R1, R0 |
018E | b(E9000018): BNE 24 [01A7H] |
| IF M(Oberon.ControlMsg)c.id = Oberon.neutralize THENd Oberon.RemoveMarks(F.Xe,f F.Yg,h F.Wi,j F.Hk)l ENDm |
018F | c(80E0000C): LDR R0, SP, CH |
0190 | c(80000004): LDR R0, R0, 4H |
0191 | c .FIXUP D |
0191 | c(8D600006): LDR SB, MT, MOD6 [Oberon] |
0192 | c(41D80005): ADD R1, SB, VAR5 |
0193 | c(01190000): SUB R1, R1, R0 |
0194 | c(D907E72C): BLNE MT [trap=2, pos=2023] |
0195 | d(80E00008): LDR R0, SP, 8H |
0196 | d(80000000): LDR R0, R0, 0H |
0197 | d(40090001): SUB R0, R0, 1H |
0198 | d(E900000D): BNE 13 [01A6H] |
0199 | e(80E00004): LDR R0, SP, 4H |
019A | e(D1081A4C): BLEQ MT [trap=4, pos=2074] |
019B | f(80000008): LDR R0, R0, 8H |
019C | g(81E00004): LDR R1, SP, 4H |
019D | g(D1081F4C): BLEQ MT [trap=4, pos=2079] |
019E | h(8110000C): LDR R1, R1, CH |
019F | i(82E00004): LDR R2, SP, 4H |
01A0 | i(D108244C): BLEQ MT [trap=4, pos=2084] |
01A1 | j(82200010): LDR R2, R2, 10H |
01A2 | k(83E00004): LDR R3, SP, 4H |
01A3 | k(D108294C): BLEQ MT [trap=4, pos=2089] |
01A4 | l(83300014): LDR R3, R3, 14H |
01A5 | m .FIXUP P |
01A5 | m(F761B03D): BL MOD6 [Oberon] PROC27 |
| ELSIF Mn IS Oberon.CopyMsg THENo |
01A6 | n(E700001E): B 30 [01C5H] |
01A7 | o(80E0000C): LDR R0, SP, CH |
01A8 | o(80000004): LDR R0, R0, 4H |
01A9 | o .FIXUP D |
01A9 | o(8D600018): LDR SB, MT, MOD6 [Oberon] |
01AA | o(41D80006): ADD R1, SB, VAR6 |
01AB | o(01190000): SUB R1, R1, R0 |
01AC | o(E9000018): BNE 24 [01C5H] |
| NEW(F0);p F0^ :=q F^;r M(Oberon.CopyMsg)s.F := F0 |
01AD | p(40E80010): ADD R0, SP, 10H |
01AE | p .FIXUP D |
01AE | p(8D100005): LDR SB, MT, MOD1 [Display] |
01AF | p(41D80002): ADD R1, SB, VAR2 |
01B0 | p(D708600C): BL MT [trap=0, pos=2144] |
01B1 | q(80E00010): LDR R0, SP, 10H |
01B2 | q(D108674C): BLEQ MT [trap=4, pos=2151] |
01B3 | r(81E00004): LDR R1, SP, 4H |
01B4 | r(D1086B4C): BLEQ MT [trap=4, pos=2155] |
01B5 | r(42000007): MOV R2, R0, 7H |
01B6 | r(83100000): LDR R3, R1, 0H |
01B7 | r(41180004): ADD R1, R1, 4H |
01B8 | r(A3000000): STR R3, R0, 0H |
01B9 | r(40080004): ADD R0, R0, 4H |
01BA | r(42290001): SUB R2, R2, 1H |
01BB | r(E9FFFFFA): BNE -6 [01B6H] |
01BC | s(80E0000C): LDR R0, SP, CH |
01BD | s(80000004): LDR R0, R0, 4H |
01BE | s .FIXUP D |
01BE | s(8D600010): LDR SB, MT, MOD6 [Oberon] |
01BF | s(41D80006): ADD R1, SB, VAR6 |
01C0 | s(01190000): SUB R1, R1, R0 |
01C1 | s(D9087D2C): BLNE MT [trap=2, pos=2173] |
| ENDt |
01C2 | t(80E00010): LDR R0, SP, 10H |
01C3 | t(81E00008): LDR R1, SP, 8H |
01C4 | t(A0100000): STR R0, R1, 0H |
| ENDu Handler; |
01C5 | u(8FE00000): LDR LNK, SP, 0H |
01C6 | u(4EE80014): ADD SP, SP, 14H |
01C7 | u(C700000F): B LNK |
| |
| PROCEDURE New(): Display.Frame; |
| VAR F: Display.Frame; |
| BEGINv NEW(F);w F.handlex := Handler;y RETURN F |
01C8 | v(4EE90008): SUB SP, SP, 8H |
01C9 | v(AFE00000): STR LNK, SP, 0H |
01CA | w(40E80004): ADD R0, SP, 4H |
01CB | w .FIXUP D |
01CB | w(8D10000D): LDR SB, MT, MOD1 [Display] |
01CC | w(41D80002): ADD R1, SB, VAR2 |
01CD | w(D708E90C): BL MT [trap=0, pos=2281] |
01CE | x(80E00004): LDR R0, SP, 4H |
01CF | x(D108F24C): BLEQ MT [trap=4, pos=2290] |
01D0 | y(F7000000): BL 0 [01D1H] |
01D1 | y(41F90238): SUB R1, LNK, 238H |
01D2 | y(A1000018): STR R1, R0, 18H |
| ENDz New; |
01D3 | z(80E00004): LDR R0, SP, 4H |
01D4 | z(8FE00000): LDR LNK, SP, 0H |
01D5 | z(4EE80008): ADD SP, SP, 8H |
01D6 | z(C700000F): B LNK |
| |
| PROCEDURE Draw*; |
| VAR V: Viewers.Viewer; X, Y: INTEGER; |
| BEGINa Oberon.AllocateUserViewer(Oberon.Par.vwr.bXc,d X,e Y)f;g |
01D7 | a .PROC 1 |
01D7 | a .COMMAND Draw |
01D7 | a(4EE90010): SUB SP, SP, 10H |
01D8 | a(AFE00000): STR LNK, SP, 0H |
01D9 | b .FIXUP D |
01D9 | b(8D60000E): LDR SB, MT, MOD6 [Oberon] |
01DA | b(40D8000E): ADD R0, SB, VAR14 |
01DB | c(80000000): LDR R0, R0, 0H |
01DC | c(D109834C): BLEQ MT [trap=4, pos=2435] |
01DD | d(80000008): LDR R0, R0, 8H |
01DE | e(41E80008): ADD R1, SP, 8H |
01DF | f(42E8000C): ADD R2, SP, CH |
01E0 | g .FIXUP P |
01E0 | g(F762203B): BL MOD6 [Oberon] PROC34 |
| V := MenuViewers.New(TextFrames.NewMenu("Hilbert",h Menu)i,j New()k,l TextFrames.menuH,m X,n Y)o |
01E1 | h .FIXUP D |
01E1 | h(8D000008): LDR SB, MT, MOD0 [Hilbert] |
01E2 | h(40D80044): ADD R0, SB, 44H ["Hilbert"] |
01E3 | h(41000008): MOV R1, R0, 8H |
01E4 | i(42D8001C): ADD R2, SB, 1CH |
01E5 | i(43000027): MOV R3, R0, 27H |
01E6 | j .FIXUP P |
01E6 | j(F782C006): BL MOD8 [TextFrames] PROC44 |
01E7 | k(4EE90004): SUB SP, SP, 4H |
01E8 | k(A0E00000): STR R0, SP, 0H |
01E9 | l(F7FFFFDE): BL -34 [01C8H] |
01EA | l(01000000): MOV R1, R0, R0 |
01EB | l(80E00000): LDR R0, SP, 0H |
01EC | l(4EE80004): ADD SP, SP, 4H |
01ED | m .FIXUP D |
01ED | m(8D80000C): LDR SB, MT, MOD8 [TextFrames] |
01EE | m(82D00005): LDR R2, SB, VAR5 |
01EF | n(83E00008): LDR R3, SP, 8H |
01F0 | o(84E0000C): LDR R4, SP, CH |
| ENDp Draw; |
01F1 | p .FIXUP P |
01F1 | p(F770400B): BL MOD7 [MenuViewers] PROC4 |
01F2 | p(A0E00004): STR R0, SP, 4H |
01F3 | p(8FE00000): LDR LNK, SP, 0H |
01F4 | p(4EE80010): ADD SP, SP, 10H |
01F5 | p(C700000F): B LNK |
| |
| BEGINq A := HA;r B := HB;s C := HC;t D := HD |
01F6 | q .PROC 0 |
01F6 | q .ENTRYPOINT |
01F6 | q(4EE90004): SUB SP, SP, 4H |
01F7 | q(AFE00000): STR LNK, SP, 0H |
01F8 | r(F7000000): BL 0 [01F9H] |
01F9 | r(40F906BC): SUB R0, LNK, 6BCH |
01FA | r .FIXUP D |
01FA | r(8D00000D): LDR SB, MT, MOD0 [Hilbert] |
01FB | r(A0D0000C): STR R0, SB, CH [data] |
01FC | s(F7000000): BL 0 [01FDH] |
01FD | s(40F9063C): SUB R0, LNK, 63CH |
01FE | s(A0D00010): STR R0, SB, 10H |
01FF | t(F7000000): BL 0 [0200H] |
0200 | t(40F905B8): SUB R0, LNK, 5B8H |
0201 | t(A0D00014): STR R0, SB, 14H |
| ENDu Hilbert.v |
0202 | u(F7000000): BL 0 [0203H] |
0203 | u(40F90534): SUB R0, LNK, 534H |
0204 | u(A0D00018): STR R0, SB, 18H |
0205 | v(8FE00000): LDR LNK, SP, 0H |
0206 | v(4EE80004): ADD SP, SP, 4H |
0207 | v(C700000F): B LNK |