Edit

Used Exports

BUILTINS: CHAR DEC INC INTEGER LONGINT ORD
Display: Frame FrameDesc.H FrameDesc.W FrameDesc.X FrameDesc.Y FrameDesc.dsc FrameDesc.next
Files: File Rename Rider
Fonts: Font This
MenuViewers: New Viewer
Oberon: AllocateUserViewer FocusViewer GetSelection Log MarkedViewer Par Par.frame Par.pos Par.text Par.vwr PassFocus RemoveMarks
TextFrames: Frame FrameDesc.carloc FrameDesc.hasCar FrameDesc.text Location.pos NewMenu NewText Recall RemoveCaret RemoveSelection SetCaret Show Text menuH
Texts: Append Attributes BufDesc.len Buffer ChangeLooks Char Close Insert Int Name OpenReader OpenScanner OpenWriter Read Reader Scan Scanner Scanner.c Scanner.class Scanner.i Scanner.line Scanner.s Text TextDesc.len WriteInt WriteLn WriteString Writer Writer.buf
Viewers: Viewer

MODULE Edit; (*JG 2.11.90 / NW 28.11.2015*)
.MODULE Edit (KEY 58583D06, VERSION 1, SIZE 0000165C)
.IMPORT Files (KEY 73F5D686)
.IMPORT Fonts (KEY F4C9F557)
.IMPORT Texts (KEY 0B9E9984)
.IMPORT Display (KEY 4C08D3EA)
.IMPORT Viewers (KEY 25ABF199)
.IMPORT Oberon (KEY A89CCEE2)
.IMPORT MenuViewers (KEY 245ACC30)
.IMPORT TextFrames (KEY 650813D5)
.DATA 450H
.STRING 450H "System.Close System.Copy System.Grow Edit.Search Edit.Store"
.STRING 48CH "Edit.Store "
.POINTER_REFERENCES 0H 4H 24H 18H
.FIXUP T 0H
IMPORT Files, Fonts, Texts, Display, Viewers, Oberon, MenuViewers, TextFrames;
CONST CR = 0DX; maxlen = 32;
StandardMenu = "System.Close System.Copy System.Grow Edit.Search Edit.Store";
VAR W: Texts.Writer;
time: LONGINT;
M: INTEGER;
pat: ARRAY maxlen OF CHAR;
d: ARRAY 256 OF INTEGER;
PROCEDURE Max(i, j: LONGINT): LONGINT;
VAR m: LONGINT;
BEGINa IF i >= j THENb m := i ELSEc md := j ENDe ;
0000a(4EE90010): SUB SP, SP, 10H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
0003a(A1E00008): STR R1, SP, 8H
0004b(80E00004): LDR R0, SP, 4H
0005b(81E00008): LDR R1, SP, 8H
0006b(00090001): SUB R0, R0, R1
0007b(E5000003): BLT 3 [000BH]
0008c(80E00004): LDR R0, SP, 4H
0009c(A0E0000C): STR R0, SP, CH
000Ad(E7000002): B 2 [000DH]
000Be(80E00008): LDR R0, SP, 8H
000Ce(A0E0000C): STR R0, SP, CH
RETURN m
ENDf Max;
000Df(80E0000C): LDR R0, SP, CH
000Ef(8FE00000): LDR LNK, SP, 0H
000Ff(4EE80010): ADD SP, SP, 10H
0010f(C700000F): B LNK
PROCEDURE Open*;
VAR T: Texts.Text;
S: Texts.Scanner;
V: Viewers.Viewer;
X, Y: INTEGER;
beg, end, time: LONGINT;
BEGINg Texts.OpenScanner(S,h Oberon.Par.text,i Oberon.Par.pos)j;k Texts.Scan(S)l;m
0011g .PROC 1
0011g .COMMAND Open
0011g(4EE90094): SUB SP, SP, 94H
0012g(AFE00000): STR LNK, SP, 0H
0013h(40E80008): ADD R0, SP, 8H
0014h .FIXUP D
0014h(8D300014): LDR SB, MT, MOD3 [Texts]
0015h(41D80003): ADD R1, SB, VAR3
0016i .FIXUP D
0016i(8D600002): LDR SB, MT, MOD6 [Oberon]
0017i(42D8000E): ADD R2, SB, VAR14
0018i(82200008): LDR R2, R2, 8H
0019j .FIXUP D
0019j(8D600003): LDR SB, MT, MOD6 [Oberon]
001Aj(43D8000E): ADD R3, SB, VAR14
001Bj(8330000C): LDR R3, R3, CH
001Ck .FIXUP P
001Ck(F731501C): BL MOD3 [Texts] PROC21
001Dl(40E80008): ADD R0, SP, 8H
001El .FIXUP D
001El(8D300005): LDR SB, MT, MOD3 [Texts]
001Fl(41D80003): ADD R1, SB, VAR3
0020m .FIXUP P
0020m(F7316004): BL MOD3 [Texts] PROC22
IF (S.class = Texts.Char)n & (oS.c = "^")p OR (qS.line # 0)r THENs
0021n(80E00044): LDR R0, SP, 44H
0022n(40090006): SUB R0, R0, 6H
0023o(E9000003): BNE 3 [0027H]
0024p(90E00054): LDR R0, SP, 54H
0025p(4009005E): SUB R0, R0, 5EH
0026q(E1000002): BEQ 2 [0029H]
0027r(80E00040): LDR R0, SP, 40H
0028s(E1000012): BEQ 18 [003BH]
Oberon.GetSelection(T,t beg,u end,v time)w;x
0029t(40E80004): ADD R0, SP, 4H
002Au(41E80088): ADD R1, SP, 88H
002Bv(42E8008C): ADD R2, SP, 8CH
002Cw(43E80090): ADD R3, SP, 90H
002Dx .FIXUP P
002Dx(F762900D): BL MOD6 [Oberon] PROC41
IF time >= 0 THENy Texts.OpenScanner(S,z T,a beg)b;c Texts.Scan(S)d ENDe
002Ey(80E00090): LDR R0, SP, 90H
002Fy(40090000): SUB R0, R0, 0H
0030y(E500000A): BLT 10 [003BH]
0031z(40E80008): ADD R0, SP, 8H
0032z .FIXUP D
0032z(8D300014): LDR SB, MT, MOD3 [Texts]
0033z(41D80003): ADD R1, SB, VAR3
0034a(82E00004): LDR R2, SP, 4H
0035b(83E00088): LDR R3, SP, 88H
0036c .FIXUP P
0036c(F7315009): BL MOD3 [Texts] PROC21
0037d(40E80008): ADD R0, SP, 8H
0038d .FIXUP D
0038d(8D300006): LDR SB, MT, MOD3 [Texts]
0039d(41D80003): ADD R1, SB, VAR3
003Ae .FIXUP P
003Ae(F7316004): BL MOD3 [Texts] PROC22
END;
IF S.class = Texts.Name THENf
003Bf(80E00044): LDR R0, SP, 44H
003Cf(40090001): SUB R0, R0, 1H
003Df(E900001E): BNE 30 [005CH]
Oberon.AllocateUserViewer(Oberon.Par.vwr.gXh,i X,j Y)k;l
003Eg .FIXUP D
003Eg(8D600006): LDR SB, MT, MOD6 [Oberon]
003Fg(40D8000E): ADD R0, SB, VAR14
0040h(80000000): LDR R0, R0, 0H
0041h(D103D34C): BLEQ MT [trap=4, pos=979]
0042i(80000008): LDR R0, R0, 8H
0043j(41E80080): ADD R1, SP, 80H
0044k(42E80084): ADD R2, SP, 84H
0045l .FIXUP P
0045l(F762200B): BL MOD6 [Oberon] PROC34
V := MenuViewers.New(
TextFrames.NewMenu(S.s,m StandardMenu)n,o
0046m(40E8005C): ADD R0, SP, 5CH
0047m(41000020): MOV R1, R0, 20H
0048n .FIXUP D
0048n(8D00000A): LDR SB, MT, MOD0 [Edit]
0049n(42D80450): ADD R2, SB, 450H ["System.Close System.Copy System.Grow Edit.Search Edit.Store"]
004An(4300003C): MOV R3, R0, 3CH
004Bo .FIXUP P
004Bo(F782C006): BL MOD8 [TextFrames] PROC44
TextFrames.NewText(TextFramesp.Text(S.s)q,r 0)s,t
004Cp(4EE90004): SUB SP, SP, 4H
004Dp(A0E00000): STR R0, SP, 0H
004Eq(40E80060): ADD R0, SP, 60H
004Fq(41000020): MOV R1, R0, 20H
0050r .FIXUP P
0050r(F782B005): BL MOD8 [TextFrames] PROC43
0051s(41000000): MOV R1, R0, 0H
0052t .FIXUP P
0052t(F782D002): BL MOD8 [TextFrames] PROC45
0053t(01000000): MOV R1, R0, R0
0054t(80E00000): LDR R0, SP, 0H
0055t(4EE80004): ADD SP, SP, 4H
TextFrames.menuH,u X,v Y)w
0056u .FIXUP D
0056u(8D80000E): LDR SB, MT, MOD8 [TextFrames]
0057u(82D00005): LDR R2, SB, VAR5
0058v(83E00080): LDR R3, SP, 80H
0059w(84E00084): LDR R4, SP, 84H
ENDx
005Ax .FIXUP P
005Ax(F7704008): BL MOD7 [MenuViewers] PROC4
005Bx(A0E0007C): STR R0, SP, 7CH
ENDy Open;
005Cy(8FE00000): LDR LNK, SP, 0H
005Dy(4EE80094): ADD SP, SP, 94H
005Ey(C700000F): B LNK
PROCEDURE Store*;
VAR V: Viewers.Viewer;
Text: TextFrames.Frame;
T: Texts.Text;
S: Texts.Scanner;
f: Files.File; R: Files.Rider;
beg, end, time, len: LONGINT;
PROCEDUREz Backup (VAR name: ARRAY OF CHAR);
005Fz(E7000049): B 73 [00A9H]
VAR res, i: INTEGER; bak: ARRAY 32 OF CHAR;
BEGINa i := 0;b
0060a(4EE90034): SUB SP, SP, 34H
0061a(AFE00000): STR LNK, SP, 0H
0062a(A0E00004): STR R0, SP, 4H
0063a(A1E00008): STR R1, SP, 8H
0064b(40000000): MOV R0, R0, 0H
0065b(A0E00010): STR R0, SP, 10H
WHILE name[i]c # 0X DOd bak[i]e := name[i]f;g INC(i) ENDh;
0066c(80E00010): LDR R0, SP, 10H
0067c(81E00008): LDR R1, SP, 8H
0068c(01090001): SUB R1, R0, R1
0069c(DA05DC1C): BLCC MT [trap=1, pos=1500]
006Ac(81E00004): LDR R1, SP, 4H
006Bc(00180000): ADD R0, R1, R0
006Cd(90000000): LDR R0, R0, 0H
006Dd(E1000010): BEQ 16 [007EH]
006Ee(80E00010): LDR R0, SP, 10H
006Fe(41090020): SUB R1, R0, 20H
0070e(DA05EB1C): BLCC MT [trap=1, pos=1515]
0071e(00E80000): ADD R0, SP, R0
0072f(81E00010): LDR R1, SP, 10H
0073f(82E00008): LDR R2, SP, 8H
0074f(02190002): SUB R2, R1, R2
0075f(DA05F61C): BLCC MT [trap=1, pos=1526]
0076f(82E00004): LDR R2, SP, 4H
0077f(01280001): ADD R1, R2, R1
0078g(91100000): LDR R1, R1, 0H
0079g(B1000014): STR R1, R0, 14H
007Ah(80E00010): LDR R0, SP, 10H
007Bh(40080001): ADD R0, R0, 1H
007Ch(A0E00010): STR R0, SP, 10H
007Dh(E7FFFFE8): B -24 [0066H]
bak[i]i := ".";j bak[i+1]k := "B";l bak[i+2]m := "a";n bak[i+3]o := "k";p bak[i+4]q := 0X;r
007Ei(80E00010): LDR R0, SP, 10H
007Fi(41090020): SUB R1, R0, 20H
0080i(DA06101C): BLCC MT [trap=1, pos=1552]
0081i(00E80000): ADD R0, SP, R0
0082j(4100002E): MOV R1, R0, 2EH
0083j(B1000014): STR R1, R0, 14H
0084k(80E00010): LDR R0, SP, 10H
0085k(40080001): ADD R0, R0, 1H
0086k(41090020): SUB R1, R0, 20H
0087k(DA06211C): BLCC MT [trap=1, pos=1569]
0088k(00E80000): ADD R0, SP, R0
0089l(41000042): MOV R1, R0, 42H
008Al(B1000014): STR R1, R0, 14H
008Bm(80E00010): LDR R0, SP, 10H
008Cm(40080002): ADD R0, R0, 2H
008Dm(41090020): SUB R1, R0, 20H
008Em(DA06321C): BLCC MT [trap=1, pos=1586]
008Fm(00E80000): ADD R0, SP, R0
0090n(41000061): MOV R1, R0, 61H
0091n(B1000014): STR R1, R0, 14H
0092o(80E00010): LDR R0, SP, 10H
0093o(40080003): ADD R0, R0, 3H
0094o(41090020): SUB R1, R0, 20H
0095o(DA06431C): BLCC MT [trap=1, pos=1603]
0096o(00E80000): ADD R0, SP, R0
0097p(4100006B): MOV R1, R0, 6BH
0098p(B1000014): STR R1, R0, 14H
0099q(80E00010): LDR R0, SP, 10H
009Aq(40080004): ADD R0, R0, 4H
009Bq(41090020): SUB R1, R0, 20H
009Cq(DA06541C): BLCC MT [trap=1, pos=1620]
009Dq(00E80000): ADD R0, SP, R0
009Er(41000000): MOV R1, R0, 0H
009Fr(B1000014): STR R1, R0, 14H
Files.Rename(name,s bak,t res)u
00A0s(80E00004): LDR R0, SP, 4H
00A1s(81E00008): LDR R1, SP, 8H
00A2t(42E80014): ADD R2, SP, 14H
00A3t(43000020): MOV R3, R0, 20H
00A4u(44E8000C): ADD R4, SP, CH
ENDv Backup;
00A5v .FIXUP P
00A5v(F710804B): BL MOD1 [Files] PROC8
00A6v(8FE00000): LDR LNK, SP, 0H
00A7v(4EE80034): ADD SP, SP, 34H
00A8v(C700000F): B LNK
BEGINw Texts.WriteString(W,x "Edit.Store ")y;z
00A9w .PROC 2
00A9w .COMMAND Store
00A9w(4EE900B0): SUB SP, SP, B0H
00AAw(AFE00000): STR LNK, SP, 0H
00ABx .FIXUP D
00ABx(8D000055): LDR SB, MT, MOD0 [Edit]
00ACx(40D80000): ADD R0, SB, 0H [data]
00ADx .FIXUP D
00ADx(8D300002): LDR SB, MT, MOD3 [Texts]
00AEx(41D80005): ADD R1, SB, VAR5
00AFy .FIXUP D
00AFy(8D000002): LDR SB, MT, MOD0 [Edit]
00B0y(42D8048C): ADD R2, SB, 48CH ["Edit.Store "]
00B1y(4300000C): MOV R3, R0, CH
00B2z .FIXUP P
00B2z(F731D00D): BL MOD3 [Texts] PROC29
IF Oberon.Par.frame =a Oberon.Par.vwr.bdscc THENd
00B3a .FIXUP D
00B3a(8D600004): LDR SB, MT, MOD6 [Oberon]
00B4a(40D8000E): ADD R0, SB, VAR14
00B5b .FIXUP D
00B5b(8D600002): LDR SB, MT, MOD6 [Oberon]
00B6b(41D8000E): ADD R1, SB, VAR14
00B7c(81100000): LDR R1, R1, 0H
00B8c(D106E94C): BLEQ MT [trap=4, pos=1769]
00B9d(80000004): LDR R0, R0, 4H
00BAd(81100004): LDR R1, R1, 4H
00BBd(00090001): SUB R0, R0, R1
00BCd(E9000015): BNE 21 [00D2H]
V := Oberon.Par.vwr;e Texts.OpenScanner(S,f V.dscg(TextFrames.Frame)h.text,i 0)j
00BDe .FIXUP D
00BDe(8D600008): LDR SB, MT, MOD6 [Oberon]
00BEe(40D8000E): ADD R0, SB, VAR14
00BFe(80000000): LDR R0, R0, 0H
00C0e(A0E00004): STR R0, SP, 4H
00C1f(40E80010): ADD R0, SP, 10H
00C2f .FIXUP D
00C2f(8D300005): LDR SB, MT, MOD3 [Texts]
00C3f(41D80003): ADD R1, SB, VAR3
00C4g(82E00004): LDR R2, SP, 4H
00C5g(D107244C): BLEQ MT [trap=4, pos=1828]
00C6h(82200004): LDR R2, R2, 4H
00C7h(E1000005): BEQ 5 [00CDH]
00C8h(832FFFF8): LDR R3, R2, FFFFFFF8H
00C9h(83300004): LDR R3, R3, 4H
00CAh .FIXUP D
00CAh(8D800008): LDR SB, MT, MOD8 [TextFrames]
00CBh(44D80002): ADD R4, SB, VAR2
00CCh(04490003): SUB R4, R4, R3
00CDh(D907362C): BLNE MT [trap=2, pos=1846]
00CEi(8220001C): LDR R2, R2, 1CH
00CFj(43000000): MOV R3, R0, 0H
ELSEk Vl := Oberon.MarkedViewer();m Texts.OpenScanner(S,n Oberon.Par.text,o Oberon.Par.pos)p
00D0k .FIXUP P
00D0k(F731501E): BL MOD3 [Texts] PROC21
00D1l(E700000C): B 12 [00DEH]
00D2m .FIXUP P
00D2m(F7624002): BL MOD6 [Oberon] PROC36
00D3m(A0E00004): STR R0, SP, 4H
00D4n(40E80010): ADD R0, SP, 10H
00D5n .FIXUP D
00D5n(8D30000B): LDR SB, MT, MOD3 [Texts]
00D6n(41D80003): ADD R1, SB, VAR3
00D7o .FIXUP D
00D7o(8D600002): LDR SB, MT, MOD6 [Oberon]
00D8o(42D8000E): ADD R2, SB, VAR14
00D9o(82200008): LDR R2, R2, 8H
00DAp .FIXUP D
00DAp(8D600003): LDR SB, MT, MOD6 [Oberon]
00DBp(43D8000E): ADD R3, SB, VAR14
00DCp(8330000C): LDR R3, R3, CH
ENDq;
00DDq .FIXUP P
00DDq(F731500B): BL MOD3 [Texts] PROC21
Texts.Scan(S)r;s
00DEr(40E80010): ADD R0, SP, 10H
00DFr .FIXUP D
00DFr(8D300005): LDR SB, MT, MOD3 [Texts]
00E0r(41D80003): ADD R1, SB, VAR3
00E1s .FIXUP P
00E1s(F7316004): BL MOD3 [Texts] PROC22
IF (S.class = Texts.Char)t & (uS.c = "^")v THENw
00E2t(80E0004C): LDR R0, SP, 4CH
00E3t(40090006): SUB R0, R0, 6H
00E4u(E9000015): BNE 21 [00FAH]
00E5v(90E0005C): LDR R0, SP, 5CH
00E6v(4009005E): SUB R0, R0, 5EH
00E7w(E9000012): BNE 18 [00FAH]
Oberon.GetSelection(T,x beg,y end,z time)a;b
00E8x(40E8000C): ADD R0, SP, CH
00E9y(41E800A0): ADD R1, SP, A0H
00EAz(42E800A4): ADD R2, SP, A4H
00EBa(43E800A8): ADD R3, SP, A8H
00ECb .FIXUP P
00ECb(F762900B): BL MOD6 [Oberon] PROC41
IF time >= 0 THENc Texts.OpenScanner(S,d T,e beg)f;g Texts.Scan(S)h ENDi
00EDc(80E000A8): LDR R0, SP, A8H
00EEc(40090000): SUB R0, R0, 0H
00EFc(E500000A): BLT 10 [00FAH]
00F0d(40E80010): ADD R0, SP, 10H
00F1d .FIXUP D
00F1d(8D300012): LDR SB, MT, MOD3 [Texts]
00F2d(41D80003): ADD R1, SB, VAR3
00F3e(82E0000C): LDR R2, SP, CH
00F4f(83E000A0): LDR R3, SP, A0H
00F5g .FIXUP P
00F5g(F7315009): BL MOD3 [Texts] PROC21
00F6h(40E80010): ADD R0, SP, 10H
00F7h .FIXUP D
00F7h(8D300006): LDR SB, MT, MOD3 [Texts]
00F8h(41D80003): ADD R1, SB, VAR3
00F9i .FIXUP P
00F9i(F7316004): BL MOD3 [Texts] PROC22
END;
IF (S.class = Texts.Name)j & (kV.dscl # NIL)m & (nV.dsco.nextp IS TextFrames.Frame)q THENr
00FAj(80E0004C): LDR R0, SP, 4CH
00FBj(40090001): SUB R0, R0, 1H
00FCk(E9000042): BNE 66 [013FH]
00FDl(80E00004): LDR R0, SP, 4H
00FEl(D1088D4C): BLEQ MT [trap=4, pos=2189]
00FFm(80000004): LDR R0, R0, 4H
0100n(E100003E): BEQ 62 [013FH]
0101o(80E00004): LDR R0, SP, 4H
0102o(D1089D4C): BLEQ MT [trap=4, pos=2205]
0103p(80000004): LDR R0, R0, 4H
0104p(D108A24C): BLEQ MT [trap=4, pos=2210]
0105q(80000000): LDR R0, R0, 0H
0106q(E1000005): BEQ 5 [010CH]
0107q(810FFFF8): LDR R1, R0, FFFFFFF8H
0108q(81100004): LDR R1, R1, 4H
0109q .FIXUP D
0109q(8D800012): LDR SB, MT, MOD8 [TextFrames]
010Aq(42D80002): ADD R2, SB, VAR2
010Bq(02290001): SUB R2, R2, R1
010Cr(E9000032): BNE 50 [013FH]
Text := V.dscs.nextt(TextFrames.Frame)u;v
010Ds(80E00004): LDR R0, SP, 4H
010Es(D108D04C): BLEQ MT [trap=4, pos=2256]
010Ft(80000004): LDR R0, R0, 4H
0110t(D108D54C): BLEQ MT [trap=4, pos=2261]
0111u(80000000): LDR R0, R0, 0H
0112u(E1000005): BEQ 5 [0118H]
0113u(810FFFF8): LDR R1, R0, FFFFFFF8H
0114u(81100004): LDR R1, R1, 4H
0115u .FIXUP D
0115u(8D80000C): LDR SB, MT, MOD8 [TextFrames]
0116u(42D80002): ADD R2, SB, VAR2
0117u(02290001): SUB R2, R2, R1
0118u(D908E72C): BLNE MT [trap=2, pos=2279]
0119v(A0E00008): STR R0, SP, 8H
Texts.WriteString(W,w S.s)x;y Texts.WriteInt(W,z Text.texta.lenb,c 8)d;e
011Aw .FIXUP D
011Aw(8D000005): LDR SB, MT, MOD0 [Edit]
011Bw(40D80000): ADD R0, SB, 0H [data]
011Cw .FIXUP D
011Cw(8D300002): LDR SB, MT, MOD3 [Texts]
011Dw(41D80005): ADD R1, SB, VAR5
011Ex(42E80064): ADD R2, SP, 64H
011Fx(43000020): MOV R3, R0, 20H
0120y .FIXUP P
0120y(F731D027): BL MOD3 [Texts] PROC29
0121z .FIXUP D
0121z(8D000005): LDR SB, MT, MOD0 [Edit]
0122z(40D80000): ADD R0, SB, 0H [data]
0123z .FIXUP D
0123z(8D300002): LDR SB, MT, MOD3 [Texts]
0124z(41D80005): ADD R1, SB, VAR5
0125a(82E00008): LDR R2, SP, 8H
0126a(D109254C): BLEQ MT [trap=4, pos=2341]
0127b(8220001C): LDR R2, R2, 1CH
0128b(D109294C): BLEQ MT [trap=4, pos=2345]
0129c(82200000): LDR R2, R2, 0H
012Ad(43000008): MOV R3, R0, 8H
012Be .FIXUP P
012Be(F731E00B): BL MOD3 [Texts] PROC30
Texts.WriteLn(W)f;g Texts.Append(Oberon.Log,h W.buf)i;j
012Cf .FIXUP D
012Cf(8D000009): LDR SB, MT, MOD0 [Edit]
012Df(40D80000): ADD R0, SB, 0H [data]
012Ef .FIXUP D
012Ef(8D300002): LDR SB, MT, MOD3 [Texts]
012Ff(41D80005): ADD R1, SB, VAR5
0130g .FIXUP P
0130g(F731C005): BL MOD3 [Texts] PROC28
0131h .FIXUP D
0131h(8D600003): LDR SB, MT, MOD6 [Oberon]
0132h(80D0000D): LDR R0, SB, VAR13
0133i .FIXUP D
0133i(8D000002): LDR SB, MT, MOD0 [Edit]
0134i(81D00000): LDR R1, SB, 0H [data]
0135j .FIXUP P
0135j(F730E005): BL MOD3 [Texts] PROC14
Backup(S.s)k;l Texts.Close(Text.textm,n S.s)o
0136k(40E80064): ADD R0, SP, 64H
0137k(41000020): MOV R1, R0, 20H
0138l(F7FFFF27): BL -217 [0060H]
0139m(80E00008): LDR R0, SP, 8H
013Am(D109904C): BLEQ MT [trap=4, pos=2448]
013Bn(8000001C): LDR R0, R0, 1CH
013Co(41E80064): ADD R1, SP, 64H
013Do(42000020): MOV R2, R0, 20H
ENDp
013Ep .FIXUP P
013Ep(F7309009): BL MOD3 [Texts] PROC9
ENDq Store;
013Fq(8FE00000): LDR LNK, SP, 0H
0140q(4EE800B0): ADD SP, SP, B0H
0141q(C700000F): B LNK
PROCEDURE CopyLooks*;
VAR T: Texts.Text;
F: TextFrames.Frame;
v: Viewers.Viewer;
beg, end, time: LONGINT;
fnt: Fonts.Font; col, voff: INTEGER;
BEGINr Oberon.GetSelection(T,s beg,t end,u time)v;w
0142r .PROC 3
0142r .COMMAND CopyLooks
0142r(4EE90028): SUB SP, SP, 28H
0143r(AFE00000): STR LNK, SP, 0H
0144s(40E80004): ADD R0, SP, 4H
0145t(41E80010): ADD R1, SP, 10H
0146u(42E80014): ADD R2, SP, 14H
0147v(43E80018): ADD R3, SP, 18H
0148w .FIXUP P
0148w(F762900A): BL MOD6 [Oberon] PROC41
IF time >= 0 THENx
0149x(80E00018): LDR R0, SP, 18H
014Ax(40090000): SUB R0, R0, 0H
014Bx(E5000034): BLT 52 [0180H]
v := Oberon.FocusViewer;y
014Cy .FIXUP D
014Cy(8D600019): LDR SB, MT, MOD6 [Oberon]
014Dy(80D0000C): LDR R0, SB, VAR12
014Ey(A0E0000C): STR R0, SP, CH
IF (v # NIL)z & (av.dscb # NIL)c & (dv.dsce.nextf IS TextFrames.Frame)g THENh
014Fz(80E0000C): LDR R0, SP, CH
0150a(E100002F): BEQ 47 [0180H]
0151b(80E0000C): LDR R0, SP, CH
0152b(D10ADA4C): BLEQ MT [trap=4, pos=2778]
0153c(80000004): LDR R0, R0, 4H
0154d(E100002B): BEQ 43 [0180H]
0155e(80E0000C): LDR R0, SP, CH
0156e(D10AEA4C): BLEQ MT [trap=4, pos=2794]
0157f(80000004): LDR R0, R0, 4H
0158f(D10AEF4C): BLEQ MT [trap=4, pos=2799]
0159g(80000000): LDR R0, R0, 0H
015Ag(E1000005): BEQ 5 [0160H]
015Bg(810FFFF8): LDR R1, R0, FFFFFFF8H
015Cg(81100004): LDR R1, R1, 4H
015Dg .FIXUP D
015Dg(8D800011): LDR SB, MT, MOD8 [TextFrames]
015Eg(42D80002): ADD R2, SB, VAR2
015Fg(02290001): SUB R2, R2, R1
0160h(E900001F): BNE 31 [0180H]
F := v.dsci.nextj(TextFrames.Frame)k;l
0161i(80E0000C): LDR R0, SP, CH
0162i(D10B1C4C): BLEQ MT [trap=4, pos=2844]
0163j(80000004): LDR R0, R0, 4H
0164j(D10B214C): BLEQ MT [trap=4, pos=2849]
0165k(80000000): LDR R0, R0, 0H
0166k(E1000005): BEQ 5 [016CH]
0167k(810FFFF8): LDR R1, R0, FFFFFFF8H
0168k(81100004): LDR R1, R1, 4H
0169k .FIXUP D
0169k(8D80000C): LDR SB, MT, MOD8 [TextFrames]
016Ak(42D80002): ADD R2, SB, VAR2
016Bk(02290001): SUB R2, R2, R1
016Ck(D90B332C): BLNE MT [trap=2, pos=2867]
016Dl(A0E00008): STR R0, SP, 8H
Texts.Attributes(F.textm,n F.carloco.pos,p fnt,q col,r voff)s;t
016Em(80E00008): LDR R0, SP, 8H
016Fm(D10B544C): BLEQ MT [trap=4, pos=2900]
0170n(8000001C): LDR R0, R0, 1CH
0171o(81E00008): LDR R1, SP, 8H
0172o(D10B5E4C): BLEQ MT [trap=4, pos=2910]
0173p(8110004C): LDR R1, R1, 4CH
0174q(42E8001C): ADD R2, SP, 1CH
0175r(43E80020): ADD R3, SP, 20H
0176s(44E80024): ADD R4, SP, 24H
0177t .FIXUP P
0177t(F731102F): BL MOD3 [Texts] PROC17
Texts.ChangeLooks(T,u beg,v end,w {0,1,2},x fnt,y col,z voff)a
0178u(80E00004): LDR R0, SP, 4H
0179v(81E00010): LDR R1, SP, 10H
017Aw(82E00014): LDR R2, SP, 14H
017Bx(43000007): MOV R3, R0, 7H
017Cy(84E0001C): LDR R4, SP, 1CH
017Dz(85E00020): LDR R5, SP, 20H
017Ea(86E00024): LDR R6, SP, 24H
ENDb
017Fb .FIXUP P
017Fb(F7310008): BL MOD3 [Texts] PROC16
END
ENDc CopyLooks;
0180c(8FE00000): LDR LNK, SP, 0H
0181c(4EE80028): ADD SP, SP, 28H
0182c(C700000F): B LNK
PROCEDURE ChangeFont*;
VAR S: Texts.Scanner; T: Texts.Text; beg, end: LONGINT;
BEGINd
0183d .PROC 4
0183d .COMMAND ChangeFont
0183d(4EE90084): SUB SP, SP, 84H
0184d(AFE00000): STR LNK, SP, 0H
Oberon.GetSelection(T,e beg,f end,g time)h;i
0185e(40E80078): ADD R0, SP, 78H
0186f(41E8007C): ADD R1, SP, 7CH
0187g(42E80080): ADD R2, SP, 80H
0188h .FIXUP D
0188h(8D00001F): LDR SB, MT, MOD0 [Edit]
0189h(43D80028): ADD R3, SB, 28H [data]
018Ai .FIXUP P
018Ai(F762900B): BL MOD6 [Oberon] PROC41
IF time >= 0 THENj
018Bj .FIXUP D
018Bj(8D000003): LDR SB, MT, MOD0 [Edit]
018Cj(80D00028): LDR R0, SB, 28H [data]
018Dj(40090000): SUB R0, R0, 0H
018Ej(E5000026): BLT 38 [01B5H]
Texts.OpenScanner(S,k Oberon.Par.text,l Oberon.Par.pos)m;n Texts.Scan(S)o;p
018Fk(40E80004): ADD R0, SP, 4H
0190k .FIXUP D
0190k(8D300005): LDR SB, MT, MOD3 [Texts]
0191k(41D80003): ADD R1, SB, VAR3
0192l .FIXUP D
0192l(8D600002): LDR SB, MT, MOD6 [Oberon]
0193l(42D8000E): ADD R2, SB, VAR14
0194l(82200008): LDR R2, R2, 8H
0195m .FIXUP D
0195m(8D600003): LDR SB, MT, MOD6 [Oberon]
0196m(43D8000E): ADD R3, SB, VAR14
0197m(8330000C): LDR R3, R3, CH
0198n .FIXUP P
0198n(F731500E): BL MOD3 [Texts] PROC21
0199o(40E80004): ADD R0, SP, 4H
019Ao .FIXUP D
019Ao(8D300005): LDR SB, MT, MOD3 [Texts]
019Bo(41D80003): ADD R1, SB, VAR3
019Cp .FIXUP P
019Cp(F7316004): BL MOD3 [Texts] PROC22
IF S.class = Texts.Name THENq
019Dq(80E00040): LDR R0, SP, 40H
019Eq(40090001): SUB R0, R0, 1H
019Fq(E9000015): BNE 21 [01B5H]
Texts.ChangeLooks(T,r beg,s end,t {0},u Fonts.This(Sv.s)w,x 0,y 0)z
01A0r(80E00078): LDR R0, SP, 78H
01A1s(81E0007C): LDR R1, SP, 7CH
01A2t(82E00080): LDR R2, SP, 80H
01A3u(43000001): MOV R3, R0, 1H
01A4v(4EE90010): SUB SP, SP, 10H
01A5v(A0E0000C): STR R0, SP, CH
01A6v(A1E00008): STR R1, SP, 8H
01A7v(A2E00004): STR R2, SP, 4H
01A8v(A3E00000): STR R3, SP, 0H
01A9w(40E80068): ADD R0, SP, 68H
01AAw(41000020): MOV R1, R0, 20H
01ABx .FIXUP P
01ABx(F720500F): BL MOD2 [Fonts] PROC5
01ACx(04000000): MOV R4, R0, R0
01ADx(83E00000): LDR R3, SP, 0H
01AEx(82E00004): LDR R2, SP, 4H
01AFx(81E00008): LDR R1, SP, 8H
01B0x(80E0000C): LDR R0, SP, CH
01B1x(4EE80010): ADD SP, SP, 10H
01B2y(45000000): MOV R5, R0, 0H
01B3z(46000000): MOV R6, R0, 0H
ENDa
01B4a .FIXUP P
01B4a(F7310009): BL MOD3 [Texts] PROC16
END
ENDb ChangeFont;
01B5b(8FE00000): LDR LNK, SP, 0H
01B6b(4EE80084): ADD SP, SP, 84H
01B7b(C700000F): B LNK
PROCEDURE ChangeColor*;
VAR S: Texts.Scanner;
T: Texts.Text;
col: INTEGER;
beg, end, time: LONGINT;
BEGINc Texts.OpenScanner(S,d Oberon.Par.text,e Oberon.Par.pos)f;g Texts.Scan(S)h;i
01B8c .PROC 5
01B8c .COMMAND ChangeColor
01B8c(4EE9008C): SUB SP, SP, 8CH
01B9c(AFE00000): STR LNK, SP, 0H
01BAd(40E80004): ADD R0, SP, 4H
01BBd .FIXUP D
01BBd(8D300021): LDR SB, MT, MOD3 [Texts]
01BCd(41D80003): ADD R1, SB, VAR3
01BDe .FIXUP D
01BDe(8D600002): LDR SB, MT, MOD6 [Oberon]
01BEe(42D8000E): ADD R2, SB, VAR14
01BFe(82200008): LDR R2, R2, 8H
01C0f .FIXUP D
01C0f(8D600003): LDR SB, MT, MOD6 [Oberon]
01C1f(43D8000E): ADD R3, SB, VAR14
01C2f(8330000C): LDR R3, R3, CH
01C3g .FIXUP P
01C3g(F731500F): BL MOD3 [Texts] PROC21
01C4h(40E80004): ADD R0, SP, 4H
01C5h .FIXUP D
01C5h(8D300005): LDR SB, MT, MOD3 [Texts]
01C6h(41D80003): ADD R1, SB, VAR3
01C7i .FIXUP P
01C7i(F7316004): BL MOD3 [Texts] PROC22
IF S.class = Texts.Int THENj
01C8j(80E00040): LDR R0, SP, 40H
01C9j(40090003): SUB R0, R0, 3H
01CAj(E9000012): BNE 18 [01DDH]
col := S.i;k Oberon.GetSelection(T,l beg,m end,n time)o;p
01CBk(80E00044): LDR R0, SP, 44H
01CCk(A0E0007C): STR R0, SP, 7CH
01CDl(40E80078): ADD R0, SP, 78H
01CEm(41E80080): ADD R1, SP, 80H
01CFn(42E80084): ADD R2, SP, 84H
01D0o(43E80088): ADD R3, SP, 88H
01D1p .FIXUP P
01D1p(F762900A): BL MOD6 [Oberon] PROC41
IF time >= 0 THENq Texts.ChangeLooks(T,r beg,s end,t {1},u NIL,v col,w 0)x ENDy
01D2q(80E00088): LDR R0, SP, 88H
01D3q(40090000): SUB R0, R0, 0H
01D4q(E5000008): BLT 8 [01DDH]
01D5r(80E00078): LDR R0, SP, 78H
01D6s(81E00080): LDR R1, SP, 80H
01D7t(82E00084): LDR R2, SP, 84H
01D8u(43000002): MOV R3, R0, 2H
01D9v(44000000): MOV R4, R0, 0H
01DAw(85E0007C): LDR R5, SP, 7CH
01DBx(46000000): MOV R6, R0, 0H
01DCy .FIXUP P
01DCy(F731000B): BL MOD3 [Texts] PROC16
END
ENDz ChangeColor;
01DDz(8FE00000): LDR LNK, SP, 0H
01DEz(4EE8008C): ADD SP, SP, 8CH
01DFz(C700000F): B LNK
PROCEDURE ChangeOffset*;
VAR S: Texts.Scanner;
T: Texts.Text;
voff: INTEGER; ch: CHAR;
beg, end, time: LONGINT;
BEGINa Texts.OpenScanner(S,b Oberon.Par.text,c Oberon.Par.pos)d;e Texts.Scan(S)f;g
01E0a .PROC 6
01E0a .COMMAND ChangeOffset
01E0a(4EE90090): SUB SP, SP, 90H
01E1a(AFE00000): STR LNK, SP, 0H
01E2b(40E80004): ADD R0, SP, 4H
01E3b .FIXUP D
01E3b(8D30001E): LDR SB, MT, MOD3 [Texts]
01E4b(41D80003): ADD R1, SB, VAR3
01E5c .FIXUP D
01E5c(8D600002): LDR SB, MT, MOD6 [Oberon]
01E6c(42D8000E): ADD R2, SB, VAR14
01E7c(82200008): LDR R2, R2, 8H
01E8d .FIXUP D
01E8d(8D600003): LDR SB, MT, MOD6 [Oberon]
01E9d(43D8000E): ADD R3, SB, VAR14
01EAd(8330000C): LDR R3, R3, CH
01EBe .FIXUP P
01EBe(F731500F): BL MOD3 [Texts] PROC21
01ECf(40E80004): ADD R0, SP, 4H
01EDf .FIXUP D
01EDf(8D300005): LDR SB, MT, MOD3 [Texts]
01EEf(41D80003): ADD R1, SB, VAR3
01EFg .FIXUP P
01EFg(F7316004): BL MOD3 [Texts] PROC22
IF S.class = Texts.Int THENh
01F0h(80E00040): LDR R0, SP, 40H
01F1h(40090003): SUB R0, R0, 3H
01F2h(E9000012): BNE 18 [0205H]
voff := S.i;i Oberon.GetSelection(T,j beg,k end,l time)m;n
01F3i(80E00044): LDR R0, SP, 44H
01F4i(A0E0007C): STR R0, SP, 7CH
01F5j(40E80078): ADD R0, SP, 78H
01F6k(41E80084): ADD R1, SP, 84H
01F7l(42E80088): ADD R2, SP, 88H
01F8m(43E8008C): ADD R3, SP, 8CH
01F9n .FIXUP P
01F9n(F762900A): BL MOD6 [Oberon] PROC41
IF time >= 0 THENo Texts.ChangeLooks(T,p beg,q end,r {2},s NIL,t voff,u 0)v ENDw
01FAo(80E0008C): LDR R0, SP, 8CH
01FBo(40090000): SUB R0, R0, 0H
01FCo(E5000008): BLT 8 [0205H]
01FDp(80E00078): LDR R0, SP, 78H
01FEq(81E00084): LDR R1, SP, 84H
01FFr(82E00088): LDR R2, SP, 88H
0200s(43000004): MOV R3, R0, 4H
0201t(44000000): MOV R4, R0, 0H
0202u(85E0007C): LDR R5, SP, 7CH
0203v(46000000): MOV R6, R0, 0H
0204w .FIXUP P
0204w(F731000B): BL MOD3 [Texts] PROC16
END
ENDx ChangeOffset;
0205x(8FE00000): LDR LNK, SP, 0H
0206x(4EE80090): ADD SP, SP, 90H
0207x(C700000F): B LNK
PROCEDURE Search*; (*uses global variables M, pat, d for Boyer-Moore search*)
VAR Text: TextFrames.Frame;
V: Viewers.Viewer;
R: Texts.Reader;
T: Texts.Text;
pos, beg, end, prevTime, len: LONGINT; n, i, j: INTEGER;
buf: ARRAY 32 OF CHAR;
PROCEDUREy Forward(n: INTEGER; VAR R: Texts.Reader; VAR buf: ARRAY OF CHAR);
0208y(E700003B): B 59 [0244H]
VAR m: INTEGER; j: INTEGER;
BEGINz m := M - n;a j := 0;b
0209z(4EE90020): SUB SP, SP, 20H
020Az(AFE00000): STR LNK, SP, 0H
020Bz(A0E00004): STR R0, SP, 4H
020Cz(A1E00008): STR R1, SP, 8H
020Dz(A2E0000C): STR R2, SP, CH
020Ez(A3E00010): STR R3, SP, 10H
020Fz(A4E00014): STR R4, SP, 14H
0210a .FIXUP D
0210a(8D000023): LDR SB, MT, MOD0 [Edit]
0211a(80D0002C): LDR R0, SB, 2CH [data]
0212a(81E00004): LDR R1, SP, 4H
0213a(00090001): SUB R0, R0, R1
0214a(A0E00018): STR R0, SP, 18H
0215b(40000000): MOV R0, R0, 0H
0216b(A0E0001C): STR R0, SP, 1CH
WHILE j # m DOc buf[j]d := buf[n + j]e;f INC(j) ENDg;
0217c(80E0001C): LDR R0, SP, 1CH
0218c(81E00018): LDR R1, SP, 18H
0219c(00090001): SUB R0, R0, R1
021Ac(E1000014): BEQ 20 [022FH]
021Bd(80E0001C): LDR R0, SP, 1CH
021Cd(81E00014): LDR R1, SP, 14H
021Dd(01090001): SUB R1, R0, R1
021Ed(DA12371C): BLCC MT [trap=1, pos=4663]
021Fd(81E00010): LDR R1, SP, 10H
0220d(00180000): ADD R0, R1, R0
0221e(81E00004): LDR R1, SP, 4H
0222e(82E0001C): LDR R2, SP, 1CH
0223e(01180002): ADD R1, R1, R2
0224e(82E00014): LDR R2, SP, 14H
0225e(02190002): SUB R2, R1, R2
0226e(DA12451C): BLCC MT [trap=1, pos=4677]
0227e(82E00010): LDR R2, SP, 10H
0228e(01280001): ADD R1, R2, R1
0229f(91100000): LDR R1, R1, 0H
022Af(B1000000): STR R1, R0, 0H
022Bg(80E0001C): LDR R0, SP, 1CH
022Cg(40080001): ADD R0, R0, 1H
022Dg(A0E0001C): STR R0, SP, 1CH
022Eg(E7FFFFE8): B -24 [0217H]
WHILE j # M DOh Texts.Read(R,i buf[j]j);k INC(j) ENDl
022Fh(80E0001C): LDR R0, SP, 1CH
0230h .FIXUP D
0230h(8D000020): LDR SB, MT, MOD0 [Edit]
0231h(81D0002C): LDR R1, SB, 2CH [data]
0232h(00090001): SUB R0, R0, R1
0233h(E100000D): BEQ 13 [0241H]
0234i(80E00008): LDR R0, SP, 8H
0235i(81E0000C): LDR R1, SP, CH
0236j(82E0001C): LDR R2, SP, 1CH
0237j(83E00014): LDR R3, SP, 14H
0238j(03290003): SUB R3, R2, R3
0239j(DA127C1C): BLCC MT [trap=1, pos=4732]
023Aj(83E00010): LDR R3, SP, 10H
023Bj(02380002): ADD R2, R3, R2
023Ck .FIXUP P
023Ck(F7313038): BL MOD3 [Texts] PROC19
023Dl(80E0001C): LDR R0, SP, 1CH
023El(40080001): ADD R0, R0, 1H
023Fl(A0E0001C): STR R0, SP, 1CH
0240l(E7FFFFEE): B -18 [022FH]
ENDm Forward;
0241m(8FE00000): LDR LNK, SP, 0H
0242m(4EE80020): ADD SP, SP, 20H
0243m(C700000F): B LNK
BEGINn V := Oberon.Par.vwr;o
0244n .PROC 7
0244n .COMMAND Search
0244n(4EE90084): SUB SP, SP, 84H
0245n(AFE00000): STR LNK, SP, 0H
0246o .FIXUP D
0246o(8D600016): LDR SB, MT, MOD6 [Oberon]
0247o(40D8000E): ADD R0, SB, VAR14
0248o(80000000): LDR R0, R0, 0H
0249o(A0E00008): STR R0, SP, 8H
IF Oberon.Par.frame #p V.dscq THENr V := Oberon.FocusViewer ENDs;
024Ap .FIXUP D
024Ap(8D600004): LDR SB, MT, MOD6 [Oberon]
024Bp(40D8000E): ADD R0, SB, VAR14
024Cq(81E00008): LDR R1, SP, 8H
024Dq(D112D84C): BLEQ MT [trap=4, pos=4824]
024Er(80000004): LDR R0, R0, 4H
024Fr(81100004): LDR R1, R1, 4H
0250r(00090001): SUB R0, R0, R1
0251r(E1000003): BEQ 3 [0255H]
0252s .FIXUP D
0252s(8D600008): LDR SB, MT, MOD6 [Oberon]
0253s(80D0000C): LDR R0, SB, VAR12
0254s(A0E00008): STR R0, SP, 8H
IF (V.dsct # NIL)u & (vV.dscw.nextx IS TextFrames.Frame)y THENz
0255t(80E00008): LDR R0, SP, 8H
0256t(D113084C): BLEQ MT [trap=4, pos=4872]
0257u(80000004): LDR R0, R0, 4H
0258v(E1000104): BEQ 260 [035DH]
0259w(80E00008): LDR R0, SP, 8H
025Aw(D113184C): BLEQ MT [trap=4, pos=4888]
025Bx(80000004): LDR R0, R0, 4H
025Cx(D1131D4C): BLEQ MT [trap=4, pos=4893]
025Dy(80000000): LDR R0, R0, 0H
025Ey(E1000005): BEQ 5 [0264H]
025Fy(810FFFF8): LDR R1, R0, FFFFFFF8H
0260y(81100004): LDR R1, R1, 4H
0261y .FIXUP D
0261y(8D80000F): LDR SB, MT, MOD8 [TextFrames]
0262y(42D80002): ADD R2, SB, VAR2
0263y(02290001): SUB R2, R2, R1
0264z(E90000F8): BNE 248 [035DH]
Text := V.dsca.nextb(TextFrames.Frame)c;d
0265a(80E00008): LDR R0, SP, 8H
0266a(D1134B4C): BLEQ MT [trap=4, pos=4939]
0267b(80000004): LDR R0, R0, 4H
0268b(D113504C): BLEQ MT [trap=4, pos=4944]
0269c(80000000): LDR R0, R0, 0H
026Ac(E1000005): BEQ 5 [0270H]
026Bc(810FFFF8): LDR R1, R0, FFFFFFF8H
026Cc(81100004): LDR R1, R1, 4H
026Dc .FIXUP D
026Dc(8D80000C): LDR SB, MT, MOD8 [TextFrames]
026Ec(42D80002): ADD R2, SB, VAR2
026Fc(02290001): SUB R2, R2, R1
0270c(D913622C): BLNE MT [trap=2, pos=4962]
0271d(A0E00004): STR R0, SP, 4H
prevTime := time;e Oberon.GetSelection(T,f beg,g end,h time)i;j
0272e .FIXUP D
0272e(8D000005): LDR SB, MT, MOD0 [Edit]
0273e(80D00028): LDR R0, SB, 28H [data]
0274e(A0E00050): STR R0, SP, 50H
0275f(40E80040): ADD R0, SP, 40H
0276g(41E80048): ADD R1, SP, 48H
0277h(42E8004C): ADD R2, SP, 4CH
0278i(43D80028): ADD R3, SB, 28H
0279j .FIXUP P
0279j(F762903D): BL MOD6 [Oberon] PROC41
IF time > prevTime THENk
027Ak .FIXUP D
027Ak(8D000008): LDR SB, MT, MOD0 [Edit]
027Bk(80D00028): LDR R0, SB, 28H [data]
027Ck(81E00050): LDR R1, SP, 50H
027Dk(00090001): SUB R0, R0, R1
027Ek(E6000050): BLE 80 [02CFH]
Texts.OpenReader(R,l T,m beg)n;o
027Fl(40E8000C): ADD R0, SP, CH
0280l .FIXUP D
0280l(8D300006): LDR SB, MT, MOD3 [Texts]
0281l(41D80002): ADD R1, SB, VAR2
0282m(82E00040): LDR R2, SP, 40H
0283n(83E00048): LDR R3, SP, 48H
0284o .FIXUP P
0284o(F731200B): BL MOD3 [Texts] PROC18
i := 0;p pos := beg;q
0285p(40000000): MOV R0, R0, 0H
0286p(A0E0005C): STR R0, SP, 5CH
0287q(80E00048): LDR R0, SP, 48H
0288q(A0E00044): STR R0, SP, 44H
REPEAT Texts.Read(R,r pat[i]s)t;u INC(i);v INC(pos)
0289r(40E8000C): ADD R0, SP, CH
028Ar .FIXUP D
028Ar(8D30000A): LDR SB, MT, MOD3 [Texts]
028Br(41D80002): ADD R1, SB, VAR2
028Cs(82E0005C): LDR R2, SP, 5CH
028Ds(43290020): SUB R3, R2, 20H
028Es(DA14261C): BLCC MT [trap=1, pos=5158]
028Fs .FIXUP D
028Fs(8D000005): LDR SB, MT, MOD0 [Edit]
0290s(02D80002): ADD R2, SB, R2 [global array]
0291t(42280030): ADD R2, R2, 30H
0292u .FIXUP P
0292u(F731300E): BL MOD3 [Texts] PROC19
0293v(80E0005C): LDR R0, SP, 5CH
0294v(40080001): ADD R0, R0, 1H
0295v(A0E0005C): STR R0, SP, 5CH
UNTILw (i = maxlen)x OR (ypos = end)z;a
0296w(80E00044): LDR R0, SP, 44H
0297w(40080001): ADD R0, R0, 1H
0298w(A0E00044): STR R0, SP, 44H
0299x(80E0005C): LDR R0, SP, 5CH
029Ax(40090020): SUB R0, R0, 20H
029By(E1000004): BEQ 4 [02A0H]
029Cz(80E00044): LDR R0, SP, 44H
029Dz(81E0004C): LDR R1, SP, 4CH
029Ez(00090001): SUB R0, R0, R1
029Fa(E9FFFFE9): BNE -23 [0289H]
M := i;b j := 0;c
02A0b(80E0005C): LDR R0, SP, 5CH
02A1b .FIXUP D
02A1b(8D000012): LDR SB, MT, MOD0 [Edit]
02A2b(A0D0002C): STR R0, SB, 2CH [data]
02A3c(40000000): MOV R0, R0, 0H
02A4c(A0E00060): STR R0, SP, 60H
WHILE j # 256 DOd d[j]e := M;f INC(j) ENDg;
02A5d(80E00060): LDR R0, SP, 60H
02A6d(40090100): SUB R0, R0, 100H
02A7d(E100000C): BEQ 12 [02B4H]
02A8e(80E00060): LDR R0, SP, 60H
02A9e(41090100): SUB R1, R0, 100H
02AAe(DA149A1C): BLCC MT [trap=1, pos=5274]
02ABe(40010002): LSL R0, R0, 2H
02ACe .FIXUP D
02ACe(8D00000B): LDR SB, MT, MOD0 [Edit]
02ADe(00D80000): ADD R0, SB, R0 [global array]
02AEf(81D0002C): LDR R1, SB, 2CH
02AFf(A1000050): STR R1, R0, 50H
02B0g(80E00060): LDR R0, SP, 60H
02B1g(40080001): ADD R0, R0, 1H
02B2g(A0E00060): STR R0, SP, 60H
02B3g(E7FFFFF1): B -15 [02A5H]
j := 0;h
02B4h(40000000): MOV R0, R0, 0H
02B5h(A0E00060): STR R0, SP, 60H
WHILE j # M - 1 DOi d[ORD(pat[j]j)]k := M - 1 -l j;m INC(j) ENDn
02B6i .FIXUP D
02B6i(8D00000A): LDR SB, MT, MOD0 [Edit]
02B7i(80D0002C): LDR R0, SB, 2CH [data]
02B8i(40090001): SUB R0, R0, 1H
02B9i(81E00060): LDR R1, SP, 60H
02BAi(01190000): SUB R1, R1, R0
02BBi(E1000013): BEQ 19 [02CFH]
02BCj(80E00060): LDR R0, SP, 60H
02BDj(41090020): SUB R1, R0, 20H
02BEj(DA14E41C): BLCC MT [trap=1, pos=5348]
02BFj .FIXUP D
02BFj(8D000009): LDR SB, MT, MOD0 [Edit]
02C0j(00D80000): ADD R0, SB, R0 [global array]
02C1k(90000030): LDR R0, R0, 30H
02C2k(41090100): SUB R1, R0, 100H
02C3k(DA14E61C): BLCC MT [trap=1, pos=5350]
02C4k(40010002): LSL R0, R0, 2H
02C5k(00D80000): ADD R0, SB, R0
02C6l(81D0002C): LDR R1, SB, 2CH
02C7l(41190001): SUB R1, R1, 1H
02C8m(82E00060): LDR R2, SP, 60H
02C9m(01190002): SUB R1, R1, R2
02CAm(A1000050): STR R1, R0, 50H
02CBn(80E00060): LDR R0, SP, 60H
02CCn(40080001): ADD R0, R0, 1H
02CDn(A0E00060): STR R0, SP, 60H
02CEn(E7FFFFE7): B -25 [02B6H]
END;
IF Text.hasCaro THENp pos := Text.carlocq.pos ELSEr poss := 0 ENDt;
02CFo(80E00004): LDR R0, SP, 4H
02D0o(D1151F4C): BLEQ MT [trap=4, pos=5407]
02D1p(90000044): LDR R0, R0, 44H
02D2p(E1000005): BEQ 5 [02D8H]
02D3q(80E00004): LDR R0, SP, 4H
02D4q(D115374C): BLEQ MT [trap=4, pos=5431]
02D5r(8000004C): LDR R0, R0, 4CH
02D6r(A0E00044): STR R0, SP, 44H
02D7s(E7000002): B 2 [02DAH]
02D8t(40000000): MOV R0, R0, 0H
02D9t(A0E00044): STR R0, SP, 44H
len := Text.textu.lenv;w
02DAu(80E00004): LDR R0, SP, 4H
02DBu(D115654C): BLEQ MT [trap=4, pos=5477]
02DCv(8000001C): LDR R0, R0, 1CH
02DDv(D115694C): BLEQ MT [trap=4, pos=5481]
02DEw(80000000): LDR R0, R0, 0H
02DFw(A0E00054): STR R0, SP, 54H
Texts.OpenReader(R,x Text.texty,z pos)a;b
02E0x(40E8000C): ADD R0, SP, CH
02E1x .FIXUP D
02E1x(8D300022): LDR SB, MT, MOD3 [Texts]
02E2x(41D80002): ADD R1, SB, VAR2
02E3y(82E00004): LDR R2, SP, 4H
02E4y(D1158E4C): BLEQ MT [trap=4, pos=5518]
02E5z(8220001C): LDR R2, R2, 1CH
02E6a(83E00044): LDR R3, SP, 44H
02E7b .FIXUP P
02E7b(F7312055): BL MOD3 [Texts] PROC18
Forward(M,c R,d buf)e;f pos := pos + M;g
02E8c .FIXUP D
02E8c(8D000007): LDR SB, MT, MOD0 [Edit]
02E9c(80D0002C): LDR R0, SB, 2CH [data]
02EAd(41E8000C): ADD R1, SP, CH
02EBd .FIXUP D
02EBd(8D300003): LDR SB, MT, MOD3 [Texts]
02ECd(42D80002): ADD R2, SB, VAR2
02EDe(43E80064): ADD R3, SP, 64H
02EEe(44000020): MOV R4, R0, 20H
02EFf(F7FFFF19): BL -231 [0209H]
02F0g(80E00044): LDR R0, SP, 44H
02F1g .FIXUP D
02F1g(8D000006): LDR SB, MT, MOD0 [Edit]
02F2g(81D0002C): LDR R1, SB, 2CH [data]
02F3g(00080001): ADD R0, R0, R1
02F4g(A0E00044): STR R0, SP, 44H
j := M;h
02F5h(80D0002C): LDR R0, SB, 2CH
02F6h(A0E00060): STR R0, SP, 60H
REPEAT DEC(j) UNTILi (j < 0)j OR (kbuf[j]l # pat[j]m)n;o
02F7i(80E00060): LDR R0, SP, 60H
02F8i(40090001): SUB R0, R0, 1H
02F9i(A0E00060): STR R0, SP, 60H
02FAj(80E00060): LDR R0, SP, 60H
02FBj(40090000): SUB R0, R0, 0H
02FCk(E500000D): BLT 13 [030AH]
02FDl(80E00060): LDR R0, SP, 60H
02FEl(41090020): SUB R1, R0, 20H
02FFl(DA15FA1C): BLCC MT [trap=1, pos=5626]
0300l(00E80000): ADD R0, SP, R0
0301m(81E00060): LDR R1, SP, 60H
0302m(42190020): SUB R2, R1, 20H
0303m(DA16031C): BLCC MT [trap=1, pos=5635]
0304m .FIXUP D
0304m(8D000013): LDR SB, MT, MOD0 [Edit]
0305m(01D80001): ADD R1, SB, R1 [global array]
0306n(90000064): LDR R0, R0, 64H
0307n(91100030): LDR R1, R1, 30H
0308n(00090001): SUB R0, R0, R1
0309o(E1FFFFED): BEQ -19 [02F7H]
WHILE (j >= 0)p & (qpos < len)r DOs
030Ap(80E00060): LDR R0, SP, 60H
030Bp(40090000): SUB R0, R0, 0H
030Cq(E5000033): BLT 51 [0340H]
030Dr(80E00044): LDR R0, SP, 44H
030Er(81E00054): LDR R1, SP, 54H
030Fr(00090001): SUB R0, R0, R1
0310s(ED00002F): BGE 47 [0340H]
n := d[ORD(buf[M-1]t)]u;v Forward(n,w R,x buf)y;z INC(pos, n);a j := M;b
0311t .FIXUP D
0311t(8D00000D): LDR SB, MT, MOD0 [Edit]
0312t(80D0002C): LDR R0, SB, 2CH [data]
0313t(40090001): SUB R0, R0, 1H
0314t(41090020): SUB R1, R0, 20H
0315t(DA16471C): BLCC MT [trap=1, pos=5703]
0316t(00E80000): ADD R0, SP, R0
0317u(90000064): LDR R0, R0, 64H
0318u(41090100): SUB R1, R0, 100H
0319u(DA16491C): BLCC MT [trap=1, pos=5705]
031Au(40010002): LSL R0, R0, 2H
031Bu(00D80000): ADD R0, SB, R0
031Cv(80000050): LDR R0, R0, 50H
031Dv(A0E00058): STR R0, SP, 58H
031Ew(80E00058): LDR R0, SP, 58H
031Fx(41E8000C): ADD R1, SP, CH
0320x .FIXUP D
0320x(8D30000F): LDR SB, MT, MOD3 [Texts]
0321x(42D80002): ADD R2, SB, VAR2
0322y(43E80064): ADD R3, SP, 64H
0323y(44000020): MOV R4, R0, 20H
0324z(F7FFFEE4): BL -284 [0209H]
0325a(80E00044): LDR R0, SP, 44H
0326a(81E00058): LDR R1, SP, 58H
0327a(00080001): ADD R0, R0, R1
0328a(A0E00044): STR R0, SP, 44H
0329b .FIXUP D
0329b(8D000009): LDR SB, MT, MOD0 [Edit]
032Ab(80D0002C): LDR R0, SB, 2CH [data]
032Bb(A0E00060): STR R0, SP, 60H
REPEAT DEC(j) UNTILc (j < 0)d OR (ebuf[j]f # pat[j]g)h
032Cc(80E00060): LDR R0, SP, 60H
032Dc(40090001): SUB R0, R0, 1H
032Ec(A0E00060): STR R0, SP, 60H
032Fd(80E00060): LDR R0, SP, 60H
0330d(40090000): SUB R0, R0, 0H
0331e(E500000D): BLT 13 [033FH]
0332f(80E00060): LDR R0, SP, 60H
0333f(41090020): SUB R1, R0, 20H
0334f(DA16A21C): BLCC MT [trap=1, pos=5794]
0335f(00E80000): ADD R0, SP, R0
0336g(81E00060): LDR R1, SP, 60H
0337g(42190020): SUB R2, R1, 20H
0338g(DA16AB1C): BLCC MT [trap=1, pos=5803]
0339g .FIXUP D
0339g(8D000010): LDR SB, MT, MOD0 [Edit]
033Ag(01D80001): ADD R1, SB, R1 [global array]
033Bh(90000064): LDR R0, R0, 64H
033Ch(91100030): LDR R1, R1, 30H
033Dh(00090001): SUB R0, R0, R1
ENDi ;
033Ei(E1FFFFED): BEQ -19 [032CH]
033Fi(E7FFFFCA): B -54 [030AH]
IF j < 0 THENj
0340j(80E00060): LDR R0, SP, 60H
0341j(40090000): SUB R0, R0, 0H
0342j(ED00001A): BGE 26 [035DH]
TextFrames.RemoveSelection(Text)k;l TextFrames.RemoveCaret(Text)m;n
0343k(80E00004): LDR R0, SP, 4H
0344l .FIXUP P
0344l(F781805D): BL MOD8 [TextFrames] PROC24
0345m(80E00004): LDR R0, SP, 4H
0346n .FIXUP P
0346n(F7815002): BL MOD8 [TextFrames] PROC21
Oberon.RemoveMarks(Text.Xo,p Text.Yq,r Text.Ws,t Text.Hu)v;w
0347o(80E00004): LDR R0, SP, 4H
0348o(D117364C): BLEQ MT [trap=4, pos=5942]
0349p(80000008): LDR R0, R0, 8H
034Aq(81E00004): LDR R1, SP, 4H
034Bq(D1173E4C): BLEQ MT [trap=4, pos=5950]
034Cr(8110000C): LDR R1, R1, CH
034Ds(82E00004): LDR R2, SP, 4H
034Es(D117464C): BLEQ MT [trap=4, pos=5958]
034Ft(82200010): LDR R2, R2, 10H
0350u(83E00004): LDR R3, SP, 4H
0351u(D1174E4C): BLEQ MT [trap=4, pos=5966]
0352v(83300014): LDR R3, R3, 14H
0353w .FIXUP P
0353w(F761B00D): BL MOD6 [Oberon] PROC27
TextFrames.Show(Text,x pos - 300)y;z Oberon.PassFocus(V)a;b
0354x(80E00004): LDR R0, SP, 4H
0355y(81E00044): LDR R1, SP, 44H
0356y(4119012C): SUB R1, R1, 12CH
0357z .FIXUP P
0357z(F7811004): BL MOD8 [TextFrames] PROC17
0358a(80E00008): LDR R0, SP, 8H
0359b .FIXUP P
0359b(F7625002): BL MOD6 [Oberon] PROC37
TextFrames.SetCaret(Text,c pos)d
035Ac(80E00004): LDR R0, SP, 4H
035Bd(81E00044): LDR R1, SP, 44H
ENDe
035Ce .FIXUP P
035Ce(F7813003): BL MOD8 [TextFrames] PROC19
END
ENDf Search;
035Df(8FE00000): LDR LNK, SP, 0H
035Ef(4EE80084): ADD SP, SP, 84H
035Ff(C700000F): B LNK
PROCEDURE Locate*;
VAR Text: TextFrames.Frame;
T: Texts.Text; S: Texts.Scanner;
V: Viewers.Viewer;
beg, end, time: LONGINT;
BEGINg
0360g .PROC 8
0360g .COMMAND Locate
0360g(4EE90090): SUB SP, SP, 90H
0361g(AFE00000): STR LNK, SP, 0H
V := Oberon.FocusViewer;h
0362h .FIXUP D
0362h(8D600029): LDR SB, MT, MOD6 [Oberon]
0363h(80D0000C): LDR R0, SB, VAR12
0364h(A0E00080): STR R0, SP, 80H
IF (V.dsci # NIL)j & (kV.dscl.nextm IS TextFrames.Frame)n THENo
0365i(80E00080): LDR R0, SP, 80H
0366i(D1189E4C): BLEQ MT [trap=4, pos=6302]
0367j(80000004): LDR R0, R0, 4H
0368k(E1000052): BEQ 82 [03BBH]
0369l(80E00080): LDR R0, SP, 80H
036Al(D118AE4C): BLEQ MT [trap=4, pos=6318]
036Bm(80000004): LDR R0, R0, 4H
036Cm(D118B34C): BLEQ MT [trap=4, pos=6323]
036Dn(80000000): LDR R0, R0, 0H
036En(E1000005): BEQ 5 [0374H]
036Fn(810FFFF8): LDR R1, R0, FFFFFFF8H
0370n(81100004): LDR R1, R1, 4H
0371n .FIXUP D
0371n(8D80000F): LDR SB, MT, MOD8 [TextFrames]
0372n(42D80002): ADD R2, SB, VAR2
0373n(02290001): SUB R2, R2, R1
0374o(E9000046): BNE 70 [03BBH]
Text := V.dscp.nextq(TextFrames.Frame)r;s
0375p(80E00080): LDR R0, SP, 80H
0376p(D118E14C): BLEQ MT [trap=4, pos=6369]
0377q(80000004): LDR R0, R0, 4H
0378q(D118E64C): BLEQ MT [trap=4, pos=6374]
0379r(80000000): LDR R0, R0, 0H
037Ar(E1000005): BEQ 5 [0380H]
037Br(810FFFF8): LDR R1, R0, FFFFFFF8H
037Cr(81100004): LDR R1, R1, 4H
037Dr .FIXUP D
037Dr(8D80000C): LDR SB, MT, MOD8 [TextFrames]
037Er(42D80002): ADD R2, SB, VAR2
037Fr(02290001): SUB R2, R2, R1
0380r(D918F82C): BLNE MT [trap=2, pos=6392]
0381s(A0E00004): STR R0, SP, 4H
Oberon.GetSelection(T,t beg,u end,v time)w;x
0382t(40E80008): ADD R0, SP, 8H
0383u(41E80084): ADD R1, SP, 84H
0384v(42E80088): ADD R2, SP, 88H
0385w(43E8008C): ADD R3, SP, 8CH
0386x .FIXUP P
0386x(F762902A): BL MOD6 [Oberon] PROC41
IF time >= 0 THENy
0387y(80E0008C): LDR R0, SP, 8CH
0388y(40090000): SUB R0, R0, 0H
0389y(E5000031): BLT 49 [03BBH]
Texts.OpenScanner(S,z T,a beg)b;c
038Az(40E8000C): ADD R0, SP, CH
038Bz .FIXUP D
038Bz(8D30000E): LDR SB, MT, MOD3 [Texts]
038Cz(41D80003): ADD R1, SB, VAR3
038Da(82E00008): LDR R2, SP, 8H
038Eb(83E00084): LDR R3, SP, 84H
038Fc .FIXUP P
038Fc(F7315009): BL MOD3 [Texts] PROC21
REPEAT Texts.Scan(S)d UNTILe (S.class >= Texts.Int)f;g (*skip names*)
0390d(40E8000C): ADD R0, SP, CH
0391d .FIXUP D
0391d(8D300006): LDR SB, MT, MOD3 [Texts]
0392d(41D80003): ADD R1, SB, VAR3
0393e .FIXUP P
0393e(F7316004): BL MOD3 [Texts] PROC22
0394f(80E00048): LDR R0, SP, 48H
0395f(40090003): SUB R0, R0, 3H
0396g(E5FFFFF9): BLT -7 [0390H]
IF S.class = Texts.Int THENh
0397h(80E00048): LDR R0, SP, 48H
0398h(40090003): SUB R0, R0, 3H
0399h(E9000021): BNE 33 [03BBH]
TextFrames.RemoveSelection(Text)i;j
039Ai(80E00004): LDR R0, SP, 4H
039Bj .FIXUP P
039Bj(F7818008): BL MOD8 [TextFrames] PROC24
TextFrames.RemoveCaret(Text)k;l
039Ck(80E00004): LDR R0, SP, 4H
039Dl .FIXUP P
039Dl(F7815002): BL MOD8 [TextFrames] PROC21
Oberon.RemoveMarks(Text.Xm,n Text.Yo,p Text.Wq,r Text.Hs)t;u
039Em(80E00004): LDR R0, SP, 4H
039Fm(D11A4B4C): BLEQ MT [trap=4, pos=6731]
03A0n(80000008): LDR R0, R0, 8H
03A1o(81E00004): LDR R1, SP, 4H
03A2o(D11A534C): BLEQ MT [trap=4, pos=6739]
03A3p(8110000C): LDR R1, R1, CH
03A4q(82E00004): LDR R2, SP, 4H
03A5q(D11A5B4C): BLEQ MT [trap=4, pos=6747]
03A6r(82200010): LDR R2, R2, 10H
03A7s(83E00004): LDR R3, SP, 4H
03A8s(D11A634C): BLEQ MT [trap=4, pos=6755]
03A9t(83300014): LDR R3, R3, 14H
03AAu .FIXUP P
03AAu(F761B00D): BL MOD6 [Oberon] PROC27
TextFrames.Show(Text,v Max(0w,x S.i - 200)y)z;a
03ABv(80E00004): LDR R0, SP, 4H
03ACw(4EE90004): SUB SP, SP, 4H
03ADw(A0E00000): STR R0, SP, 0H
03AEx(40000000): MOV R0, R0, 0H
03AFy(81E00050): LDR R1, SP, 50H
03B0y(411900C8): SUB R1, R1, C8H
03B1z(F7FFFC4E): BL -946 [0000H]
03B2z(01000000): MOV R1, R0, R0
03B3z(80E00000): LDR R0, SP, 0H
03B4z(4EE80004): ADD SP, SP, 4H
03B5a .FIXUP P
03B5a(F781100B): BL MOD8 [TextFrames] PROC17
Oberon.PassFocus(V)b;c
03B6b(80E00080): LDR R0, SP, 80H
03B7c .FIXUP P
03B7c(F7625002): BL MOD6 [Oberon] PROC37
TextFrames.SetCaret(Text,d S.i)e
03B8d(80E00004): LDR R0, SP, 4H
03B9e(81E0004C): LDR R1, SP, 4CH
ENDf
03BAf .FIXUP P
03BAf(F7813003): BL MOD8 [TextFrames] PROC19
END
END
ENDg Locate;
03BBg(8FE00000): LDR LNK, SP, 0H
03BCg(4EE80090): ADD SP, SP, 90H
03BDg(C700000F): B LNK
PROCEDURE Recall*;
VAR Menu, Main: Display.Frame;
buf: Texts.Buffer;
V: Viewers.Viewer;
pos: LONGINT;
M: TextFrames.Frame;
BEGINh V := Oberon.FocusViewer;i
03BEh .PROC 9
03BEh .COMMAND Recall
03BEh(4EE9001C): SUB SP, SP, 1CH
03BFh(AFE00000): STR LNK, SP, 0H
03C0i .FIXUP D
03C0i(8D60002F): LDR SB, MT, MOD6 [Oberon]
03C1i(80D0000C): LDR R0, SB, VAR12
03C2i(A0E00010): STR R0, SP, 10H
IF (V # NIL)j & (kV IS MenuViewers.Viewer)l THENm
03C3j(80E00010): LDR R0, SP, 10H
03C4k(E1000067): BEQ 103 [042CH]
03C5l(80E00010): LDR R0, SP, 10H
03C6l(E1000005): BEQ 5 [03CCH]
03C7l(810FFFF8): LDR R1, R0, FFFFFFF8H
03C8l(81100008): LDR R1, R1, 8H
03C9l .FIXUP D
03C9l(8D700009): LDR SB, MT, MOD7 [MenuViewers]
03CAl(42D80001): ADD R2, SB, VAR1
03CBl(02290001): SUB R2, R2, R1
03CCm(E900005F): BNE 95 [042CH]
Menu := V.dscn;o Main := V.dscp.nextq;r
03CDn(80E00010): LDR R0, SP, 10H
03CEn(D11C0E4C): BLEQ MT [trap=4, pos=7182]
03CFo(80000004): LDR R0, R0, 4H
03D0o(A0E00004): STR R0, SP, 4H
03D1p(80E00010): LDR R0, SP, 10H
03D2p(D11C1D4C): BLEQ MT [trap=4, pos=7197]
03D3q(80000004): LDR R0, R0, 4H
03D4q(D11C224C): BLEQ MT [trap=4, pos=7202]
03D5r(80000000): LDR R0, R0, 0H
03D6r(A0E00008): STR R0, SP, 8H
IF Main IS TextFrames.Frame THENs
03D7s(80E00008): LDR R0, SP, 8H
03D8s(E1000005): BEQ 5 [03DEH]
03D9s(810FFFF8): LDR R1, R0, FFFFFFF8H
03DAs(81100004): LDR R1, R1, 4H
03DBs .FIXUP D
03DBs(8D800012): LDR SB, MT, MOD8 [TextFrames]
03DCs(42D80002): ADD R2, SB, VAR2
03DDs(02290001): SUB R2, R2, R1
03DEs(E9000023): BNE 35 [0402H]
M := Main(TextFrames.Frame)t;u
03DFt(80E00008): LDR R0, SP, 8H
03E0t(E1000005): BEQ 5 [03E6H]
03E1t(810FFFF8): LDR R1, R0, FFFFFFF8H
03E2t(81100004): LDR R1, R1, 4H
03E3t .FIXUP D
03E3t(8D800008): LDR SB, MT, MOD8 [TextFrames]
03E4t(42D80002): ADD R2, SB, VAR2
03E5t(02290001): SUB R2, R2, R1
03E6t(D91C6E2C): BLNE MT [trap=2, pos=7278]
03E7u(A0E00018): STR R0, SP, 18H
IF M.hasCarv THENw
03E8v(80E00018): LDR R0, SP, 18H
03E9v(D11C834C): BLEQ MT [trap=4, pos=7299]
03EAw(90000044): LDR R0, R0, 44H
03EBw(E1000015): BEQ 21 [0401H]
TextFrames.Recall(buf)x;y
03ECx(40E8000C): ADD R0, SP, CH
03EDy .FIXUP P
03EDy(F781E033): BL MOD8 [TextFrames] PROC30
pos := M.carlocz.pos + buf.lena;b
03EEz(80E00018): LDR R0, SP, 18H
03EFz(D11CC44C): BLEQ MT [trap=4, pos=7364]
03F0a(81E0000C): LDR R1, SP, CH
03F1a(D11CD24C): BLEQ MT [trap=4, pos=7378]
03F2b(8000004C): LDR R0, R0, 4CH
03F3b(81100000): LDR R1, R1, 0H
03F4b(00080001): ADD R0, R0, R1
03F5b(A0E00014): STR R0, SP, 14H
Texts.Insert(M.textc,d M.carloce.pos,f buf)g;h
03F6c(80E00018): LDR R0, SP, 18H
03F7c(D11CF14C): BLEQ MT [trap=4, pos=7409]
03F8d(8000001C): LDR R0, R0, 1CH
03F9e(81E00018): LDR R1, SP, 18H
03FAe(D11CFB4C): BLEQ MT [trap=4, pos=7419]
03FBf(8110004C): LDR R1, R1, 4CH
03FCg(82E0000C): LDR R2, SP, CH
03FDh .FIXUP P
03FDh(F730D010): BL MOD3 [Texts] PROC13
TextFrames.SetCaret(M,i pos)j
03FEi(80E00018): LDR R0, SP, 18H
03FFj(81E00014): LDR R1, SP, 14H
ENDk
0400k .FIXUP P
0400k(F7813003): BL MOD8 [TextFrames] PROC19
ELSIF Menul IS TextFrames.Frame THENm
0401l(E700002A): B 42 [042CH]
0402m(80E00004): LDR R0, SP, 4H
0403m(E1000005): BEQ 5 [0409H]
0404m(810FFFF8): LDR R1, R0, FFFFFFF8H
0405m(81100004): LDR R1, R1, 4H
0406m .FIXUP D
0406m(8D800023): LDR SB, MT, MOD8 [TextFrames]
0407m(42D80002): ADD R2, SB, VAR2
0408m(02290001): SUB R2, R2, R1
0409m(E9000022): BNE 34 [042CH]
M := Menu(TextFrames.Frame)n;o
040An(80E00004): LDR R0, SP, 4H
040Bn(E1000005): BEQ 5 [0411H]
040Cn(810FFFF8): LDR R1, R0, FFFFFFF8H
040Dn(81100004): LDR R1, R1, 4H
040En .FIXUP D
040En(8D800008): LDR SB, MT, MOD8 [TextFrames]
040Fn(42D80002): ADD R2, SB, VAR2
0410n(02290001): SUB R2, R2, R1
0411n(D91D862C): BLNE MT [trap=2, pos=7558]
0412o(A0E00018): STR R0, SP, 18H
IF M.hasCarp THENq
0413p(80E00018): LDR R0, SP, 18H
0414p(D11D9B4C): BLEQ MT [trap=4, pos=7579]
0415q(90000044): LDR R0, R0, 44H
0416q(E1000015): BEQ 21 [042CH]
TextFrames.Recall(buf)r;s
0417r(40E8000C): ADD R0, SP, CH
0418s .FIXUP P
0418s(F781E018): BL MOD8 [TextFrames] PROC30
pos := M.carloct.pos + buf.lenu;v
0419t(80E00018): LDR R0, SP, 18H
041At(D11DDC4C): BLEQ MT [trap=4, pos=7644]
041Bu(81E0000C): LDR R1, SP, CH
041Cu(D11DEA4C): BLEQ MT [trap=4, pos=7658]
041Dv(8000004C): LDR R0, R0, 4CH
041Ev(81100000): LDR R1, R1, 0H
041Fv(00080001): ADD R0, R0, R1
0420v(A0E00014): STR R0, SP, 14H
Texts.Insert(M.textw,x M.carlocy.pos,z buf)a;b
0421w(80E00018): LDR R0, SP, 18H
0422w(D11E094C): BLEQ MT [trap=4, pos=7689]
0423x(8000001C): LDR R0, R0, 1CH
0424y(81E00018): LDR R1, SP, 18H
0425y(D11E134C): BLEQ MT [trap=4, pos=7699]
0426z(8110004C): LDR R1, R1, 4CH
0427a(82E0000C): LDR R2, SP, CH
0428b .FIXUP P
0428b(F730D010): BL MOD3 [Texts] PROC13
TextFrames.SetCaret(M,c pos)d
0429c(80E00018): LDR R0, SP, 18H
042Ad(81E00014): LDR R1, SP, 14H
ENDe
042Be .FIXUP P
042Be(F7813003): BL MOD8 [TextFrames] PROC19
END
END
ENDf Recall;
042Cf(8FE00000): LDR LNK, SP, 0H
042Df(4EE8001C): ADD SP, SP, 1CH
042Ef(C700000F): B LNK
BEGINg Texts.OpenWriter(W)h
042Fg .PROC 0
042Fg .ENTRYPOINT
042Fg(4EE90004): SUB SP, SP, 4H
0430g(AFE00000): STR LNK, SP, 0H
0431h .FIXUP D
0431h(8D000023): LDR SB, MT, MOD0 [Edit]
0432h(40D80000): ADD R0, SB, 0H [data]
0433h .FIXUP D
0433h(8D300002): LDR SB, MT, MOD3 [Texts]
0434h(41D80005): ADD R1, SB, VAR5
ENDi Edit.j
0435i .FIXUP P
0435i(F731700A): BL MOD3 [Texts] PROC23
0436j(8FE00000): LDR LNK, SP, 0H
0437j(4EE80004): ADD SP, SP, 4H
0438j(C700000F): B LNK