PCLink1

Used Exports

BUILTINS: BYTE CHAR CHR DEC INC INTEGER LED
Files: File Length New Old ReadByte Register Rider Set WriteByte
Oberon: Install Log NewTask Remove Task
SYSTEM: BIT GET PUT
Texts: Append OpenWriter WriteLn WriteString Writer Writer.buf

MODULE PCLink1; (*NW 25.7.2013 for Oberon on RISC*)
.MODULE PCLink1 (KEY 6544058C, VERSION 1, SIZE 0000069C)
.IMPORT Files (KEY 73F5D686)
.IMPORT Texts (KEY 0B9E9984)
.IMPORT Fonts (KEY F4C9F557)
.IMPORT Oberon (KEY A89CCEE2)
.IMPORT Display (KEY 4C08D3EA)
.IMPORT Viewers (KEY 25ABF199)
.DATA 2CH
.STRING 2CH "sending "
.STRING 38H " done"
.STRING 40H "receiving "
.STRING 4CH " done"
.STRING 54H "PCLink started"
.STRING 64H "PCLink stopped"
.POINTER_REFERENCES 0H 4H 8H 28H 1CH
.FIXUP T 0H
IMPORT SYSTEM, Files, Texts, Oberon;
CONST data = -56; stat = -52;
BlkLen = 255;
REQ = 20H; REC = 21H; SND = 22H; ACK = 10H; NAK = 11H;
VAR T: Oberon.Task;
W: Texts.Writer;
PROCEDURE Rec(VAR x: BYTE);
BEGINa
0000a(4EE90008): SUB SP, SP, 8H
0001a(AFE00000): STR LNK, SP, 0H
0002a(A0E00004): STR R0, SP, 4H
REPEAT UNTIL SYSTEM.BIT(stat, 0);b
0003b(5000FFCC): MOV R0, R0, FFFFFFCCH
0004b(80000000): LDR R0, R0, 0H
0005b(40030001): ROR R0, R0, 1H
0006b(E8FFFFFC): BPL -4 [0003H]
SYSTEM.GET(data, x)
ENDc Rec;
0007c(5000FFC8): MOV R0, R0, FFFFFFC8H
0008c(90000000): LDR R0, R0, 0H
0009c(81E00004): LDR R1, SP, 4H
000Ac(B0100000): STR R0, R1, 0H
000Bc(8FE00000): LDR LNK, SP, 0H
000Cc(4EE80008): ADD SP, SP, 8H
000Dc(C700000F): B LNK
PROCEDURE RecName(VAR s: ARRAY OF CHAR);
VAR i: INTEGER; x: BYTE;
BEGINd i := 0;e Rec(x)f;g
000Ed(4EE90014): SUB SP, SP, 14H
000Fd(AFE00000): STR LNK, SP, 0H
0010d(A0E00004): STR R0, SP, 4H
0011d(A1E00008): STR R1, SP, 8H
0012e(40000000): MOV R0, R0, 0H
0013e(A0E0000C): STR R0, SP, CH
0014f(40E80010): ADD R0, SP, 10H
0015g(F7FFFFEA): BL -22 [0000H]
WHILE x > 0 DOh s[i]i := CHR(x);j INC(i);k Rec(x)l ENDm ;
0016h(90E00010): LDR R0, SP, 10H
0017h(40090000): SUB R0, R0, 0H
0018h(E600000E): BLE 14 [0027H]
0019i(80E0000C): LDR R0, SP, CH
001Ai(81E00008): LDR R1, SP, 8H
001Bi(01090001): SUB R1, R0, R1
001Ci(DA01E11C): BLCC MT [trap=1, pos=481]
001Di(81E00004): LDR R1, SP, 4H
001Ei(00180000): ADD R0, R1, R0
001Fj(91E00010): LDR R1, SP, 10H
0020j(B1000000): STR R1, R0, 0H
0021k(80E0000C): LDR R0, SP, CH
0022k(40080001): ADD R0, R0, 1H
0023k(A0E0000C): STR R0, SP, CH
0024l(40E80010): ADD R0, SP, 10H
0025m(F7FFFFDA): BL -38 [0000H]
0026m(E7FFFFEF): B -17 [0016H]
s[i]n := 0X
0027n(80E0000C): LDR R0, SP, CH
0028n(81E00008): LDR R1, SP, 8H
0029n(01090001): SUB R1, R0, R1
002An(DA020A1C): BLCC MT [trap=1, pos=522]
002Bn(81E00004): LDR R1, SP, 4H
002Cn(00180000): ADD R0, R1, R0
ENDo RecName;
002Do(41000000): MOV R1, R0, 0H
002Eo(B1000000): STR R1, R0, 0H
002Fo(8FE00000): LDR LNK, SP, 0H
0030o(4EE80014): ADD SP, SP, 14H
0031o(C700000F): B LNK
PROCEDURE Send(x: BYTE);
BEGINp
0032p(4EE90008): SUB SP, SP, 8H
0033p(AFE00000): STR LNK, SP, 0H
0034p(A0E00004): STR R0, SP, 4H
REPEAT UNTIL SYSTEM.BIT(stat, 1);q
0035q(5000FFCC): MOV R0, R0, FFFFFFCCH
0036q(80000000): LDR R0, R0, 0H
0037q(40030002): ROR R0, R0, 2H
0038q(E8FFFFFC): BPL -4 [0035H]
SYSTEM.PUT(data, x)
ENDr Send;
0039r(5000FFC8): MOV R0, R0, FFFFFFC8H
003Ar(91E00004): LDR R1, SP, 4H
003Br(B1000000): STR R1, R0, 0H
003Cr(8FE00000): LDR LNK, SP, 0H
003Dr(4EE80008): ADD SP, SP, 8H
003Er(C700000F): B LNK
PROCEDURE Task;
VAR len, n, i: INTEGER;
x, ack, len1, code: BYTE;
name: ARRAY 32 OF CHAR;
F: Files.File; R: Files.Rider;
buf: ARRAY 256 OF BYTE;
BEGINs
003Fs(4EE90150): SUB SP, SP, 150H
0040s(AFE00000): STR LNK, SP, 0H
IF SYSTEM.BIT(stat, 0) THENt (*byte available*)
0041t(5000FFCC): MOV R0, R0, FFFFFFCCH
0042t(80000000): LDR R0, R0, 0H
0043t(40030001): ROR R0, R0, 1H
0044t(E80000E9): BPL 233 [012EH]
Rec(code)u;v
0045u(40E80013): ADD R0, SP, 13H
0046v(F7FFFFB9): BL -71 [0000H]
IF code = SND THENw (*send file*)
0047w(90E00013): LDR R0, SP, 13H
0048w(40090022): SUB R0, R0, 22H
0049w(E9000069): BNE 105 [00B3H]
LED(20H);x RecName(name)y;z F := Files.Old(name)a;b
004Ax(40000020): MOV R0, R0, 20H
004Bx(5100FFC4): MOV R1, R0, FFFFFFC4H
004Cx(A0100000): STR R0, R1, 0H
004Dy(40E80014): ADD R0, SP, 14H
004Ey(41000020): MOV R1, R0, 20H
004Fz(F7FFFFBE): BL -66 [000EH]
0050a(40E80014): ADD R0, SP, 14H
0051a(41000020): MOV R1, R0, 20H
0052b .FIXUP P
0052b(F7102052): BL MOD1 [Files] PROC2
0053b(A0E00034): STR R0, SP, 34H
IF F # NIL THENc
0054c(80E00034): LDR R0, SP, 34H
0055c(E100005A): BEQ 90 [00B0H]
Texts.WriteString(W,d "sending ")e;f Texts.WriteString(W,g name)h;i
0056d .FIXUP D
0056d(8D000056): LDR SB, MT, MOD0 [PCLink1]
0057d(40D80004): ADD R0, SB, 4H [data]
0058d .FIXUP D
0058d(8D200002): LDR SB, MT, MOD2 [Texts]
0059d(41D80005): ADD R1, SB, VAR5
005Ae .FIXUP D
005Ae(8D000002): LDR SB, MT, MOD0 [PCLink1]
005Be(42D8002C): ADD R2, SB, 2CH ["sending "]
005Ce(43000009): MOV R3, R0, 9H
005Df .FIXUP P
005Df(F721D00B): BL MOD2 [Texts] PROC29
005Eg .FIXUP D
005Eg(8D000004): LDR SB, MT, MOD0 [PCLink1]
005Fg(40D80004): ADD R0, SB, 4H [data]
0060g .FIXUP D
0060g(8D200002): LDR SB, MT, MOD2 [Texts]
0061g(41D80005): ADD R1, SB, VAR5
0062h(42E80014): ADD R2, SP, 14H
0063h(43000020): MOV R3, R0, 20H
0064i .FIXUP P
0064i(F721D007): BL MOD2 [Texts] PROC29
Texts.Append(Oberon.Log,j W.buf)k;l
0065j .FIXUP D
0065j(8D400005): LDR SB, MT, MOD4 [Oberon]
0066j(80D0000D): LDR R0, SB, VAR13
0067k .FIXUP D
0067k(8D000002): LDR SB, MT, MOD0 [PCLink1]
0068k(81D00004): LDR R1, SB, 4H [data]
0069l .FIXUP P
0069l(F720E005): BL MOD2 [Texts] PROC14
Send(ACK)m;n len := Files.Length(F)o;p Files.Set(R,q F,r 0)s;t
006Am(40000010): MOV R0, R0, 10H
006Bn(F7FFFFC6): BL -58 [0032H]
006Co(80E00034): LDR R0, SP, 34H
006Dp .FIXUP P
006Dp(F7109004): BL MOD1 [Files] PROC9
006Ep(A0E00004): STR R0, SP, 4H
006Fq(40E80038): ADD R0, SP, 38H
0070q .FIXUP D
0070q(8D100009): LDR SB, MT, MOD1 [Files]
0071q(41D80001): ADD R1, SB, VAR1
0072r(82E00034): LDR R2, SP, 34H
0073s(43000000): MOV R3, R0, 0H
0074t .FIXUP P
0074t(F710B007): BL MOD1 [Files] PROC11
REPEAT
IF len >= BlkLen THENu len1 := BlkLen ELSEv len1w := len ENDx ;
0075u(80E00004): LDR R0, SP, 4H
0076u(400900FF): SUB R0, R0, FFH
0077u(E5000003): BLT 3 [007BH]
0078v(400000FF): MOV R0, R0, FFH
0079v(B0E00012): STR R0, SP, 12H
007Aw(E7000002): B 2 [007DH]
007Bx(80E00004): LDR R0, SP, 4H
007Cx(B0E00012): STR R0, SP, 12H
Send(len1)y;z n := len1;a len := len - len1;b
007Dy(90E00012): LDR R0, SP, 12H
007Ez(F7FFFFB3): BL -77 [0032H]
007Fa(90E00012): LDR R0, SP, 12H
0080a(A0E00008): STR R0, SP, 8H
0081b(80E00004): LDR R0, SP, 4H
0082b(91E00012): LDR R1, SP, 12H
0083b(00090001): SUB R0, R0, R1
0084b(A0E00004): STR R0, SP, 4H
WHILE n > 0 DOc Files.ReadByte(R,d x)e;f Send(x)g;h DEC(n) ENDi ;
0085c(80E00008): LDR R0, SP, 8H
0086c(40090000): SUB R0, R0, 0H
0087c(E600000B): BLE 11 [0093H]
0088d(40E80038): ADD R0, SP, 38H
0089d .FIXUP D
0089d(8D100019): LDR SB, MT, MOD1 [Files]
008Ad(41D80001): ADD R1, SB, VAR1
008Be(42E80010): ADD R2, SP, 10H
008Cf .FIXUP P
008Cf(F710E018): BL MOD1 [Files] PROC14
008Dg(90E00010): LDR R0, SP, 10H
008Eh(F7FFFFA3): BL -93 [0032H]
008Fi(80E00008): LDR R0, SP, 8H
0090i(40090001): SUB R0, R0, 1H
0091i(A0E00008): STR R0, SP, 8H
0092i(E7FFFFF2): B -14 [0085H]
Rec(ack)j;k
0093j(40E80011): ADD R0, SP, 11H
0094k(F7FFFF6B): BL -149 [0000H]
IF ack # ACK THENl len1 := 0 ENDm
0095l(90E00011): LDR R0, SP, 11H
0096l(40090010): SUB R0, R0, 10H
0097l(E1000002): BEQ 2 [009AH]
0098m(40000000): MOV R0, R0, 0H
0099m(B0E00012): STR R0, SP, 12H
UNTIL len1 < BlkLen;n
009An(90E00012): LDR R0, SP, 12H
009Bn(400900FF): SUB R0, R0, FFH
009Cn(EDFFFFD8): BGE -40 [0075H]
Texts.WriteString(W,o " done")p;q Texts.WriteLn(W)r;s Texts.Append(Oberon.Log,t W.buf)u
009Do .FIXUP D
009Do(8D000014): LDR SB, MT, MOD0 [PCLink1]
009Eo(40D80004): ADD R0, SB, 4H [data]
009Fo .FIXUP D
009Fo(8D200002): LDR SB, MT, MOD2 [Texts]
00A0o(41D80005): ADD R1, SB, VAR5
00A1p .FIXUP D
00A1p(8D000002): LDR SB, MT, MOD0 [PCLink1]
00A2p(42D80038): ADD R2, SB, 38H [" done"]
00A3p(43000006): MOV R3, R0, 6H
00A4q .FIXUP P
00A4q(F721D018): BL MOD2 [Texts] PROC29
00A5r .FIXUP D
00A5r(8D000004): LDR SB, MT, MOD0 [PCLink1]
00A6r(40D80004): ADD R0, SB, 4H [data]
00A7r .FIXUP D
00A7r(8D200002): LDR SB, MT, MOD2 [Texts]
00A8r(41D80005): ADD R1, SB, VAR5
00A9s .FIXUP P
00A9s(F721C005): BL MOD2 [Texts] PROC28
00AAt .FIXUP D
00AAt(8D400003): LDR SB, MT, MOD4 [Oberon]
00ABt(80D0000D): LDR R0, SB, VAR13
00ACu .FIXUP D
00ACu(8D000002): LDR SB, MT, MOD0 [PCLink1]
00ADu(81D00004): LDR R1, SB, 4H [data]
ELSEv Sendw(11H)x
00AEv .FIXUP P
00AEv(F720E005): BL MOD2 [Texts] PROC14
00AFw(E7000002): B 2 [00B2H]
00B0x(40000011): MOV R0, R0, 11H
ENDy
00B1y(F7FFFF80): BL -128 [0032H]
ELSIF codez = REC THENa (*receive file*)
00B2z(E7000078): B 120 [012BH]
00B3a(90E00013): LDR R0, SP, 13H
00B4a(40090021): SUB R0, R0, 21H
00B5a(E9000070): BNE 112 [0126H]
LED(30H);b RecName(name)c;d F := Files.New(name)e;f
00B6b(40000030): MOV R0, R0, 30H
00B7b(5100FFC4): MOV R1, R0, FFFFFFC4H
00B8b(A0100000): STR R0, R1, 0H
00B9c(40E80014): ADD R0, SP, 14H
00BAc(41000020): MOV R1, R0, 20H
00BBd(F7FFFF52): BL -174 [000EH]
00BCe(40E80014): ADD R0, SP, 14H
00BDe(41000020): MOV R1, R0, 20H
00BEf .FIXUP P
00BEf(F7103010): BL MOD1 [Files] PROC3
00BFf(A0E00034): STR R0, SP, 34H
IF F # NIL THENg
00C0g(80E00034): LDR R0, SP, 34H
00C1g(E1000061): BEQ 97 [0123H]
Texts.WriteString(W,h "receiving ")i;j Texts.WriteString(W,k name)l;m
00C2h .FIXUP D
00C2h(8D000016): LDR SB, MT, MOD0 [PCLink1]
00C3h(40D80004): ADD R0, SB, 4H [data]
00C4h .FIXUP D
00C4h(8D200002): LDR SB, MT, MOD2 [Texts]
00C5h(41D80005): ADD R1, SB, VAR5
00C6i .FIXUP D
00C6i(8D000002): LDR SB, MT, MOD0 [PCLink1]
00C7i(42D80040): ADD R2, SB, 40H ["receiving "]
00C8i(4300000B): MOV R3, R0, BH
00C9j .FIXUP P
00C9j(F721D00B): BL MOD2 [Texts] PROC29
00CAk .FIXUP D
00CAk(8D000004): LDR SB, MT, MOD0 [PCLink1]
00CBk(40D80004): ADD R0, SB, 4H [data]
00CCk .FIXUP D
00CCk(8D200002): LDR SB, MT, MOD2 [Texts]
00CDk(41D80005): ADD R1, SB, VAR5
00CEl(42E80014): ADD R2, SP, 14H
00CFl(43000020): MOV R3, R0, 20H
00D0m .FIXUP P
00D0m(F721D007): BL MOD2 [Texts] PROC29
Texts.Append(Oberon.Log,n W.buf)o;p
00D1n .FIXUP D
00D1n(8D400005): LDR SB, MT, MOD4 [Oberon]
00D2n(80D0000D): LDR R0, SB, VAR13
00D3o .FIXUP D
00D3o(8D000002): LDR SB, MT, MOD0 [PCLink1]
00D4o(81D00004): LDR R1, SB, 4H [data]
00D5p .FIXUP P
00D5p(F720E005): BL MOD2 [Texts] PROC14
Files.Set(R,q F,r 0)s;t Send(ACK)u;v
00D6q(40E80038): ADD R0, SP, 38H
00D7q .FIXUP D
00D7q(8D100004): LDR SB, MT, MOD1 [Files]
00D8q(41D80001): ADD R1, SB, VAR1
00D9r(82E00034): LDR R2, SP, 34H
00DAs(43000000): MOV R3, R0, 0H
00DBt .FIXUP P
00DBt(F710B006): BL MOD1 [Files] PROC11
00DCu(40000010): MOV R0, R0, 10H
00DDv(F7FFFF54): BL -172 [0032H]
REPEAT Rec(x)w;x len := x;y i := 0;z
00DEw(40E80010): ADD R0, SP, 10H
00DFx(F7FFFF20): BL -224 [0000H]
00E0y(90E00010): LDR R0, SP, 10H
00E1y(A0E00004): STR R0, SP, 4H
00E2z(40000000): MOV R0, R0, 0H
00E3z(A0E0000C): STR R0, SP, CH
WHILE i < len DOa Rec(x)b;c buf[i]d := x;e INC(i) ENDf ;
00E4a(80E0000C): LDR R0, SP, CH
00E5a(81E00004): LDR R1, SP, 4H
00E6a(00090001): SUB R0, R0, R1
00E7a(ED00000C): BGE 12 [00F4H]
00E8b(40E80010): ADD R0, SP, 10H
00E9c(F7FFFF16): BL -234 [0000H]
00EAd(80E0000C): LDR R0, SP, CH
00EBd(41090100): SUB R1, R0, 100H
00ECd(DA080C1C): BLCC MT [trap=1, pos=2060]
00EDd(00E80000): ADD R0, SP, R0
00EEe(91E00010): LDR R1, SP, 10H
00EFe(B1000050): STR R1, R0, 50H
00F0f(80E0000C): LDR R0, SP, CH
00F1f(40080001): ADD R0, R0, 1H
00F2f(A0E0000C): STR R0, SP, CH
00F3f(E7FFFFF0): B -16 [00E4H]
i := 0;g
00F4g(40000000): MOV R0, R0, 0H
00F5g(A0E0000C): STR R0, SP, CH
WHILE i < len DOh Files.WriteByte(R,i buf[i]j)k;l INC(i) ENDm ;
00F6h(80E0000C): LDR R0, SP, CH
00F7h(81E00004): LDR R1, SP, 4H
00F8h(00090001): SUB R0, R0, R1
00F9h(ED00000D): BGE 13 [0107H]
00FAi(40E80038): ADD R0, SP, 38H
00FBi .FIXUP D
00FBi(8D100024): LDR SB, MT, MOD1 [Files]
00FCi(41D80001): ADD R1, SB, VAR1
00FDj(82E0000C): LDR R2, SP, CH
00FEj(43290100): SUB R3, R2, 100H
00FFj(DA086E1C): BLCC MT [trap=1, pos=2158]
0100j(02E80002): ADD R2, SP, R2
0101k(92200050): LDR R2, R2, 50H
0102l .FIXUP P
0102l(F7116027): BL MOD1 [Files] PROC22
0103m(80E0000C): LDR R0, SP, CH
0104m(40080001): ADD R0, R0, 1H
0105m(A0E0000C): STR R0, SP, CH
0106m(E7FFFFEF): B -17 [00F6H]
Send(ACK)n
0107n(40000010): MOV R0, R0, 10H
UNTILo len < 255;p
0108o(F7FFFF29): BL -215 [0032H]
0109p(80E00004): LDR R0, SP, 4H
010Ap(400900FF): SUB R0, R0, FFH
010Bp(EDFFFFD2): BGE -46 [00DEH]
Files.Register(F)q;r Send(ACK)s;t
010Cq(80E00034): LDR R0, SP, 34H
010Dr .FIXUP P
010Dr(F710400B): BL MOD1 [Files] PROC4
010Es(40000010): MOV R0, R0, 10H
010Ft(F7FFFF22): BL -222 [0032H]
Texts.WriteString(W,u " done")v;w Texts.WriteLn(W)x;y Texts.Append(Oberon.Log,z W.buf)a
0110u .FIXUP D
0110u(8D000015): LDR SB, MT, MOD0 [PCLink1]
0111u(40D80004): ADD R0, SB, 4H [data]
0112u .FIXUP D
0112u(8D200002): LDR SB, MT, MOD2 [Texts]
0113u(41D80005): ADD R1, SB, VAR5
0114v .FIXUP D
0114v(8D000002): LDR SB, MT, MOD0 [PCLink1]
0115v(42D8004C): ADD R2, SB, 4CH [" done"]
0116v(43000006): MOV R3, R0, 6H
0117w .FIXUP P
0117w(F721D00A): BL MOD2 [Texts] PROC29
0118x .FIXUP D
0118x(8D000004): LDR SB, MT, MOD0 [PCLink1]
0119x(40D80004): ADD R0, SB, 4H [data]
011Ax .FIXUP D
011Ax(8D200002): LDR SB, MT, MOD2 [Texts]
011Bx(41D80005): ADD R1, SB, VAR5
011Cy .FIXUP P
011Cy(F721C005): BL MOD2 [Texts] PROC28
011Dz .FIXUP D
011Dz(8D400003): LDR SB, MT, MOD4 [Oberon]
011Ez(80D0000D): LDR R0, SB, VAR13
011Fa .FIXUP D
011Fa(8D000002): LDR SB, MT, MOD0 [PCLink1]
0120a(81D00004): LDR R1, SB, 4H [data]
ELSEb Sendc(NAK)d
0121b .FIXUP P
0121b(F720E005): BL MOD2 [Texts] PROC14
0122c(E7000002): B 2 [0125H]
0123d(40000011): MOV R0, R0, 11H
ENDe
0124e(F7FFFF0D): BL -243 [0032H]
ELSIF codef = REQ THENg Send(ACK)h
0125f(E7000005): B 5 [012BH]
0126g(90E00013): LDR R0, SP, 13H
0127g(40090020): SUB R0, R0, 20H
0128g(E9000002): BNE 2 [012BH]
0129h(40000010): MOV R0, R0, 10H
ENDi ;
012Ai(F7FFFF07): BL -249 [0032H]
LED(0)
ENDj
012Bj(40000000): MOV R0, R0, 0H
012Cj(5100FFC4): MOV R1, R0, FFFFFFC4H
012Dj(A0100000): STR R0, R1, 0H
ENDk Task;
012Ek(8FE00000): LDR LNK, SP, 0H
012Fk(4EE80150): ADD SP, SP, 150H
0130k(C700000F): B LNK
PROCEDURE Run*;
BEGINl Oberon.Install(T)m;n Texts.WriteString(W,o "PCLink started")p;q
0131l .PROC 1
0131l .COMMAND Run
0131l(4EE90004): SUB SP, SP, 4H
0132l(AFE00000): STR LNK, SP, 0H
0133m .FIXUP D
0133m(8D000014): LDR SB, MT, MOD0 [PCLink1]
0134m(80D00000): LDR R0, SB, 0H [data]
0135n .FIXUP P
0135n(F742B014): BL MOD4 [Oberon] PROC43
0136o .FIXUP D
0136o(8D000003): LDR SB, MT, MOD0 [PCLink1]
0137o(40D80004): ADD R0, SB, 4H [data]
0138o .FIXUP D
0138o(8D200002): LDR SB, MT, MOD2 [Texts]
0139o(41D80005): ADD R1, SB, VAR5
013Ap .FIXUP D
013Ap(8D000002): LDR SB, MT, MOD0 [PCLink1]
013Bp(42D80054): ADD R2, SB, 54H ["PCLink started"]
013Cp(4300000F): MOV R3, R0, FH
013Dq .FIXUP P
013Dq(F721D008): BL MOD2 [Texts] PROC29
Texts.WriteLn(W)r;s Texts.Append(Oberon.Log,t W.buf)u
013Er .FIXUP D
013Er(8D000004): LDR SB, MT, MOD0 [PCLink1]
013Fr(40D80004): ADD R0, SB, 4H [data]
0140r .FIXUP D
0140r(8D200002): LDR SB, MT, MOD2 [Texts]
0141r(41D80005): ADD R1, SB, VAR5
0142s .FIXUP P
0142s(F721C005): BL MOD2 [Texts] PROC28
0143t .FIXUP D
0143t(8D400003): LDR SB, MT, MOD4 [Oberon]
0144t(80D0000D): LDR R0, SB, VAR13
0145u .FIXUP D
0145u(8D000002): LDR SB, MT, MOD0 [PCLink1]
0146u(81D00004): LDR R1, SB, 4H [data]
ENDv Run;
0147v .FIXUP P
0147v(F720E005): BL MOD2 [Texts] PROC14
0148v(8FE00000): LDR LNK, SP, 0H
0149v(4EE80004): ADD SP, SP, 4H
014Av(C700000F): B LNK
PROCEDURE Stop*;
BEGINw Oberon.Remove(T)x;y Texts.WriteString(W,z "PCLink stopped")a;b
014Bw .PROC 2
014Bw .COMMAND Stop
014Bw(4EE90004): SUB SP, SP, 4H
014Cw(AFE00000): STR LNK, SP, 0H
014Dx .FIXUP D
014Dx(8D000008): LDR SB, MT, MOD0 [PCLink1]
014Ex(80D00000): LDR R0, SB, 0H [data]
014Fy .FIXUP P
014Fy(F742C008): BL MOD4 [Oberon] PROC44
0150z .FIXUP D
0150z(8D000003): LDR SB, MT, MOD0 [PCLink1]
0151z(40D80004): ADD R0, SB, 4H [data]
0152z .FIXUP D
0152z(8D200002): LDR SB, MT, MOD2 [Texts]
0153z(41D80005): ADD R1, SB, VAR5
0154a .FIXUP D
0154a(8D000002): LDR SB, MT, MOD0 [PCLink1]
0155a(42D80064): ADD R2, SB, 64H ["PCLink stopped"]
0156a(4300000F): MOV R3, R0, FH
0157b .FIXUP P
0157b(F721D008): BL MOD2 [Texts] PROC29
Texts.WriteLn(W)c;d Texts.Append(Oberon.Log,e W.buf)f
0158c .FIXUP D
0158c(8D000004): LDR SB, MT, MOD0 [PCLink1]
0159c(40D80004): ADD R0, SB, 4H [data]
015Ac .FIXUP D
015Ac(8D200002): LDR SB, MT, MOD2 [Texts]
015Bc(41D80005): ADD R1, SB, VAR5
015Cd .FIXUP P
015Cd(F721C005): BL MOD2 [Texts] PROC28
015De .FIXUP D
015De(8D400003): LDR SB, MT, MOD4 [Oberon]
015Ee(80D0000D): LDR R0, SB, VAR13
015Ff .FIXUP D
015Ff(8D000002): LDR SB, MT, MOD0 [PCLink1]
0160f(81D00004): LDR R1, SB, 4H [data]
ENDg Stop;
0161g .FIXUP P
0161g(F720E005): BL MOD2 [Texts] PROC14
0162g(8FE00000): LDR LNK, SP, 0H
0163g(4EE80004): ADD SP, SP, 4H
0164g(C700000F): B LNK
BEGINh Texts.OpenWriter(W)i;j T := Oberon.NewTask(Task,k 0)l
0165h .PROC 0
0165h .ENTRYPOINT
0165h(4EE90004): SUB SP, SP, 4H
0166h(AFE00000): STR LNK, SP, 0H
0167i .FIXUP D
0167i(8D000008): LDR SB, MT, MOD0 [PCLink1]
0168i(40D80004): ADD R0, SB, 4H [data]
0169i .FIXUP D
0169i(8D200002): LDR SB, MT, MOD2 [Texts]
016Ai(41D80005): ADD R1, SB, VAR5
016Bj .FIXUP P
016Bj(F721700A): BL MOD2 [Texts] PROC23
016Ck(F7000000): BL 0 [016DH]
016Dk(40F904B8): SUB R0, LNK, 4B8H
016El(41000000): MOV R1, R0, 0H
ENDm PCLink1.n
016Fm .FIXUP P
016Fm(F742A004): BL MOD4 [Oberon] PROC42
0170m .FIXUP D
0170m(8D000007): LDR SB, MT, MOD0 [PCLink1]
0171m(A0D00000): STR R0, SB, 0H [data]
0172n(8FE00000): LDR LNK, SP, 0H
0173n(4EE80004): ADD SP, SP, 4H
0174n(C700000F): B LNK