Hilbert

Used Exports

BUILTINS: DEC INC INTEGER NEW
Display: Frame FrameDesc.H FrameDesc.W FrameDesc.X FrameDesc.Y FrameDesc.handle FrameMsg ReplConst black paint replace white
MenuViewers: ModifyMsg ModifyMsg.H ModifyMsg.Y New
Oberon: AllocateUserViewer ControlMsg ControlMsg.id CopyMsg CopyMsg.F DrawMouseArrow InputMsg InputMsg.X InputMsg.Y InputMsg.id Par Par.vwr RemoveMarks neutralize track
TextFrames: NewMenu menuH
Viewers: Viewer

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)
0000a(4EE90004): SUB SP, SP, 4H
0001a(AFE00000): STR LNK, SP, 0H
0002b(40000001): MOV R0, R0, 1H
0003c .FIXUP D
0003c(8D000003): LDR SB, MT, MOD0 [Hilbert]
0004c(81D00000): LDR R1, SB, 0H [data]
0005d(82D00004): LDR R2, SB, 4H
0006e(83D00008): LDR R3, SB, 8H
0007f(44000001): MOV R4, R0, 1H
0008g(45000001): MOV R5, R0, 1H
0009h .FIXUP P
0009h(F710F009): BL MOD1 [Display] PROC15
ENDi E;
000Ai .FIXUP D
000Ai(8D000007): LDR SB, MT, MOD0 [Hilbert]
000Bi(40D80000): ADD R0, SB, 0H [data]
000Ci(81000000): LDR R1, R0, 0H
000Di(82D00008): LDR R2, SB, 8H
000Ei(01180002): ADD R1, R1, R2
000Fi(A1000000): STR R1, R0, 0H
0010i(8FE00000): LDR LNK, SP, 0H
0011i(4EE80004): ADD SP, SP, 4H
0012i(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)
0013j(4EE90004): SUB SP, SP, 4H
0014j(AFE00000): STR LNK, SP, 0H
0015k(40000001): MOV R0, R0, 1H
0016l .FIXUP D
0016l(8D00000C): LDR SB, MT, MOD0 [Hilbert]
0017l(81D00000): LDR R1, SB, 0H [data]
0018m(82D00004): LDR R2, SB, 4H
0019n(43000001): MOV R3, R0, 1H
001Ao(84D00008): LDR R4, SB, 8H
001Bp(45000001): MOV R5, R0, 1H
001Cq .FIXUP P
001Cq(F710F013): BL MOD1 [Display] PROC15
ENDr N;
001Dr .FIXUP D
001Dr(8D000007): LDR SB, MT, MOD0 [Hilbert]
001Er(40D80004): ADD R0, SB, 4H [data]
001Fr(81000000): LDR R1, R0, 0H
0020r(82D00008): LDR R2, SB, 8H
0021r(01180002): ADD R1, R1, R2
0022r(A1000000): STR R1, R0, 0H
0023r(8FE00000): LDR LNK, SP, 0H
0024r(4EE80004): ADD SP, SP, 4H
0025r(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
0026s(4EE90004): SUB SP, SP, 4H
0027s(AFE00000): STR LNK, SP, 0H
0028t .FIXUP D
0028t(8D00000B): LDR SB, MT, MOD0 [Hilbert]
0029t(40D80000): ADD R0, SB, 0H [data]
002At(81000000): LDR R1, R0, 0H
002Bt(82D00008): LDR R2, SB, 8H
002Ct(01190002): SUB R1, R1, R2
002Dt(A1000000): STR R1, R0, 0H
002Eu(40000001): MOV R0, R0, 1H
002Fv(81D00000): LDR R1, SB, 0H
0030w(82D00004): LDR R2, SB, 4H
0031x(83D00008): LDR R3, SB, 8H
0032y(44000001): MOV R4, R0, 1H
0033z(45000001): MOV R5, R0, 1H
ENDa W;
0034a .FIXUP P
0034a(F710F018): BL MOD1 [Display] PROC15
0035a(8FE00000): LDR LNK, SP, 0H
0036a(4EE80004): ADD SP, SP, 4H
0037a(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
0038b(4EE90004): SUB SP, SP, 4H
0039b(AFE00000): STR LNK, SP, 0H
003Ac .FIXUP D
003Ac(8D000012): LDR SB, MT, MOD0 [Hilbert]
003Bc(40D80004): ADD R0, SB, 4H [data]
003Cc(81000000): LDR R1, R0, 0H
003Dc(82D00008): LDR R2, SB, 8H
003Ec(01190002): SUB R1, R1, R2
003Fc(A1000000): STR R1, R0, 0H
0040d(40000001): MOV R0, R0, 1H
0041e(81D00000): LDR R1, SB, 0H
0042f(82D00004): LDR R2, SB, 4H
0043g(43000001): MOV R3, R0, 1H
0044h(84D00008): LDR R4, SB, 8H
0045i(45000001): MOV R5, R0, 1H
ENDj S;
0046j .FIXUP P
0046j(F710F012): BL MOD1 [Display] PROC15
0047j(8FE00000): LDR LNK, SP, 0H
0048j(4EE80004): ADD SP, SP, 4H
0049j(C700000F): B LNK
PROCEDURE HA(i: INTEGER);
BEGINk
004Ak(4EE90008): SUB SP, SP, 8H
004Bk(AFE00000): STR LNK, SP, 0H
004Ck(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
004Dl(80E00004): LDR R0, SP, 4H
004El(40090000): SUB R0, R0, 0H
004Fl(E600001B): BLE 27 [006BH]
0050m(80E00004): LDR R0, SP, 4H
0051m(40090001): SUB R0, R0, 1H
0052n .FIXUP D
0052n(8D000018): LDR SB, MT, MOD0 [Hilbert]
0053n(81D00018): LDR R1, SB, 18H [data]
0054n(D102C75C): BLEQ MT [trap=5, pos=711]
0055n(D7000001): BL R1
0056o(F7FFFFCF): BL -49 [0026H]
0057p(80E00004): LDR R0, SP, 4H
0058p(40090001): SUB R0, R0, 1H
0059q .FIXUP D
0059q(8D000007): LDR SB, MT, MOD0 [Hilbert]
005Aq(81D0000C): LDR R1, SB, CH [data]
005Bq(D102D25C): BLEQ MT [trap=5, pos=722]
005Cq(D7000001): BL R1
005Dr(F7FFFFDA): BL -38 [0038H]
005Es(80E00004): LDR R0, SP, 4H
005Fs(40090001): SUB R0, R0, 1H
0060t .FIXUP D
0060t(8D000007): LDR SB, MT, MOD0 [Hilbert]
0061t(81D0000C): LDR R1, SB, CH [data]
0062t(D102DD5C): BLEQ MT [trap=5, pos=733]
0063t(D7000001): BL R1
0064u(F7FFFF9B): BL -101 [0000H]
0065v(80E00004): LDR R0, SP, 4H
0066v(40090001): SUB R0, R0, 1H
0067w .FIXUP D
0067w(8D000007): LDR SB, MT, MOD0 [Hilbert]
0068w(81D00010): LDR R1, SB, 10H [data]
0069w(D102EB5C): BLEQ MT [trap=5, pos=747]
006Aw(D7000001): BL R1
ENDx HA;
006Bx(8FE00000): LDR LNK, SP, 0H
006Cx(4EE80008): ADD SP, SP, 8H
006Dx(C700000F): B LNK
PROCEDURE HB(i: INTEGER);
BEGINy
006Ey(4EE90008): SUB SP, SP, 8H
006Fy(AFE00000): STR LNK, SP, 0H
0070y(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
0071z(80E00004): LDR R0, SP, 4H
0072z(40090000): SUB R0, R0, 0H
0073z(E600001B): BLE 27 [008FH]
0074a(80E00004): LDR R0, SP, 4H
0075a(40090001): SUB R0, R0, 1H
0076b .FIXUP D
0076b(8D00000F): LDR SB, MT, MOD0 [Hilbert]
0077b(81D00014): LDR R1, SB, 14H [data]
0078b(D103345C): BLEQ MT [trap=5, pos=820]
0079b(D7000001): BL R1
007Ac(F7FFFF98): BL -104 [0013H]
007Bd(80E00004): LDR R0, SP, 4H
007Cd(40090001): SUB R0, R0, 1H
007De .FIXUP D
007De(8D000007): LDR SB, MT, MOD0 [Hilbert]
007Ee(81D00010): LDR R1, SB, 10H [data]
007Fe(D1033F5C): BLEQ MT [trap=5, pos=831]
0080e(D7000001): BL R1
0081f(F7FFFF7E): BL -130 [0000H]
0082g(80E00004): LDR R0, SP, 4H
0083g(40090001): SUB R0, R0, 1H
0084h .FIXUP D
0084h(8D000007): LDR SB, MT, MOD0 [Hilbert]
0085h(81D00010): LDR R1, SB, 10H [data]
0086h(D1034A5C): BLEQ MT [trap=5, pos=842]
0087h(D7000001): BL R1
0088i(F7FFFFAF): BL -81 [0038H]
0089j(80E00004): LDR R0, SP, 4H
008Aj(40090001): SUB R0, R0, 1H
008Bk .FIXUP D
008Bk(8D000007): LDR SB, MT, MOD0 [Hilbert]
008Ck(81D0000C): LDR R1, SB, CH [data]
008Dk(D103585C): BLEQ MT [trap=5, pos=856]
008Ek(D7000001): BL R1
ENDl HB;
008Fl(8FE00000): LDR LNK, SP, 0H
0090l(4EE80008): ADD SP, SP, 8H
0091l(C700000F): B LNK
PROCEDURE HC(i: INTEGER);
BEGINm
0092m(4EE90008): SUB SP, SP, 8H
0093m(AFE00000): STR LNK, SP, 0H
0094m(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
0095n(80E00004): LDR R0, SP, 4H
0096n(40090000): SUB R0, R0, 0H
0097n(E600001B): BLE 27 [00B3H]
0098o(80E00004): LDR R0, SP, 4H
0099o(40090001): SUB R0, R0, 1H
009Ap .FIXUP D
009Ap(8D00000F): LDR SB, MT, MOD0 [Hilbert]
009Bp(81D00010): LDR R1, SB, 10H [data]
009Cp(D103A15C): BLEQ MT [trap=5, pos=929]
009Dp(D7000001): BL R1
009Eq(F7FFFF61): BL -159 [0000H]
009Fr(80E00004): LDR R0, SP, 4H
00A0r(40090001): SUB R0, R0, 1H
00A1s .FIXUP D
00A1s(8D000007): LDR SB, MT, MOD0 [Hilbert]
00A2s(81D00014): LDR R1, SB, 14H [data]
00A3s(D103AC5C): BLEQ MT [trap=5, pos=940]
00A4s(D7000001): BL R1
00A5t(F7FFFF6D): BL -147 [0013H]
00A6u(80E00004): LDR R0, SP, 4H
00A7u(40090001): SUB R0, R0, 1H
00A8v .FIXUP D
00A8v(8D000007): LDR SB, MT, MOD0 [Hilbert]
00A9v(81D00014): LDR R1, SB, 14H [data]
00AAv(D103B75C): BLEQ MT [trap=5, pos=951]
00ABv(D7000001): BL R1
00ACw(F7FFFF79): BL -135 [0026H]
00ADx(80E00004): LDR R0, SP, 4H
00AEx(40090001): SUB R0, R0, 1H
00AFy .FIXUP D
00AFy(8D000007): LDR SB, MT, MOD0 [Hilbert]
00B0y(81D00018): LDR R1, SB, 18H [data]
00B1y(D103C55C): BLEQ MT [trap=5, pos=965]
00B2y(D7000001): BL R1
ENDz HC;
00B3z(8FE00000): LDR LNK, SP, 0H
00B4z(4EE80008): ADD SP, SP, 8H
00B5z(C700000F): B LNK
PROCEDURE HD(i: INTEGER);
BEGINa
00B6a(4EE90008): SUB SP, SP, 8H
00B7a(AFE00000): STR LNK, SP, 0H
00B8a(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
00B9b(80E00004): LDR R0, SP, 4H
00BAb(40090000): SUB R0, R0, 0H
00BBb(E600001B): BLE 27 [00D7H]
00BCc(80E00004): LDR R0, SP, 4H
00BDc(40090001): SUB R0, R0, 1H
00BEd .FIXUP D
00BEd(8D00000F): LDR SB, MT, MOD0 [Hilbert]
00BFd(81D0000C): LDR R1, SB, CH [data]
00C0d(D1040E5C): BLEQ MT [trap=5, pos=1038]
00C1d(D7000001): BL R1
00C2e(F7FFFF75): BL -139 [0038H]
00C3f(80E00004): LDR R0, SP, 4H
00C4f(40090001): SUB R0, R0, 1H
00C5g .FIXUP D
00C5g(8D000007): LDR SB, MT, MOD0 [Hilbert]
00C6g(81D00018): LDR R1, SB, 18H [data]
00C7g(D104195C): BLEQ MT [trap=5, pos=1049]
00C8g(D7000001): BL R1
00C9h(F7FFFF5C): BL -164 [0026H]
00CAi(80E00004): LDR R0, SP, 4H
00CBi(40090001): SUB R0, R0, 1H
00CCj .FIXUP D
00CCj(8D000007): LDR SB, MT, MOD0 [Hilbert]
00CDj(81D00018): LDR R1, SB, 18H [data]
00CEj(D104245C): BLEQ MT [trap=5, pos=1060]
00CFj(D7000001): BL R1
00D0k(F7FFFF42): BL -190 [0013H]
00D1l(80E00004): LDR R0, SP, 4H
00D2l(40090001): SUB R0, R0, 1H
00D3m .FIXUP D
00D3m(8D000007): LDR SB, MT, MOD0 [Hilbert]
00D4m(81D00014): LDR R1, SB, 14H [data]
00D5m(D104325C): BLEQ MT [trap=5, pos=1074]
00D6m(D7000001): BL R1
ENDn HD;
00D7n(8FE00000): LDR LNK, SP, 0H
00D8n(4EE80008): ADD SP, SP, 8H
00D9n(C700000F): B LNK
PROCEDURE DrawHilbert(F: Display.Frame);
VAR k, n, w, x0, y0: INTEGER;
BEGINo k := 0;p d := 8;q
00DAo(4EE9001C): SUB SP, SP, 1CH
00DBo(AFE00000): STR LNK, SP, 0H
00DCo(A0E00004): STR R0, SP, 4H
00DDp(40000000): MOV R0, R0, 0H
00DEp(A0E00008): STR R0, SP, 8H
00DFq(40000008): MOV R0, R0, 8H
00E0q .FIXUP D
00E0q(8D00000D): LDR SB, MT, MOD0 [Hilbert]
00E1q(A0D00008): STR R0, SB, 8H [data]
IF F.Wr < F.Hs THENt w := F.Wu ELSEv ww := F.Hx ENDy ;
00E2r(80E00004): LDR R0, SP, 4H
00E3r(D104AD4C): BLEQ MT [trap=4, pos=1197]
00E4s(81E00004): LDR R1, SP, 4H
00E5s(D104B34C): BLEQ MT [trap=4, pos=1203]
00E6t(80000010): LDR R0, R0, 10H
00E7t(81100014): LDR R1, R1, 14H
00E8t(00090001): SUB R0, R0, R1
00E9t(ED000005): BGE 5 [00EFH]
00EAu(80E00004): LDR R0, SP, 4H
00EBu(D104C14C): BLEQ MT [trap=4, pos=1217]
00ECv(80000010): LDR R0, R0, 10H
00EDv(A0E00010): STR R0, SP, 10H
00EEw(E7000004): B 4 [00F3H]
00EFx(80E00004): LDR R0, SP, 4H
00F0x(D104CF4C): BLEQ MT [trap=4, pos=1231]
00F1y(80000014): LDR R0, R0, 14H
00F2y(A0E00010): STR R0, SP, 10H
WHILE d*2 <z w DOa d := d*2;b INC(k) ENDc ;
00F3z .FIXUP D
00F3z(8D000013): LDR SB, MT, MOD0 [Hilbert]
00F4z(80D00008): LDR R0, SB, 8H [data]
00F5z(40010001): LSL R0, R0, 1H
00F6a(81E00010): LDR R1, SP, 10H
00F7a(00090001): SUB R0, R0, R1
00F8a(ED000008): BGE 8 [0101H]
00F9b .FIXUP D
00F9b(8D000006): LDR SB, MT, MOD0 [Hilbert]
00FAb(80D00008): LDR R0, SB, 8H [data]
00FBb(40010001): LSL R0, R0, 1H
00FCb(A0D00008): STR R0, SB, 8H
00FDc(80E00008): LDR R0, SP, 8H
00FEc(40080001): ADD R0, R0, 1H
00FFc(A0E00008): STR R0, SP, 8H
0100c(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
0101d(40000000): MOV R0, R0, 0H
0102e(81E00004): LDR R1, SP, 4H
0103e(D1052A4C): BLEQ MT [trap=4, pos=1322]
0104f(81100008): LDR R1, R1, 8H
0105g(82E00004): LDR R2, SP, 4H
0106g(D1052F4C): BLEQ MT [trap=4, pos=1327]
0107h(8220000C): LDR R2, R2, CH
0108i(83E00004): LDR R3, SP, 4H
0109i(D105344C): BLEQ MT [trap=4, pos=1332]
010Aj(83300010): LDR R3, R3, 10H
010Bk(84E00004): LDR R4, SP, 4H
010Ck(D105394C): BLEQ MT [trap=4, pos=1337]
010Dl(84400014): LDR R4, R4, 14H
010Em(45000000): MOV R5, R0, 0H
010Fn .FIXUP P
010Fn(F710F0C9): BL MOD1 [Display] PROC15
x0 := F.Wo DIV 2;p y0 := F.Hq DIV 2;r n := 0;s
0110o(80E00004): LDR R0, SP, 4H
0111o(D1055A4C): BLEQ MT [trap=4, pos=1370]
0112p(80000010): LDR R0, R0, 10H
0113p(40020001): ASR R0, R0, 1H
0114p(A0E00014): STR R0, SP, 14H
0115q(80E00004): LDR R0, SP, 4H
0116q(D1056B4C): BLEQ MT [trap=4, pos=1387]
0117r(80000014): LDR R0, R0, 14H
0118r(40020001): ASR R0, R0, 1H
0119r(A0E00018): STR R0, SP, 18H
011As(40000000): MOV R0, R0, 0H
011Bs(A0E0000C): STR R0, SP, CH
WHILE n < k DOt
011Ct(80E0000C): LDR R0, SP, CH
011Dt(81E00008): LDR R1, SP, 8H
011Et(00090001): SUB R0, R0, R1
011Ft(ED000020): BGE 32 [0140H]
d := d DIV 2;u INC(x0, d DIV 2)v;w INC(y0, d DIV 2)x;y
0120u .FIXUP D
0120u(8D000027): LDR SB, MT, MOD0 [Hilbert]
0121u(80D00008): LDR R0, SB, 8H [data]
0122u(40020001): ASR R0, R0, 1H
0123u(A0D00008): STR R0, SB, 8H
0124v(80D00008): LDR R0, SB, 8H
0125v(40020001): ASR R0, R0, 1H
0126w(81E00014): LDR R1, SP, 14H
0127w(01180000): ADD R1, R1, R0
0128w(A1E00014): STR R1, SP, 14H
0129x(80D00008): LDR R0, SB, 8H
012Ax(40020001): ASR R0, R0, 1H
012By(81E00018): LDR R1, SP, 18H
012Cy(01180000): ADD R1, R1, R0
012Dy(A1E00018): STR R1, SP, 18H
x := F.Xz + x0;a y := F.Yb + y0;c INC(n);d HA(n)e
012Ez(80E00004): LDR R0, SP, 4H
012Fz(D105D44C): BLEQ MT [trap=4, pos=1492]
0130a(80000008): LDR R0, R0, 8H
0131a(81E00014): LDR R1, SP, 14H
0132a(00080001): ADD R0, R0, R1
0133a(A0D00000): STR R0, SB, 0H
0134b(80E00004): LDR R0, SP, 4H
0135b(D105E34C): BLEQ MT [trap=4, pos=1507]
0136c(8000000C): LDR R0, R0, CH
0137c(81E00018): LDR R1, SP, 18H
0138c(00080001): ADD R0, R0, R1
0139c(A0D00004): STR R0, SB, 4H
013Ad(80E0000C): LDR R0, SP, CH
013Bd(40080001): ADD R0, R0, 1H
013Cd(A0E0000C): STR R0, SP, CH
013De(80E0000C): LDR R0, SP, CH
ENDf
013Ef(F7FFFF0B): BL -245 [004AH]
013Ff(E7FFFFDC): B -36 [011CH]
ENDg DrawHilbert;
0140g(8FE00000): LDR LNK, SP, 0H
0141g(4EE8001C): ADD SP, SP, 1CH
0142g(C700000F): B LNK
PROCEDURE Handler(F: Display.Frame; VAR M: Display.FrameMsg);
VAR F0: Display.Frame;
BEGINh
0143h(4EE90014): SUB SP, SP, 14H
0144h(AFE00000): STR LNK, SP, 0H
0145h(A0E00004): STR R0, SP, 4H
0146h(A1E00008): STR R1, SP, 8H
0147h(A2E0000C): STR R2, SP, CH
IF M IS Oberon.InputMsg THENi
0148i(80E0000C): LDR R0, SP, CH
0149i(80000004): LDR R0, R0, 4H
014Ai .FIXUP D
014Ai(8D60002A): LDR SB, MT, MOD6 [Oberon]
014Bi(41D80003): ADD R1, SB, VAR3
014Ci(01190000): SUB R1, R1, R0
014Di(E900001C): BNE 28 [016AH]
IF M(Oberon.InputMsg)j.id = Oberon.track THENk
014Ej(80E0000C): LDR R0, SP, CH
014Fj(80000004): LDR R0, R0, 4H
0150j .FIXUP D
0150j(8D600006): LDR SB, MT, MOD6 [Oberon]
0151j(41D80003): ADD R1, SB, VAR3
0152j(01190000): SUB R1, R1, R0
0153j(D906B32C): BLNE MT [trap=2, pos=1715]
0154k(80E00008): LDR R0, SP, 8H
0155k(80000000): LDR R0, R0, 0H
0156k(40090001): SUB R0, R0, 1H
0157k(E9000011): BNE 17 [0169H]
Oberon.DrawMouseArrow(M(Oberon.InputMsg)l.X,m M(Oberon.InputMsg)n.Y)o
0158l(80E0000C): LDR R0, SP, CH
0159l(80000004): LDR R0, R0, 4H
015Al .FIXUP D
015Al(8D60000A): LDR SB, MT, MOD6 [Oberon]
015Bl(41D80003): ADD R1, SB, VAR3
015Cl(01190000): SUB R1, R1, R0
015Dl(D906FB2C): BLNE MT [trap=2, pos=1787]
015Em(80E00008): LDR R0, SP, 8H
015Fm(80000008): LDR R0, R0, 8H
0160n(81E0000C): LDR R1, SP, CH
0161n(81100004): LDR R1, R1, 4H
0162n .FIXUP D
0162n(8D600008): LDR SB, MT, MOD6 [Oberon]
0163n(42D80003): ADD R2, SB, VAR3
0164n(02290001): SUB R2, R2, R1
0165n(D907112C): BLNE MT [trap=2, pos=1809]
0166o(81E00008): LDR R1, SP, 8H
0167o(8110000C): LDR R1, R1, CH
ENDp
0168p .FIXUP P
0168p(F7618059): BL MOD6 [Oberon] PROC24
ELSIF Mq IS MenuViewers.ModifyMsg THENr
0169q(E700005B): B 91 [01C5H]
016Ar(80E0000C): LDR R0, SP, CH
016Br(80000004): LDR R0, R0, 4H
016Cr .FIXUP D
016Cr(8D70000A): LDR SB, MT, MOD7 [MenuViewers]
016Dr(41D80002): ADD R1, SB, VAR2
016Er(01190000): SUB R1, R1, R0
016Fr(E9000019): BNE 25 [0189H]
F.Ys := M(MenuViewers.ModifyMsg)t.Y;u F.Hv := M(MenuViewers.ModifyMsg)w.H;x DrawHilbert(F)y
0170s(80E00004): LDR R0, SP, 4H
0171s(D107524C): BLEQ MT [trap=4, pos=1874]
0172t(81E0000C): LDR R1, SP, CH
0173t(81100004): LDR R1, R1, 4H
0174t .FIXUP D
0174t(8D700008): LDR SB, MT, MOD7 [MenuViewers]
0175t(42D80002): ADD R2, SB, VAR2
0176t(02290001): SUB R2, R2, R1
0177t(D9076E2C): BLNE MT [trap=2, pos=1902]
0178u(81E00008): LDR R1, SP, 8H
0179u(81100008): LDR R1, R1, 8H
017Au(A100000C): STR R1, R0, CH
017Bv(80E00004): LDR R0, SP, 4H
017Cv(D107754C): BLEQ MT [trap=4, pos=1909]
017Dw(81E0000C): LDR R1, SP, CH
017Ew(81100004): LDR R1, R1, 4H
017Fw .FIXUP D
017Fw(8D70000B): LDR SB, MT, MOD7 [MenuViewers]
0180w(42D80002): ADD R2, SB, VAR2
0181w(02290001): SUB R2, R2, R1
0182w(D907912C): BLNE MT [trap=2, pos=1937]
0183x(81E00008): LDR R1, SP, 8H
0184x(8110000C): LDR R1, R1, CH
0185x(A1000014): STR R1, R0, 14H
0186y(80E00004): LDR R0, SP, 4H
ELSIFz Ma IS Oberon.ControlMsg THENb
0187z(F7FFFF52): BL -174 [00DAH]
0188a(E700003C): B 60 [01C5H]
0189b(80E0000C): LDR R0, SP, CH
018Ab(80000004): LDR R0, R0, 4H
018Bb .FIXUP D
018Bb(8D60000C): LDR SB, MT, MOD6 [Oberon]
018Cb(41D80005): ADD R1, SB, VAR5
018Db(01190000): SUB R1, R1, R0
018Eb(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
018Fc(80E0000C): LDR R0, SP, CH
0190c(80000004): LDR R0, R0, 4H
0191c .FIXUP D
0191c(8D600006): LDR SB, MT, MOD6 [Oberon]
0192c(41D80005): ADD R1, SB, VAR5
0193c(01190000): SUB R1, R1, R0
0194c(D907E72C): BLNE MT [trap=2, pos=2023]
0195d(80E00008): LDR R0, SP, 8H
0196d(80000000): LDR R0, R0, 0H
0197d(40090001): SUB R0, R0, 1H
0198d(E900000D): BNE 13 [01A6H]
0199e(80E00004): LDR R0, SP, 4H
019Ae(D1081A4C): BLEQ MT [trap=4, pos=2074]
019Bf(80000008): LDR R0, R0, 8H
019Cg(81E00004): LDR R1, SP, 4H
019Dg(D1081F4C): BLEQ MT [trap=4, pos=2079]
019Eh(8110000C): LDR R1, R1, CH
019Fi(82E00004): LDR R2, SP, 4H
01A0i(D108244C): BLEQ MT [trap=4, pos=2084]
01A1j(82200010): LDR R2, R2, 10H
01A2k(83E00004): LDR R3, SP, 4H
01A3k(D108294C): BLEQ MT [trap=4, pos=2089]
01A4l(83300014): LDR R3, R3, 14H
01A5m .FIXUP P
01A5m(F761B03D): BL MOD6 [Oberon] PROC27
ELSIF Mn IS Oberon.CopyMsg THENo
01A6n(E700001E): B 30 [01C5H]
01A7o(80E0000C): LDR R0, SP, CH
01A8o(80000004): LDR R0, R0, 4H
01A9o .FIXUP D
01A9o(8D600018): LDR SB, MT, MOD6 [Oberon]
01AAo(41D80006): ADD R1, SB, VAR6
01ABo(01190000): SUB R1, R1, R0
01ACo(E9000018): BNE 24 [01C5H]
NEW(F0);p F0^ :=q F^;r M(Oberon.CopyMsg)s.F := F0
01ADp(40E80010): ADD R0, SP, 10H
01AEp .FIXUP D
01AEp(8D100005): LDR SB, MT, MOD1 [Display]
01AFp(41D80002): ADD R1, SB, VAR2
01B0p(D708600C): BL MT [trap=0, pos=2144]
01B1q(80E00010): LDR R0, SP, 10H
01B2q(D108674C): BLEQ MT [trap=4, pos=2151]
01B3r(81E00004): LDR R1, SP, 4H
01B4r(D1086B4C): BLEQ MT [trap=4, pos=2155]
01B5r(42000007): MOV R2, R0, 7H
01B6r(83100000): LDR R3, R1, 0H
01B7r(41180004): ADD R1, R1, 4H
01B8r(A3000000): STR R3, R0, 0H
01B9r(40080004): ADD R0, R0, 4H
01BAr(42290001): SUB R2, R2, 1H
01BBr(E9FFFFFA): BNE -6 [01B6H]
01BCs(80E0000C): LDR R0, SP, CH
01BDs(80000004): LDR R0, R0, 4H
01BEs .FIXUP D
01BEs(8D600010): LDR SB, MT, MOD6 [Oberon]
01BFs(41D80006): ADD R1, SB, VAR6
01C0s(01190000): SUB R1, R1, R0
01C1s(D9087D2C): BLNE MT [trap=2, pos=2173]
ENDt
01C2t(80E00010): LDR R0, SP, 10H
01C3t(81E00008): LDR R1, SP, 8H
01C4t(A0100000): STR R0, R1, 0H
ENDu Handler;
01C5u(8FE00000): LDR LNK, SP, 0H
01C6u(4EE80014): ADD SP, SP, 14H
01C7u(C700000F): B LNK
PROCEDURE New(): Display.Frame;
VAR F: Display.Frame;
BEGINv NEW(F);w F.handlex := Handler;y RETURN F
01C8v(4EE90008): SUB SP, SP, 8H
01C9v(AFE00000): STR LNK, SP, 0H
01CAw(40E80004): ADD R0, SP, 4H
01CBw .FIXUP D
01CBw(8D10000D): LDR SB, MT, MOD1 [Display]
01CCw(41D80002): ADD R1, SB, VAR2
01CDw(D708E90C): BL MT [trap=0, pos=2281]
01CEx(80E00004): LDR R0, SP, 4H
01CFx(D108F24C): BLEQ MT [trap=4, pos=2290]
01D0y(F7000000): BL 0 [01D1H]
01D1y(41F90238): SUB R1, LNK, 238H
01D2y(A1000018): STR R1, R0, 18H
ENDz New;
01D3z(80E00004): LDR R0, SP, 4H
01D4z(8FE00000): LDR LNK, SP, 0H
01D5z(4EE80008): ADD SP, SP, 8H
01D6z(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
01D7a .PROC 1
01D7a .COMMAND Draw
01D7a(4EE90010): SUB SP, SP, 10H
01D8a(AFE00000): STR LNK, SP, 0H
01D9b .FIXUP D
01D9b(8D60000E): LDR SB, MT, MOD6 [Oberon]
01DAb(40D8000E): ADD R0, SB, VAR14
01DBc(80000000): LDR R0, R0, 0H
01DCc(D109834C): BLEQ MT [trap=4, pos=2435]
01DDd(80000008): LDR R0, R0, 8H
01DEe(41E80008): ADD R1, SP, 8H
01DFf(42E8000C): ADD R2, SP, CH
01E0g .FIXUP P
01E0g(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
01E1h .FIXUP D
01E1h(8D000008): LDR SB, MT, MOD0 [Hilbert]
01E2h(40D80044): ADD R0, SB, 44H ["Hilbert"]
01E3h(41000008): MOV R1, R0, 8H
01E4i(42D8001C): ADD R2, SB, 1CH
01E5i(43000027): MOV R3, R0, 27H
01E6j .FIXUP P
01E6j(F782C006): BL MOD8 [TextFrames] PROC44
01E7k(4EE90004): SUB SP, SP, 4H
01E8k(A0E00000): STR R0, SP, 0H
01E9l(F7FFFFDE): BL -34 [01C8H]
01EAl(01000000): MOV R1, R0, R0
01EBl(80E00000): LDR R0, SP, 0H
01ECl(4EE80004): ADD SP, SP, 4H
01EDm .FIXUP D
01EDm(8D80000C): LDR SB, MT, MOD8 [TextFrames]
01EEm(82D00005): LDR R2, SB, VAR5
01EFn(83E00008): LDR R3, SP, 8H
01F0o(84E0000C): LDR R4, SP, CH
ENDp Draw;
01F1p .FIXUP P
01F1p(F770400B): BL MOD7 [MenuViewers] PROC4
01F2p(A0E00004): STR R0, SP, 4H
01F3p(8FE00000): LDR LNK, SP, 0H
01F4p(4EE80010): ADD SP, SP, 10H
01F5p(C700000F): B LNK
BEGINq A := HA;r B := HB;s C := HC;t D := HD
01F6q .PROC 0
01F6q .ENTRYPOINT
01F6q(4EE90004): SUB SP, SP, 4H
01F7q(AFE00000): STR LNK, SP, 0H
01F8r(F7000000): BL 0 [01F9H]
01F9r(40F906BC): SUB R0, LNK, 6BCH
01FAr .FIXUP D
01FAr(8D00000D): LDR SB, MT, MOD0 [Hilbert]
01FBr(A0D0000C): STR R0, SB, CH [data]
01FCs(F7000000): BL 0 [01FDH]
01FDs(40F9063C): SUB R0, LNK, 63CH
01FEs(A0D00010): STR R0, SB, 10H
01FFt(F7000000): BL 0 [0200H]
0200t(40F905B8): SUB R0, LNK, 5B8H
0201t(A0D00014): STR R0, SB, 14H
ENDu Hilbert.v
0202u(F7000000): BL 0 [0203H]
0203u(40F90534): SUB R0, LNK, 534H
0204u(A0D00018): STR R0, SB, 18H
0205v(8FE00000): LDR LNK, SP, 0H
0206v(4EE80004): ADD SP, SP, 4H
0207v(C700000F): B LNK