| 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 |