System

Used Exports

BUILTINS: BOOLEAN CHAR INC INTEGER LONGINT NEW ORD
Display: Frame FrameDesc.H FrameDesc.W FrameDesc.X FrameDesc.Y FrameDesc.dsc FrameDesc.handle FrameDesc.next
FileDir: Enumerate FileHeader FileHeader.aleng FileHeader.bleng FileHeader.date FileName HeaderSize SectorSize
Files: Delete File New Old Read Register Rename Rider Rider.eof Set Write
Fonts: Font FontDesc.name FontDesc.next Free This root
Input: Read
Kernel: Clock GetSector Install New NofSectors SetClock allocated heapLim heapOrg
MenuViewers: New
Modules: AllocPtr Free Load ModDesc.cmd ModDesc.code ModDesc.imp ModDesc.name ModDesc.next ModDesc.refcnt Module res root
Oberon: AllocateSystemViewer Clock Collect CopyMsg CopyMsg.F DisplayHeight DisplayWidth GetSelection Log MarkedViewer NofTasks OpenDisplay OpenLog OpenTrack Par Par.frame Par.pos Par.text Par.vwr Reset SetColor SetFont SetOffset SetUser UserTrack
SYSTEM: ADR GET REG
TextFrames: Frame FrameDesc.text NewMenu NewText Text menuH
Texts: Append Buffer Char Delete Int Name OpenBuf OpenReader OpenScanner OpenWriter Read Reader Scan Scanner Scanner.c Scanner.class Scanner.i Scanner.s Text TextDesc.len Write WriteClock WriteHex WriteInt WriteLn WriteString Writer Writer.buf
Viewers: Close CloseTrack Open Recall Viewer ViewerDesc.state ViewerMsg ViewerMsg.id curW minH restore

MODULE System; (*JG 3.10.90 / NW 12.10.93 / NW 20.6.2016*)
.MODULE System (KEY D4F6C028, VERSION 1, SIZE 00002638)
.IMPORT Kernel (KEY 97E012DD)
.IMPORT FileDir (KEY AF8E65FF)
.IMPORT Files (KEY 73F5D686)
.IMPORT Modules (KEY 41C6A19A)
.IMPORT Input (KEY 5DE391A8)
.IMPORT Display (KEY 4C08D3EA)
.IMPORT Viewers (KEY 25ABF199)
.IMPORT Fonts (KEY F4C9F557)
.IMPORT Texts (KEY 0B9E9984)
.IMPORT Oberon (KEY A89CCEE2)
.IMPORT MenuViewers (KEY 245ACC30)
.IMPORT TextFrames (KEY 650813D5)
.DATA 48H
.STRING 48H "System.Close System.Copy System.Grow Edit.Search Edit.Store"
.STRING 84H "Edit.Locate Edit.Search System.Copy System.Grow System.Clear"
.STRING C4H "System.Clock"
.STRING D4H " unloading"
.STRING E0H " failed"
.STRING E8H "System.Free"
.STRING F4H "System.FreeFonts"
.STRING 108H ""
.STRING 10CH "System.Directory"
.STRING 120H "System.CopyFiles"
.STRING 134H " => "
.STRING 13CH " copying"
.STRING 148H " failed"
.STRING 150H "System.RenameFiles"
.STRING 164H " => "
.STRING 16CH " renaming"
.STRING 178H " failed"
.STRING 180H "System.DeleteFiles"
.STRING 194H " deleting"
.STRING 1A0H " failed"
.STRING 1A8H "System.Watch"
.STRING 1B8H " Modules space (bytes)"
.STRING 1D0H " Heap speace"
.STRING 1E0H " Disk sectors "
.STRING 1F0H " Tasks"
.STRING 1F8H ""
.STRING 1FCH "System.ShowModules"
.STRING 210H "---"
.STRING 214H ""
.STRING 218H "System.Commands"
.STRING 228H "System.ShowFonts"
.STRING 23CH "Oberon V5 NW 14.4.2013"
.STRING 254H "System.Log"
.STRING 260H "System.Tool"
.STRING 26CH "System.Tool"
.STRING 278H " pos "
.STRING 280H " TRAP"
.STRING 288H " in "
.STRING 290H " at"
.STRING 294H " ABORT "
.STRING 2A0H ""
.POINTER_REFERENCES 0H 4H 24H 18H
.FIXUP T 0H
IMPORT SYSTEM, Kernel, FileDir, Files, Modules,
Input, Display, Viewers, Fonts, Texts, Oberon, MenuViewers, TextFrames;
CONST
StandardMenu = "System.Close System.Copy System.Grow Edit.Search Edit.Store";
LogMenu = "Edit.Locate Edit.Search System.Copy System.Grow System.Clear";
VAR W: Texts.Writer;
pat: ARRAY 32 OF CHAR;
PROCEDURE GetArg(VAR S: Texts.Scanner);
VAR T: Texts.Text; beg, end, time: LONGINT;
BEGINa Texts.OpenScanner(S,b Oberon.Par.text,c Oberon.Par.pos)d;e Texts.Scan(S)f;g
0000a(4EE9001C): SUB SP, SP, 1CH
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
0006c .FIXUP D
0006c(8DA00006): LDR SB, MT, MOD10 [Oberon]
0007c(42D8000E): ADD R2, SB, VAR14
0008c(82200008): LDR R2, R2, 8H
0009d .FIXUP D
0009d(8DA00003): LDR SB, MT, MOD10 [Oberon]
000Ad(43D8000E): ADD R3, SB, VAR14
000Bd(8330000C): LDR R3, R3, CH
000Ce .FIXUP P
000Ce(F791500C): BL MOD9 [Texts] PROC21
000Df(80E00004): LDR R0, SP, 4H
000Ef(81E00008): LDR R1, SP, 8H
000Fg .FIXUP P
000Fg(F7916003): BL MOD9 [Texts] PROC22
IF (S.class = Texts.Char)h & (iS.c = "^")j THENk
0010h(80E00004): LDR R0, SP, 4H
0011h(8000003C): LDR R0, R0, 3CH
0012h(40090006): SUB R0, R0, 6H
0013i(E9000014): BNE 20 [0028H]
0014j(80E00004): LDR R0, SP, 4H
0015j(9000004C): LDR R0, R0, 4CH
0016j(4009005E): SUB R0, R0, 5EH
0017k(E9000010): BNE 16 [0028H]
Oberon.GetSelection(T,l beg,m end,n time)o;p
0018l(40E8000C): ADD R0, SP, CH
0019m(41E80010): ADD R1, SP, 10H
001An(42E80014): ADD R2, SP, 14H
001Bo(43E80018): ADD R3, SP, 18H
001Cp .FIXUP P
001Cp(F7A2900D): BL MOD10 [Oberon] PROC41
IF time >= 0 THENq Texts.OpenScanner(S,r T,s beg)t;u Texts.Scan(S)v ENDw
001Dq(80E00018): LDR R0, SP, 18H
001Eq(40090000): SUB R0, R0, 0H
001Fq(E5000008): BLT 8 [0028H]
0020r(80E00004): LDR R0, SP, 4H
0021r(81E00008): LDR R1, SP, 8H
0022s(82E0000C): LDR R2, SP, CH
0023t(83E00010): LDR R3, SP, 10H
0024u .FIXUP P
0024u(F7915008): BL MOD9 [Texts] PROC21
0025v(80E00004): LDR R0, SP, 4H
0026v(81E00008): LDR R1, SP, 8H
0027w .FIXUP P
0027w(F7916003): BL MOD9 [Texts] PROC22
END
ENDx GetArg;
0028x(8FE00000): LDR LNK, SP, 0H
0029x(4EE8001C): ADD SP, SP, 1CH
002Ax(C700000F): B LNK
PROCEDURE EndLine;
BEGINy Texts.WriteLn(W)z;a Texts.Append(Oberon.Log,b W.buf)c
002By(4EE90004): SUB SP, SP, 4H
002Cy(AFE00000): STR LNK, SP, 0H
002Dz .FIXUP D
002Dz(8D000024): LDR SB, MT, MOD0 [System]
002Ez(40D80000): ADD R0, SB, 0H [data]
002Fz .FIXUP D
002Fz(8D900002): LDR SB, MT, MOD9 [Texts]
0030z(41D80005): ADD R1, SB, VAR5
0031a .FIXUP P
0031a(F791C00A): BL MOD9 [Texts] PROC28
0032b .FIXUP D
0032b(8DA00003): LDR SB, MT, MOD10 [Oberon]
0033b(80D0000D): LDR R0, SB, VAR13
0034c .FIXUP D
0034c(8D000002): LDR SB, MT, MOD0 [System]
0035c(81D00000): LDR R1, SB, 0H [data]
ENDd EndLine;
0036d .FIXUP P
0036d(F790E005): BL MOD9 [Texts] PROC14
0037d(8FE00000): LDR LNK, SP, 0H
0038d(4EE80004): ADD SP, SP, 4H
0039d(C700000F): B LNK
(* ------------- Toolbox for system control ---------------*)
PROCEDURE SetUser*;
VAR i: INTEGER; ch: CHAR;
user: ARRAY 8 OF CHAR;
password: ARRAY 16 OF CHAR;
BEGINe i := 0;f Input.Read(ch)g;h
003Ae .PROC 1
003Ae .COMMAND SetUser
003Ae(4EE90024): SUB SP, SP, 24H
003Be(AFE00000): STR LNK, SP, 0H
003Cf(40000000): MOV R0, R0, 0H
003Df(A0E00004): STR R0, SP, 4H
003Eg(40E80008): ADD R0, SP, 8H
003Fh .FIXUP P
003Fh(F7502009): BL MOD5 [Input] PROC2
WHILE (ch # "/")i & (ji < 7)k DOl user[i]m := ch;n INC(i);o Input.Read(ch)p ENDq;
0040i(90E00008): LDR R0, SP, 8H
0041i(4009002F): SUB R0, R0, 2FH
0042j(E100000F): BEQ 15 [0052H]
0043k(80E00004): LDR R0, SP, 4H
0044k(40090007): SUB R0, R0, 7H
0045l(ED00000C): BGE 12 [0052H]
0046m(80E00004): LDR R0, SP, 4H
0047m(41090008): SUB R1, R0, 8H
0048m(DA04581C): BLCC MT [trap=1, pos=1112]
0049m(00E80000): ADD R0, SP, R0
004An(91E00008): LDR R1, SP, 8H
004Bn(B100000C): STR R1, R0, CH
004Co(80E00004): LDR R0, SP, 4H
004Do(40080001): ADD R0, R0, 1H
004Eo(A0E00004): STR R0, SP, 4H
004Fp(40E80008): ADD R0, SP, 8H
0050q .FIXUP P
0050q(F7502011): BL MOD5 [Input] PROC2
0051q(E7FFFFEE): B -18 [0040H]
user[i]r := 0X;s i := 0;t Input.Read(ch)u;v
0052r(80E00004): LDR R0, SP, 4H
0053r(41090008): SUB R1, R0, 8H
0054r(DA04871C): BLCC MT [trap=1, pos=1159]
0055r(00E80000): ADD R0, SP, R0
0056s(41000000): MOV R1, R0, 0H
0057s(B100000C): STR R1, R0, CH
0058t(40000000): MOV R0, R0, 0H
0059t(A0E00004): STR R0, SP, 4H
005Au(40E80008): ADD R0, SP, 8H
005Bv .FIXUP P
005Bv(F750200B): BL MOD5 [Input] PROC2
WHILE (ch > " ")w & (xi < 15)y DOz password[i]a := ch;b INC(i);c Input.Read(ch)d ENDe;
005Cw(90E00008): LDR R0, SP, 8H
005Dw(40090020): SUB R0, R0, 20H
005Ex(E600000F): BLE 15 [006EH]
005Fy(80E00004): LDR R0, SP, 4H
0060y(4009000F): SUB R0, R0, FH
0061z(ED00000C): BGE 12 [006EH]
0062a(80E00004): LDR R0, SP, 4H
0063a(41090010): SUB R1, R0, 10H
0064a(DA04D51C): BLCC MT [trap=1, pos=1237]
0065a(00E80000): ADD R0, SP, R0
0066b(91E00008): LDR R1, SP, 8H
0067b(B1000014): STR R1, R0, 14H
0068c(80E00004): LDR R0, SP, 4H
0069c(40080001): ADD R0, R0, 1H
006Ac(A0E00004): STR R0, SP, 4H
006Bd(40E80008): ADD R0, SP, 8H
006Ce .FIXUP P
006Ce(F7502011): BL MOD5 [Input] PROC2
006De(E7FFFFEE): B -18 [005CH]
password[i]f := 0X;g Oberon.SetUser(user,h password)i
006Ef(80E00004): LDR R0, SP, 4H
006Ff(41090010): SUB R1, R0, 10H
0070f(DA05081C): BLCC MT [trap=1, pos=1288]
0071f(00E80000): ADD R0, SP, R0
0072g(41000000): MOV R1, R0, 0H
0073g(B1000014): STR R1, R0, 14H
0074h(40E8000C): ADD R0, SP, CH
0075h(41000008): MOV R1, R0, 8H
0076i(42E80014): ADD R2, SP, 14H
0077i(43000010): MOV R3, R0, 10H
ENDj SetUser;
0078j .FIXUP P
0078j(F7A1300C): BL MOD10 [Oberon] PROC19
0079j(8FE00000): LDR LNK, SP, 0H
007Aj(4EE80024): ADD SP, SP, 24H
007Bj(C700000F): B LNK
PROCEDURE SetFont*;
VAR S: Texts.Scanner;
BEGINk GetArg(S)l;m
007Ck .PROC 2
007Ck .COMMAND SetFont
007Ck(4EE90078): SUB SP, SP, 78H
007Dk(AFE00000): STR LNK, SP, 0H
007El(40E80004): ADD R0, SP, 4H
007Fl .FIXUP D
007Fl(8D90004B): LDR SB, MT, MOD9 [Texts]
0080l(41D80003): ADD R1, SB, VAR3
0081m(F7FFFF7E): BL -130 [0000H]
IF S.class = Texts.Name THENn Oberon.SetFont(Fonts.This(S.s)o)p ENDq
0082n(80E00040): LDR R0, SP, 40H
0083n(40090001): SUB R0, R0, 1H
0084n(E9000004): BNE 4 [0089H]
0085o(40E80058): ADD R0, SP, 58H
0086o(41000020): MOV R1, R0, 20H
0087p .FIXUP P
0087p(F780500F): BL MOD8 [Fonts] PROC5
0088q .FIXUP P
0088q(F7A2E001): BL MOD10 [Oberon] PROC46
ENDr SetFont;
0089r(8FE00000): LDR LNK, SP, 0H
008Ar(4EE80078): ADD SP, SP, 78H
008Br(C700000F): B LNK
PROCEDURE SetColor*;
VAR S: Texts.Scanner;
BEGINs GetArg(S)t;u
008Cs .PROC 3
008Cs .COMMAND SetColor
008Cs(4EE90078): SUB SP, SP, 78H
008Ds(AFE00000): STR LNK, SP, 0H
008Et(40E80004): ADD R0, SP, 4H
008Ft .FIXUP D
008Ft(8D900010): LDR SB, MT, MOD9 [Texts]
0090t(41D80003): ADD R1, SB, VAR3
0091u(F7FFFF6E): BL -146 [0000H]
IF S.class = Texts.Int THENv Oberon.SetColor(S.i)w ENDx
0092v(80E00040): LDR R0, SP, 40H
0093v(40090003): SUB R0, R0, 3H
0094v(E9000002): BNE 2 [0097H]
0095w(80E00044): LDR R0, SP, 44H
0096x .FIXUP P
0096x(F7A2F00E): BL MOD10 [Oberon] PROC47
ENDy SetColor;
0097y(8FE00000): LDR LNK, SP, 0H
0098y(4EE80078): ADD SP, SP, 78H
0099y(C700000F): B LNK
PROCEDURE SetOffset*;
VAR S: Texts.Scanner;
BEGINz GetArg(S)a;b
009Az .PROC 4
009Az .COMMAND SetOffset
009Az(4EE90078): SUB SP, SP, 78H
009Bz(AFE00000): STR LNK, SP, 0H
009Ca(40E80004): ADD R0, SP, 4H
009Da .FIXUP D
009Da(8D90000E): LDR SB, MT, MOD9 [Texts]
009Ea(41D80003): ADD R1, SB, VAR3
009Fb(F7FFFF60): BL -160 [0000H]
IF S.class = Texts.Int THENc Oberon.SetOffset(S.i)d ENDe
00A0c(80E00040): LDR R0, SP, 40H
00A1c(40090003): SUB R0, R0, 3H
00A2c(E9000002): BNE 2 [00A5H]
00A3d(80E00044): LDR R0, SP, 44H
00A4e .FIXUP P
00A4e(F7A3000E): BL MOD10 [Oberon] PROC48
ENDf SetOffset;
00A5f(8FE00000): LDR LNK, SP, 0H
00A6f(4EE80078): ADD SP, SP, 78H
00A7f(C700000F): B LNK
PROCEDURE Date*;
VAR S: Texts.Scanner;
dt, hr, min, sec, yr, mo, day: LONGINT;
BEGINg Texts.OpenScanner(S,h Oberon.Par.text,i Oberon.Par.pos)j;k Texts.Scan(S)l;m
00A8g .PROC 5
00A8g .COMMAND Date
00A8g(4EE90094): SUB SP, SP, 94H
00A9g(AFE00000): STR LNK, SP, 0H
00AAh(40E80004): ADD R0, SP, 4H
00ABh .FIXUP D
00ABh(8D90000E): LDR SB, MT, MOD9 [Texts]
00ACh(41D80003): ADD R1, SB, VAR3
00ADi .FIXUP D
00ADi(8DA00002): LDR SB, MT, MOD10 [Oberon]
00AEi(42D8000E): ADD R2, SB, VAR14
00AFi(82200008): LDR R2, R2, 8H
00B0j .FIXUP D
00B0j(8DA00003): LDR SB, MT, MOD10 [Oberon]
00B1j(43D8000E): ADD R3, SB, VAR14
00B2j(8330000C): LDR R3, R3, CH
00B3k .FIXUP P
00B3k(F791500F): BL MOD9 [Texts] PROC21
00B4l(40E80004): ADD R0, SP, 4H
00B5l .FIXUP D
00B5l(8D900005): LDR SB, MT, MOD9 [Texts]
00B6l(41D80003): ADD R1, SB, VAR3
00B7m .FIXUP P
00B7m(F7916004): BL MOD9 [Texts] PROC22
IF S.class = Texts.Int THENn (*set clock*)
00B8n(80E00040): LDR R0, SP, 40H
00B9n(40090003): SUB R0, R0, 3H
00BAn(E9000034): BNE 52 [00EFH]
day := S.i;o Texts.Scan(S)p;q mo := S.i;r Texts.Scan(S)s;t yr := S.i;u Texts.Scan(S)v;w
00BBo(80E00044): LDR R0, SP, 44H
00BCo(A0E00090): STR R0, SP, 90H
00BDp(40E80004): ADD R0, SP, 4H
00BEp .FIXUP D
00BEp(8D900009): LDR SB, MT, MOD9 [Texts]
00BFp(41D80003): ADD R1, SB, VAR3
00C0q .FIXUP P
00C0q(F7916009): BL MOD9 [Texts] PROC22
00C1r(80E00044): LDR R0, SP, 44H
00C2r(A0E0008C): STR R0, SP, 8CH
00C3s(40E80004): ADD R0, SP, 4H
00C4s .FIXUP D
00C4s(8D900006): LDR SB, MT, MOD9 [Texts]
00C5s(41D80003): ADD R1, SB, VAR3
00C6t .FIXUP P
00C6t(F7916006): BL MOD9 [Texts] PROC22
00C7u(80E00044): LDR R0, SP, 44H
00C8u(A0E00088): STR R0, SP, 88H
00C9v(40E80004): ADD R0, SP, 4H
00CAv .FIXUP D
00CAv(8D900006): LDR SB, MT, MOD9 [Texts]
00CBv(41D80003): ADD R1, SB, VAR3
00CCw .FIXUP P
00CCw(F7916006): BL MOD9 [Texts] PROC22
hr := S.i;x Texts.Scan(S)y;z min := S.i;a Texts.Scan(S)b;c sec := S.i;d
00CDx(80E00044): LDR R0, SP, 44H
00CEx(A0E0007C): STR R0, SP, 7CH
00CFy(40E80004): ADD R0, SP, 4H
00D0y .FIXUP D
00D0y(8D900006): LDR SB, MT, MOD9 [Texts]
00D1y(41D80003): ADD R1, SB, VAR3
00D2z .FIXUP P
00D2z(F7916006): BL MOD9 [Texts] PROC22
00D3a(80E00044): LDR R0, SP, 44H
00D4a(A0E00080): STR R0, SP, 80H
00D5b(40E80004): ADD R0, SP, 4H
00D6b .FIXUP D
00D6b(8D900006): LDR SB, MT, MOD9 [Texts]
00D7b(41D80003): ADD R1, SB, VAR3
00D8c .FIXUP P
00D8c(F7916006): BL MOD9 [Texts] PROC22
00D9d(80E00044): LDR R0, SP, 44H
00DAd(A0E00084): STR R0, SP, 84H
dt := ((((yr*16 +e mo)f*32 +g day)h*32 +i hr)j*64 +k min)l*64 +m sec;n
00DBe(80E00088): LDR R0, SP, 88H
00DCe(40010004): LSL R0, R0, 4H
00DDf(81E0008C): LDR R1, SP, 8CH
00DEf(00080001): ADD R0, R0, R1
00DFg(40010005): LSL R0, R0, 5H
00E0h(81E00090): LDR R1, SP, 90H
00E1h(00080001): ADD R0, R0, R1
00E2i(40010005): LSL R0, R0, 5H
00E3j(81E0007C): LDR R1, SP, 7CH
00E4j(00080001): ADD R0, R0, R1
00E5k(40010006): LSL R0, R0, 6H
00E6l(81E00080): LDR R1, SP, 80H
00E7l(00080001): ADD R0, R0, R1
00E8m(40010006): LSL R0, R0, 6H
00E9n(81E00084): LDR R1, SP, 84H
00EAn(00080001): ADD R0, R0, R1
00EBn(A0E00078): STR R0, SP, 78H
Kernel.SetClock(dt)o
00ECo(80E00078): LDR R0, SP, 78H
ELSEp (*read clock*) Textsq.WriteString(W,r "System.Clock")s;t
00EDp .FIXUP P
00EDp(F7113015): BL MOD1 [Kernel] PROC19
00EEq(E7000011): B 17 [0100H]
00EFr .FIXUP D
00EFr(8D000019): LDR SB, MT, MOD0 [System]
00F0r(40D80000): ADD R0, SB, 0H [data]
00F1r .FIXUP D
00F1r(8D900002): LDR SB, MT, MOD9 [Texts]
00F2r(41D80005): ADD R1, SB, VAR5
00F3s .FIXUP D
00F3s(8D000002): LDR SB, MT, MOD0 [System]
00F4s(42D800C4): ADD R2, SB, C4H ["System.Clock"]
00F5s(4300000D): MOV R3, R0, DH
00F6t .FIXUP P
00F6t(F791D009): BL MOD9 [Texts] PROC29
dt := Oberon.Clock();u Texts.WriteClock(W,v dt)w;x EndLine
00F7u .FIXUP P
00F7u(F7A14001): BL MOD10 [Oberon] PROC20
00F8u(A0E00078): STR R0, SP, 78H
00F9v .FIXUP D
00F9v(8D000006): LDR SB, MT, MOD0 [System]
00FAv(40D80000): ADD R0, SB, 0H [data]
00FBv .FIXUP D
00FBv(8D900002): LDR SB, MT, MOD9 [Texts]
00FCv(41D80005): ADD R1, SB, VAR5
00FDw(82E00078): LDR R2, SP, 78H
00FEx .FIXUP P
00FEx(F7922007): BL MOD9 [Texts] PROC34
ENDy
00FFy(F7FFFF2B): BL -213 [002BH]
ENDz Date;
0100z(8FE00000): LDR LNK, SP, 0H
0101z(4EE80094): ADD SP, SP, 94H
0102z(C700000F): B LNK
PROCEDURE Collect*;
BEGINa Oberon.Collect(0)b
0103a .PROC 6
0103a .COMMAND Collect
0103a(4EE90004): SUB SP, SP, 4H
0104a(AFE00000): STR LNK, SP, 0H
0105b(40000000): MOV R0, R0, 0H
ENDc Collect;
0106c .FIXUP P
0106c(F7A2D008): BL MOD10 [Oberon] PROC45
0107c(8FE00000): LDR LNK, SP, 0H
0108c(4EE80004): ADD SP, SP, 4H
0109c(C700000F): B LNK
(* ------------- Toolbox for standard display ---------------*)
PROCEDURE Open*; (*open viewer in system track*)
VAR X, Y: INTEGER;
V: Viewers.Viewer;
S: Texts.Scanner;
BEGINd GetArg(S)e;f
010Ad .PROC 7
010Ad .COMMAND Open
010Ad(4EE90084): SUB SP, SP, 84H
010Bd(AFE00000): STR LNK, SP, 0H
010Ce(40E80010): ADD R0, SP, 10H
010De .FIXUP D
010De(8D900012): LDR SB, MT, MOD9 [Texts]
010Ee(41D80003): ADD R1, SB, VAR3
010Ff(F7FFFEF0): BL -272 [0000H]
IF S.class = Texts.Name THENg
0110g(80E0004C): LDR R0, SP, 4CH
0111g(40090001): SUB R0, R0, 1H
0112g(E900001E): BNE 30 [0131H]
Oberon.AllocateSystemViewer(Oberon.Par.vwr.hXi,j X,k Y)l;m
0113h .FIXUP D
0113h(8DA00006): LDR SB, MT, MOD10 [Oberon]
0114h(40D8000E): ADD R0, SB, VAR14
0115i(80000000): LDR R0, R0, 0H
0116i(D10ABD4C): BLEQ MT [trap=4, pos=2749]
0117j(80000008): LDR R0, R0, 8H
0118k(41E80004): ADD R1, SP, 4H
0119l(42E80008): ADD R2, SP, 8H
011Am .FIXUP P
011Am(F7A23014): BL MOD10 [Oberon] PROC35
V := MenuViewers.New(
TextFrames.NewMenu(S.s,n StandardMenu)o,p
011Bn(40E80064): ADD R0, SP, 64H
011Cn(41000020): MOV R1, R0, 20H
011Do .FIXUP D
011Do(8D00000A): LDR SB, MT, MOD0 [System]
011Eo(42D80048): ADD R2, SB, 48H ["System.Close System.Copy System.Grow Edit.Search Edit.Store"]
011Fo(4300003C): MOV R3, R0, 3CH
0120p .FIXUP P
0120p(F7C2C006): BL MOD12 [TextFrames] PROC44
TextFrames.NewText(TextFramesq.Text(S.s)r,s 0)t,u TextFrames.menuH,v X,w Y)x
0121q(4EE90004): SUB SP, SP, 4H
0122q(A0E00000): STR R0, SP, 0H
0123r(40E80068): ADD R0, SP, 68H
0124r(41000020): MOV R1, R0, 20H
0125s .FIXUP P
0125s(F7C2B005): BL MOD12 [TextFrames] PROC43
0126t(41000000): MOV R1, R0, 0H
0127u .FIXUP P
0127u(F7C2D002): BL MOD12 [TextFrames] PROC45
0128u(01000000): MOV R1, R0, R0
0129u(80E00000): LDR R0, SP, 0H
012Au(4EE80004): ADD SP, SP, 4H
012Bv .FIXUP D
012Bv(8DC0000E): LDR SB, MT, MOD12 [TextFrames]
012Cv(82D00005): LDR R2, SB, VAR5
012Dw(83E00004): LDR R3, SP, 4H
012Ex(84E00008): LDR R4, SP, 8H
ENDy
012Fy .FIXUP P
012Fy(F7B04008): BL MOD11 [MenuViewers] PROC4
0130y(A0E0000C): STR R0, SP, CH
ENDz Open;
0131z(8FE00000): LDR LNK, SP, 0H
0132z(4EE80084): ADD SP, SP, 84H
0133z(C700000F): B LNK
PROCEDURE Clear*; (*clear Log*)
VAR T: Texts.Text; F: Display.Frame; buf: Texts.Buffer;
BEGINa F := Oberon.Par.frame;b
0134a .PROC 8
0134a .COMMAND Clear
0134a(4EE90010): SUB SP, SP, 10H
0135a(AFE00000): STR LNK, SP, 0H
0136b .FIXUP D
0136b(8DA0000B): LDR SB, MT, MOD10 [Oberon]
0137b(40D8000E): ADD R0, SB, VAR14
0138b(80000004): LDR R0, R0, 4H
0139b(A0E00008): STR R0, SP, 8H
IF (F # NIL)c & (dF.nexte IS TextFrames.Frame)f & (gF = Oberon.Par.vwr.hdsci)j THENk
013Ac(80E00008): LDR R0, SP, 8H
013Bd(E100002B): BEQ 43 [0167H]
013Ce(80E00008): LDR R0, SP, 8H
013De(D10C0B4C): BLEQ MT [trap=4, pos=3083]
013Ef(80000000): LDR R0, R0, 0H
013Ff(E1000005): BEQ 5 [0145H]
0140f(810FFFF8): LDR R1, R0, FFFFFFF8H
0141f(81100004): LDR R1, R1, 4H
0142f .FIXUP D
0142f(8DC0000C): LDR SB, MT, MOD12 [TextFrames]
0143f(42D80002): ADD R2, SB, VAR2
0144f(02290001): SUB R2, R2, R1
0145g(E9000021): BNE 33 [0167H]
0146h .FIXUP D
0146h(8DA00004): LDR SB, MT, MOD10 [Oberon]
0147h(40D8000E): ADD R0, SB, VAR14
0148i(80000000): LDR R0, R0, 0H
0149i(D10C3A4C): BLEQ MT [trap=4, pos=3130]
014Aj(81E00008): LDR R1, SP, 8H
014Bj(80000004): LDR R0, R0, 4H
014Cj(01190000): SUB R1, R1, R0
014Dk(E9000019): BNE 25 [0167H]
NEW(buf);l Texts.OpenBuf(buf)m;n T := F.nexto(TextFrames.Frame)p.text;q Texts.Delete(T,r 0,s T.lent,u buf)v
014El(40E8000C): ADD R0, SP, CH
014Fl .FIXUP D
014Fl(8D900009): LDR SB, MT, MOD9 [Texts]
0150l(41D80004): ADD R1, SB, VAR4
0151l(D70C500C): BL MT [trap=0, pos=3152]
0152m(80E0000C): LDR R0, SP, CH
0153n .FIXUP P
0153n(F790A024): BL MOD9 [Texts] PROC10
0154o(80E00008): LDR R0, SP, 8H
0155o(D10C704C): BLEQ MT [trap=4, pos=3184]
0156p(80000000): LDR R0, R0, 0H
0157p(E1000005): BEQ 5 [015DH]
0158p(810FFFF8): LDR R1, R0, FFFFFFF8H
0159p(81100004): LDR R1, R1, 4H
015Ap .FIXUP D
015Ap(8DC0000B): LDR SB, MT, MOD12 [TextFrames]
015Bp(42D80002): ADD R2, SB, VAR2
015Cp(02290001): SUB R2, R2, R1
015Dp(D90C822C): BLNE MT [trap=2, pos=3202]
015Eq(8000001C): LDR R0, R0, 1CH
015Fq(A0E00004): STR R0, SP, 4H
0160r(80E00004): LDR R0, SP, 4H
0161s(41000000): MOV R1, R0, 0H
0162t(82E00004): LDR R2, SP, 4H
0163t(D10CA14C): BLEQ MT [trap=4, pos=3233]
0164u(82200000): LDR R2, R2, 0H
0165v(83E0000C): LDR R3, SP, CH
ENDw
0166w .FIXUP P
0166w(F790F013): BL MOD9 [Texts] PROC15
ENDx Clear;
0167x(8FE00000): LDR LNK, SP, 0H
0168x(4EE80010): ADD SP, SP, 10H
0169x(C700000F): B LNK
PROCEDURE Close*;
VAR V: Viewers.Viewer;
BEGINy
016Ay .PROC 9
016Ay .COMMAND Close
016Ay(4EE90008): SUB SP, SP, 8H
016By(AFE00000): STR LNK, SP, 0H
IF Oberon.Par.frame =z Oberon.Par.vwr.adscb THENc V := Oberon.Par.vwr
016Cz .FIXUP D
016Cz(8DA00012): LDR SB, MT, MOD10 [Oberon]
016Dz(40D8000E): ADD R0, SB, VAR14
016Ea .FIXUP D
016Ea(8DA00002): LDR SB, MT, MOD10 [Oberon]
016Fa(41D8000E): ADD R1, SB, VAR14
0170b(81100000): LDR R1, R1, 0H
0171b(D10D214C): BLEQ MT [trap=4, pos=3361]
0172c(80000004): LDR R0, R0, 4H
0173c(81100004): LDR R1, R1, 4H
0174c(00090001): SUB R0, R0, R1
0175c(E9000005): BNE 5 [017BH]
ELSEd Ve := Oberon.MarkedViewer()
0176d .FIXUP D
0176d(8DA00008): LDR SB, MT, MOD10 [Oberon]
0177d(40D8000E): ADD R0, SB, VAR14
0178d(80000000): LDR R0, R0, 0H
0179d(A0E00004): STR R0, SP, 4H
017Ae(E7000002): B 2 [017DH]
ENDf;
017Bf .FIXUP P
017Bf(F7A24015): BL MOD10 [Oberon] PROC36
017Cf(A0E00004): STR R0, SP, 4H
Viewers.Close(V)g
017Dg(80E00004): LDR R0, SP, 4H
ENDh Close;
017Eh .FIXUP P
017Eh(F7707003): BL MOD7 [Viewers] PROC7
017Fh(8FE00000): LDR LNK, SP, 0H
0180h(4EE80008): ADD SP, SP, 8H
0181h(C700000F): B LNK
PROCEDURE CloseTrack*;
VAR V: Viewers.Viewer;
BEGINi V := Oberon.MarkedViewer();j Viewers.CloseTrack(V.Xk)l
0182i .PROC 10
0182i .COMMAND CloseTrack
0182i(4EE90008): SUB SP, SP, 8H
0183i(AFE00000): STR LNK, SP, 0H
0184j .FIXUP P
0184j(F7A24006): BL MOD10 [Oberon] PROC36
0185j(A0E00004): STR R0, SP, 4H
0186k(80E00004): LDR R0, SP, 4H
0187k(D10DF94C): BLEQ MT [trap=4, pos=3577]
0188l(80000008): LDR R0, R0, 8H
ENDm CloseTrack;
0189m .FIXUP P
0189m(F770E005): BL MOD7 [Viewers] PROC14
018Am(8FE00000): LDR LNK, SP, 0H
018Bm(4EE80008): ADD SP, SP, 8H
018Cm(C700000F): B LNK
PROCEDURE Recall*;
VAR V: Viewers.Viewer; M: Viewers.ViewerMsg;
BEGINn Viewers.Recall(V)o;p
018Dn .PROC 11
018Dn .COMMAND Recall
018Dn(4EE90020): SUB SP, SP, 20H
018En(AFE00000): STR LNK, SP, 0H
018Fo(40E80004): ADD R0, SP, 4H
0190p .FIXUP P
0190p(F7708007): BL MOD7 [Viewers] PROC8
IF (V#NIL)q & (rV.states = 0)t THENu
0191q(80E00004): LDR R0, SP, 4H
0192r(E100001F): BEQ 31 [01B2H]
0193s(80E00004): LDR R0, SP, 4H
0194s(D10E884C): BLEQ MT [trap=4, pos=3720]
0195t(8000001C): LDR R0, R0, 1CH
0196u(E900001B): BNE 27 [01B2H]
Viewers.Open(V,v V.Xw,x V.Yy + V.Hz)a;b M.id := Viewers.restore;c V.handled(Ve,f M)g
0197v(80E00004): LDR R0, SP, 4H
0198w(81E00004): LDR R1, SP, 4H
0199w(D10EAC4C): BLEQ MT [trap=4, pos=3756]
019Ax(81100008): LDR R1, R1, 8H
019By(82E00004): LDR R2, SP, 4H
019Cy(D10EB14C): BLEQ MT [trap=4, pos=3761]
019Dz(83E00004): LDR R3, SP, 4H
019Ez(D10EB74C): BLEQ MT [trap=4, pos=3767]
019Fa(8220000C): LDR R2, R2, CH
01A0a(83300014): LDR R3, R3, 14H
01A1a(02280003): ADD R2, R2, R3
01A2b .FIXUP P
01A2b(F7705012): BL MOD7 [Viewers] PROC5
01A3c(40000000): MOV R0, R0, 0H
01A4c(A0E00008): STR R0, SP, 8H
01A5d(80E00004): LDR R0, SP, 4H
01A6d(D10EDB4C): BLEQ MT [trap=4, pos=3803]
01A7e(80000018): LDR R0, R0, 18H
01A8e(4EE90004): SUB SP, SP, 4H
01A9e(A0E00000): STR R0, SP, 0H
01AAf(80E00008): LDR R0, SP, 8H
01ABg(41E8000C): ADD R1, SP, CH
01ACg .FIXUP D
01ACg(8D700036): LDR SB, MT, MOD7 [Viewers]
01ADg(42D80002): ADD R2, SB, VAR2
ENDh
01AEh(83E00000): LDR R3, SP, 0H
01AFh(4EE80004): ADD SP, SP, 4H
01B0h(D10EE95C): BLEQ MT [trap=5, pos=3817]
01B1h(D7000003): BL R3
ENDi Recall;
01B2i(8FE00000): LDR LNK, SP, 0H
01B3i(4EE80020): ADD SP, SP, 20H
01B4i(C700000F): B LNK
PROCEDURE Copy*;
VAR V, V1: Viewers.Viewer; M: Oberon.CopyMsg; N: Viewers.ViewerMsg;
BEGINj V := Oberon.Par.vwr;k V.handlel(Vm,n M)o;p V1 := M.F(Viewers.Viewer)q;r
01B5j .PROC 12
01B5j .COMMAND Copy
01B5j(4EE90028): SUB SP, SP, 28H
01B6j(AFE00000): STR LNK, SP, 0H
01B7k .FIXUP D
01B7k(8DA0000B): LDR SB, MT, MOD10 [Oberon]
01B8k(40D8000E): ADD R0, SB, VAR14
01B9k(80000000): LDR R0, R0, 0H
01BAk(A0E00004): STR R0, SP, 4H
01BBl(80E00004): LDR R0, SP, 4H
01BCl(D10F794C): BLEQ MT [trap=4, pos=3961]
01BDm(80000018): LDR R0, R0, 18H
01BEm(4EE90004): SUB SP, SP, 4H
01BFm(A0E00000): STR R0, SP, 0H
01C0n(80E00008): LDR R0, SP, 8H
01C1o(41E80010): ADD R1, SP, 10H
01C2o .FIXUP D
01C2o(8DA0000B): LDR SB, MT, MOD10 [Oberon]
01C3o(42D80006): ADD R2, SB, VAR6
01C4p(83E00000): LDR R3, SP, 0H
01C5p(4EE80004): ADD SP, SP, 4H
01C6p(D10F805C): BLEQ MT [trap=5, pos=3968]
01C7p(D7000003): BL R3
01C8q(80E0000C): LDR R0, SP, CH
01C9q(E1000005): BEQ 5 [01CFH]
01CAq(810FFFF8): LDR R1, R0, FFFFFFF8H
01CBq(81100004): LDR R1, R1, 4H
01CCq .FIXUP D
01CCq(8D70000A): LDR SB, MT, MOD7 [Viewers]
01CDq(42D80001): ADD R2, SB, VAR1
01CEq(02290001): SUB R2, R2, R1
01CFq(D90F9A2C): BLNE MT [trap=2, pos=3994]
01D0r(A0E00008): STR R0, SP, 8H
Viewers.Open(V1,s V.Xt,u V.Yv + V.Hw DIV 2)x;y
01D1s(80E00008): LDR R0, SP, 8H
01D2t(81E00004): LDR R1, SP, 4H
01D3t(D10FB44C): BLEQ MT [trap=4, pos=4020]
01D4u(81100008): LDR R1, R1, 8H
01D5v(82E00004): LDR R2, SP, 4H
01D6v(D10FB94C): BLEQ MT [trap=4, pos=4025]
01D7w(83E00004): LDR R3, SP, 4H
01D8w(D10FBF4C): BLEQ MT [trap=4, pos=4031]
01D9x(83300014): LDR R3, R3, 14H
01DAx(43320001): ASR R3, R3, 1H
01DBx(8220000C): LDR R2, R2, CH
01DCx(02280003): ADD R2, R2, R3
01DDy .FIXUP P
01DDy(F770503B): BL MOD7 [Viewers] PROC5
N.id := Viewers.restore;z V1.handlea(V1b,c N)d
01DEz(40000000): MOV R0, R0, 0H
01DFz(A0E00010): STR R0, SP, 10H
01E0a(80E00008): LDR R0, SP, 8H
01E1a(D10FEE4C): BLEQ MT [trap=4, pos=4078]
01E2b(80000018): LDR R0, R0, 18H
01E3b(4EE90004): SUB SP, SP, 4H
01E4b(A0E00000): STR R0, SP, 0H
01E5c(80E0000C): LDR R0, SP, CH
01E6d(41E80014): ADD R1, SP, 14H
01E7d .FIXUP D
01E7d(8D70001B): LDR SB, MT, MOD7 [Viewers]
01E8d(42D80002): ADD R2, SB, VAR2
ENDe Copy;
01E9e(83E00000): LDR R3, SP, 0H
01EAe(4EE80004): ADD SP, SP, 4H
01EBe(D10FFB5C): BLEQ MT [trap=5, pos=4091]
01ECe(D7000003): BL R3
01EDe(8FE00000): LDR LNK, SP, 0H
01EEe(4EE80028): ADD SP, SP, 28H
01EFe(C700000F): B LNK
PROCEDURE Grow*;
VAR V, V1: Viewers.Viewer; M: Oberon.CopyMsg; N: Viewers.ViewerMsg;
DW, DH: INTEGER;
BEGINf V := Oberon.Par.vwr;g
01F0f .PROC 13
01F0f .COMMAND Grow
01F0f(4EE90030): SUB SP, SP, 30H
01F1f(AFE00000): STR LNK, SP, 0H
01F2g .FIXUP D
01F2g(8DA0000B): LDR SB, MT, MOD10 [Oberon]
01F3g(40D8000E): ADD R0, SB, VAR14
01F4g(80000000): LDR R0, R0, 0H
01F5g(A0E00004): STR R0, SP, 4H
DW := Oberon.DisplayWidth(V.Xh)i;j DH := Oberon.DisplayHeight(V.Xk)l;m
01F6h(80E00004): LDR R0, SP, 4H
01F7h(D110B34C): BLEQ MT [trap=4, pos=4275]
01F8i(80000008): LDR R0, R0, 8H
01F9j .FIXUP P
01F9j(F7A1D01C): BL MOD10 [Oberon] PROC29
01FAj(A0E00028): STR R0, SP, 28H
01FBk(80E00004): LDR R0, SP, 4H
01FCk(D110D44C): BLEQ MT [trap=4, pos=4308]
01FDl(80000008): LDR R0, R0, 8H
01FEm .FIXUP P
01FEm(F7A1E005): BL MOD10 [Oberon] PROC30
01FFm(A0E0002C): STR R0, SP, 2CH
IF V.Hn < DH - Viewers.minH THENo Oberon.OpenTrack(V.Xp,q V.Wr)s
0200n(80E00004): LDR R0, SP, 4H
0201n(D110E14C): BLEQ MT [trap=4, pos=4321]
0202o(81E0002C): LDR R1, SP, 2CH
0203o .FIXUP D
0203o(8D700011): LDR SB, MT, MOD7 [Viewers]
0204o(82D00004): LDR R2, SB, VAR4
0205o(01190002): SUB R1, R1, R2
0206o(80000014): LDR R0, R0, 14H
0207o(00090001): SUB R0, R0, R1
0208o(ED000008): BGE 8 [0211H]
0209p(80E00004): LDR R0, SP, 4H
020Ap(D1110F4C): BLEQ MT [trap=4, pos=4367]
020Bq(80000008): LDR R0, R0, 8H
020Cr(81E00004): LDR R1, SP, 4H
020Dr(D111144C): BLEQ MT [trap=4, pos=4372]
020Es(81100010): LDR R1, R1, 10H
ELSIFt Vu.Wv < DW THENw Oberon.OpenTrack(Oberon.UserTrack(V.Xx)y,z DW)a
020Ft .FIXUP P
020Ft(F7A1F011): BL MOD10 [Oberon] PROC31
0210u(E700000C): B 12 [021DH]
0211v(80E00004): LDR R0, SP, 4H
0212v(D111234C): BLEQ MT [trap=4, pos=4387]
0213w(80000010): LDR R0, R0, 10H
0214w(81E00028): LDR R1, SP, 28H
0215w(00090001): SUB R0, R0, R1
0216w(ED000006): BGE 6 [021DH]
0217x(80E00004): LDR R0, SP, 4H
0218x(D111534C): BLEQ MT [trap=4, pos=4435]
0219y(80000008): LDR R0, R0, 8H
021Az .FIXUP P
021Az(F7A2000B): BL MOD10 [Oberon] PROC32
021Ba(81E00028): LDR R1, SP, 28H
ENDb;
021Cb .FIXUP P
021Cb(F7A1F002): BL MOD10 [Oberon] PROC31
IF (V.Hc < DH - Viewers.minH)d OR (eV.Wf < DW)g THENh
021Dc(80E00004): LDR R0, SP, 4H
021Ec(D1116E4C): BLEQ MT [trap=4, pos=4462]
021Fd(81E0002C): LDR R1, SP, 2CH
0220d .FIXUP D
0220d(8D70001D): LDR SB, MT, MOD7 [Viewers]
0221d(82D00004): LDR R2, SB, VAR4
0222d(01190002): SUB R1, R1, R2
0223d(80000014): LDR R0, R0, 14H
0224d(00090001): SUB R0, R0, R1
0225e(E5000006): BLT 6 [022CH]
0226f(80E00004): LDR R0, SP, 4H
0227f(D1118B4C): BLEQ MT [trap=4, pos=4491]
0228g(80000010): LDR R0, R0, 10H
0229g(81E00028): LDR R1, SP, 28H
022Ag(00090001): SUB R0, R0, R1
022Bh(ED00002B): BGE 43 [0257H]
V.handlei(Vj,k M)l;m V1 := M.F(Viewers.Viewer)n;o
022Ci(80E00004): LDR R0, SP, 4H
022Di(D111A54C): BLEQ MT [trap=4, pos=4517]
022Ej(80000018): LDR R0, R0, 18H
022Fj(4EE90004): SUB SP, SP, 4H
0230j(A0E00000): STR R0, SP, 0H
0231k(80E00008): LDR R0, SP, 8H
0232l(41E80010): ADD R1, SP, 10H
0233l .FIXUP D
0233l(8DA00013): LDR SB, MT, MOD10 [Oberon]
0234l(42D80006): ADD R2, SB, VAR6
0235m(83E00000): LDR R3, SP, 0H
0236m(4EE80004): ADD SP, SP, 4H
0237m(D111AC5C): BLEQ MT [trap=5, pos=4524]
0238m(D7000003): BL R3
0239n(80E0000C): LDR R0, SP, CH
023An(E1000005): BEQ 5 [0240H]
023Bn(810FFFF8): LDR R1, R0, FFFFFFF8H
023Cn(81100004): LDR R1, R1, 4H
023Dn .FIXUP D
023Dn(8D70000A): LDR SB, MT, MOD7 [Viewers]
023En(42D80001): ADD R2, SB, VAR1
023Fn(02290001): SUB R2, R2, R1
0240n(D911C62C): BLNE MT [trap=2, pos=4550]
0241o(A0E00008): STR R0, SP, 8H
Viewers.Open(V1,p V.Xq,r DH)s;t;
0242p(80E00008): LDR R0, SP, 8H
0243q(81E00004): LDR R1, SP, 4H
0244q(D111E24C): BLEQ MT [trap=4, pos=4578]
0245r(81100008): LDR R1, R1, 8H
0246s(82E0002C): LDR R2, SP, 2CH
0247t .FIXUP P
0247t(F770502B): BL MOD7 [Viewers] PROC5
N.id := Viewers.restore;u V1.handlev(V1w,x N)y
0248u(40000000): MOV R0, R0, 0H
0249u(A0E00010): STR R0, SP, 10H
024Av(80E00008): LDR R0, SP, 8H
024Bv(D112124C): BLEQ MT [trap=4, pos=4626]
024Cw(80000018): LDR R0, R0, 18H
024Dw(4EE90004): SUB SP, SP, 4H
024Ew(A0E00000): STR R0, SP, 0H
024Fx(80E0000C): LDR R0, SP, CH
0250y(41E80014): ADD R1, SP, 14H
0251y .FIXUP D
0251y(8D700014): LDR SB, MT, MOD7 [Viewers]
0252y(42D80002): ADD R2, SB, VAR2
ENDz
0253z(83E00000): LDR R3, SP, 0H
0254z(4EE80004): ADD SP, SP, 4H
0255z(D112215C): BLEQ MT [trap=5, pos=4641]
0256z(D7000003): BL R3
ENDa Grow;
0257a(8FE00000): LDR LNK, SP, 0H
0258a(4EE80030): ADD SP, SP, 30H
0259a(C700000F): B LNK
(* ------------- Toolbox for module management ---------------*)
PROCEDURE Free1(VAR S: Texts.Scanner);
BEGINb Texts.WriteString(W,c S.s)d;e Texts.WriteString(W,f " unloading")g;h
025Ab(4EE9000C): SUB SP, SP, CH
025Bb(AFE00000): STR LNK, SP, 0H
025Cb(A0E00004): STR R0, SP, 4H
025Db(A1E00008): STR R1, SP, 8H
025Ec .FIXUP D
025Ec(8D00000D): LDR SB, MT, MOD0 [System]
025Fc(40D80000): ADD R0, SB, 0H [data]
0260c .FIXUP D
0260c(8D900002): LDR SB, MT, MOD9 [Texts]
0261c(41D80005): ADD R1, SB, VAR5
0262d(82E00004): LDR R2, SP, 4H
0263d(42280054): ADD R2, R2, 54H
0264d(43000020): MOV R3, R0, 20H
0265e .FIXUP P
0265e(F791D01E): BL MOD9 [Texts] PROC29
0266f .FIXUP D
0266f(8D000006): LDR SB, MT, MOD0 [System]
0267f(40D80000): ADD R0, SB, 0H [data]
0268f .FIXUP D
0268f(8D900002): LDR SB, MT, MOD9 [Texts]
0269f(41D80005): ADD R1, SB, VAR5
026Ag .FIXUP D
026Ag(8D000002): LDR SB, MT, MOD0 [System]
026Bg(42D800D4): ADD R2, SB, D4H [" unloading"]
026Cg(4300000B): MOV R3, R0, BH
026Dh .FIXUP P
026Dh(F791D008): BL MOD9 [Texts] PROC29
Modules.Free(S.s)i;j
026Ei(80E00004): LDR R0, SP, 4H
026Fi(40080054): ADD R0, R0, 54H
0270i(41000020): MOV R1, R0, 20H
0271j .FIXUP P
0271j(F740A004): BL MOD4 [Modules] PROC10
IF Modules.res # 0 THENk Texts.WriteString(W,l " failed")m ENDn;
0272k .FIXUP D
0272k(8D400008): LDR SB, MT, MOD4 [Modules]
0273k(80D00005): LDR R0, SB, VAR5
0274k(E1000008): BEQ 8 [027DH]
0275l .FIXUP D
0275l(8D000003): LDR SB, MT, MOD0 [System]
0276l(40D80000): ADD R0, SB, 0H [data]
0277l .FIXUP D
0277l(8D900002): LDR SB, MT, MOD9 [Texts]
0278l(41D80005): ADD R1, SB, VAR5
0279m .FIXUP D
0279m(8D000002): LDR SB, MT, MOD0 [System]
027Am(42D800E0): ADD R2, SB, E0H [" failed"]
027Bm(43000008): MOV R3, R0, 8H
027Cn .FIXUP P
027Cn(F791D00B): BL MOD9 [Texts] PROC29
EndLine
ENDo Free1;
027Do(F7FFFDAD): BL -595 [002BH]
027Eo(8FE00000): LDR LNK, SP, 0H
027Fo(4EE8000C): ADD SP, SP, CH
0280o(C700000F): B LNK
PROCEDURE Free*;
VAR T: Texts.Text;
beg, end, time: LONGINT;
S: Texts.Scanner;
BEGINp Texts.WriteString(W,q "System.Free")r;s EndLine;t
0281p .PROC 14
0281p .COMMAND Free
0281p(4EE90088): SUB SP, SP, 88H
0282p(AFE00000): STR LNK, SP, 0H
0283q .FIXUP D
0283q(8D00000A): LDR SB, MT, MOD0 [System]
0284q(40D80000): ADD R0, SB, 0H [data]
0285q .FIXUP D
0285q(8D900002): LDR SB, MT, MOD9 [Texts]
0286q(41D80005): ADD R1, SB, VAR5
0287r .FIXUP D
0287r(8D000002): LDR SB, MT, MOD0 [System]
0288r(42D800E8): ADD R2, SB, E8H ["System.Free"]
0289r(4300000C): MOV R3, R0, CH
028As .FIXUP P
028As(F791D00E): BL MOD9 [Texts] PROC29
028Bt(F7FFFD9F): BL -609 [002BH]
Texts.OpenScanner(S,u Oberon.Par.text,v Oberon.Par.pos)w;x Texts.Scan(S)y;z
028Cu(40E80014): ADD R0, SP, 14H
028Du .FIXUP D
028Du(8D900006): LDR SB, MT, MOD9 [Texts]
028Eu(41D80003): ADD R1, SB, VAR3
028Fv .FIXUP D
028Fv(8DA00002): LDR SB, MT, MOD10 [Oberon]
0290v(42D8000E): ADD R2, SB, VAR14
0291v(82200008): LDR R2, R2, 8H
0292w .FIXUP D
0292w(8DA00003): LDR SB, MT, MOD10 [Oberon]
0293w(43D8000E): ADD R3, SB, VAR14
0294w(8330000C): LDR R3, R3, CH
0295x .FIXUP P
0295x(F791500B): BL MOD9 [Texts] PROC21
0296y(40E80014): ADD R0, SP, 14H
0297y .FIXUP D
0297y(8D900005): LDR SB, MT, MOD9 [Texts]
0298y(41D80003): ADD R1, SB, VAR3
0299z .FIXUP P
0299z(F7916004): BL MOD9 [Texts] PROC22
IF (S.class = Texts.Char)a & (bS.c = "^")c THENd
029Aa(80E00050): LDR R0, SP, 50H
029Ba(40090006): SUB R0, R0, 6H
029Cb(E900001D): BNE 29 [02BAH]
029Dc(90E00060): LDR R0, SP, 60H
029Ec(4009005E): SUB R0, R0, 5EH
029Fd(E900001A): BNE 26 [02BAH]
Oberon.GetSelection(T,e beg,f end,g time)h;i
02A0e(40E80004): ADD R0, SP, 4H
02A1f(41E80008): ADD R1, SP, 8H
02A2g(42E8000C): ADD R2, SP, CH
02A3h(43E80010): ADD R3, SP, 10H
02A4i .FIXUP P
02A4i(F7A2900B): BL MOD10 [Oberon] PROC41
IF time >= 0 THENj Texts.OpenScanner(S,k T,l beg)m;n Texts.Scan(S)o;p
02A5j(80E00010): LDR R0, SP, 10H
02A6j(40090000): SUB R0, R0, 0H
02A7j(E5000011): BLT 17 [02B9H]
02A8k(40E80014): ADD R0, SP, 14H
02A9k .FIXUP D
02A9k(8D900012): LDR SB, MT, MOD9 [Texts]
02AAk(41D80003): ADD R1, SB, VAR3
02ABl(82E00004): LDR R2, SP, 4H
02ACm(83E00008): LDR R3, SP, 8H
02ADn .FIXUP P
02ADn(F7915009): BL MOD9 [Texts] PROC21
02AEo(40E80014): ADD R0, SP, 14H
02AFo .FIXUP D
02AFo(8D900006): LDR SB, MT, MOD9 [Texts]
02B0o(41D80003): ADD R1, SB, VAR3
02B1p .FIXUP P
02B1p(F7916004): BL MOD9 [Texts] PROC22
IF S.class = Texts.Name THENq Free1(S)r ENDs
02B2q(80E00050): LDR R0, SP, 50H
02B3q(40090001): SUB R0, R0, 1H
02B4q(E9000004): BNE 4 [02B9H]
02B5r(40E80014): ADD R0, SP, 14H
02B6r .FIXUP D
02B6r(8D900007): LDR SB, MT, MOD9 [Texts]
02B7r(41D80003): ADD R1, SB, VAR3
02B8s(F7FFFFA1): BL -95 [025AH]
END
ELSE
WHILEt S.class = Texts.Name DOu Free1(S)v;w Texts.Scan(S)x ENDy
02B9t(E700000C): B 12 [02C6H]
02BAu(80E00050): LDR R0, SP, 50H
02BBu(40090001): SUB R0, R0, 1H
02BCu(E9000009): BNE 9 [02C6H]
02BDv(40E80014): ADD R0, SP, 14H
02BEv .FIXUP D
02BEv(8D900008): LDR SB, MT, MOD9 [Texts]
02BFv(41D80003): ADD R1, SB, VAR3
02C0w(F7FFFF99): BL -103 [025AH]
02C1x(40E80014): ADD R0, SP, 14H
02C2x .FIXUP D
02C2x(8D900004): LDR SB, MT, MOD9 [Texts]
02C3x(41D80003): ADD R1, SB, VAR3
02C4y .FIXUP P
02C4y(F7916013): BL MOD9 [Texts] PROC22
02C5y(E7FFFFF4): B -12 [02BAH]
END ;
Oberon.Collect(0)z
02C6z(40000000): MOV R0, R0, 0H
ENDa Free;
02C7a .FIXUP P
02C7a(F7A2D003): BL MOD10 [Oberon] PROC45
02C8a(8FE00000): LDR LNK, SP, 0H
02C9a(4EE80088): ADD SP, SP, 88H
02CAa(C700000F): B LNK
PROCEDURE FreeFonts*;
BEGINb Texts.WriteString(W,c "System.FreeFonts")d;e Fonts.Free;f EndLine
02CBb .PROC 15
02CBb .COMMAND FreeFonts
02CBb(4EE90004): SUB SP, SP, 4H
02CCb(AFE00000): STR LNK, SP, 0H
02CDc .FIXUP D
02CDc(8D00000B): LDR SB, MT, MOD0 [System]
02CEc(40D80000): ADD R0, SB, 0H [data]
02CFc .FIXUP D
02CFc(8D900002): LDR SB, MT, MOD9 [Texts]
02D0c(41D80005): ADD R1, SB, VAR5
02D1d .FIXUP D
02D1d(8D000002): LDR SB, MT, MOD0 [System]
02D2d(42D800F4): ADD R2, SB, F4H ["System.FreeFonts"]
02D3d(43000011): MOV R3, R0, 11H
02D4e .FIXUP P
02D4e(F791D00D): BL MOD9 [Texts] PROC29
02D5f .FIXUP P
02D5f(F7806001): BL MOD8 [Fonts] PROC6
ENDg FreeFonts;
02D6g(F7FFFD54): BL -684 [002BH]
02D7g(8FE00000): LDR LNK, SP, 0H
02D8g(4EE80004): ADD SP, SP, 4H
02D9g(C700000F): B LNK
(* ------------- Toolbox of file system ---------------*)
PROCEDURE List(name: FileDir.FileName; adr: LONGINT; VAR cont: BOOLEAN);
VAR i0, i, j0, j: INTEGER; hp: FileDir.FileHeader;
BEGINh
02DAh(4EE90420): SUB SP, SP, 420H
02DBh(AFE00000): STR LNK, SP, 0H
02DCh(A0E00004): STR R0, SP, 4H
02DDh(A1E00008): STR R1, SP, 8H
02DEh(A2E0000C): STR R2, SP, CH
i := 0;i
02DFi(40000000): MOV R0, R0, 0H
02E0i(A0E00014): STR R0, SP, 14H
WHILE (pat[i]j > "*")k & (lpat[i]m = name[i]n)o DOp INC(i) ENDq ;
02E1j(80E00014): LDR R0, SP, 14H
02E2j(41090020): SUB R1, R0, 20H
02E3j(DA16E01C): BLCC MT [trap=1, pos=5856]
02E4j .FIXUP D
02E4j(8D000013): LDR SB, MT, MOD0 [System]
02E5j(00D80000): ADD R0, SB, R0 [global array]
02E6k(90000028): LDR R0, R0, 28H
02E7k(4009002A): SUB R0, R0, 2AH
02E8l(E6000012): BLE 18 [02FBH]
02E9m(80E00014): LDR R0, SP, 14H
02EAm(41090020): SUB R1, R0, 20H
02EBm(DA16F11C): BLCC MT [trap=1, pos=5873]
02ECm .FIXUP D
02ECm(8D000008): LDR SB, MT, MOD0 [System]
02EDm(00D80000): ADD R0, SB, R0 [global array]
02EEn(81E00014): LDR R1, SP, 14H
02EFn(42190020): SUB R2, R1, 20H
02F0n(DA16FB1C): BLCC MT [trap=1, pos=5883]
02F1n(82E00004): LDR R2, SP, 4H
02F2n(01280001): ADD R1, R2, R1
02F3o(90000028): LDR R0, R0, 28H
02F4o(91100000): LDR R1, R1, 0H
02F5o(00090001): SUB R0, R0, R1
02F6p(E9000004): BNE 4 [02FBH]
02F7q(80E00014): LDR R0, SP, 14H
02F8q(40080001): ADD R0, R0, 1H
02F9q(A0E00014): STR R0, SP, 14H
02FAq(E7FFFFE6): B -26 [02E1H]
IF (pat[i]r = 0X)s & (tname[i]u = 0X)v THENw i0 := i;x j0 := i
02FBr(80E00014): LDR R0, SP, 14H
02FCr(41090020): SUB R1, R0, 20H
02FDr(DA171B1C): BLCC MT [trap=1, pos=5915]
02FEr .FIXUP D
02FEr(8D000012): LDR SB, MT, MOD0 [System]
02FFr(00D80000): ADD R0, SB, R0 [global array]
0300s(90000028): LDR R0, R0, 28H
0301t(E900000C): BNE 12 [030EH]
0302u(80E00014): LDR R0, SP, 14H
0303u(41090020): SUB R1, R0, 20H
0304u(DA172C1C): BLCC MT [trap=1, pos=5932]
0305u(81E00004): LDR R1, SP, 4H
0306u(00180000): ADD R0, R1, R0
0307v(90000000): LDR R0, R0, 0H
0308w(E9000005): BNE 5 [030EH]
0309x(80E00014): LDR R0, SP, 14H
030Ax(A0E00010): STR R0, SP, 10H
ELSIFy patz[i]a = "*" THENb
030By(80E00014): LDR R0, SP, 14H
030Cy(A0E00018): STR R0, SP, 18H
030Dz(E700005B): B 91 [0369H]
030Ea(80E00014): LDR R0, SP, 14H
030Fa(41090020): SUB R1, R0, 20H
0310a(DA17591C): BLCC MT [trap=1, pos=5977]
0311a .FIXUP D
0311a(8D000013): LDR SB, MT, MOD0 [System]
0312a(00D80000): ADD R0, SB, R0 [global array]
0313b(90000028): LDR R0, R0, 28H
0314b(4009002A): SUB R0, R0, 2AH
0315b(E9000053): BNE 83 [0369H]
i0 := i;c j0 := i+1;d
0316c(80E00014): LDR R0, SP, 14H
0317c(A0E00010): STR R0, SP, 10H
0318d(80E00014): LDR R0, SP, 14H
0319d(40080001): ADD R0, R0, 1H
031Ad(A0E00018): STR R0, SP, 18H
WHILE name[i0]e # 0X DOf
031Be(80E00010): LDR R0, SP, 10H
031Ce(41090020): SUB R1, R0, 20H
031De(DA17931C): BLCC MT [trap=1, pos=6035]
031Ee(81E00004): LDR R1, SP, 4H
031Fe(00180000): ADD R0, R1, R0
0320f(90000000): LDR R0, R0, 0H
0321f(E1000047): BEQ 71 [0369H]
i := i0;g j := j0;h
0322g(80E00010): LDR R0, SP, 10H
0323g(A0E00014): STR R0, SP, 14H
0324h(80E00018): LDR R0, SP, 18H
0325h(A0E0001C): STR R0, SP, 1CH
WHILE (name[i]i # 0X)j & (kname[i]l = pat[j]m)n DOo INC(i);p INC(j) ENDq ;
0326i(80E00014): LDR R0, SP, 14H
0327i(41090020): SUB R1, R0, 20H
0328i(DA17CC1C): BLCC MT [trap=1, pos=6092]
0329i(81E00004): LDR R1, SP, 4H
032Ai(00180000): ADD R0, R1, R0
032Bj(90000000): LDR R0, R0, 0H
032Ck(E1000015): BEQ 21 [0342H]
032Dl(80E00014): LDR R0, SP, 14H
032El(41090020): SUB R1, R0, 20H
032Fl(DA17DD1C): BLCC MT [trap=1, pos=6109]
0330l(81E00004): LDR R1, SP, 4H
0331l(00180000): ADD R0, R1, R0
0332m(81E0001C): LDR R1, SP, 1CH
0333m(42190020): SUB R2, R1, 20H
0334m(DA17E61C): BLCC MT [trap=1, pos=6118]
0335m .FIXUP D
0335m(8D000024): LDR SB, MT, MOD0 [System]
0336m(01D80001): ADD R1, SB, R1 [global array]
0337n(90000000): LDR R0, R0, 0H
0338n(91100028): LDR R1, R1, 28H
0339n(00090001): SUB R0, R0, R1
033Ao(E9000007): BNE 7 [0342H]
033Bp(80E00014): LDR R0, SP, 14H
033Cp(40080001): ADD R0, R0, 1H
033Dp(A0E00014): STR R0, SP, 14H
033Eq(80E0001C): LDR R0, SP, 1CH
033Fq(40080001): ADD R0, R0, 1H
0340q(A0E0001C): STR R0, SP, 1CH
0341q(E7FFFFE4): B -28 [0326H]
IF pat[j]r = 0X THENs
0342r(80E0001C): LDR R0, SP, 1CH
0343r(41090020): SUB R1, R0, 20H
0344r(DA18111C): BLCC MT [trap=1, pos=6161]
0345r .FIXUP D
0345r(8D000010): LDR SB, MT, MOD0 [System]
0346r(00D80000): ADD R0, SB, R0 [global array]
0347s(90000028): LDR R0, R0, 28H
0348s(E900000E): BNE 14 [0357H]
IF name[i]t = 0X THENu (*match*) j0 := j ELSEv INCw(i0) ENDx
0349t(80E00014): LDR R0, SP, 14H
034At(41090020): SUB R1, R0, 20H
034Bt(DA18301C): BLCC MT [trap=1, pos=6192]
034Ct(81E00004): LDR R1, SP, 4H
034Dt(00180000): ADD R0, R1, R0
034Eu(90000000): LDR R0, R0, 0H
034Fu(E9000003): BNE 3 [0353H]
0350v(80E0001C): LDR R0, SP, 1CH
0351v(A0E00018): STR R0, SP, 18H
0352w(E7000003): B 3 [0356H]
0353x(80E00010): LDR R0, SP, 10H
0354x(40080001): ADD R0, R0, 1H
0355x(A0E00010): STR R0, SP, 10H
ELSIF paty[j]z = "*" THENa i0 := i;b j0 := j+1
0356y(E7000011): B 17 [0368H]
0357z(80E0001C): LDR R0, SP, 1CH
0358z(41090020): SUB R1, R0, 20H
0359z(DA18721C): BLCC MT [trap=1, pos=6258]
035Az .FIXUP D
035Az(8D000015): LDR SB, MT, MOD0 [System]
035Bz(00D80000): ADD R0, SB, R0 [global array]
035Ca(90000028): LDR R0, R0, 28H
035Da(4009002A): SUB R0, R0, 2AH
035Ea(E9000006): BNE 6 [0365H]
035Fb(80E00014): LDR R0, SP, 14H
0360b(A0E00010): STR R0, SP, 10H
ELSEc INCd(i0)
0361c(80E0001C): LDR R0, SP, 1CH
0362c(40080001): ADD R0, R0, 1H
0363c(A0E00018): STR R0, SP, 18H
0364d(E7000003): B 3 [0368H]
ENDe
0365e(80E00010): LDR R0, SP, 10H
0366e(40080001): ADD R0, R0, 1H
0367e(A0E00010): STR R0, SP, 10H
ENDf
0368f(E7FFFFB2): B -78 [031BH]
END ;
IF (name[i0]g = 0X)h & (ipat[j0]j = 0X)k THENl (*found*)
0369g(80E00010): LDR R0, SP, 10H
036Ag(41090020): SUB R1, R0, 20H
036Bg(DA18D61C): BLCC MT [trap=1, pos=6358]
036Cg(81E00004): LDR R1, SP, 4H
036Dg(00180000): ADD R0, R1, R0
036Eh(90000000): LDR R0, R0, 0H
036Fi(E9000036): BNE 54 [03A6H]
0370j(80E00018): LDR R0, SP, 18H
0371j(41090020): SUB R1, R0, 20H
0372j(DA18E71C): BLCC MT [trap=1, pos=6375]
0373j .FIXUP D
0373j(8D000019): LDR SB, MT, MOD0 [System]
0374j(00D80000): ADD R0, SB, R0 [global array]
0375k(90000028): LDR R0, R0, 28H
0376l(E900002F): BNE 47 [03A6H]
Texts.WriteString(W,m name)n;o
0377m .FIXUP D
0377m(8D000004): LDR SB, MT, MOD0 [System]
0378m(40D80000): ADD R0, SB, 0H [data]
0379m .FIXUP D
0379m(8D900002): LDR SB, MT, MOD9 [Texts]
037Am(41D80005): ADD R1, SB, VAR5
037Bn(82E00004): LDR R2, SP, 4H
037Cn(43000020): MOV R3, R0, 20H
037Do .FIXUP P
037Do(F791D0A8): BL MOD9 [Texts] PROC29
IF pat[j0+1]p = "!" THENq (*option*)
037Ep(80E00018): LDR R0, SP, 18H
037Fp(40080001): ADD R0, R0, 1H
0380p(41090020): SUB R1, R0, 20H
0381p(DA19311C): BLCC MT [trap=1, pos=6449]
0382p .FIXUP D
0382p(8D000009): LDR SB, MT, MOD0 [System]
0383p(00D80000): ADD R0, SB, R0 [global array]
0384q(90000028): LDR R0, R0, 28H
0385q(40090021): SUB R0, R0, 21H
0386q(E900001A): BNE 26 [03A1H]
Kernel.GetSector(adr,r hp)s;t
0387r(80E00008): LDR R0, SP, 8H
0388s(41E80020): ADD R1, SP, 20H
0389t .FIXUP P
0389t(F710F00C): BL MOD1 [Kernel] PROC15
Texts.Write(W,u 9X)v;w Texts.WriteClock(W,x hp.date)y;z
038Au .FIXUP D
038Au(8D000008): LDR SB, MT, MOD0 [System]
038Bu(40D80000): ADD R0, SB, 0H [data]
038Cu .FIXUP D
038Cu(8D900002): LDR SB, MT, MOD9 [Texts]
038Du(41D80005): ADD R1, SB, VAR5
038Ev(42000009): MOV R2, R0, 9H
038Fw .FIXUP P
038Fw(F791B006): BL MOD9 [Texts] PROC27
0390x .FIXUP D
0390x(8D000004): LDR SB, MT, MOD0 [System]
0391x(40D80000): ADD R0, SB, 0H [data]
0392x .FIXUP D
0392x(8D900002): LDR SB, MT, MOD9 [Texts]
0393x(41D80005): ADD R1, SB, VAR5
0394y(82E0004C): LDR R2, SP, 4CH
0395z .FIXUP P
0395z(F7922006): BL MOD9 [Texts] PROC34
Texts.WriteInt(W,a hp.aleng*FileDir.SectorSize +b hp.bleng -c FileDir.HeaderSize,d 8)e;f (*length*)
0396a .FIXUP D
0396a(8D000004): LDR SB, MT, MOD0 [System]
0397a(40D80000): ADD R0, SB, 0H [data]
0398a .FIXUP D
0398a(8D900002): LDR SB, MT, MOD9 [Texts]
0399a(41D80005): ADD R1, SB, VAR5
039Ab(82E00044): LDR R2, SP, 44H
039Bb(4221000A): LSL R2, R2, AH
039Cc(83E00048): LDR R3, SP, 48H
039Dc(02280003): ADD R2, R2, R3
039Ed(42290160): SUB R2, R2, 160H
039Fe(43000008): MOV R3, R0, 8H
03A0f .FIXUP P
03A0f(F791E00B): BL MOD9 [Texts] PROC30
(*Texts.WriteHex(W, adr)*)
END ;
Texts.WriteLn(W)g
03A1g .FIXUP D
03A1g(8D000009): LDR SB, MT, MOD0 [System]
03A2g(40D80000): ADD R0, SB, 0H [data]
03A3g .FIXUP D
03A3g(8D900002): LDR SB, MT, MOD9 [Texts]
03A4g(41D80005): ADD R1, SB, VAR5
ENDh
03A5h .FIXUP P
03A5h(F791C005): BL MOD9 [Texts] PROC28
ENDi List;
03A6i(8FE00000): LDR LNK, SP, 0H
03A7i(4EE80420): ADD SP, SP, 420H
03A8i(C700000F): B LNK
PROCEDURE Directory*;
VAR X, Y, i: INTEGER; ch: CHAR;
R: Texts.Reader;
T, t: Texts.Text;
V: Viewers.Viewer;
beg, end, time: LONGINT;
pre: ARRAY 32 OF CHAR;
BEGINj Texts.OpenReader(R,k Oberon.Par.text,l Oberon.Par.pos)m;n Texts.Read(R,o ch)p;q
03A9j .PROC 16
03A9j .COMMAND Directory
03A9j(4EE90080): SUB SP, SP, 80H
03AAj(AFE00000): STR LNK, SP, 0H
03ABk(40E80014): ADD R0, SP, 14H
03ACk .FIXUP D
03ACk(8D900009): LDR SB, MT, MOD9 [Texts]
03ADk(41D80002): ADD R1, SB, VAR2
03AEl .FIXUP D
03AEl(8DA00002): LDR SB, MT, MOD10 [Oberon]
03AFl(42D8000E): ADD R2, SB, VAR14
03B0l(82200008): LDR R2, R2, 8H
03B1m .FIXUP D
03B1m(8DA00003): LDR SB, MT, MOD10 [Oberon]
03B2m(43D8000E): ADD R3, SB, VAR14
03B3m(8330000C): LDR R3, R3, CH
03B4n .FIXUP P
03B4n(F791200F): BL MOD9 [Texts] PROC18
03B5o(40E80014): ADD R0, SP, 14H
03B6o .FIXUP D
03B6o(8D900005): LDR SB, MT, MOD9 [Texts]
03B7o(41D80002): ADD R1, SB, VAR2
03B8p(42E80010): ADD R2, SP, 10H
03B9q .FIXUP P
03B9q(F7913005): BL MOD9 [Texts] PROC19
WHILE ch = " " DOr Texts.Read(R,s ch)t ENDu;
03BAr(90E00010): LDR R0, SP, 10H
03BBr(40090020): SUB R0, R0, 20H
03BCr(E9000006): BNE 6 [03C3H]
03BDs(40E80014): ADD R0, SP, 14H
03BEs .FIXUP D
03BEs(8D900008): LDR SB, MT, MOD9 [Texts]
03BFs(41D80002): ADD R1, SB, VAR2
03C0t(42E80010): ADD R2, SP, 10H
03C1u .FIXUP P
03C1u(F7913008): BL MOD9 [Texts] PROC19
03C2u(E7FFFFF7): B -9 [03BAH]
IF (ch = "^")v OR (wch = 0DX)x THENy
03C3v(90E00010): LDR R0, SP, 10H
03C4v(4009005E): SUB R0, R0, 5EH
03C5w(E1000003): BEQ 3 [03C9H]
03C6x(90E00010): LDR R0, SP, 10H
03C7x(4009000D): SUB R0, R0, DH
03C8y(E900001C): BNE 28 [03E5H]
Oberon.GetSelection(T,z beg,a end,b time)c;d
03C9z(40E80048): ADD R0, SP, 48H
03CAa(41E80054): ADD R1, SP, 54H
03CBb(42E80058): ADD R2, SP, 58H
03CCc(43E8005C): ADD R3, SP, 5CH
03CDd .FIXUP P
03CDd(F7A2900C): BL MOD10 [Oberon] PROC41
IF time >= 0 THENe
03CEe(80E0005C): LDR R0, SP, 5CH
03CFe(40090000): SUB R0, R0, 0H
03D0e(E5000014): BLT 20 [03E5H]
Texts.OpenReader(R,f T,g beg)h;i Texts.Read(R,j ch)k;l
03D1f(40E80014): ADD R0, SP, 14H
03D2f .FIXUP D
03D2f(8D900014): LDR SB, MT, MOD9 [Texts]
03D3f(41D80002): ADD R1, SB, VAR2
03D4g(82E00048): LDR R2, SP, 48H
03D5h(83E00054): LDR R3, SP, 54H
03D6i .FIXUP P
03D6i(F7912009): BL MOD9 [Texts] PROC18
03D7j(40E80014): ADD R0, SP, 14H
03D8j .FIXUP D
03D8j(8D900006): LDR SB, MT, MOD9 [Texts]
03D9j(41D80002): ADD R1, SB, VAR2
03DAk(42E80010): ADD R2, SP, 10H
03DBl .FIXUP P
03DBl(F7913005): BL MOD9 [Texts] PROC19
WHILE ch <= " " DOm Texts.Read(R,n ch)o ENDp
03DCm(90E00010): LDR R0, SP, 10H
03DDm(40090020): SUB R0, R0, 20H
03DEm(EE000006): BGT 6 [03E5H]
03DFn(40E80014): ADD R0, SP, 14H
03E0n .FIXUP D
03E0n(8D900008): LDR SB, MT, MOD9 [Texts]
03E1n(41D80002): ADD R1, SB, VAR2
03E2o(42E80010): ADD R2, SP, 10H
03E3p .FIXUP P
03E3p(F7913008): BL MOD9 [Texts] PROC19
03E4p(E7FFFFF7): B -9 [03DCH]
END
END ;
i := 0;q
03E5q(40000000): MOV R0, R0, 0H
03E6q(A0E0000C): STR R0, SP, CH
WHILE ch > "!" DOr pat[i]s := ch;t INC(i);u Texts.Read(R,v ch)w ENDx;
03E7r(90E00010): LDR R0, SP, 10H
03E8r(40090021): SUB R0, R0, 21H
03E9r(E6000010): BLE 16 [03FAH]
03EAs(80E0000C): LDR R0, SP, CH
03EBs(41090020): SUB R1, R0, 20H
03ECs(DA1CB41C): BLCC MT [trap=1, pos=7348]
03EDs .FIXUP D
03EDs(8D00000D): LDR SB, MT, MOD0 [System]
03EEs(00D80000): ADD R0, SB, R0 [global array]
03EFt(91E00010): LDR R1, SP, 10H
03F0t(B1000028): STR R1, R0, 28H
03F1u(80E0000C): LDR R0, SP, CH
03F2u(40080001): ADD R0, R0, 1H
03F3u(A0E0000C): STR R0, SP, CH
03F4v(40E80014): ADD R0, SP, 14H
03F5v .FIXUP D
03F5v(8D900008): LDR SB, MT, MOD9 [Texts]
03F6v(41D80002): ADD R1, SB, VAR2
03F7w(42E80010): ADD R2, SP, 10H
03F8x .FIXUP P
03F8x(F7913015): BL MOD9 [Texts] PROC19
03F9x(E7FFFFED): B -19 [03E7H]
pat[i]y := 0X;z
03FAy(80E0000C): LDR R0, SP, CH
03FBy(41090020): SUB R1, R0, 20H
03FCy(DA1CE51C): BLCC MT [trap=1, pos=7397]
03FDy .FIXUP D
03FDy(8D000008): LDR SB, MT, MOD0 [System]
03FEy(00D80000): ADD R0, SB, R0 [global array]
03FFz(41000000): MOV R1, R0, 0H
0400z(B1000028): STR R1, R0, 28H
IF ch = "!" THENa pat[i+1]b := "!" ENDc ; (*directory option*)
0401a(90E00010): LDR R0, SP, 10H
0402a(40090021): SUB R0, R0, 21H
0403a(E9000008): BNE 8 [040CH]
0404b(80E0000C): LDR R0, SP, CH
0405b(40080001): ADD R0, R0, 1H
0406b(41090020): SUB R1, R0, 20H
0407b(DA1D0A1C): BLCC MT [trap=1, pos=7434]
0408b .FIXUP D
0408b(8D00000B): LDR SB, MT, MOD0 [System]
0409b(00D80000): ADD R0, SB, R0 [global array]
040Ac(41000021): MOV R1, R0, 21H
040Bc(B1000028): STR R1, R0, 28H
i := 0;d
040Cd(40000000): MOV R0, R0, 0H
040Dd(A0E0000C): STR R0, SP, CH
WHILE pat[i]e > "*" DOf pre[i]g := pat[i]h;i INC(i) ENDj;
040Ee(80E0000C): LDR R0, SP, CH
040Fe(41090020): SUB R1, R0, 20H
0410e(DA1D4A1C): BLCC MT [trap=1, pos=7498]
0411e .FIXUP D
0411e(8D000009): LDR SB, MT, MOD0 [System]
0412e(00D80000): ADD R0, SB, R0 [global array]
0413f(90000028): LDR R0, R0, 28H
0414f(4009002A): SUB R0, R0, 2AH
0415f(E600000F): BLE 15 [0425H]
0416g(80E0000C): LDR R0, SP, CH
0417g(41090020): SUB R1, R0, 20H
0418g(DA1D5A1C): BLCC MT [trap=1, pos=7514]
0419g(00E80000): ADD R0, SP, R0
041Ah(81E0000C): LDR R1, SP, CH
041Bh(42190020): SUB R2, R1, 20H
041Ch(DA1D641C): BLCC MT [trap=1, pos=7524]
041Dh .FIXUP D
041Dh(8D00000C): LDR SB, MT, MOD0 [System]
041Eh(01D80001): ADD R1, SB, R1 [global array]
041Fi(91100028): LDR R1, R1, 28H
0420i(B1000060): STR R1, R0, 60H
0421j(80E0000C): LDR R0, SP, CH
0422j(40080001): ADD R0, R0, 1H
0423j(A0E0000C): STR R0, SP, CH
0424j(E7FFFFE9): B -23 [040EH]
pre[i]k := 0X;l
0425k(80E0000C): LDR R0, SP, CH
0426k(41090020): SUB R1, R0, 20H
0427k(DA1D7C1C): BLCC MT [trap=1, pos=7548]
0428k(00E80000): ADD R0, SP, R0
0429l(41000000): MOV R1, R0, 0H
042Al(B1000060): STR R1, R0, 60H
Oberon.AllocateSystemViewer(Oberon.Par.vwr.mXn,o X,p Y)q;r t := TextFrames.Text("")s;t
042Bm .FIXUP D
042Bm(8DA0000E): LDR SB, MT, MOD10 [Oberon]
042Cm(40D8000E): ADD R0, SB, VAR14
042Dn(80000000): LDR R0, R0, 0H
042En(D11DB44C): BLEQ MT [trap=4, pos=7604]
042Fo(80000008): LDR R0, R0, 8H
0430p(41E80004): ADD R1, SP, 4H
0431q(42E80008): ADD R2, SP, 8H
0432r .FIXUP P
0432r(F7A2303A): BL MOD10 [Oberon] PROC35
0433s .FIXUP D
0433s(8D000008): LDR SB, MT, MOD0 [System]
0434s(40D80108): ADD R0, SB, 108H [""]
0435s(41000001): MOV R1, R0, 1H
0436t .FIXUP P
0436t(F7C2B004): BL MOD12 [TextFrames] PROC43
0437t(A0E0004C): STR R0, SP, 4CH
V := MenuViewers.New(
TextFrames.NewMenu("System.Directory",u StandardMenu)v,w
0438u .FIXUP D
0438u(8D000005): LDR SB, MT, MOD0 [System]
0439u(40D8010C): ADD R0, SB, 10CH ["System.Directory"]
043Au(41000011): MOV R1, R0, 11H
043Bv(42D80048): ADD R2, SB, 48H
043Cv(4300003C): MOV R3, R0, 3CH
043Dw .FIXUP P
043Dw(F7C2C007): BL MOD12 [TextFrames] PROC44
TextFrames.NewText(tx,y 0)z,a TextFrames.menuH,b X,c Y)d;e
043Ex(4EE90004): SUB SP, SP, 4H
043Fx(A0E00000): STR R0, SP, 0H
0440y(80E00050): LDR R0, SP, 50H
0441z(41000000): MOV R1, R0, 0H
0442a .FIXUP P
0442a(F7C2D005): BL MOD12 [TextFrames] PROC45
0443a(01000000): MOV R1, R0, R0
0444a(80E00000): LDR R0, SP, 0H
0445a(4EE80004): ADD SP, SP, 4H
0446b .FIXUP D
0446b(8DC0000E): LDR SB, MT, MOD12 [TextFrames]
0447b(82D00005): LDR R2, SB, VAR5
0448c(83E00004): LDR R3, SP, 4H
0449d(84E00008): LDR R4, SP, 8H
044Ae .FIXUP P
044Ae(F7B04008): BL MOD11 [MenuViewers] PROC4
044Be(A0E00050): STR R0, SP, 50H
FileDir.Enumerate(pre,f List)g;h Texts.Append(t,i W.buf)j
044Cf(40E80060): ADD R0, SP, 60H
044Df(41000020): MOV R1, R0, 20H
044Eg(F7000000): BL 0 [044FH]
044Fg(42F905D4): SUB R2, LNK, 5D4H
0450h .FIXUP P
0450h(F7207006): BL MOD2 [FileDir] PROC7
0451i(80E0004C): LDR R0, SP, 4CH
0452j .FIXUP D
0452j(8D00000C): LDR SB, MT, MOD0 [System]
0453j(81D00000): LDR R1, SB, 0H [data]
ENDk Directory;
0454k .FIXUP P
0454k(F790E004): BL MOD9 [Texts] PROC14
0455k(8FE00000): LDR LNK, SP, 0H
0456k(4EE80080): ADD SP, SP, 80H
0457k(C700000F): B LNK
PROCEDURE CopyFiles*;
VAR f, g: Files.File; Rf, Rg: Files.Rider; ch: CHAR;
name: ARRAY 32 OF CHAR;
S: Texts.Scanner;
BEGINl GetArg(S)m;n
0458l .PROC 17
0458l .COMMAND CopyFiles
0458l(4EE900D4): SUB SP, SP, D4H
0459l(AFE00000): STR LNK, SP, 0H
045Am(40E80060): ADD R0, SP, 60H
045Bm .FIXUP D
045Bm(8D900009): LDR SB, MT, MOD9 [Texts]
045Cm(41D80003): ADD R1, SB, VAR3
045Dn(F7FFFBA2): BL -1118 [0000H]
Texts.WriteString(W,o "System.CopyFiles")p;q EndLine;r
045Eo .FIXUP D
045Eo(8D000003): LDR SB, MT, MOD0 [System]
045Fo(40D80000): ADD R0, SB, 0H [data]
0460o .FIXUP D
0460o(8D900002): LDR SB, MT, MOD9 [Texts]
0461o(41D80005): ADD R1, SB, VAR5
0462p .FIXUP D
0462p(8D000002): LDR SB, MT, MOD0 [System]
0463p(42D80120): ADD R2, SB, 120H ["System.CopyFiles"]
0464p(43000011): MOV R3, R0, 11H
0465q .FIXUP P
0465q(F791D011): BL MOD9 [Texts] PROC29
0466r(F7FFFBC4): BL -1084 [002BH]
WHILE S.class = Texts.Name DOs
0467s(80E0009C): LDR R0, SP, 9CH
0468s(40090001): SUB R0, R0, 1H
0469s(E9000080): BNE 128 [04EAH]
name := S.s;t Texts.Scan(S)u;v
046At(40E80040): ADD R0, SP, 40H
046Bt(41E800B4): ADD R1, SP, B4H
046Ct(42000008): MOV R2, R0, 8H
046Dt(83100000): LDR R3, R1, 0H
046Et(41180004): ADD R1, R1, 4H
046Ft(A3000000): STR R3, R0, 0H
0470t(40080004): ADD R0, R0, 4H
0471t(42290001): SUB R2, R2, 1H
0472t(E9FFFFFA): BNE -6 [046DH]
0473u(40E80060): ADD R0, SP, 60H
0474u .FIXUP D
0474u(8D900012): LDR SB, MT, MOD9 [Texts]
0475u(41D80003): ADD R1, SB, VAR3
0476v .FIXUP P
0476v(F7916011): BL MOD9 [Texts] PROC22
IF (S.class = Texts.Char)w & (xS.c = "=")y THENz Texts.Scan(S)a;b
0477w(80E0009C): LDR R0, SP, 9CH
0478w(40090006): SUB R0, R0, 6H
0479x(E900006B): BNE 107 [04E5H]
047Ay(90E000AC): LDR R0, SP, ACH
047By(4009003D): SUB R0, R0, 3DH
047Cz(E9000068): BNE 104 [04E5H]
047Da(40E80060): ADD R0, SP, 60H
047Ea .FIXUP D
047Ea(8D90000A): LDR SB, MT, MOD9 [Texts]
047Fa(41D80003): ADD R1, SB, VAR3
0480b .FIXUP P
0480b(F791600A): BL MOD9 [Texts] PROC22
IF (S.class = Texts.Char)c & (dS.c = ">")e THENf Texts.Scan(S)g;h
0481c(80E0009C): LDR R0, SP, 9CH
0482c(40090006): SUB R0, R0, 6H
0483d(E9000061): BNE 97 [04E5H]
0484e(90E000AC): LDR R0, SP, ACH
0485e(4009003E): SUB R0, R0, 3EH
0486f(E900005E): BNE 94 [04E5H]
0487g(40E80060): ADD R0, SP, 60H
0488g .FIXUP D
0488g(8D90000A): LDR SB, MT, MOD9 [Texts]
0489g(41D80003): ADD R1, SB, VAR3
048Ah .FIXUP P
048Ah(F791600A): BL MOD9 [Texts] PROC22
IF S.class = Texts.Name THENi
048Bi(80E0009C): LDR R0, SP, 9CH
048Ci(40090001): SUB R0, R0, 1H
048Di(E9000057): BNE 87 [04E5H]
Texts.WriteString(W,j name)k;l Texts.WriteString(W,m " => ")n;o Texts.WriteString(W,p S.s)q;r
048Ej .FIXUP D
048Ej(8D000006): LDR SB, MT, MOD0 [System]
048Fj(40D80000): ADD R0, SB, 0H [data]
0490j .FIXUP D
0490j(8D900002): LDR SB, MT, MOD9 [Texts]
0491j(41D80005): ADD R1, SB, VAR5
0492k(42E80040): ADD R2, SP, 40H
0493k(43000020): MOV R3, R0, 20H
0494l .FIXUP P
0494l(F791D00A): BL MOD9 [Texts] PROC29
0495m .FIXUP D
0495m(8D000005): LDR SB, MT, MOD0 [System]
0496m(40D80000): ADD R0, SB, 0H [data]
0497m .FIXUP D
0497m(8D900002): LDR SB, MT, MOD9 [Texts]
0498m(41D80005): ADD R1, SB, VAR5
0499n .FIXUP D
0499n(8D000002): LDR SB, MT, MOD0 [System]
049An(42D80134): ADD R2, SB, 134H [" => "]
049Bn(43000005): MOV R3, R0, 5H
049Co .FIXUP P
049Co(F791D008): BL MOD9 [Texts] PROC29
049Dp .FIXUP D
049Dp(8D000004): LDR SB, MT, MOD0 [System]
049Ep(40D80000): ADD R0, SB, 0H [data]
049Fp .FIXUP D
049Fp(8D900002): LDR SB, MT, MOD9 [Texts]
04A0p(41D80005): ADD R1, SB, VAR5
04A1q(42E800B4): ADD R2, SP, B4H
04A2q(43000020): MOV R3, R0, 20H
04A3r .FIXUP P
04A3r(F791D007): BL MOD9 [Texts] PROC29
Texts.WriteString(W,s " copying")t;u Texts.Append(Oberon.Log,v W.buf)w;x
04A4s .FIXUP D
04A4s(8D000005): LDR SB, MT, MOD0 [System]
04A5s(40D80000): ADD R0, SB, 0H [data]
04A6s .FIXUP D
04A6s(8D900002): LDR SB, MT, MOD9 [Texts]
04A7s(41D80005): ADD R1, SB, VAR5
04A8t .FIXUP D
04A8t(8D000002): LDR SB, MT, MOD0 [System]
04A9t(42D8013C): ADD R2, SB, 13CH [" copying"]
04AAt(43000009): MOV R3, R0, 9H
04ABu .FIXUP P
04ABu(F791D008): BL MOD9 [Texts] PROC29
04ACv .FIXUP D
04ACv(8DA00004): LDR SB, MT, MOD10 [Oberon]
04ADv(80D0000D): LDR R0, SB, VAR13
04AEw .FIXUP D
04AEw(8D000002): LDR SB, MT, MOD0 [System]
04AFw(81D00000): LDR R1, SB, 0H [data]
04B0x .FIXUP P
04B0x(F790E005): BL MOD9 [Texts] PROC14
f := Files.Old(name)y;z
04B1y(40E80040): ADD R0, SP, 40H
04B2y(41000020): MOV R1, R0, 20H
04B3z .FIXUP P
04B3z(F7302003): BL MOD3 [Files] PROC2
04B4z(A0E00004): STR R0, SP, 4H
IF f # NIL THENa g := Files.New(S.s)b;c
04B5a(80E00004): LDR R0, SP, 4H
04B6a(E1000025): BEQ 37 [04DCH]
04B7b(40E800B4): ADD R0, SP, B4H
04B8b(41000020): MOV R1, R0, 20H
04B9c .FIXUP P
04B9c(F7303006): BL MOD3 [Files] PROC3
04BAc(A0E00008): STR R0, SP, 8H
Files.Set(Rf,d f,e 0)f;g Files.Set(Rg,h g,i 0)j;k Files.Read(Rf,l ch)m;n
04BBd(40E8000C): ADD R0, SP, CH
04BCd .FIXUP D
04BCd(8D30000E): LDR SB, MT, MOD3 [Files]
04BDd(41D80001): ADD R1, SB, VAR1
04BEe(82E00004): LDR R2, SP, 4H
04BFf(43000000): MOV R3, R0, 0H
04C0g .FIXUP P
04C0g(F730B007): BL MOD3 [Files] PROC11
04C1h(40E80024): ADD R0, SP, 24H
04C2h .FIXUP D
04C2h(8D300006): LDR SB, MT, MOD3 [Files]
04C3h(41D80001): ADD R1, SB, VAR1
04C4i(82E00008): LDR R2, SP, 8H
04C5j(43000000): MOV R3, R0, 0H
04C6k .FIXUP P
04C6k(F730B006): BL MOD3 [Files] PROC11
04C7l(40E8000C): ADD R0, SP, CH
04C8l .FIXUP D
04C8l(8D300006): LDR SB, MT, MOD3 [Files]
04C9l(41D80001): ADD R1, SB, VAR1
04CAm(42E8003C): ADD R2, SP, 3CH
04CBn .FIXUP P
04CBn(F7310005): BL MOD3 [Files] PROC16
WHILE ~Rf.eof DOo Files.Write(Rg,p ch)q;r Files.Read(Rf,s ch)t ENDu;
04CCo(90E0000C): LDR R0, SP, CH
04CDo(E900000B): BNE 11 [04D9H]
04CEp(40E80024): ADD R0, SP, 24H
04CFp .FIXUP D
04CFp(8D300007): LDR SB, MT, MOD3 [Files]
04D0p(41D80001): ADD R1, SB, VAR1
04D1q(92E0003C): LDR R2, SP, 3CH
04D2r .FIXUP P
04D2r(F7318007): BL MOD3 [Files] PROC24
04D3s(40E8000C): ADD R0, SP, CH
04D4s .FIXUP D
04D4s(8D300005): LDR SB, MT, MOD3 [Files]
04D5s(41D80001): ADD R1, SB, VAR1
04D6t(42E8003C): ADD R2, SP, 3CH
04D7u .FIXUP P
04D7u(F7310005): BL MOD3 [Files] PROC16
04D8u(E7FFFFF3): B -13 [04CCH]
Files.Register(g)v
04D9v(80E00008): LDR R0, SP, 8H
ELSEw Textsx.WriteString(W,y " failed")z
04DAw .FIXUP P
04DAw(F7304003): BL MOD3 [Files] PROC4
04DBx(E7000008): B 8 [04E4H]
04DCy .FIXUP D
04DCy(8D000008): LDR SB, MT, MOD0 [System]
04DDy(40D80000): ADD R0, SB, 0H [data]
04DEy .FIXUP D
04DEy(8D900002): LDR SB, MT, MOD9 [Texts]
04DFy(41D80005): ADD R1, SB, VAR5
04E0z .FIXUP D
04E0z(8D000002): LDR SB, MT, MOD0 [System]
04E1z(42D80148): ADD R2, SB, 148H [" failed"]
04E2z(43000008): MOV R3, R0, 8H
ENDa ;
04E3a .FIXUP P
04E3a(F791D009): BL MOD9 [Texts] PROC29
EndLine
ENDb
04E4b(F7FFFB46): BL -1210 [002BH]
END
END ;
Texts.Scan(S)c
04E5c(40E80060): ADD R0, SP, 60H
04E6c .FIXUP D
04E6c(8D900006): LDR SB, MT, MOD9 [Texts]
04E7c(41D80003): ADD R1, SB, VAR3
ENDd
04E8d .FIXUP P
04E8d(F7916005): BL MOD9 [Texts] PROC22
04E9d(E7FFFF7D): B -131 [0467H]
ENDe CopyFiles;
04EAe(8FE00000): LDR LNK, SP, 0H
04EBe(4EE800D4): ADD SP, SP, D4H
04ECe(C700000F): B LNK
PROCEDURE RenameFiles*;
VAR res: INTEGER;
name: ARRAY 32 OF CHAR;
S: Texts.Scanner;
BEGINf GetArg(S)g;h
04EDf .PROC 18
04EDf .COMMAND RenameFiles
04EDf(4EE9009C): SUB SP, SP, 9CH
04EEf(AFE00000): STR LNK, SP, 0H
04EFg(40E80028): ADD R0, SP, 28H
04F0g .FIXUP D
04F0g(8D90000A): LDR SB, MT, MOD9 [Texts]
04F1g(41D80003): ADD R1, SB, VAR3
04F2h(F7FFFB0D): BL -1267 [0000H]
Texts.WriteString(W,i "System.RenameFiles")j;k EndLine;l
04F3i .FIXUP D
04F3i(8D000003): LDR SB, MT, MOD0 [System]
04F4i(40D80000): ADD R0, SB, 0H [data]
04F5i .FIXUP D
04F5i(8D900002): LDR SB, MT, MOD9 [Texts]
04F6i(41D80005): ADD R1, SB, VAR5
04F7j .FIXUP D
04F7j(8D000002): LDR SB, MT, MOD0 [System]
04F8j(42D80150): ADD R2, SB, 150H ["System.RenameFiles"]
04F9j(43000013): MOV R3, R0, 13H
04FAk .FIXUP P
04FAk(F791D012): BL MOD9 [Texts] PROC29
04FBl(F7FFFB2F): BL -1233 [002BH]
WHILE S.class = Texts.Name DOm
04FCm(80E00064): LDR R0, SP, 64H
04FDm(40090001): SUB R0, R0, 1H
04FEm(E9000059): BNE 89 [0558H]
name := S.s;n Texts.Scan(S)o;p
04FFn(40E80008): ADD R0, SP, 8H
0500n(41E8007C): ADD R1, SP, 7CH
0501n(42000008): MOV R2, R0, 8H
0502n(83100000): LDR R3, R1, 0H
0503n(41180004): ADD R1, R1, 4H
0504n(A3000000): STR R3, R0, 0H
0505n(40080004): ADD R0, R0, 4H
0506n(42290001): SUB R2, R2, 1H
0507n(E9FFFFFA): BNE -6 [0502H]
0508o(40E80028): ADD R0, SP, 28H
0509o .FIXUP D
0509o(8D900012): LDR SB, MT, MOD9 [Texts]
050Ao(41D80003): ADD R1, SB, VAR3
050Bp .FIXUP P
050Bp(F7916011): BL MOD9 [Texts] PROC22
IF (S.class = Texts.Char)q & (rS.c = "=")s THENt Texts.Scan(S)u;v
050Cq(80E00064): LDR R0, SP, 64H
050Dq(40090006): SUB R0, R0, 6H
050Er(E9000044): BNE 68 [0553H]
050Fs(90E00074): LDR R0, SP, 74H
0510s(4009003D): SUB R0, R0, 3DH
0511t(E9000041): BNE 65 [0553H]
0512u(40E80028): ADD R0, SP, 28H
0513u .FIXUP D
0513u(8D90000A): LDR SB, MT, MOD9 [Texts]
0514u(41D80003): ADD R1, SB, VAR3
0515v .FIXUP P
0515v(F791600A): BL MOD9 [Texts] PROC22
IF (S.class = Texts.Char)w & (xS.c = ">")y THENz Texts.Scan(S)a;b
0516w(80E00064): LDR R0, SP, 64H
0517w(40090006): SUB R0, R0, 6H
0518x(E900003A): BNE 58 [0553H]
0519y(90E00074): LDR R0, SP, 74H
051Ay(4009003E): SUB R0, R0, 3EH
051Bz(E9000037): BNE 55 [0553H]
051Ca(40E80028): ADD R0, SP, 28H
051Da .FIXUP D
051Da(8D90000A): LDR SB, MT, MOD9 [Texts]
051Ea(41D80003): ADD R1, SB, VAR3
051Fb .FIXUP P
051Fb(F791600A): BL MOD9 [Texts] PROC22
IF S.class = Texts.Name THENc
0520c(80E00064): LDR R0, SP, 64H
0521c(40090001): SUB R0, R0, 1H
0522c(E9000030): BNE 48 [0553H]
Texts.WriteString(W,d name)e;f Texts.WriteString(W,g " => ")h;i Texts.WriteString(W,j S.s)k;l
0523d .FIXUP D
0523d(8D000006): LDR SB, MT, MOD0 [System]
0524d(40D80000): ADD R0, SB, 0H [data]
0525d .FIXUP D
0525d(8D900002): LDR SB, MT, MOD9 [Texts]
0526d(41D80005): ADD R1, SB, VAR5
0527e(42E80008): ADD R2, SP, 8H
0528e(43000020): MOV R3, R0, 20H
0529f .FIXUP P
0529f(F791D00A): BL MOD9 [Texts] PROC29
052Ag .FIXUP D
052Ag(8D000005): LDR SB, MT, MOD0 [System]
052Bg(40D80000): ADD R0, SB, 0H [data]
052Cg .FIXUP D
052Cg(8D900002): LDR SB, MT, MOD9 [Texts]
052Dg(41D80005): ADD R1, SB, VAR5
052Eh .FIXUP D
052Eh(8D000002): LDR SB, MT, MOD0 [System]
052Fh(42D80164): ADD R2, SB, 164H [" => "]
0530h(43000005): MOV R3, R0, 5H
0531i .FIXUP P
0531i(F791D008): BL MOD9 [Texts] PROC29
0532j .FIXUP D
0532j(8D000004): LDR SB, MT, MOD0 [System]
0533j(40D80000): ADD R0, SB, 0H [data]
0534j .FIXUP D
0534j(8D900002): LDR SB, MT, MOD9 [Texts]
0535j(41D80005): ADD R1, SB, VAR5
0536k(42E8007C): ADD R2, SP, 7CH
0537k(43000020): MOV R3, R0, 20H
0538l .FIXUP P
0538l(F791D007): BL MOD9 [Texts] PROC29
Texts.WriteString(W,m " renaming")n;o Files.Rename(name,p S.s,q res)r;s
0539m .FIXUP D
0539m(8D000005): LDR SB, MT, MOD0 [System]
053Am(40D80000): ADD R0, SB, 0H [data]
053Bm .FIXUP D
053Bm(8D900002): LDR SB, MT, MOD9 [Texts]
053Cm(41D80005): ADD R1, SB, VAR5
053Dn .FIXUP D
053Dn(8D000002): LDR SB, MT, MOD0 [System]
053En(42D8016C): ADD R2, SB, 16CH [" renaming"]
053Fn(4300000A): MOV R3, R0, AH
0540o .FIXUP P
0540o(F791D008): BL MOD9 [Texts] PROC29
0541p(40E80008): ADD R0, SP, 8H
0542p(41000020): MOV R1, R0, 20H
0543q(42E8007C): ADD R2, SP, 7CH
0544q(43000020): MOV R3, R0, 20H
0545r(44E80004): ADD R4, SP, 4H
0546s .FIXUP P
0546s(F7308006): BL MOD3 [Files] PROC8
IF res > 1 THENt Texts.WriteString(W,u " failed")v ENDw;
0547t(80E00004): LDR R0, SP, 4H
0548t(40090001): SUB R0, R0, 1H
0549t(E6000008): BLE 8 [0552H]
054Au .FIXUP D
054Au(8D00000D): LDR SB, MT, MOD0 [System]
054Bu(40D80000): ADD R0, SB, 0H [data]
054Cu .FIXUP D
054Cu(8D900002): LDR SB, MT, MOD9 [Texts]
054Du(41D80005): ADD R1, SB, VAR5
054Ev .FIXUP D
054Ev(8D000002): LDR SB, MT, MOD0 [System]
054Fv(42D80178): ADD R2, SB, 178H [" failed"]
0550v(43000008): MOV R3, R0, 8H
0551w .FIXUP P
0551w(F791D00B): BL MOD9 [Texts] PROC29
EndLine
ENDx
0552x(F7FFFAD8): BL -1320 [002BH]
END
END ;
Texts.Scan(S)y
0553y(40E80028): ADD R0, SP, 28H
0554y .FIXUP D
0554y(8D900006): LDR SB, MT, MOD9 [Texts]
0555y(41D80003): ADD R1, SB, VAR3
ENDz
0556z .FIXUP P
0556z(F7916005): BL MOD9 [Texts] PROC22
0557z(E7FFFFA4): B -92 [04FCH]
ENDa RenameFiles;
0558a(8FE00000): LDR LNK, SP, 0H
0559a(4EE8009C): ADD SP, SP, 9CH
055Aa(C700000F): B LNK
PROCEDURE DeleteFiles*;
VAR res: INTEGER; S: Texts.Scanner;
BEGINb GetArg(S)c;d
055Bb .PROC 19
055Bb .COMMAND DeleteFiles
055Bb(4EE9007C): SUB SP, SP, 7CH
055Cb(AFE00000): STR LNK, SP, 0H
055Dc(40E80008): ADD R0, SP, 8H
055Ec .FIXUP D
055Ec(8D90000A): LDR SB, MT, MOD9 [Texts]
055Fc(41D80003): ADD R1, SB, VAR3
0560d(F7FFFA9F): BL -1377 [0000H]
Texts.WriteString(W,e "System.DeleteFiles")f;g EndLine;h
0561e .FIXUP D
0561e(8D000003): LDR SB, MT, MOD0 [System]
0562e(40D80000): ADD R0, SB, 0H [data]
0563e .FIXUP D
0563e(8D900002): LDR SB, MT, MOD9 [Texts]
0564e(41D80005): ADD R1, SB, VAR5
0565f .FIXUP D
0565f(8D000002): LDR SB, MT, MOD0 [System]
0566f(42D80180): ADD R2, SB, 180H ["System.DeleteFiles"]
0567f(43000013): MOV R3, R0, 13H
0568g .FIXUP P
0568g(F791D012): BL MOD9 [Texts] PROC29
0569h(F7FFFAC1): BL -1343 [002BH]
WHILE S.class = Texts.Name DOi
056Ai(80E00044): LDR R0, SP, 44H
056Bi(40090001): SUB R0, R0, 1H
056Ci(E9000023): BNE 35 [0590H]
Texts.WriteString(W,j S.s)k;l Texts.WriteString(W,m " deleting")n;o
056Dj .FIXUP D
056Dj(8D000008): LDR SB, MT, MOD0 [System]
056Ej(40D80000): ADD R0, SB, 0H [data]
056Fj .FIXUP D
056Fj(8D900002): LDR SB, MT, MOD9 [Texts]
0570j(41D80005): ADD R1, SB, VAR5
0571k(42E8005C): ADD R2, SP, 5CH
0572k(43000020): MOV R3, R0, 20H
0573l .FIXUP P
0573l(F791D00B): BL MOD9 [Texts] PROC29
0574m .FIXUP D
0574m(8D000005): LDR SB, MT, MOD0 [System]
0575m(40D80000): ADD R0, SB, 0H [data]
0576m .FIXUP D
0576m(8D900002): LDR SB, MT, MOD9 [Texts]
0577m(41D80005): ADD R1, SB, VAR5
0578n .FIXUP D
0578n(8D000002): LDR SB, MT, MOD0 [System]
0579n(42D80194): ADD R2, SB, 194H [" deleting"]
057An(4300000A): MOV R3, R0, AH
057Bo .FIXUP P
057Bo(F791D008): BL MOD9 [Texts] PROC29
Files.Delete(S.s,p res)q;r
057Cp(40E8005C): ADD R0, SP, 5CH
057Dp(41000020): MOV R1, R0, 20H
057Eq(42E80004): ADD R2, SP, 4H
057Fr .FIXUP P
057Fr(F7307004): BL MOD3 [Files] PROC7
IF res # 0 THENs Texts.WriteString(W,t " failed")u ENDv;
0580s(80E00004): LDR R0, SP, 4H
0581s(E1000008): BEQ 8 [058AH]
0582t .FIXUP D
0582t(8D00000A): LDR SB, MT, MOD0 [System]
0583t(40D80000): ADD R0, SB, 0H [data]
0584t .FIXUP D
0584t(8D900002): LDR SB, MT, MOD9 [Texts]
0585t(41D80005): ADD R1, SB, VAR5
0586u .FIXUP D
0586u(8D000002): LDR SB, MT, MOD0 [System]
0587u(42D801A0): ADD R2, SB, 1A0H [" failed"]
0588u(43000008): MOV R3, R0, 8H
0589v .FIXUP P
0589v(F791D00A): BL MOD9 [Texts] PROC29
EndLine;w Texts.Scan(S)x
058Aw(F7FFFAA0): BL -1376 [002BH]
058Bx(40E80008): ADD R0, SP, 8H
058Cx .FIXUP D
058Cx(8D900006): LDR SB, MT, MOD9 [Texts]
058Dx(41D80003): ADD R1, SB, VAR3
ENDy
058Ey .FIXUP P
058Ey(F7916005): BL MOD9 [Texts] PROC22
058Fy(E7FFFFDA): B -38 [056AH]
ENDz DeleteFiles;
0590z(8FE00000): LDR LNK, SP, 0H
0591z(4EE8007C): ADD SP, SP, 7CH
0592z(C700000F): B LNK
(* ------------- Toolbox for system inspection ---------------*)
PROCEDURE Watch*;
BEGINa Texts.WriteString(W,b "System.Watch")c;d Texts.WriteLn(W)e;f
0593a .PROC 20
0593a .COMMAND Watch
0593a(4EE90004): SUB SP, SP, 4H
0594a(AFE00000): STR LNK, SP, 0H
0595b .FIXUP D
0595b(8D000009): LDR SB, MT, MOD0 [System]
0596b(40D80000): ADD R0, SB, 0H [data]
0597b .FIXUP D
0597b(8D900002): LDR SB, MT, MOD9 [Texts]
0598b(41D80005): ADD R1, SB, VAR5
0599c .FIXUP D
0599c(8D000002): LDR SB, MT, MOD0 [System]
059Ac(42D801A8): ADD R2, SB, 1A8H ["System.Watch"]
059Bc(4300000D): MOV R3, R0, DH
059Cd .FIXUP P
059Cd(F791D00E): BL MOD9 [Texts] PROC29
059De .FIXUP D
059De(8D000004): LDR SB, MT, MOD0 [System]
059Ee(40D80000): ADD R0, SB, 0H [data]
059Fe .FIXUP D
059Fe(8D900002): LDR SB, MT, MOD9 [Texts]
05A0e(41D80005): ADD R1, SB, VAR5
05A1f .FIXUP P
05A1f(F791C005): BL MOD9 [Texts] PROC28
Texts.WriteString(W,g " Modules space (bytes)")h;i Texts.WriteInt(W,j Modules.AllocPtr,k 8)l;m
05A2g .FIXUP D
05A2g(8D000003): LDR SB, MT, MOD0 [System]
05A3g(40D80000): ADD R0, SB, 0H [data]
05A4g .FIXUP D
05A4g(8D900002): LDR SB, MT, MOD9 [Texts]
05A5g(41D80005): ADD R1, SB, VAR5
05A6h .FIXUP D
05A6h(8D000002): LDR SB, MT, MOD0 [System]
05A7h(42D801B8): ADD R2, SB, 1B8H [" Modules space (bytes)"]
05A8h(43000018): MOV R3, R0, 18H
05A9i .FIXUP P
05A9i(F791D008): BL MOD9 [Texts] PROC29
05AAj .FIXUP D
05AAj(8D000004): LDR SB, MT, MOD0 [System]
05ABj(40D80000): ADD R0, SB, 0H [data]
05ACj .FIXUP D
05ACj(8D900002): LDR SB, MT, MOD9 [Texts]
05ADj(41D80005): ADD R1, SB, VAR5
05AEk .FIXUP D
05AEk(8D400002): LDR SB, MT, MOD4 [Modules]
05AFk(82D00004): LDR R2, SB, VAR4
05B0l(43000008): MOV R3, R0, 8H
05B1m .FIXUP P
05B1m(F791E008): BL MOD9 [Texts] PROC30
Texts.WriteInt(W,n Modules.AllocPtr * 100 DIVo Kernel.heapOrg,p 4)q;r Texts.Write(W,s "%")t;u EndLine;v
05B2n .FIXUP D
05B2n(8D000004): LDR SB, MT, MOD0 [System]
05B3n(40D80000): ADD R0, SB, 0H [data]
05B4n .FIXUP D
05B4n(8D900002): LDR SB, MT, MOD9 [Texts]
05B5n(41D80005): ADD R1, SB, VAR5
05B6o .FIXUP D
05B6o(8D400002): LDR SB, MT, MOD4 [Modules]
05B7o(82D00004): LDR R2, SB, VAR4
05B8o(422A0064): MUL R2, R2, 64H
05B9p .FIXUP D
05B9p(8D100003): LDR SB, MT, MOD1 [Kernel]
05BAp(83D00003): LDR R3, SB, VAR3
05BBp(D628906C): BLLE MT [trap=6, pos=10384]
05BCp(022B0003): DIV R2, R2, R3
05BDq(43000004): MOV R3, R0, 4H
05BEr .FIXUP P
05BEr(F791E00D): BL MOD9 [Texts] PROC30
05BFs .FIXUP D
05BFs(8D000006): LDR SB, MT, MOD0 [System]
05C0s(40D80000): ADD R0, SB, 0H [data]
05C1s .FIXUP D
05C1s(8D900002): LDR SB, MT, MOD9 [Texts]
05C2s(41D80005): ADD R1, SB, VAR5
05C3t(42000025): MOV R2, R0, 25H
05C4u .FIXUP P
05C4u(F791B006): BL MOD9 [Texts] PROC27
05C5v(F7FFFA65): BL -1435 [002BH]
Texts.WriteString(W,w " Heap speace")x;y Texts.WriteInt(W,z Kernel.allocated,a 8)b;c
05C6w .FIXUP D
05C6w(8D000005): LDR SB, MT, MOD0 [System]
05C7w(40D80000): ADD R0, SB, 0H [data]
05C8w .FIXUP D
05C8w(8D900002): LDR SB, MT, MOD9 [Texts]
05C9w(41D80005): ADD R1, SB, VAR5
05CAx .FIXUP D
05CAx(8D000002): LDR SB, MT, MOD0 [System]
05CBx(42D801D0): ADD R2, SB, 1D0H [" Heap speace"]
05CCx(4300000E): MOV R3, R0, EH
05CDy .FIXUP P
05CDy(F791D009): BL MOD9 [Texts] PROC29
05CEz .FIXUP D
05CEz(8D000004): LDR SB, MT, MOD0 [System]
05CFz(40D80000): ADD R0, SB, 0H [data]
05D0z .FIXUP D
05D0z(8D900002): LDR SB, MT, MOD9 [Texts]
05D1z(41D80005): ADD R1, SB, VAR5
05D2a .FIXUP D
05D2a(8D100002): LDR SB, MT, MOD1 [Kernel]
05D3a(82D00001): LDR R2, SB, VAR1
05D4b(43000008): MOV R3, R0, 8H
05D5c .FIXUP P
05D5c(F791E008): BL MOD9 [Texts] PROC30
Texts.WriteInt(W,d Kernel.allocated * 100 DIVe (Kernel.heapLim - Kernel.heapOrg)f,g 4)h;i Texts.Write(W,j "%")k;l EndLine;m
05D6d .FIXUP D
05D6d(8D000004): LDR SB, MT, MOD0 [System]
05D7d(40D80000): ADD R0, SB, 0H [data]
05D8d .FIXUP D
05D8d(8D900002): LDR SB, MT, MOD9 [Texts]
05D9d(41D80005): ADD R1, SB, VAR5
05DAe .FIXUP D
05DAe(8D100002): LDR SB, MT, MOD1 [Kernel]
05DBe(82D00001): LDR R2, SB, VAR1
05DCe(422A0064): MUL R2, R2, 64H
05DDf .FIXUP D
05DDf(8D100003): LDR SB, MT, MOD1 [Kernel]
05DEf(83D00004): LDR R3, SB, VAR4
05DFf .FIXUP D
05DFf(8D100002): LDR SB, MT, MOD1 [Kernel]
05E0f(84D00003): LDR R4, SB, VAR3
05E1f(03390004): SUB R3, R3, R4
05E2g(D629596C): BLLE MT [trap=6, pos=10585]
05E3g(022B0003): DIV R2, R2, R3
05E4h(43000004): MOV R3, R0, 4H
05E5i .FIXUP P
05E5i(F791E010): BL MOD9 [Texts] PROC30
05E6j .FIXUP D
05E6j(8D000007): LDR SB, MT, MOD0 [System]
05E7j(40D80000): ADD R0, SB, 0H [data]
05E8j .FIXUP D
05E8j(8D900002): LDR SB, MT, MOD9 [Texts]
05E9j(41D80005): ADD R1, SB, VAR5
05EAk(42000025): MOV R2, R0, 25H
05EBl .FIXUP P
05EBl(F791B006): BL MOD9 [Texts] PROC27
05ECm(F7FFFA3E): BL -1474 [002BH]
Texts.WriteString(W,n " Disk sectors ")o;p Texts.WriteInt(W,q Kernel.NofSectors,r 4)s;t
05EDn .FIXUP D
05EDn(8D000005): LDR SB, MT, MOD0 [System]
05EEn(40D80000): ADD R0, SB, 0H [data]
05EFn .FIXUP D
05EFn(8D900002): LDR SB, MT, MOD9 [Texts]
05F0n(41D80005): ADD R1, SB, VAR5
05F1o .FIXUP D
05F1o(8D000002): LDR SB, MT, MOD0 [System]
05F2o(42D801E0): ADD R2, SB, 1E0H [" Disk sectors "]
05F3o(43000010): MOV R3, R0, 10H
05F4p .FIXUP P
05F4p(F791D009): BL MOD9 [Texts] PROC29
05F5q .FIXUP D
05F5q(8D000004): LDR SB, MT, MOD0 [System]
05F6q(40D80000): ADD R0, SB, 0H [data]
05F7q .FIXUP D
05F7q(8D900002): LDR SB, MT, MOD9 [Texts]
05F8q(41D80005): ADD R1, SB, VAR5
05F9r .FIXUP D
05F9r(8D100002): LDR SB, MT, MOD1 [Kernel]
05FAr(82D00002): LDR R2, SB, VAR2
05FBs(43000004): MOV R3, R0, 4H
05FCt .FIXUP P
05FCt(F791E008): BL MOD9 [Texts] PROC30
Texts.WriteInt(W,u Kernel.NofSectors * 100 DIVv 10000H,w 4)x;y Texts.Write(W,z "%")a;b EndLine;c
05FDu .FIXUP D
05FDu(8D000004): LDR SB, MT, MOD0 [System]
05FEu(40D80000): ADD R0, SB, 0H [data]
05FFu .FIXUP D
05FFu(8D900002): LDR SB, MT, MOD9 [Texts]
0600u(41D80005): ADD R1, SB, VAR5
0601v .FIXUP D
0601v(8D100002): LDR SB, MT, MOD1 [Kernel]
0602v(82D00002): LDR R2, SB, VAR2
0603v(422A0064): MUL R2, R2, 64H
0604w(42220010): ASR R2, R2, 10H
0605x(43000004): MOV R3, R0, 4H
0606y .FIXUP P
0606y(F791E00A): BL MOD9 [Texts] PROC30
0607z .FIXUP D
0607z(8D000006): LDR SB, MT, MOD0 [System]
0608z(40D80000): ADD R0, SB, 0H [data]
0609z .FIXUP D
0609z(8D900002): LDR SB, MT, MOD9 [Texts]
060Az(41D80005): ADD R1, SB, VAR5
060Ba(42000025): MOV R2, R0, 25H
060Cb .FIXUP P
060Cb(F791B006): BL MOD9 [Texts] PROC27
060Dc(F7FFFA1D): BL -1507 [002BH]
Texts.WriteString(W,d " Tasks")e;f Texts.WriteInt(W,g Oberon.NofTasks,h 4)i;j EndLine
060Ed .FIXUP D
060Ed(8D000005): LDR SB, MT, MOD0 [System]
060Fd(40D80000): ADD R0, SB, 0H [data]
0610d .FIXUP D
0610d(8D900002): LDR SB, MT, MOD9 [Texts]
0611d(41D80005): ADD R1, SB, VAR5
0612e .FIXUP D
0612e(8D000002): LDR SB, MT, MOD0 [System]
0613e(42D801F0): ADD R2, SB, 1F0H [" Tasks"]
0614e(43000008): MOV R3, R0, 8H
0615f .FIXUP P
0615f(F791D009): BL MOD9 [Texts] PROC29
0616g .FIXUP D
0616g(8D000004): LDR SB, MT, MOD0 [System]
0617g(40D80000): ADD R0, SB, 0H [data]
0618g .FIXUP D
0618g(8D900002): LDR SB, MT, MOD9 [Texts]
0619g(41D80005): ADD R1, SB, VAR5
061Ah .FIXUP D
061Ah(8DA00002): LDR SB, MT, MOD10 [Oberon]
061Bh(82D00012): LDR R2, SB, VAR18
061Ci(43000004): MOV R3, R0, 4H
061Dj .FIXUP P
061Dj(F791E008): BL MOD9 [Texts] PROC30
ENDk Watch;
061Ek(F7FFFA0C): BL -1524 [002BH]
061Fk(8FE00000): LDR LNK, SP, 0H
0620k(4EE80004): ADD SP, SP, 4H
0621k(C700000F): B LNK
PROCEDURE ShowModules*;
VAR T: Texts.Text;
V: Viewers.Viewer;
M: Modules.Module;
X, Y: INTEGER;
BEGINl T := TextFrames.Text("")m;n
0622l .PROC 21
0622l .COMMAND ShowModules
0622l(4EE90018): SUB SP, SP, 18H
0623l(AFE00000): STR LNK, SP, 0H
0624m .FIXUP D
0624m(8D00000A): LDR SB, MT, MOD0 [System]
0625m(40D801F8): ADD R0, SB, 1F8H [""]
0626m(41000001): MOV R1, R0, 1H
0627n .FIXUP P
0627n(F7C2B00A): BL MOD12 [TextFrames] PROC43
0628n(A0E00004): STR R0, SP, 4H
Oberon.AllocateSystemViewer(Oberon.Par.vwr.oXp,q X,r Y)s;t
0629o .FIXUP D
0629o(8DA00005): LDR SB, MT, MOD10 [Oberon]
062Ao(40D8000E): ADD R0, SB, VAR14
062Bp(80000000): LDR R0, R0, 0H
062Cp(D12B5A4C): BLEQ MT [trap=4, pos=11098]
062Dq(80000008): LDR R0, R0, 8H
062Er(41E80010): ADD R1, SP, 10H
062Fs(42E80014): ADD R2, SP, 14H
0630t .FIXUP P
0630t(F7A23009): BL MOD10 [Oberon] PROC35
V := MenuViewers.New(TextFrames.NewMenu("System.ShowModules",u StandardMenu)v,w
0631u .FIXUP D
0631u(8D000008): LDR SB, MT, MOD0 [System]
0632u(40D801FC): ADD R0, SB, 1FCH ["System.ShowModules"]
0633u(41000013): MOV R1, R0, 13H
0634v(42D80048): ADD R2, SB, 48H
0635v(4300003C): MOV R3, R0, 3CH
0636w .FIXUP P
0636w(F7C2C006): BL MOD12 [TextFrames] PROC44
TextFrames.NewText(Tx,y 0)z,a TextFrames.menuH,b X,c Y)d;e
0637x(4EE90004): SUB SP, SP, 4H
0638x(A0E00000): STR R0, SP, 0H
0639y(80E00008): LDR R0, SP, 8H
063Az(41000000): MOV R1, R0, 0H
063Ba .FIXUP P
063Ba(F7C2D005): BL MOD12 [TextFrames] PROC45
063Ca(01000000): MOV R1, R0, R0
063Da(80E00000): LDR R0, SP, 0H
063Ea(4EE80004): ADD SP, SP, 4H
063Fb .FIXUP D
063Fb(8DC0000E): LDR SB, MT, MOD12 [TextFrames]
0640b(82D00005): LDR R2, SB, VAR5
0641c(83E00010): LDR R3, SP, 10H
0642d(84E00014): LDR R4, SP, 14H
0643e .FIXUP P
0643e(F7B04008): BL MOD11 [MenuViewers] PROC4
0644e(A0E00008): STR R0, SP, 8H
M := Modules.root;f
0645f .FIXUP D
0645f(8D400006): LDR SB, MT, MOD4 [Modules]
0646f(80D00002): LDR R0, SB, VAR2
0647f(A0E0000C): STR R0, SP, CH
WHILE M # NIL DOg
0648g(80E0000C): LDR R0, SP, CH
0649g(E100003C): BEQ 60 [0686H]
IF M.nameh[0] # 0X THENi
064Ah(80E0000C): LDR R0, SP, CH
064Bh(D12C2A4C): BLEQ MT [trap=4, pos=11306]
064Ci(90000000): LDR R0, R0, 0H
064Di(E1000026): BEQ 38 [0674H]
Texts.WriteString(W,j M.namek)l;m Texts.Write(W,n 9X)o;p Texts.WriteHex(W,q ORD(M))r;s
064Ej .FIXUP D
064Ej(8D000009): LDR SB, MT, MOD0 [System]
064Fj(40D80000): ADD R0, SB, 0H [data]
0650j .FIXUP D
0650j(8D900002): LDR SB, MT, MOD9 [Texts]
0651j(41D80005): ADD R1, SB, VAR5
0652k(82E0000C): LDR R2, SP, CH
0653k(D12C5B4C): BLEQ MT [trap=4, pos=11355]
0654l(43000020): MOV R3, R0, 20H
0655m .FIXUP P
0655m(F791D012): BL MOD9 [Texts] PROC29
0656n .FIXUP D
0656n(8D000006): LDR SB, MT, MOD0 [System]
0657n(40D80000): ADD R0, SB, 0H [data]
0658n .FIXUP D
0658n(8D900002): LDR SB, MT, MOD9 [Texts]
0659n(41D80005): ADD R1, SB, VAR5
065Ao(42000009): MOV R2, R0, 9H
065Bp .FIXUP P
065Bp(F791B006): BL MOD9 [Texts] PROC27
065Cq .FIXUP D
065Cq(8D000004): LDR SB, MT, MOD0 [System]
065Dq(40D80000): ADD R0, SB, 0H [data]
065Eq .FIXUP D
065Eq(8D900002): LDR SB, MT, MOD9 [Texts]
065Fq(41D80005): ADD R1, SB, VAR5
0660r(82E0000C): LDR R2, SP, CH
0661s .FIXUP P
0661s(F791F006): BL MOD9 [Texts] PROC31
Texts.WriteHex(W,t M.codeu)v;w Texts.WriteInt(W,x M.refcnty,z 4)a
0662t .FIXUP D
0662t(8D000004): LDR SB, MT, MOD0 [System]
0663t(40D80000): ADD R0, SB, 0H [data]
0664t .FIXUP D
0664t(8D900002): LDR SB, MT, MOD9 [Texts]
0665t(41D80005): ADD R1, SB, VAR5
0666u(82E0000C): LDR R2, SP, CH
0667u(D12CAD4C): BLEQ MT [trap=4, pos=11437]
0668v(82200038): LDR R2, R2, 38H
0669w .FIXUP P
0669w(F791F008): BL MOD9 [Texts] PROC31
066Ax .FIXUP D
066Ax(8D000006): LDR SB, MT, MOD0 [System]
066Bx(40D80000): ADD R0, SB, 0H [data]
066Cx .FIXUP D
066Cx(8D900002): LDR SB, MT, MOD9 [Texts]
066Dx(41D80005): ADD R1, SB, VAR5
066Ey(82E0000C): LDR R2, SP, CH
066Fy(D12CCA4C): BLEQ MT [trap=4, pos=11466]
0670z(82200030): LDR R2, R2, 30H
0671a(43000004): MOV R3, R0, 4H
ELSEb Textsc.WriteString(W,d "---")e
0672b .FIXUP P
0672b(F791E009): BL MOD9 [Texts] PROC30
0673c(E7000008): B 8 [067CH]
0674d .FIXUP D
0674d(8D000008): LDR SB, MT, MOD0 [System]
0675d(40D80000): ADD R0, SB, 0H [data]
0676d .FIXUP D
0676d(8D900002): LDR SB, MT, MOD9 [Texts]
0677d(41D80005): ADD R1, SB, VAR5
0678e .FIXUP D
0678e(8D000002): LDR SB, MT, MOD0 [System]
0679e(42D80210): ADD R2, SB, 210H ["---"]
067Ae(43000004): MOV R3, R0, 4H
ENDf ;
067Bf .FIXUP P
067Bf(F791D009): BL MOD9 [Texts] PROC29
Texts.WriteLn(W)g;h M := M.nexti
067Cg .FIXUP D
067Cg(8D000004): LDR SB, MT, MOD0 [System]
067Dg(40D80000): ADD R0, SB, 0H [data]
067Eg .FIXUP D
067Eg(8D900002): LDR SB, MT, MOD9 [Texts]
067Fg(41D80005): ADD R1, SB, VAR5
0680h .FIXUP P
0680h(F791C005): BL MOD9 [Texts] PROC28
0681i(80E0000C): LDR R0, SP, CH
0682i(D12D254C): BLEQ MT [trap=4, pos=11557]
ENDj;
0683j(80000020): LDR R0, R0, 20H
0684j(A0E0000C): STR R0, SP, CH
0685j(E7FFFFC2): B -62 [0648H]
Texts.Append(T,k W.buf)l
0686k(80E00004): LDR R0, SP, 4H
0687l .FIXUP D
0687l(8D000009): LDR SB, MT, MOD0 [System]
0688l(81D00000): LDR R1, SB, 0H [data]
ENDm ShowModules;
0689m .FIXUP P
0689m(F790E009): BL MOD9 [Texts] PROC14
068Am(8FE00000): LDR LNK, SP, 0H
068Bm(4EE80018): ADD SP, SP, 18H
068Cm(C700000F): B LNK
PROCEDURE ShowCommands*;
VAR M: Modules.Module;
comadr: LONGINT; ch: CHAR;
T: Texts.Text;
S: Texts.Scanner;
V: Viewers.Viewer;
X, Y: INTEGER;
BEGINn GetArg(S)o;p
068Dn .PROC 22
068Dn .COMMAND ShowCommands
068Dn(4EE90094): SUB SP, SP, 94H
068En(AFE00000): STR LNK, SP, 0H
068Fo(40E80014): ADD R0, SP, 14H
0690o .FIXUP D
0690o(8D900009): LDR SB, MT, MOD9 [Texts]
0691o(41D80003): ADD R1, SB, VAR3
0692p(F7FFF96D): BL -1683 [0000H]
IF S.class = Texts.Name THENq
0693q(80E00050): LDR R0, SP, 50H
0694q(40090001): SUB R0, R0, 1H
0695q(E9000069): BNE 105 [06FFH]
Modules.Load(S.s,r M)s;t
0696r(40E80068): ADD R0, SP, 68H
0697r(41000020): MOV R1, R0, 20H
0698s(42E80004): ADD R2, SP, 4H
0699t .FIXUP P
0699t(F7408010): BL MOD4 [Modules] PROC8
IF M # NIL THENu
069Au(80E00004): LDR R0, SP, 4H
069Bu(E1000063): BEQ 99 [06FFH]
Oberon.AllocateSystemViewer(Oberon.Par.vwr.vXw,x X,y Y)z;a T := TextFrames.Text("")b;c
069Cv .FIXUP D
069Cv(8DA0000C): LDR SB, MT, MOD10 [Oberon]
069Dv(40D8000E): ADD R0, SB, VAR14
069Ew(80000000): LDR R0, R0, 0H
069Fw(D12EAA4C): BLEQ MT [trap=4, pos=11946]
06A0x(80000008): LDR R0, R0, 8H
06A1y(41E8008C): ADD R1, SP, 8CH
06A2z(42E80090): ADD R2, SP, 90H
06A3a .FIXUP P
06A3a(F7A2300A): BL MOD10 [Oberon] PROC35
06A4b .FIXUP D
06A4b(8D000008): LDR SB, MT, MOD0 [System]
06A5b(40D80214): ADD R0, SB, 214H [""]
06A6b(41000001): MOV R1, R0, 1H
06A7c .FIXUP P
06A7c(F7C2B004): BL MOD12 [TextFrames] PROC43
06A8c(A0E00010): STR R0, SP, 10H
V := MenuViewers.New(TextFrames.NewMenu("System.Commands",d StandardMenu)e,f
06A9d .FIXUP D
06A9d(8D000005): LDR SB, MT, MOD0 [System]
06AAd(40D80218): ADD R0, SB, 218H ["System.Commands"]
06ABd(41000010): MOV R1, R0, 10H
06ACe(42D80048): ADD R2, SB, 48H
06ADe(4300003C): MOV R3, R0, 3CH
06AEf .FIXUP P
06AEf(F7C2C007): BL MOD12 [TextFrames] PROC44
TextFrames.NewText(Tg,h 0)i,j TextFrames.menuH,k X,l Y)m;n
06AFg(4EE90004): SUB SP, SP, 4H
06B0g(A0E00000): STR R0, SP, 0H
06B1h(80E00014): LDR R0, SP, 14H
06B2i(41000000): MOV R1, R0, 0H
06B3j .FIXUP P
06B3j(F7C2D005): BL MOD12 [TextFrames] PROC45
06B4j(01000000): MOV R1, R0, R0
06B5j(80E00000): LDR R0, SP, 0H
06B6j(4EE80004): ADD SP, SP, 4H
06B7k .FIXUP D
06B7k(8DC0000E): LDR SB, MT, MOD12 [TextFrames]
06B8k(82D00005): LDR R2, SB, VAR5
06B9l(83E0008C): LDR R3, SP, 8CH
06BAm(84E00090): LDR R4, SP, 90H
06BBn .FIXUP P
06BBn(F7B04008): BL MOD11 [MenuViewers] PROC4
06BCn(A0E00088): STR R0, SP, 88H
comadr := M.cmdo;p SYSTEM.GET(comadr, ch);q INC(comadr);r
06BDo(80E00004): LDR R0, SP, 4H
06BEo(D12F754C): BLEQ MT [trap=4, pos=12149]
06BFp(80000040): LDR R0, R0, 40H
06C0p(A0E00008): STR R0, SP, 8H
06C1q(80E00008): LDR R0, SP, 8H
06C2q(90000000): LDR R0, R0, 0H
06C3q(B0E0000C): STR R0, SP, CH
06C4r(80E00008): LDR R0, SP, 8H
06C5r(40080001): ADD R0, R0, 1H
06C6r(A0E00008): STR R0, SP, 8H
WHILE ch # 0X DOs
06C7s(90E0000C): LDR R0, SP, CH
06C8s(E1000032): BEQ 50 [06FBH]
Texts.WriteString(W,t S.s)u;v Texts.Write(W,w ".")x;y
06C9t .FIXUP D
06C9t(8D000012): LDR SB, MT, MOD0 [System]
06CAt(40D80000): ADD R0, SB, 0H [data]
06CBt .FIXUP D
06CBt(8D900002): LDR SB, MT, MOD9 [Texts]
06CCt(41D80005): ADD R1, SB, VAR5
06CDu(42E80068): ADD R2, SP, 68H
06CEu(43000020): MOV R3, R0, 20H
06CFv .FIXUP P
06CFv(F791D014): BL MOD9 [Texts] PROC29
06D0w .FIXUP D
06D0w(8D000005): LDR SB, MT, MOD0 [System]
06D1w(40D80000): ADD R0, SB, 0H [data]
06D2w .FIXUP D
06D2w(8D900002): LDR SB, MT, MOD9 [Texts]
06D3w(41D80005): ADD R1, SB, VAR5
06D4x(4200002E): MOV R2, R0, 2EH
06D5y .FIXUP P
06D5y(F791B006): BL MOD9 [Texts] PROC27
REPEAT Texts.Write(W,z ch)a;b SYSTEM.GET(comadr, ch);c INC(comadr)
06D6z .FIXUP D
06D6z(8D000004): LDR SB, MT, MOD0 [System]
06D7z(40D80000): ADD R0, SB, 0H [data]
06D8z .FIXUP D
06D8z(8D900002): LDR SB, MT, MOD9 [Texts]
06D9z(41D80005): ADD R1, SB, VAR5
06DAa(92E0000C): LDR R2, SP, CH
06DBb .FIXUP P
06DBb(F791B006): BL MOD9 [Texts] PROC27
06DCc(80E00008): LDR R0, SP, 8H
06DDc(90000000): LDR R0, R0, 0H
06DEc(B0E0000C): STR R0, SP, CH
UNTILd ch = 0X;e
06DFd(80E00008): LDR R0, SP, 8H
06E0d(40080001): ADD R0, R0, 1H
06E1d(A0E00008): STR R0, SP, 8H
06E2e(90E0000C): LDR R0, SP, CH
06E3e(E9FFFFF2): BNE -14 [06D6H]
WHILE comadr MOD 4 #f 0 DOg INC(comadr) ENDh ;
06E4f(80E00008): LDR R0, SP, 8H
06E5f(40040003): AND R0, R0, 3H
06E6g(40090000): SUB R0, R0, 0H
06E7g(E1000004): BEQ 4 [06ECH]
06E8h(80E00008): LDR R0, SP, 8H
06E9h(40080001): ADD R0, R0, 1H
06EAh(A0E00008): STR R0, SP, 8H
06EBh(E7FFFFF8): B -8 [06E4H]
Texts.WriteLn(W)i;j INC(comadr, 4);k SYSTEM.GET(comadr, ch);l INC(comadr)
06ECi .FIXUP D
06ECi(8D000014): LDR SB, MT, MOD0 [System]
06EDi(40D80000): ADD R0, SB, 0H [data]
06EEi .FIXUP D
06EEi(8D900002): LDR SB, MT, MOD9 [Texts]
06EFi(41D80005): ADD R1, SB, VAR5
06F0j .FIXUP P
06F0j(F791C015): BL MOD9 [Texts] PROC28
06F1k(80E00008): LDR R0, SP, 8H
06F2k(40080004): ADD R0, R0, 4H
06F3k(A0E00008): STR R0, SP, 8H
06F4l(80E00008): LDR R0, SP, 8H
06F5l(90000000): LDR R0, R0, 0H
06F6l(B0E0000C): STR R0, SP, CH
ENDm ;
06F7m(80E00008): LDR R0, SP, 8H
06F8m(40080001): ADD R0, R0, 1H
06F9m(A0E00008): STR R0, SP, 8H
06FAm(E7FFFFCC): B -52 [06C7H]
Texts.Append(T,n W.buf)o
06FBn(80E00010): LDR R0, SP, 10H
06FCo .FIXUP D
06FCo(8D00000E): LDR SB, MT, MOD0 [System]
06FDo(81D00000): LDR R1, SB, 0H [data]
ENDp
06FEp .FIXUP P
06FEp(F790E00E): BL MOD9 [Texts] PROC14
END
ENDq ShowCommands;
06FFq(8FE00000): LDR LNK, SP, 0H
0700q(4EE80094): ADD SP, SP, 94H
0701q(C700000F): B LNK
PROCEDURE ShowFonts*;
VAR fnt: Fonts.Font;
BEGINr Texts.WriteString(W,s "System.ShowFonts")t;u Texts.WriteLn(W)v;w fnt := Fonts.root;x
0702r .PROC 23
0702r .COMMAND ShowFonts
0702r(4EE90008): SUB SP, SP, 8H
0703r(AFE00000): STR LNK, SP, 0H
0704s .FIXUP D
0704s(8D000008): LDR SB, MT, MOD0 [System]
0705s(40D80000): ADD R0, SB, 0H [data]
0706s .FIXUP D
0706s(8D900002): LDR SB, MT, MOD9 [Texts]
0707s(41D80005): ADD R1, SB, VAR5
0708t .FIXUP D
0708t(8D000002): LDR SB, MT, MOD0 [System]
0709t(42D80228): ADD R2, SB, 228H ["System.ShowFonts"]
070At(43000011): MOV R3, R0, 11H
070Bu .FIXUP P
070Bu(F791D00D): BL MOD9 [Texts] PROC29
070Cv .FIXUP D
070Cv(8D000004): LDR SB, MT, MOD0 [System]
070Dv(40D80000): ADD R0, SB, 0H [data]
070Ev .FIXUP D
070Ev(8D900002): LDR SB, MT, MOD9 [Texts]
070Fv(41D80005): ADD R1, SB, VAR5
0710w .FIXUP P
0710w(F791C005): BL MOD9 [Texts] PROC28
0711x .FIXUP D
0711x(8D800003): LDR SB, MT, MOD8 [Fonts]
0712x(80D00003): LDR R0, SB, VAR3
0713x(A0E00004): STR R0, SP, 4H
WHILE fnt # NIL DOy
0714y(80E00004): LDR R0, SP, 4H
0715y(E1000018): BEQ 24 [072EH]
Texts.Write(W,z 9X)a;b Texts.WriteString(W,c fnt.named)e;f Texts.WriteLn(W)g;h fnt := fnt.nexti
0716z .FIXUP D
0716z(8D000005): LDR SB, MT, MOD0 [System]
0717z(40D80000): ADD R0, SB, 0H [data]
0718z .FIXUP D
0718z(8D900002): LDR SB, MT, MOD9 [Texts]
0719z(41D80005): ADD R1, SB, VAR5
071Aa(42000009): MOV R2, R0, 9H
071Bb .FIXUP P
071Bb(F791B00B): BL MOD9 [Texts] PROC27
071Cc .FIXUP D
071Cc(8D000004): LDR SB, MT, MOD0 [System]
071Dc(40D80000): ADD R0, SB, 0H [data]
071Ec .FIXUP D
071Ec(8D900002): LDR SB, MT, MOD9 [Texts]
071Fc(41D80005): ADD R1, SB, VAR5
0720d(82E00004): LDR R2, SP, 4H
0721d(D132014C): BLEQ MT [trap=4, pos=12801]
0722e(43000020): MOV R3, R0, 20H
0723f .FIXUP P
0723f(F791D008): BL MOD9 [Texts] PROC29
0724g .FIXUP D
0724g(8D000006): LDR SB, MT, MOD0 [System]
0725g(40D80000): ADD R0, SB, 0H [data]
0726g .FIXUP D
0726g(8D900002): LDR SB, MT, MOD9 [Texts]
0727g(41D80005): ADD R1, SB, VAR5
0728h .FIXUP P
0728h(F791C005): BL MOD9 [Texts] PROC28
0729i(80E00004): LDR R0, SP, 4H
072Ai(D132254C): BLEQ MT [trap=4, pos=12837]
ENDj ;
072Bj(80000034): LDR R0, R0, 34H
072Cj(A0E00004): STR R0, SP, 4H
072Dj(E7FFFFE6): B -26 [0714H]
Texts.Append(Oberon.Log,k W.buf)l
072Ek .FIXUP D
072Ek(8DA00008): LDR SB, MT, MOD10 [Oberon]
072Fk(80D0000D): LDR R0, SB, VAR13
0730l .FIXUP D
0730l(8D000002): LDR SB, MT, MOD0 [System]
0731l(81D00000): LDR R1, SB, 0H [data]
ENDm ShowFonts;
0732m .FIXUP P
0732m(F790E00A): BL MOD9 [Texts] PROC14
0733m(8FE00000): LDR LNK, SP, 0H
0734m(4EE80008): ADD SP, SP, 8H
0735m(C700000F): B LNK
PROCEDURE OpenViewers;
VAR logV, toolV: Viewers.Viewer;
menu, main: Display.Frame;
d: LONGINT; X, Y: INTEGER;
BEGINn d := Kernel.Clock();o Texts.WriteString(W,p "Oberon V5 NW 14.4.2013")q;r EndLine;s
0736n(4EE90020): SUB SP, SP, 20H
0737n(AFE00000): STR LNK, SP, 0H
0738o .FIXUP P
0738o(F7112006): BL MOD1 [Kernel] PROC18
0739o(A0E00014): STR R0, SP, 14H
073Ap .FIXUP D
073Ap(8D00000A): LDR SB, MT, MOD0 [System]
073Bp(40D80000): ADD R0, SB, 0H [data]
073Cp .FIXUP D
073Cp(8D900002): LDR SB, MT, MOD9 [Texts]
073Dp(41D80005): ADD R1, SB, VAR5
073Eq .FIXUP D
073Eq(8D000002): LDR SB, MT, MOD0 [System]
073Fq(42D8023C): ADD R2, SB, 23CH ["Oberon V5 NW 14.4.2013"]
0740q(43000018): MOV R3, R0, 18H
0741r .FIXUP P
0741r(F791D009): BL MOD9 [Texts] PROC29
0742s(F7FFF8E8): BL -1816 [002BH]
Oberon.AllocateSystemViewer(0,t X,u Y)v;w
0743t(40000000): MOV R0, R0, 0H
0744u(41E80018): ADD R1, SP, 18H
0745v(42E8001C): ADD R2, SP, 1CH
0746w .FIXUP P
0746w(F7A23005): BL MOD10 [Oberon] PROC35
menu := TextFrames.NewMenu("System.Log",x LogMenu)y;z
0747x .FIXUP D
0747x(8D000009): LDR SB, MT, MOD0 [System]
0748x(40D80254): ADD R0, SB, 254H ["System.Log"]
0749x(4100000B): MOV R1, R0, BH
074Ay(42D80084): ADD R2, SB, 84H
074By(4300003D): MOV R3, R0, 3DH
074Cz .FIXUP P
074Cz(F7C2C006): BL MOD12 [TextFrames] PROC44
074Dz(A0E0000C): STR R0, SP, CH
main := TextFrames.NewText(Oberon.Log,a 0)b;c
074Ea .FIXUP D
074Ea(8DA00007): LDR SB, MT, MOD10 [Oberon]
074Fa(80D0000D): LDR R0, SB, VAR13
0750b(41000000): MOV R1, R0, 0H
0751c .FIXUP P
0751c(F7C2D005): BL MOD12 [TextFrames] PROC45
0752c(A0E00010): STR R0, SP, 10H
logV := MenuViewers.New(menu,d main,e TextFrames.menuH,f X,g Y)h;i
0753d(80E0000C): LDR R0, SP, CH
0754e(81E00010): LDR R1, SP, 10H
0755f .FIXUP D
0755f(8DC00007): LDR SB, MT, MOD12 [TextFrames]
0756f(82D00005): LDR R2, SB, VAR5
0757g(83E00018): LDR R3, SP, 18H
0758h(84E0001C): LDR R4, SP, 1CH
0759i .FIXUP P
0759i(F7B04008): BL MOD11 [MenuViewers] PROC4
075Ai(A0E00004): STR R0, SP, 4H
Oberon.AllocateSystemViewer(0,j X,k Y)l;m
075Bj(40000000): MOV R0, R0, 0H
075Ck(41E80018): ADD R1, SP, 18H
075Dl(42E8001C): ADD R2, SP, 1CH
075Em .FIXUP P
075Em(F7A23005): BL MOD10 [Oberon] PROC35
menu := TextFrames.NewMenu("System.Tool",n StandardMenu)o;p
075Fn .FIXUP D
075Fn(8D00000A): LDR SB, MT, MOD0 [System]
0760n(40D80260): ADD R0, SB, 260H ["System.Tool"]
0761n(4100000C): MOV R1, R0, CH
0762o(42D80048): ADD R2, SB, 48H
0763o(4300003C): MOV R3, R0, 3CH
0764p .FIXUP P
0764p(F7C2C006): BL MOD12 [TextFrames] PROC44
0765p(A0E0000C): STR R0, SP, CH
main := TextFrames.NewText(TextFrames.Text("System.Tool")q,r 0)s;t
0766q .FIXUP D
0766q(8D000007): LDR SB, MT, MOD0 [System]
0767q(40D8026C): ADD R0, SB, 26CH ["System.Tool"]
0768q(4100000C): MOV R1, R0, CH
0769r .FIXUP P
0769r(F7C2B005): BL MOD12 [TextFrames] PROC43
076As(41000000): MOV R1, R0, 0H
076Bt .FIXUP P
076Bt(F7C2D002): BL MOD12 [TextFrames] PROC45
076Ct(A0E00010): STR R0, SP, 10H
toolV := MenuViewers.New(menu,u main,v TextFrames.menuH,w X,x Y)y
076Du(80E0000C): LDR R0, SP, CH
076Ev(81E00010): LDR R1, SP, 10H
076Fw .FIXUP D
076Fw(8DC00009): LDR SB, MT, MOD12 [TextFrames]
0770w(82D00005): LDR R2, SB, VAR5
0771x(83E00018): LDR R3, SP, 18H
0772y(84E0001C): LDR R4, SP, 1CH
ENDz OpenViewers;
0773z .FIXUP P
0773z(F7B04008): BL MOD11 [MenuViewers] PROC4
0774z(A0E00008): STR R0, SP, 8H
0775z(8FE00000): LDR LNK, SP, 0H
0776z(4EE80020): ADD SP, SP, 20H
0777z(C700000F): B LNK
PROCEDURE ExtendDisplay*;
VAR V: Viewers.Viewer;
X, Y, DX, DW, DH: INTEGER;
S: Texts.Scanner;
BEGINa GetArg(S)b;c
0778a .PROC 24
0778a .COMMAND ExtendDisplay
0778a(4EE90090): SUB SP, SP, 90H
0779a(AFE00000): STR LNK, SP, 0H
077Ab(40E8001C): ADD R0, SP, 1CH
077Bb .FIXUP D
077Bb(8D90000C): LDR SB, MT, MOD9 [Texts]
077Cb(41D80003): ADD R1, SB, VAR3
077Dc(F7FFF882): BL -1918 [0000H]
IF S.class = Texts.Name THENd
077Ed(80E00058): LDR R0, SP, 58H
077Fd(40090001): SUB R0, R0, 1H
0780d(E900002B): BNE 43 [07ACH]
DX := Viewers.curW;e DW := Oberon.DisplayWidth(DX)f;g DH := Oberon.DisplayHeight(DX)h;i
0781e .FIXUP D
0781e(8D700006): LDR SB, MT, MOD7 [Viewers]
0782e(80D00003): LDR R0, SB, VAR3
0783e(A0E00010): STR R0, SP, 10H
0784f(80E00010): LDR R0, SP, 10H
0785g .FIXUP P
0785g(F7A1D012): BL MOD10 [Oberon] PROC29
0786g(A0E00014): STR R0, SP, 14H
0787h(80E00010): LDR R0, SP, 10H
0788i .FIXUP P
0788i(F7A1E003): BL MOD10 [Oberon] PROC30
0789i(A0E00018): STR R0, SP, 18H
Oberon.OpenDisplay(DW DIV 8 *j 5,k DW DIV 8 *l 3,m DH)n;o
078Aj(80E00014): LDR R0, SP, 14H
078Bj(40020003): ASR R0, R0, 3H
078Ck(400A0005): MUL R0, R0, 5H
078Dl(81E00014): LDR R1, SP, 14H
078El(41120003): ASR R1, R1, 3H
078Fm(411A0003): MUL R1, R1, 3H
0790n(82E00018): LDR R2, SP, 18H
0791o .FIXUP P
0791o(F7A1C009): BL MOD10 [Oberon] PROC28
Oberon.AllocateSystemViewer(DX,p X,q Y)r;s
0792p(80E00010): LDR R0, SP, 10H
0793q(41E80008): ADD R1, SP, 8H
0794r(42E8000C): ADD R2, SP, CH
0795s .FIXUP P
0795s(F7A23004): BL MOD10 [Oberon] PROC35
V := MenuViewers.New(
TextFrames.NewMenu(S.s,t StandardMenu)u,v
0796t(40E80070): ADD R0, SP, 70H
0797t(41000020): MOV R1, R0, 20H
0798u .FIXUP D
0798u(8D000017): LDR SB, MT, MOD0 [System]
0799u(42D80048): ADD R2, SB, 48H ["System.Close System.Copy System.Grow Edit.Search Edit.Store"]
079Au(4300003C): MOV R3, R0, 3CH
079Bv .FIXUP P
079Bv(F7C2C006): BL MOD12 [TextFrames] PROC44
TextFrames.NewText(TextFramesw.Text(S.s)x,y 0)z,a
079Cw(4EE90004): SUB SP, SP, 4H
079Dw(A0E00000): STR R0, SP, 0H
079Ex(40E80074): ADD R0, SP, 74H
079Fx(41000020): MOV R1, R0, 20H
07A0y .FIXUP P
07A0y(F7C2B005): BL MOD12 [TextFrames] PROC43
07A1z(41000000): MOV R1, R0, 0H
07A2a .FIXUP P
07A2a(F7C2D002): BL MOD12 [TextFrames] PROC45
07A3a(01000000): MOV R1, R0, R0
07A4a(80E00000): LDR R0, SP, 0H
07A5a(4EE80004): ADD SP, SP, 4H
TextFrames.menuH,b X,c Y)d
07A6b .FIXUP D
07A6b(8DC0000E): LDR SB, MT, MOD12 [TextFrames]
07A7b(82D00005): LDR R2, SB, VAR5
07A8c(83E00008): LDR R3, SP, 8H
07A9d(84E0000C): LDR R4, SP, CH
ENDe
07AAe .FIXUP P
07AAe(F7B04008): BL MOD11 [MenuViewers] PROC4
07ABe(A0E00004): STR R0, SP, 4H
ENDf ExtendDisplay;
07ACf(8FE00000): LDR LNK, SP, 0H
07ADf(4EE80090): ADD SP, SP, 90H
07AEf(C700000F): B LNK
PROCEDURE Trap(VAR a: INTEGER; b: INTEGER);
VAR u, v, w: INTEGER; mod: Modules.Module;
BEGINg u := SYSTEM.REG(15);h SYSTEM.GET(u - 4,i v);j w := v DIV 10H MODk 10H;l (*trap number*)
07AFg(4EE9001C): SUB SP, SP, 1CH
07B0g(AFE00000): STR LNK, SP, 0H
07B1g(A0E00004): STR R0, SP, 4H
07B2g(A1E00008): STR R1, SP, 8H
07B3h(0000000F): MOV R0, R0, LNK
07B4h(A0E0000C): STR R0, SP, CH
07B5i(80E0000C): LDR R0, SP, CH
07B6i(40090004): SUB R0, R0, 4H
07B7j(80000000): LDR R0, R0, 0H
07B8j(A0E00010): STR R0, SP, 10H
07B9k(80E00010): LDR R0, SP, 10H
07BAk(40020004): ASR R0, R0, 4H
07BBl(4004000F): AND R0, R0, FH
07BCl(A0E00014): STR R0, SP, 14H
IF w = 0 THENm Kernel.New(a,n b)o
07BDm(80E00014): LDR R0, SP, 14H
07BEm(E9000004): BNE 4 [07C3H]
07BFn(80E00004): LDR R0, SP, 4H
07C0o(81E00008): LDR R1, SP, 8H
ELSEp (*trap*) Textsq.WriteLn(W)r;s Texts.WriteString(W,t " pos ")u;v Texts.WriteInt(W,w v DIV 100H MODx 10000H,y 4)z;a
07C1p .FIXUP P
07C1p(F7108017): BL MOD1 [Kernel] PROC8
07C2q(E7000066): B 102 [0829H]
07C3r .FIXUP D
07C3r(8D00001D): LDR SB, MT, MOD0 [System]
07C4r(40D80000): ADD R0, SB, 0H [data]
07C5r .FIXUP D
07C5r(8D900002): LDR SB, MT, MOD9 [Texts]
07C6r(41D80005): ADD R1, SB, VAR5
07C7s .FIXUP P
07C7s(F791C006): BL MOD9 [Texts] PROC28
07C8t .FIXUP D
07C8t(8D000003): LDR SB, MT, MOD0 [System]
07C9t(40D80000): ADD R0, SB, 0H [data]
07CAt .FIXUP D
07CAt(8D900002): LDR SB, MT, MOD9 [Texts]
07CBt(41D80005): ADD R1, SB, VAR5
07CCu .FIXUP D
07CCu(8D000002): LDR SB, MT, MOD0 [System]
07CDu(42D80278): ADD R2, SB, 278H [" pos "]
07CEu(43000007): MOV R3, R0, 7H
07CFv .FIXUP P
07CFv(F791D008): BL MOD9 [Texts] PROC29
07D0w .FIXUP D
07D0w(8D000004): LDR SB, MT, MOD0 [System]
07D1w(40D80000): ADD R0, SB, 0H [data]
07D2w .FIXUP D
07D2w(8D900002): LDR SB, MT, MOD9 [Texts]
07D3w(41D80005): ADD R1, SB, VAR5
07D4x(82E00010): LDR R2, SP, 10H
07D5x(42220008): ASR R2, R2, 8H
07D6y(4224FFFF): AND R2, R2, FFFFFFFFH
07D7z(43000004): MOV R3, R0, 4H
07D8a .FIXUP P
07D8a(F791E009): BL MOD9 [Texts] PROC30
Texts.WriteString(W,b " TRAP")c;d Texts.WriteInt(W,e w,f 4)g;h mod := Modules.root;i
07D9b .FIXUP D
07D9b(8D000007): LDR SB, MT, MOD0 [System]
07DAb(40D80000): ADD R0, SB, 0H [data]
07DBb .FIXUP D
07DBb(8D900002): LDR SB, MT, MOD9 [Texts]
07DCb(41D80005): ADD R1, SB, VAR5
07DDc .FIXUP D
07DDc(8D000002): LDR SB, MT, MOD0 [System]
07DEc(42D80280): ADD R2, SB, 280H [" TRAP"]
07DFc(43000007): MOV R3, R0, 7H
07E0d .FIXUP P
07E0d(F791D008): BL MOD9 [Texts] PROC29
07E1e .FIXUP D
07E1e(8D000004): LDR SB, MT, MOD0 [System]
07E2e(40D80000): ADD R0, SB, 0H [data]
07E3e .FIXUP D
07E3e(8D900002): LDR SB, MT, MOD9 [Texts]
07E4e(41D80005): ADD R1, SB, VAR5
07E5f(82E00014): LDR R2, SP, 14H
07E6g(43000004): MOV R3, R0, 4H
07E7h .FIXUP P
07E7h(F791E007): BL MOD9 [Texts] PROC30
07E8i .FIXUP D
07E8i(8D400005): LDR SB, MT, MOD4 [Modules]
07E9i(80D00002): LDR R0, SB, VAR2
07EAi(A0E00018): STR R0, SP, 18H
WHILE (mod # NIL)j & (k(u < mod.codel)m OR (nu >= mod.impo)p) DOq mod := mod.nextr ENDs ;
07EBj(80E00018): LDR R0, SP, 18H
07ECk(E1000011): BEQ 17 [07FEH]
07EDl(80E00018): LDR R0, SP, 18H
07EEl(D138F74C): BLEQ MT [trap=4, pos=14583]
07EFm(81E0000C): LDR R1, SP, CH
07F0m(80000038): LDR R0, R0, 38H
07F1m(01190000): SUB R1, R1, R0
07F2n(E5000006): BLT 6 [07F9H]
07F3o(80E00018): LDR R0, SP, 18H
07F4o(D139094C): BLEQ MT [trap=4, pos=14601]
07F5p(81E0000C): LDR R1, SP, CH
07F6p(8000003C): LDR R0, R0, 3CH
07F7p(01190000): SUB R1, R1, R0
07F8q(E5000005): BLT 5 [07FEH]
07F9r(80E00018): LDR R0, SP, 18H
07FAr(D1391E4C): BLEQ MT [trap=4, pos=14622]
07FBs(80000020): LDR R0, R0, 20H
07FCs(A0E00018): STR R0, SP, 18H
07FDs(E7FFFFED): B -19 [07EBH]
IF mod # NIL THENt Texts.WriteString(W,u " in ")v;w Texts.WriteString(W,x mod.namey)z ENDa ;
07FEt(80E00018): LDR R0, SP, 18H
07FFt(E1000010): BEQ 16 [0810H]
0800u .FIXUP D
0800u(8D000018): LDR SB, MT, MOD0 [System]
0801u(40D80000): ADD R0, SB, 0H [data]
0802u .FIXUP D
0802u(8D900002): LDR SB, MT, MOD9 [Texts]
0803u(41D80005): ADD R1, SB, VAR5
0804v .FIXUP D
0804v(8D000002): LDR SB, MT, MOD0 [System]
0805v(42D80288): ADD R2, SB, 288H [" in "]
0806v(43000005): MOV R3, R0, 5H
0807w .FIXUP P
0807w(F791D020): BL MOD9 [Texts] PROC29
0808x .FIXUP D
0808x(8D000004): LDR SB, MT, MOD0 [System]
0809x(40D80000): ADD R0, SB, 0H [data]
080Ax .FIXUP D
080Ax(8D900002): LDR SB, MT, MOD9 [Texts]
080Bx(41D80005): ADD R1, SB, VAR5
080Cy(82E00018): LDR R2, SP, 18H
080Dy(D139784C): BLEQ MT [trap=4, pos=14712]
080Ez(43000020): MOV R3, R0, 20H
080Fa .FIXUP P
080Fa(F791D008): BL MOD9 [Texts] PROC29
Texts.WriteString(W,b " at")c;d Texts.WriteHex(W,e u)f;g
0810b .FIXUP D
0810b(8D000006): LDR SB, MT, MOD0 [System]
0811b(40D80000): ADD R0, SB, 0H [data]
0812b .FIXUP D
0812b(8D900002): LDR SB, MT, MOD9 [Texts]
0813b(41D80005): ADD R1, SB, VAR5
0814c .FIXUP D
0814c(8D000002): LDR SB, MT, MOD0 [System]
0815c(42D80290): ADD R2, SB, 290H [" at"]
0816c(43000004): MOV R3, R0, 4H
0817d .FIXUP P
0817d(F791D008): BL MOD9 [Texts] PROC29
0818e .FIXUP D
0818e(8D000004): LDR SB, MT, MOD0 [System]
0819e(40D80000): ADD R0, SB, 0H [data]
081Ae .FIXUP D
081Ae(8D900002): LDR SB, MT, MOD9 [Texts]
081Be(41D80005): ADD R1, SB, VAR5
081Cf(82E0000C): LDR R2, SP, CH
081Dg .FIXUP P
081Dg(F791F006): BL MOD9 [Texts] PROC31
Texts.WriteLn(W)h;i Texts.Append(Oberon.Log,j W.buf)k;l Oberon.Reset
081Eh .FIXUP D
081Eh(8D000004): LDR SB, MT, MOD0 [System]
081Fh(40D80000): ADD R0, SB, 0H [data]
0820h .FIXUP D
0820h(8D900002): LDR SB, MT, MOD9 [Texts]
0821h(41D80005): ADD R1, SB, VAR5
0822i .FIXUP P
0822i(F791C005): BL MOD9 [Texts] PROC28
0823j .FIXUP D
0823j(8DA00003): LDR SB, MT, MOD10 [Oberon]
0824j(80D0000D): LDR R0, SB, VAR13
0825k .FIXUP D
0825k(8D000002): LDR SB, MT, MOD0 [System]
0826k(81D00000): LDR R1, SB, 0H [data]
0827l .FIXUP P
0827l(F790E005): BL MOD9 [Texts] PROC14
ENDm
0828m .FIXUP P
0828m(F7A32001): BL MOD10 [Oberon] PROC50
ENDn Trap;
0829n(8FE00000): LDR LNK, SP, 0H
082An(4EE8001C): ADD SP, SP, 1CH
082Bn(C700000F): B LNK
PROCEDURE Abort;
VAR n: INTEGER;
BEGINo n := SYSTEM.REG(15);p Texts.WriteString(W,q " ABORT ")r;s Texts.WriteHex(W,t n)u;v
082Co(4EE90008): SUB SP, SP, 8H
082Do(AFE00000): STR LNK, SP, 0H
082Ep(0000000F): MOV R0, R0, LNK
082Fp(A0E00004): STR R0, SP, 4H
0830q .FIXUP D
0830q(8D00000B): LDR SB, MT, MOD0 [System]
0831q(40D80000): ADD R0, SB, 0H [data]
0832q .FIXUP D
0832q(8D900002): LDR SB, MT, MOD9 [Texts]
0833q(41D80005): ADD R1, SB, VAR5
0834r .FIXUP D
0834r(8D000002): LDR SB, MT, MOD0 [System]
0835r(42D80294): ADD R2, SB, 294H [" ABORT "]
0836r(4300000A): MOV R3, R0, AH
0837s .FIXUP P
0837s(F791D00F): BL MOD9 [Texts] PROC29
0838t .FIXUP D
0838t(8D000004): LDR SB, MT, MOD0 [System]
0839t(40D80000): ADD R0, SB, 0H [data]
083At .FIXUP D
083At(8D900002): LDR SB, MT, MOD9 [Texts]
083Bt(41D80005): ADD R1, SB, VAR5
083Cu(82E00004): LDR R2, SP, 4H
083Dv .FIXUP P
083Dv(F791F006): BL MOD9 [Texts] PROC31
Texts.WriteLn(W)w;x Texts.Append(Oberon.Log,y W.buf)z;a Oberon.Reset
083Ew .FIXUP D
083Ew(8D000004): LDR SB, MT, MOD0 [System]
083Fw(40D80000): ADD R0, SB, 0H [data]
0840w .FIXUP D
0840w(8D900002): LDR SB, MT, MOD9 [Texts]
0841w(41D80005): ADD R1, SB, VAR5
0842x .FIXUP P
0842x(F791C005): BL MOD9 [Texts] PROC28
0843y .FIXUP D
0843y(8DA00003): LDR SB, MT, MOD10 [Oberon]
0844y(80D0000D): LDR R0, SB, VAR13
0845z .FIXUP D
0845z(8D000002): LDR SB, MT, MOD0 [System]
0846z(81D00000): LDR R1, SB, 0H [data]
0847a .FIXUP P
0847a(F790E005): BL MOD9 [Texts] PROC14
ENDb Abort;
0848b .FIXUP P
0848b(F7A32001): BL MOD10 [Oberon] PROC50
0849b(8FE00000): LDR LNK, SP, 0H
084Ab(4EE80008): ADD SP, SP, 8H
084Bb(C700000F): B LNK
BEGINc Texts.OpenWriter(W)d;e
084Cc .PROC 0
084Cc .ENTRYPOINT
084Cc(4EE90004): SUB SP, SP, 4H
084Dc(AFE00000): STR LNK, SP, 0H
084Ed .FIXUP D
084Ed(8D000009): LDR SB, MT, MOD0 [System]
084Fd(40D80000): ADD R0, SB, 0H [data]
0850d .FIXUP D
0850d(8D900002): LDR SB, MT, MOD9 [Texts]
0851d(41D80005): ADD R1, SB, VAR5
0852e .FIXUP P
0852e(F791700A): BL MOD9 [Texts] PROC23
Oberon.OpenLog(TextFrames.Text("")f)g;h OpenViewers;i
0853f .FIXUP D
0853f(8D000003): LDR SB, MT, MOD0 [System]
0854f(40D802A0): ADD R0, SB, 2A0H [""]
0855f(41000001): MOV R1, R0, 1H
0856g .FIXUP P
0856g(F7C2B004): BL MOD12 [TextFrames] PROC43
0857h .FIXUP P
0857h(F7A26001): BL MOD10 [Oberon] PROC38
0858i(F7FFFEDD): BL -291 [0736H]
Kernel.Install(SYSTEM.ADR(Trap),j 20H)k;l Kernel.Install(SYSTEM.ADR(Abort),m 0)n;o
0859j(F7000000): BL 0 [085AH]
085Aj(40F902AC): SUB R0, LNK, 2ACH
085Bk(41000020): MOV R1, R0, 20H
085Cl .FIXUP P
085Cl(F7114005): BL MOD1 [Kernel] PROC20
085Dm(F7000000): BL 0 [085EH]
085Em(40F900C8): SUB R0, LNK, C8H
085Fn(41000000): MOV R1, R0, 0H
0860o .FIXUP P
0860o(F7114004): BL MOD1 [Kernel] PROC20
END System.p
0861p(8FE00000): LDR LNK, SP, 0H
0862p(4EE80004): ADD SP, SP, 4H
0863p(C700000F): B LNK