| 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 |
0000 | a(4EE9001C): SUB SP, SP, 1CH |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | a(A0E00004): STR R0, SP, 4H |
0003 | a(A1E00008): STR R1, SP, 8H |
0004 | b(80E00004): LDR R0, SP, 4H |
0005 | b(81E00008): LDR R1, SP, 8H |
0006 | c .FIXUP D |
0006 | c(8DA00006): LDR SB, MT, MOD10 [Oberon] |
0007 | c(42D8000E): ADD R2, SB, VAR14 |
0008 | c(82200008): LDR R2, R2, 8H |
0009 | d .FIXUP D |
0009 | d(8DA00003): LDR SB, MT, MOD10 [Oberon] |
000A | d(43D8000E): ADD R3, SB, VAR14 |
000B | d(8330000C): LDR R3, R3, CH |
000C | e .FIXUP P |
000C | e(F791500C): BL MOD9 [Texts] PROC21 |
000D | f(80E00004): LDR R0, SP, 4H |
000E | f(81E00008): LDR R1, SP, 8H |
000F | g .FIXUP P |
000F | g(F7916003): BL MOD9 [Texts] PROC22 |
| IF (S.class = Texts.Char)h & (iS.c = "^")j THENk |
0010 | h(80E00004): LDR R0, SP, 4H |
0011 | h(8000003C): LDR R0, R0, 3CH |
0012 | h(40090006): SUB R0, R0, 6H |
0013 | i(E9000014): BNE 20 [0028H] |
0014 | j(80E00004): LDR R0, SP, 4H |
0015 | j(9000004C): LDR R0, R0, 4CH |
0016 | j(4009005E): SUB R0, R0, 5EH |
0017 | k(E9000010): BNE 16 [0028H] |
| Oberon.GetSelection(T,l beg,m end,n time)o;p |
0018 | l(40E8000C): ADD R0, SP, CH |
0019 | m(41E80010): ADD R1, SP, 10H |
001A | n(42E80014): ADD R2, SP, 14H |
001B | o(43E80018): ADD R3, SP, 18H |
001C | p .FIXUP P |
001C | p(F7A2900D): BL MOD10 [Oberon] PROC41 |
| IF time >= 0 THENq Texts.OpenScanner(S,r T,s beg)t;u Texts.Scan(S)v ENDw |
001D | q(80E00018): LDR R0, SP, 18H |
001E | q(40090000): SUB R0, R0, 0H |
001F | q(E5000008): BLT 8 [0028H] |
0020 | r(80E00004): LDR R0, SP, 4H |
0021 | r(81E00008): LDR R1, SP, 8H |
0022 | s(82E0000C): LDR R2, SP, CH |
0023 | t(83E00010): LDR R3, SP, 10H |
0024 | u .FIXUP P |
0024 | u(F7915008): BL MOD9 [Texts] PROC21 |
0025 | v(80E00004): LDR R0, SP, 4H |
0026 | v(81E00008): LDR R1, SP, 8H |
0027 | w .FIXUP P |
0027 | w(F7916003): BL MOD9 [Texts] PROC22 |
| END |
| ENDx GetArg; |
0028 | x(8FE00000): LDR LNK, SP, 0H |
0029 | x(4EE8001C): ADD SP, SP, 1CH |
002A | x(C700000F): B LNK |
| |
| PROCEDURE EndLine; |
| BEGINy Texts.WriteLn(W)z;a Texts.Append(Oberon.Log,b W.buf)c |
002B | y(4EE90004): SUB SP, SP, 4H |
002C | y(AFE00000): STR LNK, SP, 0H |
002D | z .FIXUP D |
002D | z(8D000024): LDR SB, MT, MOD0 [System] |
002E | z(40D80000): ADD R0, SB, 0H [data] |
002F | z .FIXUP D |
002F | z(8D900002): LDR SB, MT, MOD9 [Texts] |
0030 | z(41D80005): ADD R1, SB, VAR5 |
0031 | a .FIXUP P |
0031 | a(F791C00A): BL MOD9 [Texts] PROC28 |
0032 | b .FIXUP D |
0032 | b(8DA00003): LDR SB, MT, MOD10 [Oberon] |
0033 | b(80D0000D): LDR R0, SB, VAR13 |
0034 | c .FIXUP D |
0034 | c(8D000002): LDR SB, MT, MOD0 [System] |
0035 | c(81D00000): LDR R1, SB, 0H [data] |
| ENDd EndLine; |
0036 | d .FIXUP P |
0036 | d(F790E005): BL MOD9 [Texts] PROC14 |
0037 | d(8FE00000): LDR LNK, SP, 0H |
0038 | d(4EE80004): ADD SP, SP, 4H |
0039 | d(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 |
003A | e .PROC 1 |
003A | e .COMMAND SetUser |
003A | e(4EE90024): SUB SP, SP, 24H |
003B | e(AFE00000): STR LNK, SP, 0H |
003C | f(40000000): MOV R0, R0, 0H |
003D | f(A0E00004): STR R0, SP, 4H |
003E | g(40E80008): ADD R0, SP, 8H |
003F | h .FIXUP P |
003F | h(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; |
0040 | i(90E00008): LDR R0, SP, 8H |
0041 | i(4009002F): SUB R0, R0, 2FH |
0042 | j(E100000F): BEQ 15 [0052H] |
0043 | k(80E00004): LDR R0, SP, 4H |
0044 | k(40090007): SUB R0, R0, 7H |
0045 | l(ED00000C): BGE 12 [0052H] |
0046 | m(80E00004): LDR R0, SP, 4H |
0047 | m(41090008): SUB R1, R0, 8H |
0048 | m(DA04581C): BLCC MT [trap=1, pos=1112] |
0049 | m(00E80000): ADD R0, SP, R0 |
004A | n(91E00008): LDR R1, SP, 8H |
004B | n(B100000C): STR R1, R0, CH |
004C | o(80E00004): LDR R0, SP, 4H |
004D | o(40080001): ADD R0, R0, 1H |
004E | o(A0E00004): STR R0, SP, 4H |
004F | p(40E80008): ADD R0, SP, 8H |
0050 | q .FIXUP P |
0050 | q(F7502011): BL MOD5 [Input] PROC2 |
0051 | q(E7FFFFEE): B -18 [0040H] |
| user[i]r := 0X;s i := 0;t Input.Read(ch)u;v |
0052 | r(80E00004): LDR R0, SP, 4H |
0053 | r(41090008): SUB R1, R0, 8H |
0054 | r(DA04871C): BLCC MT [trap=1, pos=1159] |
0055 | r(00E80000): ADD R0, SP, R0 |
0056 | s(41000000): MOV R1, R0, 0H |
0057 | s(B100000C): STR R1, R0, CH |
0058 | t(40000000): MOV R0, R0, 0H |
0059 | t(A0E00004): STR R0, SP, 4H |
005A | u(40E80008): ADD R0, SP, 8H |
005B | v .FIXUP P |
005B | v(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; |
005C | w(90E00008): LDR R0, SP, 8H |
005D | w(40090020): SUB R0, R0, 20H |
005E | x(E600000F): BLE 15 [006EH] |
005F | y(80E00004): LDR R0, SP, 4H |
0060 | y(4009000F): SUB R0, R0, FH |
0061 | z(ED00000C): BGE 12 [006EH] |
0062 | a(80E00004): LDR R0, SP, 4H |
0063 | a(41090010): SUB R1, R0, 10H |
0064 | a(DA04D51C): BLCC MT [trap=1, pos=1237] |
0065 | a(00E80000): ADD R0, SP, R0 |
0066 | b(91E00008): LDR R1, SP, 8H |
0067 | b(B1000014): STR R1, R0, 14H |
0068 | c(80E00004): LDR R0, SP, 4H |
0069 | c(40080001): ADD R0, R0, 1H |
006A | c(A0E00004): STR R0, SP, 4H |
006B | d(40E80008): ADD R0, SP, 8H |
006C | e .FIXUP P |
006C | e(F7502011): BL MOD5 [Input] PROC2 |
006D | e(E7FFFFEE): B -18 [005CH] |
| password[i]f := 0X;g Oberon.SetUser(user,h password)i |
006E | f(80E00004): LDR R0, SP, 4H |
006F | f(41090010): SUB R1, R0, 10H |
0070 | f(DA05081C): BLCC MT [trap=1, pos=1288] |
0071 | f(00E80000): ADD R0, SP, R0 |
0072 | g(41000000): MOV R1, R0, 0H |
0073 | g(B1000014): STR R1, R0, 14H |
0074 | h(40E8000C): ADD R0, SP, CH |
0075 | h(41000008): MOV R1, R0, 8H |
0076 | i(42E80014): ADD R2, SP, 14H |
0077 | i(43000010): MOV R3, R0, 10H |
| ENDj SetUser; |
0078 | j .FIXUP P |
0078 | j(F7A1300C): BL MOD10 [Oberon] PROC19 |
0079 | j(8FE00000): LDR LNK, SP, 0H |
007A | j(4EE80024): ADD SP, SP, 24H |
007B | j(C700000F): B LNK |
| |
| PROCEDURE SetFont*; |
| VAR S: Texts.Scanner; |
| BEGINk GetArg(S)l;m |
007C | k .PROC 2 |
007C | k .COMMAND SetFont |
007C | k(4EE90078): SUB SP, SP, 78H |
007D | k(AFE00000): STR LNK, SP, 0H |
007E | l(40E80004): ADD R0, SP, 4H |
007F | l .FIXUP D |
007F | l(8D90004B): LDR SB, MT, MOD9 [Texts] |
0080 | l(41D80003): ADD R1, SB, VAR3 |
0081 | m(F7FFFF7E): BL -130 [0000H] |
| IF S.class = Texts.Name THENn Oberon.SetFont(Fonts.This(S.s)o)p ENDq |
0082 | n(80E00040): LDR R0, SP, 40H |
0083 | n(40090001): SUB R0, R0, 1H |
0084 | n(E9000004): BNE 4 [0089H] |
0085 | o(40E80058): ADD R0, SP, 58H |
0086 | o(41000020): MOV R1, R0, 20H |
0087 | p .FIXUP P |
0087 | p(F780500F): BL MOD8 [Fonts] PROC5 |
0088 | q .FIXUP P |
0088 | q(F7A2E001): BL MOD10 [Oberon] PROC46 |
| ENDr SetFont; |
0089 | r(8FE00000): LDR LNK, SP, 0H |
008A | r(4EE80078): ADD SP, SP, 78H |
008B | r(C700000F): B LNK |
| |
| PROCEDURE SetColor*; |
| VAR S: Texts.Scanner; |
| BEGINs GetArg(S)t;u |
008C | s .PROC 3 |
008C | s .COMMAND SetColor |
008C | s(4EE90078): SUB SP, SP, 78H |
008D | s(AFE00000): STR LNK, SP, 0H |
008E | t(40E80004): ADD R0, SP, 4H |
008F | t .FIXUP D |
008F | t(8D900010): LDR SB, MT, MOD9 [Texts] |
0090 | t(41D80003): ADD R1, SB, VAR3 |
0091 | u(F7FFFF6E): BL -146 [0000H] |
| IF S.class = Texts.Int THENv Oberon.SetColor(S.i)w ENDx |
0092 | v(80E00040): LDR R0, SP, 40H |
0093 | v(40090003): SUB R0, R0, 3H |
0094 | v(E9000002): BNE 2 [0097H] |
0095 | w(80E00044): LDR R0, SP, 44H |
0096 | x .FIXUP P |
0096 | x(F7A2F00E): BL MOD10 [Oberon] PROC47 |
| ENDy SetColor; |
0097 | y(8FE00000): LDR LNK, SP, 0H |
0098 | y(4EE80078): ADD SP, SP, 78H |
0099 | y(C700000F): B LNK |
| |
| PROCEDURE SetOffset*; |
| VAR S: Texts.Scanner; |
| BEGINz GetArg(S)a;b |
009A | z .PROC 4 |
009A | z .COMMAND SetOffset |
009A | z(4EE90078): SUB SP, SP, 78H |
009B | z(AFE00000): STR LNK, SP, 0H |
009C | a(40E80004): ADD R0, SP, 4H |
009D | a .FIXUP D |
009D | a(8D90000E): LDR SB, MT, MOD9 [Texts] |
009E | a(41D80003): ADD R1, SB, VAR3 |
009F | b(F7FFFF60): BL -160 [0000H] |
| IF S.class = Texts.Int THENc Oberon.SetOffset(S.i)d ENDe |
00A0 | c(80E00040): LDR R0, SP, 40H |
00A1 | c(40090003): SUB R0, R0, 3H |
00A2 | c(E9000002): BNE 2 [00A5H] |
00A3 | d(80E00044): LDR R0, SP, 44H |
00A4 | e .FIXUP P |
00A4 | e(F7A3000E): BL MOD10 [Oberon] PROC48 |
| ENDf SetOffset; |
00A5 | f(8FE00000): LDR LNK, SP, 0H |
00A6 | f(4EE80078): ADD SP, SP, 78H |
00A7 | f(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 |
00A8 | g .PROC 5 |
00A8 | g .COMMAND Date |
00A8 | g(4EE90094): SUB SP, SP, 94H |
00A9 | g(AFE00000): STR LNK, SP, 0H |
00AA | h(40E80004): ADD R0, SP, 4H |
00AB | h .FIXUP D |
00AB | h(8D90000E): LDR SB, MT, MOD9 [Texts] |
00AC | h(41D80003): ADD R1, SB, VAR3 |
00AD | i .FIXUP D |
00AD | i(8DA00002): LDR SB, MT, MOD10 [Oberon] |
00AE | i(42D8000E): ADD R2, SB, VAR14 |
00AF | i(82200008): LDR R2, R2, 8H |
00B0 | j .FIXUP D |
00B0 | j(8DA00003): LDR SB, MT, MOD10 [Oberon] |
00B1 | j(43D8000E): ADD R3, SB, VAR14 |
00B2 | j(8330000C): LDR R3, R3, CH |
00B3 | k .FIXUP P |
00B3 | k(F791500F): BL MOD9 [Texts] PROC21 |
00B4 | l(40E80004): ADD R0, SP, 4H |
00B5 | l .FIXUP D |
00B5 | l(8D900005): LDR SB, MT, MOD9 [Texts] |
00B6 | l(41D80003): ADD R1, SB, VAR3 |
00B7 | m .FIXUP P |
00B7 | m(F7916004): BL MOD9 [Texts] PROC22 |
| IF S.class = Texts.Int THENn (*set clock*) |
00B8 | n(80E00040): LDR R0, SP, 40H |
00B9 | n(40090003): SUB R0, R0, 3H |
00BA | n(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 |
00BB | o(80E00044): LDR R0, SP, 44H |
00BC | o(A0E00090): STR R0, SP, 90H |
00BD | p(40E80004): ADD R0, SP, 4H |
00BE | p .FIXUP D |
00BE | p(8D900009): LDR SB, MT, MOD9 [Texts] |
00BF | p(41D80003): ADD R1, SB, VAR3 |
00C0 | q .FIXUP P |
00C0 | q(F7916009): BL MOD9 [Texts] PROC22 |
00C1 | r(80E00044): LDR R0, SP, 44H |
00C2 | r(A0E0008C): STR R0, SP, 8CH |
00C3 | s(40E80004): ADD R0, SP, 4H |
00C4 | s .FIXUP D |
00C4 | s(8D900006): LDR SB, MT, MOD9 [Texts] |
00C5 | s(41D80003): ADD R1, SB, VAR3 |
00C6 | t .FIXUP P |
00C6 | t(F7916006): BL MOD9 [Texts] PROC22 |
00C7 | u(80E00044): LDR R0, SP, 44H |
00C8 | u(A0E00088): STR R0, SP, 88H |
00C9 | v(40E80004): ADD R0, SP, 4H |
00CA | v .FIXUP D |
00CA | v(8D900006): LDR SB, MT, MOD9 [Texts] |
00CB | v(41D80003): ADD R1, SB, VAR3 |
00CC | w .FIXUP P |
00CC | w(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 |
00CD | x(80E00044): LDR R0, SP, 44H |
00CE | x(A0E0007C): STR R0, SP, 7CH |
00CF | y(40E80004): ADD R0, SP, 4H |
00D0 | y .FIXUP D |
00D0 | y(8D900006): LDR SB, MT, MOD9 [Texts] |
00D1 | y(41D80003): ADD R1, SB, VAR3 |
00D2 | z .FIXUP P |
00D2 | z(F7916006): BL MOD9 [Texts] PROC22 |
00D3 | a(80E00044): LDR R0, SP, 44H |
00D4 | a(A0E00080): STR R0, SP, 80H |
00D5 | b(40E80004): ADD R0, SP, 4H |
00D6 | b .FIXUP D |
00D6 | b(8D900006): LDR SB, MT, MOD9 [Texts] |
00D7 | b(41D80003): ADD R1, SB, VAR3 |
00D8 | c .FIXUP P |
00D8 | c(F7916006): BL MOD9 [Texts] PROC22 |
00D9 | d(80E00044): LDR R0, SP, 44H |
00DA | d(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 |
00DB | e(80E00088): LDR R0, SP, 88H |
00DC | e(40010004): LSL R0, R0, 4H |
00DD | f(81E0008C): LDR R1, SP, 8CH |
00DE | f(00080001): ADD R0, R0, R1 |
00DF | g(40010005): LSL R0, R0, 5H |
00E0 | h(81E00090): LDR R1, SP, 90H |
00E1 | h(00080001): ADD R0, R0, R1 |
00E2 | i(40010005): LSL R0, R0, 5H |
00E3 | j(81E0007C): LDR R1, SP, 7CH |
00E4 | j(00080001): ADD R0, R0, R1 |
00E5 | k(40010006): LSL R0, R0, 6H |
00E6 | l(81E00080): LDR R1, SP, 80H |
00E7 | l(00080001): ADD R0, R0, R1 |
00E8 | m(40010006): LSL R0, R0, 6H |
00E9 | n(81E00084): LDR R1, SP, 84H |
00EA | n(00080001): ADD R0, R0, R1 |
00EB | n(A0E00078): STR R0, SP, 78H |
| Kernel.SetClock(dt)o |
00EC | o(80E00078): LDR R0, SP, 78H |
| ELSEp (*read clock*) Textsq.WriteString(W,r "System.Clock")s;t |
00ED | p .FIXUP P |
00ED | p(F7113015): BL MOD1 [Kernel] PROC19 |
00EE | q(E7000011): B 17 [0100H] |
00EF | r .FIXUP D |
00EF | r(8D000019): LDR SB, MT, MOD0 [System] |
00F0 | r(40D80000): ADD R0, SB, 0H [data] |
00F1 | r .FIXUP D |
00F1 | r(8D900002): LDR SB, MT, MOD9 [Texts] |
00F2 | r(41D80005): ADD R1, SB, VAR5 |
00F3 | s .FIXUP D |
00F3 | s(8D000002): LDR SB, MT, MOD0 [System] |
00F4 | s(42D800C4): ADD R2, SB, C4H ["System.Clock"] |
00F5 | s(4300000D): MOV R3, R0, DH |
00F6 | t .FIXUP P |
00F6 | t(F791D009): BL MOD9 [Texts] PROC29 |
| dt := Oberon.Clock();u Texts.WriteClock(W,v dt)w;x EndLine |
00F7 | u .FIXUP P |
00F7 | u(F7A14001): BL MOD10 [Oberon] PROC20 |
00F8 | u(A0E00078): STR R0, SP, 78H |
00F9 | v .FIXUP D |
00F9 | v(8D000006): LDR SB, MT, MOD0 [System] |
00FA | v(40D80000): ADD R0, SB, 0H [data] |
00FB | v .FIXUP D |
00FB | v(8D900002): LDR SB, MT, MOD9 [Texts] |
00FC | v(41D80005): ADD R1, SB, VAR5 |
00FD | w(82E00078): LDR R2, SP, 78H |
00FE | x .FIXUP P |
00FE | x(F7922007): BL MOD9 [Texts] PROC34 |
| ENDy |
00FF | y(F7FFFF2B): BL -213 [002BH] |
| ENDz Date; |
0100 | z(8FE00000): LDR LNK, SP, 0H |
0101 | z(4EE80094): ADD SP, SP, 94H |
0102 | z(C700000F): B LNK |
| |
| PROCEDURE Collect*; |
| BEGINa Oberon.Collect(0)b |
0103 | a .PROC 6 |
0103 | a .COMMAND Collect |
0103 | a(4EE90004): SUB SP, SP, 4H |
0104 | a(AFE00000): STR LNK, SP, 0H |
0105 | b(40000000): MOV R0, R0, 0H |
| ENDc Collect; |
0106 | c .FIXUP P |
0106 | c(F7A2D008): BL MOD10 [Oberon] PROC45 |
0107 | c(8FE00000): LDR LNK, SP, 0H |
0108 | c(4EE80004): ADD SP, SP, 4H |
0109 | c(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 |
010A | d .PROC 7 |
010A | d .COMMAND Open |
010A | d(4EE90084): SUB SP, SP, 84H |
010B | d(AFE00000): STR LNK, SP, 0H |
010C | e(40E80010): ADD R0, SP, 10H |
010D | e .FIXUP D |
010D | e(8D900012): LDR SB, MT, MOD9 [Texts] |
010E | e(41D80003): ADD R1, SB, VAR3 |
010F | f(F7FFFEF0): BL -272 [0000H] |
| IF S.class = Texts.Name THENg |
0110 | g(80E0004C): LDR R0, SP, 4CH |
0111 | g(40090001): SUB R0, R0, 1H |
0112 | g(E900001E): BNE 30 [0131H] |
| Oberon.AllocateSystemViewer(Oberon.Par.vwr.hXi,j X,k Y)l;m |
0113 | h .FIXUP D |
0113 | h(8DA00006): LDR SB, MT, MOD10 [Oberon] |
0114 | h(40D8000E): ADD R0, SB, VAR14 |
0115 | i(80000000): LDR R0, R0, 0H |
0116 | i(D10ABD4C): BLEQ MT [trap=4, pos=2749] |
0117 | j(80000008): LDR R0, R0, 8H |
0118 | k(41E80004): ADD R1, SP, 4H |
0119 | l(42E80008): ADD R2, SP, 8H |
011A | m .FIXUP P |
011A | m(F7A23014): BL MOD10 [Oberon] PROC35 |
| V := MenuViewers.New( |
| TextFrames.NewMenu(S.s,n StandardMenu)o,p |
011B | n(40E80064): ADD R0, SP, 64H |
011C | n(41000020): MOV R1, R0, 20H |
011D | o .FIXUP D |
011D | o(8D00000A): LDR SB, MT, MOD0 [System] |
011E | o(42D80048): ADD R2, SB, 48H ["System.Close System.Copy System.Grow Edit.Search Edit.Store"] |
011F | o(4300003C): MOV R3, R0, 3CH |
0120 | p .FIXUP P |
0120 | p(F7C2C006): BL MOD12 [TextFrames] PROC44 |
| TextFrames.NewText(TextFramesq.Text(S.s)r,s 0)t,u TextFrames.menuH,v X,w Y)x |
0121 | q(4EE90004): SUB SP, SP, 4H |
0122 | q(A0E00000): STR R0, SP, 0H |
0123 | r(40E80068): ADD R0, SP, 68H |
0124 | r(41000020): MOV R1, R0, 20H |
0125 | s .FIXUP P |
0125 | s(F7C2B005): BL MOD12 [TextFrames] PROC43 |
0126 | t(41000000): MOV R1, R0, 0H |
0127 | u .FIXUP P |
0127 | u(F7C2D002): BL MOD12 [TextFrames] PROC45 |
0128 | u(01000000): MOV R1, R0, R0 |
0129 | u(80E00000): LDR R0, SP, 0H |
012A | u(4EE80004): ADD SP, SP, 4H |
012B | v .FIXUP D |
012B | v(8DC0000E): LDR SB, MT, MOD12 [TextFrames] |
012C | v(82D00005): LDR R2, SB, VAR5 |
012D | w(83E00004): LDR R3, SP, 4H |
012E | x(84E00008): LDR R4, SP, 8H |
| ENDy |
012F | y .FIXUP P |
012F | y(F7B04008): BL MOD11 [MenuViewers] PROC4 |
0130 | y(A0E0000C): STR R0, SP, CH |
| ENDz Open; |
0131 | z(8FE00000): LDR LNK, SP, 0H |
0132 | z(4EE80084): ADD SP, SP, 84H |
0133 | z(C700000F): B LNK |
| |
| PROCEDURE Clear*; (*clear Log*) |
| VAR T: Texts.Text; F: Display.Frame; buf: Texts.Buffer; |
| BEGINa F := Oberon.Par.frame;b |
0134 | a .PROC 8 |
0134 | a .COMMAND Clear |
0134 | a(4EE90010): SUB SP, SP, 10H |
0135 | a(AFE00000): STR LNK, SP, 0H |
0136 | b .FIXUP D |
0136 | b(8DA0000B): LDR SB, MT, MOD10 [Oberon] |
0137 | b(40D8000E): ADD R0, SB, VAR14 |
0138 | b(80000004): LDR R0, R0, 4H |
0139 | b(A0E00008): STR R0, SP, 8H |
| IF (F # NIL)c & (dF.nexte IS TextFrames.Frame)f & (gF = Oberon.Par.vwr.hdsci)j THENk |
013A | c(80E00008): LDR R0, SP, 8H |
013B | d(E100002B): BEQ 43 [0167H] |
013C | e(80E00008): LDR R0, SP, 8H |
013D | e(D10C0B4C): BLEQ MT [trap=4, pos=3083] |
013E | f(80000000): LDR R0, R0, 0H |
013F | f(E1000005): BEQ 5 [0145H] |
0140 | f(810FFFF8): LDR R1, R0, FFFFFFF8H |
0141 | f(81100004): LDR R1, R1, 4H |
0142 | f .FIXUP D |
0142 | f(8DC0000C): LDR SB, MT, MOD12 [TextFrames] |
0143 | f(42D80002): ADD R2, SB, VAR2 |
0144 | f(02290001): SUB R2, R2, R1 |
0145 | g(E9000021): BNE 33 [0167H] |
0146 | h .FIXUP D |
0146 | h(8DA00004): LDR SB, MT, MOD10 [Oberon] |
0147 | h(40D8000E): ADD R0, SB, VAR14 |
0148 | i(80000000): LDR R0, R0, 0H |
0149 | i(D10C3A4C): BLEQ MT [trap=4, pos=3130] |
014A | j(81E00008): LDR R1, SP, 8H |
014B | j(80000004): LDR R0, R0, 4H |
014C | j(01190000): SUB R1, R1, R0 |
014D | k(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 |
014E | l(40E8000C): ADD R0, SP, CH |
014F | l .FIXUP D |
014F | l(8D900009): LDR SB, MT, MOD9 [Texts] |
0150 | l(41D80004): ADD R1, SB, VAR4 |
0151 | l(D70C500C): BL MT [trap=0, pos=3152] |
0152 | m(80E0000C): LDR R0, SP, CH |
0153 | n .FIXUP P |
0153 | n(F790A024): BL MOD9 [Texts] PROC10 |
0154 | o(80E00008): LDR R0, SP, 8H |
0155 | o(D10C704C): BLEQ MT [trap=4, pos=3184] |
0156 | p(80000000): LDR R0, R0, 0H |
0157 | p(E1000005): BEQ 5 [015DH] |
0158 | p(810FFFF8): LDR R1, R0, FFFFFFF8H |
0159 | p(81100004): LDR R1, R1, 4H |
015A | p .FIXUP D |
015A | p(8DC0000B): LDR SB, MT, MOD12 [TextFrames] |
015B | p(42D80002): ADD R2, SB, VAR2 |
015C | p(02290001): SUB R2, R2, R1 |
015D | p(D90C822C): BLNE MT [trap=2, pos=3202] |
015E | q(8000001C): LDR R0, R0, 1CH |
015F | q(A0E00004): STR R0, SP, 4H |
0160 | r(80E00004): LDR R0, SP, 4H |
0161 | s(41000000): MOV R1, R0, 0H |
0162 | t(82E00004): LDR R2, SP, 4H |
0163 | t(D10CA14C): BLEQ MT [trap=4, pos=3233] |
0164 | u(82200000): LDR R2, R2, 0H |
0165 | v(83E0000C): LDR R3, SP, CH |
| ENDw |
0166 | w .FIXUP P |
0166 | w(F790F013): BL MOD9 [Texts] PROC15 |
| ENDx Clear; |
0167 | x(8FE00000): LDR LNK, SP, 0H |
0168 | x(4EE80010): ADD SP, SP, 10H |
0169 | x(C700000F): B LNK |
| |
| PROCEDURE Close*; |
| VAR V: Viewers.Viewer; |
| BEGINy |
016A | y .PROC 9 |
016A | y .COMMAND Close |
016A | y(4EE90008): SUB SP, SP, 8H |
016B | y(AFE00000): STR LNK, SP, 0H |
| IF Oberon.Par.frame =z Oberon.Par.vwr.adscb THENc V := Oberon.Par.vwr |
016C | z .FIXUP D |
016C | z(8DA00012): LDR SB, MT, MOD10 [Oberon] |
016D | z(40D8000E): ADD R0, SB, VAR14 |
016E | a .FIXUP D |
016E | a(8DA00002): LDR SB, MT, MOD10 [Oberon] |
016F | a(41D8000E): ADD R1, SB, VAR14 |
0170 | b(81100000): LDR R1, R1, 0H |
0171 | b(D10D214C): BLEQ MT [trap=4, pos=3361] |
0172 | c(80000004): LDR R0, R0, 4H |
0173 | c(81100004): LDR R1, R1, 4H |
0174 | c(00090001): SUB R0, R0, R1 |
0175 | c(E9000005): BNE 5 [017BH] |
| ELSEd Ve := Oberon.MarkedViewer() |
0176 | d .FIXUP D |
0176 | d(8DA00008): LDR SB, MT, MOD10 [Oberon] |
0177 | d(40D8000E): ADD R0, SB, VAR14 |
0178 | d(80000000): LDR R0, R0, 0H |
0179 | d(A0E00004): STR R0, SP, 4H |
017A | e(E7000002): B 2 [017DH] |
| ENDf; |
017B | f .FIXUP P |
017B | f(F7A24015): BL MOD10 [Oberon] PROC36 |
017C | f(A0E00004): STR R0, SP, 4H |
| Viewers.Close(V)g |
017D | g(80E00004): LDR R0, SP, 4H |
| ENDh Close; |
017E | h .FIXUP P |
017E | h(F7707003): BL MOD7 [Viewers] PROC7 |
017F | h(8FE00000): LDR LNK, SP, 0H |
0180 | h(4EE80008): ADD SP, SP, 8H |
0181 | h(C700000F): B LNK |
| |
| PROCEDURE CloseTrack*; |
| VAR V: Viewers.Viewer; |
| BEGINi V := Oberon.MarkedViewer();j Viewers.CloseTrack(V.Xk)l |
0182 | i .PROC 10 |
0182 | i .COMMAND CloseTrack |
0182 | i(4EE90008): SUB SP, SP, 8H |
0183 | i(AFE00000): STR LNK, SP, 0H |
0184 | j .FIXUP P |
0184 | j(F7A24006): BL MOD10 [Oberon] PROC36 |
0185 | j(A0E00004): STR R0, SP, 4H |
0186 | k(80E00004): LDR R0, SP, 4H |
0187 | k(D10DF94C): BLEQ MT [trap=4, pos=3577] |
0188 | l(80000008): LDR R0, R0, 8H |
| ENDm CloseTrack; |
0189 | m .FIXUP P |
0189 | m(F770E005): BL MOD7 [Viewers] PROC14 |
018A | m(8FE00000): LDR LNK, SP, 0H |
018B | m(4EE80008): ADD SP, SP, 8H |
018C | m(C700000F): B LNK |
| |
| PROCEDURE Recall*; |
| VAR V: Viewers.Viewer; M: Viewers.ViewerMsg; |
| BEGINn Viewers.Recall(V)o;p |
018D | n .PROC 11 |
018D | n .COMMAND Recall |
018D | n(4EE90020): SUB SP, SP, 20H |
018E | n(AFE00000): STR LNK, SP, 0H |
018F | o(40E80004): ADD R0, SP, 4H |
0190 | p .FIXUP P |
0190 | p(F7708007): BL MOD7 [Viewers] PROC8 |
| IF (V#NIL)q & (rV.states = 0)t THENu |
0191 | q(80E00004): LDR R0, SP, 4H |
0192 | r(E100001F): BEQ 31 [01B2H] |
0193 | s(80E00004): LDR R0, SP, 4H |
0194 | s(D10E884C): BLEQ MT [trap=4, pos=3720] |
0195 | t(8000001C): LDR R0, R0, 1CH |
0196 | u(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 |
0197 | v(80E00004): LDR R0, SP, 4H |
0198 | w(81E00004): LDR R1, SP, 4H |
0199 | w(D10EAC4C): BLEQ MT [trap=4, pos=3756] |
019A | x(81100008): LDR R1, R1, 8H |
019B | y(82E00004): LDR R2, SP, 4H |
019C | y(D10EB14C): BLEQ MT [trap=4, pos=3761] |
019D | z(83E00004): LDR R3, SP, 4H |
019E | z(D10EB74C): BLEQ MT [trap=4, pos=3767] |
019F | a(8220000C): LDR R2, R2, CH |
01A0 | a(83300014): LDR R3, R3, 14H |
01A1 | a(02280003): ADD R2, R2, R3 |
01A2 | b .FIXUP P |
01A2 | b(F7705012): BL MOD7 [Viewers] PROC5 |
01A3 | c(40000000): MOV R0, R0, 0H |
01A4 | c(A0E00008): STR R0, SP, 8H |
01A5 | d(80E00004): LDR R0, SP, 4H |
01A6 | d(D10EDB4C): BLEQ MT [trap=4, pos=3803] |
01A7 | e(80000018): LDR R0, R0, 18H |
01A8 | e(4EE90004): SUB SP, SP, 4H |
01A9 | e(A0E00000): STR R0, SP, 0H |
01AA | f(80E00008): LDR R0, SP, 8H |
01AB | g(41E8000C): ADD R1, SP, CH |
01AC | g .FIXUP D |
01AC | g(8D700036): LDR SB, MT, MOD7 [Viewers] |
01AD | g(42D80002): ADD R2, SB, VAR2 |
| ENDh |
01AE | h(83E00000): LDR R3, SP, 0H |
01AF | h(4EE80004): ADD SP, SP, 4H |
01B0 | h(D10EE95C): BLEQ MT [trap=5, pos=3817] |
01B1 | h(D7000003): BL R3 |
| ENDi Recall; |
01B2 | i(8FE00000): LDR LNK, SP, 0H |
01B3 | i(4EE80020): ADD SP, SP, 20H |
01B4 | i(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 |
01B5 | j .PROC 12 |
01B5 | j .COMMAND Copy |
01B5 | j(4EE90028): SUB SP, SP, 28H |
01B6 | j(AFE00000): STR LNK, SP, 0H |
01B7 | k .FIXUP D |
01B7 | k(8DA0000B): LDR SB, MT, MOD10 [Oberon] |
01B8 | k(40D8000E): ADD R0, SB, VAR14 |
01B9 | k(80000000): LDR R0, R0, 0H |
01BA | k(A0E00004): STR R0, SP, 4H |
01BB | l(80E00004): LDR R0, SP, 4H |
01BC | l(D10F794C): BLEQ MT [trap=4, pos=3961] |
01BD | m(80000018): LDR R0, R0, 18H |
01BE | m(4EE90004): SUB SP, SP, 4H |
01BF | m(A0E00000): STR R0, SP, 0H |
01C0 | n(80E00008): LDR R0, SP, 8H |
01C1 | o(41E80010): ADD R1, SP, 10H |
01C2 | o .FIXUP D |
01C2 | o(8DA0000B): LDR SB, MT, MOD10 [Oberon] |
01C3 | o(42D80006): ADD R2, SB, VAR6 |
01C4 | p(83E00000): LDR R3, SP, 0H |
01C5 | p(4EE80004): ADD SP, SP, 4H |
01C6 | p(D10F805C): BLEQ MT [trap=5, pos=3968] |
01C7 | p(D7000003): BL R3 |
01C8 | q(80E0000C): LDR R0, SP, CH |
01C9 | q(E1000005): BEQ 5 [01CFH] |
01CA | q(810FFFF8): LDR R1, R0, FFFFFFF8H |
01CB | q(81100004): LDR R1, R1, 4H |
01CC | q .FIXUP D |
01CC | q(8D70000A): LDR SB, MT, MOD7 [Viewers] |
01CD | q(42D80001): ADD R2, SB, VAR1 |
01CE | q(02290001): SUB R2, R2, R1 |
01CF | q(D90F9A2C): BLNE MT [trap=2, pos=3994] |
01D0 | r(A0E00008): STR R0, SP, 8H |
| Viewers.Open(V1,s V.Xt,u V.Yv + V.Hw DIV 2)x;y |
01D1 | s(80E00008): LDR R0, SP, 8H |
01D2 | t(81E00004): LDR R1, SP, 4H |
01D3 | t(D10FB44C): BLEQ MT [trap=4, pos=4020] |
01D4 | u(81100008): LDR R1, R1, 8H |
01D5 | v(82E00004): LDR R2, SP, 4H |
01D6 | v(D10FB94C): BLEQ MT [trap=4, pos=4025] |
01D7 | w(83E00004): LDR R3, SP, 4H |
01D8 | w(D10FBF4C): BLEQ MT [trap=4, pos=4031] |
01D9 | x(83300014): LDR R3, R3, 14H |
01DA | x(43320001): ASR R3, R3, 1H |
01DB | x(8220000C): LDR R2, R2, CH |
01DC | x(02280003): ADD R2, R2, R3 |
01DD | y .FIXUP P |
01DD | y(F770503B): BL MOD7 [Viewers] PROC5 |
| N.id := Viewers.restore;z V1.handlea(V1b,c N)d |
01DE | z(40000000): MOV R0, R0, 0H |
01DF | z(A0E00010): STR R0, SP, 10H |
01E0 | a(80E00008): LDR R0, SP, 8H |
01E1 | a(D10FEE4C): BLEQ MT [trap=4, pos=4078] |
01E2 | b(80000018): LDR R0, R0, 18H |
01E3 | b(4EE90004): SUB SP, SP, 4H |
01E4 | b(A0E00000): STR R0, SP, 0H |
01E5 | c(80E0000C): LDR R0, SP, CH |
01E6 | d(41E80014): ADD R1, SP, 14H |
01E7 | d .FIXUP D |
01E7 | d(8D70001B): LDR SB, MT, MOD7 [Viewers] |
01E8 | d(42D80002): ADD R2, SB, VAR2 |
| ENDe Copy; |
01E9 | e(83E00000): LDR R3, SP, 0H |
01EA | e(4EE80004): ADD SP, SP, 4H |
01EB | e(D10FFB5C): BLEQ MT [trap=5, pos=4091] |
01EC | e(D7000003): BL R3 |
01ED | e(8FE00000): LDR LNK, SP, 0H |
01EE | e(4EE80028): ADD SP, SP, 28H |
01EF | e(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 |
01F0 | f .PROC 13 |
01F0 | f .COMMAND Grow |
01F0 | f(4EE90030): SUB SP, SP, 30H |
01F1 | f(AFE00000): STR LNK, SP, 0H |
01F2 | g .FIXUP D |
01F2 | g(8DA0000B): LDR SB, MT, MOD10 [Oberon] |
01F3 | g(40D8000E): ADD R0, SB, VAR14 |
01F4 | g(80000000): LDR R0, R0, 0H |
01F5 | g(A0E00004): STR R0, SP, 4H |
| DW := Oberon.DisplayWidth(V.Xh)i;j DH := Oberon.DisplayHeight(V.Xk)l;m |
01F6 | h(80E00004): LDR R0, SP, 4H |
01F7 | h(D110B34C): BLEQ MT [trap=4, pos=4275] |
01F8 | i(80000008): LDR R0, R0, 8H |
01F9 | j .FIXUP P |
01F9 | j(F7A1D01C): BL MOD10 [Oberon] PROC29 |
01FA | j(A0E00028): STR R0, SP, 28H |
01FB | k(80E00004): LDR R0, SP, 4H |
01FC | k(D110D44C): BLEQ MT [trap=4, pos=4308] |
01FD | l(80000008): LDR R0, R0, 8H |
01FE | m .FIXUP P |
01FE | m(F7A1E005): BL MOD10 [Oberon] PROC30 |
01FF | m(A0E0002C): STR R0, SP, 2CH |
| IF V.Hn < DH - Viewers.minH THENo Oberon.OpenTrack(V.Xp,q V.Wr)s |
0200 | n(80E00004): LDR R0, SP, 4H |
0201 | n(D110E14C): BLEQ MT [trap=4, pos=4321] |
0202 | o(81E0002C): LDR R1, SP, 2CH |
0203 | o .FIXUP D |
0203 | o(8D700011): LDR SB, MT, MOD7 [Viewers] |
0204 | o(82D00004): LDR R2, SB, VAR4 |
0205 | o(01190002): SUB R1, R1, R2 |
0206 | o(80000014): LDR R0, R0, 14H |
0207 | o(00090001): SUB R0, R0, R1 |
0208 | o(ED000008): BGE 8 [0211H] |
0209 | p(80E00004): LDR R0, SP, 4H |
020A | p(D1110F4C): BLEQ MT [trap=4, pos=4367] |
020B | q(80000008): LDR R0, R0, 8H |
020C | r(81E00004): LDR R1, SP, 4H |
020D | r(D111144C): BLEQ MT [trap=4, pos=4372] |
020E | s(81100010): LDR R1, R1, 10H |
| ELSIFt Vu.Wv < DW THENw Oberon.OpenTrack(Oberon.UserTrack(V.Xx)y,z DW)a |
020F | t .FIXUP P |
020F | t(F7A1F011): BL MOD10 [Oberon] PROC31 |
0210 | u(E700000C): B 12 [021DH] |
0211 | v(80E00004): LDR R0, SP, 4H |
0212 | v(D111234C): BLEQ MT [trap=4, pos=4387] |
0213 | w(80000010): LDR R0, R0, 10H |
0214 | w(81E00028): LDR R1, SP, 28H |
0215 | w(00090001): SUB R0, R0, R1 |
0216 | w(ED000006): BGE 6 [021DH] |
0217 | x(80E00004): LDR R0, SP, 4H |
0218 | x(D111534C): BLEQ MT [trap=4, pos=4435] |
0219 | y(80000008): LDR R0, R0, 8H |
021A | z .FIXUP P |
021A | z(F7A2000B): BL MOD10 [Oberon] PROC32 |
021B | a(81E00028): LDR R1, SP, 28H |
| ENDb; |
021C | b .FIXUP P |
021C | b(F7A1F002): BL MOD10 [Oberon] PROC31 |
| IF (V.Hc < DH - Viewers.minH)d OR (eV.Wf < DW)g THENh |
021D | c(80E00004): LDR R0, SP, 4H |
021E | c(D1116E4C): BLEQ MT [trap=4, pos=4462] |
021F | d(81E0002C): LDR R1, SP, 2CH |
0220 | d .FIXUP D |
0220 | d(8D70001D): LDR SB, MT, MOD7 [Viewers] |
0221 | d(82D00004): LDR R2, SB, VAR4 |
0222 | d(01190002): SUB R1, R1, R2 |
0223 | d(80000014): LDR R0, R0, 14H |
0224 | d(00090001): SUB R0, R0, R1 |
0225 | e(E5000006): BLT 6 [022CH] |
0226 | f(80E00004): LDR R0, SP, 4H |
0227 | f(D1118B4C): BLEQ MT [trap=4, pos=4491] |
0228 | g(80000010): LDR R0, R0, 10H |
0229 | g(81E00028): LDR R1, SP, 28H |
022A | g(00090001): SUB R0, R0, R1 |
022B | h(ED00002B): BGE 43 [0257H] |
| V.handlei(Vj,k M)l;m V1 := M.F(Viewers.Viewer)n;o |
022C | i(80E00004): LDR R0, SP, 4H |
022D | i(D111A54C): BLEQ MT [trap=4, pos=4517] |
022E | j(80000018): LDR R0, R0, 18H |
022F | j(4EE90004): SUB SP, SP, 4H |
0230 | j(A0E00000): STR R0, SP, 0H |
0231 | k(80E00008): LDR R0, SP, 8H |
0232 | l(41E80010): ADD R1, SP, 10H |
0233 | l .FIXUP D |
0233 | l(8DA00013): LDR SB, MT, MOD10 [Oberon] |
0234 | l(42D80006): ADD R2, SB, VAR6 |
0235 | m(83E00000): LDR R3, SP, 0H |
0236 | m(4EE80004): ADD SP, SP, 4H |
0237 | m(D111AC5C): BLEQ MT [trap=5, pos=4524] |
0238 | m(D7000003): BL R3 |
0239 | n(80E0000C): LDR R0, SP, CH |
023A | n(E1000005): BEQ 5 [0240H] |
023B | n(810FFFF8): LDR R1, R0, FFFFFFF8H |
023C | n(81100004): LDR R1, R1, 4H |
023D | n .FIXUP D |
023D | n(8D70000A): LDR SB, MT, MOD7 [Viewers] |
023E | n(42D80001): ADD R2, SB, VAR1 |
023F | n(02290001): SUB R2, R2, R1 |
0240 | n(D911C62C): BLNE MT [trap=2, pos=4550] |
0241 | o(A0E00008): STR R0, SP, 8H |
| Viewers.Open(V1,p V.Xq,r DH)s;t; |
0242 | p(80E00008): LDR R0, SP, 8H |
0243 | q(81E00004): LDR R1, SP, 4H |
0244 | q(D111E24C): BLEQ MT [trap=4, pos=4578] |
0245 | r(81100008): LDR R1, R1, 8H |
0246 | s(82E0002C): LDR R2, SP, 2CH |
0247 | t .FIXUP P |
0247 | t(F770502B): BL MOD7 [Viewers] PROC5 |
| N.id := Viewers.restore;u V1.handlev(V1w,x N)y |
0248 | u(40000000): MOV R0, R0, 0H |
0249 | u(A0E00010): STR R0, SP, 10H |
024A | v(80E00008): LDR R0, SP, 8H |
024B | v(D112124C): BLEQ MT [trap=4, pos=4626] |
024C | w(80000018): LDR R0, R0, 18H |
024D | w(4EE90004): SUB SP, SP, 4H |
024E | w(A0E00000): STR R0, SP, 0H |
024F | x(80E0000C): LDR R0, SP, CH |
0250 | y(41E80014): ADD R1, SP, 14H |
0251 | y .FIXUP D |
0251 | y(8D700014): LDR SB, MT, MOD7 [Viewers] |
0252 | y(42D80002): ADD R2, SB, VAR2 |
| ENDz |
0253 | z(83E00000): LDR R3, SP, 0H |
0254 | z(4EE80004): ADD SP, SP, 4H |
0255 | z(D112215C): BLEQ MT [trap=5, pos=4641] |
0256 | z(D7000003): BL R3 |
| ENDa Grow; |
0257 | a(8FE00000): LDR LNK, SP, 0H |
0258 | a(4EE80030): ADD SP, SP, 30H |
0259 | a(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 |
025A | b(4EE9000C): SUB SP, SP, CH |
025B | b(AFE00000): STR LNK, SP, 0H |
025C | b(A0E00004): STR R0, SP, 4H |
025D | b(A1E00008): STR R1, SP, 8H |
025E | c .FIXUP D |
025E | c(8D00000D): LDR SB, MT, MOD0 [System] |
025F | c(40D80000): ADD R0, SB, 0H [data] |
0260 | c .FIXUP D |
0260 | c(8D900002): LDR SB, MT, MOD9 [Texts] |
0261 | c(41D80005): ADD R1, SB, VAR5 |
0262 | d(82E00004): LDR R2, SP, 4H |
0263 | d(42280054): ADD R2, R2, 54H |
0264 | d(43000020): MOV R3, R0, 20H |
0265 | e .FIXUP P |
0265 | e(F791D01E): BL MOD9 [Texts] PROC29 |
0266 | f .FIXUP D |
0266 | f(8D000006): LDR SB, MT, MOD0 [System] |
0267 | f(40D80000): ADD R0, SB, 0H [data] |
0268 | f .FIXUP D |
0268 | f(8D900002): LDR SB, MT, MOD9 [Texts] |
0269 | f(41D80005): ADD R1, SB, VAR5 |
026A | g .FIXUP D |
026A | g(8D000002): LDR SB, MT, MOD0 [System] |
026B | g(42D800D4): ADD R2, SB, D4H [" unloading"] |
026C | g(4300000B): MOV R3, R0, BH |
026D | h .FIXUP P |
026D | h(F791D008): BL MOD9 [Texts] PROC29 |
| Modules.Free(S.s)i;j |
026E | i(80E00004): LDR R0, SP, 4H |
026F | i(40080054): ADD R0, R0, 54H |
0270 | i(41000020): MOV R1, R0, 20H |
0271 | j .FIXUP P |
0271 | j(F740A004): BL MOD4 [Modules] PROC10 |
| IF Modules.res # 0 THENk Texts.WriteString(W,l " failed")m ENDn; |
0272 | k .FIXUP D |
0272 | k(8D400008): LDR SB, MT, MOD4 [Modules] |
0273 | k(80D00005): LDR R0, SB, VAR5 |
0274 | k(E1000008): BEQ 8 [027DH] |
0275 | l .FIXUP D |
0275 | l(8D000003): LDR SB, MT, MOD0 [System] |
0276 | l(40D80000): ADD R0, SB, 0H [data] |
0277 | l .FIXUP D |
0277 | l(8D900002): LDR SB, MT, MOD9 [Texts] |
0278 | l(41D80005): ADD R1, SB, VAR5 |
0279 | m .FIXUP D |
0279 | m(8D000002): LDR SB, MT, MOD0 [System] |
027A | m(42D800E0): ADD R2, SB, E0H [" failed"] |
027B | m(43000008): MOV R3, R0, 8H |
027C | n .FIXUP P |
027C | n(F791D00B): BL MOD9 [Texts] PROC29 |
| EndLine |
| ENDo Free1; |
027D | o(F7FFFDAD): BL -595 [002BH] |
027E | o(8FE00000): LDR LNK, SP, 0H |
027F | o(4EE8000C): ADD SP, SP, CH |
0280 | o(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 |
0281 | p .PROC 14 |
0281 | p .COMMAND Free |
0281 | p(4EE90088): SUB SP, SP, 88H |
0282 | p(AFE00000): STR LNK, SP, 0H |
0283 | q .FIXUP D |
0283 | q(8D00000A): LDR SB, MT, MOD0 [System] |
0284 | q(40D80000): ADD R0, SB, 0H [data] |
0285 | q .FIXUP D |
0285 | q(8D900002): LDR SB, MT, MOD9 [Texts] |
0286 | q(41D80005): ADD R1, SB, VAR5 |
0287 | r .FIXUP D |
0287 | r(8D000002): LDR SB, MT, MOD0 [System] |
0288 | r(42D800E8): ADD R2, SB, E8H ["System.Free"] |
0289 | r(4300000C): MOV R3, R0, CH |
028A | s .FIXUP P |
028A | s(F791D00E): BL MOD9 [Texts] PROC29 |
028B | t(F7FFFD9F): BL -609 [002BH] |
| Texts.OpenScanner(S,u Oberon.Par.text,v Oberon.Par.pos)w;x Texts.Scan(S)y;z |
028C | u(40E80014): ADD R0, SP, 14H |
028D | u .FIXUP D |
028D | u(8D900006): LDR SB, MT, MOD9 [Texts] |
028E | u(41D80003): ADD R1, SB, VAR3 |
028F | v .FIXUP D |
028F | v(8DA00002): LDR SB, MT, MOD10 [Oberon] |
0290 | v(42D8000E): ADD R2, SB, VAR14 |
0291 | v(82200008): LDR R2, R2, 8H |
0292 | w .FIXUP D |
0292 | w(8DA00003): LDR SB, MT, MOD10 [Oberon] |
0293 | w(43D8000E): ADD R3, SB, VAR14 |
0294 | w(8330000C): LDR R3, R3, CH |
0295 | x .FIXUP P |
0295 | x(F791500B): BL MOD9 [Texts] PROC21 |
0296 | y(40E80014): ADD R0, SP, 14H |
0297 | y .FIXUP D |
0297 | y(8D900005): LDR SB, MT, MOD9 [Texts] |
0298 | y(41D80003): ADD R1, SB, VAR3 |
0299 | z .FIXUP P |
0299 | z(F7916004): BL MOD9 [Texts] PROC22 |
| IF (S.class = Texts.Char)a & (bS.c = "^")c THENd |
029A | a(80E00050): LDR R0, SP, 50H |
029B | a(40090006): SUB R0, R0, 6H |
029C | b(E900001D): BNE 29 [02BAH] |
029D | c(90E00060): LDR R0, SP, 60H |
029E | c(4009005E): SUB R0, R0, 5EH |
029F | d(E900001A): BNE 26 [02BAH] |
| Oberon.GetSelection(T,e beg,f end,g time)h;i |
02A0 | e(40E80004): ADD R0, SP, 4H |
02A1 | f(41E80008): ADD R1, SP, 8H |
02A2 | g(42E8000C): ADD R2, SP, CH |
02A3 | h(43E80010): ADD R3, SP, 10H |
02A4 | i .FIXUP P |
02A4 | i(F7A2900B): BL MOD10 [Oberon] PROC41 |
| IF time >= 0 THENj Texts.OpenScanner(S,k T,l beg)m;n Texts.Scan(S)o;p |
02A5 | j(80E00010): LDR R0, SP, 10H |
02A6 | j(40090000): SUB R0, R0, 0H |
02A7 | j(E5000011): BLT 17 [02B9H] |
02A8 | k(40E80014): ADD R0, SP, 14H |
02A9 | k .FIXUP D |
02A9 | k(8D900012): LDR SB, MT, MOD9 [Texts] |
02AA | k(41D80003): ADD R1, SB, VAR3 |
02AB | l(82E00004): LDR R2, SP, 4H |
02AC | m(83E00008): LDR R3, SP, 8H |
02AD | n .FIXUP P |
02AD | n(F7915009): BL MOD9 [Texts] PROC21 |
02AE | o(40E80014): ADD R0, SP, 14H |
02AF | o .FIXUP D |
02AF | o(8D900006): LDR SB, MT, MOD9 [Texts] |
02B0 | o(41D80003): ADD R1, SB, VAR3 |
02B1 | p .FIXUP P |
02B1 | p(F7916004): BL MOD9 [Texts] PROC22 |
| IF S.class = Texts.Name THENq Free1(S)r ENDs |
02B2 | q(80E00050): LDR R0, SP, 50H |
02B3 | q(40090001): SUB R0, R0, 1H |
02B4 | q(E9000004): BNE 4 [02B9H] |
02B5 | r(40E80014): ADD R0, SP, 14H |
02B6 | r .FIXUP D |
02B6 | r(8D900007): LDR SB, MT, MOD9 [Texts] |
02B7 | r(41D80003): ADD R1, SB, VAR3 |
02B8 | s(F7FFFFA1): BL -95 [025AH] |
| END |
| ELSE |
| WHILEt S.class = Texts.Name DOu Free1(S)v;w Texts.Scan(S)x ENDy |
02B9 | t(E700000C): B 12 [02C6H] |
02BA | u(80E00050): LDR R0, SP, 50H |
02BB | u(40090001): SUB R0, R0, 1H |
02BC | u(E9000009): BNE 9 [02C6H] |
02BD | v(40E80014): ADD R0, SP, 14H |
02BE | v .FIXUP D |
02BE | v(8D900008): LDR SB, MT, MOD9 [Texts] |
02BF | v(41D80003): ADD R1, SB, VAR3 |
02C0 | w(F7FFFF99): BL -103 [025AH] |
02C1 | x(40E80014): ADD R0, SP, 14H |
02C2 | x .FIXUP D |
02C2 | x(8D900004): LDR SB, MT, MOD9 [Texts] |
02C3 | x(41D80003): ADD R1, SB, VAR3 |
02C4 | y .FIXUP P |
02C4 | y(F7916013): BL MOD9 [Texts] PROC22 |
02C5 | y(E7FFFFF4): B -12 [02BAH] |
| END ; |
| Oberon.Collect(0)z |
02C6 | z(40000000): MOV R0, R0, 0H |
| ENDa Free; |
02C7 | a .FIXUP P |
02C7 | a(F7A2D003): BL MOD10 [Oberon] PROC45 |
02C8 | a(8FE00000): LDR LNK, SP, 0H |
02C9 | a(4EE80088): ADD SP, SP, 88H |
02CA | a(C700000F): B LNK |
| |
| PROCEDURE FreeFonts*; |
| BEGINb Texts.WriteString(W,c "System.FreeFonts")d;e Fonts.Free;f EndLine |
02CB | b .PROC 15 |
02CB | b .COMMAND FreeFonts |
02CB | b(4EE90004): SUB SP, SP, 4H |
02CC | b(AFE00000): STR LNK, SP, 0H |
02CD | c .FIXUP D |
02CD | c(8D00000B): LDR SB, MT, MOD0 [System] |
02CE | c(40D80000): ADD R0, SB, 0H [data] |
02CF | c .FIXUP D |
02CF | c(8D900002): LDR SB, MT, MOD9 [Texts] |
02D0 | c(41D80005): ADD R1, SB, VAR5 |
02D1 | d .FIXUP D |
02D1 | d(8D000002): LDR SB, MT, MOD0 [System] |
02D2 | d(42D800F4): ADD R2, SB, F4H ["System.FreeFonts"] |
02D3 | d(43000011): MOV R3, R0, 11H |
02D4 | e .FIXUP P |
02D4 | e(F791D00D): BL MOD9 [Texts] PROC29 |
02D5 | f .FIXUP P |
02D5 | f(F7806001): BL MOD8 [Fonts] PROC6 |
| ENDg FreeFonts; |
02D6 | g(F7FFFD54): BL -684 [002BH] |
02D7 | g(8FE00000): LDR LNK, SP, 0H |
02D8 | g(4EE80004): ADD SP, SP, 4H |
02D9 | g(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 |
02DA | h(4EE90420): SUB SP, SP, 420H |
02DB | h(AFE00000): STR LNK, SP, 0H |
02DC | h(A0E00004): STR R0, SP, 4H |
02DD | h(A1E00008): STR R1, SP, 8H |
02DE | h(A2E0000C): STR R2, SP, CH |
| i := 0;i |
02DF | i(40000000): MOV R0, R0, 0H |
02E0 | i(A0E00014): STR R0, SP, 14H |
| WHILE (pat[i]j > "*")k & (lpat[i]m = name[i]n)o DOp INC(i) ENDq ; |
02E1 | j(80E00014): LDR R0, SP, 14H |
02E2 | j(41090020): SUB R1, R0, 20H |
02E3 | j(DA16E01C): BLCC MT [trap=1, pos=5856] |
02E4 | j .FIXUP D |
02E4 | j(8D000013): LDR SB, MT, MOD0 [System] |
02E5 | j(00D80000): ADD R0, SB, R0 [global array] |
02E6 | k(90000028): LDR R0, R0, 28H |
02E7 | k(4009002A): SUB R0, R0, 2AH |
02E8 | l(E6000012): BLE 18 [02FBH] |
02E9 | m(80E00014): LDR R0, SP, 14H |
02EA | m(41090020): SUB R1, R0, 20H |
02EB | m(DA16F11C): BLCC MT [trap=1, pos=5873] |
02EC | m .FIXUP D |
02EC | m(8D000008): LDR SB, MT, MOD0 [System] |
02ED | m(00D80000): ADD R0, SB, R0 [global array] |
02EE | n(81E00014): LDR R1, SP, 14H |
02EF | n(42190020): SUB R2, R1, 20H |
02F0 | n(DA16FB1C): BLCC MT [trap=1, pos=5883] |
02F1 | n(82E00004): LDR R2, SP, 4H |
02F2 | n(01280001): ADD R1, R2, R1 |
02F3 | o(90000028): LDR R0, R0, 28H |
02F4 | o(91100000): LDR R1, R1, 0H |
02F5 | o(00090001): SUB R0, R0, R1 |
02F6 | p(E9000004): BNE 4 [02FBH] |
02F7 | q(80E00014): LDR R0, SP, 14H |
02F8 | q(40080001): ADD R0, R0, 1H |
02F9 | q(A0E00014): STR R0, SP, 14H |
02FA | q(E7FFFFE6): B -26 [02E1H] |
| IF (pat[i]r = 0X)s & (tname[i]u = 0X)v THENw i0 := i;x j0 := i |
02FB | r(80E00014): LDR R0, SP, 14H |
02FC | r(41090020): SUB R1, R0, 20H |
02FD | r(DA171B1C): BLCC MT [trap=1, pos=5915] |
02FE | r .FIXUP D |
02FE | r(8D000012): LDR SB, MT, MOD0 [System] |
02FF | r(00D80000): ADD R0, SB, R0 [global array] |
0300 | s(90000028): LDR R0, R0, 28H |
0301 | t(E900000C): BNE 12 [030EH] |
0302 | u(80E00014): LDR R0, SP, 14H |
0303 | u(41090020): SUB R1, R0, 20H |
0304 | u(DA172C1C): BLCC MT [trap=1, pos=5932] |
0305 | u(81E00004): LDR R1, SP, 4H |
0306 | u(00180000): ADD R0, R1, R0 |
0307 | v(90000000): LDR R0, R0, 0H |
0308 | w(E9000005): BNE 5 [030EH] |
0309 | x(80E00014): LDR R0, SP, 14H |
030A | x(A0E00010): STR R0, SP, 10H |
| ELSIFy patz[i]a = "*" THENb |
030B | y(80E00014): LDR R0, SP, 14H |
030C | y(A0E00018): STR R0, SP, 18H |
030D | z(E700005B): B 91 [0369H] |
030E | a(80E00014): LDR R0, SP, 14H |
030F | a(41090020): SUB R1, R0, 20H |
0310 | a(DA17591C): BLCC MT [trap=1, pos=5977] |
0311 | a .FIXUP D |
0311 | a(8D000013): LDR SB, MT, MOD0 [System] |
0312 | a(00D80000): ADD R0, SB, R0 [global array] |
0313 | b(90000028): LDR R0, R0, 28H |
0314 | b(4009002A): SUB R0, R0, 2AH |
0315 | b(E9000053): BNE 83 [0369H] |
| i0 := i;c j0 := i+1;d |
0316 | c(80E00014): LDR R0, SP, 14H |
0317 | c(A0E00010): STR R0, SP, 10H |
0318 | d(80E00014): LDR R0, SP, 14H |
0319 | d(40080001): ADD R0, R0, 1H |
031A | d(A0E00018): STR R0, SP, 18H |
| WHILE name[i0]e # 0X DOf |
031B | e(80E00010): LDR R0, SP, 10H |
031C | e(41090020): SUB R1, R0, 20H |
031D | e(DA17931C): BLCC MT [trap=1, pos=6035] |
031E | e(81E00004): LDR R1, SP, 4H |
031F | e(00180000): ADD R0, R1, R0 |
0320 | f(90000000): LDR R0, R0, 0H |
0321 | f(E1000047): BEQ 71 [0369H] |
| i := i0;g j := j0;h |
0322 | g(80E00010): LDR R0, SP, 10H |
0323 | g(A0E00014): STR R0, SP, 14H |
0324 | h(80E00018): LDR R0, SP, 18H |
0325 | h(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 ; |
0326 | i(80E00014): LDR R0, SP, 14H |
0327 | i(41090020): SUB R1, R0, 20H |
0328 | i(DA17CC1C): BLCC MT [trap=1, pos=6092] |
0329 | i(81E00004): LDR R1, SP, 4H |
032A | i(00180000): ADD R0, R1, R0 |
032B | j(90000000): LDR R0, R0, 0H |
032C | k(E1000015): BEQ 21 [0342H] |
032D | l(80E00014): LDR R0, SP, 14H |
032E | l(41090020): SUB R1, R0, 20H |
032F | l(DA17DD1C): BLCC MT [trap=1, pos=6109] |
0330 | l(81E00004): LDR R1, SP, 4H |
0331 | l(00180000): ADD R0, R1, R0 |
0332 | m(81E0001C): LDR R1, SP, 1CH |
0333 | m(42190020): SUB R2, R1, 20H |
0334 | m(DA17E61C): BLCC MT [trap=1, pos=6118] |
0335 | m .FIXUP D |
0335 | m(8D000024): LDR SB, MT, MOD0 [System] |
0336 | m(01D80001): ADD R1, SB, R1 [global array] |
0337 | n(90000000): LDR R0, R0, 0H |
0338 | n(91100028): LDR R1, R1, 28H |
0339 | n(00090001): SUB R0, R0, R1 |
033A | o(E9000007): BNE 7 [0342H] |
033B | p(80E00014): LDR R0, SP, 14H |
033C | p(40080001): ADD R0, R0, 1H |
033D | p(A0E00014): STR R0, SP, 14H |
033E | q(80E0001C): LDR R0, SP, 1CH |
033F | q(40080001): ADD R0, R0, 1H |
0340 | q(A0E0001C): STR R0, SP, 1CH |
0341 | q(E7FFFFE4): B -28 [0326H] |
| IF pat[j]r = 0X THENs |
0342 | r(80E0001C): LDR R0, SP, 1CH |
0343 | r(41090020): SUB R1, R0, 20H |
0344 | r(DA18111C): BLCC MT [trap=1, pos=6161] |
0345 | r .FIXUP D |
0345 | r(8D000010): LDR SB, MT, MOD0 [System] |
0346 | r(00D80000): ADD R0, SB, R0 [global array] |
0347 | s(90000028): LDR R0, R0, 28H |
0348 | s(E900000E): BNE 14 [0357H] |
| IF name[i]t = 0X THENu (*match*) j0 := j ELSEv INCw(i0) ENDx |
0349 | t(80E00014): LDR R0, SP, 14H |
034A | t(41090020): SUB R1, R0, 20H |
034B | t(DA18301C): BLCC MT [trap=1, pos=6192] |
034C | t(81E00004): LDR R1, SP, 4H |
034D | t(00180000): ADD R0, R1, R0 |
034E | u(90000000): LDR R0, R0, 0H |
034F | u(E9000003): BNE 3 [0353H] |
0350 | v(80E0001C): LDR R0, SP, 1CH |
0351 | v(A0E00018): STR R0, SP, 18H |
0352 | w(E7000003): B 3 [0356H] |
0353 | x(80E00010): LDR R0, SP, 10H |
0354 | x(40080001): ADD R0, R0, 1H |
0355 | x(A0E00010): STR R0, SP, 10H |
| ELSIF paty[j]z = "*" THENa i0 := i;b j0 := j+1 |
0356 | y(E7000011): B 17 [0368H] |
0357 | z(80E0001C): LDR R0, SP, 1CH |
0358 | z(41090020): SUB R1, R0, 20H |
0359 | z(DA18721C): BLCC MT [trap=1, pos=6258] |
035A | z .FIXUP D |
035A | z(8D000015): LDR SB, MT, MOD0 [System] |
035B | z(00D80000): ADD R0, SB, R0 [global array] |
035C | a(90000028): LDR R0, R0, 28H |
035D | a(4009002A): SUB R0, R0, 2AH |
035E | a(E9000006): BNE 6 [0365H] |
035F | b(80E00014): LDR R0, SP, 14H |
0360 | b(A0E00010): STR R0, SP, 10H |
| ELSEc INCd(i0) |
0361 | c(80E0001C): LDR R0, SP, 1CH |
0362 | c(40080001): ADD R0, R0, 1H |
0363 | c(A0E00018): STR R0, SP, 18H |
0364 | d(E7000003): B 3 [0368H] |
| ENDe |
0365 | e(80E00010): LDR R0, SP, 10H |
0366 | e(40080001): ADD R0, R0, 1H |
0367 | e(A0E00010): STR R0, SP, 10H |
| ENDf |
0368 | f(E7FFFFB2): B -78 [031BH] |
| END ; |
| IF (name[i0]g = 0X)h & (ipat[j0]j = 0X)k THENl (*found*) |
0369 | g(80E00010): LDR R0, SP, 10H |
036A | g(41090020): SUB R1, R0, 20H |
036B | g(DA18D61C): BLCC MT [trap=1, pos=6358] |
036C | g(81E00004): LDR R1, SP, 4H |
036D | g(00180000): ADD R0, R1, R0 |
036E | h(90000000): LDR R0, R0, 0H |
036F | i(E9000036): BNE 54 [03A6H] |
0370 | j(80E00018): LDR R0, SP, 18H |
0371 | j(41090020): SUB R1, R0, 20H |
0372 | j(DA18E71C): BLCC MT [trap=1, pos=6375] |
0373 | j .FIXUP D |
0373 | j(8D000019): LDR SB, MT, MOD0 [System] |
0374 | j(00D80000): ADD R0, SB, R0 [global array] |
0375 | k(90000028): LDR R0, R0, 28H |
0376 | l(E900002F): BNE 47 [03A6H] |
| Texts.WriteString(W,m name)n;o |
0377 | m .FIXUP D |
0377 | m(8D000004): LDR SB, MT, MOD0 [System] |
0378 | m(40D80000): ADD R0, SB, 0H [data] |
0379 | m .FIXUP D |
0379 | m(8D900002): LDR SB, MT, MOD9 [Texts] |
037A | m(41D80005): ADD R1, SB, VAR5 |
037B | n(82E00004): LDR R2, SP, 4H |
037C | n(43000020): MOV R3, R0, 20H |
037D | o .FIXUP P |
037D | o(F791D0A8): BL MOD9 [Texts] PROC29 |
| IF pat[j0+1]p = "!" THENq (*option*) |
037E | p(80E00018): LDR R0, SP, 18H |
037F | p(40080001): ADD R0, R0, 1H |
0380 | p(41090020): SUB R1, R0, 20H |
0381 | p(DA19311C): BLCC MT [trap=1, pos=6449] |
0382 | p .FIXUP D |
0382 | p(8D000009): LDR SB, MT, MOD0 [System] |
0383 | p(00D80000): ADD R0, SB, R0 [global array] |
0384 | q(90000028): LDR R0, R0, 28H |
0385 | q(40090021): SUB R0, R0, 21H |
0386 | q(E900001A): BNE 26 [03A1H] |
| Kernel.GetSector(adr,r hp)s;t |
0387 | r(80E00008): LDR R0, SP, 8H |
0388 | s(41E80020): ADD R1, SP, 20H |
0389 | t .FIXUP P |
0389 | t(F710F00C): BL MOD1 [Kernel] PROC15 |
| Texts.Write(W,u 9X)v;w Texts.WriteClock(W,x hp.date)y;z |
038A | u .FIXUP D |
038A | u(8D000008): LDR SB, MT, MOD0 [System] |
038B | u(40D80000): ADD R0, SB, 0H [data] |
038C | u .FIXUP D |
038C | u(8D900002): LDR SB, MT, MOD9 [Texts] |
038D | u(41D80005): ADD R1, SB, VAR5 |
038E | v(42000009): MOV R2, R0, 9H |
038F | w .FIXUP P |
038F | w(F791B006): BL MOD9 [Texts] PROC27 |
0390 | x .FIXUP D |
0390 | x(8D000004): LDR SB, MT, MOD0 [System] |
0391 | x(40D80000): ADD R0, SB, 0H [data] |
0392 | x .FIXUP D |
0392 | x(8D900002): LDR SB, MT, MOD9 [Texts] |
0393 | x(41D80005): ADD R1, SB, VAR5 |
0394 | y(82E0004C): LDR R2, SP, 4CH |
0395 | z .FIXUP P |
0395 | z(F7922006): BL MOD9 [Texts] PROC34 |
| Texts.WriteInt(W,a hp.aleng*FileDir.SectorSize +b hp.bleng -c FileDir.HeaderSize,d 8)e;f (*length*) |
0396 | a .FIXUP D |
0396 | a(8D000004): LDR SB, MT, MOD0 [System] |
0397 | a(40D80000): ADD R0, SB, 0H [data] |
0398 | a .FIXUP D |
0398 | a(8D900002): LDR SB, MT, MOD9 [Texts] |
0399 | a(41D80005): ADD R1, SB, VAR5 |
039A | b(82E00044): LDR R2, SP, 44H |
039B | b(4221000A): LSL R2, R2, AH |
039C | c(83E00048): LDR R3, SP, 48H |
039D | c(02280003): ADD R2, R2, R3 |
039E | d(42290160): SUB R2, R2, 160H |
039F | e(43000008): MOV R3, R0, 8H |
03A0 | f .FIXUP P |
03A0 | f(F791E00B): BL MOD9 [Texts] PROC30 |
| (*Texts.WriteHex(W, adr)*) |
| END ; |
| Texts.WriteLn(W)g |
03A1 | g .FIXUP D |
03A1 | g(8D000009): LDR SB, MT, MOD0 [System] |
03A2 | g(40D80000): ADD R0, SB, 0H [data] |
03A3 | g .FIXUP D |
03A3 | g(8D900002): LDR SB, MT, MOD9 [Texts] |
03A4 | g(41D80005): ADD R1, SB, VAR5 |
| ENDh |
03A5 | h .FIXUP P |
03A5 | h(F791C005): BL MOD9 [Texts] PROC28 |
| ENDi List; |
03A6 | i(8FE00000): LDR LNK, SP, 0H |
03A7 | i(4EE80420): ADD SP, SP, 420H |
03A8 | i(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 |
03A9 | j .PROC 16 |
03A9 | j .COMMAND Directory |
03A9 | j(4EE90080): SUB SP, SP, 80H |
03AA | j(AFE00000): STR LNK, SP, 0H |
03AB | k(40E80014): ADD R0, SP, 14H |
03AC | k .FIXUP D |
03AC | k(8D900009): LDR SB, MT, MOD9 [Texts] |
03AD | k(41D80002): ADD R1, SB, VAR2 |
03AE | l .FIXUP D |
03AE | l(8DA00002): LDR SB, MT, MOD10 [Oberon] |
03AF | l(42D8000E): ADD R2, SB, VAR14 |
03B0 | l(82200008): LDR R2, R2, 8H |
03B1 | m .FIXUP D |
03B1 | m(8DA00003): LDR SB, MT, MOD10 [Oberon] |
03B2 | m(43D8000E): ADD R3, SB, VAR14 |
03B3 | m(8330000C): LDR R3, R3, CH |
03B4 | n .FIXUP P |
03B4 | n(F791200F): BL MOD9 [Texts] PROC18 |
03B5 | o(40E80014): ADD R0, SP, 14H |
03B6 | o .FIXUP D |
03B6 | o(8D900005): LDR SB, MT, MOD9 [Texts] |
03B7 | o(41D80002): ADD R1, SB, VAR2 |
03B8 | p(42E80010): ADD R2, SP, 10H |
03B9 | q .FIXUP P |
03B9 | q(F7913005): BL MOD9 [Texts] PROC19 |
| WHILE ch = " " DOr Texts.Read(R,s ch)t ENDu; |
03BA | r(90E00010): LDR R0, SP, 10H |
03BB | r(40090020): SUB R0, R0, 20H |
03BC | r(E9000006): BNE 6 [03C3H] |
03BD | s(40E80014): ADD R0, SP, 14H |
03BE | s .FIXUP D |
03BE | s(8D900008): LDR SB, MT, MOD9 [Texts] |
03BF | s(41D80002): ADD R1, SB, VAR2 |
03C0 | t(42E80010): ADD R2, SP, 10H |
03C1 | u .FIXUP P |
03C1 | u(F7913008): BL MOD9 [Texts] PROC19 |
03C2 | u(E7FFFFF7): B -9 [03BAH] |
| IF (ch = "^")v OR (wch = 0DX)x THENy |
03C3 | v(90E00010): LDR R0, SP, 10H |
03C4 | v(4009005E): SUB R0, R0, 5EH |
03C5 | w(E1000003): BEQ 3 [03C9H] |
03C6 | x(90E00010): LDR R0, SP, 10H |
03C7 | x(4009000D): SUB R0, R0, DH |
03C8 | y(E900001C): BNE 28 [03E5H] |
| Oberon.GetSelection(T,z beg,a end,b time)c;d |
03C9 | z(40E80048): ADD R0, SP, 48H |
03CA | a(41E80054): ADD R1, SP, 54H |
03CB | b(42E80058): ADD R2, SP, 58H |
03CC | c(43E8005C): ADD R3, SP, 5CH |
03CD | d .FIXUP P |
03CD | d(F7A2900C): BL MOD10 [Oberon] PROC41 |
| IF time >= 0 THENe |
03CE | e(80E0005C): LDR R0, SP, 5CH |
03CF | e(40090000): SUB R0, R0, 0H |
03D0 | e(E5000014): BLT 20 [03E5H] |
| Texts.OpenReader(R,f T,g beg)h;i Texts.Read(R,j ch)k;l |
03D1 | f(40E80014): ADD R0, SP, 14H |
03D2 | f .FIXUP D |
03D2 | f(8D900014): LDR SB, MT, MOD9 [Texts] |
03D3 | f(41D80002): ADD R1, SB, VAR2 |
03D4 | g(82E00048): LDR R2, SP, 48H |
03D5 | h(83E00054): LDR R3, SP, 54H |
03D6 | i .FIXUP P |
03D6 | i(F7912009): BL MOD9 [Texts] PROC18 |
03D7 | j(40E80014): ADD R0, SP, 14H |
03D8 | j .FIXUP D |
03D8 | j(8D900006): LDR SB, MT, MOD9 [Texts] |
03D9 | j(41D80002): ADD R1, SB, VAR2 |
03DA | k(42E80010): ADD R2, SP, 10H |
03DB | l .FIXUP P |
03DB | l(F7913005): BL MOD9 [Texts] PROC19 |
| WHILE ch <= " " DOm Texts.Read(R,n ch)o ENDp |
03DC | m(90E00010): LDR R0, SP, 10H |
03DD | m(40090020): SUB R0, R0, 20H |
03DE | m(EE000006): BGT 6 [03E5H] |
03DF | n(40E80014): ADD R0, SP, 14H |
03E0 | n .FIXUP D |
03E0 | n(8D900008): LDR SB, MT, MOD9 [Texts] |
03E1 | n(41D80002): ADD R1, SB, VAR2 |
03E2 | o(42E80010): ADD R2, SP, 10H |
03E3 | p .FIXUP P |
03E3 | p(F7913008): BL MOD9 [Texts] PROC19 |
03E4 | p(E7FFFFF7): B -9 [03DCH] |
| END |
| END ; |
| i := 0;q |
03E5 | q(40000000): MOV R0, R0, 0H |
03E6 | q(A0E0000C): STR R0, SP, CH |
| WHILE ch > "!" DOr pat[i]s := ch;t INC(i);u Texts.Read(R,v ch)w ENDx; |
03E7 | r(90E00010): LDR R0, SP, 10H |
03E8 | r(40090021): SUB R0, R0, 21H |
03E9 | r(E6000010): BLE 16 [03FAH] |
03EA | s(80E0000C): LDR R0, SP, CH |
03EB | s(41090020): SUB R1, R0, 20H |
03EC | s(DA1CB41C): BLCC MT [trap=1, pos=7348] |
03ED | s .FIXUP D |
03ED | s(8D00000D): LDR SB, MT, MOD0 [System] |
03EE | s(00D80000): ADD R0, SB, R0 [global array] |
03EF | t(91E00010): LDR R1, SP, 10H |
03F0 | t(B1000028): STR R1, R0, 28H |
03F1 | u(80E0000C): LDR R0, SP, CH |
03F2 | u(40080001): ADD R0, R0, 1H |
03F3 | u(A0E0000C): STR R0, SP, CH |
03F4 | v(40E80014): ADD R0, SP, 14H |
03F5 | v .FIXUP D |
03F5 | v(8D900008): LDR SB, MT, MOD9 [Texts] |
03F6 | v(41D80002): ADD R1, SB, VAR2 |
03F7 | w(42E80010): ADD R2, SP, 10H |
03F8 | x .FIXUP P |
03F8 | x(F7913015): BL MOD9 [Texts] PROC19 |
03F9 | x(E7FFFFED): B -19 [03E7H] |
| pat[i]y := 0X;z |
03FA | y(80E0000C): LDR R0, SP, CH |
03FB | y(41090020): SUB R1, R0, 20H |
03FC | y(DA1CE51C): BLCC MT [trap=1, pos=7397] |
03FD | y .FIXUP D |
03FD | y(8D000008): LDR SB, MT, MOD0 [System] |
03FE | y(00D80000): ADD R0, SB, R0 [global array] |
03FF | z(41000000): MOV R1, R0, 0H |
0400 | z(B1000028): STR R1, R0, 28H |
| IF ch = "!" THENa pat[i+1]b := "!" ENDc ; (*directory option*) |
0401 | a(90E00010): LDR R0, SP, 10H |
0402 | a(40090021): SUB R0, R0, 21H |
0403 | a(E9000008): BNE 8 [040CH] |
0404 | b(80E0000C): LDR R0, SP, CH |
0405 | b(40080001): ADD R0, R0, 1H |
0406 | b(41090020): SUB R1, R0, 20H |
0407 | b(DA1D0A1C): BLCC MT [trap=1, pos=7434] |
0408 | b .FIXUP D |
0408 | b(8D00000B): LDR SB, MT, MOD0 [System] |
0409 | b(00D80000): ADD R0, SB, R0 [global array] |
040A | c(41000021): MOV R1, R0, 21H |
040B | c(B1000028): STR R1, R0, 28H |
| i := 0;d |
040C | d(40000000): MOV R0, R0, 0H |
040D | d(A0E0000C): STR R0, SP, CH |
| WHILE pat[i]e > "*" DOf pre[i]g := pat[i]h;i INC(i) ENDj; |
040E | e(80E0000C): LDR R0, SP, CH |
040F | e(41090020): SUB R1, R0, 20H |
0410 | e(DA1D4A1C): BLCC MT [trap=1, pos=7498] |
0411 | e .FIXUP D |
0411 | e(8D000009): LDR SB, MT, MOD0 [System] |
0412 | e(00D80000): ADD R0, SB, R0 [global array] |
0413 | f(90000028): LDR R0, R0, 28H |
0414 | f(4009002A): SUB R0, R0, 2AH |
0415 | f(E600000F): BLE 15 [0425H] |
0416 | g(80E0000C): LDR R0, SP, CH |
0417 | g(41090020): SUB R1, R0, 20H |
0418 | g(DA1D5A1C): BLCC MT [trap=1, pos=7514] |
0419 | g(00E80000): ADD R0, SP, R0 |
041A | h(81E0000C): LDR R1, SP, CH |
041B | h(42190020): SUB R2, R1, 20H |
041C | h(DA1D641C): BLCC MT [trap=1, pos=7524] |
041D | h .FIXUP D |
041D | h(8D00000C): LDR SB, MT, MOD0 [System] |
041E | h(01D80001): ADD R1, SB, R1 [global array] |
041F | i(91100028): LDR R1, R1, 28H |
0420 | i(B1000060): STR R1, R0, 60H |
0421 | j(80E0000C): LDR R0, SP, CH |
0422 | j(40080001): ADD R0, R0, 1H |
0423 | j(A0E0000C): STR R0, SP, CH |
0424 | j(E7FFFFE9): B -23 [040EH] |
| pre[i]k := 0X;l |
0425 | k(80E0000C): LDR R0, SP, CH |
0426 | k(41090020): SUB R1, R0, 20H |
0427 | k(DA1D7C1C): BLCC MT [trap=1, pos=7548] |
0428 | k(00E80000): ADD R0, SP, R0 |
0429 | l(41000000): MOV R1, R0, 0H |
042A | l(B1000060): STR R1, R0, 60H |
| Oberon.AllocateSystemViewer(Oberon.Par.vwr.mXn,o X,p Y)q;r t := TextFrames.Text("")s;t |
042B | m .FIXUP D |
042B | m(8DA0000E): LDR SB, MT, MOD10 [Oberon] |
042C | m(40D8000E): ADD R0, SB, VAR14 |
042D | n(80000000): LDR R0, R0, 0H |
042E | n(D11DB44C): BLEQ MT [trap=4, pos=7604] |
042F | o(80000008): LDR R0, R0, 8H |
0430 | p(41E80004): ADD R1, SP, 4H |
0431 | q(42E80008): ADD R2, SP, 8H |
0432 | r .FIXUP P |
0432 | r(F7A2303A): BL MOD10 [Oberon] PROC35 |
0433 | s .FIXUP D |
0433 | s(8D000008): LDR SB, MT, MOD0 [System] |
0434 | s(40D80108): ADD R0, SB, 108H [""] |
0435 | s(41000001): MOV R1, R0, 1H |
0436 | t .FIXUP P |
0436 | t(F7C2B004): BL MOD12 [TextFrames] PROC43 |
0437 | t(A0E0004C): STR R0, SP, 4CH |
| V := MenuViewers.New( |
| TextFrames.NewMenu("System.Directory",u StandardMenu)v,w |
0438 | u .FIXUP D |
0438 | u(8D000005): LDR SB, MT, MOD0 [System] |
0439 | u(40D8010C): ADD R0, SB, 10CH ["System.Directory"] |
043A | u(41000011): MOV R1, R0, 11H |
043B | v(42D80048): ADD R2, SB, 48H |
043C | v(4300003C): MOV R3, R0, 3CH |
043D | w .FIXUP P |
043D | w(F7C2C007): BL MOD12 [TextFrames] PROC44 |
| TextFrames.NewText(tx,y 0)z,a TextFrames.menuH,b X,c Y)d;e |
043E | x(4EE90004): SUB SP, SP, 4H |
043F | x(A0E00000): STR R0, SP, 0H |
0440 | y(80E00050): LDR R0, SP, 50H |
0441 | z(41000000): MOV R1, R0, 0H |
0442 | a .FIXUP P |
0442 | a(F7C2D005): BL MOD12 [TextFrames] PROC45 |
0443 | a(01000000): MOV R1, R0, R0 |
0444 | a(80E00000): LDR R0, SP, 0H |
0445 | a(4EE80004): ADD SP, SP, 4H |
0446 | b .FIXUP D |
0446 | b(8DC0000E): LDR SB, MT, MOD12 [TextFrames] |
0447 | b(82D00005): LDR R2, SB, VAR5 |
0448 | c(83E00004): LDR R3, SP, 4H |
0449 | d(84E00008): LDR R4, SP, 8H |
044A | e .FIXUP P |
044A | e(F7B04008): BL MOD11 [MenuViewers] PROC4 |
044B | e(A0E00050): STR R0, SP, 50H |
| FileDir.Enumerate(pre,f List)g;h Texts.Append(t,i W.buf)j |
044C | f(40E80060): ADD R0, SP, 60H |
044D | f(41000020): MOV R1, R0, 20H |
044E | g(F7000000): BL 0 [044FH] |
044F | g(42F905D4): SUB R2, LNK, 5D4H |
0450 | h .FIXUP P |
0450 | h(F7207006): BL MOD2 [FileDir] PROC7 |
0451 | i(80E0004C): LDR R0, SP, 4CH |
0452 | j .FIXUP D |
0452 | j(8D00000C): LDR SB, MT, MOD0 [System] |
0453 | j(81D00000): LDR R1, SB, 0H [data] |
| ENDk Directory; |
0454 | k .FIXUP P |
0454 | k(F790E004): BL MOD9 [Texts] PROC14 |
0455 | k(8FE00000): LDR LNK, SP, 0H |
0456 | k(4EE80080): ADD SP, SP, 80H |
0457 | k(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 |
0458 | l .PROC 17 |
0458 | l .COMMAND CopyFiles |
0458 | l(4EE900D4): SUB SP, SP, D4H |
0459 | l(AFE00000): STR LNK, SP, 0H |
045A | m(40E80060): ADD R0, SP, 60H |
045B | m .FIXUP D |
045B | m(8D900009): LDR SB, MT, MOD9 [Texts] |
045C | m(41D80003): ADD R1, SB, VAR3 |
045D | n(F7FFFBA2): BL -1118 [0000H] |
| Texts.WriteString(W,o "System.CopyFiles")p;q EndLine;r |
045E | o .FIXUP D |
045E | o(8D000003): LDR SB, MT, MOD0 [System] |
045F | o(40D80000): ADD R0, SB, 0H [data] |
0460 | o .FIXUP D |
0460 | o(8D900002): LDR SB, MT, MOD9 [Texts] |
0461 | o(41D80005): ADD R1, SB, VAR5 |
0462 | p .FIXUP D |
0462 | p(8D000002): LDR SB, MT, MOD0 [System] |
0463 | p(42D80120): ADD R2, SB, 120H ["System.CopyFiles"] |
0464 | p(43000011): MOV R3, R0, 11H |
0465 | q .FIXUP P |
0465 | q(F791D011): BL MOD9 [Texts] PROC29 |
0466 | r(F7FFFBC4): BL -1084 [002BH] |
| WHILE S.class = Texts.Name DOs |
0467 | s(80E0009C): LDR R0, SP, 9CH |
0468 | s(40090001): SUB R0, R0, 1H |
0469 | s(E9000080): BNE 128 [04EAH] |
| name := S.s;t Texts.Scan(S)u;v |
046A | t(40E80040): ADD R0, SP, 40H |
046B | t(41E800B4): ADD R1, SP, B4H |
046C | t(42000008): MOV R2, R0, 8H |
046D | t(83100000): LDR R3, R1, 0H |
046E | t(41180004): ADD R1, R1, 4H |
046F | t(A3000000): STR R3, R0, 0H |
0470 | t(40080004): ADD R0, R0, 4H |
0471 | t(42290001): SUB R2, R2, 1H |
0472 | t(E9FFFFFA): BNE -6 [046DH] |
0473 | u(40E80060): ADD R0, SP, 60H |
0474 | u .FIXUP D |
0474 | u(8D900012): LDR SB, MT, MOD9 [Texts] |
0475 | u(41D80003): ADD R1, SB, VAR3 |
0476 | v .FIXUP P |
0476 | v(F7916011): BL MOD9 [Texts] PROC22 |
| IF (S.class = Texts.Char)w & (xS.c = "=")y THENz Texts.Scan(S)a;b |
0477 | w(80E0009C): LDR R0, SP, 9CH |
0478 | w(40090006): SUB R0, R0, 6H |
0479 | x(E900006B): BNE 107 [04E5H] |
047A | y(90E000AC): LDR R0, SP, ACH |
047B | y(4009003D): SUB R0, R0, 3DH |
047C | z(E9000068): BNE 104 [04E5H] |
047D | a(40E80060): ADD R0, SP, 60H |
047E | a .FIXUP D |
047E | a(8D90000A): LDR SB, MT, MOD9 [Texts] |
047F | a(41D80003): ADD R1, SB, VAR3 |
0480 | b .FIXUP P |
0480 | b(F791600A): BL MOD9 [Texts] PROC22 |
| IF (S.class = Texts.Char)c & (dS.c = ">")e THENf Texts.Scan(S)g;h |
0481 | c(80E0009C): LDR R0, SP, 9CH |
0482 | c(40090006): SUB R0, R0, 6H |
0483 | d(E9000061): BNE 97 [04E5H] |
0484 | e(90E000AC): LDR R0, SP, ACH |
0485 | e(4009003E): SUB R0, R0, 3EH |
0486 | f(E900005E): BNE 94 [04E5H] |
0487 | g(40E80060): ADD R0, SP, 60H |
0488 | g .FIXUP D |
0488 | g(8D90000A): LDR SB, MT, MOD9 [Texts] |
0489 | g(41D80003): ADD R1, SB, VAR3 |
048A | h .FIXUP P |
048A | h(F791600A): BL MOD9 [Texts] PROC22 |
| IF S.class = Texts.Name THENi |
048B | i(80E0009C): LDR R0, SP, 9CH |
048C | i(40090001): SUB R0, R0, 1H |
048D | i(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 |
048E | j .FIXUP D |
048E | j(8D000006): LDR SB, MT, MOD0 [System] |
048F | j(40D80000): ADD R0, SB, 0H [data] |
0490 | j .FIXUP D |
0490 | j(8D900002): LDR SB, MT, MOD9 [Texts] |
0491 | j(41D80005): ADD R1, SB, VAR5 |
0492 | k(42E80040): ADD R2, SP, 40H |
0493 | k(43000020): MOV R3, R0, 20H |
0494 | l .FIXUP P |
0494 | l(F791D00A): BL MOD9 [Texts] PROC29 |
0495 | m .FIXUP D |
0495 | m(8D000005): LDR SB, MT, MOD0 [System] |
0496 | m(40D80000): ADD R0, SB, 0H [data] |
0497 | m .FIXUP D |
0497 | m(8D900002): LDR SB, MT, MOD9 [Texts] |
0498 | m(41D80005): ADD R1, SB, VAR5 |
0499 | n .FIXUP D |
0499 | n(8D000002): LDR SB, MT, MOD0 [System] |
049A | n(42D80134): ADD R2, SB, 134H [" => "] |
049B | n(43000005): MOV R3, R0, 5H |
049C | o .FIXUP P |
049C | o(F791D008): BL MOD9 [Texts] PROC29 |
049D | p .FIXUP D |
049D | p(8D000004): LDR SB, MT, MOD0 [System] |
049E | p(40D80000): ADD R0, SB, 0H [data] |
049F | p .FIXUP D |
049F | p(8D900002): LDR SB, MT, MOD9 [Texts] |
04A0 | p(41D80005): ADD R1, SB, VAR5 |
04A1 | q(42E800B4): ADD R2, SP, B4H |
04A2 | q(43000020): MOV R3, R0, 20H |
04A3 | r .FIXUP P |
04A3 | r(F791D007): BL MOD9 [Texts] PROC29 |
| Texts.WriteString(W,s " copying")t;u Texts.Append(Oberon.Log,v W.buf)w;x |
04A4 | s .FIXUP D |
04A4 | s(8D000005): LDR SB, MT, MOD0 [System] |
04A5 | s(40D80000): ADD R0, SB, 0H [data] |
04A6 | s .FIXUP D |
04A6 | s(8D900002): LDR SB, MT, MOD9 [Texts] |
04A7 | s(41D80005): ADD R1, SB, VAR5 |
04A8 | t .FIXUP D |
04A8 | t(8D000002): LDR SB, MT, MOD0 [System] |
04A9 | t(42D8013C): ADD R2, SB, 13CH [" copying"] |
04AA | t(43000009): MOV R3, R0, 9H |
04AB | u .FIXUP P |
04AB | u(F791D008): BL MOD9 [Texts] PROC29 |
04AC | v .FIXUP D |
04AC | v(8DA00004): LDR SB, MT, MOD10 [Oberon] |
04AD | v(80D0000D): LDR R0, SB, VAR13 |
04AE | w .FIXUP D |
04AE | w(8D000002): LDR SB, MT, MOD0 [System] |
04AF | w(81D00000): LDR R1, SB, 0H [data] |
04B0 | x .FIXUP P |
04B0 | x(F790E005): BL MOD9 [Texts] PROC14 |
| f := Files.Old(name)y;z |
04B1 | y(40E80040): ADD R0, SP, 40H |
04B2 | y(41000020): MOV R1, R0, 20H |
04B3 | z .FIXUP P |
04B3 | z(F7302003): BL MOD3 [Files] PROC2 |
04B4 | z(A0E00004): STR R0, SP, 4H |
| IF f # NIL THENa g := Files.New(S.s)b;c |
04B5 | a(80E00004): LDR R0, SP, 4H |
04B6 | a(E1000025): BEQ 37 [04DCH] |
04B7 | b(40E800B4): ADD R0, SP, B4H |
04B8 | b(41000020): MOV R1, R0, 20H |
04B9 | c .FIXUP P |
04B9 | c(F7303006): BL MOD3 [Files] PROC3 |
04BA | c(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 |
04BB | d(40E8000C): ADD R0, SP, CH |
04BC | d .FIXUP D |
04BC | d(8D30000E): LDR SB, MT, MOD3 [Files] |
04BD | d(41D80001): ADD R1, SB, VAR1 |
04BE | e(82E00004): LDR R2, SP, 4H |
04BF | f(43000000): MOV R3, R0, 0H |
04C0 | g .FIXUP P |
04C0 | g(F730B007): BL MOD3 [Files] PROC11 |
04C1 | h(40E80024): ADD R0, SP, 24H |
04C2 | h .FIXUP D |
04C2 | h(8D300006): LDR SB, MT, MOD3 [Files] |
04C3 | h(41D80001): ADD R1, SB, VAR1 |
04C4 | i(82E00008): LDR R2, SP, 8H |
04C5 | j(43000000): MOV R3, R0, 0H |
04C6 | k .FIXUP P |
04C6 | k(F730B006): BL MOD3 [Files] PROC11 |
04C7 | l(40E8000C): ADD R0, SP, CH |
04C8 | l .FIXUP D |
04C8 | l(8D300006): LDR SB, MT, MOD3 [Files] |
04C9 | l(41D80001): ADD R1, SB, VAR1 |
04CA | m(42E8003C): ADD R2, SP, 3CH |
04CB | n .FIXUP P |
04CB | n(F7310005): BL MOD3 [Files] PROC16 |
| WHILE ~Rf.eof DOo Files.Write(Rg,p ch)q;r Files.Read(Rf,s ch)t ENDu; |
04CC | o(90E0000C): LDR R0, SP, CH |
04CD | o(E900000B): BNE 11 [04D9H] |
04CE | p(40E80024): ADD R0, SP, 24H |
04CF | p .FIXUP D |
04CF | p(8D300007): LDR SB, MT, MOD3 [Files] |
04D0 | p(41D80001): ADD R1, SB, VAR1 |
04D1 | q(92E0003C): LDR R2, SP, 3CH |
04D2 | r .FIXUP P |
04D2 | r(F7318007): BL MOD3 [Files] PROC24 |
04D3 | s(40E8000C): ADD R0, SP, CH |
04D4 | s .FIXUP D |
04D4 | s(8D300005): LDR SB, MT, MOD3 [Files] |
04D5 | s(41D80001): ADD R1, SB, VAR1 |
04D6 | t(42E8003C): ADD R2, SP, 3CH |
04D7 | u .FIXUP P |
04D7 | u(F7310005): BL MOD3 [Files] PROC16 |
04D8 | u(E7FFFFF3): B -13 [04CCH] |
| Files.Register(g)v |
04D9 | v(80E00008): LDR R0, SP, 8H |
| ELSEw Textsx.WriteString(W,y " failed")z |
04DA | w .FIXUP P |
04DA | w(F7304003): BL MOD3 [Files] PROC4 |
04DB | x(E7000008): B 8 [04E4H] |
04DC | y .FIXUP D |
04DC | y(8D000008): LDR SB, MT, MOD0 [System] |
04DD | y(40D80000): ADD R0, SB, 0H [data] |
04DE | y .FIXUP D |
04DE | y(8D900002): LDR SB, MT, MOD9 [Texts] |
04DF | y(41D80005): ADD R1, SB, VAR5 |
04E0 | z .FIXUP D |
04E0 | z(8D000002): LDR SB, MT, MOD0 [System] |
04E1 | z(42D80148): ADD R2, SB, 148H [" failed"] |
04E2 | z(43000008): MOV R3, R0, 8H |
| ENDa ; |
04E3 | a .FIXUP P |
04E3 | a(F791D009): BL MOD9 [Texts] PROC29 |
| EndLine |
| ENDb |
04E4 | b(F7FFFB46): BL -1210 [002BH] |
| END |
| END ; |
| Texts.Scan(S)c |
04E5 | c(40E80060): ADD R0, SP, 60H |
04E6 | c .FIXUP D |
04E6 | c(8D900006): LDR SB, MT, MOD9 [Texts] |
04E7 | c(41D80003): ADD R1, SB, VAR3 |
| ENDd |
04E8 | d .FIXUP P |
04E8 | d(F7916005): BL MOD9 [Texts] PROC22 |
04E9 | d(E7FFFF7D): B -131 [0467H] |
| ENDe CopyFiles; |
04EA | e(8FE00000): LDR LNK, SP, 0H |
04EB | e(4EE800D4): ADD SP, SP, D4H |
04EC | e(C700000F): B LNK |
| |
| PROCEDURE RenameFiles*; |
| VAR res: INTEGER; |
| name: ARRAY 32 OF CHAR; |
| S: Texts.Scanner; |
| BEGINf GetArg(S)g;h |
04ED | f .PROC 18 |
04ED | f .COMMAND RenameFiles |
04ED | f(4EE9009C): SUB SP, SP, 9CH |
04EE | f(AFE00000): STR LNK, SP, 0H |
04EF | g(40E80028): ADD R0, SP, 28H |
04F0 | g .FIXUP D |
04F0 | g(8D90000A): LDR SB, MT, MOD9 [Texts] |
04F1 | g(41D80003): ADD R1, SB, VAR3 |
04F2 | h(F7FFFB0D): BL -1267 [0000H] |
| Texts.WriteString(W,i "System.RenameFiles")j;k EndLine;l |
04F3 | i .FIXUP D |
04F3 | i(8D000003): LDR SB, MT, MOD0 [System] |
04F4 | i(40D80000): ADD R0, SB, 0H [data] |
04F5 | i .FIXUP D |
04F5 | i(8D900002): LDR SB, MT, MOD9 [Texts] |
04F6 | i(41D80005): ADD R1, SB, VAR5 |
04F7 | j .FIXUP D |
04F7 | j(8D000002): LDR SB, MT, MOD0 [System] |
04F8 | j(42D80150): ADD R2, SB, 150H ["System.RenameFiles"] |
04F9 | j(43000013): MOV R3, R0, 13H |
04FA | k .FIXUP P |
04FA | k(F791D012): BL MOD9 [Texts] PROC29 |
04FB | l(F7FFFB2F): BL -1233 [002BH] |
| WHILE S.class = Texts.Name DOm |
04FC | m(80E00064): LDR R0, SP, 64H |
04FD | m(40090001): SUB R0, R0, 1H |
04FE | m(E9000059): BNE 89 [0558H] |
| name := S.s;n Texts.Scan(S)o;p |
04FF | n(40E80008): ADD R0, SP, 8H |
0500 | n(41E8007C): ADD R1, SP, 7CH |
0501 | n(42000008): MOV R2, R0, 8H |
0502 | n(83100000): LDR R3, R1, 0H |
0503 | n(41180004): ADD R1, R1, 4H |
0504 | n(A3000000): STR R3, R0, 0H |
0505 | n(40080004): ADD R0, R0, 4H |
0506 | n(42290001): SUB R2, R2, 1H |
0507 | n(E9FFFFFA): BNE -6 [0502H] |
0508 | o(40E80028): ADD R0, SP, 28H |
0509 | o .FIXUP D |
0509 | o(8D900012): LDR SB, MT, MOD9 [Texts] |
050A | o(41D80003): ADD R1, SB, VAR3 |
050B | p .FIXUP P |
050B | p(F7916011): BL MOD9 [Texts] PROC22 |
| IF (S.class = Texts.Char)q & (rS.c = "=")s THENt Texts.Scan(S)u;v |
050C | q(80E00064): LDR R0, SP, 64H |
050D | q(40090006): SUB R0, R0, 6H |
050E | r(E9000044): BNE 68 [0553H] |
050F | s(90E00074): LDR R0, SP, 74H |
0510 | s(4009003D): SUB R0, R0, 3DH |
0511 | t(E9000041): BNE 65 [0553H] |
0512 | u(40E80028): ADD R0, SP, 28H |
0513 | u .FIXUP D |
0513 | u(8D90000A): LDR SB, MT, MOD9 [Texts] |
0514 | u(41D80003): ADD R1, SB, VAR3 |
0515 | v .FIXUP P |
0515 | v(F791600A): BL MOD9 [Texts] PROC22 |
| IF (S.class = Texts.Char)w & (xS.c = ">")y THENz Texts.Scan(S)a;b |
0516 | w(80E00064): LDR R0, SP, 64H |
0517 | w(40090006): SUB R0, R0, 6H |
0518 | x(E900003A): BNE 58 [0553H] |
0519 | y(90E00074): LDR R0, SP, 74H |
051A | y(4009003E): SUB R0, R0, 3EH |
051B | z(E9000037): BNE 55 [0553H] |
051C | a(40E80028): ADD R0, SP, 28H |
051D | a .FIXUP D |
051D | a(8D90000A): LDR SB, MT, MOD9 [Texts] |
051E | a(41D80003): ADD R1, SB, VAR3 |
051F | b .FIXUP P |
051F | b(F791600A): BL MOD9 [Texts] PROC22 |
| IF S.class = Texts.Name THENc |
0520 | c(80E00064): LDR R0, SP, 64H |
0521 | c(40090001): SUB R0, R0, 1H |
0522 | c(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 |
0523 | d .FIXUP D |
0523 | d(8D000006): LDR SB, MT, MOD0 [System] |
0524 | d(40D80000): ADD R0, SB, 0H [data] |
0525 | d .FIXUP D |
0525 | d(8D900002): LDR SB, MT, MOD9 [Texts] |
0526 | d(41D80005): ADD R1, SB, VAR5 |
0527 | e(42E80008): ADD R2, SP, 8H |
0528 | e(43000020): MOV R3, R0, 20H |
0529 | f .FIXUP P |
0529 | f(F791D00A): BL MOD9 [Texts] PROC29 |
052A | g .FIXUP D |
052A | g(8D000005): LDR SB, MT, MOD0 [System] |
052B | g(40D80000): ADD R0, SB, 0H [data] |
052C | g .FIXUP D |
052C | g(8D900002): LDR SB, MT, MOD9 [Texts] |
052D | g(41D80005): ADD R1, SB, VAR5 |
052E | h .FIXUP D |
052E | h(8D000002): LDR SB, MT, MOD0 [System] |
052F | h(42D80164): ADD R2, SB, 164H [" => "] |
0530 | h(43000005): MOV R3, R0, 5H |
0531 | i .FIXUP P |
0531 | i(F791D008): BL MOD9 [Texts] PROC29 |
0532 | j .FIXUP D |
0532 | j(8D000004): LDR SB, MT, MOD0 [System] |
0533 | j(40D80000): ADD R0, SB, 0H [data] |
0534 | j .FIXUP D |
0534 | j(8D900002): LDR SB, MT, MOD9 [Texts] |
0535 | j(41D80005): ADD R1, SB, VAR5 |
0536 | k(42E8007C): ADD R2, SP, 7CH |
0537 | k(43000020): MOV R3, R0, 20H |
0538 | l .FIXUP P |
0538 | l(F791D007): BL MOD9 [Texts] PROC29 |
| Texts.WriteString(W,m " renaming")n;o Files.Rename(name,p S.s,q res)r;s |
0539 | m .FIXUP D |
0539 | m(8D000005): LDR SB, MT, MOD0 [System] |
053A | m(40D80000): ADD R0, SB, 0H [data] |
053B | m .FIXUP D |
053B | m(8D900002): LDR SB, MT, MOD9 [Texts] |
053C | m(41D80005): ADD R1, SB, VAR5 |
053D | n .FIXUP D |
053D | n(8D000002): LDR SB, MT, MOD0 [System] |
053E | n(42D8016C): ADD R2, SB, 16CH [" renaming"] |
053F | n(4300000A): MOV R3, R0, AH |
0540 | o .FIXUP P |
0540 | o(F791D008): BL MOD9 [Texts] PROC29 |
0541 | p(40E80008): ADD R0, SP, 8H |
0542 | p(41000020): MOV R1, R0, 20H |
0543 | q(42E8007C): ADD R2, SP, 7CH |
0544 | q(43000020): MOV R3, R0, 20H |
0545 | r(44E80004): ADD R4, SP, 4H |
0546 | s .FIXUP P |
0546 | s(F7308006): BL MOD3 [Files] PROC8 |
| IF res > 1 THENt Texts.WriteString(W,u " failed")v ENDw; |
0547 | t(80E00004): LDR R0, SP, 4H |
0548 | t(40090001): SUB R0, R0, 1H |
0549 | t(E6000008): BLE 8 [0552H] |
054A | u .FIXUP D |
054A | u(8D00000D): LDR SB, MT, MOD0 [System] |
054B | u(40D80000): ADD R0, SB, 0H [data] |
054C | u .FIXUP D |
054C | u(8D900002): LDR SB, MT, MOD9 [Texts] |
054D | u(41D80005): ADD R1, SB, VAR5 |
054E | v .FIXUP D |
054E | v(8D000002): LDR SB, MT, MOD0 [System] |
054F | v(42D80178): ADD R2, SB, 178H [" failed"] |
0550 | v(43000008): MOV R3, R0, 8H |
0551 | w .FIXUP P |
0551 | w(F791D00B): BL MOD9 [Texts] PROC29 |
| EndLine |
| ENDx |
0552 | x(F7FFFAD8): BL -1320 [002BH] |
| END |
| END ; |
| Texts.Scan(S)y |
0553 | y(40E80028): ADD R0, SP, 28H |
0554 | y .FIXUP D |
0554 | y(8D900006): LDR SB, MT, MOD9 [Texts] |
0555 | y(41D80003): ADD R1, SB, VAR3 |
| ENDz |
0556 | z .FIXUP P |
0556 | z(F7916005): BL MOD9 [Texts] PROC22 |
0557 | z(E7FFFFA4): B -92 [04FCH] |
| ENDa RenameFiles; |
0558 | a(8FE00000): LDR LNK, SP, 0H |
0559 | a(4EE8009C): ADD SP, SP, 9CH |
055A | a(C700000F): B LNK |
| |
| PROCEDURE DeleteFiles*; |
| VAR res: INTEGER; S: Texts.Scanner; |
| BEGINb GetArg(S)c;d |
055B | b .PROC 19 |
055B | b .COMMAND DeleteFiles |
055B | b(4EE9007C): SUB SP, SP, 7CH |
055C | b(AFE00000): STR LNK, SP, 0H |
055D | c(40E80008): ADD R0, SP, 8H |
055E | c .FIXUP D |
055E | c(8D90000A): LDR SB, MT, MOD9 [Texts] |
055F | c(41D80003): ADD R1, SB, VAR3 |
0560 | d(F7FFFA9F): BL -1377 [0000H] |
| Texts.WriteString(W,e "System.DeleteFiles")f;g EndLine;h |
0561 | e .FIXUP D |
0561 | e(8D000003): LDR SB, MT, MOD0 [System] |
0562 | e(40D80000): ADD R0, SB, 0H [data] |
0563 | e .FIXUP D |
0563 | e(8D900002): LDR SB, MT, MOD9 [Texts] |
0564 | e(41D80005): ADD R1, SB, VAR5 |
0565 | f .FIXUP D |
0565 | f(8D000002): LDR SB, MT, MOD0 [System] |
0566 | f(42D80180): ADD R2, SB, 180H ["System.DeleteFiles"] |
0567 | f(43000013): MOV R3, R0, 13H |
0568 | g .FIXUP P |
0568 | g(F791D012): BL MOD9 [Texts] PROC29 |
0569 | h(F7FFFAC1): BL -1343 [002BH] |
| WHILE S.class = Texts.Name DOi |
056A | i(80E00044): LDR R0, SP, 44H |
056B | i(40090001): SUB R0, R0, 1H |
056C | i(E9000023): BNE 35 [0590H] |
| Texts.WriteString(W,j S.s)k;l Texts.WriteString(W,m " deleting")n;o |
056D | j .FIXUP D |
056D | j(8D000008): LDR SB, MT, MOD0 [System] |
056E | j(40D80000): ADD R0, SB, 0H [data] |
056F | j .FIXUP D |
056F | j(8D900002): LDR SB, MT, MOD9 [Texts] |
0570 | j(41D80005): ADD R1, SB, VAR5 |
0571 | k(42E8005C): ADD R2, SP, 5CH |
0572 | k(43000020): MOV R3, R0, 20H |
0573 | l .FIXUP P |
0573 | l(F791D00B): BL MOD9 [Texts] PROC29 |
0574 | m .FIXUP D |
0574 | m(8D000005): LDR SB, MT, MOD0 [System] |
0575 | m(40D80000): ADD R0, SB, 0H [data] |
0576 | m .FIXUP D |
0576 | m(8D900002): LDR SB, MT, MOD9 [Texts] |
0577 | m(41D80005): ADD R1, SB, VAR5 |
0578 | n .FIXUP D |
0578 | n(8D000002): LDR SB, MT, MOD0 [System] |
0579 | n(42D80194): ADD R2, SB, 194H [" deleting"] |
057A | n(4300000A): MOV R3, R0, AH |
057B | o .FIXUP P |
057B | o(F791D008): BL MOD9 [Texts] PROC29 |
| Files.Delete(S.s,p res)q;r |
057C | p(40E8005C): ADD R0, SP, 5CH |
057D | p(41000020): MOV R1, R0, 20H |
057E | q(42E80004): ADD R2, SP, 4H |
057F | r .FIXUP P |
057F | r(F7307004): BL MOD3 [Files] PROC7 |
| IF res # 0 THENs Texts.WriteString(W,t " failed")u ENDv; |
0580 | s(80E00004): LDR R0, SP, 4H |
0581 | s(E1000008): BEQ 8 [058AH] |
0582 | t .FIXUP D |
0582 | t(8D00000A): LDR SB, MT, MOD0 [System] |
0583 | t(40D80000): ADD R0, SB, 0H [data] |
0584 | t .FIXUP D |
0584 | t(8D900002): LDR SB, MT, MOD9 [Texts] |
0585 | t(41D80005): ADD R1, SB, VAR5 |
0586 | u .FIXUP D |
0586 | u(8D000002): LDR SB, MT, MOD0 [System] |
0587 | u(42D801A0): ADD R2, SB, 1A0H [" failed"] |
0588 | u(43000008): MOV R3, R0, 8H |
0589 | v .FIXUP P |
0589 | v(F791D00A): BL MOD9 [Texts] PROC29 |
| EndLine;w Texts.Scan(S)x |
058A | w(F7FFFAA0): BL -1376 [002BH] |
058B | x(40E80008): ADD R0, SP, 8H |
058C | x .FIXUP D |
058C | x(8D900006): LDR SB, MT, MOD9 [Texts] |
058D | x(41D80003): ADD R1, SB, VAR3 |
| ENDy |
058E | y .FIXUP P |
058E | y(F7916005): BL MOD9 [Texts] PROC22 |
058F | y(E7FFFFDA): B -38 [056AH] |
| ENDz DeleteFiles; |
0590 | z(8FE00000): LDR LNK, SP, 0H |
0591 | z(4EE8007C): ADD SP, SP, 7CH |
0592 | z(C700000F): B LNK |
| |
| (* ------------- Toolbox for system inspection ---------------*) |
| |
| PROCEDURE Watch*; |
| BEGINa Texts.WriteString(W,b "System.Watch")c;d Texts.WriteLn(W)e;f |
0593 | a .PROC 20 |
0593 | a .COMMAND Watch |
0593 | a(4EE90004): SUB SP, SP, 4H |
0594 | a(AFE00000): STR LNK, SP, 0H |
0595 | b .FIXUP D |
0595 | b(8D000009): LDR SB, MT, MOD0 [System] |
0596 | b(40D80000): ADD R0, SB, 0H [data] |
0597 | b .FIXUP D |
0597 | b(8D900002): LDR SB, MT, MOD9 [Texts] |
0598 | b(41D80005): ADD R1, SB, VAR5 |
0599 | c .FIXUP D |
0599 | c(8D000002): LDR SB, MT, MOD0 [System] |
059A | c(42D801A8): ADD R2, SB, 1A8H ["System.Watch"] |
059B | c(4300000D): MOV R3, R0, DH |
059C | d .FIXUP P |
059C | d(F791D00E): BL MOD9 [Texts] PROC29 |
059D | e .FIXUP D |
059D | e(8D000004): LDR SB, MT, MOD0 [System] |
059E | e(40D80000): ADD R0, SB, 0H [data] |
059F | e .FIXUP D |
059F | e(8D900002): LDR SB, MT, MOD9 [Texts] |
05A0 | e(41D80005): ADD R1, SB, VAR5 |
05A1 | f .FIXUP P |
05A1 | f(F791C005): BL MOD9 [Texts] PROC28 |
| Texts.WriteString(W,g " Modules space (bytes)")h;i Texts.WriteInt(W,j Modules.AllocPtr,k 8)l;m |
05A2 | g .FIXUP D |
05A2 | g(8D000003): LDR SB, MT, MOD0 [System] |
05A3 | g(40D80000): ADD R0, SB, 0H [data] |
05A4 | g .FIXUP D |
05A4 | g(8D900002): LDR SB, MT, MOD9 [Texts] |
05A5 | g(41D80005): ADD R1, SB, VAR5 |
05A6 | h .FIXUP D |
05A6 | h(8D000002): LDR SB, MT, MOD0 [System] |
05A7 | h(42D801B8): ADD R2, SB, 1B8H [" Modules space (bytes)"] |
05A8 | h(43000018): MOV R3, R0, 18H |
05A9 | i .FIXUP P |
05A9 | i(F791D008): BL MOD9 [Texts] PROC29 |
05AA | j .FIXUP D |
05AA | j(8D000004): LDR SB, MT, MOD0 [System] |
05AB | j(40D80000): ADD R0, SB, 0H [data] |
05AC | j .FIXUP D |
05AC | j(8D900002): LDR SB, MT, MOD9 [Texts] |
05AD | j(41D80005): ADD R1, SB, VAR5 |
05AE | k .FIXUP D |
05AE | k(8D400002): LDR SB, MT, MOD4 [Modules] |
05AF | k(82D00004): LDR R2, SB, VAR4 |
05B0 | l(43000008): MOV R3, R0, 8H |
05B1 | m .FIXUP P |
05B1 | m(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 |
05B2 | n .FIXUP D |
05B2 | n(8D000004): LDR SB, MT, MOD0 [System] |
05B3 | n(40D80000): ADD R0, SB, 0H [data] |
05B4 | n .FIXUP D |
05B4 | n(8D900002): LDR SB, MT, MOD9 [Texts] |
05B5 | n(41D80005): ADD R1, SB, VAR5 |
05B6 | o .FIXUP D |
05B6 | o(8D400002): LDR SB, MT, MOD4 [Modules] |
05B7 | o(82D00004): LDR R2, SB, VAR4 |
05B8 | o(422A0064): MUL R2, R2, 64H |
05B9 | p .FIXUP D |
05B9 | p(8D100003): LDR SB, MT, MOD1 [Kernel] |
05BA | p(83D00003): LDR R3, SB, VAR3 |
05BB | p(D628906C): BLLE MT [trap=6, pos=10384] |
05BC | p(022B0003): DIV R2, R2, R3 |
05BD | q(43000004): MOV R3, R0, 4H |
05BE | r .FIXUP P |
05BE | r(F791E00D): BL MOD9 [Texts] PROC30 |
05BF | s .FIXUP D |
05BF | s(8D000006): LDR SB, MT, MOD0 [System] |
05C0 | s(40D80000): ADD R0, SB, 0H [data] |
05C1 | s .FIXUP D |
05C1 | s(8D900002): LDR SB, MT, MOD9 [Texts] |
05C2 | s(41D80005): ADD R1, SB, VAR5 |
05C3 | t(42000025): MOV R2, R0, 25H |
05C4 | u .FIXUP P |
05C4 | u(F791B006): BL MOD9 [Texts] PROC27 |
05C5 | v(F7FFFA65): BL -1435 [002BH] |
| Texts.WriteString(W,w " Heap speace")x;y Texts.WriteInt(W,z Kernel.allocated,a 8)b;c |
05C6 | w .FIXUP D |
05C6 | w(8D000005): LDR SB, MT, MOD0 [System] |
05C7 | w(40D80000): ADD R0, SB, 0H [data] |
05C8 | w .FIXUP D |
05C8 | w(8D900002): LDR SB, MT, MOD9 [Texts] |
05C9 | w(41D80005): ADD R1, SB, VAR5 |
05CA | x .FIXUP D |
05CA | x(8D000002): LDR SB, MT, MOD0 [System] |
05CB | x(42D801D0): ADD R2, SB, 1D0H [" Heap speace"] |
05CC | x(4300000E): MOV R3, R0, EH |
05CD | y .FIXUP P |
05CD | y(F791D009): BL MOD9 [Texts] PROC29 |
05CE | z .FIXUP D |
05CE | z(8D000004): LDR SB, MT, MOD0 [System] |
05CF | z(40D80000): ADD R0, SB, 0H [data] |
05D0 | z .FIXUP D |
05D0 | z(8D900002): LDR SB, MT, MOD9 [Texts] |
05D1 | z(41D80005): ADD R1, SB, VAR5 |
05D2 | a .FIXUP D |
05D2 | a(8D100002): LDR SB, MT, MOD1 [Kernel] |
05D3 | a(82D00001): LDR R2, SB, VAR1 |
05D4 | b(43000008): MOV R3, R0, 8H |
05D5 | c .FIXUP P |
05D5 | c(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 |
05D6 | d .FIXUP D |
05D6 | d(8D000004): LDR SB, MT, MOD0 [System] |
05D7 | d(40D80000): ADD R0, SB, 0H [data] |
05D8 | d .FIXUP D |
05D8 | d(8D900002): LDR SB, MT, MOD9 [Texts] |
05D9 | d(41D80005): ADD R1, SB, VAR5 |
05DA | e .FIXUP D |
05DA | e(8D100002): LDR SB, MT, MOD1 [Kernel] |
05DB | e(82D00001): LDR R2, SB, VAR1 |
05DC | e(422A0064): MUL R2, R2, 64H |
05DD | f .FIXUP D |
05DD | f(8D100003): LDR SB, MT, MOD1 [Kernel] |
05DE | f(83D00004): LDR R3, SB, VAR4 |
05DF | f .FIXUP D |
05DF | f(8D100002): LDR SB, MT, MOD1 [Kernel] |
05E0 | f(84D00003): LDR R4, SB, VAR3 |
05E1 | f(03390004): SUB R3, R3, R4 |
05E2 | g(D629596C): BLLE MT [trap=6, pos=10585] |
05E3 | g(022B0003): DIV R2, R2, R3 |
05E4 | h(43000004): MOV R3, R0, 4H |
05E5 | i .FIXUP P |
05E5 | i(F791E010): BL MOD9 [Texts] PROC30 |
05E6 | j .FIXUP D |
05E6 | j(8D000007): LDR SB, MT, MOD0 [System] |
05E7 | j(40D80000): ADD R0, SB, 0H [data] |
05E8 | j .FIXUP D |
05E8 | j(8D900002): LDR SB, MT, MOD9 [Texts] |
05E9 | j(41D80005): ADD R1, SB, VAR5 |
05EA | k(42000025): MOV R2, R0, 25H |
05EB | l .FIXUP P |
05EB | l(F791B006): BL MOD9 [Texts] PROC27 |
05EC | m(F7FFFA3E): BL -1474 [002BH] |
| Texts.WriteString(W,n " Disk sectors ")o;p Texts.WriteInt(W,q Kernel.NofSectors,r 4)s;t |
05ED | n .FIXUP D |
05ED | n(8D000005): LDR SB, MT, MOD0 [System] |
05EE | n(40D80000): ADD R0, SB, 0H [data] |
05EF | n .FIXUP D |
05EF | n(8D900002): LDR SB, MT, MOD9 [Texts] |
05F0 | n(41D80005): ADD R1, SB, VAR5 |
05F1 | o .FIXUP D |
05F1 | o(8D000002): LDR SB, MT, MOD0 [System] |
05F2 | o(42D801E0): ADD R2, SB, 1E0H [" Disk sectors "] |
05F3 | o(43000010): MOV R3, R0, 10H |
05F4 | p .FIXUP P |
05F4 | p(F791D009): BL MOD9 [Texts] PROC29 |
05F5 | q .FIXUP D |
05F5 | q(8D000004): LDR SB, MT, MOD0 [System] |
05F6 | q(40D80000): ADD R0, SB, 0H [data] |
05F7 | q .FIXUP D |
05F7 | q(8D900002): LDR SB, MT, MOD9 [Texts] |
05F8 | q(41D80005): ADD R1, SB, VAR5 |
05F9 | r .FIXUP D |
05F9 | r(8D100002): LDR SB, MT, MOD1 [Kernel] |
05FA | r(82D00002): LDR R2, SB, VAR2 |
05FB | s(43000004): MOV R3, R0, 4H |
05FC | t .FIXUP P |
05FC | t(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 |
05FD | u .FIXUP D |
05FD | u(8D000004): LDR SB, MT, MOD0 [System] |
05FE | u(40D80000): ADD R0, SB, 0H [data] |
05FF | u .FIXUP D |
05FF | u(8D900002): LDR SB, MT, MOD9 [Texts] |
0600 | u(41D80005): ADD R1, SB, VAR5 |
0601 | v .FIXUP D |
0601 | v(8D100002): LDR SB, MT, MOD1 [Kernel] |
0602 | v(82D00002): LDR R2, SB, VAR2 |
0603 | v(422A0064): MUL R2, R2, 64H |
0604 | w(42220010): ASR R2, R2, 10H |
0605 | x(43000004): MOV R3, R0, 4H |
0606 | y .FIXUP P |
0606 | y(F791E00A): BL MOD9 [Texts] PROC30 |
0607 | z .FIXUP D |
0607 | z(8D000006): LDR SB, MT, MOD0 [System] |
0608 | z(40D80000): ADD R0, SB, 0H [data] |
0609 | z .FIXUP D |
0609 | z(8D900002): LDR SB, MT, MOD9 [Texts] |
060A | z(41D80005): ADD R1, SB, VAR5 |
060B | a(42000025): MOV R2, R0, 25H |
060C | b .FIXUP P |
060C | b(F791B006): BL MOD9 [Texts] PROC27 |
060D | c(F7FFFA1D): BL -1507 [002BH] |
| Texts.WriteString(W,d " Tasks")e;f Texts.WriteInt(W,g Oberon.NofTasks,h 4)i;j EndLine |
060E | d .FIXUP D |
060E | d(8D000005): LDR SB, MT, MOD0 [System] |
060F | d(40D80000): ADD R0, SB, 0H [data] |
0610 | d .FIXUP D |
0610 | d(8D900002): LDR SB, MT, MOD9 [Texts] |
0611 | d(41D80005): ADD R1, SB, VAR5 |
0612 | e .FIXUP D |
0612 | e(8D000002): LDR SB, MT, MOD0 [System] |
0613 | e(42D801F0): ADD R2, SB, 1F0H [" Tasks"] |
0614 | e(43000008): MOV R3, R0, 8H |
0615 | f .FIXUP P |
0615 | f(F791D009): BL MOD9 [Texts] PROC29 |
0616 | g .FIXUP D |
0616 | g(8D000004): LDR SB, MT, MOD0 [System] |
0617 | g(40D80000): ADD R0, SB, 0H [data] |
0618 | g .FIXUP D |
0618 | g(8D900002): LDR SB, MT, MOD9 [Texts] |
0619 | g(41D80005): ADD R1, SB, VAR5 |
061A | h .FIXUP D |
061A | h(8DA00002): LDR SB, MT, MOD10 [Oberon] |
061B | h(82D00012): LDR R2, SB, VAR18 |
061C | i(43000004): MOV R3, R0, 4H |
061D | j .FIXUP P |
061D | j(F791E008): BL MOD9 [Texts] PROC30 |
| ENDk Watch; |
061E | k(F7FFFA0C): BL -1524 [002BH] |
061F | k(8FE00000): LDR LNK, SP, 0H |
0620 | k(4EE80004): ADD SP, SP, 4H |
0621 | k(C700000F): B LNK |
| |
| PROCEDURE ShowModules*; |
| VAR T: Texts.Text; |
| V: Viewers.Viewer; |
| M: Modules.Module; |
| X, Y: INTEGER; |
| BEGINl T := TextFrames.Text("")m;n |
0622 | l .PROC 21 |
0622 | l .COMMAND ShowModules |
0622 | l(4EE90018): SUB SP, SP, 18H |
0623 | l(AFE00000): STR LNK, SP, 0H |
0624 | m .FIXUP D |
0624 | m(8D00000A): LDR SB, MT, MOD0 [System] |
0625 | m(40D801F8): ADD R0, SB, 1F8H [""] |
0626 | m(41000001): MOV R1, R0, 1H |
0627 | n .FIXUP P |
0627 | n(F7C2B00A): BL MOD12 [TextFrames] PROC43 |
0628 | n(A0E00004): STR R0, SP, 4H |
| Oberon.AllocateSystemViewer(Oberon.Par.vwr.oXp,q X,r Y)s;t |
0629 | o .FIXUP D |
0629 | o(8DA00005): LDR SB, MT, MOD10 [Oberon] |
062A | o(40D8000E): ADD R0, SB, VAR14 |
062B | p(80000000): LDR R0, R0, 0H |
062C | p(D12B5A4C): BLEQ MT [trap=4, pos=11098] |
062D | q(80000008): LDR R0, R0, 8H |
062E | r(41E80010): ADD R1, SP, 10H |
062F | s(42E80014): ADD R2, SP, 14H |
0630 | t .FIXUP P |
0630 | t(F7A23009): BL MOD10 [Oberon] PROC35 |
| V := MenuViewers.New(TextFrames.NewMenu("System.ShowModules",u StandardMenu)v,w |
0631 | u .FIXUP D |
0631 | u(8D000008): LDR SB, MT, MOD0 [System] |
0632 | u(40D801FC): ADD R0, SB, 1FCH ["System.ShowModules"] |
0633 | u(41000013): MOV R1, R0, 13H |
0634 | v(42D80048): ADD R2, SB, 48H |
0635 | v(4300003C): MOV R3, R0, 3CH |
0636 | w .FIXUP P |
0636 | w(F7C2C006): BL MOD12 [TextFrames] PROC44 |
| TextFrames.NewText(Tx,y 0)z,a TextFrames.menuH,b X,c Y)d;e |
0637 | x(4EE90004): SUB SP, SP, 4H |
0638 | x(A0E00000): STR R0, SP, 0H |
0639 | y(80E00008): LDR R0, SP, 8H |
063A | z(41000000): MOV R1, R0, 0H |
063B | a .FIXUP P |
063B | a(F7C2D005): BL MOD12 [TextFrames] PROC45 |
063C | a(01000000): MOV R1, R0, R0 |
063D | a(80E00000): LDR R0, SP, 0H |
063E | a(4EE80004): ADD SP, SP, 4H |
063F | b .FIXUP D |
063F | b(8DC0000E): LDR SB, MT, MOD12 [TextFrames] |
0640 | b(82D00005): LDR R2, SB, VAR5 |
0641 | c(83E00010): LDR R3, SP, 10H |
0642 | d(84E00014): LDR R4, SP, 14H |
0643 | e .FIXUP P |
0643 | e(F7B04008): BL MOD11 [MenuViewers] PROC4 |
0644 | e(A0E00008): STR R0, SP, 8H |
| M := Modules.root;f |
0645 | f .FIXUP D |
0645 | f(8D400006): LDR SB, MT, MOD4 [Modules] |
0646 | f(80D00002): LDR R0, SB, VAR2 |
0647 | f(A0E0000C): STR R0, SP, CH |
| WHILE M # NIL DOg |
0648 | g(80E0000C): LDR R0, SP, CH |
0649 | g(E100003C): BEQ 60 [0686H] |
| IF M.nameh[0] # 0X THENi |
064A | h(80E0000C): LDR R0, SP, CH |
064B | h(D12C2A4C): BLEQ MT [trap=4, pos=11306] |
064C | i(90000000): LDR R0, R0, 0H |
064D | i(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 |
064E | j .FIXUP D |
064E | j(8D000009): LDR SB, MT, MOD0 [System] |
064F | j(40D80000): ADD R0, SB, 0H [data] |
0650 | j .FIXUP D |
0650 | j(8D900002): LDR SB, MT, MOD9 [Texts] |
0651 | j(41D80005): ADD R1, SB, VAR5 |
0652 | k(82E0000C): LDR R2, SP, CH |
0653 | k(D12C5B4C): BLEQ MT [trap=4, pos=11355] |
0654 | l(43000020): MOV R3, R0, 20H |
0655 | m .FIXUP P |
0655 | m(F791D012): BL MOD9 [Texts] PROC29 |
0656 | n .FIXUP D |
0656 | n(8D000006): LDR SB, MT, MOD0 [System] |
0657 | n(40D80000): ADD R0, SB, 0H [data] |
0658 | n .FIXUP D |
0658 | n(8D900002): LDR SB, MT, MOD9 [Texts] |
0659 | n(41D80005): ADD R1, SB, VAR5 |
065A | o(42000009): MOV R2, R0, 9H |
065B | p .FIXUP P |
065B | p(F791B006): BL MOD9 [Texts] PROC27 |
065C | q .FIXUP D |
065C | q(8D000004): LDR SB, MT, MOD0 [System] |
065D | q(40D80000): ADD R0, SB, 0H [data] |
065E | q .FIXUP D |
065E | q(8D900002): LDR SB, MT, MOD9 [Texts] |
065F | q(41D80005): ADD R1, SB, VAR5 |
0660 | r(82E0000C): LDR R2, SP, CH |
0661 | s .FIXUP P |
0661 | s(F791F006): BL MOD9 [Texts] PROC31 |
| Texts.WriteHex(W,t M.codeu)v;w Texts.WriteInt(W,x M.refcnty,z 4)a |
0662 | t .FIXUP D |
0662 | t(8D000004): LDR SB, MT, MOD0 [System] |
0663 | t(40D80000): ADD R0, SB, 0H [data] |
0664 | t .FIXUP D |
0664 | t(8D900002): LDR SB, MT, MOD9 [Texts] |
0665 | t(41D80005): ADD R1, SB, VAR5 |
0666 | u(82E0000C): LDR R2, SP, CH |
0667 | u(D12CAD4C): BLEQ MT [trap=4, pos=11437] |
0668 | v(82200038): LDR R2, R2, 38H |
0669 | w .FIXUP P |
0669 | w(F791F008): BL MOD9 [Texts] PROC31 |
066A | x .FIXUP D |
066A | x(8D000006): LDR SB, MT, MOD0 [System] |
066B | x(40D80000): ADD R0, SB, 0H [data] |
066C | x .FIXUP D |
066C | x(8D900002): LDR SB, MT, MOD9 [Texts] |
066D | x(41D80005): ADD R1, SB, VAR5 |
066E | y(82E0000C): LDR R2, SP, CH |
066F | y(D12CCA4C): BLEQ MT [trap=4, pos=11466] |
0670 | z(82200030): LDR R2, R2, 30H |
0671 | a(43000004): MOV R3, R0, 4H |
| ELSEb Textsc.WriteString(W,d "---")e |
0672 | b .FIXUP P |
0672 | b(F791E009): BL MOD9 [Texts] PROC30 |
0673 | c(E7000008): B 8 [067CH] |
0674 | d .FIXUP D |
0674 | d(8D000008): LDR SB, MT, MOD0 [System] |
0675 | d(40D80000): ADD R0, SB, 0H [data] |
0676 | d .FIXUP D |
0676 | d(8D900002): LDR SB, MT, MOD9 [Texts] |
0677 | d(41D80005): ADD R1, SB, VAR5 |
0678 | e .FIXUP D |
0678 | e(8D000002): LDR SB, MT, MOD0 [System] |
0679 | e(42D80210): ADD R2, SB, 210H ["---"] |
067A | e(43000004): MOV R3, R0, 4H |
| ENDf ; |
067B | f .FIXUP P |
067B | f(F791D009): BL MOD9 [Texts] PROC29 |
| Texts.WriteLn(W)g;h M := M.nexti |
067C | g .FIXUP D |
067C | g(8D000004): LDR SB, MT, MOD0 [System] |
067D | g(40D80000): ADD R0, SB, 0H [data] |
067E | g .FIXUP D |
067E | g(8D900002): LDR SB, MT, MOD9 [Texts] |
067F | g(41D80005): ADD R1, SB, VAR5 |
0680 | h .FIXUP P |
0680 | h(F791C005): BL MOD9 [Texts] PROC28 |
0681 | i(80E0000C): LDR R0, SP, CH |
0682 | i(D12D254C): BLEQ MT [trap=4, pos=11557] |
| ENDj; |
0683 | j(80000020): LDR R0, R0, 20H |
0684 | j(A0E0000C): STR R0, SP, CH |
0685 | j(E7FFFFC2): B -62 [0648H] |
| Texts.Append(T,k W.buf)l |
0686 | k(80E00004): LDR R0, SP, 4H |
0687 | l .FIXUP D |
0687 | l(8D000009): LDR SB, MT, MOD0 [System] |
0688 | l(81D00000): LDR R1, SB, 0H [data] |
| ENDm ShowModules; |
0689 | m .FIXUP P |
0689 | m(F790E009): BL MOD9 [Texts] PROC14 |
068A | m(8FE00000): LDR LNK, SP, 0H |
068B | m(4EE80018): ADD SP, SP, 18H |
068C | m(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 |
068D | n .PROC 22 |
068D | n .COMMAND ShowCommands |
068D | n(4EE90094): SUB SP, SP, 94H |
068E | n(AFE00000): STR LNK, SP, 0H |
068F | o(40E80014): ADD R0, SP, 14H |
0690 | o .FIXUP D |
0690 | o(8D900009): LDR SB, MT, MOD9 [Texts] |
0691 | o(41D80003): ADD R1, SB, VAR3 |
0692 | p(F7FFF96D): BL -1683 [0000H] |
| IF S.class = Texts.Name THENq |
0693 | q(80E00050): LDR R0, SP, 50H |
0694 | q(40090001): SUB R0, R0, 1H |
0695 | q(E9000069): BNE 105 [06FFH] |
| Modules.Load(S.s,r M)s;t |
0696 | r(40E80068): ADD R0, SP, 68H |
0697 | r(41000020): MOV R1, R0, 20H |
0698 | s(42E80004): ADD R2, SP, 4H |
0699 | t .FIXUP P |
0699 | t(F7408010): BL MOD4 [Modules] PROC8 |
| IF M # NIL THENu |
069A | u(80E00004): LDR R0, SP, 4H |
069B | u(E1000063): BEQ 99 [06FFH] |
| Oberon.AllocateSystemViewer(Oberon.Par.vwr.vXw,x X,y Y)z;a T := TextFrames.Text("")b;c |
069C | v .FIXUP D |
069C | v(8DA0000C): LDR SB, MT, MOD10 [Oberon] |
069D | v(40D8000E): ADD R0, SB, VAR14 |
069E | w(80000000): LDR R0, R0, 0H |
069F | w(D12EAA4C): BLEQ MT [trap=4, pos=11946] |
06A0 | x(80000008): LDR R0, R0, 8H |
06A1 | y(41E8008C): ADD R1, SP, 8CH |
06A2 | z(42E80090): ADD R2, SP, 90H |
06A3 | a .FIXUP P |
06A3 | a(F7A2300A): BL MOD10 [Oberon] PROC35 |
06A4 | b .FIXUP D |
06A4 | b(8D000008): LDR SB, MT, MOD0 [System] |
06A5 | b(40D80214): ADD R0, SB, 214H [""] |
06A6 | b(41000001): MOV R1, R0, 1H |
06A7 | c .FIXUP P |
06A7 | c(F7C2B004): BL MOD12 [TextFrames] PROC43 |
06A8 | c(A0E00010): STR R0, SP, 10H |
| V := MenuViewers.New(TextFrames.NewMenu("System.Commands",d StandardMenu)e,f |
06A9 | d .FIXUP D |
06A9 | d(8D000005): LDR SB, MT, MOD0 [System] |
06AA | d(40D80218): ADD R0, SB, 218H ["System.Commands"] |
06AB | d(41000010): MOV R1, R0, 10H |
06AC | e(42D80048): ADD R2, SB, 48H |
06AD | e(4300003C): MOV R3, R0, 3CH |
06AE | f .FIXUP P |
06AE | f(F7C2C007): BL MOD12 [TextFrames] PROC44 |
| TextFrames.NewText(Tg,h 0)i,j TextFrames.menuH,k X,l Y)m;n |
06AF | g(4EE90004): SUB SP, SP, 4H |
06B0 | g(A0E00000): STR R0, SP, 0H |
06B1 | h(80E00014): LDR R0, SP, 14H |
06B2 | i(41000000): MOV R1, R0, 0H |
06B3 | j .FIXUP P |
06B3 | j(F7C2D005): BL MOD12 [TextFrames] PROC45 |
06B4 | j(01000000): MOV R1, R0, R0 |
06B5 | j(80E00000): LDR R0, SP, 0H |
06B6 | j(4EE80004): ADD SP, SP, 4H |
06B7 | k .FIXUP D |
06B7 | k(8DC0000E): LDR SB, MT, MOD12 [TextFrames] |
06B8 | k(82D00005): LDR R2, SB, VAR5 |
06B9 | l(83E0008C): LDR R3, SP, 8CH |
06BA | m(84E00090): LDR R4, SP, 90H |
06BB | n .FIXUP P |
06BB | n(F7B04008): BL MOD11 [MenuViewers] PROC4 |
06BC | n(A0E00088): STR R0, SP, 88H |
| comadr := M.cmdo;p SYSTEM.GET(comadr, ch);q INC(comadr);r |
06BD | o(80E00004): LDR R0, SP, 4H |
06BE | o(D12F754C): BLEQ MT [trap=4, pos=12149] |
06BF | p(80000040): LDR R0, R0, 40H |
06C0 | p(A0E00008): STR R0, SP, 8H |
06C1 | q(80E00008): LDR R0, SP, 8H |
06C2 | q(90000000): LDR R0, R0, 0H |
06C3 | q(B0E0000C): STR R0, SP, CH |
06C4 | r(80E00008): LDR R0, SP, 8H |
06C5 | r(40080001): ADD R0, R0, 1H |
06C6 | r(A0E00008): STR R0, SP, 8H |
| WHILE ch # 0X DOs |
06C7 | s(90E0000C): LDR R0, SP, CH |
06C8 | s(E1000032): BEQ 50 [06FBH] |
| Texts.WriteString(W,t S.s)u;v Texts.Write(W,w ".")x;y |
06C9 | t .FIXUP D |
06C9 | t(8D000012): LDR SB, MT, MOD0 [System] |
06CA | t(40D80000): ADD R0, SB, 0H [data] |
06CB | t .FIXUP D |
06CB | t(8D900002): LDR SB, MT, MOD9 [Texts] |
06CC | t(41D80005): ADD R1, SB, VAR5 |
06CD | u(42E80068): ADD R2, SP, 68H |
06CE | u(43000020): MOV R3, R0, 20H |
06CF | v .FIXUP P |
06CF | v(F791D014): BL MOD9 [Texts] PROC29 |
06D0 | w .FIXUP D |
06D0 | w(8D000005): LDR SB, MT, MOD0 [System] |
06D1 | w(40D80000): ADD R0, SB, 0H [data] |
06D2 | w .FIXUP D |
06D2 | w(8D900002): LDR SB, MT, MOD9 [Texts] |
06D3 | w(41D80005): ADD R1, SB, VAR5 |
06D4 | x(4200002E): MOV R2, R0, 2EH |
06D5 | y .FIXUP P |
06D5 | y(F791B006): BL MOD9 [Texts] PROC27 |
| REPEAT Texts.Write(W,z ch)a;b SYSTEM.GET(comadr, ch);c INC(comadr) |
06D6 | z .FIXUP D |
06D6 | z(8D000004): LDR SB, MT, MOD0 [System] |
06D7 | z(40D80000): ADD R0, SB, 0H [data] |
06D8 | z .FIXUP D |
06D8 | z(8D900002): LDR SB, MT, MOD9 [Texts] |
06D9 | z(41D80005): ADD R1, SB, VAR5 |
06DA | a(92E0000C): LDR R2, SP, CH |
06DB | b .FIXUP P |
06DB | b(F791B006): BL MOD9 [Texts] PROC27 |
06DC | c(80E00008): LDR R0, SP, 8H |
06DD | c(90000000): LDR R0, R0, 0H |
06DE | c(B0E0000C): STR R0, SP, CH |
| UNTILd ch = 0X;e |
06DF | d(80E00008): LDR R0, SP, 8H |
06E0 | d(40080001): ADD R0, R0, 1H |
06E1 | d(A0E00008): STR R0, SP, 8H |
06E2 | e(90E0000C): LDR R0, SP, CH |
06E3 | e(E9FFFFF2): BNE -14 [06D6H] |
| WHILE comadr MOD 4 #f 0 DOg INC(comadr) ENDh ; |
06E4 | f(80E00008): LDR R0, SP, 8H |
06E5 | f(40040003): AND R0, R0, 3H |
06E6 | g(40090000): SUB R0, R0, 0H |
06E7 | g(E1000004): BEQ 4 [06ECH] |
06E8 | h(80E00008): LDR R0, SP, 8H |
06E9 | h(40080001): ADD R0, R0, 1H |
06EA | h(A0E00008): STR R0, SP, 8H |
06EB | h(E7FFFFF8): B -8 [06E4H] |
| Texts.WriteLn(W)i;j INC(comadr, 4);k SYSTEM.GET(comadr, ch);l INC(comadr) |
06EC | i .FIXUP D |
06EC | i(8D000014): LDR SB, MT, MOD0 [System] |
06ED | i(40D80000): ADD R0, SB, 0H [data] |
06EE | i .FIXUP D |
06EE | i(8D900002): LDR SB, MT, MOD9 [Texts] |
06EF | i(41D80005): ADD R1, SB, VAR5 |
06F0 | j .FIXUP P |
06F0 | j(F791C015): BL MOD9 [Texts] PROC28 |
06F1 | k(80E00008): LDR R0, SP, 8H |
06F2 | k(40080004): ADD R0, R0, 4H |
06F3 | k(A0E00008): STR R0, SP, 8H |
06F4 | l(80E00008): LDR R0, SP, 8H |
06F5 | l(90000000): LDR R0, R0, 0H |
06F6 | l(B0E0000C): STR R0, SP, CH |
| ENDm ; |
06F7 | m(80E00008): LDR R0, SP, 8H |
06F8 | m(40080001): ADD R0, R0, 1H |
06F9 | m(A0E00008): STR R0, SP, 8H |
06FA | m(E7FFFFCC): B -52 [06C7H] |
| Texts.Append(T,n W.buf)o |
06FB | n(80E00010): LDR R0, SP, 10H |
06FC | o .FIXUP D |
06FC | o(8D00000E): LDR SB, MT, MOD0 [System] |
06FD | o(81D00000): LDR R1, SB, 0H [data] |
| ENDp |
06FE | p .FIXUP P |
06FE | p(F790E00E): BL MOD9 [Texts] PROC14 |
| END |
| ENDq ShowCommands; |
06FF | q(8FE00000): LDR LNK, SP, 0H |
0700 | q(4EE80094): ADD SP, SP, 94H |
0701 | q(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 |
0702 | r .PROC 23 |
0702 | r .COMMAND ShowFonts |
0702 | r(4EE90008): SUB SP, SP, 8H |
0703 | r(AFE00000): STR LNK, SP, 0H |
0704 | s .FIXUP D |
0704 | s(8D000008): LDR SB, MT, MOD0 [System] |
0705 | s(40D80000): ADD R0, SB, 0H [data] |
0706 | s .FIXUP D |
0706 | s(8D900002): LDR SB, MT, MOD9 [Texts] |
0707 | s(41D80005): ADD R1, SB, VAR5 |
0708 | t .FIXUP D |
0708 | t(8D000002): LDR SB, MT, MOD0 [System] |
0709 | t(42D80228): ADD R2, SB, 228H ["System.ShowFonts"] |
070A | t(43000011): MOV R3, R0, 11H |
070B | u .FIXUP P |
070B | u(F791D00D): BL MOD9 [Texts] PROC29 |
070C | v .FIXUP D |
070C | v(8D000004): LDR SB, MT, MOD0 [System] |
070D | v(40D80000): ADD R0, SB, 0H [data] |
070E | v .FIXUP D |
070E | v(8D900002): LDR SB, MT, MOD9 [Texts] |
070F | v(41D80005): ADD R1, SB, VAR5 |
0710 | w .FIXUP P |
0710 | w(F791C005): BL MOD9 [Texts] PROC28 |
0711 | x .FIXUP D |
0711 | x(8D800003): LDR SB, MT, MOD8 [Fonts] |
0712 | x(80D00003): LDR R0, SB, VAR3 |
0713 | x(A0E00004): STR R0, SP, 4H |
| WHILE fnt # NIL DOy |
0714 | y(80E00004): LDR R0, SP, 4H |
0715 | y(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 |
0716 | z .FIXUP D |
0716 | z(8D000005): LDR SB, MT, MOD0 [System] |
0717 | z(40D80000): ADD R0, SB, 0H [data] |
0718 | z .FIXUP D |
0718 | z(8D900002): LDR SB, MT, MOD9 [Texts] |
0719 | z(41D80005): ADD R1, SB, VAR5 |
071A | a(42000009): MOV R2, R0, 9H |
071B | b .FIXUP P |
071B | b(F791B00B): BL MOD9 [Texts] PROC27 |
071C | c .FIXUP D |
071C | c(8D000004): LDR SB, MT, MOD0 [System] |
071D | c(40D80000): ADD R0, SB, 0H [data] |
071E | c .FIXUP D |
071E | c(8D900002): LDR SB, MT, MOD9 [Texts] |
071F | c(41D80005): ADD R1, SB, VAR5 |
0720 | d(82E00004): LDR R2, SP, 4H |
0721 | d(D132014C): BLEQ MT [trap=4, pos=12801] |
0722 | e(43000020): MOV R3, R0, 20H |
0723 | f .FIXUP P |
0723 | f(F791D008): BL MOD9 [Texts] PROC29 |
0724 | g .FIXUP D |
0724 | g(8D000006): LDR SB, MT, MOD0 [System] |
0725 | g(40D80000): ADD R0, SB, 0H [data] |
0726 | g .FIXUP D |
0726 | g(8D900002): LDR SB, MT, MOD9 [Texts] |
0727 | g(41D80005): ADD R1, SB, VAR5 |
0728 | h .FIXUP P |
0728 | h(F791C005): BL MOD9 [Texts] PROC28 |
0729 | i(80E00004): LDR R0, SP, 4H |
072A | i(D132254C): BLEQ MT [trap=4, pos=12837] |
| ENDj ; |
072B | j(80000034): LDR R0, R0, 34H |
072C | j(A0E00004): STR R0, SP, 4H |
072D | j(E7FFFFE6): B -26 [0714H] |
| Texts.Append(Oberon.Log,k W.buf)l |
072E | k .FIXUP D |
072E | k(8DA00008): LDR SB, MT, MOD10 [Oberon] |
072F | k(80D0000D): LDR R0, SB, VAR13 |
0730 | l .FIXUP D |
0730 | l(8D000002): LDR SB, MT, MOD0 [System] |
0731 | l(81D00000): LDR R1, SB, 0H [data] |
| ENDm ShowFonts; |
0732 | m .FIXUP P |
0732 | m(F790E00A): BL MOD9 [Texts] PROC14 |
0733 | m(8FE00000): LDR LNK, SP, 0H |
0734 | m(4EE80008): ADD SP, SP, 8H |
0735 | m(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 |
0736 | n(4EE90020): SUB SP, SP, 20H |
0737 | n(AFE00000): STR LNK, SP, 0H |
0738 | o .FIXUP P |
0738 | o(F7112006): BL MOD1 [Kernel] PROC18 |
0739 | o(A0E00014): STR R0, SP, 14H |
073A | p .FIXUP D |
073A | p(8D00000A): LDR SB, MT, MOD0 [System] |
073B | p(40D80000): ADD R0, SB, 0H [data] |
073C | p .FIXUP D |
073C | p(8D900002): LDR SB, MT, MOD9 [Texts] |
073D | p(41D80005): ADD R1, SB, VAR5 |
073E | q .FIXUP D |
073E | q(8D000002): LDR SB, MT, MOD0 [System] |
073F | q(42D8023C): ADD R2, SB, 23CH ["Oberon V5 NW 14.4.2013"] |
0740 | q(43000018): MOV R3, R0, 18H |
0741 | r .FIXUP P |
0741 | r(F791D009): BL MOD9 [Texts] PROC29 |
0742 | s(F7FFF8E8): BL -1816 [002BH] |
| Oberon.AllocateSystemViewer(0,t X,u Y)v;w |
0743 | t(40000000): MOV R0, R0, 0H |
0744 | u(41E80018): ADD R1, SP, 18H |
0745 | v(42E8001C): ADD R2, SP, 1CH |
0746 | w .FIXUP P |
0746 | w(F7A23005): BL MOD10 [Oberon] PROC35 |
| menu := TextFrames.NewMenu("System.Log",x LogMenu)y;z |
0747 | x .FIXUP D |
0747 | x(8D000009): LDR SB, MT, MOD0 [System] |
0748 | x(40D80254): ADD R0, SB, 254H ["System.Log"] |
0749 | x(4100000B): MOV R1, R0, BH |
074A | y(42D80084): ADD R2, SB, 84H |
074B | y(4300003D): MOV R3, R0, 3DH |
074C | z .FIXUP P |
074C | z(F7C2C006): BL MOD12 [TextFrames] PROC44 |
074D | z(A0E0000C): STR R0, SP, CH |
| main := TextFrames.NewText(Oberon.Log,a 0)b;c |
074E | a .FIXUP D |
074E | a(8DA00007): LDR SB, MT, MOD10 [Oberon] |
074F | a(80D0000D): LDR R0, SB, VAR13 |
0750 | b(41000000): MOV R1, R0, 0H |
0751 | c .FIXUP P |
0751 | c(F7C2D005): BL MOD12 [TextFrames] PROC45 |
0752 | c(A0E00010): STR R0, SP, 10H |
| logV := MenuViewers.New(menu,d main,e TextFrames.menuH,f X,g Y)h;i |
0753 | d(80E0000C): LDR R0, SP, CH |
0754 | e(81E00010): LDR R1, SP, 10H |
0755 | f .FIXUP D |
0755 | f(8DC00007): LDR SB, MT, MOD12 [TextFrames] |
0756 | f(82D00005): LDR R2, SB, VAR5 |
0757 | g(83E00018): LDR R3, SP, 18H |
0758 | h(84E0001C): LDR R4, SP, 1CH |
0759 | i .FIXUP P |
0759 | i(F7B04008): BL MOD11 [MenuViewers] PROC4 |
075A | i(A0E00004): STR R0, SP, 4H |
| Oberon.AllocateSystemViewer(0,j X,k Y)l;m |
075B | j(40000000): MOV R0, R0, 0H |
075C | k(41E80018): ADD R1, SP, 18H |
075D | l(42E8001C): ADD R2, SP, 1CH |
075E | m .FIXUP P |
075E | m(F7A23005): BL MOD10 [Oberon] PROC35 |
| menu := TextFrames.NewMenu("System.Tool",n StandardMenu)o;p |
075F | n .FIXUP D |
075F | n(8D00000A): LDR SB, MT, MOD0 [System] |
0760 | n(40D80260): ADD R0, SB, 260H ["System.Tool"] |
0761 | n(4100000C): MOV R1, R0, CH |
0762 | o(42D80048): ADD R2, SB, 48H |
0763 | o(4300003C): MOV R3, R0, 3CH |
0764 | p .FIXUP P |
0764 | p(F7C2C006): BL MOD12 [TextFrames] PROC44 |
0765 | p(A0E0000C): STR R0, SP, CH |
| main := TextFrames.NewText(TextFrames.Text("System.Tool")q,r 0)s;t |
0766 | q .FIXUP D |
0766 | q(8D000007): LDR SB, MT, MOD0 [System] |
0767 | q(40D8026C): ADD R0, SB, 26CH ["System.Tool"] |
0768 | q(4100000C): MOV R1, R0, CH |
0769 | r .FIXUP P |
0769 | r(F7C2B005): BL MOD12 [TextFrames] PROC43 |
076A | s(41000000): MOV R1, R0, 0H |
076B | t .FIXUP P |
076B | t(F7C2D002): BL MOD12 [TextFrames] PROC45 |
076C | t(A0E00010): STR R0, SP, 10H |
| toolV := MenuViewers.New(menu,u main,v TextFrames.menuH,w X,x Y)y |
076D | u(80E0000C): LDR R0, SP, CH |
076E | v(81E00010): LDR R1, SP, 10H |
076F | w .FIXUP D |
076F | w(8DC00009): LDR SB, MT, MOD12 [TextFrames] |
0770 | w(82D00005): LDR R2, SB, VAR5 |
0771 | x(83E00018): LDR R3, SP, 18H |
0772 | y(84E0001C): LDR R4, SP, 1CH |
| ENDz OpenViewers; |
0773 | z .FIXUP P |
0773 | z(F7B04008): BL MOD11 [MenuViewers] PROC4 |
0774 | z(A0E00008): STR R0, SP, 8H |
0775 | z(8FE00000): LDR LNK, SP, 0H |
0776 | z(4EE80020): ADD SP, SP, 20H |
0777 | z(C700000F): B LNK |
| |
| PROCEDURE ExtendDisplay*; |
| VAR V: Viewers.Viewer; |
| X, Y, DX, DW, DH: INTEGER; |
| S: Texts.Scanner; |
| BEGINa GetArg(S)b;c |
0778 | a .PROC 24 |
0778 | a .COMMAND ExtendDisplay |
0778 | a(4EE90090): SUB SP, SP, 90H |
0779 | a(AFE00000): STR LNK, SP, 0H |
077A | b(40E8001C): ADD R0, SP, 1CH |
077B | b .FIXUP D |
077B | b(8D90000C): LDR SB, MT, MOD9 [Texts] |
077C | b(41D80003): ADD R1, SB, VAR3 |
077D | c(F7FFF882): BL -1918 [0000H] |
| IF S.class = Texts.Name THENd |
077E | d(80E00058): LDR R0, SP, 58H |
077F | d(40090001): SUB R0, R0, 1H |
0780 | d(E900002B): BNE 43 [07ACH] |
| DX := Viewers.curW;e DW := Oberon.DisplayWidth(DX)f;g DH := Oberon.DisplayHeight(DX)h;i |
0781 | e .FIXUP D |
0781 | e(8D700006): LDR SB, MT, MOD7 [Viewers] |
0782 | e(80D00003): LDR R0, SB, VAR3 |
0783 | e(A0E00010): STR R0, SP, 10H |
0784 | f(80E00010): LDR R0, SP, 10H |
0785 | g .FIXUP P |
0785 | g(F7A1D012): BL MOD10 [Oberon] PROC29 |
0786 | g(A0E00014): STR R0, SP, 14H |
0787 | h(80E00010): LDR R0, SP, 10H |
0788 | i .FIXUP P |
0788 | i(F7A1E003): BL MOD10 [Oberon] PROC30 |
0789 | i(A0E00018): STR R0, SP, 18H |
| Oberon.OpenDisplay(DW DIV 8 *j 5,k DW DIV 8 *l 3,m DH)n;o |
078A | j(80E00014): LDR R0, SP, 14H |
078B | j(40020003): ASR R0, R0, 3H |
078C | k(400A0005): MUL R0, R0, 5H |
078D | l(81E00014): LDR R1, SP, 14H |
078E | l(41120003): ASR R1, R1, 3H |
078F | m(411A0003): MUL R1, R1, 3H |
0790 | n(82E00018): LDR R2, SP, 18H |
0791 | o .FIXUP P |
0791 | o(F7A1C009): BL MOD10 [Oberon] PROC28 |
| Oberon.AllocateSystemViewer(DX,p X,q Y)r;s |
0792 | p(80E00010): LDR R0, SP, 10H |
0793 | q(41E80008): ADD R1, SP, 8H |
0794 | r(42E8000C): ADD R2, SP, CH |
0795 | s .FIXUP P |
0795 | s(F7A23004): BL MOD10 [Oberon] PROC35 |
| V := MenuViewers.New( |
| TextFrames.NewMenu(S.s,t StandardMenu)u,v |
0796 | t(40E80070): ADD R0, SP, 70H |
0797 | t(41000020): MOV R1, R0, 20H |
0798 | u .FIXUP D |
0798 | u(8D000017): LDR SB, MT, MOD0 [System] |
0799 | u(42D80048): ADD R2, SB, 48H ["System.Close System.Copy System.Grow Edit.Search Edit.Store"] |
079A | u(4300003C): MOV R3, R0, 3CH |
079B | v .FIXUP P |
079B | v(F7C2C006): BL MOD12 [TextFrames] PROC44 |
| TextFrames.NewText(TextFramesw.Text(S.s)x,y 0)z,a |
079C | w(4EE90004): SUB SP, SP, 4H |
079D | w(A0E00000): STR R0, SP, 0H |
079E | x(40E80074): ADD R0, SP, 74H |
079F | x(41000020): MOV R1, R0, 20H |
07A0 | y .FIXUP P |
07A0 | y(F7C2B005): BL MOD12 [TextFrames] PROC43 |
07A1 | z(41000000): MOV R1, R0, 0H |
07A2 | a .FIXUP P |
07A2 | a(F7C2D002): BL MOD12 [TextFrames] PROC45 |
07A3 | a(01000000): MOV R1, R0, R0 |
07A4 | a(80E00000): LDR R0, SP, 0H |
07A5 | a(4EE80004): ADD SP, SP, 4H |
| TextFrames.menuH,b X,c Y)d |
07A6 | b .FIXUP D |
07A6 | b(8DC0000E): LDR SB, MT, MOD12 [TextFrames] |
07A7 | b(82D00005): LDR R2, SB, VAR5 |
07A8 | c(83E00008): LDR R3, SP, 8H |
07A9 | d(84E0000C): LDR R4, SP, CH |
| ENDe |
07AA | e .FIXUP P |
07AA | e(F7B04008): BL MOD11 [MenuViewers] PROC4 |
07AB | e(A0E00004): STR R0, SP, 4H |
| ENDf ExtendDisplay; |
07AC | f(8FE00000): LDR LNK, SP, 0H |
07AD | f(4EE80090): ADD SP, SP, 90H |
07AE | f(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*) |
07AF | g(4EE9001C): SUB SP, SP, 1CH |
07B0 | g(AFE00000): STR LNK, SP, 0H |
07B1 | g(A0E00004): STR R0, SP, 4H |
07B2 | g(A1E00008): STR R1, SP, 8H |
07B3 | h(0000000F): MOV R0, R0, LNK |
07B4 | h(A0E0000C): STR R0, SP, CH |
07B5 | i(80E0000C): LDR R0, SP, CH |
07B6 | i(40090004): SUB R0, R0, 4H |
07B7 | j(80000000): LDR R0, R0, 0H |
07B8 | j(A0E00010): STR R0, SP, 10H |
07B9 | k(80E00010): LDR R0, SP, 10H |
07BA | k(40020004): ASR R0, R0, 4H |
07BB | l(4004000F): AND R0, R0, FH |
07BC | l(A0E00014): STR R0, SP, 14H |
| IF w = 0 THENm Kernel.New(a,n b)o |
07BD | m(80E00014): LDR R0, SP, 14H |
07BE | m(E9000004): BNE 4 [07C3H] |
07BF | n(80E00004): LDR R0, SP, 4H |
07C0 | o(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 |
07C1 | p .FIXUP P |
07C1 | p(F7108017): BL MOD1 [Kernel] PROC8 |
07C2 | q(E7000066): B 102 [0829H] |
07C3 | r .FIXUP D |
07C3 | r(8D00001D): LDR SB, MT, MOD0 [System] |
07C4 | r(40D80000): ADD R0, SB, 0H [data] |
07C5 | r .FIXUP D |
07C5 | r(8D900002): LDR SB, MT, MOD9 [Texts] |
07C6 | r(41D80005): ADD R1, SB, VAR5 |
07C7 | s .FIXUP P |
07C7 | s(F791C006): BL MOD9 [Texts] PROC28 |
07C8 | t .FIXUP D |
07C8 | t(8D000003): LDR SB, MT, MOD0 [System] |
07C9 | t(40D80000): ADD R0, SB, 0H [data] |
07CA | t .FIXUP D |
07CA | t(8D900002): LDR SB, MT, MOD9 [Texts] |
07CB | t(41D80005): ADD R1, SB, VAR5 |
07CC | u .FIXUP D |
07CC | u(8D000002): LDR SB, MT, MOD0 [System] |
07CD | u(42D80278): ADD R2, SB, 278H [" pos "] |
07CE | u(43000007): MOV R3, R0, 7H |
07CF | v .FIXUP P |
07CF | v(F791D008): BL MOD9 [Texts] PROC29 |
07D0 | w .FIXUP D |
07D0 | w(8D000004): LDR SB, MT, MOD0 [System] |
07D1 | w(40D80000): ADD R0, SB, 0H [data] |
07D2 | w .FIXUP D |
07D2 | w(8D900002): LDR SB, MT, MOD9 [Texts] |
07D3 | w(41D80005): ADD R1, SB, VAR5 |
07D4 | x(82E00010): LDR R2, SP, 10H |
07D5 | x(42220008): ASR R2, R2, 8H |
07D6 | y(4224FFFF): AND R2, R2, FFFFFFFFH |
07D7 | z(43000004): MOV R3, R0, 4H |
07D8 | a .FIXUP P |
07D8 | a(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 |
07D9 | b .FIXUP D |
07D9 | b(8D000007): LDR SB, MT, MOD0 [System] |
07DA | b(40D80000): ADD R0, SB, 0H [data] |
07DB | b .FIXUP D |
07DB | b(8D900002): LDR SB, MT, MOD9 [Texts] |
07DC | b(41D80005): ADD R1, SB, VAR5 |
07DD | c .FIXUP D |
07DD | c(8D000002): LDR SB, MT, MOD0 [System] |
07DE | c(42D80280): ADD R2, SB, 280H [" TRAP"] |
07DF | c(43000007): MOV R3, R0, 7H |
07E0 | d .FIXUP P |
07E0 | d(F791D008): BL MOD9 [Texts] PROC29 |
07E1 | e .FIXUP D |
07E1 | e(8D000004): LDR SB, MT, MOD0 [System] |
07E2 | e(40D80000): ADD R0, SB, 0H [data] |
07E3 | e .FIXUP D |
07E3 | e(8D900002): LDR SB, MT, MOD9 [Texts] |
07E4 | e(41D80005): ADD R1, SB, VAR5 |
07E5 | f(82E00014): LDR R2, SP, 14H |
07E6 | g(43000004): MOV R3, R0, 4H |
07E7 | h .FIXUP P |
07E7 | h(F791E007): BL MOD9 [Texts] PROC30 |
07E8 | i .FIXUP D |
07E8 | i(8D400005): LDR SB, MT, MOD4 [Modules] |
07E9 | i(80D00002): LDR R0, SB, VAR2 |
07EA | i(A0E00018): STR R0, SP, 18H |
| WHILE (mod # NIL)j & (k(u < mod.codel)m OR (nu >= mod.impo)p) DOq mod := mod.nextr ENDs ; |
07EB | j(80E00018): LDR R0, SP, 18H |
07EC | k(E1000011): BEQ 17 [07FEH] |
07ED | l(80E00018): LDR R0, SP, 18H |
07EE | l(D138F74C): BLEQ MT [trap=4, pos=14583] |
07EF | m(81E0000C): LDR R1, SP, CH |
07F0 | m(80000038): LDR R0, R0, 38H |
07F1 | m(01190000): SUB R1, R1, R0 |
07F2 | n(E5000006): BLT 6 [07F9H] |
07F3 | o(80E00018): LDR R0, SP, 18H |
07F4 | o(D139094C): BLEQ MT [trap=4, pos=14601] |
07F5 | p(81E0000C): LDR R1, SP, CH |
07F6 | p(8000003C): LDR R0, R0, 3CH |
07F7 | p(01190000): SUB R1, R1, R0 |
07F8 | q(E5000005): BLT 5 [07FEH] |
07F9 | r(80E00018): LDR R0, SP, 18H |
07FA | r(D1391E4C): BLEQ MT [trap=4, pos=14622] |
07FB | s(80000020): LDR R0, R0, 20H |
07FC | s(A0E00018): STR R0, SP, 18H |
07FD | s(E7FFFFED): B -19 [07EBH] |
| IF mod # NIL THENt Texts.WriteString(W,u " in ")v;w Texts.WriteString(W,x mod.namey)z ENDa ; |
07FE | t(80E00018): LDR R0, SP, 18H |
07FF | t(E1000010): BEQ 16 [0810H] |
0800 | u .FIXUP D |
0800 | u(8D000018): LDR SB, MT, MOD0 [System] |
0801 | u(40D80000): ADD R0, SB, 0H [data] |
0802 | u .FIXUP D |
0802 | u(8D900002): LDR SB, MT, MOD9 [Texts] |
0803 | u(41D80005): ADD R1, SB, VAR5 |
0804 | v .FIXUP D |
0804 | v(8D000002): LDR SB, MT, MOD0 [System] |
0805 | v(42D80288): ADD R2, SB, 288H [" in "] |
0806 | v(43000005): MOV R3, R0, 5H |
0807 | w .FIXUP P |
0807 | w(F791D020): BL MOD9 [Texts] PROC29 |
0808 | x .FIXUP D |
0808 | x(8D000004): LDR SB, MT, MOD0 [System] |
0809 | x(40D80000): ADD R0, SB, 0H [data] |
080A | x .FIXUP D |
080A | x(8D900002): LDR SB, MT, MOD9 [Texts] |
080B | x(41D80005): ADD R1, SB, VAR5 |
080C | y(82E00018): LDR R2, SP, 18H |
080D | y(D139784C): BLEQ MT [trap=4, pos=14712] |
080E | z(43000020): MOV R3, R0, 20H |
080F | a .FIXUP P |
080F | a(F791D008): BL MOD9 [Texts] PROC29 |
| Texts.WriteString(W,b " at")c;d Texts.WriteHex(W,e u)f;g |
0810 | b .FIXUP D |
0810 | b(8D000006): LDR SB, MT, MOD0 [System] |
0811 | b(40D80000): ADD R0, SB, 0H [data] |
0812 | b .FIXUP D |
0812 | b(8D900002): LDR SB, MT, MOD9 [Texts] |
0813 | b(41D80005): ADD R1, SB, VAR5 |
0814 | c .FIXUP D |
0814 | c(8D000002): LDR SB, MT, MOD0 [System] |
0815 | c(42D80290): ADD R2, SB, 290H [" at"] |
0816 | c(43000004): MOV R3, R0, 4H |
0817 | d .FIXUP P |
0817 | d(F791D008): BL MOD9 [Texts] PROC29 |
0818 | e .FIXUP D |
0818 | e(8D000004): LDR SB, MT, MOD0 [System] |
0819 | e(40D80000): ADD R0, SB, 0H [data] |
081A | e .FIXUP D |
081A | e(8D900002): LDR SB, MT, MOD9 [Texts] |
081B | e(41D80005): ADD R1, SB, VAR5 |
081C | f(82E0000C): LDR R2, SP, CH |
081D | g .FIXUP P |
081D | g(F791F006): BL MOD9 [Texts] PROC31 |
| Texts.WriteLn(W)h;i Texts.Append(Oberon.Log,j W.buf)k;l Oberon.Reset |
081E | h .FIXUP D |
081E | h(8D000004): LDR SB, MT, MOD0 [System] |
081F | h(40D80000): ADD R0, SB, 0H [data] |
0820 | h .FIXUP D |
0820 | h(8D900002): LDR SB, MT, MOD9 [Texts] |
0821 | h(41D80005): ADD R1, SB, VAR5 |
0822 | i .FIXUP P |
0822 | i(F791C005): BL MOD9 [Texts] PROC28 |
0823 | j .FIXUP D |
0823 | j(8DA00003): LDR SB, MT, MOD10 [Oberon] |
0824 | j(80D0000D): LDR R0, SB, VAR13 |
0825 | k .FIXUP D |
0825 | k(8D000002): LDR SB, MT, MOD0 [System] |
0826 | k(81D00000): LDR R1, SB, 0H [data] |
0827 | l .FIXUP P |
0827 | l(F790E005): BL MOD9 [Texts] PROC14 |
| ENDm |
0828 | m .FIXUP P |
0828 | m(F7A32001): BL MOD10 [Oberon] PROC50 |
| ENDn Trap; |
0829 | n(8FE00000): LDR LNK, SP, 0H |
082A | n(4EE8001C): ADD SP, SP, 1CH |
082B | n(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 |
082C | o(4EE90008): SUB SP, SP, 8H |
082D | o(AFE00000): STR LNK, SP, 0H |
082E | p(0000000F): MOV R0, R0, LNK |
082F | p(A0E00004): STR R0, SP, 4H |
0830 | q .FIXUP D |
0830 | q(8D00000B): LDR SB, MT, MOD0 [System] |
0831 | q(40D80000): ADD R0, SB, 0H [data] |
0832 | q .FIXUP D |
0832 | q(8D900002): LDR SB, MT, MOD9 [Texts] |
0833 | q(41D80005): ADD R1, SB, VAR5 |
0834 | r .FIXUP D |
0834 | r(8D000002): LDR SB, MT, MOD0 [System] |
0835 | r(42D80294): ADD R2, SB, 294H [" ABORT "] |
0836 | r(4300000A): MOV R3, R0, AH |
0837 | s .FIXUP P |
0837 | s(F791D00F): BL MOD9 [Texts] PROC29 |
0838 | t .FIXUP D |
0838 | t(8D000004): LDR SB, MT, MOD0 [System] |
0839 | t(40D80000): ADD R0, SB, 0H [data] |
083A | t .FIXUP D |
083A | t(8D900002): LDR SB, MT, MOD9 [Texts] |
083B | t(41D80005): ADD R1, SB, VAR5 |
083C | u(82E00004): LDR R2, SP, 4H |
083D | v .FIXUP P |
083D | v(F791F006): BL MOD9 [Texts] PROC31 |
| Texts.WriteLn(W)w;x Texts.Append(Oberon.Log,y W.buf)z;a Oberon.Reset |
083E | w .FIXUP D |
083E | w(8D000004): LDR SB, MT, MOD0 [System] |
083F | w(40D80000): ADD R0, SB, 0H [data] |
0840 | w .FIXUP D |
0840 | w(8D900002): LDR SB, MT, MOD9 [Texts] |
0841 | w(41D80005): ADD R1, SB, VAR5 |
0842 | x .FIXUP P |
0842 | x(F791C005): BL MOD9 [Texts] PROC28 |
0843 | y .FIXUP D |
0843 | y(8DA00003): LDR SB, MT, MOD10 [Oberon] |
0844 | y(80D0000D): LDR R0, SB, VAR13 |
0845 | z .FIXUP D |
0845 | z(8D000002): LDR SB, MT, MOD0 [System] |
0846 | z(81D00000): LDR R1, SB, 0H [data] |
0847 | a .FIXUP P |
0847 | a(F790E005): BL MOD9 [Texts] PROC14 |
| ENDb Abort; |
0848 | b .FIXUP P |
0848 | b(F7A32001): BL MOD10 [Oberon] PROC50 |
0849 | b(8FE00000): LDR LNK, SP, 0H |
084A | b(4EE80008): ADD SP, SP, 8H |
084B | b(C700000F): B LNK |
| |
| BEGINc Texts.OpenWriter(W)d;e |
084C | c .PROC 0 |
084C | c .ENTRYPOINT |
084C | c(4EE90004): SUB SP, SP, 4H |
084D | c(AFE00000): STR LNK, SP, 0H |
084E | d .FIXUP D |
084E | d(8D000009): LDR SB, MT, MOD0 [System] |
084F | d(40D80000): ADD R0, SB, 0H [data] |
0850 | d .FIXUP D |
0850 | d(8D900002): LDR SB, MT, MOD9 [Texts] |
0851 | d(41D80005): ADD R1, SB, VAR5 |
0852 | e .FIXUP P |
0852 | e(F791700A): BL MOD9 [Texts] PROC23 |
| Oberon.OpenLog(TextFrames.Text("")f)g;h OpenViewers;i |
0853 | f .FIXUP D |
0853 | f(8D000003): LDR SB, MT, MOD0 [System] |
0854 | f(40D802A0): ADD R0, SB, 2A0H [""] |
0855 | f(41000001): MOV R1, R0, 1H |
0856 | g .FIXUP P |
0856 | g(F7C2B004): BL MOD12 [TextFrames] PROC43 |
0857 | h .FIXUP P |
0857 | h(F7A26001): BL MOD10 [Oberon] PROC38 |
0858 | i(F7FFFEDD): BL -291 [0736H] |
| Kernel.Install(SYSTEM.ADR(Trap),j 20H)k;l Kernel.Install(SYSTEM.ADR(Abort),m 0)n;o |
0859 | j(F7000000): BL 0 [085AH] |
085A | j(40F902AC): SUB R0, LNK, 2ACH |
085B | k(41000020): MOV R1, R0, 20H |
085C | l .FIXUP P |
085C | l(F7114005): BL MOD1 [Kernel] PROC20 |
085D | m(F7000000): BL 0 [085EH] |
085E | m(40F900C8): SUB R0, LNK, C8H |
085F | n(41000000): MOV R1, R0, 0H |
0860 | o .FIXUP P |
0860 | o(F7114004): BL MOD1 [Kernel] PROC20 |
| END System.p |
0861 | p(8FE00000): LDR LNK, SP, 0H |
0862 | p(4EE80004): ADD SP, SP, 4H |
0863 | p(C700000F): B LNK |