Used Exports

Display: CopyPattern Frame FrameDesc FrameDesc.H FrameDesc.W FrameDesc.X FrameDesc.Y FrameDesc.dsc FrameDesc.handle FrameMsg ReplConst invert star white
MenuViewers: ModifyMsg ModifyMsg.H ModifyMsg.Y New
Oberon: AllocateUserViewer CopyMsg CopyMsg.F DrawMouseArrow InputMsg InputMsg.X InputMsg.Y Install NewTask Par Par.frame Par.pos Par.text Par.vwr Remove RemoveMarks Task TaskDesc.period track
TextFrames: NewMenu menuH
Texts: Int OpenScanner OpenWriter Scan Scanner Scanner.class Scanner.i Writer
Viewers: Broadcast Close Viewer

MODULE Stars; (*NW 15.1.2013, 15.11.2013*)
.MODULE Stars (KEY 0873A1AD, VERSION 1, SIZE 00000B50)
.IMPORT Display (KEY 4C08D3EA)
.IMPORT Viewers (KEY 25ABF199)
.IMPORT Texts (KEY 0B9E9984)
.IMPORT Fonts (KEY F4C9F557)
.IMPORT Files (KEY 73F5D686)
.IMPORT MenuViewers (KEY 245ACC30)
.IMPORT TextFrames (KEY 650813D5)
.STRING 84H "Stars"
.STRING 8CH "Stars.Close System.Grow System.Copy Stars.Step Stars.Run Stars.Stop"
IMPORT SYSTEM, Display, Viewers, Texts, Oberon, MenuViewers, TextFrames;
CONST N = 6; (*nof stars*)
w = 16; (*width of star*)
interval = 200; (*millisec*)
TYPE Frame = POINTER TO FrameDesc;
Pos = RECORD x, y, dx, dy: INTEGER END ;
FrameDesc = RECORD (Display.FrameDesc) s: ARRAY N OF Pos END ;
RestoreMsg = RECORD (Display.FrameMsg) END ;
StepMsg = RECORD (Display.FrameMsg) END ;
VAR T: Oberon.Task;
W: Texts.Writer;
BEGINa Display.CopyPattern(Display.white,b,c x,d y,e Display.invert)f
0000a(4EE9000C): SUB SP, SP, CH
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
0003a(A1E00008): STR R1, SP, 8H
0004b(40000001): MOV R0, R0, 1H
0005c .FIXUP D
0005c(8D100005): LDR SB, MT, MOD1 [Display]
0006c(81D00007): LDR R1, SB, VAR7
0007d(82E00004): LDR R2, SP, 4H
0008e(83E00008): LDR R3, SP, 8H
0009f(44000002): MOV R4, R0, 2H
ENDg Draw;
000Ag .FIXUP P
000Ag(F711000A): BL MOD1 [Display] PROC16
000Bg(8FE00000): LDR LNK, SP, 0H
000Cg(4EE8000C): ADD SP, SP, CH
000Dg(C700000F): B LNK
PROCEDURE Restore(F: Frame);
VAR x0, y0: INTEGER;
BEGINh Oberon.RemoveMarks(F.Xi,j F.Yk,l F.Wm,n F.Ho)p;q
000Eh(4EE90010): SUB SP, SP, 10H
000Fh(AFE00000): STR LNK, SP, 0H
0010h(A0E00004): STR R0, SP, 4H
0011i(80E00004): LDR R0, SP, 4H
0012i(D102CE4C): BLEQ MT [trap=4, pos=718]
0013j(80000008): LDR R0, R0, 8H
0014k(81E00004): LDR R1, SP, 4H
0015k(D102D34C): BLEQ MT [trap=4, pos=723]
0016l(8110000C): LDR R1, R1, CH
0017m(82E00004): LDR R2, SP, 4H
0018m(D102D84C): BLEQ MT [trap=4, pos=728]
0019n(82200010): LDR R2, R2, 10H
001Ao(83E00004): LDR R3, SP, 4H
001Bo(D102DD4C): BLEQ MT [trap=4, pos=733]
001Cp(83300014): LDR R3, R3, 14H
001Dq .FIXUP P
001Dq(F761B013): BL MOD6 [Oberon] PROC27
Display.ReplConst(0,r F.Xs+1,t F.Yu,v F.Ww-1,x F.Hy,z 0)a;b
001Er(40000000): MOV R0, R0, 0H
001Fs(81E00004): LDR R1, SP, 4H
0020s(D102FC4C): BLEQ MT [trap=4, pos=764]
0021t(81100008): LDR R1, R1, 8H
0022t(41180001): ADD R1, R1, 1H
0023u(82E00004): LDR R2, SP, 4H
0024u(D103034C): BLEQ MT [trap=4, pos=771]
0025v(8220000C): LDR R2, R2, CH
0026w(83E00004): LDR R3, SP, 4H
0027w(D103084C): BLEQ MT [trap=4, pos=776]
0028x(83300010): LDR R3, R3, 10H
0029x(43390001): SUB R3, R3, 1H
002Ay(84E00004): LDR R4, SP, 4H
002By(D1030F4C): BLEQ MT [trap=4, pos=783]
002Cz(84400014): LDR R4, R4, 14H
002Da(45000000): MOV R5, R0, 0H
002Eb .FIXUP P
002Eb(F710F011): BL MOD1 [Display] PROC15
x0 := F.Wc DIV 2 +d F.Xe;f y0 := F.Hg DIV 2 +h F.Yi;j
002Fc(80E00004): LDR R0, SP, 4H
0030c(D103224C): BLEQ MT [trap=4, pos=802]
0031d(80000010): LDR R0, R0, 10H
0032d(40020001): ASR R0, R0, 1H
0033e(81E00004): LDR R1, SP, 4H
0034e(D1032E4C): BLEQ MT [trap=4, pos=814]
0035f(81100008): LDR R1, R1, 8H
0036f(00080001): ADD R0, R0, R1
0037f(A0E00008): STR R0, SP, 8H
0038g(80E00004): LDR R0, SP, 4H
0039g(D103394C): BLEQ MT [trap=4, pos=825]
003Ah(80000014): LDR R0, R0, 14H
003Bh(40020001): ASR R0, R0, 1H
003Ci(81E00004): LDR R1, SP, 4H
003Di(D103454C): BLEQ MT [trap=4, pos=837]
003Ej(8110000C): LDR R1, R1, CH
003Fj(00080001): ADD R0, R0, R1
0040j(A0E0000C): STR R0, SP, CH[0].x := x0;l[0].y := y0;n[0].dx := 2;p F.sq[0].dy := 4;r Draw([0].x,t[0].y)v;w
0041k(80E00004): LDR R0, SP, 4H
0042k(D1034E4C): BLEQ MT [trap=4, pos=846]
0043l(81E00008): LDR R1, SP, 8H
0044l(A100001C): STR R1, R0, 1CH
0045m(80E00004): LDR R0, SP, 4H
0046m(D1035E4C): BLEQ MT [trap=4, pos=862]
0047n(81E0000C): LDR R1, SP, CH
0048n(A1000020): STR R1, R0, 20H
0049o(80E00004): LDR R0, SP, 4H
004Ao(D1036E4C): BLEQ MT [trap=4, pos=878]
004Bp(41000002): MOV R1, R0, 2H
004Cp(A1000024): STR R1, R0, 24H
004Dq(80E00004): LDR R0, SP, 4H
004Eq(D1037E4C): BLEQ MT [trap=4, pos=894]
004Fr(41000004): MOV R1, R0, 4H
0050r(A1000028): STR R1, R0, 28H
0051s(80E00004): LDR R0, SP, 4H
0052s(D103934C): BLEQ MT [trap=4, pos=915]
0053t(8000001C): LDR R0, R0, 1CH
0054u(81E00004): LDR R1, SP, 4H
0055u(D1039D4C): BLEQ MT [trap=4, pos=925]
0056v(81100020): LDR R1, R1, 20H
0057w(F7FFFFA8): BL -88 [0000H][1].x := x0;y[1].y := y0;a[1].dx := 3;c[1].dy := 9;e Draw(F.sf[1].x,g[1].y)i;j
0058x(80E00004): LDR R0, SP, 4H
0059x(D103AC4C): BLEQ MT [trap=4, pos=940]
005Ay(81E00008): LDR R1, SP, 8H
005By(A100002C): STR R1, R0, 2CH
005Cz(80E00004): LDR R0, SP, 4H
005Dz(D103BC4C): BLEQ MT [trap=4, pos=956]
005Ea(81E0000C): LDR R1, SP, CH
005Fa(A1000030): STR R1, R0, 30H
0060b(80E00004): LDR R0, SP, 4H
0061b(D103CC4C): BLEQ MT [trap=4, pos=972]
0062c(41000003): MOV R1, R0, 3H
0063c(A1000034): STR R1, R0, 34H
0064d(80E00004): LDR R0, SP, 4H
0065d(D103DC4C): BLEQ MT [trap=4, pos=988]
0066e(41000009): MOV R1, R0, 9H
0067e(A1000038): STR R1, R0, 38H
0068f(80E00004): LDR R0, SP, 4H
0069f(D103F14C): BLEQ MT [trap=4, pos=1009]
006Ag(8000002C): LDR R0, R0, 2CH
006Bh(81E00004): LDR R1, SP, 4H
006Ch(D103FB4C): BLEQ MT [trap=4, pos=1019]
006Di(81100030): LDR R1, R1, 30H
006Ej(F7FFFF91): BL -111 [0000H][2].x := x0;l[2].y := y0;n[2].dx := -5;p F.sq[2].dy := -2;r Draw([2].x,t[2].y)v;w
006Fk(80E00004): LDR R0, SP, 4H
0070k(D1040A4C): BLEQ MT [trap=4, pos=1034]
0071l(81E00008): LDR R1, SP, 8H
0072l(A100003C): STR R1, R0, 3CH
0073m(80E00004): LDR R0, SP, 4H
0074m(D1041A4C): BLEQ MT [trap=4, pos=1050]
0075n(81E0000C): LDR R1, SP, CH
0076n(A1000040): STR R1, R0, 40H
0077o(80E00004): LDR R0, SP, 4H
0078o(D1042A4C): BLEQ MT [trap=4, pos=1066]
0079p(5100FFFB): MOV R1, R0, FFFFFFFBH
007Ap(A1000044): STR R1, R0, 44H
007Bq(80E00004): LDR R0, SP, 4H
007Cq(D1043B4C): BLEQ MT [trap=4, pos=1083]
007Dr(5100FFFE): MOV R1, R0, FFFFFFFEH
007Er(A1000048): STR R1, R0, 48H
007Fs(80E00004): LDR R0, SP, 4H
0080s(D104514C): BLEQ MT [trap=4, pos=1105]
0081t(8000003C): LDR R0, R0, 3CH
0082u(81E00004): LDR R1, SP, 4H
0083u(D1045B4C): BLEQ MT [trap=4, pos=1115]
0084v(81100040): LDR R1, R1, 40H
0085w(F7FFFF7A): BL -134 [0000H][3].x := x0;y[3].y := y0;a[3].dx := -10;c[3].dy := 8;e Draw(F.sf[3].x,g[3].y)i;j
0086x(80E00004): LDR R0, SP, 4H
0087x(D1046A4C): BLEQ MT [trap=4, pos=1130]
0088y(81E00008): LDR R1, SP, 8H
0089y(A100004C): STR R1, R0, 4CH
008Az(80E00004): LDR R0, SP, 4H
008Bz(D1047A4C): BLEQ MT [trap=4, pos=1146]
008Ca(81E0000C): LDR R1, SP, CH
008Da(A1000050): STR R1, R0, 50H
008Eb(80E00004): LDR R0, SP, 4H
008Fb(D1048A4C): BLEQ MT [trap=4, pos=1162]
0090c(5100FFF6): MOV R1, R0, FFFFFFF6H
0091c(A1000054): STR R1, R0, 54H
0092d(80E00004): LDR R0, SP, 4H
0093d(D1049C4C): BLEQ MT [trap=4, pos=1180]
0094e(41000008): MOV R1, R0, 8H
0095e(A1000058): STR R1, R0, 58H
0096f(80E00004): LDR R0, SP, 4H
0097f(D104B14C): BLEQ MT [trap=4, pos=1201]
0098g(8000004C): LDR R0, R0, 4CH
0099h(81E00004): LDR R1, SP, 4H
009Ah(D104BB4C): BLEQ MT [trap=4, pos=1211]
009Bi(81100050): LDR R1, R1, 50H
009Cj(F7FFFF63): BL -157 [0000H][4].x := x0;l[4].y := y0;n[4].dx := -7;p F.sq[4].dy := -4;r Draw([4].x,t[4].y)v;w
009Dk(80E00004): LDR R0, SP, 4H
009Ek(D104CA4C): BLEQ MT [trap=4, pos=1226]
009Fl(81E00008): LDR R1, SP, 8H
00A0l(A100005C): STR R1, R0, 5CH
00A1m(80E00004): LDR R0, SP, 4H
00A2m(D104DA4C): BLEQ MT [trap=4, pos=1242]
00A3n(81E0000C): LDR R1, SP, CH
00A4n(A1000060): STR R1, R0, 60H
00A5o(80E00004): LDR R0, SP, 4H
00A6o(D104EA4C): BLEQ MT [trap=4, pos=1258]
00A7p(5100FFF9): MOV R1, R0, FFFFFFF9H
00A8p(A1000064): STR R1, R0, 64H
00A9q(80E00004): LDR R0, SP, 4H
00AAq(D104FB4C): BLEQ MT [trap=4, pos=1275]
00ACr(A1000068): STR R1, R0, 68H
00ADs(80E00004): LDR R0, SP, 4H
00AEs(D105114C): BLEQ MT [trap=4, pos=1297]
00AFt(8000005C): LDR R0, R0, 5CH
00B0u(81E00004): LDR R1, SP, 4H
00B1u(D1051B4C): BLEQ MT [trap=4, pos=1307]
00B2v(81100060): LDR R1, R1, 60H
00B3w(F7FFFF4C): BL -180 [0000H][5].x := x0;y[5].y := y0;a[5].dx := 8;c[5].dy := -10;e Draw(F.sf[5].x,g[5].y)i
00B4x(80E00004): LDR R0, SP, 4H
00B5x(D1052A4C): BLEQ MT [trap=4, pos=1322]
00B6y(81E00008): LDR R1, SP, 8H
00B7y(A100006C): STR R1, R0, 6CH
00B8z(80E00004): LDR R0, SP, 4H
00B9z(D1053A4C): BLEQ MT [trap=4, pos=1338]
00BAa(81E0000C): LDR R1, SP, CH
00BBa(A1000070): STR R1, R0, 70H
00BCb(80E00004): LDR R0, SP, 4H
00BDb(D1054A4C): BLEQ MT [trap=4, pos=1354]
00BEc(41000008): MOV R1, R0, 8H
00BFc(A1000074): STR R1, R0, 74H
00C0d(80E00004): LDR R0, SP, 4H
00C1d(D1055A4C): BLEQ MT [trap=4, pos=1370]
00C2e(5100FFF6): MOV R1, R0, FFFFFFF6H
00C3e(A1000078): STR R1, R0, 78H
00C4f(80E00004): LDR R0, SP, 4H
00C5f(D105714C): BLEQ MT [trap=4, pos=1393]
00C6g(8000006C): LDR R0, R0, 6CH
00C7h(81E00004): LDR R1, SP, 4H
00C8h(D1057B4C): BLEQ MT [trap=4, pos=1403]
00C9i(81100070): LDR R1, R1, 70H
ENDj Restore;
00CAj(F7FFFF35): BL -203 [0000H]
00CBj(8FE00000): LDR LNK, SP, 0H
00CCj(4EE80010): ADD SP, SP, 10H
00CDj(C700000F): B LNK
PROCEDURE Move(F: Frame; VAR p: Pos);
BEGINk X1 := F.Xl + F.Wm -n w;o Y1 := F.Yp + F.Hq -r w;s
00CEk(4EE90018): SUB SP, SP, 18H
00CFk(AFE00000): STR LNK, SP, 0H
00D0k(A0E00004): STR R0, SP, 4H
00D1k(A1E00008): STR R1, SP, 8H
00D2k(A2E0000C): STR R2, SP, CH
00D3l(80E00004): LDR R0, SP, 4H
00D4l(D105E44C): BLEQ MT [trap=4, pos=1508]
00D5m(81E00004): LDR R1, SP, 4H
00D6m(D105EA4C): BLEQ MT [trap=4, pos=1514]
00D7n(80000008): LDR R0, R0, 8H
00D8n(81100010): LDR R1, R1, 10H
00D9n(00080001): ADD R0, R0, R1
00DAo(40090010): SUB R0, R0, 10H
00DBo(A0E00010): STR R0, SP, 10H
00DCp(80E00004): LDR R0, SP, 4H
00DDp(D105F94C): BLEQ MT [trap=4, pos=1529]
00DEq(81E00004): LDR R1, SP, 4H
00DFq(D105FF4C): BLEQ MT [trap=4, pos=1535]
00E0r(8000000C): LDR R0, R0, CH
00E1r(81100014): LDR R1, R1, 14H
00E2r(00080001): ADD R0, R0, R1
00E3s(40090010): SUB R0, R0, 10H
00E4s(A0E00014): STR R0, SP, 14H
Draw(p.x,t p.y)u;v INC(p.x, p.dx);w INC(p.y, p.dy);x
00E5t(80E00008): LDR R0, SP, 8H
00E6t(80000000): LDR R0, R0, 0H
00E7u(81E00008): LDR R1, SP, 8H
00E8u(81100004): LDR R1, R1, 4H
00E9v(F7FFFF16): BL -234 [0000H]
00EAw(80E00008): LDR R0, SP, 8H
00EBw(81000000): LDR R1, R0, 0H
00ECw(82E00008): LDR R2, SP, 8H
00EDw(82200008): LDR R2, R2, 8H
00EEw(01180002): ADD R1, R1, R2
00EFw(A1000000): STR R1, R0, 0H
00F0x(80E00008): LDR R0, SP, 8H
00F1x(40080004): ADD R0, R0, 4H
00F2x(81000000): LDR R1, R0, 0H
00F3x(82E00008): LDR R2, SP, 8H
00F4x(8220000C): LDR R2, R2, CH
00F5x(01180002): ADD R1, R1, R2
00F6x(A1000000): STR R1, R0, 0H
IF p.x < F.Xy THENz p.x := 2*F.Xa -b p.x;c p.dx := -p.dx ELSIFd pe.x >= X1 THENf p.x := 2*X1 -g p.x;h p.dx := -p.dx ENDi ;
00F7y(80E00004): LDR R0, SP, 4H
00F8y(D106494C): BLEQ MT [trap=4, pos=1609]
00F9z(81E00008): LDR R1, SP, 8H
00FAz(81100000): LDR R1, R1, 0H
00FBz(80000008): LDR R0, R0, 8H
00FCz(01190000): SUB R1, R1, R0
00FDz(ED000010): BGE 16 [010EH]
00FEa(80E00004): LDR R0, SP, 4H
00FFa(D1065B4C): BLEQ MT [trap=4, pos=1627]
0100b(80000008): LDR R0, R0, 8H
0101b(40010001): LSL R0, R0, 1H
0102c(81E00008): LDR R1, SP, 8H
0103c(81100000): LDR R1, R1, 0H
0104c(00090001): SUB R0, R0, R1
0105c(81E00008): LDR R1, SP, 8H
0106c(A0100000): STR R0, R1, 0H
0107d(80E00008): LDR R0, SP, 8H
0108d(80000008): LDR R0, R0, 8H
0109d(41000000): MOV R1, R0, 0H
010Ad(00190000): SUB R0, R1, R0
010Bd(81E00008): LDR R1, SP, 8H
010Cd(A0100008): STR R0, R1, 8H
010De(E7000012): B 18 [0120H]
010Ef(80E00008): LDR R0, SP, 8H
010Ff(80000000): LDR R0, R0, 0H
0110f(81E00010): LDR R1, SP, 10H
0111f(00090001): SUB R0, R0, R1
0112f(E500000D): BLT 13 [0120H]
0113g(80E00010): LDR R0, SP, 10H
0114g(40010001): LSL R0, R0, 1H
0115h(81E00008): LDR R1, SP, 8H
0116h(81100000): LDR R1, R1, 0H
0117h(00090001): SUB R0, R0, R1
0118h(81E00008): LDR R1, SP, 8H
0119h(A0100000): STR R0, R1, 0H
011Ai(80E00008): LDR R0, SP, 8H
011Bi(80000008): LDR R0, R0, 8H
011Ci(41000000): MOV R1, R0, 0H
011Di(00190000): SUB R0, R1, R0
011Ei(81E00008): LDR R1, SP, 8H
011Fi(A0100008): STR R0, R1, 8H
IF p.y < F.Yj THENk p.y := 2*F.Yl -m p.y;n p.dy := -p.dy ELSIFo pp.y >= Y1 THENq p.y := 2*Y1 -r p.y;s p.dy := -p.dy ENDt ;
0120j(80E00004): LDR R0, SP, 4H
0121j(D106BD4C): BLEQ MT [trap=4, pos=1725]
0122k(81E00008): LDR R1, SP, 8H
0123k(81100004): LDR R1, R1, 4H
0124k(8000000C): LDR R0, R0, CH
0125k(01190000): SUB R1, R1, R0
0126k(ED000010): BGE 16 [0137H]
0127l(80E00004): LDR R0, SP, 4H
0128l(D106CF4C): BLEQ MT [trap=4, pos=1743]
0129m(8000000C): LDR R0, R0, CH
012Am(40010001): LSL R0, R0, 1H
012Bn(81E00008): LDR R1, SP, 8H
012Cn(81100004): LDR R1, R1, 4H
012Dn(00090001): SUB R0, R0, R1
012En(81E00008): LDR R1, SP, 8H
012Fn(A0100004): STR R0, R1, 4H
0130o(80E00008): LDR R0, SP, 8H
0131o(8000000C): LDR R0, R0, CH
0132o(41000000): MOV R1, R0, 0H
0133o(00190000): SUB R0, R1, R0
0134o(81E00008): LDR R1, SP, 8H
0135o(A010000C): STR R0, R1, CH
0136p(E7000012): B 18 [0149H]
0137q(80E00008): LDR R0, SP, 8H
0138q(80000004): LDR R0, R0, 4H
0139q(81E00014): LDR R1, SP, 14H
013Aq(00090001): SUB R0, R0, R1
013Bq(E500000D): BLT 13 [0149H]
013Cr(80E00014): LDR R0, SP, 14H
013Dr(40010001): LSL R0, R0, 1H
013Es(81E00008): LDR R1, SP, 8H
013Fs(81100004): LDR R1, R1, 4H
0140s(00090001): SUB R0, R0, R1
0141s(81E00008): LDR R1, SP, 8H
0142s(A0100004): STR R0, R1, 4H
0143t(80E00008): LDR R0, SP, 8H
0144t(8000000C): LDR R0, R0, CH
0145t(41000000): MOV R1, R0, 0H
0146t(00190000): SUB R0, R1, R0
0147t(81E00008): LDR R1, SP, 8H
0148t(A010000C): STR R0, R1, CH
Draw(p.x,u p.y)v
0149u(80E00008): LDR R0, SP, 8H
014Au(80000000): LDR R0, R0, 0H
014Bv(81E00008): LDR R1, SP, 8H
014Cv(81100004): LDR R1, R1, 4H
ENDw Move;
014Dw(F7FFFEB2): BL -334 [0000H]
014Ew(8FE00000): LDR LNK, SP, 0H
014Fw(4EE80018): ADD SP, SP, 18H
0150w(C700000F): B LNK
PROCEDURE Steps(F: Frame);
BEGINx i := 0;y
0151x(4EE9000C): SUB SP, SP, CH
0152x(AFE00000): STR LNK, SP, 0H
0153x(A0E00004): STR R0, SP, 4H
0154y(40000000): MOV R0, R0, 0H
0155y(A0E00008): STR R0, SP, 8H
WHILE i < N DOz Move(F,a[i]c)d;e INC(i) ENDf
0156z(80E00008): LDR R0, SP, 8H
0157z(40090006): SUB R0, R0, 6H
0158z(ED000010): BGE 16 [0169H]
0159a(80E00004): LDR R0, SP, 4H
015Ab(81E00004): LDR R1, SP, 4H
015Bb(D107A24C): BLEQ MT [trap=4, pos=1954]
015Cc(82E00008): LDR R2, SP, 8H
015Dc(43290006): SUB R3, R2, 6H
015Ec(DA07A51C): BLCC MT [trap=1, pos=1957]
015Fc(422A0010): MUL R2, R2, 10H
0160c(01180002): ADD R1, R1, R2
0161d(4118001C): ADD R1, R1, 1CH
0162d .FIXUP D
0162d(8D00015D): LDR SB, MT, MOD0 [Stars]
0163d(42D80000): ADD R2, SB, 0H [data]
0164e(F7FFFF69): BL -151 [00CEH]
0165f(80E00008): LDR R0, SP, 8H
0166f(40080001): ADD R0, R0, 1H
0167f(A0E00008): STR R0, SP, 8H
0168f(E7FFFFED): B -19 [0156H]
ENDg Steps;
0169g(8FE00000): LDR LNK, SP, 0H
016Ag(4EE8000C): ADD SP, SP, CH
016Bg(C700000F): B LNK
PROCEDURE Handle(F: Display.Frame; VAR M: Display.FrameMsg);
VAR F1: Frame;
016Ch(4EE90014): SUB SP, SP, 14H
016Dh(AFE00000): STR LNK, SP, 0H
016Eh(A0E00004): STR R0, SP, 4H
016Fh(A1E00008): STR R1, SP, 8H
0170h(A2E0000C): STR R2, SP, CH
CASE F OF Frame:i
0171i(80E00004): LDR R0, SP, 4H
0172i(E1000005): BEQ 5 [0178H]
0173i(810FFFF8): LDR R1, R0, FFFFFFF8H
0174i(81100004): LDR R1, R1, 4H
0175i .FIXUP D
0175i(8D000013): LDR SB, MT, MOD0 [Stars]
0176i(42D80014): ADD R2, SB, 14H [data]
0177i(02290001): SUB R2, R2, R1
0178i(E900005E): BNE 94 [01D7H]
0179j(80E0000C): LDR R0, SP, CH
017Aj(80000004): LDR R0, R0, 4H
017Bj .FIXUP D
017Bj(8D600006): LDR SB, MT, MOD6 [Oberon]
017Cj(41D80003): ADD R1, SB, VAR3
017Dj(01190000): SUB R1, R1, R0
017Ej(E900000A): BNE 10 [0189H]
IF M(Oberon.InputMsg).id = Oberon.track THENk
017Fk(80E00008): LDR R0, SP, 8H
0180k(80000000): LDR R0, R0, 0H
0181k(40090001): SUB R0, R0, 1H
0182k(E9000005): BNE 5 [0188H]
Oberon.DrawMouseArrow(M(Oberon.InputMsg).X,l M(Oberon.InputMsg).Y)m
0183l(80E00008): LDR R0, SP, 8H
0184l(80000008): LDR R0, R0, 8H
0185m(81E00008): LDR R1, SP, 8H
0186m(8110000C): LDR R1, R1, CH
0187n .FIXUP P
0187n(F7618159): BL MOD6 [Oberon] PROC24
| StepMsgo:p Steps(F)q
0188o(E700004E): B 78 [01D7H]
0189p(80E0000C): LDR R0, SP, CH
018Ap(80000004): LDR R0, R0, 4H
018Bp .FIXUP D
018Bp(8D000010): LDR SB, MT, MOD0 [Stars]
018Cp(41D80044): ADD R1, SB, 44H [data]
018Dp(01190000): SUB R1, R1, R0
018Ep(E9000003): BNE 3 [0192H]
018Fq(80E00004): LDR R0, SP, 4H
|r RestoreMsgs:t Restore(F)u
0190r(F7FFFFC0): BL -64 [0151H]
0191s(E7000045): B 69 [01D7H]
0192t(80E0000C): LDR R0, SP, CH
0193t(80000004): LDR R0, R0, 4H
0194t .FIXUP D
0194t(8D000009): LDR SB, MT, MOD0 [Stars]
0195t(41D80030): ADD R1, SB, 30H [data]
0196t(01190000): SUB R1, R1, R0
0197t(E9000003): BNE 3 [019BH]
0198u(80E00004): LDR R0, SP, 4H
|v Oberonw.CopyMsg:x Oberon.Remove(T)y;z NEW(F1);a F1^ :=b F^;c M.F := F1
0199v(F7FFFE74): BL -396 [000EH]
019Aw(E700003C): B 60 [01D7H]
019Bx(80E0000C): LDR R0, SP, CH
019Cx(80000004): LDR R0, R0, 4H
019Dx .FIXUP D
019Dx(8D600009): LDR SB, MT, MOD6 [Oberon]
019Ex(41D80006): ADD R1, SB, VAR6
019Fx(01190000): SUB R1, R1, R0
01A0x(E9000016): BNE 22 [01B7H]
01A1y .FIXUP D
01A1y(8D000004): LDR SB, MT, MOD0 [Stars]
01A2y(80D00058): LDR R0, SB, 58H [data]
01A3z .FIXUP P
01A3z(F762C01C): BL MOD6 [Oberon] PROC44
01A4a(40E80010): ADD R0, SP, 10H
01A5a .FIXUP D
01A5a(8D000004): LDR SB, MT, MOD0 [Stars]
01A6a(41D80014): ADD R1, SB, 14H [data]
01A7a(D709570C): BL MT [trap=0, pos=2391]
01A8b(80E00010): LDR R0, SP, 10H
01A9b(D1095E4C): BLEQ MT [trap=4, pos=2398]
01AAc(81E00004): LDR R1, SP, 4H
01ABc(D109624C): BLEQ MT [trap=4, pos=2402]
01ACc(4200001F): MOV R2, R0, 1FH
01ADc(83100000): LDR R3, R1, 0H
01AEc(41180004): ADD R1, R1, 4H
01AFc(A3000000): STR R3, R0, 0H
01B0c(40080004): ADD R0, R0, 4H
01B1c(42290001): SUB R2, R2, 1H
01B2c(E9FFFFFA): BNE -6 [01ADH]
|d MenuViewerse.ModifyMsg:f
01B3d(80E00010): LDR R0, SP, 10H
01B4d(81E00008): LDR R1, SP, 8H
01B5d(A0100000): STR R0, R1, 0H
01B6e(E7000020): B 32 [01D7H]
01B7f(80E0000C): LDR R0, SP, CH
01B8f(80000004): LDR R0, R0, 4H
01B9f .FIXUP D
01B9f(8D700014): LDR SB, MT, MOD7 [MenuViewers]
01BAf(41D80002): ADD R1, SB, VAR2
01BBf(01190000): SUB R1, R1, R0
01BCf(E900001A): BNE 26 [01D7H]
IF (M.Y # F.Yg)h OR (iM.H # F.Hj)k THENl F.Ym := M.Y;n F.Ho := M.H;p Restore(F)q ENDr
01BDg(80E00004): LDR R0, SP, 4H
01BEg(D109A14C): BLEQ MT [trap=4, pos=2465]
01BFh(81E00008): LDR R1, SP, 8H
01C0h(81100008): LDR R1, R1, 8H
01C1h(8000000C): LDR R0, R0, CH
01C2h(01190000): SUB R1, R1, R0
01C3i(E9000007): BNE 7 [01CBH]
01C4j(80E00004): LDR R0, SP, 4H
01C5j(D109B04C): BLEQ MT [trap=4, pos=2480]
01C6k(81E00008): LDR R1, SP, 8H
01C7k(8110000C): LDR R1, R1, CH
01C8k(80000014): LDR R0, R0, 14H
01C9k(01190000): SUB R1, R1, R0
01CAl(E100000C): BEQ 12 [01D7H]
01CBm(80E00004): LDR R0, SP, 4H
01CCm(D109BA4C): BLEQ MT [trap=4, pos=2490]
01CDn(81E00008): LDR R1, SP, 8H
01CEn(81100008): LDR R1, R1, 8H
01CFn(A100000C): STR R1, R0, CH
01D0o(80E00004): LDR R0, SP, 4H
01D1o(D109C64C): BLEQ MT [trap=4, pos=2502]
01D2p(81E00008): LDR R1, SP, 8H
01D3p(8110000C): LDR R1, R1, CH
01D4p(A1000014): STR R1, R0, 14H
01D5q(80E00004): LDR R0, SP, 4H
01D6r(F7FFFE37): BL -457 [000EH]
ENDs Handle;
01D7s(8FE00000): LDR LNK, SP, 0H
01D8s(4EE80014): ADD SP, SP, 14H
01D9s(C700000F): B LNK
VAR k: INTEGER; M: StepMsg;
01DAt .PROC 1
01DAt(4EE90008): SUB SP, SP, 8H
01DBt(AFE00000): STR LNK, SP, 0H
IF Oberon.Par.vwr.udscv = Oberon.Par.frame THENw Steps(Oberon.Par.frame.xnexty(Frame)z)
01DCu(8D600023): LDR SB, MT, MOD6 [Oberon]
01DDu(40D8000E): ADD R0, SB, VAR14
01DEv(80000000): LDR R0, R0, 0H
01DFv(D10A534C): BLEQ MT [trap=4, pos=2643]
01E0w .FIXUP D
01E0w(8D600004): LDR SB, MT, MOD6 [Oberon]
01E1w(41D8000E): ADD R1, SB, VAR14
01E2w(80000004): LDR R0, R0, 4H
01E3w(81100004): LDR R1, R1, 4H
01E4w(00090001): SUB R0, R0, R1
01E5w(E900000E): BNE 14 [01F4H]
01E6x .FIXUP D
01E6x(8D600006): LDR SB, MT, MOD6 [Oberon]
01E7x(40D8000E): ADD R0, SB, VAR14
01E8y(80000004): LDR R0, R0, 4H
01E9y(D10A874C): BLEQ MT [trap=4, pos=2695]
01EAz(80000000): LDR R0, R0, 0H
01EBz(E1000005): BEQ 5 [01F1H]
01ECz(810FFFF8): LDR R1, R0, FFFFFFF8H
01EDz(81100004): LDR R1, R1, 4H
01EEz(8D000008): LDR SB, MT, MOD0 [Stars]
01EFz(42D80014): ADD R2, SB, 14H [data]
01F0z(02290001): SUB R2, R2, R1
01F1z(D90A8E2C): BLNE MT [trap=2, pos=2702]
ELSEa Viewersb.Broadcast(M)c
01F2a(F7FFFF5E): BL -162 [0151H]
01F3b(E7000004): B 4 [01F8H]
01F4c(40E80008): ADD R0, SP, 8H
01F5c .FIXUP D
01F5c(8D000007): LDR SB, MT, MOD0 [Stars]
01F6c(41D80044): ADD R1, SB, 44H [data]
01F7d .FIXUP P
01F7d(F720F054): BL MOD2 [Viewers] PROC15
ENDe Step;
01F8e(8FE00000): LDR LNK, SP, 0H
01F9e(4EE80008): ADD SP, SP, 8H
01FAe(C700000F): B LNK
VAR F: Frame; V: Viewers.Viewer; X, Y: INTEGER;
BEGINf NEW(F);g F.handleh := Handle;i
01FBf .PROC 2
01FBf(4EE90014): SUB SP, SP, 14H
01FCf(AFE00000): STR LNK, SP, 0H
01FDg(40E80004): ADD R0, SP, 4H
01FEg(8D000009): LDR SB, MT, MOD0 [Stars]
01FFg(41D80014): ADD R1, SB, 14H [data]
0200g(D70B190C): BL MT [trap=0, pos=2841]
0201h(80E00004): LDR R0, SP, 4H
0202h(D10B224C): BLEQ MT [trap=4, pos=2850]
0203i(F7000000): BL 0 [0204H]
0204i(41F90260): SUB R1, LNK, 260H
0205i(A1000018): STR R1, R0, 18H
Oberon.AllocateUserViewer(Oberon.Par.vwr.jXk,l X,m Y)n;o
0206j .FIXUP D
0206j(8D600008): LDR SB, MT, MOD6 [Oberon]
0207j(40D8000E): ADD R0, SB, VAR14
0208k(80000000): LDR R0, R0, 0H
0209k(D10B5C4C): BLEQ MT [trap=4, pos=2908]
020Al(80000008): LDR R0, R0, 8H
020Bm(41E8000C): ADD R1, SP, CH
020Cn(42E80010): ADD R2, SP, 10H
020Do .FIXUP P
020Do(F7622016): BL MOD6 [Oberon] PROC34
V := MenuViewers.New(
TextFrames.NewMenu("Stars",p "Stars.Close System.Grow System.Copy Stars.Step Stars.Run Stars.Stop")q,r
020Ep .FIXUP D
020Ep(8D000008): LDR SB, MT, MOD0 [Stars]
020Fp(40D80084): ADD R0, SB, 84H ["Stars"]
0210p(41000006): MOV R1, R0, 6H
0211q(42D8008C): ADD R2, SB, 8CH
0212q(43000049): MOV R3, R0, 49H
0213r .FIXUP P
0213r(F782C006): BL MOD8 [TextFrames] PROC44
F,s TextFrames.menuH,t X,u Y)v
0214s(81E00004): LDR R1, SP, 4H
0215t .FIXUP D
0215t(8D800007): LDR SB, MT, MOD8 [TextFrames]
0216t(82D00005): LDR R2, SB, VAR5
0217u(83E0000C): LDR R3, SP, CH
0218v(84E00010): LDR R4, SP, 10H
ENDw Open;
0219w .FIXUP P
0219w(F7704006): BL MOD7 [MenuViewers] PROC4
021Aw(A0E00008): STR R0, SP, 8H
021Bw(8FE00000): LDR LNK, SP, 0H
021Cw(4EE80014): ADD SP, SP, 14H
021Dw(C700000F): B LNK
BEGINx Oberon.Install(T)y
021Ex .PROC 3
021Ex .COMMAND Run
021Ex(4EE90004): SUB SP, SP, 4H
021Fx(AFE00000): STR LNK, SP, 0H
0220y .FIXUP D
0220y(8D00000B): LDR SB, MT, MOD0 [Stars]
0221y(80D00058): LDR R0, SB, 58H [data]
ENDz Run;
0222z .FIXUP P
0222z(F762B009): BL MOD6 [Oberon] PROC43
0223z(8FE00000): LDR LNK, SP, 0H
0224z(4EE80004): ADD SP, SP, 4H
0225z(C700000F): B LNK
BEGINa Oberon.Remove(T)b
0226a .PROC 4
0226a .COMMAND Stop
0226a(4EE90004): SUB SP, SP, 4H
0227a(AFE00000): STR LNK, SP, 0H
0228b .FIXUP D
0228b(8D000008): LDR SB, MT, MOD0 [Stars]
0229b(80D00058): LDR R0, SB, 58H [data]
ENDc Stop;
022Ac .FIXUP P
022Ac(F762C008): BL MOD6 [Oberon] PROC44
022Bc(8FE00000): LDR LNK, SP, 0H
022Cc(4EE80004): ADD SP, SP, 4H
022Dc(C700000F): B LNK
022Ed .PROC 5
022Ed .COMMAND Close
022Ed(4EE90004): SUB SP, SP, 4H
022Fd(AFE00000): STR LNK, SP, 0H
IF Oberon.Par.vwr.edscf = Oberon.Par.frame THENg Stop;h Viewers.Close(Oberon.Par.vwr)i ENDj
0230e .FIXUP D
0230e(8D600008): LDR SB, MT, MOD6 [Oberon]
0231e(40D8000E): ADD R0, SB, VAR14
0232f(80000000): LDR R0, R0, 0H
0233f(D10CC24C): BLEQ MT [trap=4, pos=3266]
0234g .FIXUP D
0234g(8D600004): LDR SB, MT, MOD6 [Oberon]
0235g(41D8000E): ADD R1, SB, VAR14
0236g(80000004): LDR R0, R0, 4H
0237g(81100004): LDR R1, R1, 4H
0238g(00090001): SUB R0, R0, R1
0239g(E9000005): BNE 5 [023FH]
023Ah(F7FFFFEB): BL -21 [0226H]
023Bi .FIXUP D
023Bi(8D600007): LDR SB, MT, MOD6 [Oberon]
023Ci(40D8000E): ADD R0, SB, VAR14
023Di(80000000): LDR R0, R0, 0H
023Ej .FIXUP P
023Ej(F7207014): BL MOD2 [Viewers] PROC7
ENDk Close;
023Fk(8FE00000): LDR LNK, SP, 0H
0240k(4EE80004): ADD SP, SP, 4H
0241k(C700000F): B LNK
VAR M: StepMsg;
BEGINl Viewers.Broadcast(M)m
0242l(4EE90004): SUB SP, SP, 4H
0243l(AFE00000): STR LNK, SP, 0H
0244m(40E80004): ADD R0, SP, 4H
0245m .FIXUP D
0245m(8D00000A): LDR SB, MT, MOD0 [Stars]
0246m(41D80044): ADD R1, SB, 44H [data]
ENDn Step1;
0247n .FIXUP P
0247n(F720F009): BL MOD2 [Viewers] PROC15
0248n(8FE00000): LDR LNK, SP, 0H
0249n(4EE80004): ADD SP, SP, 4H
024An(C700000F): B LNK
VAR S: Texts.Scanner;
BEGINo Texts.OpenScanner(S,p Oberon.Par.text,q Oberon.Par.pos)r;s Texts.Scan(S)t;u
024Bo .PROC 6
024Bo .COMMAND SetPeriod
024Bo(4EE90078): SUB SP, SP, 78H
024Co(AFE00000): STR LNK, SP, 0H
024Dp(40E80004): ADD R0, SP, 4H
024Ep .FIXUP D
024Ep(8D300009): LDR SB, MT, MOD3 [Texts]
024Fp(41D80003): ADD R1, SB, VAR3
0250q .FIXUP D
0250q(8D600002): LDR SB, MT, MOD6 [Oberon]
0251q(42D8000E): ADD R2, SB, VAR14
0252q(82200008): LDR R2, R2, 8H
0253r .FIXUP D
0253r(8D600003): LDR SB, MT, MOD6 [Oberon]
0254r(43D8000E): ADD R3, SB, VAR14
0255r(8330000C): LDR R3, R3, CH
0256s .FIXUP P
0256s(F731500F): BL MOD3 [Texts] PROC21
0257t(40E80004): ADD R0, SP, 4H
0258t .FIXUP D
0258t(8D300005): LDR SB, MT, MOD3 [Texts]
0259t(41D80003): ADD R1, SB, VAR3
025Au .FIXUP P
025Au(F7316004): BL MOD3 [Texts] PROC22
IF S.class = Texts.Int THENv T.periodw := S.i ENDx
025Bv(80E00040): LDR R0, SP, 40H
025Cv(40090003): SUB R0, R0, 3H
025Dv(E9000005): BNE 5 [0263H]
025Ew .FIXUP D
025Ew(8D000006): LDR SB, MT, MOD0 [Stars]
025Fw(80D00058): LDR R0, SB, 58H [data]
0260w(D10E0B4C): BLEQ MT [trap=4, pos=3595]
0261x(81E00044): LDR R1, SP, 44H
0262x(A1000008): STR R1, R0, 8H
ENDy SetPeriod;
0263y(8FE00000): LDR LNK, SP, 0H
0264y(4EE80078): ADD SP, SP, 78H
0265y(C700000F): B LNK
BEGINz Texts.OpenWriter(W)a;b T := Oberon.NewTask(Step1,c interval)d;e
0266z .PROC 0
0266z(4EE90004): SUB SP, SP, 4H
0267z(AFE00000): STR LNK, SP, 0H
0268a .FIXUP D
0268a(8D00000A): LDR SB, MT, MOD0 [Stars]
0269a(40D8005C): ADD R0, SB, 5CH [data]
026Aa .FIXUP D
026Aa(8D300002): LDR SB, MT, MOD3 [Texts]
026Ba(41D80005): ADD R1, SB, VAR5
026Cb .FIXUP P
026Cb(F7317012): BL MOD3 [Texts] PROC23
026Dc(F7000000): BL 0 [026EH]
026Ec(40F900B0): SUB R0, LNK, B0H
026Fd(410000C8): MOV R1, R0, C8H
0270e .FIXUP P
0270e(F762A004): BL MOD6 [Oberon] PROC42
0271e .FIXUP D
0271e(8D000007): LDR SB, MT, MOD0 [Stars]
0272e(A0D00058): STR R0, SB, 58H [data]
END Stars.f
0273f(8FE00000): LDR LNK, SP, 0H
0274f(4EE80004): ADD SP, SP, 4H
0275f(C700000F): B LNK