| MODULE MacroTool; (*NW 6.8.2013*) |
| | .MODULE MacroTool (KEY 4E7C8F86, VERSION 1, SIZE 0000071C) |
| | .IMPORT Texts (KEY 0B9E9984) |
| | .IMPORT Fonts (KEY F4C9F557) |
| | .IMPORT Files (KEY 73F5D686) |
| | .IMPORT Oberon (KEY A89CCEE2) |
| | .IMPORT Display (KEY 4C08D3EA) |
| | .IMPORT Viewers (KEY 25ABF199) |
| | .IMPORT Graphics (KEY F7357DD9) |
| | .IMPORT Modules (KEY 41C6A19A) |
| | .IMPORT GraphicFrames (KEY 84ABBF86) |
| | .DATA 28H |
| | .STRING 28H "new library " |
| | .STRING 38H " inserted in " |
| | .STRING 48H " replaced in " |
| | .STRING 58H " empty macro" |
| | .STRING 68H " loaded" |
| | .STRING 70H " not found" |
| | .STRING 7CH " stored" |
| | .STRING 84H " not found" |
| | .STRING 90H "MacroTool - NW 6.8.2013" |
| | .POINTER_REFERENCES 0H 4H 24H 18H |
| | .FIXUP T 0H |
| IMPORT Texts, Oberon, Graphics, GraphicFrames; |
| VAR W: Texts.Writer; |
| |
| PROCEDURE OpenMacro*; |
| VAR F: GraphicFrames.Frame; sel: Graphics.Object; |
| BEGINa (*expand selected macro to caret position*) |
| 0000 | a .PROC 1 |
| 0000 | a .COMMAND OpenMacro |
| 0000 | a(4EE9000C): SUB SP, SP, CH |
| 0001 | a(AFE00000): STR LNK, SP, 0H |
| F := GraphicFrames.Selected();b |
| 0002 | b .FIXUP P |
| 0002 | b(F790A002): BL MOD9 [GraphicFrames] PROC10 |
| 0003 | b(A0E00004): STR R0, SP, 4H |
| IF F # NIL THENc |
| 0004 | c(80E00004): LDR R0, SP, 4H |
| 0005 | c(E100002F): BEQ 47 [0035H] |
| sel := F.graphd.sele;f |
| 0006 | d(80E00004): LDR R0, SP, 4H |
| 0007 | d(D1013A4C): BLEQ MT [trap=4, pos=314] |
| 0008 | e(8000001C): LDR R0, R0, 1CH |
| 0009 | e(D1013E4C): BLEQ MT [trap=4, pos=318] |
| 000A | f(80000004): LDR R0, R0, 4H |
| 000B | f(A0E00008): STR R0, SP, 8H |
| IF (sel # NIL)g & (hsel IS Graphics.Macro)i THENj |
| 000C | g(80E00008): LDR R0, SP, 8H |
| 000D | h(E1000027): BEQ 39 [0035H] |
| 000E | i(80E00008): LDR R0, SP, 8H |
| 000F | i(E1000005): BEQ 5 [0015H] |
| 0010 | i(810FFFF8): LDR R1, R0, FFFFFFF8H |
| 0011 | i(81100004): LDR R1, R1, 4H |
| 0012 | i .FIXUP D |
| 0012 | i(8D700012): LDR SB, MT, MOD7 [Graphics] |
| 0013 | i(42D8000E): ADD R2, SB, VAR14 |
| 0014 | i(02290001): SUB R2, R2, R1 |
| 0015 | j(E900001F): BNE 31 [0035H] |
| GraphicFrames.Deselect(F)k;l |
| 0016 | k(80E00004): LDR R0, SP, 4H |
| 0017 | l .FIXUP P |
| 0017 | l(F7912015): BL MOD9 [GraphicFrames] PROC18 |
| Graphics.OpenMac(sel(Graphics.Macro)m.mac,n F.grapho,p F.markq.x - F.xr,s F.markt.y - F.yu)v;w |
| 0018 | m(80E00008): LDR R0, SP, 8H |
| 0019 | m(E1000005): BEQ 5 [001FH] |
| 001A | m(810FFFF8): LDR R1, R0, FFFFFFF8H |
| 001B | m(81100004): LDR R1, R1, 4H |
| 001C | m .FIXUP D |
| 001C | m(8D70000A): LDR SB, MT, MOD7 [Graphics] |
| 001D | m(42D8000E): ADD R2, SB, VAR14 |
| 001E | m(02290001): SUB R2, R2, R1 |
| 001F | m(D901C32C): BLNE MT [trap=2, pos=451] |
| 0020 | n(8000001C): LDR R0, R0, 1CH |
| 0021 | o(81E00004): LDR R1, SP, 4H |
| 0022 | o(D101D04C): BLEQ MT [trap=4, pos=464] |
| 0023 | p(8110001C): LDR R1, R1, 1CH |
| 0024 | q(82E00004): LDR R2, SP, 4H |
| 0025 | q(D101D84C): BLEQ MT [trap=4, pos=472] |
| 0026 | r(83E00004): LDR R3, SP, 4H |
| 0027 | r(D101E04C): BLEQ MT [trap=4, pos=480] |
| 0028 | s(82200040): LDR R2, R2, 40H |
| 0029 | s(83300030): LDR R3, R3, 30H |
| 002A | s(02290003): SUB R2, R2, R3 |
| 002B | t(83E00004): LDR R3, SP, 4H |
| 002C | t(D101E84C): BLEQ MT [trap=4, pos=488] |
| 002D | u(84E00004): LDR R4, SP, 4H |
| 002E | u(D101F04C): BLEQ MT [trap=4, pos=496] |
| 002F | v(83300044): LDR R3, R3, 44H |
| 0030 | v(84400034): LDR R4, R4, 34H |
| 0031 | v(03390004): SUB R3, R3, R4 |
| 0032 | w .FIXUP P |
| 0032 | w(F773201B): BL MOD7 [Graphics] PROC50 |
| GraphicFrames.Draw(F)x |
| 0033 | x(80E00004): LDR R0, SP, 4H |
| ENDy |
| 0034 | y .FIXUP P |
| 0034 | y(F790C002): BL MOD9 [GraphicFrames] PROC12 |
| END |
| ENDz OpenMacro; |
| 0035 | z(8FE00000): LDR LNK, SP, 0H |
| 0036 | z(4EE8000C): ADD SP, SP, CH |
| 0037 | z(C700000F): B LNK |
| |
| PROCEDURE MakeMacro*; (*lib mac*) |
| (*compose macro from selected elements into caret area*) |
| VAR newMac: BOOLEAN; |
| machead: Graphics.MacHead; |
| F: GraphicFrames.Frame; |
| L: Graphics.Library; |
| S: Texts.Scanner; |
| Lname, Mname: ARRAY 32 OF CHAR; |
| BEGINa Texts.OpenScanner(S,b Oberon.Par.text,c Oberon.Par.pos)d;e Texts.Scan(S)f;g |
| 0038 | a .PROC 2 |
| 0038 | a .COMMAND MakeMacro |
| 0038 | a(4EE900C8): SUB SP, SP, C8H |
| 0039 | a(AFE00000): STR LNK, SP, 0H |
| 003A | b(40E80014): ADD R0, SP, 14H |
| 003B | b .FIXUP D |
| 003B | b(8D10001F): LDR SB, MT, MOD1 [Texts] |
| 003C | b(41D80003): ADD R1, SB, VAR3 |
| 003D | c .FIXUP D |
| 003D | c(8D400002): LDR SB, MT, MOD4 [Oberon] |
| 003E | c(42D8000E): ADD R2, SB, VAR14 |
| 003F | c(82200008): LDR R2, R2, 8H |
| 0040 | d .FIXUP D |
| 0040 | d(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 0041 | d(43D8000E): ADD R3, SB, VAR14 |
| 0042 | d(8330000C): LDR R3, R3, CH |
| 0043 | e .FIXUP P |
| 0043 | e(F711500F): BL MOD1 [Texts] PROC21 |
| 0044 | f(40E80014): ADD R0, SP, 14H |
| 0045 | f .FIXUP D |
| 0045 | f(8D100005): LDR SB, MT, MOD1 [Texts] |
| 0046 | f(41D80003): ADD R1, SB, VAR3 |
| 0047 | g .FIXUP P |
| 0047 | g(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Name THENh |
| 0048 | h(80E00050): LDR R0, SP, 50H |
| 0049 | h(40090001): SUB R0, R0, 1H |
| 004A | h(E9000091): BNE 145 [00DCH] |
| Lname := S.s;i Texts.Scan(S)j;k |
| 004B | i(40E80088): ADD R0, SP, 88H |
| 004C | i(41E80068): ADD R1, SP, 68H |
| 004D | i(42000008): MOV R2, R0, 8H |
| 004E | i(83100000): LDR R3, R1, 0H |
| 004F | i(41180004): ADD R1, R1, 4H |
| 0050 | i(A3000000): STR R3, R0, 0H |
| 0051 | i(40080004): ADD R0, R0, 4H |
| 0052 | i(42290001): SUB R2, R2, 1H |
| 0053 | i(E9FFFFFA): BNE -6 [004EH] |
| 0054 | j(40E80014): ADD R0, SP, 14H |
| 0055 | j .FIXUP D |
| 0055 | j(8D100010): LDR SB, MT, MOD1 [Texts] |
| 0056 | j(41D80003): ADD R1, SB, VAR3 |
| 0057 | k .FIXUP P |
| 0057 | k(F7116010): BL MOD1 [Texts] PROC22 |
| IF (S.class = Texts.Name)l OR (mS.class = Texts.String)n & (oS.len <= 8)p THENq |
| 0058 | l(80E00050): LDR R0, SP, 50H |
| 0059 | l(40090001): SUB R0, R0, 1H |
| 005A | m(E1000006): BEQ 6 [0061H] |
| 005B | n(80E00050): LDR R0, SP, 50H |
| 005C | n(40090002): SUB R0, R0, 2H |
| 005D | o(E900007E): BNE 126 [00DCH] |
| 005E | p(80E00064): LDR R0, SP, 64H |
| 005F | p(40090008): SUB R0, R0, 8H |
| 0060 | q(EE00007B): BGT 123 [00DCH] |
| F := GraphicFrames.Focus();r Mname := S.s;s |
| 0061 | r .FIXUP P |
| 0061 | r(F790900A): BL MOD9 [GraphicFrames] PROC9 |
| 0062 | r(A0E0000C): STR R0, SP, CH |
| 0063 | s(40E800A8): ADD R0, SP, A8H |
| 0064 | s(41E80068): ADD R1, SP, 68H |
| 0065 | s(42000008): MOV R2, R0, 8H |
| 0066 | s(83100000): LDR R3, R1, 0H |
| 0067 | s(41180004): ADD R1, R1, 4H |
| 0068 | s(A3000000): STR R3, R0, 0H |
| 0069 | s(40080004): ADD R0, R0, 4H |
| 006A | s(42290001): SUB R2, R2, 1H |
| 006B | s(E9FFFFFA): BNE -6 [0066H] |
| IF (F # NIL)t & (uF.graphv.selw # NIL)x THENy |
| 006C | t(80E0000C): LDR R0, SP, CH |
| 006D | u(E100006E): BEQ 110 [00DCH] |
| 006E | v(80E0000C): LDR R0, SP, CH |
| 006F | v(D1047C4C): BLEQ MT [trap=4, pos=1148] |
| 0070 | w(8000001C): LDR R0, R0, 1CH |
| 0071 | w(D104804C): BLEQ MT [trap=4, pos=1152] |
| 0072 | x(80000004): LDR R0, R0, 4H |
| 0073 | y(E1000068): BEQ 104 [00DCH] |
| Graphics.GetLib(Lname,z FALSE,a L)b;c |
| 0074 | z(40E80088): ADD R0, SP, 88H |
| 0075 | z(41000020): MOV R1, R0, 20H |
| 0076 | a(42000000): MOV R2, R0, 0H |
| 0077 | b(43E80010): ADD R3, SP, 10H |
| 0078 | c .FIXUP P |
| 0078 | c(F772C017): BL MOD7 [Graphics] PROC44 |
| IF L = NIL THENd |
| 0079 | d(80E00010): LDR R0, SP, 10H |
| 007A | d(E9000018): BNE 24 [0093H] |
| Texts.WriteString(W,e "new library ")f;g Texts.WriteString(W,h Lname)i;j Texts.WriteLn(W)k;l |
| 007B | e .FIXUP D |
| 007B | e(8D000026): LDR SB, MT, MOD0 [MacroTool] |
| 007C | e(40D80000): ADD R0, SB, 0H [data] |
| 007D | e .FIXUP D |
| 007D | e(8D100002): LDR SB, MT, MOD1 [Texts] |
| 007E | e(41D80005): ADD R1, SB, VAR5 |
| 007F | f .FIXUP D |
| 007F | f(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0080 | f(42D80028): ADD R2, SB, 28H ["new library "] |
| 0081 | f(4300000D): MOV R3, R0, DH |
| 0082 | g .FIXUP P |
| 0082 | g(F711D00A): BL MOD1 [Texts] PROC29 |
| 0083 | h .FIXUP D |
| 0083 | h(8D000004): LDR SB, MT, MOD0 [MacroTool] |
| 0084 | h(40D80000): ADD R0, SB, 0H [data] |
| 0085 | h .FIXUP D |
| 0085 | h(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0086 | h(41D80005): ADD R1, SB, VAR5 |
| 0087 | i(42E80088): ADD R2, SP, 88H |
| 0088 | i(43000020): MOV R3, R0, 20H |
| 0089 | j .FIXUP P |
| 0089 | j(F711D007): BL MOD1 [Texts] PROC29 |
| 008A | k .FIXUP D |
| 008A | k(8D000005): LDR SB, MT, MOD0 [MacroTool] |
| 008B | k(40D80000): ADD R0, SB, 0H [data] |
| 008C | k .FIXUP D |
| 008C | k(8D100002): LDR SB, MT, MOD1 [Texts] |
| 008D | k(41D80005): ADD R1, SB, VAR5 |
| 008E | l .FIXUP P |
| 008E | l(F711C005): BL MOD1 [Texts] PROC28 |
| L := Graphics.NewLib(Lname)m |
| 008F | m(40E80088): ADD R0, SP, 88H |
| 0090 | m(41000020): MOV R1, R0, 20H |
| ENDn ; |
| 0091 | n .FIXUP P |
| 0091 | n(F772D003): BL MOD7 [Graphics] PROC45 |
| 0092 | n(A0E00010): STR R0, SP, 10H |
| Graphics.MakeMac(F.grapho,p machead)q;r |
| 0093 | o(80E0000C): LDR R0, SP, CH |
| 0094 | o(D1058E4C): BLEQ MT [trap=4, pos=1422] |
| 0095 | p(8000001C): LDR R0, R0, 1CH |
| 0096 | q(41E80008): ADD R1, SP, 8H |
| 0097 | r .FIXUP P |
| 0097 | r(F7733006): BL MOD7 [Graphics] PROC51 |
| IF machead # NIL THENs |
| 0098 | s(80E00008): LDR R0, SP, 8H |
| 0099 | s(E1000030): BEQ 48 [00CAH] |
| machead.namet := Mname;u Graphics.InsertMac(machead,v L,w newMac)x;y Texts.WriteString(W,z Mname)a;b |
| 009A | t(80E00008): LDR R0, SP, 8H |
| 009B | t(D105D24C): BLEQ MT [trap=4, pos=1490] |
| 009C | u(41E800A8): ADD R1, SP, A8H |
| 009D | u(42000008): MOV R2, R0, 8H |
| 009E | u(83100000): LDR R3, R1, 0H |
| 009F | u(41180004): ADD R1, R1, 4H |
| 00A0 | u(A3000000): STR R3, R0, 0H |
| 00A1 | u(40080004): ADD R0, R0, 4H |
| 00A2 | u(42290001): SUB R2, R2, 1H |
| 00A3 | u(E9FFFFFA): BNE -6 [009EH] |
| 00A4 | v(80E00008): LDR R0, SP, 8H |
| 00A5 | w(81E00010): LDR R1, SP, 10H |
| 00A6 | x(42E80004): ADD R2, SP, 4H |
| 00A7 | y .FIXUP P |
| 00A7 | y(F7734010): BL MOD7 [Graphics] PROC52 |
| 00A8 | z .FIXUP D |
| 00A8 | z(8D00001C): LDR SB, MT, MOD0 [MacroTool] |
| 00A9 | z(40D80000): ADD R0, SB, 0H [data] |
| 00AA | z .FIXUP D |
| 00AA | z(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00AB | z(41D80005): ADD R1, SB, VAR5 |
| 00AC | a(42E800A8): ADD R2, SP, A8H |
| 00AD | a(43000020): MOV R3, R0, 20H |
| 00AE | b .FIXUP P |
| 00AE | b(F711D007): BL MOD1 [Texts] PROC29 |
| IF newMac THENc Texts.WriteString(W,d " inserted in ")e ELSEf Textsg.WriteString(W,h " replaced in ")i ENDj ; |
| 00AF | c(90E00004): LDR R0, SP, 4H |
| 00B0 | c(E1000009): BEQ 9 [00BAH] |
| 00B1 | d .FIXUP D |
| 00B1 | d(8D000007): LDR SB, MT, MOD0 [MacroTool] |
| 00B2 | d(40D80000): ADD R0, SB, 0H [data] |
| 00B3 | d .FIXUP D |
| 00B3 | d(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00B4 | d(41D80005): ADD R1, SB, VAR5 |
| 00B5 | e .FIXUP D |
| 00B5 | e(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 00B6 | e(42D80038): ADD R2, SB, 38H [" inserted in "] |
| 00B7 | e(4300000E): MOV R3, R0, EH |
| 00B8 | f .FIXUP P |
| 00B8 | f(F711D00A): BL MOD1 [Texts] PROC29 |
| 00B9 | g(E7000008): B 8 [00C2H] |
| 00BA | h .FIXUP D |
| 00BA | h(8D000005): LDR SB, MT, MOD0 [MacroTool] |
| 00BB | h(40D80000): ADD R0, SB, 0H [data] |
| 00BC | h .FIXUP D |
| 00BC | h(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00BD | h(41D80005): ADD R1, SB, VAR5 |
| 00BE | i .FIXUP D |
| 00BE | i(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 00BF | i(42D80048): ADD R2, SB, 48H [" replaced in "] |
| 00C0 | i(4300000E): MOV R3, R0, EH |
| 00C1 | j .FIXUP P |
| 00C1 | j(F711D009): BL MOD1 [Texts] PROC29 |
| Texts.WriteString(W,k Lname)l |
| 00C2 | k .FIXUP D |
| 00C2 | k(8D000004): LDR SB, MT, MOD0 [MacroTool] |
| 00C3 | k(40D80000): ADD R0, SB, 0H [data] |
| 00C4 | k .FIXUP D |
| 00C4 | k(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00C5 | k(41D80005): ADD R1, SB, VAR5 |
| 00C6 | l(42E80088): ADD R2, SP, 88H |
| 00C7 | l(43000020): MOV R3, R0, 20H |
| ELSEm Textsn.WriteString(W,o " empty macro")p |
| 00C8 | m .FIXUP P |
| 00C8 | m(F711D007): BL MOD1 [Texts] PROC29 |
| 00C9 | n(E7000008): B 8 [00D2H] |
| 00CA | o .FIXUP D |
| 00CA | o(8D000006): LDR SB, MT, MOD0 [MacroTool] |
| 00CB | o(40D80000): ADD R0, SB, 0H [data] |
| 00CC | o .FIXUP D |
| 00CC | o(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00CD | o(41D80005): ADD R1, SB, VAR5 |
| 00CE | p .FIXUP D |
| 00CE | p(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 00CF | p(42D80058): ADD R2, SB, 58H [" empty macro"] |
| 00D0 | p(4300000D): MOV R3, R0, DH |
| ENDq ; |
| 00D1 | q .FIXUP P |
| 00D1 | q(F711D009): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)r;s Texts.Append(Oberon.Log,t W.buf)u |
| 00D2 | r .FIXUP D |
| 00D2 | r(8D000004): LDR SB, MT, MOD0 [MacroTool] |
| 00D3 | r(40D80000): ADD R0, SB, 0H [data] |
| 00D4 | r .FIXUP D |
| 00D4 | r(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00D5 | r(41D80005): ADD R1, SB, VAR5 |
| 00D6 | s .FIXUP P |
| 00D6 | s(F711C005): BL MOD1 [Texts] PROC28 |
| 00D7 | t .FIXUP D |
| 00D7 | t(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 00D8 | t(80D0000D): LDR R0, SB, VAR13 |
| 00D9 | u .FIXUP D |
| 00D9 | u(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 00DA | u(81D00000): LDR R1, SB, 0H [data] |
| ENDv |
| 00DB | v .FIXUP P |
| 00DB | v(F710E005): BL MOD1 [Texts] PROC14 |
| END |
| END |
| ENDw MakeMacro; |
| 00DC | w(8FE00000): LDR LNK, SP, 0H |
| 00DD | w(4EE800C8): ADD SP, SP, C8H |
| 00DE | w(C700000F): B LNK |
| |
| PROCEDURE LoadLibrary*; (*lib file name*) |
| VAR S: Texts.Scanner; L: Graphics.Library; |
| BEGINx Texts.OpenScanner(S,y Oberon.Par.text,z Oberon.Par.pos)a;b Texts.Scan(S)c;d |
| 00DF | x .PROC 3 |
| 00DF | x .COMMAND LoadLibrary |
| 00DF | x(4EE9007C): SUB SP, SP, 7CH |
| 00E0 | x(AFE00000): STR LNK, SP, 0H |
| 00E1 | y(40E80004): ADD R0, SP, 4H |
| 00E2 | y .FIXUP D |
| 00E2 | y(8D100009): LDR SB, MT, MOD1 [Texts] |
| 00E3 | y(41D80003): ADD R1, SB, VAR3 |
| 00E4 | z .FIXUP D |
| 00E4 | z(8D400002): LDR SB, MT, MOD4 [Oberon] |
| 00E5 | z(42D8000E): ADD R2, SB, VAR14 |
| 00E6 | z(82200008): LDR R2, R2, 8H |
| 00E7 | a .FIXUP D |
| 00E7 | a(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 00E8 | a(43D8000E): ADD R3, SB, VAR14 |
| 00E9 | a(8330000C): LDR R3, R3, CH |
| 00EA | b .FIXUP P |
| 00EA | b(F711500F): BL MOD1 [Texts] PROC21 |
| 00EB | c(40E80004): ADD R0, SP, 4H |
| 00EC | c .FIXUP D |
| 00EC | c(8D100005): LDR SB, MT, MOD1 [Texts] |
| 00ED | c(41D80003): ADD R1, SB, VAR3 |
| 00EE | d .FIXUP P |
| 00EE | d(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Name THENe |
| 00EF | e(80E00040): LDR R0, SP, 40H |
| 00F0 | e(40090001): SUB R0, R0, 1H |
| 00F1 | e(E9000029): BNE 41 [011BH] |
| Texts.WriteString(W,f S.s)g;h Graphics.GetLib(S.s,i FALSE,j L)k;l |
| 00F2 | f .FIXUP D |
| 00F2 | f(8D000006): LDR SB, MT, MOD0 [MacroTool] |
| 00F3 | f(40D80000): ADD R0, SB, 0H [data] |
| 00F4 | f .FIXUP D |
| 00F4 | f(8D100002): LDR SB, MT, MOD1 [Texts] |
| 00F5 | f(41D80005): ADD R1, SB, VAR5 |
| 00F6 | g(42E80058): ADD R2, SP, 58H |
| 00F7 | g(43000020): MOV R3, R0, 20H |
| 00F8 | h .FIXUP P |
| 00F8 | h(F711D00A): BL MOD1 [Texts] PROC29 |
| 00F9 | i(40E80058): ADD R0, SP, 58H |
| 00FA | i(41000020): MOV R1, R0, 20H |
| 00FB | j(42000000): MOV R2, R0, 0H |
| 00FC | k(43E80078): ADD R3, SP, 78H |
| 00FD | l .FIXUP P |
| 00FD | l(F772C005): BL MOD7 [Graphics] PROC44 |
| IF L # NIL THENm Texts.WriteString(W,n " loaded")o ELSEp Textsq.WriteString(W,r " not found")s ENDt ; |
| 00FE | m(80E00078): LDR R0, SP, 78H |
| 00FF | m(E1000009): BEQ 9 [0109H] |
| 0100 | n .FIXUP D |
| 0100 | n(8D00000C): LDR SB, MT, MOD0 [MacroTool] |
| 0101 | n(40D80000): ADD R0, SB, 0H [data] |
| 0102 | n .FIXUP D |
| 0102 | n(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0103 | n(41D80005): ADD R1, SB, VAR5 |
| 0104 | o .FIXUP D |
| 0104 | o(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0105 | o(42D80068): ADD R2, SB, 68H [" loaded"] |
| 0106 | o(43000008): MOV R3, R0, 8H |
| 0107 | p .FIXUP P |
| 0107 | p(F711D00A): BL MOD1 [Texts] PROC29 |
| 0108 | q(E7000008): B 8 [0111H] |
| 0109 | r .FIXUP D |
| 0109 | r(8D000005): LDR SB, MT, MOD0 [MacroTool] |
| 010A | r(40D80000): ADD R0, SB, 0H [data] |
| 010B | r .FIXUP D |
| 010B | r(8D100002): LDR SB, MT, MOD1 [Texts] |
| 010C | r(41D80005): ADD R1, SB, VAR5 |
| 010D | s .FIXUP D |
| 010D | s(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 010E | s(42D80070): ADD R2, SB, 70H [" not found"] |
| 010F | s(4300000B): MOV R3, R0, BH |
| 0110 | t .FIXUP P |
| 0110 | t(F711D009): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)u;v Texts.Append(Oberon.Log,w W.buf)x |
| 0111 | u .FIXUP D |
| 0111 | u(8D000004): LDR SB, MT, MOD0 [MacroTool] |
| 0112 | u(40D80000): ADD R0, SB, 0H [data] |
| 0113 | u .FIXUP D |
| 0113 | u(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0114 | u(41D80005): ADD R1, SB, VAR5 |
| 0115 | v .FIXUP P |
| 0115 | v(F711C005): BL MOD1 [Texts] PROC28 |
| 0116 | w .FIXUP D |
| 0116 | w(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 0117 | w(80D0000D): LDR R0, SB, VAR13 |
| 0118 | x .FIXUP D |
| 0118 | x(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0119 | x(81D00000): LDR R1, SB, 0H [data] |
| ENDy |
| 011A | y .FIXUP P |
| 011A | y(F710E005): BL MOD1 [Texts] PROC14 |
| ENDz LoadLibrary; |
| 011B | z(8FE00000): LDR LNK, SP, 0H |
| 011C | z(4EE8007C): ADD SP, SP, 7CH |
| 011D | z(C700000F): B LNK |
| |
| PROCEDURE StoreLibrary*; (*lib file name*) |
| VAR i: INTEGER; S: Texts.Scanner; L: Graphics.Library; |
| BEGINa Texts.OpenScanner(S,b Oberon.Par.text,c Oberon.Par.pos)d;e Texts.Scan(S)f;g |
| 011E | a .PROC 4 |
| 011E | a .COMMAND StoreLibrary |
| 011E | a(4EE90080): SUB SP, SP, 80H |
| 011F | a(AFE00000): STR LNK, SP, 0H |
| 0120 | b(40E80008): ADD R0, SP, 8H |
| 0121 | b .FIXUP D |
| 0121 | b(8D100009): LDR SB, MT, MOD1 [Texts] |
| 0122 | b(41D80003): ADD R1, SB, VAR3 |
| 0123 | c .FIXUP D |
| 0123 | c(8D400002): LDR SB, MT, MOD4 [Oberon] |
| 0124 | c(42D8000E): ADD R2, SB, VAR14 |
| 0125 | c(82200008): LDR R2, R2, 8H |
| 0126 | d .FIXUP D |
| 0126 | d(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 0127 | d(43D8000E): ADD R3, SB, VAR14 |
| 0128 | d(8330000C): LDR R3, R3, CH |
| 0129 | e .FIXUP P |
| 0129 | e(F711500F): BL MOD1 [Texts] PROC21 |
| 012A | f(40E80008): ADD R0, SP, 8H |
| 012B | f .FIXUP D |
| 012B | f(8D100005): LDR SB, MT, MOD1 [Texts] |
| 012C | f(41D80003): ADD R1, SB, VAR3 |
| 012D | g .FIXUP P |
| 012D | g(F7116004): BL MOD1 [Texts] PROC22 |
| IF S.class = Texts.Name THENh |
| 012E | h(80E00044): LDR R0, SP, 44H |
| 012F | h(40090001): SUB R0, R0, 1H |
| 0130 | h(E9000028): BNE 40 [0159H] |
| Graphics.StoreLib(L,i S.s)j;k Texts.WriteString(W,l S.s)m;n |
| 0131 | i(80E0007C): LDR R0, SP, 7CH |
| 0132 | j(41E8005C): ADD R1, SP, 5CH |
| 0133 | j(42000020): MOV R2, R0, 20H |
| 0134 | k .FIXUP P |
| 0134 | k(F772E007): BL MOD7 [Graphics] PROC46 |
| 0135 | l .FIXUP D |
| 0135 | l(8D00000A): LDR SB, MT, MOD0 [MacroTool] |
| 0136 | l(40D80000): ADD R0, SB, 0H [data] |
| 0137 | l .FIXUP D |
| 0137 | l(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0138 | l(41D80005): ADD R1, SB, VAR5 |
| 0139 | m(42E8005C): ADD R2, SP, 5CH |
| 013A | m(43000020): MOV R3, R0, 20H |
| 013B | n .FIXUP P |
| 013B | n(F711D007): BL MOD1 [Texts] PROC29 |
| IF L # NIL THENo Texts.WriteString(W,p " stored")q ELSEr Textss.WriteString(W,t " not found")u ENDv ; |
| 013C | o(80E0007C): LDR R0, SP, 7CH |
| 013D | o(E1000009): BEQ 9 [0147H] |
| 013E | p .FIXUP D |
| 013E | p(8D000007): LDR SB, MT, MOD0 [MacroTool] |
| 013F | p(40D80000): ADD R0, SB, 0H [data] |
| 0140 | p .FIXUP D |
| 0140 | p(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0141 | p(41D80005): ADD R1, SB, VAR5 |
| 0142 | q .FIXUP D |
| 0142 | q(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0143 | q(42D8007C): ADD R2, SB, 7CH [" stored"] |
| 0144 | q(43000008): MOV R3, R0, 8H |
| 0145 | r .FIXUP P |
| 0145 | r(F711D00A): BL MOD1 [Texts] PROC29 |
| 0146 | s(E7000008): B 8 [014FH] |
| 0147 | t .FIXUP D |
| 0147 | t(8D000005): LDR SB, MT, MOD0 [MacroTool] |
| 0148 | t(40D80000): ADD R0, SB, 0H [data] |
| 0149 | t .FIXUP D |
| 0149 | t(8D100002): LDR SB, MT, MOD1 [Texts] |
| 014A | t(41D80005): ADD R1, SB, VAR5 |
| 014B | u .FIXUP D |
| 014B | u(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 014C | u(42D80084): ADD R2, SB, 84H [" not found"] |
| 014D | u(4300000B): MOV R3, R0, BH |
| 014E | v .FIXUP P |
| 014E | v(F711D009): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)w;x Texts.Append(Oberon.Log,y W.buf)z |
| 014F | w .FIXUP D |
| 014F | w(8D000004): LDR SB, MT, MOD0 [MacroTool] |
| 0150 | w(40D80000): ADD R0, SB, 0H [data] |
| 0151 | w .FIXUP D |
| 0151 | w(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0152 | w(41D80005): ADD R1, SB, VAR5 |
| 0153 | x .FIXUP P |
| 0153 | x(F711C005): BL MOD1 [Texts] PROC28 |
| 0154 | y .FIXUP D |
| 0154 | y(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 0155 | y(80D0000D): LDR R0, SB, VAR13 |
| 0156 | z .FIXUP D |
| 0156 | z(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0157 | z(81D00000): LDR R1, SB, 0H [data] |
| ENDa |
| 0158 | a .FIXUP P |
| 0158 | a(F710E005): BL MOD1 [Texts] PROC14 |
| ENDb StoreLibrary; |
| 0159 | b(8FE00000): LDR LNK, SP, 0H |
| 015A | b(4EE80080): ADD SP, SP, 80H |
| 015B | b(C700000F): B LNK |
| |
| BEGINc Texts.OpenWriter(W)d;e Texts.WriteString(W,f "MacroTool - NW 6.8.2013")g;h |
| 015C | c .PROC 0 |
| 015C | c .ENTRYPOINT |
| 015C | c(4EE90004): SUB SP, SP, 4H |
| 015D | c(AFE00000): STR LNK, SP, 0H |
| 015E | d .FIXUP D |
| 015E | d(8D000008): LDR SB, MT, MOD0 [MacroTool] |
| 015F | d(40D80000): ADD R0, SB, 0H [data] |
| 0160 | d .FIXUP D |
| 0160 | d(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0161 | d(41D80005): ADD R1, SB, VAR5 |
| 0162 | e .FIXUP P |
| 0162 | e(F711700A): BL MOD1 [Texts] PROC23 |
| 0163 | f .FIXUP D |
| 0163 | f(8D000003): LDR SB, MT, MOD0 [MacroTool] |
| 0164 | f(40D80000): ADD R0, SB, 0H [data] |
| 0165 | f .FIXUP D |
| 0165 | f(8D100002): LDR SB, MT, MOD1 [Texts] |
| 0166 | f(41D80005): ADD R1, SB, VAR5 |
| 0167 | g .FIXUP D |
| 0167 | g(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0168 | g(42D80090): ADD R2, SB, 90H ["MacroTool - NW 6.8.2013"] |
| 0169 | g(43000018): MOV R3, R0, 18H |
| 016A | h .FIXUP P |
| 016A | h(F711D008): BL MOD1 [Texts] PROC29 |
| Texts.WriteLn(W)i;j Texts.Append(Oberon.Log,k W.buf)l |
| 016B | i .FIXUP D |
| 016B | i(8D000004): LDR SB, MT, MOD0 [MacroTool] |
| 016C | i(40D80000): ADD R0, SB, 0H [data] |
| 016D | i .FIXUP D |
| 016D | i(8D100002): LDR SB, MT, MOD1 [Texts] |
| 016E | i(41D80005): ADD R1, SB, VAR5 |
| 016F | j .FIXUP P |
| 016F | j(F711C005): BL MOD1 [Texts] PROC28 |
| 0170 | k .FIXUP D |
| 0170 | k(8D400003): LDR SB, MT, MOD4 [Oberon] |
| 0171 | k(80D0000D): LDR R0, SB, VAR13 |
| 0172 | l .FIXUP D |
| 0172 | l(8D000002): LDR SB, MT, MOD0 [MacroTool] |
| 0173 | l(81D00000): LDR R1, SB, 0H [data] |
| ENDm MacroTool.n |
| 0174 | m .FIXUP P |
| 0174 | m(F710E005): BL MOD1 [Texts] PROC14 |
| 0175 | n(8FE00000): LDR LNK, SP, 0H |
| 0176 | n(4EE80004): ADD SP, SP, 4H |
| 0177 | n(C700000F): B LNK |