Viewers

Used Exports

BUILTINS: INTEGER NEW
Display: Frame FrameDesc FrameDesc.H FrameDesc.W FrameDesc.X FrameDesc.Y FrameDesc.dsc FrameDesc.handle FrameDesc.next FrameMsg Height

MODULE Viewers; (*JG 14.9.90 / NW 15.9.2013*)
.MODULE Viewers (KEY 25ABF199, VERSION 1, SIZE 00001620)
.IMPORT Display (KEY 4C08D3EA)
.TYPEDESC 00000040 00000001 FFFFFFFF FFFFFFFF 00000000 00000004 FFFFFFFF 00000020 0001C007 FFFFFFFF FFFFFFFF FFFFFFFF 00000040 00000005 00030001 FFFFFFFF 00000020 00000000 00000004 FFFFFFFF
.DATA 18H
.POINTER_REFERENCES 5CH 60H 64H
.FIXUP T EH
IMPORT Display;
CONST restore* = 0; modify* = 1; suspend* = 2; (*message ids*)
inf = 65535;
TYPE Viewer* = POINTER TO ViewerDesc;
ViewerDesc* = RECORD (Display.FrameDesc) state*: INTEGER END;
(*state > 1: displayed; state = 1: filler; state = 0: closed; state < 0: suspended*)
ViewerMsg* = RECORD (Display.FrameMsg)
id*: INTEGER;
X*, Y*, W*, H*: INTEGER;
state*: INTEGER
END;
Track = POINTER TO TrackDesc;
TrackDesc = RECORD (ViewerDesc) under: Display.Frame END;
VAR curW*, minH*, DH: INTEGER;
FillerTrack: Track; FillerViewer,
backup: Viewer; (*last closed viewer*)
PROCEDURE Open* (V: Viewer; X, Y: INTEGER);
VAR T, u, v: Display.Frame; M: ViewerMsg;
BEGINa
0000a .PROC 1
0000a .PROC 5
0000a(4EE90034): SUB SP, SP, 34H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
0003a(A1E00008): STR R1, SP, 8H
0004a(A2E0000C): STR R2, SP, CH
IF (V.stateb = 0)c & (dX < inf)e THENf
0005b(80E00004): LDR R0, SP, 4H
0006b(D103264C): BLEQ MT [trap=4, pos=806]
0007c .PROC 2
0007c(8000001C): LDR R0, R0, 1CH
0008d(E90000E6): BNE 230 [00EFH]
0009e(80E00008): LDR R0, SP, 8H
000Ae(4009FFFF): SUB R0, R0, FFFFFFFFH
000Bf(ED0000E3): BGE 227 [00EFH]
IF Y > DH THENg Y := DH ENDh;
000Cg(80E0000C): LDR R0, SP, CH
000Dg .FIXUP D
000Dg(8D00000D): LDR SB, MT, MOD0 [Viewers]
000Eg(81D00058): LDR R1, SB, 58H [data]
000Fg(00090001): SUB R0, R0, R1
0010g(E6000003): BLE 3 [0014H]
0011h .FIXUP D
0011h(8D000004): LDR SB, MT, MOD0 [Viewers]
0012h(80D00058): LDR R0, SB, 58H [data]
0013h(A0E0000C): STR R0, SP, CH
T := FillerTrack.nexti;j
0014i .PROC 3
0014i .FIXUP D
0014i(8D000003): LDR SB, MT, MOD0 [Viewers]
0015i .PROC 4
0015i(80D0005C): LDR R0, SB, 5CH [data]
0016i(D1037A4C): BLEQ MT [trap=4, pos=890]
0017j(80000000): LDR R0, R0, 0H
0018j(A0E00010): STR R0, SP, 10H
WHILE X >= T.Xk + T.Wl DOm T := T.nextn ENDo;
0019k(80E00010): LDR R0, SP, 10H
001Ak(D103904C): BLEQ MT [trap=4, pos=912]
001Bl(81E00010): LDR R1, SP, 10H
001Cl(D103964C): BLEQ MT [trap=4, pos=918]
001Dm(80000008): LDR R0, R0, 8H
001Em(81100010): LDR R1, R1, 10H
001Fm(00080001): ADD R0, R0, R1
0020m(81E00008): LDR R1, SP, 8H
0021m(01190000): SUB R1, R1, R0
0022m(E5000005): BLT 5 [0028H]
0023n(80E00010): LDR R0, SP, 10H
0024n(D103A54C): BLEQ MT [trap=4, pos=933]
0025o(80000000): LDR R0, R0, 0H
0026o(A0E00010): STR R0, SP, 10H
0027o(E7FFFFF1): B -15 [0019H]
u := T.dscp;q v := u.nextr;s
0028p(80E00010): LDR R0, SP, 10H
0029p(D103BB4C): BLEQ MT [trap=4, pos=955]
002Aq(80000004): LDR R0, R0, 4H
002Bq(A0E00014): STR R0, SP, 14H
002Cr(80E00014): LDR R0, SP, 14H
002Dr(D103C84C): BLEQ MT [trap=4, pos=968]
002Es(80000000): LDR R0, R0, 0H
002Fs(A0E00018): STR R0, SP, 18H
WHILE Y > v.Yt + v.Hu DOv u := v;w v := u.nextx ENDy;
0030t(80E00018): LDR R0, SP, 18H
0031t(D103DD4C): BLEQ MT [trap=4, pos=989]
0032u(81E00018): LDR R1, SP, 18H
0033u(D103E34C): BLEQ MT [trap=4, pos=995]
0034v(8000000C): LDR R0, R0, CH
0035v(81100014): LDR R1, R1, 14H
0036v(00080001): ADD R0, R0, R1
0037v(81E0000C): LDR R1, SP, CH
0038v(01190000): SUB R1, R1, R0
0039v(E6000007): BLE 7 [0041H]
003Aw(80E00018): LDR R0, SP, 18H
003Bw(A0E00014): STR R0, SP, 14H
003Cx(80E00014): LDR R0, SP, 14H
003Dx(D103FA4C): BLEQ MT [trap=4, pos=1018]
003Ey(80000000): LDR R0, R0, 0H
003Fy(A0E00018): STR R0, SP, 18H
0040y(E7FFFFEF): B -17 [0030H]
IF Y < v.Yz + minH THENa Y := v.Yb + minH ENDc;
0041z(80E00018): LDR R0, SP, 18H
0042z(D104104C): BLEQ MT [trap=4, pos=1040]
0043a(8000000C): LDR R0, R0, CH
0044a .FIXUP D
0044a(8D000030): LDR SB, MT, MOD0 [Viewers]
0045a(81D00054): LDR R1, SB, 54H [data]
0046a(00080001): ADD R0, R0, R1
0047a(81E0000C): LDR R1, SP, CH
0048a(01190000): SUB R1, R1, R0
0049a(ED000007): BGE 7 [0051H]
004Ab(80E00018): LDR R0, SP, 18H
004Bb(D104254C): BLEQ MT [trap=4, pos=1061]
004Cc(8000000C): LDR R0, R0, CH
004Dc .FIXUP D
004Dc(8D000009): LDR SB, MT, MOD0 [Viewers]
004Ec(81D00054): LDR R1, SB, 54H [data]
004Fc(00080001): ADD R0, R0, R1
0050c(A0E0000C): STR R0, SP, CH
IF (v.nextd.Ye # 0)f & (gY > v.Yh + v.Hi -j minH)k THENl
0051d(80E00018): LDR R0, SP, 18H
0052d(D104424C): BLEQ MT [trap=4, pos=1090]
0053e(80000000): LDR R0, R0, 0H
0054e(D104444C): BLEQ MT [trap=4, pos=1092]
0055f(8000000C): LDR R0, R0, CH
0056g(E100004F): BEQ 79 [00A6H]
0057h(80E00018): LDR R0, SP, 18H
0058h(D104544C): BLEQ MT [trap=4, pos=1108]
0059i(81E00018): LDR R1, SP, 18H
005Ai(D1045A4C): BLEQ MT [trap=4, pos=1114]
005Bj(8000000C): LDR R0, R0, CH
005Cj(81100014): LDR R1, R1, 14H
005Dj(00080001): ADD R0, R0, R1
005Ek .FIXUP D
005Ek(8D000011): LDR SB, MT, MOD0 [Viewers]
005Fk(81D00054): LDR R1, SB, 54H [data]
0060k(00090001): SUB R0, R0, R1
0061k(81E0000C): LDR R1, SP, CH
0062k(01190000): SUB R1, R1, R0
0063l(E6000042): BLE 66 [00A6H]
V.Xm := T.Xn;o V.Wp := T.Wq;r V.Ys := v.Yt;u V.Hv := v.Hw;x
0064m(80E00004): LDR R0, SP, 4H
0065m(D104734C): BLEQ MT [trap=4, pos=1139]
0066n(81E00010): LDR R1, SP, 10H
0067n(D1047A4C): BLEQ MT [trap=4, pos=1146]
0068o(81100008): LDR R1, R1, 8H
0069o(A1000008): STR R1, R0, 8H
006Ap(80E00004): LDR R0, SP, 4H
006Bp(D1047F4C): BLEQ MT [trap=4, pos=1151]
006Cq(81E00010): LDR R1, SP, 10H
006Dq(D104864C): BLEQ MT [trap=4, pos=1158]
006Er(81100010): LDR R1, R1, 10H
006Fr(A1000010): STR R1, R0, 10H
0070s(80E00004): LDR R0, SP, 4H
0071s(D1048B4C): BLEQ MT [trap=4, pos=1163]
0072t(81E00018): LDR R1, SP, 18H
0073t(D104924C): BLEQ MT [trap=4, pos=1170]
0074u(8110000C): LDR R1, R1, CH
0075u(A100000C): STR R1, R0, CH
0076v(80E00004): LDR R0, SP, 4H
0077v(D104974C): BLEQ MT [trap=4, pos=1175]
0078w(81E00018): LDR R1, SP, 18H
0079w(D1049E4C): BLEQ MT [trap=4, pos=1182]
007Ax(81100014): LDR R1, R1, 14H
007Bx(A1000014): STR R1, R0, 14H
M.id := suspend;y M.state := 0;z
007Cy(40000002): MOV R0, R0, 2H
007Dy(A0E0001C): STR R0, SP, 1CH
007Ez(40000000): MOV R0, R0, 0H
007Fz(A0E00030): STR R0, SP, 30H
v.handlea(vb,c M)d;e v(Viewer)f.state := 0;g
0080a(80E00018): LDR R0, SP, 18H
0081a(D104D74C): BLEQ MT [trap=4, pos=1239]
0082b(80000018): LDR R0, R0, 18H
0083b(4EE90004): SUB SP, SP, 4H
0084b(A0E00000): STR R0, SP, 0H
0085c(80E0001C): LDR R0, SP, 1CH
0086d(41E80020): ADD R1, SP, 20H
0087d .FIXUP D
0087d(8D000029): LDR SB, MT, MOD0 [Viewers]
0088d(42D8001C): ADD R2, SB, 1CH [data]
0089e(83E00000): LDR R3, SP, 0H
008Ae(4EE80004): ADD SP, SP, 4H
008Be(D104DE5C): BLEQ MT [trap=5, pos=1246]
008Ce(D7000003): BL R3
008Df(80E00018): LDR R0, SP, 18H
008Ef(E1000005): BEQ 5 [0094H]
008Ff(810FFFF8): LDR R1, R0, FFFFFFF8H
0090f(81100004): LDR R1, R1, 4H
0091f .FIXUP D
0091f(8D00000A): LDR SB, MT, MOD0 [Viewers]
0092f(42D80000): ADD R2, SB, 0H [data]
0093f(02290001): SUB R2, R2, R1
0094f(D904E82C): BLNE MT [trap=2, pos=1256]
0095g(41000000): MOV R1, R0, 0H
0096g(A100001C): STR R1, R0, 1CH
V.nexth := v.nexti;j u.nextk := V;l V.statem := 2
0097h(80E00004): LDR R0, SP, 4H
0098h(D105034C): BLEQ MT [trap=4, pos=1283]
0099i(81E00018): LDR R1, SP, 18H
009Ai(D1050D4C): BLEQ MT [trap=4, pos=1293]
009Bj(81100000): LDR R1, R1, 0H
009Cj(A1000000): STR R1, R0, 0H
009Dk(80E00014): LDR R0, SP, 14H
009Ek(D105154C): BLEQ MT [trap=4, pos=1301]
009Fl(81E00004): LDR R1, SP, 4H
00A0l(A1000000): STR R1, R0, 0H
00A1m(80E00004): LDR R0, SP, 4H
00A2m(D105234C): BLEQ MT [trap=4, pos=1315]
ELSEn Vo.Xp := T.Xq;r V.Ws := T.Wt;u V.Yv := v.Yw;x V.Hy := Y - v.Yz;a
00A3n(41000002): MOV R1, R0, 2H
00A4n(A100001C): STR R1, R0, 1CH
00A5o(E7000049): B 73 [00EFH]
00A6p(80E00004): LDR R0, SP, 4H
00A7p(D105374C): BLEQ MT [trap=4, pos=1335]
00A8q(81E00010): LDR R1, SP, 10H
00A9q(D1053E4C): BLEQ MT [trap=4, pos=1342]
00AAr(81100008): LDR R1, R1, 8H
00ABr(A1000008): STR R1, R0, 8H
00ACs(80E00004): LDR R0, SP, 4H
00ADs(D105434C): BLEQ MT [trap=4, pos=1347]
00AEt(81E00010): LDR R1, SP, 10H
00AFt(D1054A4C): BLEQ MT [trap=4, pos=1354]
00B0u(81100010): LDR R1, R1, 10H
00B1u(A1000010): STR R1, R0, 10H
00B2v(80E00004): LDR R0, SP, 4H
00B3v(D1054F4C): BLEQ MT [trap=4, pos=1359]
00B4w(81E00018): LDR R1, SP, 18H
00B5w(D105564C): BLEQ MT [trap=4, pos=1366]
00B6x(8110000C): LDR R1, R1, CH
00B7x(A100000C): STR R1, R0, CH
00B8y(80E00004): LDR R0, SP, 4H
00B9y(D1055B4C): BLEQ MT [trap=4, pos=1371]
00BAz(81E00018): LDR R1, SP, 18H
00BBz(D105664C): BLEQ MT [trap=4, pos=1382]
00BCa(82E0000C): LDR R2, SP, CH
00BDa(8110000C): LDR R1, R1, CH
00BEa(01290001): SUB R1, R2, R1
00BFa(A1000014): STR R1, R0, 14H
M.id := modify;b M.Y := Y;c M.H := v.Yd + v.He -f Y;g
00C0b(40000001): MOV R0, R0, 1H
00C1b(A0E0001C): STR R0, SP, 1CH
00C2c(80E0000C): LDR R0, SP, CH
00C3c(A0E00024): STR R0, SP, 24H
00C4d(80E00018): LDR R0, SP, 18H
00C5d(D105944C): BLEQ MT [trap=4, pos=1428]
00C6e(81E00018): LDR R1, SP, 18H
00C7e(D1059A4C): BLEQ MT [trap=4, pos=1434]
00C8f(8000000C): LDR R0, R0, CH
00C9f(81100014): LDR R1, R1, 14H
00CAf(00080001): ADD R0, R0, R1
00CBg(81E0000C): LDR R1, SP, CH
00CCg(00090001): SUB R0, R0, R1
00CDg(A0E0002C): STR R0, SP, 2CH
v.handleh(vi,j M)k;l v.Ym := M.Y;n v.Ho := M.H;p
00CEh(80E00018): LDR R0, SP, 18H
00CFh(D105B04C): BLEQ MT [trap=4, pos=1456]
00D0i(80000018): LDR R0, R0, 18H
00D1i(4EE90004): SUB SP, SP, 4H
00D2i(A0E00000): STR R0, SP, 0H
00D3j(80E0001C): LDR R0, SP, 1CH
00D4k(41E80020): ADD R1, SP, 20H
00D5k .FIXUP D
00D5k(8D000044): LDR SB, MT, MOD0 [Viewers]
00D6k(42D8001C): ADD R2, SB, 1CH [data]
00D7l(83E00000): LDR R3, SP, 0H
00D8l(4EE80004): ADD SP, SP, 4H
00D9l(D105B75C): BLEQ MT [trap=5, pos=1463]
00DAl(D7000003): BL R3
00DBm(80E00018): LDR R0, SP, 18H
00DCm(D105BB4C): BLEQ MT [trap=4, pos=1467]
00DDn(81E00024): LDR R1, SP, 24H
00DEn(A100000C): STR R1, R0, CH
00DFo(80E00018): LDR R0, SP, 18H
00E0o(D105C74C): BLEQ MT [trap=4, pos=1479]
00E1p(81E0002C): LDR R1, SP, 2CH
00E2p(A1000014): STR R1, R0, 14H
V.nextq := v;r u.nexts := V;t V.stateu := 2
00E3q(80E00004): LDR R0, SP, 4H
00E4q(D105DE4C): BLEQ MT [trap=4, pos=1502]
00E5r(81E00018): LDR R1, SP, 18H
00E6r(A1000000): STR R1, R0, 0H
00E7s(80E00014): LDR R0, SP, 14H
00E8s(D105EB4C): BLEQ MT [trap=4, pos=1515]
00E9t(81E00004): LDR R1, SP, 4H
00EAt(A1000000): STR R1, R0, 0H
00EBu(80E00004): LDR R0, SP, 4H
00ECu(D105F94C): BLEQ MT [trap=4, pos=1529]
ENDv
00EDv(41000002): MOV R1, R0, 2H
00EEv(A100001C): STR R1, R0, 1CH
END
ENDw Open;
00EFw(8FE00000): LDR LNK, SP, 0H
00F0w(4EE80034): ADD SP, SP, 34H
00F1w(C700000F): B LNK
PROCEDURE Change* (V: Viewer; Y: INTEGER);
VAR v: Display.Frame; M: ViewerMsg;
BEGINx
00F2x .PROC 6
00F2x(4EE90028): SUB SP, SP, 28H
00F3x(AFE00000): STR LNK, SP, 0H
00F4x(A0E00004): STR R0, SP, 4H
00F5x(A1E00008): STR R1, SP, 8H
IF V.statey > 1 THENz
00F6y(80E00004): LDR R0, SP, 4H
00F7y(D106894C): BLEQ MT [trap=4, pos=1673]
00F8z(8000001C): LDR R0, R0, 1CH
00F9z(40090001): SUB R0, R0, 1H
00FAz(E600005E): BLE 94 [0159H]
IF Y > DH THENa Y := DH ENDb;
00FBa(80E00008): LDR R0, SP, 8H
00FCa .FIXUP D
00FCa(8D000027): LDR SB, MT, MOD0 [Viewers]
00FDa(81D00058): LDR R1, SB, 58H [data]
00FEa(00090001): SUB R0, R0, R1
00FFa(E6000003): BLE 3 [0103H]
0100b .FIXUP D
0100b(8D000004): LDR SB, MT, MOD0 [Viewers]
0101b(80D00058): LDR R0, SB, 58H [data]
0102b(A0E00008): STR R0, SP, 8H
v := V.nextc;d
0103c(80E00004): LDR R0, SP, 4H
0104c(D106C64C): BLEQ MT [trap=4, pos=1734]
0105d(80000000): LDR R0, R0, 0H
0106d(A0E0000C): STR R0, SP, CH
IF (v.nexte.Yf # 0)g & (hY > v.Yi + v.Hj -k minH)l THENm Y := v.Yn + v.Ho -p minH ENDq;
0107e(80E0000C): LDR R0, SP, CH
0108e(D106D84C): BLEQ MT [trap=4, pos=1752]
0109f(80000000): LDR R0, R0, 0H
010Af(D106DA4C): BLEQ MT [trap=4, pos=1754]
010Bg(8000000C): LDR R0, R0, CH
010Ch(E1000018): BEQ 24 [0125H]
010Di(80E0000C): LDR R0, SP, CH
010Ei(D106EA4C): BLEQ MT [trap=4, pos=1770]
010Fj(81E0000C): LDR R1, SP, CH
0110j(D106F04C): BLEQ MT [trap=4, pos=1776]
0111k(8000000C): LDR R0, R0, CH
0112k(81100014): LDR R1, R1, 14H
0113k(00080001): ADD R0, R0, R1
0114l .FIXUP D
0114l(8D000014): LDR SB, MT, MOD0 [Viewers]
0115l(81D00054): LDR R1, SB, 54H [data]
0116l(00090001): SUB R0, R0, R1
0117l(81E00008): LDR R1, SP, 8H
0118l(01190000): SUB R1, R1, R0
0119m(E600000B): BLE 11 [0125H]
011An(80E0000C): LDR R0, SP, CH
011Bn(D107064C): BLEQ MT [trap=4, pos=1798]
011Co(81E0000C): LDR R1, SP, CH
011Do(D1070C4C): BLEQ MT [trap=4, pos=1804]
011Ep(8000000C): LDR R0, R0, CH
011Fp(81100014): LDR R1, R1, 14H
0120p(00080001): ADD R0, R0, R1
0121q .FIXUP D
0121q(8D00000D): LDR SB, MT, MOD0 [Viewers]
0122q(81D00054): LDR R1, SB, 54H [data]
0123q(00090001): SUB R0, R0, R1
0124q(A0E00008): STR R0, SP, 8H
IF Y >= V.Yr + minH THENs
0125r(80E00004): LDR R0, SP, 4H
0126r(D1072A4C): BLEQ MT [trap=4, pos=1834]
0127s(8000000C): LDR R0, R0, CH
0128s .FIXUP D
0128s(8D000007): LDR SB, MT, MOD0 [Viewers]
0129s(81D00054): LDR R1, SB, 54H [data]
012As(00080001): ADD R0, R0, R1
012Bs(81E00008): LDR R1, SP, 8H
012Cs(01190000): SUB R1, R1, R0
012Ds(E500002B): BLT 43 [0159H]
M.id := modify;t M.Y := Y;u M.H := v.Yv + v.Hw -x Y;y
012Et(40000001): MOV R0, R0, 1H
012Ft(A0E00010): STR R0, SP, 10H
0130u(80E00008): LDR R0, SP, 8H
0131u(A0E00018): STR R0, SP, 18H
0132v(80E0000C): LDR R0, SP, CH
0133v(D107634C): BLEQ MT [trap=4, pos=1891]
0134w(81E0000C): LDR R1, SP, CH
0135w(D107694C): BLEQ MT [trap=4, pos=1897]
0136x(8000000C): LDR R0, R0, CH
0137x(81100014): LDR R1, R1, 14H
0138x(00080001): ADD R0, R0, R1
0139y(81E00008): LDR R1, SP, 8H
013Ay(00090001): SUB R0, R0, R1
013By(A0E00020): STR R0, SP, 20H
v.handlez(va,b M)c;d v.Ye := M.Y;f v.Hg := M.H;h V.Hi := Y - V.Yj
013Cz(80E0000C): LDR R0, SP, CH
013Dz(D1077F4C): BLEQ MT [trap=4, pos=1919]
013Ea(80000018): LDR R0, R0, 18H
013Fa(4EE90004): SUB SP, SP, 4H
0140a(A0E00000): STR R0, SP, 0H
0141b(80E00010): LDR R0, SP, 10H
0142c(41E80014): ADD R1, SP, 14H
0143c .FIXUP D
0143c(8D00001B): LDR SB, MT, MOD0 [Viewers]
0144c(42D8001C): ADD R2, SB, 1CH [data]
0145d(83E00000): LDR R3, SP, 0H
0146d(4EE80004): ADD SP, SP, 4H
0147d(D107865C): BLEQ MT [trap=5, pos=1926]
0148d(D7000003): BL R3
0149e(80E0000C): LDR R0, SP, CH
014Ae(D1078A4C): BLEQ MT [trap=4, pos=1930]
014Bf(81E00018): LDR R1, SP, 18H
014Cf(A100000C): STR R1, R0, CH
014Dg(80E0000C): LDR R0, SP, CH
014Eg(D107964C): BLEQ MT [trap=4, pos=1942]
014Fh(81E00020): LDR R1, SP, 20H
0150h(A1000014): STR R1, R0, 14H
0151i(80E00004): LDR R0, SP, 4H
0152i(D107A24C): BLEQ MT [trap=4, pos=1954]
0153j(81E00004): LDR R1, SP, 4H
0154j(D107AD4C): BLEQ MT [trap=4, pos=1965]
ENDk
0155k(82E00008): LDR R2, SP, 8H
0156k(8110000C): LDR R1, R1, CH
0157k(01290001): SUB R1, R2, R1
0158k(A1000014): STR R1, R0, 14H
END
ENDl Change;
0159l(8FE00000): LDR LNK, SP, 0H
015Al(4EE80028): ADD SP, SP, 28H
015Bl(C700000F): B LNK
PROCEDURE RestoreTrack (S: Display.Frame);
VAR T, t, v: Display.Frame; M: ViewerMsg;
BEGINm t := S.nextn;o
015Cm(4EE9002C): SUB SP, SP, 2CH
015Dm(AFE00000): STR LNK, SP, 0H
015Em(A0E00004): STR R0, SP, 4H
015Fn(80E00004): LDR R0, SP, 4H
0160n(D1083D4C): BLEQ MT [trap=4, pos=2109]
0161o(80000000): LDR R0, R0, 0H
0162o(A0E0000C): STR R0, SP, CH
WHILE t.nextp # S DOq t := t.nextr ENDs;
0163p(80E0000C): LDR R0, SP, CH
0164p(D1084F4C): BLEQ MT [trap=4, pos=2127]
0165q(80000000): LDR R0, R0, 0H
0166q(81E00004): LDR R1, SP, 4H
0167q(00090001): SUB R0, R0, R1
0168q(E1000005): BEQ 5 [016EH]
0169r(80E0000C): LDR R0, SP, CH
016Ar(D108624C): BLEQ MT [trap=4, pos=2146]
016Bs(80000000): LDR R0, R0, 0H
016Cs(A0E0000C): STR R0, SP, CH
016Ds(E7FFFFF5): B -11 [0163H]
T := S(Track)t.under;u
016Et(80E00004): LDR R0, SP, 4H
016Ft(E1000005): BEQ 5 [0175H]
0170t(810FFFF8): LDR R1, R0, FFFFFFF8H
0171t(81100008): LDR R1, R1, 8H
0172t .FIXUP D
0172t(8D00002F): LDR SB, MT, MOD0 [Viewers]
0173t(42D80030): ADD R2, SB, 30H [data]
0174t(02290001): SUB R2, R2, R1
0175t(D908792C): BLNE MT [trap=2, pos=2169]
0176u(80000020): LDR R0, R0, 20H
0177u(A0E00008): STR R0, SP, 8H
WHILE T.nextv # NIL DOw T := T.nextx ENDy;
0178v(80E00008): LDR R0, SP, 8H
0179v(D108914C): BLEQ MT [trap=4, pos=2193]
017Aw(80000000): LDR R0, R0, 0H
017Bw(E1000005): BEQ 5 [0181H]
017Cx(80E00008): LDR R0, SP, 8H
017Dx(D108A64C): BLEQ MT [trap=4, pos=2214]
017Ey(80000000): LDR R0, R0, 0H
017Fy(A0E00008): STR R0, SP, 8H
0180y(E7FFFFF7): B -9 [0178H]
t.nextz := S(Track)a.under;b T.nextc := S.nextd;e M.id := restore;f
0181z(80E0000C): LDR R0, SP, CH
0182z(D108B64C): BLEQ MT [trap=4, pos=2230]
0183a(81E00004): LDR R1, SP, 4H
0184a(E1000005): BEQ 5 [018AH]
0185a(821FFFF8): LDR R2, R1, FFFFFFF8H
0186a(82200008): LDR R2, R2, 8H
0187a .FIXUP D
0187a(8D000015): LDR SB, MT, MOD0 [Viewers]
0188a(43D80030): ADD R3, SB, 30H [data]
0189a(03390002): SUB R3, R3, R2
018Aa(D908C22C): BLNE MT [trap=2, pos=2242]
018Bb(81100020): LDR R1, R1, 20H
018Cb(A1000000): STR R1, R0, 0H
018Dc(80E00008): LDR R0, SP, 8H
018Ec(D108D04C): BLEQ MT [trap=4, pos=2256]
018Fd(81E00004): LDR R1, SP, 4H
0190d(D108DA4C): BLEQ MT [trap=4, pos=2266]
0191e(81100000): LDR R1, R1, 0H
0192e(A1000000): STR R1, R0, 0H
0193f(40000000): MOV R0, R0, 0H
0194f(A0E00014): STR R0, SP, 14H
REPEAT t := t.nextg;h v := t.dsci;j
0195g(80E0000C): LDR R0, SP, CH
0196g(D109034C): BLEQ MT [trap=4, pos=2307]
0197h(80000000): LDR R0, R0, 0H
0198h(A0E0000C): STR R0, SP, CH
0199i(80E0000C): LDR R0, SP, CH
019Ai(D1090F4C): BLEQ MT [trap=4, pos=2319]
019Bj(80000004): LDR R0, R0, 4H
019Cj(A0E00010): STR R0, SP, 10H
REPEAT v := v.nextk;l v.handlem(vn,o M)p;q v(Viewer)r.state := - v(Viewer)s.state
019Dk(80E00010): LDR R0, SP, 10H
019Ek(D109294C): BLEQ MT [trap=4, pos=2345]
019Fl(80000000): LDR R0, R0, 0H
01A0l(A0E00010): STR R0, SP, 10H
01A1m(80E00010): LDR R0, SP, 10H
01A2m(D109334C): BLEQ MT [trap=4, pos=2355]
01A3n(80000018): LDR R0, R0, 18H
01A4n(4EE90004): SUB SP, SP, 4H
01A5n(A0E00000): STR R0, SP, 0H
01A6o(80E00014): LDR R0, SP, 14H
01A7p(41E80018): ADD R1, SP, 18H
01A8p .FIXUP D
01A8p(8D000021): LDR SB, MT, MOD0 [Viewers]
01A9p(42D8001C): ADD R2, SB, 1CH [data]
01AAq(83E00000): LDR R3, SP, 0H
01ABq(4EE80004): ADD SP, SP, 4H
01ACq(D1093A5C): BLEQ MT [trap=5, pos=2362]
01ADq(D7000003): BL R3
01AEr(80E00010): LDR R0, SP, 10H
01AFr(E1000005): BEQ 5 [01B5H]
01B0r(810FFFF8): LDR R1, R0, FFFFFFF8H
01B1r(81100004): LDR R1, R1, 4H
01B2r .FIXUP D
01B2r(8D00000A): LDR SB, MT, MOD0 [Viewers]
01B3r(42D80000): ADD R2, SB, 0H [data]
01B4r(02290001): SUB R2, R2, R1
01B5r(D909442C): BLNE MT [trap=2, pos=2372]
01B6s(81E00010): LDR R1, SP, 10H
01B7s(E1000004): BEQ 4 [01BCH]
01B8s(821FFFF8): LDR R2, R1, FFFFFFF8H
01B9s(82200004): LDR R2, R2, 4H
01BAs(43D80000): ADD R3, SB, 0H
01BBs(03390002): SUB R3, R3, R2
01BCs(D909592C): BLNE MT [trap=2, pos=2393]
UNTILt v = t.dscu
01BDt(8110001C): LDR R1, R1, 1CH
01BEt(42000000): MOV R2, R0, 0H
01BFt(01290001): SUB R1, R2, R1
01C0t(A100001C): STR R1, R0, 1CH
01C1u(80E0000C): LDR R0, SP, CH
01C2u(D109754C): BLEQ MT [trap=4, pos=2421]
UNTILv t = T
01C3v(81E00010): LDR R1, SP, 10H
01C4v(80000004): LDR R0, R0, 4H
01C5v(01190000): SUB R1, R1, R0
01C6v(E9FFFFD6): BNE -42 [019DH]
ENDw RestoreTrack;
01C7w(80E0000C): LDR R0, SP, CH
01C8w(81E00008): LDR R1, SP, 8H
01C9w(00090001): SUB R0, R0, R1
01CAw(E9FFFFCA): BNE -54 [0195H]
01CBw(8FE00000): LDR LNK, SP, 0H
01CCw(4EE8002C): ADD SP, SP, 2CH
01CDw(C700000F): B LNK
PROCEDURE Close* (V: Viewer);
VAR T, U: Display.Frame; M: ViewerMsg;
BEGINx
01CEx .PROC 7
01CEx(4EE90028): SUB SP, SP, 28H
01CFx(AFE00000): STR LNK, SP, 0H
01D0x(A0E00004): STR R0, SP, 4H
IF V.statey > 1 THENz
01D1y(80E00004): LDR R0, SP, 4H
01D2y(D109FC4C): BLEQ MT [trap=4, pos=2556]
01D3z(8000001C): LDR R0, R0, 1CH
01D4z(40090001): SUB R0, R0, 1H
01D5z(E60000A3): BLE 163 [0279H]
U := V.nexta;b T := FillerTrack;c
01D6a(80E00004): LDR R0, SP, 4H
01D7a(D10A174C): BLEQ MT [trap=4, pos=2583]
01D8b(80000000): LDR R0, R0, 0H
01D9b(A0E0000C): STR R0, SP, CH
01DAc .FIXUP D
01DAc(8D000028): LDR SB, MT, MOD0 [Viewers]
01DBc(80D0005C): LDR R0, SB, 5CH [data]
01DCc(A0E00008): STR R0, SP, 8H
REPEAT T := T.nextd UNTILe V.Xf < T.Xg + T.Wh;i
01DDd(80E00008): LDR R0, SP, 8H
01DEd(D10A434C): BLEQ MT [trap=4, pos=2627]
01DFe(80000000): LDR R0, R0, 0H
01E0e(A0E00008): STR R0, SP, 8H
01E1f(80E00004): LDR R0, SP, 4H
01E2f(D10A4D4C): BLEQ MT [trap=4, pos=2637]
01E3g(81E00008): LDR R1, SP, 8H
01E4g(D10A534C): BLEQ MT [trap=4, pos=2643]
01E5h(82E00008): LDR R2, SP, 8H
01E6h(D10A594C): BLEQ MT [trap=4, pos=2649]
01E7i(81100008): LDR R1, R1, 8H
01E8i(82200010): LDR R2, R2, 10H
01E9i(01180002): ADD R1, R1, R2
01EAi(80000008): LDR R0, R0, 8H
01EBi(00090001): SUB R0, R0, R1
01ECi(EDFFFFF0): BGE -16 [01DDH]
IF (T(Track)j.under = NIL)k OR (lU.nextm # V)n THENo
01EDj(80E00008): LDR R0, SP, 8H
01EEj(E1000005): BEQ 5 [01F4H]
01EFj(810FFFF8): LDR R1, R0, FFFFFFF8H
01F0j(81100008): LDR R1, R1, 8H
01F1j .FIXUP D
01F1j(8D000017): LDR SB, MT, MOD0 [Viewers]
01F2j(42D80030): ADD R2, SB, 30H [data]
01F3j(02290001): SUB R2, R2, R1
01F4j(D90A6D2C): BLNE MT [trap=2, pos=2669]
01F5k(80000020): LDR R0, R0, 20H
01F6l(E1000006): BEQ 6 [01FDH]
01F7m(80E0000C): LDR R0, SP, CH
01F8m(D10A854C): BLEQ MT [trap=4, pos=2693]
01F9n(80000000): LDR R0, R0, 0H
01FAn(81E00004): LDR R1, SP, 4H
01FBn(00090001): SUB R0, R0, R1
01FCo(E100004C): BEQ 76 [0249H]
M.id := suspend;p M.state := 0;q
01FDp(40000002): MOV R0, R0, 2H
01FEp(A0E00010): STR R0, SP, 10H
01FFq(40000000): MOV R0, R0, 0H
0200q(A0E00024): STR R0, SP, 24H
V.handler(Vs,t M)u;v V.statew := 0;x backup := V;y
0201r(80E00004): LDR R0, SP, 4H
0202r(D10AC74C): BLEQ MT [trap=4, pos=2759]
0203s(80000018): LDR R0, R0, 18H
0204s(4EE90004): SUB SP, SP, 4H
0205s(A0E00000): STR R0, SP, 0H
0206t(80E00008): LDR R0, SP, 8H
0207u(41E80014): ADD R1, SP, 14H
0208u .FIXUP D
0208u(8D000017): LDR SB, MT, MOD0 [Viewers]
0209u(42D8001C): ADD R2, SB, 1CH [data]
020Av(83E00000): LDR R3, SP, 0H
020Bv(4EE80004): ADD SP, SP, 4H
020Cv(D10ACE5C): BLEQ MT [trap=5, pos=2766]
020Dv(D7000003): BL R3
020Ew(80E00004): LDR R0, SP, 4H
020Fw(D10AD64C): BLEQ MT [trap=4, pos=2774]
0210x(41000000): MOV R1, R0, 0H
0211x(A100001C): STR R1, R0, 1CH
0212y(80E00004): LDR R0, SP, 4H
0213y .FIXUP D
0213y(8D00000B): LDR SB, MT, MOD0 [Viewers]
0214y(A0D00064): STR R0, SB, 64H [data]
M.id := modify;z M.Y := V.Ya;b M.H := V.Hc + U.Hd;e
0215z(40000001): MOV R0, R0, 1H
0216z(A0E00010): STR R0, SP, 10H
0217a(80E00004): LDR R0, SP, 4H
0218a(D10B0C4C): BLEQ MT [trap=4, pos=2828]
0219b(8000000C): LDR R0, R0, CH
021Ab(A0E00018): STR R0, SP, 18H
021Bc(80E00004): LDR R0, SP, 4H
021Cc(D10B184C): BLEQ MT [trap=4, pos=2840]
021Dd(81E0000C): LDR R1, SP, CH
021Ed(D10B1E4C): BLEQ MT [trap=4, pos=2846]
021Fe(80000014): LDR R0, R0, 14H
0220e(81100014): LDR R1, R1, 14H
0221e(00080001): ADD R0, R0, R1
0222e(A0E00020): STR R0, SP, 20H
U.handlef(Ug,h M)i;j U.Yk := M.Y;l U.Hm := M.H;n
0223f(80E0000C): LDR R0, SP, CH
0224f(D10B304C): BLEQ MT [trap=4, pos=2864]
0225g(80000018): LDR R0, R0, 18H
0226g(4EE90004): SUB SP, SP, 4H
0227g(A0E00000): STR R0, SP, 0H
0228h(80E00010): LDR R0, SP, 10H
0229i(41E80014): ADD R1, SP, 14H
022Ai(42D8001C): ADD R2, SB, 1CH
022Bj(83E00000): LDR R3, SP, 0H
022Cj(4EE80004): ADD SP, SP, 4H
022Dj(D10B375C): BLEQ MT [trap=5, pos=2871]
022Ej(D7000003): BL R3
022Fk(80E0000C): LDR R0, SP, CH
0230k(D10B3B4C): BLEQ MT [trap=4, pos=2875]
0231l(81E00018): LDR R1, SP, 18H
0232l(A100000C): STR R1, R0, CH
0233m(80E0000C): LDR R0, SP, CH
0234m(D10B474C): BLEQ MT [trap=4, pos=2887]
0235n(81E00020): LDR R1, SP, 20H
0236n(A1000014): STR R1, R0, 14H
WHILE U.nexto # V DOp U := U.nextq ENDr;
0237o(80E0000C): LDR R0, SP, CH
0238o(D10B644C): BLEQ MT [trap=4, pos=2916]
0239p(80000000): LDR R0, R0, 0H
023Ap(81E00004): LDR R1, SP, 4H
023Bp(00090001): SUB R0, R0, R1
023Cp(E1000005): BEQ 5 [0242H]
023Dq(80E0000C): LDR R0, SP, CH
023Eq(D10B774C): BLEQ MT [trap=4, pos=2935]
023Fr(80000000): LDR R0, R0, 0H
0240r(A0E0000C): STR R0, SP, CH
0241r(E7FFFFF5): B -11 [0237H]
U.nexts := V.nextt
0242s(80E0000C): LDR R0, SP, CH
0243s(D10B8B4C): BLEQ MT [trap=4, pos=2955]
0244t(81E00004): LDR R1, SP, 4H
0245t(D10B954C): BLEQ MT [trap=4, pos=2965]
ELSEu (*close track*)
0246u(81100000): LDR R1, R1, 0H
0247u(A1000000): STR R1, R0, 0H
Mv.id := suspend;w M.state := 0;x
0248v(E7000030): B 48 [0279H]
0249w(40000002): MOV R0, R0, 2H
024Aw(A0E00010): STR R0, SP, 10H
024Bx(40000000): MOV R0, R0, 0H
024Cx(A0E00024): STR R0, SP, 24H
V.handley(Vz,a M)b;c V.stated := 0;e backup := V;f
024Dy(80E00004): LDR R0, SP, 4H
024Ey(D10BE84C): BLEQ MT [trap=4, pos=3048]
024Fz(80000018): LDR R0, R0, 18H
0250z(4EE90004): SUB SP, SP, 4H
0251z(A0E00000): STR R0, SP, 0H
0252a(80E00008): LDR R0, SP, 8H
0253b(41E80014): ADD R1, SP, 14H
0254b .FIXUP D
0254b(8D000041): LDR SB, MT, MOD0 [Viewers]
0255b(42D8001C): ADD R2, SB, 1CH [data]
0256c(83E00000): LDR R3, SP, 0H
0257c(4EE80004): ADD SP, SP, 4H
0258c(D10BEF5C): BLEQ MT [trap=5, pos=3055]
0259c(D7000003): BL R3
025Ad(80E00004): LDR R0, SP, 4H
025Bd(D10BF74C): BLEQ MT [trap=4, pos=3063]
025Ce(41000000): MOV R1, R0, 0H
025De(A100001C): STR R1, R0, 1CH
025Ef(80E00004): LDR R0, SP, 4H
025Ff .FIXUP D
025Ff(8D00000B): LDR SB, MT, MOD0 [Viewers]
0260f(A0D00064): STR R0, SB, 64H [data]
U.handleg(Uh,i M)j;k U(Viewer)l.state := 0;m
0261g(80E0000C): LDR R0, SP, CH
0262g(D10C1B4C): BLEQ MT [trap=4, pos=3099]
0263h(80000018): LDR R0, R0, 18H
0264h(4EE90004): SUB SP, SP, 4H
0265h(A0E00000): STR R0, SP, 0H
0266i(80E00010): LDR R0, SP, 10H
0267j(41E80014): ADD R1, SP, 14H
0268j(42D8001C): ADD R2, SB, 1CH
0269k(83E00000): LDR R3, SP, 0H
026Ak(4EE80004): ADD SP, SP, 4H
026Bk(D10C225C): BLEQ MT [trap=5, pos=3106]
026Ck(D7000003): BL R3
026Dl(80E0000C): LDR R0, SP, CH
026El(E1000005): BEQ 5 [0274H]
026Fl(810FFFF8): LDR R1, R0, FFFFFFF8H
0270l(81100004): LDR R1, R1, 4H
0271l .FIXUP D
0271l(8D000012): LDR SB, MT, MOD0 [Viewers]
0272l(42D80000): ADD R2, SB, 0H [data]
0273l(02290001): SUB R2, R2, R1
0274l(D90C2C2C): BLNE MT [trap=2, pos=3116]
0275m(41000000): MOV R1, R0, 0H
0276m(A100001C): STR R1, R0, 1CH
RestoreTrack(T)n
0277n(80E00008): LDR R0, SP, 8H
ENDo
0278o(F7FFFEE3): BL -285 [015CH]
END
ENDp Close;
0279p(8FE00000): LDR LNK, SP, 0H
027Ap(4EE80028): ADD SP, SP, 28H
027Bp(C700000F): B LNK
PROCEDURE Recall* (VAR V: Viewer);
BEGINq V := backup
027Cq .PROC 8
027Cq(4EE90008): SUB SP, SP, 8H
027Dq(AFE00000): STR LNK, SP, 0H
027Eq(A0E00004): STR R0, SP, 4H
ENDr Recall;
027Fr .FIXUP D
027Fr(8D00000E): LDR SB, MT, MOD0 [Viewers]
0280r(80D00064): LDR R0, SB, 64H [data]
0281r(81E00004): LDR R1, SP, 4H
0282r(A0100000): STR R0, R1, 0H
0283r(8FE00000): LDR LNK, SP, 0H
0284r(4EE80008): ADD SP, SP, 8H
0285r(C700000F): B LNK
PROCEDURE This* (X, Y: INTEGER): Viewer;
VAR T, V: Display.Frame;
BEGINs
0286s .PROC 9
0286s(4EE90014): SUB SP, SP, 14H
0287s(AFE00000): STR LNK, SP, 0H
0288s(A0E00004): STR R0, SP, 4H
0289s(A1E00008): STR R1, SP, 8H
IF (X < inf)t & (uY < DH)v THENw
028At(80E00004): LDR R0, SP, 4H
028Bt(4009FFFF): SUB R0, R0, FFFFFFFFH
028Cu(ED000029): BGE 41 [02B6H]
028Dv(80E00008): LDR R0, SP, 8H
028Ev .FIXUP D
028Ev(8D00000F): LDR SB, MT, MOD0 [Viewers]
028Fv(81D00058): LDR R1, SB, 58H [data]
0290v(00090001): SUB R0, R0, R1
0291w(ED000024): BGE 36 [02B6H]
T := FillerTrack;x
0292x .FIXUP D
0292x(8D000004): LDR SB, MT, MOD0 [Viewers]
0293x(80D0005C): LDR R0, SB, 5CH [data]
0294x(A0E0000C): STR R0, SP, CH
REPEAT T := T.nexty UNTILz X < T.Xa + T.Wb;c
0295y(80E0000C): LDR R0, SP, CH
0296y(D10D5A4C): BLEQ MT [trap=4, pos=3418]
0297z(80000000): LDR R0, R0, 0H
0298z(A0E0000C): STR R0, SP, CH
0299a(80E0000C): LDR R0, SP, CH
029Aa(D10D684C): BLEQ MT [trap=4, pos=3432]
029Bb(81E0000C): LDR R1, SP, CH
029Cb(D10D6E4C): BLEQ MT [trap=4, pos=3438]
029Dc(80000008): LDR R0, R0, 8H
029Ec(81100010): LDR R1, R1, 10H
029Fc(00080001): ADD R0, R0, R1
02A0c(81E00004): LDR R1, SP, 4H
02A1c(01190000): SUB R1, R1, R0
02A2c(EDFFFFF2): BGE -14 [0295H]
V := T.dscd;e
02A3d(80E0000C): LDR R0, SP, CH
02A4d(D10D804C): BLEQ MT [trap=4, pos=3456]
02A5e(80000004): LDR R0, R0, 4H
02A6e(A0E00010): STR R0, SP, 10H
REPEAT V := V.nextf UNTILg Y < V.Yh + V.Hi
02A7f(80E00010): LDR R0, SP, 10H
02A8f(D10D9A4C): BLEQ MT [trap=4, pos=3482]
02A9g(80000000): LDR R0, R0, 0H
02AAg(A0E00010): STR R0, SP, 10H
02ABh(80E00010): LDR R0, SP, 10H
02ACh(D10DA84C): BLEQ MT [trap=4, pos=3496]
02ADi(81E00010): LDR R1, SP, 10H
02AEi(D10DAE4C): BLEQ MT [trap=4, pos=3502]
ELSEj Vk := NIL
02AFj(8000000C): LDR R0, R0, CH
02B0j(81100014): LDR R1, R1, 14H
02B1j(00080001): ADD R0, R0, R1
02B2j(81E00008): LDR R1, SP, 8H
02B3j(01190000): SUB R1, R1, R0
02B4j(EDFFFFF2): BGE -14 [02A7H]
02B5k(E7000002): B 2 [02B8H]
ENDl ;
02B6l(40000000): MOV R0, R0, 0H
02B7l(A0E00010): STR R0, SP, 10H
RETURN V(Viewer)m
02B8m(80E00010): LDR R0, SP, 10H
02B9m(E1000005): BEQ 5 [02BFH]
02BAm(810FFFF8): LDR R1, R0, FFFFFFF8H
02BBm(81100004): LDR R1, R1, 4H
02BCm .FIXUP D
02BCm(8D00002A): LDR SB, MT, MOD0 [Viewers]
02BDm(42D80000): ADD R2, SB, 0H [data]
02BEm(02290001): SUB R2, R2, R1
02BFm(D90DDF2C): BLNE MT [trap=2, pos=3551]
ENDn This;
02C0n(8FE00000): LDR LNK, SP, 0H
02C1n(4EE80014): ADD SP, SP, 14H
02C2n(C700000F): B LNK
PROCEDURE Next* (V: Viewer): Viewer;
BEGINo RETURN V.nextp(Viewer)q
02C3o .PROC 10
02C3o(4EE90008): SUB SP, SP, 8H
02C4o(AFE00000): STR LNK, SP, 0H
02C5o(A0E00004): STR R0, SP, 4H
02C6p(80E00004): LDR R0, SP, 4H
02C7p(D10E294C): BLEQ MT [trap=4, pos=3625]
02C8q(80000000): LDR R0, R0, 0H
02C9q(E1000005): BEQ 5 [02CFH]
02CAq(810FFFF8): LDR R1, R0, FFFFFFF8H
02CBq(81100004): LDR R1, R1, 4H
02CCq .FIXUP D
02CCq(8D000010): LDR SB, MT, MOD0 [Viewers]
02CDq(42D80000): ADD R2, SB, 0H [data]
02CEq(02290001): SUB R2, R2, R1
02CFq(D90E312C): BLNE MT [trap=2, pos=3633]
ENDr Next;
02D0r(8FE00000): LDR LNK, SP, 0H
02D1r(4EE80008): ADD SP, SP, 8H
02D2r(C700000F): B LNK
PROCEDURE Locate* (X, H: INTEGER; VAR fil, bot, alt, max: Display.Frame);
VAR T, V: Display.Frame;
BEGINs
02D3s .PROC 11
02D3s(4EE90024): SUB SP, SP, 24H
02D4s(AFE00000): STR LNK, SP, 0H
02D5s(A0E00004): STR R0, SP, 4H
02D6s(A1E00008): STR R1, SP, 8H
02D7s(A2E0000C): STR R2, SP, CH
02D8s(A3E00010): STR R3, SP, 10H
02D9s(A4E00014): STR R4, SP, 14H
02DAs(A5E00018): STR R5, SP, 18H
IF X < inf THENt
02DBt(80E00004): LDR R0, SP, 4H
02DCt(4009FFFF): SUB R0, R0, FFFFFFFFH
02DDt(ED000071): BGE 113 [034FH]
T := FillerTrack;u
02DEu .FIXUP D
02DEu(8D000012): LDR SB, MT, MOD0 [Viewers]
02DFu(80D0005C): LDR R0, SB, 5CH [data]
02E0u(A0E0001C): STR R0, SP, 1CH
REPEAT T := T.nextv UNTILw X < T.Xx + T.Wy;z
02E1v(80E0001C): LDR R0, SP, 1CH
02E2v(D10EF44C): BLEQ MT [trap=4, pos=3828]
02E3w(80000000): LDR R0, R0, 0H
02E4w(A0E0001C): STR R0, SP, 1CH
02E5x(80E0001C): LDR R0, SP, 1CH
02E6x(D10F024C): BLEQ MT [trap=4, pos=3842]
02E7y(81E0001C): LDR R1, SP, 1CH
02E8y(D10F084C): BLEQ MT [trap=4, pos=3848]
02E9z(80000008): LDR R0, R0, 8H
02EAz(81100010): LDR R1, R1, 10H
02EBz(00080001): ADD R0, R0, R1
02ECz(81E00004): LDR R1, SP, 4H
02EDz(01190000): SUB R1, R1, R0
02EEz(EDFFFFF2): BGE -14 [02E1H]
fil := T.dsca;b bot := fil.nextc;d
02EFa(80E0001C): LDR R0, SP, 1CH
02F0a(D10F1C4C): BLEQ MT [trap=4, pos=3868]
02F1b(80000004): LDR R0, R0, 4H
02F2b(81E0000C): LDR R1, SP, CH
02F3b(A0100000): STR R0, R1, 0H
02F4c(80E0000C): LDR R0, SP, CH
02F5c(80000000): LDR R0, R0, 0H
02F6c(D10F2D4C): BLEQ MT [trap=4, pos=3885]
02F7d(80000000): LDR R0, R0, 0H
02F8d(81E00010): LDR R1, SP, 10H
02F9d(A0100000): STR R0, R1, 0H
IF bot.nexte # fil THENf
02FAe(80E00010): LDR R0, SP, 10H
02FBe(80000000): LDR R0, R0, 0H
02FCe(D10F404C): BLEQ MT [trap=4, pos=3904]
02FDf(80000000): LDR R0, R0, 0H
02FEf(81E0000C): LDR R1, SP, CH
02FFf(81100000): LDR R1, R1, 0H
0300f(00090001): SUB R0, R0, R1
0301f(E1000029): BEQ 41 [032BH]
alt := bot.nextg;h V := alt.nexti;j
0302g(80E00010): LDR R0, SP, 10H
0303g(80000000): LDR R0, R0, 0H
0304g(D10F634C): BLEQ MT [trap=4, pos=3939]
0305h(80000000): LDR R0, R0, 0H
0306h(81E00014): LDR R1, SP, 14H
0307h(A0100000): STR R0, R1, 0H
0308i(80E00014): LDR R0, SP, 14H
0309i(80000000): LDR R0, R0, 0H
030Ai(D10F724C): BLEQ MT [trap=4, pos=3954]
030Bj(80000000): LDR R0, R0, 0H
030Cj(A0E00020): STR R0, SP, 20H
WHILE (V # fil)k & (lalt.Hm < H)n DOo
030Dk(80E00020): LDR R0, SP, 20H
030Ek(81E0000C): LDR R1, SP, CH
030Fk(81100000): LDR R1, R1, 0H
0310k(00090001): SUB R0, R0, R1
0311l(E1000018): BEQ 24 [032AH]
0312m(80E00014): LDR R0, SP, 14H
0313m(80000000): LDR R0, R0, 0H
0314m(D10F944C): BLEQ MT [trap=4, pos=3988]
0315n(80000014): LDR R0, R0, 14H
0316n(81E00008): LDR R1, SP, 8H
0317n(00090001): SUB R0, R0, R1
0318o(ED000011): BGE 17 [032AH]
IF V.Hp > alt.Hq THENr alt := V ENDs;
0319p(80E00020): LDR R0, SP, 20H
031Ap(D10FAD4C): BLEQ MT [trap=4, pos=4013]
031Bq(81E00014): LDR R1, SP, 14H
031Cq(81100000): LDR R1, R1, 0H
031Dq(D10FB54C): BLEQ MT [trap=4, pos=4021]
031Er(80000014): LDR R0, R0, 14H
031Fr(81100014): LDR R1, R1, 14H
0320r(00090001): SUB R0, R0, R1
0321r(E6000003): BLE 3 [0325H]
0322s(80E00020): LDR R0, SP, 20H
0323s(81E00014): LDR R1, SP, 14H
0324s(A0100000): STR R0, R1, 0H
V := V.nextt
0325t(80E00020): LDR R0, SP, 20H
0326t(D10FDE4C): BLEQ MT [trap=4, pos=4062]
ENDu
0327u(80000000): LDR R0, R0, 0H
0328u(A0E00020): STR R0, SP, 20H
0329u(E7FFFFE3): B -29 [030DH]
ELSE altv := bot
032Av(E7000004): B 4 [032FH]
ENDw;
032Bw(80E00010): LDR R0, SP, 10H
032Cw(80000000): LDR R0, R0, 0H
032Dw(81E00014): LDR R1, SP, 14H
032Ew(A0100000): STR R0, R1, 0H
max := T.dscx;y V := max.nextz;a
032Fx(80E0001C): LDR R0, SP, 1CH
0330x(D1101E4C): BLEQ MT [trap=4, pos=4126]
0331y(80000004): LDR R0, R0, 4H
0332y(81E00018): LDR R1, SP, 18H
0333y(A0100000): STR R0, R1, 0H
0334z(80E00018): LDR R0, SP, 18H
0335z(80000000): LDR R0, R0, 0H
0336z(D1102D4C): BLEQ MT [trap=4, pos=4141]
0337a(80000000): LDR R0, R0, 0H
0338a(A0E00020): STR R0, SP, 20H
WHILE V # fil DOb
0339b(80E00020): LDR R0, SP, 20H
033Ab(81E0000C): LDR R1, SP, CH
033Bb(81100000): LDR R1, R1, 0H
033Cb(00090001): SUB R0, R0, R1
033Db(E1000011): BEQ 17 [034FH]
IF V.Hc > max.Hd THENe max := V ENDf;
033Ec(80E00020): LDR R0, SP, 20H
033Fc(D110544C): BLEQ MT [trap=4, pos=4180]
0340d(81E00018): LDR R1, SP, 18H
0341d(81100000): LDR R1, R1, 0H
0342d(D1105C4C): BLEQ MT [trap=4, pos=4188]
0343e(80000014): LDR R0, R0, 14H
0344e(81100014): LDR R1, R1, 14H
0345e(00090001): SUB R0, R0, R1
0346e(E6000003): BLE 3 [034AH]
0347f(80E00020): LDR R0, SP, 20H
0348f(81E00018): LDR R1, SP, 18H
0349f(A0100000): STR R0, R1, 0H
V := V.nextg
034Ag(80E00020): LDR R0, SP, 20H
034Bg(D110834C): BLEQ MT [trap=4, pos=4227]
ENDh
034Ch(80000000): LDR R0, R0, 0H
034Dh(A0E00020): STR R0, SP, 20H
034Eh(E7FFFFEA): B -22 [0339H]
END
ENDi Locate;
034Fi(8FE00000): LDR LNK, SP, 0H
0350i(4EE80024): ADD SP, SP, 24H
0351i(C700000F): B LNK
PROCEDURE InitTrack* (W, H: INTEGER; Filler: Viewer);
VAR S: Display.Frame; T: Track;
BEGINj
0352j .PROC 12
0352j(4EE90018): SUB SP, SP, 18H
0353j(AFE00000): STR LNK, SP, 0H
0354j(A0E00004): STR R0, SP, 4H
0355j(A1E00008): STR R1, SP, 8H
0356j(A2E0000C): STR R2, SP, CH
IF Filler.statek = 0 THENl
0357k(80E0000C): LDR R0, SP, CH
0358k(D1111C4C): BLEQ MT [trap=4, pos=4380]
0359l(8000001C): LDR R0, R0, 1CH
035Al(E900006A): BNE 106 [03C5H]
Filler.Xm := curW;n Filler.Wo := W;p Filler.Yq := 0;r Filler.Hs := H;t
035Bm(80E0000C): LDR R0, SP, CH
035Cm(D111344C): BLEQ MT [trap=4, pos=4404]
035Dn .FIXUP D
035Dn(8D00007F): LDR SB, MT, MOD0 [Viewers]
035En(81D00050): LDR R1, SB, 50H [data]
035Fn(A1000008): STR R1, R0, 8H
0360o(80E0000C): LDR R0, SP, CH
0361o(D111464C): BLEQ MT [trap=4, pos=4422]
0362p(81E00004): LDR R1, SP, 4H
0363p(A1000010): STR R1, R0, 10H
0364q(80E0000C): LDR R0, SP, CH
0365q(D111554C): BLEQ MT [trap=4, pos=4437]
0366r(41000000): MOV R1, R0, 0H
0367r(A100000C): STR R1, R0, CH
0368s(80E0000C): LDR R0, SP, CH
0369s(D111644C): BLEQ MT [trap=4, pos=4452]
036At(81E00008): LDR R1, SP, 8H
036Bt(A1000014): STR R1, R0, 14H
Filler.stateu := 1;v Filler.nextw := Filler;x
036Cu(80E0000C): LDR R0, SP, CH
036Du(D1117D4C): BLEQ MT [trap=4, pos=4477]
036Ev(41000001): MOV R1, R0, 1H
036Fv(A100001C): STR R1, R0, 1CH
0370w(80E0000C): LDR R0, SP, CH
0371w(D1118F4C): BLEQ MT [trap=4, pos=4495]
0372x(81E0000C): LDR R1, SP, CH
0373x(A1000000): STR R1, R0, 0H
NEW(T);y T.Xz := curW;a T.Wb := W;c T.Yd := 0;e T.Hf := H;g T.dsch := Filler;i T.underj := NIL;k
0374y(40E80014): ADD R0, SP, 14H
0375y(41D80030): ADD R1, SB, 30H
0376y(D711A80C): BL MT [trap=0, pos=4520]
0377z(80E00014): LDR R0, SP, 14H
0378z(D111AC4C): BLEQ MT [trap=4, pos=4524]
0379a .FIXUP D
0379a(8D00001C): LDR SB, MT, MOD0 [Viewers]
037Aa(81D00050): LDR R1, SB, 50H [data]
037Ba(A1000008): STR R1, R0, 8H
037Cb(80E00014): LDR R0, SP, 14H
037Db(D111B94C): BLEQ MT [trap=4, pos=4537]
037Ec(81E00004): LDR R1, SP, 4H
037Fc(A1000010): STR R1, R0, 10H
0380d(80E00014): LDR R0, SP, 14H
0381d(D111C34C): BLEQ MT [trap=4, pos=4547]
0382e(41000000): MOV R1, R0, 0H
0383e(A100000C): STR R1, R0, CH
0384f(80E00014): LDR R0, SP, 14H
0385f(D111CD4C): BLEQ MT [trap=4, pos=4557]
0386g(81E00008): LDR R1, SP, 8H
0387g(A1000014): STR R1, R0, 14H
0388h(80E00014): LDR R0, SP, 14H
0389h(D111D94C): BLEQ MT [trap=4, pos=4569]
038Ai(81E0000C): LDR R1, SP, CH
038Bi(A1000004): STR R1, R0, 4H
038Cj(80E00014): LDR R0, SP, 14H
038Dj(D111EC4C): BLEQ MT [trap=4, pos=4588]
038Ek(41000000): MOV R1, R0, 0H
038Fk(A1000020): STR R1, R0, 20H
FillerViewer.Xl := curW + W;m FillerViewer.Wn := inf - FillerViewer.Xo;p
0390l(80D00060): LDR R0, SB, 60H
0391l(D112094C): BLEQ MT [trap=4, pos=4617]
0392m(81D00050): LDR R1, SB, 50H
0393m(82E00004): LDR R2, SP, 4H
0394m(01180002): ADD R1, R1, R2
0395m(A1000008): STR R1, R0, 8H
0396n(80D00060): LDR R0, SB, 60H
0397n(D112254C): BLEQ MT [trap=4, pos=4645]
0398o(81D00060): LDR R1, SB, 60H
0399o(D1123D4C): BLEQ MT [trap=4, pos=4669]
039Ap(4200FFFF): MOV R2, R0, FFFFFFFFH
039Bp(81100008): LDR R1, R1, 8H
039Cp(01290001): SUB R1, R2, R1
039Dp(A1000010): STR R1, R0, 10H
FillerTrack.Xq := FillerViewer.Xr;s FillerTrack.Wt := FillerViewer.Wu;v
039Eq(80D0005C): LDR R0, SB, 5CH
039Fq(D112524C): BLEQ MT [trap=4, pos=4690]
03A0r(81D00060): LDR R1, SB, 60H
03A1r(D112644C): BLEQ MT [trap=4, pos=4708]
03A2s(81100008): LDR R1, R1, 8H
03A3s(A1000008): STR R1, R0, 8H
03A4t(80D0005C): LDR R0, SB, 5CH
03A5t(D112734C): BLEQ MT [trap=4, pos=4723]
03A6u(81D00060): LDR R1, SB, 60H
03A7u(D112854C): BLEQ MT [trap=4, pos=4741]
03A8v(81100010): LDR R1, R1, 10H
03A9v(A1000010): STR R1, R0, 10H
S := FillerTrack;w
03AAw(80D0005C): LDR R0, SB, 5CH
03ABw(A0E00010): STR R0, SP, 10H
WHILE S.nextx # FillerTrack DOy S := S.nextz ENDa;
03ACx(80E00010): LDR R0, SP, 10H
03ADx(D112B14C): BLEQ MT [trap=4, pos=4785]
03AEy(80000000): LDR R0, R0, 0H
03AFy .FIXUP D
03AFy(8D000036): LDR SB, MT, MOD0 [Viewers]
03B0y(81D0005C): LDR R1, SB, 5CH [data]
03B1y(00090001): SUB R0, R0, R1
03B2y(E1000005): BEQ 5 [03B8H]
03B3z(80E00010): LDR R0, SP, 10H
03B4z(D112CE4C): BLEQ MT [trap=4, pos=4814]
03B5a(80000000): LDR R0, R0, 0H
03B6a(A0E00010): STR R0, SP, 10H
03B7a(E7FFFFF4): B -12 [03ACH]
S.nextb := T;c T.nextd := FillerTrack;e curW := curW + W
03B8b(80E00010): LDR R0, SP, 10H
03B9b(D112E04C): BLEQ MT [trap=4, pos=4832]
03BAc(81E00014): LDR R1, SP, 14H
03BBc(A1000000): STR R1, R0, 0H
03BCd(80E00014): LDR R0, SP, 14H
03BDd(D112ED4C): BLEQ MT [trap=4, pos=4845]
03BEe .FIXUP D
03BEe(8D00000F): LDR SB, MT, MOD0 [Viewers]
03BFe(81D0005C): LDR R1, SB, 5CH [data]
03C0e(A1000000): STR R1, R0, 0H
ENDf
03C1f(80D00050): LDR R0, SB, 50H
03C2f(81E00004): LDR R1, SP, 4H
03C3f(00080001): ADD R0, R0, R1
03C4f(A0D00050): STR R0, SB, 50H
ENDg InitTrack;
03C5g(8FE00000): LDR LNK, SP, 0H
03C6g(4EE80018): ADD SP, SP, 18H
03C7g(C700000F): B LNK
PROCEDURE OpenTrack* (X, W: INTEGER; Filler: Viewer);
VAR newT: Track; S, T, t, v: Display.Frame; M: ViewerMsg; v0: Viewer;
BEGINh
03C8h .PROC 13
03C8h(4EE90040): SUB SP, SP, 40H
03C9h(AFE00000): STR LNK, SP, 0H
03CAh(A0E00004): STR R0, SP, 4H
03CBh(A1E00008): STR R1, SP, 8H
03CCh(A2E0000C): STR R2, SP, CH
IF (X < inf)i & (jFiller.statek = 0)l THENm
03CDi(80E00004): LDR R0, SP, 4H
03CEi(4009FFFF): SUB R0, R0, FFFFFFFFH
03CFj(ED0000C2): BGE 194 [0492H]
03D0k(80E0000C): LDR R0, SP, CH
03D1k(D113D34C): BLEQ MT [trap=4, pos=5075]
03D2l(8000001C): LDR R0, R0, 1CH
03D3m(E90000BE): BNE 190 [0492H]
S := FillerTrack;n T := S.nexto;p
03D4n .FIXUP D
03D4n(8D000016): LDR SB, MT, MOD0 [Viewers]
03D5n(80D0005C): LDR R0, SB, 5CH [data]
03D6n(A0E00014): STR R0, SP, 14H
03D7o(80E00014): LDR R0, SP, 14H
03D8o(D114014C): BLEQ MT [trap=4, pos=5121]
03D9p(80000000): LDR R0, R0, 0H
03DAp(A0E00018): STR R0, SP, 18H
WHILE X >= T.Xq + T.Wr DOs S := T;t T := S.nextu ENDv;
03DBq(80E00018): LDR R0, SP, 18H
03DCq(D114174C): BLEQ MT [trap=4, pos=5143]
03DDr(81E00018): LDR R1, SP, 18H
03DEr(D1141D4C): BLEQ MT [trap=4, pos=5149]
03DFs(80000008): LDR R0, R0, 8H
03E0s(81100010): LDR R1, R1, 10H
03E1s(00080001): ADD R0, R0, R1
03E2s(81E00004): LDR R1, SP, 4H
03E3s(01190000): SUB R1, R1, R0
03E4s(E5000007): BLT 7 [03ECH]
03E5t(80E00018): LDR R0, SP, 18H
03E6t(A0E00014): STR R0, SP, 14H
03E7u(80E00014): LDR R0, SP, 14H
03E8u(D114344C): BLEQ MT [trap=4, pos=5172]
03E9v(80000000): LDR R0, R0, 0H
03EAv(A0E00018): STR R0, SP, 18H
03EBv(E7FFFFEF): B -17 [03DBH]
WHILE X + W >w T.Xx + T.Wy DOz T := T.nexta ENDb;
03ECw(80E00004): LDR R0, SP, 4H
03EDw(81E00008): LDR R1, SP, 8H
03EEw(00080001): ADD R0, R0, R1
03EFx(81E00018): LDR R1, SP, 18H
03F0x(D114514C): BLEQ MT [trap=4, pos=5201]
03F1y(82E00018): LDR R2, SP, 18H
03F2y(D114574C): BLEQ MT [trap=4, pos=5207]
03F3z(81100008): LDR R1, R1, 8H
03F4z(82200010): LDR R2, R2, 10H
03F5z(01180002): ADD R1, R1, R2
03F6z(00090001): SUB R0, R0, R1
03F7z(E6000005): BLE 5 [03FDH]
03F8a(80E00018): LDR R0, SP, 18H
03F9a(D114664C): BLEQ MT [trap=4, pos=5222]
03FAb(80000000): LDR R0, R0, 0H
03FBb(A0E00018): STR R0, SP, 18H
03FCb(E7FFFFEF): B -17 [03ECH]
M.id := suspend;c t := S;d
03FDc(40000002): MOV R0, R0, 2H
03FEc(A0E00024): STR R0, SP, 24H
03FFd(80E00014): LDR R0, SP, 14H
0400d(A0E0001C): STR R0, SP, 1CH
REPEAT t := t.nexte;f v := t.dscg;h
0401e(80E0001C): LDR R0, SP, 1CH
0402e(D114A34C): BLEQ MT [trap=4, pos=5283]
0403f(80000000): LDR R0, R0, 0H
0404f(A0E0001C): STR R0, SP, 1CH
0405g(80E0001C): LDR R0, SP, 1CH
0406g(D114AF4C): BLEQ MT [trap=4, pos=5295]
0407h(80000004): LDR R0, R0, 4H
0408h(A0E00020): STR R0, SP, 20H
REPEAT v := v.nexti;j M.state := -v(Viewer)k.state;l v.handlem(vn,o M)p;q v(Viewer)r.state := M.state
0409i(80E00020): LDR R0, SP, 20H
040Ai(D114CB4C): BLEQ MT [trap=4, pos=5323]
040Bj(80000000): LDR R0, R0, 0H
040Cj(A0E00020): STR R0, SP, 20H
040Dk(80E00020): LDR R0, SP, 20H
040Ek(E1000005): BEQ 5 [0414H]
040Fk(810FFFF8): LDR R1, R0, FFFFFFF8H
0410k(81100004): LDR R1, R1, 4H
0411k .FIXUP D
0411k(8D00003D): LDR SB, MT, MOD0 [Viewers]
0412k(42D80000): ADD R2, SB, 0H [data]
0413k(02290001): SUB R2, R2, R1
0414k(D914E22C): BLNE MT [trap=2, pos=5346]
0415l(8000001C): LDR R0, R0, 1CH
0416l(41000000): MOV R1, R0, 0H
0417l(00190000): SUB R0, R1, R0
0418l(A0E00038): STR R0, SP, 38H
0419m(80E00020): LDR R0, SP, 20H
041Am(D114F24C): BLEQ MT [trap=4, pos=5362]
041Bn(80000018): LDR R0, R0, 18H
041Cn(4EE90004): SUB SP, SP, 4H
041Dn(A0E00000): STR R0, SP, 0H
041Eo(80E00024): LDR R0, SP, 24H
041Fp(41E80028): ADD R1, SP, 28H
0420p(42D8001C): ADD R2, SB, 1CH
0421q(83E00000): LDR R3, SP, 0H
0422q(4EE80004): ADD SP, SP, 4H
0423q(D114F95C): BLEQ MT [trap=5, pos=5369]
0424q(D7000003): BL R3
0425r(80E00020): LDR R0, SP, 20H
0426r(E1000005): BEQ 5 [042CH]
0427r(810FFFF8): LDR R1, R0, FFFFFFF8H
0428r(81100004): LDR R1, R1, 4H
0429r .FIXUP D
0429r(8D000018): LDR SB, MT, MOD0 [Viewers]
042Ar(42D80000): ADD R2, SB, 0H [data]
042Br(02290001): SUB R2, R2, R1
042Cr(D915032C): BLNE MT [trap=2, pos=5379]
UNTILs v = t.dsct
042Ds(81E00038): LDR R1, SP, 38H
042Es(A100001C): STR R1, R0, 1CH
042Ft(80E0001C): LDR R0, SP, 1CH
0430t(D1152C4C): BLEQ MT [trap=4, pos=5420]
UNTILu t = T;v
0431u(81E00020): LDR R1, SP, 20H
0432u(80000004): LDR R0, R0, 4H
0433u(01190000): SUB R1, R1, R0
0434u(E9FFFFD4): BNE -44 [0409H]
0435v(80E0001C): LDR R0, SP, 1CH
0436v(81E00018): LDR R1, SP, 18H
0437v(00090001): SUB R0, R0, R1
0438v(E9FFFFC8): BNE -56 [0401H]
Filler.Xw := S.nextx.Xy;z Filler.Wa := T.Xb + T.Wc -d S.nexte.Xf;g Filler.Yh := 0;i Filler.Hj := DH;k
0439w(80E0000C): LDR R0, SP, CH
043Aw(D1154E4C): BLEQ MT [trap=4, pos=5454]
043Bx(81E00014): LDR R1, SP, 14H
043Cx(D115584C): BLEQ MT [trap=4, pos=5464]
043Dy(81100000): LDR R1, R1, 0H
043Ey(D1155A4C): BLEQ MT [trap=4, pos=5466]
043Fz(81100008): LDR R1, R1, 8H
0440z(A1000008): STR R1, R0, 8H
0441a(80E0000C): LDR R0, SP, CH
0442a(D115644C): BLEQ MT [trap=4, pos=5476]
0443b(81E00018): LDR R1, SP, 18H
0444b(D1156B4C): BLEQ MT [trap=4, pos=5483]
0445c(82E00018): LDR R2, SP, 18H
0446c(D115714C): BLEQ MT [trap=4, pos=5489]
0447d(81100008): LDR R1, R1, 8H
0448d(82200010): LDR R2, R2, 10H
0449d(01180002): ADD R1, R1, R2
044Ae(82E00014): LDR R2, SP, 14H
044Be(D1157A4C): BLEQ MT [trap=4, pos=5498]
044Cf(82200000): LDR R2, R2, 0H
044Df(D1157C4C): BLEQ MT [trap=4, pos=5500]
044Eg(82200008): LDR R2, R2, 8H
044Fg(01190002): SUB R1, R1, R2
0450g(A1000010): STR R1, R0, 10H
0451h(80E0000C): LDR R0, SP, CH
0452h(D115864C): BLEQ MT [trap=4, pos=5510]
0453i(41000000): MOV R1, R0, 0H
0454i(A100000C): STR R1, R0, CH
0455j(80E0000C): LDR R0, SP, CH
0456j(D115954C): BLEQ MT [trap=4, pos=5525]
0457k .FIXUP D
0457k(8D00002E): LDR SB, MT, MOD0 [Viewers]
0458k(81D00058): LDR R1, SB, 58H [data]
0459k(A1000014): STR R1, R0, 14H
Filler.statel := 1;m Filler.nextn := Filler;o
045Al(80E0000C): LDR R0, SP, CH
045Bl(D115AF4C): BLEQ MT [trap=4, pos=5551]
045Cm(41000001): MOV R1, R0, 1H
045Dm(A100001C): STR R1, R0, 1CH
045En(80E0000C): LDR R0, SP, CH
045Fn(D115C14C): BLEQ MT [trap=4, pos=5569]
0460o(81E0000C): LDR R1, SP, CH
0461o(A1000000): STR R1, R0, 0H
NEW(newT);p newT.Xq := Filler.Xr;s newT.Wt := Filler.Wu;v newT.Yw := 0;x newT.Hy := DH;z
0462p(40E80010): ADD R0, SP, 10H
0463p(41D80030): ADD R1, SB, 30H
0464p(D715DD0C): BL MT [trap=0, pos=5597]
0465q(80E00010): LDR R0, SP, 10H
0466q(D115E44C): BLEQ MT [trap=4, pos=5604]
0467r(81E0000C): LDR R1, SP, CH
0468r(D115F04C): BLEQ MT [trap=4, pos=5616]
0469s(81100008): LDR R1, R1, 8H
046As(A1000008): STR R1, R0, 8H
046Bt(80E00010): LDR R0, SP, 10H
046Ct(D115F84C): BLEQ MT [trap=4, pos=5624]
046Du(81E0000C): LDR R1, SP, CH
046Eu(D116044C): BLEQ MT [trap=4, pos=5636]
046Fv(81100010): LDR R1, R1, 10H
0470v(A1000010): STR R1, R0, 10H
0471w(80E00010): LDR R0, SP, 10H
0472w(D1160C4C): BLEQ MT [trap=4, pos=5644]
0473x(41000000): MOV R1, R0, 0H
0474x(A100000C): STR R1, R0, CH
0475y(80E00010): LDR R0, SP, 10H
0476y(D116194C): BLEQ MT [trap=4, pos=5657]
0477z .FIXUP D
0477z(8D000020): LDR SB, MT, MOD0 [Viewers]
0478z(81D00058): LDR R1, SB, 58H [data]
0479z(A1000014): STR R1, R0, 14H
newT.dsca := Filler;b newT.underc := S.nextd;e S.nextf := newT;g
047Aa(80E00010): LDR R0, SP, 10H
047Ba(D1162F4C): BLEQ MT [trap=4, pos=5679]
047Cb(81E0000C): LDR R1, SP, CH
047Db(A1000004): STR R1, R0, 4H
047Ec(80E00010): LDR R0, SP, 10H
047Fc(D116454C): BLEQ MT [trap=4, pos=5701]
0480d(81E00014): LDR R1, SP, 14H
0481d(D1164F4C): BLEQ MT [trap=4, pos=5711]
0482e(81100000): LDR R1, R1, 0H
0483e(A1000020): STR R1, R0, 20H
0484f(80E00014): LDR R0, SP, 14H
0485f(D116574C): BLEQ MT [trap=4, pos=5719]
0486g(81E00010): LDR R1, SP, 10H
0487g(A1000000): STR R1, R0, 0H
newT.nexth := T.nexti;j T.nextk := NIL
0488h(80E00010): LDR R0, SP, 10H
0489h(D116704C): BLEQ MT [trap=4, pos=5744]
048Ai(81E00018): LDR R1, SP, 18H
048Bi(D1167A4C): BLEQ MT [trap=4, pos=5754]
048Cj(81100000): LDR R1, R1, 0H
048Dj(A1000000): STR R1, R0, 0H
048Ek(80E00018): LDR R0, SP, 18H
048Fk(D116824C): BLEQ MT [trap=4, pos=5762]
ENDl
0490l(41000000): MOV R1, R0, 0H
0491l(A1000000): STR R1, R0, 0H
ENDm OpenTrack;
0492m(8FE00000): LDR LNK, SP, 0H
0493m(4EE80040): ADD SP, SP, 40H
0494m(C700000F): B LNK
PROCEDURE CloseTrack* (X: INTEGER);
VAR T, V: Display.Frame; M: ViewerMsg;
BEGINn
0495n .PROC 14
0495n(4EE90028): SUB SP, SP, 28H
0496n(AFE00000): STR LNK, SP, 0H
0497n(A0E00004): STR R0, SP, 4H
IF X < inf THENo
0498o(80E00004): LDR R0, SP, 4H
0499o(4009FFFF): SUB R0, R0, FFFFFFFFH
049Ao(ED000046): BGE 70 [04E1H]
T := FillerTrack;p
049Bp .FIXUP D
049Bp(8D000024): LDR SB, MT, MOD0 [Viewers]
049Cp(80D0005C): LDR R0, SB, 5CH [data]
049Dp(A0E00008): STR R0, SP, 8H
REPEAT T := T.nextq UNTILr X < T.Xs + T.Wt;u
049Eq(80E00008): LDR R0, SP, 8H
049Fq(D117414C): BLEQ MT [trap=4, pos=5953]
04A0r(80000000): LDR R0, R0, 0H
04A1r(A0E00008): STR R0, SP, 8H
04A2s(80E00008): LDR R0, SP, 8H
04A3s(D1174F4C): BLEQ MT [trap=4, pos=5967]
04A4t(81E00008): LDR R1, SP, 8H
04A5t(D117554C): BLEQ MT [trap=4, pos=5973]
04A6u(80000008): LDR R0, R0, 8H
04A7u(81100010): LDR R1, R1, 10H
04A8u(00080001): ADD R0, R0, R1
04A9u(81E00004): LDR R1, SP, 4H
04AAu(01190000): SUB R1, R1, R0
04ABu(EDFFFFF2): BGE -14 [049EH]
IF T(Track)v.under # NIL THENw
04ACv(80E00008): LDR R0, SP, 8H
04ADv(E1000005): BEQ 5 [04B3H]
04AEv(810FFFF8): LDR R1, R0, FFFFFFF8H
04AFv(81100008): LDR R1, R1, 8H
04B0v .FIXUP D
04B0v(8D000015): LDR SB, MT, MOD0 [Viewers]
04B1v(42D80030): ADD R2, SB, 30H [data]
04B2v(02290001): SUB R2, R2, R1
04B3v(D917682C): BLNE MT [trap=2, pos=5992]
04B4w(80000020): LDR R0, R0, 20H
04B5w(E100002B): BEQ 43 [04E1H]
M.id := suspend;x M.state := 0;y V := T.dscz;a
04B6x(40000002): MOV R0, R0, 2H
04B7x(A0E00010): STR R0, SP, 10H
04B8y(40000000): MOV R0, R0, 0H
04B9y(A0E00024): STR R0, SP, 24H
04BAz(80E00008): LDR R0, SP, 8H
04BBz(D117AB4C): BLEQ MT [trap=4, pos=6059]
04BCa(80000004): LDR R0, R0, 4H
04BDa(A0E0000C): STR R0, SP, CH
REPEAT V := V.nextb;c V.handled(Ve,f M)g;h V(Viewer)i.state := 0 UNTILj V = T.dsck;l
04BEb(80E0000C): LDR R0, SP, CH
04BFb(D117C74C): BLEQ MT [trap=4, pos=6087]
04C0c(80000000): LDR R0, R0, 0H
04C1c(A0E0000C): STR R0, SP, CH
04C2d(80E0000C): LDR R0, SP, CH
04C3d(D117D14C): BLEQ MT [trap=4, pos=6097]
04C4e(80000018): LDR R0, R0, 18H
04C5e(4EE90004): SUB SP, SP, 4H
04C6e(A0E00000): STR R0, SP, 0H
04C7f(80E00010): LDR R0, SP, 10H
04C8g(41E80014): ADD R1, SP, 14H
04C9g .FIXUP D
04C9g(8D000019): LDR SB, MT, MOD0 [Viewers]
04CAg(42D8001C): ADD R2, SB, 1CH [data]
04CBh(83E00000): LDR R3, SP, 0H
04CCh(4EE80004): ADD SP, SP, 4H
04CDh(D117D85C): BLEQ MT [trap=5, pos=6104]
04CEh(D7000003): BL R3
04CFi(80E0000C): LDR R0, SP, CH
04D0i(E1000005): BEQ 5 [04D6H]
04D1i(810FFFF8): LDR R1, R0, FFFFFFF8H
04D2i(81100004): LDR R1, R1, 4H
04D3i .FIXUP D
04D3i(8D00000A): LDR SB, MT, MOD0 [Viewers]
04D4i(42D80000): ADD R2, SB, 0H [data]
04D5i(02290001): SUB R2, R2, R1
04D6i(D917E22C): BLNE MT [trap=2, pos=6114]
04D7j(41000000): MOV R1, R0, 0H
04D8j(A100001C): STR R1, R0, 1CH
04D9k(80E00008): LDR R0, SP, 8H
04DAk(D117FD4C): BLEQ MT [trap=4, pos=6141]
04DBl(81E0000C): LDR R1, SP, CH
04DCl(80000004): LDR R0, R0, 4H
04DDl(01190000): SUB R1, R1, R0
04DEl(E9FFFFDF): BNE -33 [04BEH]
RestoreTrack(T)m
04DFm(80E00008): LDR R0, SP, 8H
ENDn
04E0n(F7FFFC7B): BL -901 [015CH]
END
ENDo CloseTrack;
04E1o(8FE00000): LDR LNK, SP, 0H
04E2o(4EE80028): ADD SP, SP, 28H
04E3o(C700000F): B LNK
PROCEDURE Broadcast* (VAR M: Display.FrameMsg);
VAR T, V: Display.Frame;
BEGINp T := FillerTrack.nextq;r
04E4p .PROC 15
04E4p(4EE90014): SUB SP, SP, 14H
04E5p(AFE00000): STR LNK, SP, 0H
04E6p(A0E00004): STR R0, SP, 4H
04E7p(A1E00008): STR R1, SP, 8H
04E8q .FIXUP D
04E8q(8D000015): LDR SB, MT, MOD0 [Viewers]
04E9q(80D0005C): LDR R0, SB, 5CH [data]
04EAq(D118A84C): BLEQ MT [trap=4, pos=6312]
04EBr(80000000): LDR R0, R0, 0H
04ECr(A0E0000C): STR R0, SP, CH
WHILE T # FillerTrack DOs
04EDs(80E0000C): LDR R0, SP, CH
04EEs .FIXUP D
04EEs(8D000006): LDR SB, MT, MOD0 [Viewers]
04EFs(81D0005C): LDR R1, SB, 5CH [data]
04F0s(00090001): SUB R0, R0, R1
04F1s(E100001F): BEQ 31 [0511H]
V := T.dsct;u
04F2t(80E0000C): LDR R0, SP, CH
04F3t(D118D74C): BLEQ MT [trap=4, pos=6359]
04F4u(80000004): LDR R0, R0, 4H
04F5u(A0E00010): STR R0, SP, 10H
REPEAT V := V.nextv;w V.handlex(Vy,z M)a UNTILb V = T.dscc;d
04F6v(80E00010): LDR R0, SP, 10H
04F7v(D118F24C): BLEQ MT [trap=4, pos=6386]
04F8w(80000000): LDR R0, R0, 0H
04F9w(A0E00010): STR R0, SP, 10H
04FAx(80E00010): LDR R0, SP, 10H
04FBx(D118FC4C): BLEQ MT [trap=4, pos=6396]
04FCy(80000018): LDR R0, R0, 18H
04FDy(4EE90004): SUB SP, SP, 4H
04FEy(A0E00000): STR R0, SP, 0H
04FFz(80E00014): LDR R0, SP, 14H
0500a(81E00008): LDR R1, SP, 8H
0501a(82E0000C): LDR R2, SP, CH
0502b(83E00000): LDR R3, SP, 0H
0503b(4EE80004): ADD SP, SP, 4H
0504b(D119085C): BLEQ MT [trap=5, pos=6408]
0505b(D7000003): BL R3
0506c(80E0000C): LDR R0, SP, CH
0507c(D119124C): BLEQ MT [trap=4, pos=6418]
0508d(81E00010): LDR R1, SP, 10H
0509d(80000004): LDR R0, R0, 4H
050Ad(01190000): SUB R1, R1, R0
050Bd(E9FFFFEA): BNE -22 [04F6H]
T := T.nexte
050Ce(80E0000C): LDR R0, SP, CH
050De(D119254C): BLEQ MT [trap=4, pos=6437]
ENDf
050Ef(80000000): LDR R0, R0, 0H
050Ff(A0E0000C): STR R0, SP, CH
0510f(E7FFFFDC): B -36 [04EDH]
ENDg Broadcast;
0511g(8FE00000): LDR LNK, SP, 0H
0512g(4EE80014): ADD SP, SP, 14H
0513g(C700000F): B LNK
BEGINh backup := NIL;i curW := 0;j minH := 1;k DH := Display.Height;l
0514h .PROC 0
0514h .ENTRYPOINT
0514h(4EE90004): SUB SP, SP, 4H
0515h(AFE00000): STR LNK, SP, 0H
0516i(40000000): MOV R0, R0, 0H
0517i .FIXUP D
0517i(8D000029): LDR SB, MT, MOD0 [Viewers]
0518i(A0D00064): STR R0, SB, 64H [data]
0519j(40000000): MOV R0, R0, 0H
051Aj(A0D00050): STR R0, SB, 50H
051Bk(40000001): MOV R0, R0, 1H
051Ck(A0D00054): STR R0, SB, 54H
051Dl .FIXUP D
051Dl(8D100006): LDR SB, MT, MOD1 [Display]
051El(80D00005): LDR R0, SB, VAR5
051Fl .FIXUP D
051Fl(8D000002): LDR SB, MT, MOD0 [Viewers]
0520l(A0D00058): STR R0, SB, 58H [data]
NEW(FillerViewer);m FillerViewer.Xn := 0;o FillerViewer.Wp := inf;q FillerViewer.Yr := 0;s FillerViewer.Ht := DH;u
0521m(40D80060): ADD R0, SB, 60H
0522m(41D80000): ADD R1, SB, 0H
0523m(D719950C): BL MT [trap=0, pos=6549]
0524n .FIXUP D
0524n(8D000005): LDR SB, MT, MOD0 [Viewers]
0525n(80D00060): LDR R0, SB, 60H [data]
0526n(D119A44C): BLEQ MT [trap=4, pos=6564]
0527o(41000000): MOV R1, R0, 0H
0528o(A1000008): STR R1, R0, 8H
0529p(80D00060): LDR R0, SB, 60H
052Ap(D119B94C): BLEQ MT [trap=4, pos=6585]
052Bq(4100FFFF): MOV R1, R0, FFFFFFFFH
052Cq(A1000010): STR R1, R0, 10H
052Dr(80D00060): LDR R0, SB, 60H
052Er(D119D04C): BLEQ MT [trap=4, pos=6608]
052Fs(41000000): MOV R1, R0, 0H
0530s(A100000C): STR R1, R0, CH
0531t(80D00060): LDR R0, SB, 60H
0532t(D119E54C): BLEQ MT [trap=4, pos=6629]
0533u(81D00058): LDR R1, SB, 58H
0534u(A1000014): STR R1, R0, 14H
FillerViewer.nextv := FillerViewer;w
0535v(80D00060): LDR R0, SB, 60H
0536v(D11A004C): BLEQ MT [trap=4, pos=6656]
0537w(81D00060): LDR R1, SB, 60H
0538w(A1000000): STR R1, R0, 0H
NEW(FillerTrack);x
0539x(40D8005C): ADD R0, SB, 5CH
053Ax(41D80030): ADD R1, SB, 30H
053Bx(D71A250C): BL MT [trap=0, pos=6693]
FillerTrack.Xy := 0;z FillerTrack.Wa := inf;b FillerTrack.Yc := 0;d FillerTrack.He := DH;f
053Cy .FIXUP D
053Cy(8D000018): LDR SB, MT, MOD0 [Viewers]
053Dy(80D0005C): LDR R0, SB, 5CH [data]
053Ey(D11A354C): BLEQ MT [trap=4, pos=6709]
053Fz(41000000): MOV R1, R0, 0H
0540z(A1000008): STR R1, R0, 8H
0541a(80D0005C): LDR R0, SB, 5CH
0542a(D11A494C): BLEQ MT [trap=4, pos=6729]
0543b(4100FFFF): MOV R1, R0, FFFFFFFFH
0544b(A1000010): STR R1, R0, 10H
0545c(80D0005C): LDR R0, SB, 5CH
0546c(D11A5F4C): BLEQ MT [trap=4, pos=6751]
0547d(41000000): MOV R1, R0, 0H
0548d(A100000C): STR R1, R0, CH
0549e(80D0005C): LDR R0, SB, 5CH
054Ae(D11A734C): BLEQ MT [trap=4, pos=6771]
054Bf(81D00058): LDR R1, SB, 58H
054Cf(A1000014): STR R1, R0, 14H
FillerTrack.dscg := FillerViewer;h FillerTrack.nexti := FillerTrack
054Dg(80D0005C): LDR R0, SB, 5CH
054Eg(D11A8C4C): BLEQ MT [trap=4, pos=6796]
054Fh(81D00060): LDR R1, SB, 60H
0550h(A1000004): STR R1, R0, 4H
0551i(80D0005C): LDR R0, SB, 5CH
0552i(D11AAE4C): BLEQ MT [trap=4, pos=6830]
ENDj Viewers.k
0553j(81D0005C): LDR R1, SB, 5CH
0554j(A1000000): STR R1, R0, 0H
0555k(8FE00000): LDR LNK, SP, 0H
0556k(4EE80004): ADD SP, SP, 4H
0557k(C700000F): B LNK