| MODULE Net; (*NW 3.7.88 / 25.8.91 / PR 7.8.13 / 9.12.13*) |
| | .MODULE Net (KEY 09ABD39E, VERSION 1, SIZE 00001B8C) |
| | .IMPORT SCC (KEY BC919698) |
| | .IMPORT Files (KEY 73F5D686) |
| | .IMPORT Viewers (KEY 25ABF199) |
| | .IMPORT Display (KEY 4C08D3EA) |
| | .IMPORT Texts (KEY 0B9E9984) |
| | .IMPORT Fonts (KEY F4C9F557) |
| | .IMPORT TextFrames (KEY 650813D5) |
| | .IMPORT MenuViewers (KEY 245ACC30) |
| | .IMPORT Oberon (KEY A89CCEE2) |
| | .DATA 50H |
| | .STRING 50H " failed" |
| | .STRING 58H " failed" |
| | .STRING 60H " no link" |
| | .STRING 6CH " no permission" |
| | .STRING 7CH " not done" |
| | .STRING 88H " not found" |
| | .STRING 94H " no response" |
| | .STRING A4H " time set" |
| | .STRING B0H " sending" |
| | .STRING BCH " receiving" |
| | .STRING C8H " changedSystem.Date" |
| | .STRING DCH " sending" |
| | .STRING E8H " receiving" |
| | .STRING F4H " Server started as " |
| | .STRING 108H " Server stopped" |
| | .STRING 118H "SCC.Available() " |
| | .POINTER_REFERENCES 0H 4H 24H 18H 28H |
| | .FIXUP T 0H |
| IMPORT SYSTEM, SCC, Files, Viewers, Texts, TextFrames, MenuViewers, Oberon; |
| |
| CONST PakSize = 512; |
| (*T0 = 300; T1 = 1000; (*timeouts*)*) |
| T0 = 1000; T1 = 3000; (*timeouts*) |
| ACK = 10H; NAK = 25H; NPR = 26H; (*acknowledgements*) |
| NRQ = 34H; NRS = 35H; (*name request, response*) |
| SND = 41H; REC = 42H; MSG = 44H; |
| TRQ = 46H; TIM = 47H; (*time requests*) |
| |
| VAR W: Texts.Writer; |
| Server: Oberon.Task; |
| head0, head1: SCC.Header; |
| partner: ARRAY 8 OF CHAR; |
| dmy: ARRAY 8 OF BYTE; |
| protected: BOOLEAN; (*write-protection*) |
| |
| PROCEDURE SetPartner(name: ARRAY OF CHAR); |
| BEGINa head0.dadr := head1.sadr;b partner := name |
| 0000 | a(4EE9000C): SUB SP, SP, CH |
| 0001 | a(AFE00000): STR LNK, SP, 0H |
| 0002 | a(A0E00004): STR R0, SP, 4H |
| 0003 | a(A1E00008): STR R1, SP, 8H |
| 0004 | b .FIXUP D |
| 0004 | b(8D000004): LDR SB, MT, MOD0 [Net] |
| 0005 | b(90D00036): LDR R0, SB, 36H [data] |
| 0006 | b(B0D0002D): STR R0, SB, 2DH |
| ENDc SetPartner; |
| 0007 | c(40D8003C): ADD R0, SB, 3CH |
| 0008 | c(81E00004): LDR R1, SP, 4H |
| 0009 | c(82E00008): LDR R2, SP, 8H |
| 000A | c(E100000B): BEQ 11 [0016H] |
| 000B | c(42280003): ADD R2, R2, 3H |
| 000C | c(42220002): ASR R2, R2, 2H |
| 000D | c(43000002): MOV R3, R0, 2H |
| 000E | c(03290003): SUB R3, R2, R3 |
| 000F | c(DE02CF3C): BLGT MT [trap=3, pos=719] |
| 0010 | c(83100000): LDR R3, R1, 0H |
| 0011 | c(41180004): ADD R1, R1, 4H |
| 0012 | c(A3000000): STR R3, R0, 0H |
| 0013 | c(40080004): ADD R0, R0, 4H |
| 0014 | c(42290001): SUB R2, R2, 1H |
| 0015 | c(E9FFFFFA): BNE -6 [0010H] |
| 0016 | c(8FE00000): LDR LNK, SP, 0H |
| 0017 | c(4EE8000C): ADD SP, SP, CH |
| 0018 | c(C700000F): B LNK |
| |
| PROCEDURE Send(t: BYTE; L: INTEGER; data: ARRAY OF BYTE); |
| BEGINd head0.typ := t;e head0.len := L;f SCC.SendPacket(head0,g data)h |
| 0019 | d(4EE90014): SUB SP, SP, 14H |
| 001A | d(AFE00000): STR LNK, SP, 0H |
| 001B | d(A0E00004): STR R0, SP, 4H |
| 001C | d(A1E00008): STR R1, SP, 8H |
| 001D | d(A2E0000C): STR R2, SP, CH |
| 001E | d(A3E00010): STR R3, SP, 10H |
| 001F | e(90E00004): LDR R0, SP, 4H |
| 0020 | e .FIXUP D |
| 0020 | e(8D00001C): LDR SB, MT, MOD0 [Net] |
| 0021 | e(B0D0002F): STR R0, SB, 2FH [data] |
| 0022 | f(80E00008): LDR R0, SP, 8H |
| 0023 | f(A0D00030): STR R0, SB, 30H |
| 0024 | g(40D8002C): ADD R0, SB, 2CH |
| 0025 | g .FIXUP D |
| 0025 | g(8D100005): LDR SB, MT, MOD1 [SCC] |
| 0026 | g(41D80001): ADD R1, SB, VAR1 |
| 0027 | h(82E0000C): LDR R2, SP, CH |
| 0028 | h(83E00010): LDR R3, SP, 10H |
| ENDi Send; |
| 0029 | i .FIXUP P |
| 0029 | i(F7105029): BL MOD1 [SCC] PROC5 |
| 002A | i(8FE00000): LDR LNK, SP, 0H |
| 002B | i(4EE80014): ADD SP, SP, 14H |
| 002C | i(C700000F): B LNK |
| |
| PROCEDURE ReceiveHead(timeout: LONGINT); |
| VAR time: LONGINT; |
| BEGINj time := Oberon.Time() +k timeout;l |
| 002D | j(4EE9000C): SUB SP, SP, CH |
| 002E | j(AFE00000): STR LNK, SP, 0H |
| 002F | j(A0E00004): STR R0, SP, 4H |
| 0030 | k .FIXUP P |
| 0030 | k(F7916007): BL MOD9 [Oberon] PROC22 |
| 0031 | l(81E00004): LDR R1, SP, 4H |
| 0032 | l(00080001): ADD R0, R0, R1 |
| 0033 | l(A0E00008): STR R0, SP, 8H |
| REPEAT |
| SCC.ReceiveHead(head1)m;n |
| 0034 | m .FIXUP D |
| 0034 | m(8D00000F): LDR SB, MT, MOD0 [Net] |
| 0035 | m(40D80034): ADD R0, SB, 34H [data] |
| 0036 | m .FIXUP D |
| 0036 | m(8D100002): LDR SB, MT, MOD1 [SCC] |
| 0037 | m(41D80001): ADD R1, SB, VAR1 |
| 0038 | n .FIXUP P |
| 0038 | n(F7108008): BL MOD1 [SCC] PROC8 |
| IF head1.valid & (ohead1.sadr # head0.dadr)p THENq |
| 0039 | o .FIXUP D |
| 0039 | o(8D000003): LDR SB, MT, MOD0 [Net] |
| 003A | o(90D00034): LDR R0, SB, 34H [data] |
| 003B | o(E100000B): BEQ 11 [0047H] |
| 003C | p .FIXUP D |
| 003C | p(8D000003): LDR SB, MT, MOD0 [Net] |
| 003D | p(90D00036): LDR R0, SB, 36H [data] |
| 003E | p(91D0002D): LDR R1, SB, 2DH |
| 003F | p(00090001): SUB R0, R0, R1 |
| 0040 | q(E1000006): BEQ 6 [0047H] |
| SCC.Skip(head1.len)r;s head1.valid := FALSE |
| 0041 | r .FIXUP D |
| 0041 | r(8D000005): LDR SB, MT, MOD0 [Net] |
| 0042 | r(80D00038): LDR R0, SB, 38H [data] |
| 0043 | s .FIXUP P |
| 0043 | s(F710900B): BL MOD1 [SCC] PROC9 |
| ENDt; |
| 0044 | t(40000000): MOV R0, R0, 0H |
| 0045 | t .FIXUP D |
| 0045 | t(8D000004): LDR SB, MT, MOD0 [Net] |
| 0046 | t(B0D00034): STR R0, SB, 34H [data] |
| IF ~head1.valid &u (vOberon.Time() >=w time)x THENy head1.typ := 0FFH ENDz |
| 0047 | u .FIXUP D |
| 0047 | u(8D000002): LDR SB, MT, MOD0 [Net] |
| 0048 | u(90D00034): LDR R0, SB, 34H [data] |
| 0049 | v(E9000007): BNE 7 [0051H] |
| 004A | w .FIXUP P |
| 004A | w(F7916007): BL MOD9 [Oberon] PROC22 |
| 004B | x(81E00008): LDR R1, SP, 8H |
| 004C | x(00090001): SUB R0, R0, R1 |
| 004D | y(E5000003): BLT 3 [0051H] |
| 004E | z(400000FF): MOV R0, R0, FFH |
| 004F | z .FIXUP D |
| 004F | z(8D000008): LDR SB, MT, MOD0 [Net] |
| 0050 | z(B0D00037): STR R0, SB, 37H [data] |
| UNTIL head1.valid OR (ahead1.typ = 0FFH)b |
| 0051 | a .FIXUP D |
| 0051 | a(8D000002): LDR SB, MT, MOD0 [Net] |
| 0052 | a(90D00034): LDR R0, SB, 34H [data] |
| 0053 | a(E9000004): BNE 4 [0058H] |
| 0054 | b .FIXUP D |
| 0054 | b(8D000003): LDR SB, MT, MOD0 [Net] |
| 0055 | b(90D00037): LDR R0, SB, 37H [data] |
| 0056 | b(400900FF): SUB R0, R0, FFH |
| ENDc ReceiveHead; |
| 0057 | c(E9FFFFDC): BNE -36 [0034H] |
| 0058 | c(8FE00000): LDR LNK, SP, 0H |
| 0059 | c(4EE8000C): ADD SP, SP, CH |
| 005A | c(C700000F): B LNK |
| |
| PROCEDURE FindPartner(name: ARRAY OF CHAR; VAR res: INTEGER); |
| VAR time: LONGINT; k: INTEGER; |
| Id: ARRAY 8 OF CHAR; IdB: ARRAY 8 OF BYTE; |
| BEGINd SCC.Skip(SCC.Available())e;f res := 0;g k := 0;h |
| 005B | d(4EE90028): SUB SP, SP, 28H |
| 005C | d(AFE00000): STR LNK, SP, 0H |
| 005D | d(A0E00004): STR R0, SP, 4H |
| 005E | d(A1E00008): STR R1, SP, 8H |
| 005F | d(A2E0000C): STR R2, SP, CH |
| 0060 | e .FIXUP P |
| 0060 | e(F7106016): BL MOD1 [SCC] PROC6 |
| 0061 | f .FIXUP P |
| 0061 | f(F7109001): BL MOD1 [SCC] PROC9 |
| 0062 | g(40000000): MOV R0, R0, 0H |
| 0063 | g(81E0000C): LDR R1, SP, CH |
| 0064 | g(A0100000): STR R0, R1, 0H |
| 0065 | h(40000000): MOV R0, R0, 0H |
| 0066 | h(A0E00014): STR R0, SP, 14H |
| WHILE (k < 7)i & (jname[k]k # 0X)l DOm Id[k]n := name[k]o;p IdB[k]q := ORD(Id[k]r);s INC(k) ENDt; |
| 0067 | i(80E00014): LDR R0, SP, 14H |
| 0068 | i(40090007): SUB R0, R0, 7H |
| 0069 | j(ED000022): BGE 34 [008CH] |
| 006A | k(80E00014): LDR R0, SP, 14H |
| 006B | k(81E00008): LDR R1, SP, 8H |
| 006C | k(01090001): SUB R1, R0, R1 |
| 006D | k(DA05E11C): BLCC MT [trap=1, pos=1505] |
| 006E | k(81E00004): LDR R1, SP, 4H |
| 006F | k(00180000): ADD R0, R1, R0 |
| 0070 | l(90000000): LDR R0, R0, 0H |
| 0071 | m(E100001A): BEQ 26 [008CH] |
| 0072 | n(80E00014): LDR R0, SP, 14H |
| 0073 | n(41090008): SUB R1, R0, 8H |
| 0074 | n(DA05F01C): BLCC MT [trap=1, pos=1520] |
| 0075 | n(00E80000): ADD R0, SP, R0 |
| 0076 | o(81E00014): LDR R1, SP, 14H |
| 0077 | o(82E00008): LDR R2, SP, 8H |
| 0078 | o(02190002): SUB R2, R1, R2 |
| 0079 | o(DA05FB1C): BLCC MT [trap=1, pos=1531] |
| 007A | o(82E00004): LDR R2, SP, 4H |
| 007B | o(01280001): ADD R1, R2, R1 |
| 007C | p(91100000): LDR R1, R1, 0H |
| 007D | p(B1000018): STR R1, R0, 18H |
| 007E | q(80E00014): LDR R0, SP, 14H |
| 007F | q(41090008): SUB R1, R0, 8H |
| 0080 | q(DA06031C): BLCC MT [trap=1, pos=1539] |
| 0081 | q(00E80000): ADD R0, SP, R0 |
| 0082 | r(81E00014): LDR R1, SP, 14H |
| 0083 | r(42190008): SUB R2, R1, 8H |
| 0084 | r(DA06101C): BLCC MT [trap=1, pos=1552] |
| 0085 | r(01E80001): ADD R1, SP, R1 |
| 0086 | s(91100018): LDR R1, R1, 18H |
| 0087 | s(B1000020): STR R1, R0, 20H |
| 0088 | t(80E00014): LDR R0, SP, 14H |
| 0089 | t(40080001): ADD R0, R0, 1H |
| 008A | t(A0E00014): STR R0, SP, 14H |
| 008B | t(E7FFFFDB): B -37 [0067H] |
| Id[k]u := 0X;v IdB[k]w := 0;x (* <-- also terminate IdB *) |
| 008C | u(80E00014): LDR R0, SP, 14H |
| 008D | u(41090008): SUB R1, R0, 8H |
| 008E | u(DA06281C): BLCC MT [trap=1, pos=1576] |
| 008F | u(00E80000): ADD R0, SP, R0 |
| 0090 | v(41000000): MOV R1, R0, 0H |
| 0091 | v(B1000018): STR R1, R0, 18H |
| 0092 | w(80E00014): LDR R0, SP, 14H |
| 0093 | w(41090008): SUB R1, R0, 8H |
| 0094 | w(DA06361C): BLCC MT [trap=1, pos=1590] |
| 0095 | w(00E80000): ADD R0, SP, R0 |
| 0096 | x(41000000): MOV R1, R0, 0H |
| 0097 | x(B1000020): STR R1, R0, 20H |
| IF Id # partner THENy |
| 0098 | y(40E80018): ADD R0, SP, 18H |
| 0099 | y .FIXUP D |
| 0099 | y(8D000045): LDR SB, MT, MOD0 [Net] |
| 009A | y(41D8003C): ADD R1, SB, 3CH [data] |
| 009B | y(92000000): LDR R2, R0, 0H |
| 009C | y(40080001): ADD R0, R0, 1H |
| 009D | y(93100000): LDR R3, R1, 0H |
| 009E | y(41180001): ADD R1, R1, 1H |
| 009F | y(04290003): SUB R4, R2, R3 |
| 00A0 | y(E9000002): BNE 2 [00A3H] |
| 00A1 | y(44290000): SUB R4, R2, 0H |
| 00A2 | y(E9FFFFF8): BNE -8 [009BH] |
| 00A3 | y(E1000033): BEQ 51 [00D7H] |
| head0.dadr := 0FFH;z Send(NRQ,a k+1,b IdB)c;d time := Oberon.Time() +e T1;f |
| 00A4 | z(400000FF): MOV R0, R0, FFH |
| 00A5 | z .FIXUP D |
| 00A5 | z(8D00000C): LDR SB, MT, MOD0 [Net] |
| 00A6 | z(B0D0002D): STR R0, SB, 2DH [data] |
| 00A7 | a(40000034): MOV R0, R0, 34H |
| 00A8 | b(81E00014): LDR R1, SP, 14H |
| 00A9 | b(41180001): ADD R1, R1, 1H |
| 00AA | c(42E80020): ADD R2, SP, 20H |
| 00AB | c(43000008): MOV R3, R0, 8H |
| 00AC | d(F7FFFF6C): BL -148 [0019H] |
| 00AD | e .FIXUP P |
| 00AD | e(F791604C): BL MOD9 [Oberon] PROC22 |
| 00AE | f(40080BB8): ADD R0, R0, BB8H |
| 00AF | f(A0E00010): STR R0, SP, 10H |
| REPEAT |
| SCC.ReceiveHead(head1)g;h |
| 00B0 | g .FIXUP D |
| 00B0 | g(8D00000B): LDR SB, MT, MOD0 [Net] |
| 00B1 | g(40D80034): ADD R0, SB, 34H [data] |
| 00B2 | g .FIXUP D |
| 00B2 | g(8D100002): LDR SB, MT, MOD1 [SCC] |
| 00B3 | g(41D80001): ADD R1, SB, VAR1 |
| 00B4 | h .FIXUP P |
| 00B4 | h(F7108007): BL MOD1 [SCC] PROC8 |
| IF head1.valid THENi |
| 00B5 | i .FIXUP D |
| 00B5 | i(8D000003): LDR SB, MT, MOD0 [Net] |
| 00B6 | i(90D00034): LDR R0, SB, 34H [data] |
| 00B7 | i(E100000F): BEQ 15 [00C7H] |
| IF head1.typ = NRS THENj SetPartner(Id)k |
| 00B8 | j .FIXUP D |
| 00B8 | j(8D000003): LDR SB, MT, MOD0 [Net] |
| 00B9 | j(90D00037): LDR R0, SB, 37H [data] |
| 00BA | j(40090035): SUB R0, R0, 35H |
| 00BB | j(E9000004): BNE 4 [00C0H] |
| 00BC | k(40E80018): ADD R0, SP, 18H |
| 00BD | k(41000008): MOV R1, R0, 8H |
| ELSEl SCCm.Skip(head1.len)n;o head1.valid := FALSE |
| 00BE | l(F7FFFF41): BL -191 [0000H] |
| 00BF | m(E7000006): B 6 [00C6H] |
| 00C0 | n .FIXUP D |
| 00C0 | n(8D000008): LDR SB, MT, MOD0 [Net] |
| 00C1 | n(80D00038): LDR R0, SB, 38H [data] |
| 00C2 | o .FIXUP P |
| 00C2 | o(F710900E): BL MOD1 [SCC] PROC9 |
| ENDp |
| 00C3 | p(40000000): MOV R0, R0, 0H |
| 00C4 | p .FIXUP D |
| 00C4 | p(8D000004): LDR SB, MT, MOD0 [Net] |
| 00C5 | p(B0D00034): STR R0, SB, 34H [data] |
| ELSIF Oberonq.Time() >=r time THENs res := 1;t partner[0] := 0X |
| 00C6 | q(E700000A): B 10 [00D1H] |
| 00C7 | r .FIXUP P |
| 00C7 | r(F7916005): BL MOD9 [Oberon] PROC22 |
| 00C8 | s(81E00010): LDR R1, SP, 10H |
| 00C9 | s(00090001): SUB R0, R0, R1 |
| 00CA | s(E5000006): BLT 6 [00D1H] |
| 00CB | t(40000001): MOV R0, R0, 1H |
| 00CC | t(81E0000C): LDR R1, SP, CH |
| 00CD | t(A0100000): STR R0, R1, 0H |
| ENDu |
| 00CE | u(40000000): MOV R0, R0, 0H |
| 00CF | u .FIXUP D |
| 00CF | u(8D00000B): LDR SB, MT, MOD0 [Net] |
| 00D0 | u(B0D0003C): STR R0, SB, 3CH [data] |
| UNTIL head1.valid OR (vres # 0)w |
| 00D1 | v .FIXUP D |
| 00D1 | v(8D000002): LDR SB, MT, MOD0 [Net] |
| 00D2 | v(90D00034): LDR R0, SB, 34H [data] |
| 00D3 | v(E9000003): BNE 3 [00D7H] |
| 00D4 | w(80E0000C): LDR R0, SP, CH |
| 00D5 | w(80000000): LDR R0, R0, 0H |
| ENDx |
| 00D6 | x(E1FFFFD9): BEQ -39 [00B0H] |
| ENDy FindPartner; |
| 00D7 | y(8FE00000): LDR LNK, SP, 0H |
| 00D8 | y(4EE80028): ADD SP, SP, 28H |
| 00D9 | y(C700000F): B LNK |
| |
| PROCEDURE AppendS(s: ARRAY OF CHAR; VAR d: ARRAY OF BYTE; VAR k: INTEGER); |
| VAR i: INTEGER; ch: CHAR; |
| BEGINz i := 0;a |
| 00DA | z(4EE90020): SUB SP, SP, 20H |
| 00DB | z(AFE00000): STR LNK, SP, 0H |
| 00DC | z(A0E00004): STR R0, SP, 4H |
| 00DD | z(A1E00008): STR R1, SP, 8H |
| 00DE | z(A2E0000C): STR R2, SP, CH |
| 00DF | z(A3E00010): STR R3, SP, 10H |
| 00E0 | z(A4E00014): STR R4, SP, 14H |
| 00E1 | a(40000000): MOV R0, R0, 0H |
| 00E2 | a(A0E00018): STR R0, SP, 18H |
| REPEAT ch := s[i]b;c d[k]d := ORD(ch);e INC(i);f INC(k) UNTILg ch = 0X |
| 00E3 | b(80E00018): LDR R0, SP, 18H |
| 00E4 | b(81E00008): LDR R1, SP, 8H |
| 00E5 | b(01090001): SUB R1, R0, R1 |
| 00E6 | b(DA08A01C): BLCC MT [trap=1, pos=2208] |
| 00E7 | b(81E00004): LDR R1, SP, 4H |
| 00E8 | b(00180000): ADD R0, R1, R0 |
| 00E9 | c(90000000): LDR R0, R0, 0H |
| 00EA | c(B0E0001C): STR R0, SP, 1CH |
| 00EB | d(80E00014): LDR R0, SP, 14H |
| 00EC | d(80000000): LDR R0, R0, 0H |
| 00ED | d(81E00010): LDR R1, SP, 10H |
| 00EE | d(01090001): SUB R1, R0, R1 |
| 00EF | d(DA08A61C): BLCC MT [trap=1, pos=2214] |
| 00F0 | d(81E0000C): LDR R1, SP, CH |
| 00F1 | d(00180000): ADD R0, R1, R0 |
| 00F2 | e(91E0001C): LDR R1, SP, 1CH |
| 00F3 | e(B1000000): STR R1, R0, 0H |
| 00F4 | f(80E00018): LDR R0, SP, 18H |
| 00F5 | f(40080001): ADD R0, R0, 1H |
| 00F6 | f(A0E00018): STR R0, SP, 18H |
| 00F7 | g(80E00014): LDR R0, SP, 14H |
| 00F8 | g(81000000): LDR R1, R0, 0H |
| 00F9 | g(41180001): ADD R1, R1, 1H |
| 00FA | g(A1000000): STR R1, R0, 0H |
| ENDh AppendS; |
| 00FB | h(90E0001C): LDR R0, SP, 1CH |
| 00FC | h(E9FFFFE6): BNE -26 [00E3H] |
| 00FD | h(8FE00000): LDR LNK, SP, 0H |
| 00FE | h(4EE80020): ADD SP, SP, 20H |
| 00FF | h(C700000F): B LNK |
| |
| PROCEDURE AppendW(s: LONGINT; VAR d: ARRAY OF BYTE; |
| n: INTEGER; VAR k: INTEGER); |
| VAR i: INTEGER; |
| BEGINi i := 0;j |
| 0100 | i(4EE9001C): SUB SP, SP, 1CH |
| 0101 | i(AFE00000): STR LNK, SP, 0H |
| 0102 | i(A0E00004): STR R0, SP, 4H |
| 0103 | i(A1E00008): STR R1, SP, 8H |
| 0104 | i(A2E0000C): STR R2, SP, CH |
| 0105 | i(A3E00010): STR R3, SP, 10H |
| 0106 | i(A4E00014): STR R4, SP, 14H |
| 0107 | j(40000000): MOV R0, R0, 0H |
| 0108 | j(A0E00018): STR R0, SP, 18H |
| REPEAT d[k]k := s MOD 100H;l s := s DIV 100H;m INC(i);n INC(k) UNTILo i = n |
| 0109 | k(80E00014): LDR R0, SP, 14H |
| 010A | k(80000000): LDR R0, R0, 0H |
| 010B | k(81E0000C): LDR R1, SP, CH |
| 010C | k(01090001): SUB R1, R0, R1 |
| 010D | k(DA096C1C): BLCC MT [trap=1, pos=2412] |
| 010E | k(81E00008): LDR R1, SP, 8H |
| 010F | k(00180000): ADD R0, R1, R0 |
| 0110 | l(81E00004): LDR R1, SP, 4H |
| 0111 | l(411400FF): AND R1, R1, FFH |
| 0112 | l(B1000000): STR R1, R0, 0H |
| 0113 | m(80E00004): LDR R0, SP, 4H |
| 0114 | m(40020008): ASR R0, R0, 8H |
| 0115 | m(A0E00004): STR R0, SP, 4H |
| 0116 | n(80E00018): LDR R0, SP, 18H |
| 0117 | n(40080001): ADD R0, R0, 1H |
| 0118 | n(A0E00018): STR R0, SP, 18H |
| 0119 | o(80E00014): LDR R0, SP, 14H |
| 011A | o(81000000): LDR R1, R0, 0H |
| 011B | o(41180001): ADD R1, R1, 1H |
| 011C | o(A1000000): STR R1, R0, 0H |
| ENDp AppendW; |
| 011D | p(80E00018): LDR R0, SP, 18H |
| 011E | p(81E00010): LDR R1, SP, 10H |
| 011F | p(00090001): SUB R0, R0, R1 |
| 0120 | p(E9FFFFE8): BNE -24 [0109H] |
| 0121 | p(8FE00000): LDR LNK, SP, 0H |
| 0122 | p(4EE8001C): ADD SP, SP, 1CH |
| 0123 | p(C700000F): B LNK |
| |
| PROCEDURE PickS(VAR s: ARRAY OF CHAR); |
| VAR i: INTEGER; x: BYTE; |
| BEGINq i := 0;r |
| 0124 | q(4EE90014): SUB SP, SP, 14H |
| 0125 | q(AFE00000): STR LNK, SP, 0H |
| 0126 | q(A0E00004): STR R0, SP, 4H |
| 0127 | q(A1E00008): STR R1, SP, 8H |
| 0128 | r(40000000): MOV R0, R0, 0H |
| 0129 | r(A0E0000C): STR R0, SP, CH |
| REPEAT SCC.Receive(x)s;t s[i]u := CHR(x);v INC(i) UNTILw x = 0 |
| 012A | s(40E80010): ADD R0, SP, 10H |
| 012B | t .FIXUP P |
| 012B | t(F7107064): BL MOD1 [SCC] PROC7 |
| 012C | u(80E0000C): LDR R0, SP, CH |
| 012D | u(81E00008): LDR R1, SP, 8H |
| 012E | u(01090001): SUB R1, R0, R1 |
| 012F | u(DA0A2D1C): BLCC MT [trap=1, pos=2605] |
| 0130 | u(81E00004): LDR R1, SP, 4H |
| 0131 | u(00180000): ADD R0, R1, R0 |
| 0132 | v(91E00010): LDR R1, SP, 10H |
| 0133 | v(B1000000): STR R1, R0, 0H |
| 0134 | w(80E0000C): LDR R0, SP, CH |
| 0135 | w(40080001): ADD R0, R0, 1H |
| 0136 | w(A0E0000C): STR R0, SP, CH |
| ENDx PickS; |
| 0137 | x(90E00010): LDR R0, SP, 10H |
| 0138 | x(E9FFFFF1): BNE -15 [012AH] |
| 0139 | x(8FE00000): LDR LNK, SP, 0H |
| 013A | x(4EE80014): ADD SP, SP, 14H |
| 013B | x(C700000F): B LNK |
| |
| PROCEDURE PickQ(VAR w: LONGINT); |
| VAR x0, x1, x2, x3: BYTE; |
| BEGINy SCC.Receive(x0)z;a SCC.Receive(x1)b;c SCC.Receive(x2)d;e SCC.Receive(x3)f;g |
| 013C | y(4EE9000C): SUB SP, SP, CH |
| 013D | y(AFE00000): STR LNK, SP, 0H |
| 013E | y(A0E00004): STR R0, SP, 4H |
| 013F | z(40E80008): ADD R0, SP, 8H |
| 0140 | a .FIXUP P |
| 0140 | a(F7107015): BL MOD1 [SCC] PROC7 |
| 0141 | b(40E80009): ADD R0, SP, 9H |
| 0142 | c .FIXUP P |
| 0142 | c(F7107002): BL MOD1 [SCC] PROC7 |
| 0143 | d(40E8000A): ADD R0, SP, AH |
| 0144 | e .FIXUP P |
| 0144 | e(F7107002): BL MOD1 [SCC] PROC7 |
| 0145 | f(40E8000B): ADD R0, SP, BH |
| 0146 | g .FIXUP P |
| 0146 | g(F7107002): BL MOD1 [SCC] PROC7 |
| w := x0 + 100H * (x1 + 100H * (x2 + 100H * x3)h)i |
| 0147 | h(90E0000B): LDR R0, SP, BH |
| 0148 | h(40010008): LSL R0, R0, 8H |
| 0149 | h(91E0000A): LDR R1, SP, AH |
| 014A | h(00180000): ADD R0, R1, R0 |
| 014B | i(40010008): LSL R0, R0, 8H |
| 014C | i(91E00009): LDR R1, SP, 9H |
| 014D | i(00180000): ADD R0, R1, R0 |
| ENDj PickQ; |
| 014E | j(40010008): LSL R0, R0, 8H |
| 014F | j(91E00008): LDR R1, SP, 8H |
| 0150 | j(00180000): ADD R0, R1, R0 |
| 0151 | j(81E00004): LDR R1, SP, 4H |
| 0152 | j(A0100000): STR R0, R1, 0H |
| 0153 | j(8FE00000): LDR LNK, SP, 0H |
| 0154 | j(4EE8000C): ADD SP, SP, CH |
| 0155 | j(C700000F): B LNK |
| |
| PROCEDURE SendData(F: Files.File); |
| VAR k, seqno: INTEGER; |
| x: BYTE; |
| len: LONGINT; |
| R: Files.Rider; |
| buf: ARRAY PakSize OF BYTE; |
| BEGINk Files.Set(R,l F,m 0)n;o len := 0;p seqno := 0;q |
| 0156 | k(4EE90230): SUB SP, SP, 230H |
| 0157 | k(AFE00000): STR LNK, SP, 0H |
| 0158 | k(A0E00004): STR R0, SP, 4H |
| 0159 | l(40E80018): ADD R0, SP, 18H |
| 015A | l .FIXUP D |
| 015A | l(8D200089): LDR SB, MT, MOD2 [Files] |
| 015B | l(41D80001): ADD R1, SB, VAR1 |
| 015C | m(82E00004): LDR R2, SP, 4H |
| 015D | n(43000000): MOV R3, R0, 0H |
| 015E | o .FIXUP P |
| 015E | o(F720B018): BL MOD2 [Files] PROC11 |
| 015F | p(40000000): MOV R0, R0, 0H |
| 0160 | p(A0E00014): STR R0, SP, 14H |
| 0161 | q(40000000): MOV R0, R0, 0H |
| 0162 | q(A0E0000C): STR R0, SP, CH |
| REPEAT k := 0;r |
| 0163 | r(40000000): MOV R0, R0, 0H |
| 0164 | r(A0E00008): STR R0, SP, 8H |
| REPEAT Files.ReadByte(R,s x)t;u |
| 0165 | s(40E80018): ADD R0, SP, 18H |
| 0166 | s .FIXUP D |
| 0166 | s(8D20000C): LDR SB, MT, MOD2 [Files] |
| 0167 | s(41D80001): ADD R1, SB, VAR1 |
| 0168 | t(42E80010): ADD R2, SP, 10H |
| 0169 | u .FIXUP P |
| 0169 | u(F720E00B): BL MOD2 [Files] PROC14 |
| IF ~R.eof THENv buf[k]w := x;x INC(k) ENDy |
| 016A | v(90E00018): LDR R0, SP, 18H |
| 016B | v(E9000009): BNE 9 [0175H] |
| 016C | w(80E00008): LDR R0, SP, 8H |
| 016D | w(41090200): SUB R1, R0, 200H |
| 016E | w(DA0C491C): BLCC MT [trap=1, pos=3145] |
| 016F | w(00E80000): ADD R0, SP, R0 |
| 0170 | x(91E00010): LDR R1, SP, 10H |
| 0171 | x(B1000030): STR R1, R0, 30H |
| 0172 | y(80E00008): LDR R0, SP, 8H |
| 0173 | y(40080001): ADD R0, R0, 1H |
| 0174 | y(A0E00008): STR R0, SP, 8H |
| UNTIL R.eof OR (zk = PakSize)a;b |
| 0175 | z(90E00018): LDR R0, SP, 18H |
| 0176 | z(E9000003): BNE 3 [017AH] |
| 0177 | a(80E00008): LDR R0, SP, 8H |
| 0178 | a(40090200): SUB R0, R0, 200H |
| 0179 | b(E9FFFFEB): BNE -21 [0165H] |
| REPEAT Send(seqno,c k,d buf)e;f ReceiveHead(T1)g |
| 017A | c(80E0000C): LDR R0, SP, CH |
| 017B | d(81E00008): LDR R1, SP, 8H |
| 017C | e(42E80030): ADD R2, SP, 30H |
| 017D | e(43000200): MOV R3, R0, 200H |
| 017E | f(F7FFFE9A): BL -358 [0019H] |
| 017F | g(40000BB8): MOV R0, R0, BB8H |
| UNTILh head1.typ # seqno + ACK;i |
| 0180 | h(F7FFFEAC): BL -340 [002DH] |
| 0181 | i(80E0000C): LDR R0, SP, CH |
| 0182 | i(40080010): ADD R0, R0, 10H |
| 0183 | i .FIXUP D |
| 0183 | i(8D00001D): LDR SB, MT, MOD0 [Net] |
| 0184 | i(91D00037): LDR R1, SB, 37H [data] |
| 0185 | i(01190000): SUB R1, R1, R0 |
| 0186 | i(E1FFFFF3): BEQ -13 [017AH] |
| seqno := (seqno + 1)j MOD 8;k len := len + k;l |
| 0187 | j(80E0000C): LDR R0, SP, CH |
| 0188 | j(40080001): ADD R0, R0, 1H |
| 0189 | k(40040007): AND R0, R0, 7H |
| 018A | k(A0E0000C): STR R0, SP, CH |
| 018B | l(80E00014): LDR R0, SP, 14H |
| 018C | l(81E00008): LDR R1, SP, 8H |
| 018D | l(00080001): ADD R0, R0, R1 |
| 018E | l(A0E00014): STR R0, SP, 14H |
| IF head1.typ # seqno + ACK THENm |
| 018F | m(80E0000C): LDR R0, SP, CH |
| 0190 | m(40080010): ADD R0, R0, 10H |
| 0191 | m .FIXUP D |
| 0191 | m(8D00000E): LDR SB, MT, MOD0 [Net] |
| 0192 | m(91D00037): LDR R1, SB, 37H [data] |
| 0193 | m(01190000): SUB R1, R1, R0 |
| 0194 | m(E100000A): BEQ 10 [019FH] |
| Texts.WriteString(W,n " failed")o;p k := 0 |
| 0195 | n .FIXUP D |
| 0195 | n(8D000004): LDR SB, MT, MOD0 [Net] |
| 0196 | n(40D80000): ADD R0, SB, 0H [data] |
| 0197 | n .FIXUP D |
| 0197 | n(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0198 | n(41D80005): ADD R1, SB, VAR5 |
| 0199 | o .FIXUP D |
| 0199 | o(8D000002): LDR SB, MT, MOD0 [Net] |
| 019A | o(42D80050): ADD R2, SB, 50H [" failed"] |
| 019B | o(43000008): MOV R3, R0, 8H |
| 019C | p .FIXUP P |
| 019C | p(F751D033): BL MOD5 [Texts] PROC29 |
| ENDq |
| 019D | q(40000000): MOV R0, R0, 0H |
| 019E | q(A0E00008): STR R0, SP, 8H |
| UNTIL k < PakSize;r |
| 019F | r(80E00008): LDR R0, SP, 8H |
| 01A0 | r(40090200): SUB R0, R0, 200H |
| 01A1 | r(EDFFFFC1): BGE -63 [0163H] |
| Texts.WriteInt(W,s len,t 7)u |
| 01A2 | s .FIXUP D |
| 01A2 | s(8D000009): LDR SB, MT, MOD0 [Net] |
| 01A3 | s(40D80000): ADD R0, SB, 0H [data] |
| 01A4 | s .FIXUP D |
| 01A4 | s(8D500002): LDR SB, MT, MOD5 [Texts] |
| 01A5 | s(41D80005): ADD R1, SB, VAR5 |
| 01A6 | t(82E00014): LDR R2, SP, 14H |
| 01A7 | u(43000007): MOV R3, R0, 7H |
| ENDv SendData; |
| 01A8 | v .FIXUP P |
| 01A8 | v(F751E00C): BL MOD5 [Texts] PROC30 |
| 01A9 | v(8FE00000): LDR LNK, SP, 0H |
| 01AA | v(4EE80230): ADD SP, SP, 230H |
| 01AB | v(C700000F): B LNK |
| |
| PROCEDURE ReceiveData(F: Files.File; VAR done: BOOLEAN); |
| VAR k, retry, seqno: INTEGER; |
| x: BYTE; |
| len: LONGINT; |
| R: Files.Rider; |
| BEGINw Files.Set(R,x F,y 0)z;a seqno := 0;b len := 0;c retry := 2;d k := PakSize;e |
| 01AC | w(4EE90038): SUB SP, SP, 38H |
| 01AD | w(AFE00000): STR LNK, SP, 0H |
| 01AE | w(A0E00004): STR R0, SP, 4H |
| 01AF | w(A1E00008): STR R1, SP, 8H |
| 01B0 | x(40E80020): ADD R0, SP, 20H |
| 01B1 | x .FIXUP D |
| 01B1 | x(8D20000D): LDR SB, MT, MOD2 [Files] |
| 01B2 | x(41D80001): ADD R1, SB, VAR1 |
| 01B3 | y(82E00004): LDR R2, SP, 4H |
| 01B4 | z(43000000): MOV R3, R0, 0H |
| 01B5 | a .FIXUP P |
| 01B5 | a(F720B00D): BL MOD2 [Files] PROC11 |
| 01B6 | b(40000000): MOV R0, R0, 0H |
| 01B7 | b(A0E00014): STR R0, SP, 14H |
| 01B8 | c(40000000): MOV R0, R0, 0H |
| 01B9 | c(A0E0001C): STR R0, SP, 1CH |
| 01BA | d(40000002): MOV R0, R0, 2H |
| 01BB | d(A0E00010): STR R0, SP, 10H |
| 01BC | e(40000200): MOV R0, R0, 200H |
| 01BD | e(A0E0000C): STR R0, SP, CH |
| REPEAT |
| IF head1.typ = seqno THENf |
| 01BE | f .FIXUP D |
| 01BE | f(8D00000D): LDR SB, MT, MOD0 [Net] |
| 01BF | f(90D00037): LDR R0, SB, 37H [data] |
| 01C0 | f(81E00014): LDR R1, SP, 14H |
| 01C1 | f(00090001): SUB R0, R0, R1 |
| 01C2 | f(E900002A): BNE 42 [01EDH] |
| seqno := (seqno + 1)g MOD 8;h len := len + head1.len;i retry := 2;j |
| 01C3 | g(80E00014): LDR R0, SP, 14H |
| 01C4 | g(40080001): ADD R0, R0, 1H |
| 01C5 | h(40040007): AND R0, R0, 7H |
| 01C6 | h(A0E00014): STR R0, SP, 14H |
| 01C7 | i(80E0001C): LDR R0, SP, 1CH |
| 01C8 | i .FIXUP D |
| 01C8 | i(8D00000A): LDR SB, MT, MOD0 [Net] |
| 01C9 | i(81D00038): LDR R1, SB, 38H [data] |
| 01CA | i(00080001): ADD R0, R0, R1 |
| 01CB | i(A0E0001C): STR R0, SP, 1CH |
| 01CC | j(40000002): MOV R0, R0, 2H |
| 01CD | j(A0E00010): STR R0, SP, 10H |
| Send(seqno + ACK,k 0,l dmy)m;n k := 0;o |
| 01CE | k(80E00014): LDR R0, SP, 14H |
| 01CF | k(40080010): ADD R0, R0, 10H |
| 01D0 | l(41000000): MOV R1, R0, 0H |
| 01D1 | m(42D80044): ADD R2, SB, 44H |
| 01D2 | m(43000008): MOV R3, R0, 8H |
| 01D3 | n(F7FFFE45): BL -443 [0019H] |
| 01D4 | o(40000000): MOV R0, R0, 0H |
| 01D5 | o(A0E0000C): STR R0, SP, CH |
| WHILE k < head1.len DOp |
| 01D6 | p(80E0000C): LDR R0, SP, CH |
| 01D7 | p .FIXUP D |
| 01D7 | p(8D00000F): LDR SB, MT, MOD0 [Net] |
| 01D8 | p(81D00038): LDR R1, SB, 38H [data] |
| 01D9 | p(00090001): SUB R0, R0, R1 |
| 01DA | p(ED00000B): BGE 11 [01E6H] |
| SCC.Receive(x)q;r Files.WriteByte(R,s x)t;u INC(k) |
| 01DB | q(40E80018): ADD R0, SP, 18H |
| 01DC | r .FIXUP P |
| 01DC | r(F7107027): BL MOD1 [SCC] PROC7 |
| 01DD | s(40E80020): ADD R0, SP, 20H |
| 01DE | s .FIXUP D |
| 01DE | s(8D200007): LDR SB, MT, MOD2 [Files] |
| 01DF | s(41D80001): ADD R1, SB, VAR1 |
| 01E0 | t(92E00018): LDR R2, SP, 18H |
| 01E1 | u .FIXUP P |
| 01E1 | u(F7216005): BL MOD2 [Files] PROC22 |
| ENDv ; |
| 01E2 | v(80E0000C): LDR R0, SP, CH |
| 01E3 | v(40080001): ADD R0, R0, 1H |
| 01E4 | v(A0E0000C): STR R0, SP, CH |
| 01E5 | v(E7FFFFF0): B -16 [01D6H] |
| IF k < PakSize THENw done := TRUE ENDx |
| 01E6 | w(80E0000C): LDR R0, SP, CH |
| 01E7 | w(40090200): SUB R0, R0, 200H |
| 01E8 | w(ED000003): BGE 3 [01ECH] |
| 01E9 | x(40000001): MOV R0, R0, 1H |
| 01EA | x(81E00008): LDR R1, SP, 8H |
| 01EB | x(B0100000): STR R0, R1, 0H |
| ELSE DECy(retry);z |
| 01EC | y(E7000019): B 25 [0206H] |
| 01ED | z(80E00010): LDR R0, SP, 10H |
| 01EE | z(40090001): SUB R0, R0, 1H |
| 01EF | z(A0E00010): STR R0, SP, 10H |
| IF retry = 0 THENa |
| 01F0 | a(80E00010): LDR R0, SP, 10H |
| 01F1 | a(E900000D): BNE 13 [01FFH] |
| Texts.WriteString(W,b " failed")c;d done := FALSE;e k := 0 |
| 01F2 | b .FIXUP D |
| 01F2 | b(8D000014): LDR SB, MT, MOD0 [Net] |
| 01F3 | b(40D80000): ADD R0, SB, 0H [data] |
| 01F4 | b .FIXUP D |
| 01F4 | b(8D500002): LDR SB, MT, MOD5 [Texts] |
| 01F5 | b(41D80005): ADD R1, SB, VAR5 |
| 01F6 | c .FIXUP D |
| 01F6 | c(8D000002): LDR SB, MT, MOD0 [Net] |
| 01F7 | c(42D80058): ADD R2, SB, 58H [" failed"] |
| 01F8 | c(43000008): MOV R3, R0, 8H |
| 01F9 | d .FIXUP P |
| 01F9 | d(F751D018): BL MOD5 [Texts] PROC29 |
| 01FA | e(40000000): MOV R0, R0, 0H |
| 01FB | e(81E00008): LDR R1, SP, 8H |
| 01FC | e(B0100000): STR R0, R1, 0H |
| ENDf ; |
| 01FD | f(40000000): MOV R0, R0, 0H |
| 01FE | f(A0E0000C): STR R0, SP, CH |
| Send(seqno + ACK,g 0,h dmy)i |
| 01FF | g(80E00014): LDR R0, SP, 14H |
| 0200 | g(40080010): ADD R0, R0, 10H |
| 0201 | h(41000000): MOV R1, R0, 0H |
| 0202 | i .FIXUP D |
| 0202 | i(8D00000C): LDR SB, MT, MOD0 [Net] |
| 0203 | i(42D80044): ADD R2, SB, 44H [data] |
| 0204 | i(43000008): MOV R3, R0, 8H |
| ENDj ; |
| 0205 | j(F7FFFE13): BL -493 [0019H] |
| ReceiveHead(T0)k |
| 0206 | k(400003E8): MOV R0, R0, 3E8H |
| UNTILl k < PakSize;m |
| 0207 | l(F7FFFE25): BL -475 [002DH] |
| 0208 | m(80E0000C): LDR R0, SP, CH |
| 0209 | m(40090200): SUB R0, R0, 200H |
| 020A | m(EDFFFFB3): BGE -77 [01BEH] |
| Texts.WriteInt(W,n len,o 7)p |
| 020B | n .FIXUP D |
| 020B | n(8D000009): LDR SB, MT, MOD0 [Net] |
| 020C | n(40D80000): ADD R0, SB, 0H [data] |
| 020D | n .FIXUP D |
| 020D | n(8D500002): LDR SB, MT, MOD5 [Texts] |
| 020E | n(41D80005): ADD R1, SB, VAR5 |
| 020F | o(82E0001C): LDR R2, SP, 1CH |
| 0210 | p(43000007): MOV R3, R0, 7H |
| ENDq ReceiveData; |
| 0211 | q .FIXUP P |
| 0211 | q(F751E018): BL MOD5 [Texts] PROC30 |
| 0212 | q(8FE00000): LDR LNK, SP, 0H |
| 0213 | q(4EE80038): ADD SP, SP, 38H |
| 0214 | q(C700000F): B LNK |
| |
| PROCEDURE reply(msg: INTEGER); |
| BEGINr |
| 0215 | r(4EE90008): SUB SP, SP, 8H |
| 0216 | r(AFE00000): STR LNK, SP, 0H |
| 0217 | r(A0E00004): STR R0, SP, 4H |
| IF msg = 1 THENs Texts.WriteString(W,t " no link")u |
| 0218 | s(80E00004): LDR R0, SP, 4H |
| 0219 | s(40090001): SUB R0, R0, 1H |
| 021A | s(E9000009): BNE 9 [0224H] |
| 021B | t .FIXUP D |
| 021B | t(8D00000E): LDR SB, MT, MOD0 [Net] |
| 021C | t(40D80000): ADD R0, SB, 0H [data] |
| 021D | t .FIXUP D |
| 021D | t(8D500002): LDR SB, MT, MOD5 [Texts] |
| 021E | t(41D80005): ADD R1, SB, VAR5 |
| 021F | u .FIXUP D |
| 021F | u(8D000002): LDR SB, MT, MOD0 [Net] |
| 0220 | u(42D80060): ADD R2, SB, 60H [" no link"] |
| 0221 | u(43000009): MOV R3, R0, 9H |
| ELSIFv msgw = 2 THENx Texts.WriteString(W,y " no permission")z |
| 0222 | v .FIXUP P |
| 0222 | v(F751D011): BL MOD5 [Texts] PROC29 |
| 0223 | w(E700003B): B 59 [025FH] |
| 0224 | x(80E00004): LDR R0, SP, 4H |
| 0225 | x(40090002): SUB R0, R0, 2H |
| 0226 | x(E9000009): BNE 9 [0230H] |
| 0227 | y .FIXUP D |
| 0227 | y(8D000008): LDR SB, MT, MOD0 [Net] |
| 0228 | y(40D80000): ADD R0, SB, 0H [data] |
| 0229 | y .FIXUP D |
| 0229 | y(8D500002): LDR SB, MT, MOD5 [Texts] |
| 022A | y(41D80005): ADD R1, SB, VAR5 |
| 022B | z .FIXUP D |
| 022B | z(8D000002): LDR SB, MT, MOD0 [Net] |
| 022C | z(42D8006C): ADD R2, SB, 6CH [" no permission"] |
| 022D | z(4300000F): MOV R3, R0, FH |
| ELSIFa msgb = 3 THENc Texts.WriteString(W,d " not done")e |
| 022E | a .FIXUP P |
| 022E | a(F751D00C): BL MOD5 [Texts] PROC29 |
| 022F | b(E700002F): B 47 [025FH] |
| 0230 | c(80E00004): LDR R0, SP, 4H |
| 0231 | c(40090003): SUB R0, R0, 3H |
| 0232 | c(E9000009): BNE 9 [023CH] |
| 0233 | d .FIXUP D |
| 0233 | d(8D000008): LDR SB, MT, MOD0 [Net] |
| 0234 | d(40D80000): ADD R0, SB, 0H [data] |
| 0235 | d .FIXUP D |
| 0235 | d(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0236 | d(41D80005): ADD R1, SB, VAR5 |
| 0237 | e .FIXUP D |
| 0237 | e(8D000002): LDR SB, MT, MOD0 [Net] |
| 0238 | e(42D8007C): ADD R2, SB, 7CH [" not done"] |
| 0239 | e(4300000A): MOV R3, R0, AH |
| ELSIFf msgg = 4 THENh Texts.WriteString(W,i " not found")j |
| 023A | f .FIXUP P |
| 023A | f(F751D00C): BL MOD5 [Texts] PROC29 |
| 023B | g(E7000023): B 35 [025FH] |
| 023C | h(80E00004): LDR R0, SP, 4H |
| 023D | h(40090004): SUB R0, R0, 4H |
| 023E | h(E9000009): BNE 9 [0248H] |
| 023F | i .FIXUP D |
| 023F | i(8D000008): LDR SB, MT, MOD0 [Net] |
| 0240 | i(40D80000): ADD R0, SB, 0H [data] |
| 0241 | i .FIXUP D |
| 0241 | i(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0242 | i(41D80005): ADD R1, SB, VAR5 |
| 0243 | j .FIXUP D |
| 0243 | j(8D000002): LDR SB, MT, MOD0 [Net] |
| 0244 | j(42D80088): ADD R2, SB, 88H [" not found"] |
| 0245 | j(4300000B): MOV R3, R0, BH |
| ELSIFk msgl = 5 THENm Texts.WriteString(W,n " no response")o |
| 0246 | k .FIXUP P |
| 0246 | k(F751D00C): BL MOD5 [Texts] PROC29 |
| 0247 | l(E7000017): B 23 [025FH] |
| 0248 | m(80E00004): LDR R0, SP, 4H |
| 0249 | m(40090005): SUB R0, R0, 5H |
| 024A | m(E9000009): BNE 9 [0254H] |
| 024B | n .FIXUP D |
| 024B | n(8D000008): LDR SB, MT, MOD0 [Net] |
| 024C | n(40D80000): ADD R0, SB, 0H [data] |
| 024D | n .FIXUP D |
| 024D | n(8D500002): LDR SB, MT, MOD5 [Texts] |
| 024E | n(41D80005): ADD R1, SB, VAR5 |
| 024F | o .FIXUP D |
| 024F | o(8D000002): LDR SB, MT, MOD0 [Net] |
| 0250 | o(42D80094): ADD R2, SB, 94H [" no response"] |
| 0251 | o(4300000D): MOV R3, R0, DH |
| ELSIFp msgq = 6 THENr Texts.WriteString(W,s " time set")t |
| 0252 | p .FIXUP P |
| 0252 | p(F751D00C): BL MOD5 [Texts] PROC29 |
| 0253 | q(E700000B): B 11 [025FH] |
| 0254 | r(80E00004): LDR R0, SP, 4H |
| 0255 | r(40090006): SUB R0, R0, 6H |
| 0256 | r(E9000008): BNE 8 [025FH] |
| 0257 | s .FIXUP D |
| 0257 | s(8D000008): LDR SB, MT, MOD0 [Net] |
| 0258 | s(40D80000): ADD R0, SB, 0H [data] |
| 0259 | s .FIXUP D |
| 0259 | s(8D500002): LDR SB, MT, MOD5 [Texts] |
| 025A | s(41D80005): ADD R1, SB, VAR5 |
| 025B | t .FIXUP D |
| 025B | t(8D000002): LDR SB, MT, MOD0 [Net] |
| 025C | t(42D800A4): ADD R2, SB, A4H [" time set"] |
| 025D | t(4300000A): MOV R3, R0, AH |
| ENDu ; |
| 025E | u .FIXUP P |
| 025E | u(F751D00C): BL MOD5 [Texts] PROC29 |
| Texts.WriteLn(W)v;w Texts.Append(Oberon.Log,x W.buf)y |
| 025F | v .FIXUP D |
| 025F | v(8D000004): LDR SB, MT, MOD0 [Net] |
| 0260 | v(40D80000): ADD R0, SB, 0H [data] |
| 0261 | v .FIXUP D |
| 0261 | v(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0262 | v(41D80005): ADD R1, SB, VAR5 |
| 0263 | w .FIXUP P |
| 0263 | w(F751C005): BL MOD5 [Texts] PROC28 |
| 0264 | x .FIXUP D |
| 0264 | x(8D900003): LDR SB, MT, MOD9 [Oberon] |
| 0265 | x(80D0000D): LDR R0, SB, VAR13 |
| 0266 | y .FIXUP D |
| 0266 | y(8D000002): LDR SB, MT, MOD0 [Net] |
| 0267 | y(81D00000): LDR R1, SB, 0H [data] |
| ENDz reply; |
| 0268 | z .FIXUP P |
| 0268 | z(F750E005): BL MOD5 [Texts] PROC14 |
| 0269 | z(8FE00000): LDR LNK, SP, 0H |
| 026A | z(4EE80008): ADD SP, SP, 8H |
| 026B | z(C700000F): B LNK |
| |
| PROCEDURE Serve; |
| VAR i: INTEGER; |
| done: BOOLEAN; x: BYTE; |
| F: Files.File; |
| pw, clock, newclock: LONGINT; |
| Id: ARRAY 8 OF CHAR; |
| IdB: ARRAY 8 OF BYTE; |
| FileName: ARRAY 32 OF CHAR; |
| BEGINa |
| 026C | a(4EE9004C): SUB SP, SP, 4CH |
| 026D | a(AFE00000): STR LNK, SP, 0H |
| SCC.ReceiveHead(head1)b;c |
| 026E | b .FIXUP D |
| 026E | b(8D000008): LDR SB, MT, MOD0 [Net] |
| 026F | b(40D80034): ADD R0, SB, 34H [data] |
| 0270 | b .FIXUP D |
| 0270 | b(8D100002): LDR SB, MT, MOD1 [SCC] |
| 0271 | b(41D80001): ADD R1, SB, VAR1 |
| 0272 | c .FIXUP P |
| 0272 | c(F710800A): BL MOD1 [SCC] PROC8 |
| IF head1.valid THENd |
| 0273 | d .FIXUP D |
| 0273 | d(8D000003): LDR SB, MT, MOD0 [Net] |
| 0274 | d(90D00034): LDR R0, SB, 34H [data] |
| 0275 | d(E100014C): BEQ 332 [03C2H] |
| IF head1.typ = SND THENe |
| 0276 | e .FIXUP D |
| 0276 | e(8D000003): LDR SB, MT, MOD0 [Net] |
| 0277 | e(90D00037): LDR R0, SB, 37H [data] |
| 0278 | e(40090041): SUB R0, R0, 41H |
| 0279 | e(E9000044): BNE 68 [02BEH] |
| PickS(Id)f;g PickQ(pw)h;i PickS(FileName)j;k |
| 027A | f(40E8001C): ADD R0, SP, 1CH |
| 027B | f(41000008): MOV R1, R0, 8H |
| 027C | g(F7FFFEA7): BL -345 [0124H] |
| 027D | h(40E80010): ADD R0, SP, 10H |
| 027E | i(F7FFFEBD): BL -323 [013CH] |
| 027F | j(40E8002C): ADD R0, SP, 2CH |
| 0280 | j(41000020): MOV R1, R0, 20H |
| 0281 | k(F7FFFEA2): BL -350 [0124H] |
| Texts.WriteString(W,l Id)m;n Texts.Write(W,o " ")p;q |
| 0282 | l .FIXUP D |
| 0282 | l(8D00000C): LDR SB, MT, MOD0 [Net] |
| 0283 | l(40D80000): ADD R0, SB, 0H [data] |
| 0284 | l .FIXUP D |
| 0284 | l(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0285 | l(41D80005): ADD R1, SB, VAR5 |
| 0286 | m(42E8001C): ADD R2, SP, 1CH |
| 0287 | m(43000008): MOV R3, R0, 8H |
| 0288 | n .FIXUP P |
| 0288 | n(F751D016): BL MOD5 [Texts] PROC29 |
| 0289 | o .FIXUP D |
| 0289 | o(8D000005): LDR SB, MT, MOD0 [Net] |
| 028A | o(40D80000): ADD R0, SB, 0H [data] |
| 028B | o .FIXUP D |
| 028B | o(8D500002): LDR SB, MT, MOD5 [Texts] |
| 028C | o(41D80005): ADD R1, SB, VAR5 |
| 028D | p(42000020): MOV R2, R0, 20H |
| 028E | q .FIXUP P |
| 028E | q(F751B006): BL MOD5 [Texts] PROC27 |
| Texts.WriteString(W,r FileName)s;t |
| 028F | r .FIXUP D |
| 028F | r(8D000004): LDR SB, MT, MOD0 [Net] |
| 0290 | r(40D80000): ADD R0, SB, 0H [data] |
| 0291 | r .FIXUP D |
| 0291 | r(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0292 | r(41D80005): ADD R1, SB, VAR5 |
| 0293 | s(42E8002C): ADD R2, SP, 2CH |
| 0294 | s(43000020): MOV R3, R0, 20H |
| 0295 | t .FIXUP P |
| 0295 | t(F751D007): BL MOD5 [Texts] PROC29 |
| F := Files.Old(FileName)u;v |
| 0296 | u(40E8002C): ADD R0, SP, 2CH |
| 0297 | u(41000020): MOV R1, R0, 20H |
| 0298 | v .FIXUP P |
| 0298 | v(F7202003): BL MOD2 [Files] PROC2 |
| 0299 | v(A0E0000C): STR R0, SP, CH |
| IF F # NIL THENw |
| 029A | w(80E0000C): LDR R0, SP, CH |
| 029B | w(E1000013): BEQ 19 [02AFH] |
| Texts.WriteString(W,x " sending")y;z SetPartner(Id)a;b |
| 029C | x .FIXUP D |
| 029C | x(8D00000B): LDR SB, MT, MOD0 [Net] |
| 029D | x(40D80000): ADD R0, SB, 0H [data] |
| 029E | x .FIXUP D |
| 029E | x(8D500002): LDR SB, MT, MOD5 [Texts] |
| 029F | x(41D80005): ADD R1, SB, VAR5 |
| 02A0 | y .FIXUP D |
| 02A0 | y(8D000002): LDR SB, MT, MOD0 [Net] |
| 02A1 | y(42D800B0): ADD R2, SB, B0H [" sending"] |
| 02A2 | y(43000009): MOV R3, R0, 9H |
| 02A3 | z .FIXUP P |
| 02A3 | z(F751D00B): BL MOD5 [Texts] PROC29 |
| 02A4 | a(40E8001C): ADD R0, SP, 1CH |
| 02A5 | a(41000008): MOV R1, R0, 8H |
| 02A6 | b(F7FFFD59): BL -679 [0000H] |
| Texts.Append(Oberon.Log,c W.buf)d;e SendData(F)f |
| 02A7 | c .FIXUP D |
| 02A7 | c(8D900007): LDR SB, MT, MOD9 [Oberon] |
| 02A8 | c(80D0000D): LDR R0, SB, VAR13 |
| 02A9 | d .FIXUP D |
| 02A9 | d(8D000002): LDR SB, MT, MOD0 [Net] |
| 02AA | d(81D00000): LDR R1, SB, 0H [data] |
| 02AB | e .FIXUP P |
| 02AB | e(F750E008): BL MOD5 [Texts] PROC14 |
| 02AC | f(80E0000C): LDR R0, SP, CH |
| ELSEg Sendh(NAK,i 0,j dmy)k;l Texts.Write(W,m "~")n |
| 02AD | g(F7FFFEA8): BL -344 [0156H] |
| 02AE | h(E700000C): B 12 [02BBH] |
| 02AF | i(40000025): MOV R0, R0, 25H |
| 02B0 | j(41000000): MOV R1, R0, 0H |
| 02B1 | k .FIXUP D |
| 02B1 | k(8D000008): LDR SB, MT, MOD0 [Net] |
| 02B2 | k(42D80044): ADD R2, SB, 44H [data] |
| 02B3 | k(43000008): MOV R3, R0, 8H |
| 02B4 | l(F7FFFD64): BL -668 [0019H] |
| 02B5 | m .FIXUP D |
| 02B5 | m(8D000004): LDR SB, MT, MOD0 [Net] |
| 02B6 | m(40D80000): ADD R0, SB, 0H [data] |
| 02B7 | m .FIXUP D |
| 02B7 | m(8D500002): LDR SB, MT, MOD5 [Texts] |
| 02B8 | m(41D80005): ADD R1, SB, VAR5 |
| 02B9 | n(4200007E): MOV R2, R0, 7EH |
| ENDo ; |
| 02BA | o .FIXUP P |
| 02BA | o(F751B00F): BL MOD5 [Texts] PROC27 |
| reply(0)p |
| 02BB | p(40000000): MOV R0, R0, 0H |
| ELSIFq head1r.typ = REC THENs |
| 02BC | q(F7FFFF58): BL -168 [0215H] |
| 02BD | r(E7000104): B 260 [03C2H] |
| 02BE | s .FIXUP D |
| 02BE | s(8D000007): LDR SB, MT, MOD0 [Net] |
| 02BF | s(90D00037): LDR R0, SB, 37H [data] |
| 02C0 | s(40090042): SUB R0, R0, 42H |
| 02C1 | s(E900005B): BNE 91 [031DH] |
| PickS(Id)t;u PickQ(pw)v;w PickS(FileName)x;y |
| 02C2 | t(40E8001C): ADD R0, SP, 1CH |
| 02C3 | t(41000008): MOV R1, R0, 8H |
| 02C4 | u(F7FFFE5F): BL -417 [0124H] |
| 02C5 | v(40E80010): ADD R0, SP, 10H |
| 02C6 | w(F7FFFE75): BL -395 [013CH] |
| 02C7 | x(40E8002C): ADD R0, SP, 2CH |
| 02C8 | x(41000020): MOV R1, R0, 20H |
| 02C9 | y(F7FFFE5A): BL -422 [0124H] |
| IF ~protected THENz |
| 02CA | z .FIXUP D |
| 02CA | z(8D00000C): LDR SB, MT, MOD0 [Net] |
| 02CB | z(90D0004C): LDR R0, SB, 4CH [data] |
| 02CC | z(E9000049): BNE 73 [0316H] |
| Texts.WriteString(W,a Id)b;c Texts.Write(W,d " ")e;f |
| 02CD | a .FIXUP D |
| 02CD | a(8D000003): LDR SB, MT, MOD0 [Net] |
| 02CE | a(40D80000): ADD R0, SB, 0H [data] |
| 02CF | a .FIXUP D |
| 02CF | a(8D500002): LDR SB, MT, MOD5 [Texts] |
| 02D0 | a(41D80005): ADD R1, SB, VAR5 |
| 02D1 | b(42E8001C): ADD R2, SP, 1CH |
| 02D2 | b(43000008): MOV R3, R0, 8H |
| 02D3 | c .FIXUP P |
| 02D3 | c(F751D019): BL MOD5 [Texts] PROC29 |
| 02D4 | d .FIXUP D |
| 02D4 | d(8D000005): LDR SB, MT, MOD0 [Net] |
| 02D5 | d(40D80000): ADD R0, SB, 0H [data] |
| 02D6 | d .FIXUP D |
| 02D6 | d(8D500002): LDR SB, MT, MOD5 [Texts] |
| 02D7 | d(41D80005): ADD R1, SB, VAR5 |
| 02D8 | e(42000020): MOV R2, R0, 20H |
| 02D9 | f .FIXUP P |
| 02D9 | f(F751B006): BL MOD5 [Texts] PROC27 |
| Texts.WriteString(W,g FileName)h;i |
| 02DA | g .FIXUP D |
| 02DA | g(8D000004): LDR SB, MT, MOD0 [Net] |
| 02DB | g(40D80000): ADD R0, SB, 0H [data] |
| 02DC | g .FIXUP D |
| 02DC | g(8D500002): LDR SB, MT, MOD5 [Texts] |
| 02DD | g(41D80005): ADD R1, SB, VAR5 |
| 02DE | h(42E8002C): ADD R2, SP, 2CH |
| 02DF | h(43000020): MOV R3, R0, 20H |
| 02E0 | i .FIXUP P |
| 02E0 | i(F751D007): BL MOD5 [Texts] PROC29 |
| F := Files.New(FileName)j;k |
| 02E1 | j(40E8002C): ADD R0, SP, 2CH |
| 02E2 | j(41000020): MOV R1, R0, 20H |
| 02E3 | k .FIXUP P |
| 02E3 | k(F7203003): BL MOD2 [Files] PROC3 |
| 02E4 | k(A0E0000C): STR R0, SP, CH |
| IF F # NIL THENl |
| 02E5 | l(80E0000C): LDR R0, SP, CH |
| 02E6 | l(E1000020): BEQ 32 [0307H] |
| Texts.WriteString(W,m " receiving")n;o SetPartner(Id)p;q |
| 02E7 | m .FIXUP D |
| 02E7 | m(8D00000B): LDR SB, MT, MOD0 [Net] |
| 02E8 | m(40D80000): ADD R0, SB, 0H [data] |
| 02E9 | m .FIXUP D |
| 02E9 | m(8D500002): LDR SB, MT, MOD5 [Texts] |
| 02EA | m(41D80005): ADD R1, SB, VAR5 |
| 02EB | n .FIXUP D |
| 02EB | n(8D000002): LDR SB, MT, MOD0 [Net] |
| 02EC | n(42D800BC): ADD R2, SB, BCH [" receiving"] |
| 02ED | n(4300000B): MOV R3, R0, BH |
| 02EE | o .FIXUP P |
| 02EE | o(F751D00B): BL MOD5 [Texts] PROC29 |
| 02EF | p(40E8001C): ADD R0, SP, 1CH |
| 02F0 | p(41000008): MOV R1, R0, 8H |
| 02F1 | q(F7FFFD0E): BL -754 [0000H] |
| Texts.Append(Oberon.Log,r W.buf)s;t |
| 02F2 | r .FIXUP D |
| 02F2 | r(8D900007): LDR SB, MT, MOD9 [Oberon] |
| 02F3 | r(80D0000D): LDR R0, SB, VAR13 |
| 02F4 | s .FIXUP D |
| 02F4 | s(8D000002): LDR SB, MT, MOD0 [Net] |
| 02F5 | s(81D00000): LDR R1, SB, 0H [data] |
| 02F6 | t .FIXUP P |
| 02F6 | t(F750E008): BL MOD5 [Texts] PROC14 |
| Send(ACK,u 0,v dmy)w;x ReceiveHead(T0)y;z ReceiveData(F,a done)b;c |
| 02F7 | u(40000010): MOV R0, R0, 10H |
| 02F8 | v(41000000): MOV R1, R0, 0H |
| 02F9 | w .FIXUP D |
| 02F9 | w(8D000005): LDR SB, MT, MOD0 [Net] |
| 02FA | w(42D80044): ADD R2, SB, 44H [data] |
| 02FB | w(43000008): MOV R3, R0, 8H |
| 02FC | x(F7FFFD1C): BL -740 [0019H] |
| 02FD | y(400003E8): MOV R0, R0, 3E8H |
| 02FE | z(F7FFFD2E): BL -722 [002DH] |
| 02FF | a(80E0000C): LDR R0, SP, CH |
| 0300 | b(41E80008): ADD R1, SP, 8H |
| 0301 | c(F7FFFEAA): BL -342 [01ACH] |
| IF done THENd Files.Register(F)e ENDf |
| 0302 | d(90E00008): LDR R0, SP, 8H |
| 0303 | d(E1000002): BEQ 2 [0306H] |
| 0304 | e(80E0000C): LDR R0, SP, CH |
| 0305 | f .FIXUP P |
| 0305 | f(F720400F): BL MOD2 [Files] PROC4 |
| ELSE Sendg(NAK,h 0,i dmy)j;k Texts.Write(W,l "~")m |
| 0306 | g(E700000C): B 12 [0313H] |
| 0307 | h(40000025): MOV R0, R0, 25H |
| 0308 | i(41000000): MOV R1, R0, 0H |
| 0309 | j .FIXUP D |
| 0309 | j(8D000010): LDR SB, MT, MOD0 [Net] |
| 030A | j(42D80044): ADD R2, SB, 44H [data] |
| 030B | j(43000008): MOV R3, R0, 8H |
| 030C | k(F7FFFD0C): BL -756 [0019H] |
| 030D | l .FIXUP D |
| 030D | l(8D000004): LDR SB, MT, MOD0 [Net] |
| 030E | l(40D80000): ADD R0, SB, 0H [data] |
| 030F | l .FIXUP D |
| 030F | l(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0310 | l(41D80005): ADD R1, SB, VAR5 |
| 0311 | m(4200007E): MOV R2, R0, 7EH |
| ENDn ; |
| 0312 | n .FIXUP P |
| 0312 | n(F751B00D): BL MOD5 [Texts] PROC27 |
| reply(0)o |
| 0313 | o(40000000): MOV R0, R0, 0H |
| ELSEp Sendq(NPR,r 0,s dmy)t |
| 0314 | p(F7FFFF00): BL -256 [0215H] |
| 0315 | q(E7000006): B 6 [031CH] |
| 0316 | r(40000026): MOV R0, R0, 26H |
| 0317 | s(41000000): MOV R1, R0, 0H |
| 0318 | t .FIXUP D |
| 0318 | t(8D000009): LDR SB, MT, MOD0 [Net] |
| 0319 | t(42D80044): ADD R2, SB, 44H [data] |
| 031A | t(43000008): MOV R3, R0, 8H |
| ENDu |
| 031B | u(F7FFFCFD): BL -771 [0019H] |
| ELSIF head1v.typ = MSG THENw i := 0;x |
| 031C | v(E70000A5): B 165 [03C2H] |
| 031D | w .FIXUP D |
| 031D | w(8D000005): LDR SB, MT, MOD0 [Net] |
| 031E | w(90D00037): LDR R0, SB, 37H [data] |
| 031F | w(40090044): SUB R0, R0, 44H |
| 0320 | w(E900001C): BNE 28 [033DH] |
| 0321 | x(40000000): MOV R0, R0, 0H |
| 0322 | x(A0E00004): STR R0, SP, 4H |
| WHILE i < head1.len DOy SCC.Receive(x)z;a Texts.Write(W,b CHR(x))c;d |
| 0323 | y(80E00004): LDR R0, SP, 4H |
| 0324 | y .FIXUP D |
| 0324 | y(8D000007): LDR SB, MT, MOD0 [Net] |
| 0325 | y(81D00038): LDR R1, SB, 38H [data] |
| 0326 | y(00090001): SUB R0, R0, R1 |
| 0327 | y(ED00000C): BGE 12 [0334H] |
| 0328 | z(40E80009): ADD R0, SP, 9H |
| 0329 | a .FIXUP P |
| 0329 | a(F7107017): BL MOD1 [SCC] PROC7 |
| 032A | b .FIXUP D |
| 032A | b(8D000006): LDR SB, MT, MOD0 [Net] |
| 032B | b(40D80000): ADD R0, SB, 0H [data] |
| 032C | b .FIXUP D |
| 032C | b(8D500002): LDR SB, MT, MOD5 [Texts] |
| 032D | b(41D80005): ADD R1, SB, VAR5 |
| 032E | c(92E00009): LDR R2, SP, 9H |
| 032F | d .FIXUP P |
| 032F | d(F751B006): BL MOD5 [Texts] PROC27 |
| INC(i) ENDe ; |
| 0330 | e(80E00004): LDR R0, SP, 4H |
| 0331 | e(40080001): ADD R0, R0, 1H |
| 0332 | e(A0E00004): STR R0, SP, 4H |
| 0333 | e(E7FFFFEF): B -17 [0323H] |
| Send(ACK,f 0,g dmy)h;i reply(0)j |
| 0334 | f(40000010): MOV R0, R0, 10H |
| 0335 | g(41000000): MOV R1, R0, 0H |
| 0336 | h .FIXUP D |
| 0336 | h(8D00000A): LDR SB, MT, MOD0 [Net] |
| 0337 | h(42D80044): ADD R2, SB, 44H [data] |
| 0338 | h(43000008): MOV R3, R0, 8H |
| 0339 | i(F7FFFCDF): BL -801 [0019H] |
| 033A | j(40000000): MOV R0, R0, 0H |
| ELSIFk head1l.typ = TRQ THENm |
| 033B | k(F7FFFED9): BL -295 [0215H] |
| 033C | l(E7000085): B 133 [03C2H] |
| 033D | m .FIXUP D |
| 033D | m(8D000007): LDR SB, MT, MOD0 [Net] |
| 033E | m(90D00037): LDR R0, SB, 37H [data] |
| 033F | m(40090046): SUB R0, R0, 46H |
| 0340 | m(E900000E): BNE 14 [034FH] |
| i := 0;n AppendW(Oberon.Clock(),o IdB,p 4,q i)r;s Send(TIM,t 4,u IdB)v |
| 0341 | n(40000000): MOV R0, R0, 0H |
| 0342 | n(A0E00004): STR R0, SP, 4H |
| 0343 | o .FIXUP P |
| 0343 | o(F7914014): BL MOD9 [Oberon] PROC20 |
| 0344 | p(41E80024): ADD R1, SP, 24H |
| 0345 | p(42000008): MOV R2, R0, 8H |
| 0346 | q(43000004): MOV R3, R0, 4H |
| 0347 | r(44E80004): ADD R4, SP, 4H |
| 0348 | s(F7FFFDB7): BL -585 [0100H] |
| 0349 | t(40000047): MOV R0, R0, 47H |
| 034A | u(41000004): MOV R1, R0, 4H |
| 034B | v(42E80024): ADD R2, SP, 24H |
| 034C | v(43000008): MOV R3, R0, 8H |
| ELSIFw head1x.typ = TIM THENy PickQ(newclock)z;a PickS(Id)b;c PickQ(pw)d;e |
| 034D | w(F7FFFCCB): BL -821 [0019H] |
| 034E | x(E7000073): B 115 [03C2H] |
| 034F | y .FIXUP D |
| 034F | y(8D000012): LDR SB, MT, MOD0 [Net] |
| 0350 | y(90D00037): LDR R0, SB, 37H [data] |
| 0351 | y(40090047): SUB R0, R0, 47H |
| 0352 | y(E9000031): BNE 49 [0384H] |
| 0353 | z(40E80018): ADD R0, SP, 18H |
| 0354 | a(F7FFFDE7): BL -537 [013CH] |
| 0355 | b(40E8001C): ADD R0, SP, 1CH |
| 0356 | b(41000008): MOV R1, R0, 8H |
| 0357 | c(F7FFFDCC): BL -564 [0124H] |
| 0358 | d(40E80010): ADD R0, SP, 10H |
| 0359 | e(F7FFFDE2): BL -542 [013CH] |
| clock := Oberon.Clock();f |
| 035A | f .FIXUP P |
| 035A | f(F7914017): BL MOD9 [Oberon] PROC20 |
| 035B | f(A0E00014): STR R0, SP, 14H |
| IF ~protected &g (hId[0] # 0X)i & (jABS(pw - clock)k >l 10)m THENn |
| 035C | g .FIXUP D |
| 035C | g(8D00000D): LDR SB, MT, MOD0 [Net] |
| 035D | g(90D0004C): LDR R0, SB, 4CH [data] |
| 035E | h(E9000024): BNE 36 [0383H] |
| 035F | i(90E0001C): LDR R0, SP, 1CH |
| 0360 | j(E1000022): BEQ 34 [0383H] |
| 0361 | k(80E00010): LDR R0, SP, 10H |
| 0362 | k(81E00014): LDR R1, SP, 14H |
| 0363 | k(00090001): SUB R0, R0, R1 |
| 0364 | l(40090000): SUB R0, R0, 0H |
| 0365 | l(ED000002): BGE 2 [0368H] |
| 0366 | l(41000000): MOV R1, R0, 0H |
| 0367 | l(00190000): SUB R0, R1, R0 |
| 0368 | m(4009000A): SUB R0, R0, AH |
| 0369 | n(E6000019): BLE 25 [0383H] |
| Oberon.SetClock(newclock)o;p |
| 036A | o(80E00018): LDR R0, SP, 18H |
| 036B | p .FIXUP P |
| 036B | p(F7915011): BL MOD9 [Oberon] PROC21 |
| Texts.WriteString(W,q Id)r;s Texts.WriteString(W,t " changed
System.Date")u;v |
| 036C | q .FIXUP D |
| 036C | q(8D000010): LDR SB, MT, MOD0 [Net] |
| 036D | q(40D80000): ADD R0, SB, 0H [data] |
| 036E | q .FIXUP D |
| 036E | q(8D500002): LDR SB, MT, MOD5 [Texts] |
| 036F | q(41D80005): ADD R1, SB, VAR5 |
| 0370 | r(42E8001C): ADD R2, SP, 1CH |
| 0371 | r(43000008): MOV R3, R0, 8H |
| 0372 | s .FIXUP P |
| 0372 | s(F751D007): BL MOD5 [Texts] PROC29 |
| 0373 | t .FIXUP D |
| 0373 | t(8D000005): LDR SB, MT, MOD0 [Net] |
| 0374 | t(40D80000): ADD R0, SB, 0H [data] |
| 0375 | t .FIXUP D |
| 0375 | t(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0376 | t(41D80005): ADD R1, SB, VAR5 |
| 0377 | u .FIXUP D |
| 0377 | u(8D000002): LDR SB, MT, MOD0 [Net] |
| 0378 | u(42D800C8): ADD R2, SB, C8H [" changedSystem.Date"] |
| 0379 | u(43000014): MOV R3, R0, 14H |
| 037A | v .FIXUP P |
| 037A | v(F751D008): BL MOD5 [Texts] PROC29 |
| Texts.WriteClock(W,w newclock)x;y reply(0)z |
| 037B | w .FIXUP D |
| 037B | w(8D000004): LDR SB, MT, MOD0 [Net] |
| 037C | w(40D80000): ADD R0, SB, 0H [data] |
| 037D | w .FIXUP D |
| 037D | w(8D500002): LDR SB, MT, MOD5 [Texts] |
| 037E | w(41D80005): ADD R1, SB, VAR5 |
| 037F | x(82E00018): LDR R2, SP, 18H |
| 0380 | y .FIXUP P |
| 0380 | y(F7522006): BL MOD5 [Texts] PROC34 |
| 0381 | z(40000000): MOV R0, R0, 0H |
| ENDa |
| 0382 | a(F7FFFE92): BL -366 [0215H] |
| ELSIF head1b.typ = NRQ THENc |
| 0383 | b(E700003E): B 62 [03C2H] |
| 0384 | c .FIXUP D |
| 0384 | c(8D000007): LDR SB, MT, MOD0 [Net] |
| 0385 | c(90D00037): LDR R0, SB, 37H [data] |
| 0386 | c(40090034): SUB R0, R0, 34H |
| 0387 | c(E9000037): BNE 55 [03BFH] |
| i := 0;d |
| 0388 | d(40000000): MOV R0, R0, 0H |
| 0389 | d(A0E00004): STR R0, SP, 4H |
| REPEAT SCC.Receive(x)e;f Id[i]g := CHR(x);h INC(i);i |
| 038A | e(40E80009): ADD R0, SP, 9H |
| 038B | f .FIXUP P |
| 038B | f(F710700B): BL MOD1 [SCC] PROC7 |
| 038C | g(80E00004): LDR R0, SP, 4H |
| 038D | g(41090008): SUB R1, R0, 8H |
| 038E | g(DA1A6C1C): BLCC MT [trap=1, pos=6764] |
| 038F | g(00E80000): ADD R0, SP, R0 |
| 0390 | h(91E00009): LDR R1, SP, 9H |
| 0391 | h(B100001C): STR R1, R0, 1CH |
| 0392 | i(80E00004): LDR R0, SP, 4H |
| 0393 | i(40080001): ADD R0, R0, 1H |
| 0394 | i(A0E00004): STR R0, SP, 4H |
| IF i = 7 THENj Id[7] := 0X;k x := 0 ENDl |
| 0395 | j(80E00004): LDR R0, SP, 4H |
| 0396 | j(40090007): SUB R0, R0, 7H |
| 0397 | j(E9000004): BNE 4 [039CH] |
| 0398 | k(40000000): MOV R0, R0, 0H |
| 0399 | k(B0E00023): STR R0, SP, 23H |
| 039A | l(40000000): MOV R0, R0, 0H |
| 039B | l(B0E00009): STR R0, SP, 9H |
| UNTIL x = 0;m |
| 039C | m(90E00009): LDR R0, SP, 9H |
| 039D | m(E9FFFFEC): BNE -20 [038AH] |
| WHILE i < head1.len DOn SCC.Receive(x)o;p INC(i) ENDq ; |
| 039E | n(80E00004): LDR R0, SP, 4H |
| 039F | n .FIXUP D |
| 039F | n(8D00001B): LDR SB, MT, MOD0 [Net] |
| 03A0 | n(81D00038): LDR R1, SB, 38H [data] |
| 03A1 | n(00090001): SUB R0, R0, R1 |
| 03A2 | n(ED000006): BGE 6 [03A9H] |
| 03A3 | o(40E80009): ADD R0, SP, 9H |
| 03A4 | p .FIXUP P |
| 03A4 | p(F7107019): BL MOD1 [SCC] PROC7 |
| 03A5 | q(80E00004): LDR R0, SP, 4H |
| 03A6 | q(40080001): ADD R0, R0, 1H |
| 03A7 | q(A0E00004): STR R0, SP, 4H |
| 03A8 | q(E7FFFFF5): B -11 [039EH] |
| IF Id = Oberon.User THENr |
| 03A9 | r(40E8001C): ADD R0, SP, 1CH |
| 03AA | r .FIXUP D |
| 03AA | r(8D90000B): LDR SB, MT, MOD9 [Oberon] |
| 03AB | r(41D80008): ADD R1, SB, VAR8 |
| 03AC | r(92000000): LDR R2, R0, 0H |
| 03AD | r(40080001): ADD R0, R0, 1H |
| 03AE | r(93100000): LDR R3, R1, 0H |
| 03AF | r(41180001): ADD R1, R1, 1H |
| 03B0 | r(04290003): SUB R4, R2, R3 |
| 03B1 | r(E9000002): BNE 2 [03B4H] |
| 03B2 | r(44290000): SUB R4, R2, 0H |
| 03B3 | r(E9FFFFF8): BNE -8 [03ACH] |
| 03B4 | r(E9000009): BNE 9 [03BEH] |
| SetPartner(Id)s;t Send(NRS,u 0,v dmy)w |
| 03B5 | s(40E8001C): ADD R0, SP, 1CH |
| 03B6 | s(41000008): MOV R1, R0, 8H |
| 03B7 | t(F7FFFC48): BL -952 [0000H] |
| 03B8 | u(40000035): MOV R0, R0, 35H |
| 03B9 | v(41000000): MOV R1, R0, 0H |
| 03BA | w .FIXUP D |
| 03BA | w(8D000010): LDR SB, MT, MOD0 [Net] |
| 03BB | w(42D80044): ADD R2, SB, 44H [data] |
| 03BC | w(43000008): MOV R3, R0, 8H |
| ENDx |
| 03BD | x(F7FFFC5B): BL -933 [0019H] |
| ELSE SCCy.Skip(head1.len)z |
| 03BE | y(E7000003): B 3 [03C2H] |
| 03BF | z .FIXUP D |
| 03BF | z(8D000005): LDR SB, MT, MOD0 [Net] |
| 03C0 | z(80D00038): LDR R0, SB, 38H [data] |
| ENDa |
| 03C1 | a .FIXUP P |
| 03C1 | a(F710901D): BL MOD1 [SCC] PROC9 |
| END |
| ENDb Serve; |
| 03C2 | b(8FE00000): LDR LNK, SP, 0H |
| 03C3 | b(4EE8004C): ADD SP, SP, 4CH |
| 03C4 | b(C700000F): B LNK |
| |
| PROCEDURE GetPar1(VAR S: Texts.Scanner); |
| BEGINc Texts.OpenScanner(S,d Oberon.Par.text,e Oberon.Par.pos)f;g Texts.Scan(S)h |
| 03C5 | c(4EE9000C): SUB SP, SP, CH |
| 03C6 | c(AFE00000): STR LNK, SP, 0H |
| 03C7 | c(A0E00004): STR R0, SP, 4H |
| 03C8 | c(A1E00008): STR R1, SP, 8H |
| 03C9 | d(80E00004): LDR R0, SP, 4H |
| 03CA | d(81E00008): LDR R1, SP, 8H |
| 03CB | e .FIXUP D |
| 03CB | e(8D90000C): LDR SB, MT, MOD9 [Oberon] |
| 03CC | e(42D8000E): ADD R2, SB, VAR14 |
| 03CD | e(82200008): LDR R2, R2, 8H |
| 03CE | f .FIXUP D |
| 03CE | f(8D900003): LDR SB, MT, MOD9 [Oberon] |
| 03CF | f(43D8000E): ADD R3, SB, VAR14 |
| 03D0 | f(8330000C): LDR R3, R3, CH |
| 03D1 | g .FIXUP P |
| 03D1 | g(F7515010): BL MOD5 [Texts] PROC21 |
| 03D2 | h(80E00004): LDR R0, SP, 4H |
| 03D3 | h(81E00008): LDR R1, SP, 8H |
| ENDi GetPar1; |
| 03D4 | i .FIXUP P |
| 03D4 | i(F7516003): BL MOD5 [Texts] PROC22 |
| 03D5 | i(8FE00000): LDR LNK, SP, 0H |
| 03D6 | i(4EE8000C): ADD SP, SP, CH |
| 03D7 | i(C700000F): B LNK |
| |
| PROCEDURE GetPar(VAR S: Texts.Scanner; VAR end: LONGINT); |
| VAR T: Texts.Text; beg, tm: LONGINT; |
| BEGINj Texts.Scan(S)k;l |
| 03D8 | j(4EE9001C): SUB SP, SP, 1CH |
| 03D9 | j(AFE00000): STR LNK, SP, 0H |
| 03DA | j(A0E00004): STR R0, SP, 4H |
| 03DB | j(A1E00008): STR R1, SP, 8H |
| 03DC | j(A2E0000C): STR R2, SP, CH |
| 03DD | k(80E00004): LDR R0, SP, 4H |
| 03DE | k(81E00008): LDR R1, SP, 8H |
| 03DF | l .FIXUP P |
| 03DF | l(F751600B): BL MOD5 [Texts] PROC22 |
| IF (S.class = Texts.Char)m & (nS.c = "^")o THENp |
| 03E0 | m(80E00004): LDR R0, SP, 4H |
| 03E1 | m(8000003C): LDR R0, R0, 3CH |
| 03E2 | m(40090006): SUB R0, R0, 6H |
| 03E3 | n(E9000015): BNE 21 [03F9H] |
| 03E4 | o(80E00004): LDR R0, SP, 4H |
| 03E5 | o(9000004C): LDR R0, R0, 4CH |
| 03E6 | o(4009005E): SUB R0, R0, 5EH |
| 03E7 | p(E9000011): BNE 17 [03F9H] |
| Oberon.GetSelection(T,q beg,r end,s tm)t;u |
| 03E8 | q(40E80010): ADD R0, SP, 10H |
| 03E9 | r(41E80014): ADD R1, SP, 14H |
| 03EA | s(82E0000C): LDR R2, SP, CH |
| 03EB | t(43E80018): ADD R3, SP, 18H |
| 03EC | u .FIXUP P |
| 03EC | u(F792900D): BL MOD9 [Oberon] PROC41 |
| IF tm >= 0 THENv Texts.OpenScanner(S,w T,x beg)y;z Texts.Scan(S)a ENDb |
| 03ED | v(80E00018): LDR R0, SP, 18H |
| 03EE | v(40090000): SUB R0, R0, 0H |
| 03EF | v(E5000008): BLT 8 [03F8H] |
| 03F0 | w(80E00004): LDR R0, SP, 4H |
| 03F1 | w(81E00008): LDR R1, SP, 8H |
| 03F2 | x(82E00010): LDR R2, SP, 10H |
| 03F3 | y(83E00014): LDR R3, SP, 14H |
| 03F4 | z .FIXUP P |
| 03F4 | z(F7515008): BL MOD5 [Texts] PROC21 |
| 03F5 | a(80E00004): LDR R0, SP, 4H |
| 03F6 | a(81E00008): LDR R1, SP, 8H |
| 03F7 | b .FIXUP P |
| 03F7 | b(F7516003): BL MOD5 [Texts] PROC22 |
| ELSE endc := Oberon.Par.text.dlene |
| 03F8 | c(E7000007): B 7 [0400H] |
| 03F9 | d .FIXUP D |
| 03F9 | d(8D90002B): LDR SB, MT, MOD9 [Oberon] |
| 03FA | d(40D8000E): ADD R0, SB, VAR14 |
| 03FB | e(80000008): LDR R0, R0, 8H |
| 03FC | e(D11D634C): BLEQ MT [trap=4, pos=7523] |
| ENDf |
| 03FD | f(80000000): LDR R0, R0, 0H |
| 03FE | f(81E0000C): LDR R1, SP, CH |
| 03FF | f(A0100000): STR R0, R1, 0H |
| ENDg GetPar; |
| 0400 | g(8FE00000): LDR LNK, SP, 0H |
| 0401 | g(4EE8001C): ADD SP, SP, 1CH |
| 0402 | g(C700000F): B LNK |
| |
| PROCEDURE SendFiles*; |
| VAR k: INTEGER; |
| end: LONGINT; |
| S: Texts.Scanner; |
| F: Files.File; |
| buf: ARRAY 64 OF BYTE; |
| BEGINh GetPar1(S)i;j |
| 0403 | h .PROC 1 |
| 0403 | h .COMMAND SendFiles |
| 0403 | h(4EE900C4): SUB SP, SP, C4H |
| 0404 | h(AFE00000): STR LNK, SP, 0H |
| 0405 | i(40E8000C): ADD R0, SP, CH |
| 0406 | i .FIXUP D |
| 0406 | i(8D50000D): LDR SB, MT, MOD5 [Texts] |
| 0407 | i(41D80003): ADD R1, SB, VAR3 |
| 0408 | j(F7FFFFBC): BL -68 [03C5H] |
| IF S.class = Texts.Name THENk |
| 0409 | k(80E00048): LDR R0, SP, 48H |
| 040A | k(40090001): SUB R0, R0, 1H |
| 040B | k(E900009E): BNE 158 [04AAH] |
| FindPartner(S.s,l k)m;n |
| 040C | l(40E80060): ADD R0, SP, 60H |
| 040D | l(41000020): MOV R1, R0, 20H |
| 040E | m(42E80004): ADD R2, SP, 4H |
| 040F | n(F7FFFC4B): BL -949 [005BH] |
| IF k = 0 THENo |
| 0410 | o(80E00004): LDR R0, SP, 4H |
| 0411 | o(E9000096): BNE 150 [04A8H] |
| GetPar(S,p end)q;r |
| 0412 | p(40E8000C): ADD R0, SP, CH |
| 0413 | p .FIXUP D |
| 0413 | p(8D50000D): LDR SB, MT, MOD5 [Texts] |
| 0414 | p(41D80003): ADD R1, SB, VAR3 |
| 0415 | q(42E80008): ADD R2, SP, 8H |
| 0416 | r(F7FFFFC1): BL -63 [03D8H] |
| WHILE (Texts.Pos(S)s <t end)u & (vS.class = Texts.Name)w DOx |
| 0417 | s(40E8000C): ADD R0, SP, CH |
| 0418 | s .FIXUP D |
| 0418 | s(8D500005): LDR SB, MT, MOD5 [Texts] |
| 0419 | s(41D80003): ADD R1, SB, VAR3 |
| 041A | t .FIXUP P |
| 041A | t(F7514023): BL MOD5 [Texts] PROC20 |
| 041B | u(81E00008): LDR R1, SP, 8H |
| 041C | u(00090001): SUB R0, R0, R1 |
| 041D | v(ED000089): BGE 137 [04A7H] |
| 041E | w(80E00048): LDR R0, SP, 48H |
| 041F | w(40090001): SUB R0, R0, 1H |
| 0420 | x(E9000086): BNE 134 [04A7H] |
| Texts.WriteString(W,y S.s)z;a k := 0;b |
| 0421 | y .FIXUP D |
| 0421 | y(8D000009): LDR SB, MT, MOD0 [Net] |
| 0422 | y(40D80000): ADD R0, SB, 0H [data] |
| 0423 | y .FIXUP D |
| 0423 | y(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0424 | y(41D80005): ADD R1, SB, VAR5 |
| 0425 | z(42E80060): ADD R2, SP, 60H |
| 0426 | z(43000020): MOV R3, R0, 20H |
| 0427 | a .FIXUP P |
| 0427 | a(F751D00D): BL MOD5 [Texts] PROC29 |
| 0428 | b(40000000): MOV R0, R0, 0H |
| 0429 | b(A0E00004): STR R0, SP, 4H |
| AppendS(Oberon.User,c buf,d k)e;f AppendW(Oberon.Password,g buf,h 4,i k)j;k |
| 042A | c .FIXUP D |
| 042A | c(8D900007): LDR SB, MT, MOD9 [Oberon] |
| 042B | c(40D80008): ADD R0, SB, VAR8 |
| 042C | c(41000008): MOV R1, R0, 8H |
| 042D | d(42E80084): ADD R2, SP, 84H |
| 042E | d(43000040): MOV R3, R0, 40H |
| 042F | e(44E80004): ADD R4, SP, 4H |
| 0430 | f(F7FFFCA9): BL -855 [00DAH] |
| 0431 | g .FIXUP D |
| 0431 | g(8D900007): LDR SB, MT, MOD9 [Oberon] |
| 0432 | g(80D00009): LDR R0, SB, VAR9 |
| 0433 | h(41E80084): ADD R1, SP, 84H |
| 0434 | h(42000040): MOV R2, R0, 40H |
| 0435 | i(43000004): MOV R3, R0, 4H |
| 0436 | j(44E80004): ADD R4, SP, 4H |
| 0437 | k(F7FFFCC8): BL -824 [0100H] |
| AppendS(S.s,l buf,m k)n;o |
| 0438 | l(40E80060): ADD R0, SP, 60H |
| 0439 | l(41000020): MOV R1, R0, 20H |
| 043A | m(42E80084): ADD R2, SP, 84H |
| 043B | m(43000040): MOV R3, R0, 40H |
| 043C | n(44E80004): ADD R4, SP, 4H |
| 043D | o(F7FFFC9C): BL -868 [00DAH] |
| IF S.nextCh = ":" THENp (*prefix*) |
| 043E | p(90E00040): LDR R0, SP, 40H |
| 043F | p(4009003A): SUB R0, R0, 3AH |
| 0440 | p(E9000025): BNE 37 [0466H] |
| Texts.Scan(S)q;r Texts.Scan(S)s;t |
| 0441 | q(40E8000C): ADD R0, SP, CH |
| 0442 | q .FIXUP D |
| 0442 | q(8D500011): LDR SB, MT, MOD5 [Texts] |
| 0443 | q(41D80003): ADD R1, SB, VAR3 |
| 0444 | r .FIXUP P |
| 0444 | r(F751601D): BL MOD5 [Texts] PROC22 |
| 0445 | s(40E8000C): ADD R0, SP, CH |
| 0446 | s .FIXUP D |
| 0446 | s(8D500004): LDR SB, MT, MOD5 [Texts] |
| 0447 | s(41D80003): ADD R1, SB, VAR3 |
| 0448 | t .FIXUP P |
| 0448 | t(F7516004): BL MOD5 [Texts] PROC22 |
| IF S.class = Texts.Name THENu |
| 0449 | u(80E00048): LDR R0, SP, 48H |
| 044A | u(40090001): SUB R0, R0, 1H |
| 044B | u(E900001A): BNE 26 [0466H] |
| buf[k-1]v := ORD(".");w AppendS(S.s,x buf,y k)z;a |
| 044C | v(80E00004): LDR R0, SP, 4H |
| 044D | v(40090001): SUB R0, R0, 1H |
| 044E | v(41090040): SUB R1, R0, 40H |
| 044F | v(DA1FEF1C): BLCC MT [trap=1, pos=8175] |
| 0450 | v(00E80000): ADD R0, SP, R0 |
| 0451 | w(4100002E): MOV R1, R0, 2EH |
| 0452 | w(B1000084): STR R1, R0, 84H |
| 0453 | x(40E80060): ADD R0, SP, 60H |
| 0454 | x(41000020): MOV R1, R0, 20H |
| 0455 | y(42E80084): ADD R2, SP, 84H |
| 0456 | y(43000040): MOV R3, R0, 40H |
| 0457 | z(44E80004): ADD R4, SP, 4H |
| 0458 | a(F7FFFC81): BL -895 [00DAH] |
| Texts.Write(W,b ":")c;d Texts.WriteString(W,e S.s)f |
| 0459 | b .FIXUP D |
| 0459 | b(8D000013): LDR SB, MT, MOD0 [Net] |
| 045A | b(40D80000): ADD R0, SB, 0H [data] |
| 045B | b .FIXUP D |
| 045B | b(8D500002): LDR SB, MT, MOD5 [Texts] |
| 045C | b(41D80005): ADD R1, SB, VAR5 |
| 045D | c(4200003A): MOV R2, R0, 3AH |
| 045E | d .FIXUP P |
| 045E | d(F751B016): BL MOD5 [Texts] PROC27 |
| 045F | e .FIXUP D |
| 045F | e(8D000004): LDR SB, MT, MOD0 [Net] |
| 0460 | e(40D80000): ADD R0, SB, 0H [data] |
| 0461 | e .FIXUP D |
| 0461 | e(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0462 | e(41D80005): ADD R1, SB, VAR5 |
| 0463 | f(42E80060): ADD R2, SP, 60H |
| 0464 | f(43000020): MOV R3, R0, 20H |
| ENDg |
| 0465 | g .FIXUP P |
| 0465 | g(F751D007): BL MOD5 [Texts] PROC29 |
| END ; |
| F := Files.Old(S.s)h;i |
| 0466 | h(40E80060): ADD R0, SP, 60H |
| 0467 | h(41000020): MOV R1, R0, 20H |
| 0468 | i .FIXUP P |
| 0468 | i(F7202003): BL MOD2 [Files] PROC2 |
| 0469 | i(A0E00080): STR R0, SP, 80H |
| IF F # NIL THENj |
| 046A | j(80E00080): LDR R0, SP, 80H |
| 046B | j(E1000034): BEQ 52 [04A0H] |
| Send(REC,k k,l buf)m;n ReceiveHead(T0)o;p |
| 046C | k(40000042): MOV R0, R0, 42H |
| 046D | l(81E00004): LDR R1, SP, 4H |
| 046E | m(42E80084): ADD R2, SP, 84H |
| 046F | m(43000040): MOV R3, R0, 40H |
| 0470 | n(F7FFFBA8): BL -1112 [0019H] |
| 0471 | o(400003E8): MOV R0, R0, 3E8H |
| 0472 | p(F7FFFBBA): BL -1094 [002DH] |
| IF head1.typ = ACK THENq |
| 0473 | q .FIXUP D |
| 0473 | q(8D000012): LDR SB, MT, MOD0 [Net] |
| 0474 | q(90D00037): LDR R0, SB, 37H [data] |
| 0475 | q(40090010): SUB R0, R0, 10H |
| 0476 | q(E9000012): BNE 18 [0489H] |
| Texts.WriteString(W,r " sending")s;t Texts.Append(Oberon.Log,u |
| 0477 | r .FIXUP D |
| 0477 | r(8D000004): LDR SB, MT, MOD0 [Net] |
| 0478 | r(40D80000): ADD R0, SB, 0H [data] |
| 0479 | r .FIXUP D |
| 0479 | r(8D500002): LDR SB, MT, MOD5 [Texts] |
| 047A | r(41D80005): ADD R1, SB, VAR5 |
| 047B | s .FIXUP D |
| 047B | s(8D000002): LDR SB, MT, MOD0 [Net] |
| 047C | s(42D800DC): ADD R2, SB, DCH [" sending"] |
| 047D | s(43000009): MOV R3, R0, 9H |
| 047E | t .FIXUP P |
| 047E | t(F751D016): BL MOD5 [Texts] PROC29 |
| 047F | u .FIXUP D |
| 047F | u(8D900004): LDR SB, MT, MOD9 [Oberon] |
| 0480 | u(80D0000D): LDR R0, SB, VAR13 |
| W.buf)v;w |
| 0481 | v .FIXUP D |
| 0481 | v(8D000002): LDR SB, MT, MOD0 [Net] |
| 0482 | v(81D00000): LDR R1, SB, 0H [data] |
| 0483 | w .FIXUP P |
| 0483 | w(F750E005): BL MOD5 [Texts] PROC14 |
| SendData(F)x;y reply(0)z |
| 0484 | x(80E00080): LDR R0, SP, 80H |
| 0485 | y(F7FFFCD0): BL -816 [0156H] |
| 0486 | z(40000000): MOV R0, R0, 0H |
| ELSIFa head1b.typ = NPR THENc reply(2)d;e end := 0 |
| 0487 | a(F7FFFD8D): BL -627 [0215H] |
| 0488 | b(E7000016): B 22 [049FH] |
| 0489 | c .FIXUP D |
| 0489 | c(8D000008): LDR SB, MT, MOD0 [Net] |
| 048A | c(90D00037): LDR R0, SB, 37H [data] |
| 048B | c(40090026): SUB R0, R0, 26H |
| 048C | c(E9000005): BNE 5 [0492H] |
| 048D | d(40000002): MOV R0, R0, 2H |
| 048E | e(F7FFFD86): BL -634 [0215H] |
| ELSIFf head1g.typ = NAK THENh reply(3)i;j end := 0 |
| 048F | f(40000000): MOV R0, R0, 0H |
| 0490 | f(A0E00008): STR R0, SP, 8H |
| 0491 | g(E700000D): B 13 [049FH] |
| 0492 | h .FIXUP D |
| 0492 | h(8D000009): LDR SB, MT, MOD0 [Net] |
| 0493 | h(90D00037): LDR R0, SB, 37H [data] |
| 0494 | h(40090025): SUB R0, R0, 25H |
| 0495 | h(E9000005): BNE 5 [049BH] |
| 0496 | i(40000003): MOV R0, R0, 3H |
| 0497 | j(F7FFFD7D): BL -643 [0215H] |
| ELSEk replyl(5)m;n end := 0 |
| 0498 | k(40000000): MOV R0, R0, 0H |
| 0499 | k(A0E00008): STR R0, SP, 8H |
| 049A | l(E7000004): B 4 [049FH] |
| 049B | m(40000005): MOV R0, R0, 5H |
| 049C | n(F7FFFD78): BL -648 [0215H] |
| ENDo |
| 049D | o(40000000): MOV R0, R0, 0H |
| 049E | o(A0E00008): STR R0, SP, 8H |
| ELSE replyp(4)q |
| 049F | p(E7000002): B 2 [04A2H] |
| 04A0 | q(40000004): MOV R0, R0, 4H |
| ENDr ; |
| 04A1 | r(F7FFFD73): BL -653 [0215H] |
| Texts.Scan(S)s |
| 04A2 | s(40E8000C): ADD R0, SP, CH |
| 04A3 | s .FIXUP D |
| 04A3 | s(8D500011): LDR SB, MT, MOD5 [Texts] |
| 04A4 | s(41D80003): ADD R1, SB, VAR3 |
| ENDt |
| 04A5 | t .FIXUP P |
| 04A5 | t(F7516022): BL MOD5 [Texts] PROC22 |
| 04A6 | t(E7FFFF70): B -144 [0417H] |
| ELSE replyu(1)v |
| 04A7 | u(E7000002): B 2 [04AAH] |
| 04A8 | v(40000001): MOV R0, R0, 1H |
| ENDw |
| 04A9 | w(F7FFFD6B): BL -661 [0215H] |
| END |
| ENDx SendFiles; |
| 04AA | x(8FE00000): LDR LNK, SP, 0H |
| 04AB | x(4EE800C4): ADD SP, SP, C4H |
| 04AC | x(C700000F): B LNK |
| |
| PROCEDURE ReceiveFiles*; |
| VAR k: INTEGER; done: BOOLEAN; |
| end: LONGINT; |
| S: Texts.Scanner; |
| F: Files.File; |
| buf: ARRAY 64 OF BYTE; |
| BEGINy GetPar1(S)z;a |
| 04AD | y .PROC 2 |
| 04AD | y .COMMAND ReceiveFiles |
| 04AD | y(4EE900C8): SUB SP, SP, C8H |
| 04AE | y(AFE00000): STR LNK, SP, 0H |
| 04AF | z(40E80010): ADD R0, SP, 10H |
| 04B0 | z .FIXUP D |
| 04B0 | z(8D50000D): LDR SB, MT, MOD5 [Texts] |
| 04B1 | z(41D80003): ADD R1, SB, VAR3 |
| 04B2 | a(F7FFFF12): BL -238 [03C5H] |
| IF S.class = Texts.Name THENb |
| 04B3 | b(80E0004C): LDR R0, SP, 4CH |
| 04B4 | b(40090001): SUB R0, R0, 1H |
| 04B5 | b(E90000A9): BNE 169 [055FH] |
| FindPartner(S.s,c k)d;e |
| 04B6 | c(40E80064): ADD R0, SP, 64H |
| 04B7 | c(41000020): MOV R1, R0, 20H |
| 04B8 | d(42E80004): ADD R2, SP, 4H |
| 04B9 | e(F7FFFBA1): BL -1119 [005BH] |
| IF k = 0 THENf |
| 04BA | f(80E00004): LDR R0, SP, 4H |
| 04BB | f(E90000A1): BNE 161 [055DH] |
| GetPar(S,g end)h;i |
| 04BC | g(40E80010): ADD R0, SP, 10H |
| 04BD | g .FIXUP D |
| 04BD | g(8D50000D): LDR SB, MT, MOD5 [Texts] |
| 04BE | g(41D80003): ADD R1, SB, VAR3 |
| 04BF | h(42E8000C): ADD R2, SP, CH |
| 04C0 | i(F7FFFF17): BL -233 [03D8H] |
| WHILE (Texts.Pos(S)j <k end)l & (mS.class = Texts.Name)n DOo |
| 04C1 | j(40E80010): ADD R0, SP, 10H |
| 04C2 | j .FIXUP D |
| 04C2 | j(8D500005): LDR SB, MT, MOD5 [Texts] |
| 04C3 | j(41D80003): ADD R1, SB, VAR3 |
| 04C4 | k .FIXUP P |
| 04C4 | k(F751401F): BL MOD5 [Texts] PROC20 |
| 04C5 | l(81E0000C): LDR R1, SP, CH |
| 04C6 | l(00090001): SUB R0, R0, R1 |
| 04C7 | m(ED000094): BGE 148 [055CH] |
| 04C8 | n(80E0004C): LDR R0, SP, 4CH |
| 04C9 | n(40090001): SUB R0, R0, 1H |
| 04CA | o(E9000091): BNE 145 [055CH] |
| Texts.WriteString(W,p S.s)q;r |
| 04CB | p .FIXUP D |
| 04CB | p(8D000009): LDR SB, MT, MOD0 [Net] |
| 04CC | p(40D80000): ADD R0, SB, 0H [data] |
| 04CD | p .FIXUP D |
| 04CD | p(8D500002): LDR SB, MT, MOD5 [Texts] |
| 04CE | p(41D80005): ADD R1, SB, VAR5 |
| 04CF | q(42E80064): ADD R2, SP, 64H |
| 04D0 | q(43000020): MOV R3, R0, 20H |
| 04D1 | r .FIXUP P |
| 04D1 | r(F751D00D): BL MOD5 [Texts] PROC29 |
| k := 0;s AppendS(Oberon.User,t buf,u k)v;w AppendW(Oberon.Password,x |
| 04D2 | s(40000000): MOV R0, R0, 0H |
| 04D3 | s(A0E00004): STR R0, SP, 4H |
| 04D4 | t .FIXUP D |
| 04D4 | t(8D900007): LDR SB, MT, MOD9 [Oberon] |
| 04D5 | t(40D80008): ADD R0, SB, VAR8 |
| 04D6 | t(41000008): MOV R1, R0, 8H |
| 04D7 | u(42E80088): ADD R2, SP, 88H |
| 04D8 | u(43000040): MOV R3, R0, 40H |
| 04D9 | v(44E80004): ADD R4, SP, 4H |
| 04DA | w(F7FFFBFF): BL -1025 [00DAH] |
| 04DB | x .FIXUP D |
| 04DB | x(8D900007): LDR SB, MT, MOD9 [Oberon] |
| 04DC | x(80D00009): LDR R0, SB, VAR9 |
| buf,y 4,z k)a;b |
| 04DD | y(41E80088): ADD R1, SP, 88H |
| 04DE | y(42000040): MOV R2, R0, 40H |
| 04DF | z(43000004): MOV R3, R0, 4H |
| 04E0 | a(44E80004): ADD R4, SP, 4H |
| 04E1 | b(F7FFFC1E): BL -994 [0100H] |
| AppendS(S.s,c buf,d k)e;f |
| 04E2 | c(40E80064): ADD R0, SP, 64H |
| 04E3 | c(41000020): MOV R1, R0, 20H |
| 04E4 | d(42E80088): ADD R2, SP, 88H |
| 04E5 | d(43000040): MOV R3, R0, 40H |
| 04E6 | e(44E80004): ADD R4, SP, 4H |
| 04E7 | f(F7FFFBF2): BL -1038 [00DAH] |
| IF S.nextCh = ":" THENg (*prefix*) |
| 04E8 | g(90E00044): LDR R0, SP, 44H |
| 04E9 | g(4009003A): SUB R0, R0, 3AH |
| 04EA | g(E9000025): BNE 37 [0510H] |
| Texts.Scan(S)h;i Texts.Scan(S)j;k |
| 04EB | h(40E80010): ADD R0, SP, 10H |
| 04EC | h .FIXUP D |
| 04EC | h(8D500011): LDR SB, MT, MOD5 [Texts] |
| 04ED | h(41D80003): ADD R1, SB, VAR3 |
| 04EE | i .FIXUP P |
| 04EE | i(F751601D): BL MOD5 [Texts] PROC22 |
| 04EF | j(40E80010): ADD R0, SP, 10H |
| 04F0 | j .FIXUP D |
| 04F0 | j(8D500004): LDR SB, MT, MOD5 [Texts] |
| 04F1 | j(41D80003): ADD R1, SB, VAR3 |
| 04F2 | k .FIXUP P |
| 04F2 | k(F7516004): BL MOD5 [Texts] PROC22 |
| IF S.class = Texts.Name THENl |
| 04F3 | l(80E0004C): LDR R0, SP, 4CH |
| 04F4 | l(40090001): SUB R0, R0, 1H |
| 04F5 | l(E900001A): BNE 26 [0510H] |
| buf[k-1]m := ORD(".");n AppendS(S.s,o buf,p k)q;r |
| 04F6 | m(80E00004): LDR R0, SP, 4H |
| 04F7 | m(40090001): SUB R0, R0, 1H |
| 04F8 | m(41090040): SUB R1, R0, 40H |
| 04F9 | m(DA25241C): BLCC MT [trap=1, pos=9508] |
| 04FA | m(00E80000): ADD R0, SP, R0 |
| 04FB | n(4100002E): MOV R1, R0, 2EH |
| 04FC | n(B1000088): STR R1, R0, 88H |
| 04FD | o(40E80064): ADD R0, SP, 64H |
| 04FE | o(41000020): MOV R1, R0, 20H |
| 04FF | p(42E80088): ADD R2, SP, 88H |
| 0500 | p(43000040): MOV R3, R0, 40H |
| 0501 | q(44E80004): ADD R4, SP, 4H |
| 0502 | r(F7FFFBD7): BL -1065 [00DAH] |
| Texts.Write(W,s ":")t;u Texts.WriteString(W,v S.s)w |
| 0503 | s .FIXUP D |
| 0503 | s(8D000013): LDR SB, MT, MOD0 [Net] |
| 0504 | s(40D80000): ADD R0, SB, 0H [data] |
| 0505 | s .FIXUP D |
| 0505 | s(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0506 | s(41D80005): ADD R1, SB, VAR5 |
| 0507 | t(4200003A): MOV R2, R0, 3AH |
| 0508 | u .FIXUP P |
| 0508 | u(F751B016): BL MOD5 [Texts] PROC27 |
| 0509 | v .FIXUP D |
| 0509 | v(8D000004): LDR SB, MT, MOD0 [Net] |
| 050A | v(40D80000): ADD R0, SB, 0H [data] |
| 050B | v .FIXUP D |
| 050B | v(8D500002): LDR SB, MT, MOD5 [Texts] |
| 050C | v(41D80005): ADD R1, SB, VAR5 |
| 050D | w(42E80064): ADD R2, SP, 64H |
| 050E | w(43000020): MOV R3, R0, 20H |
| ENDx |
| 050F | x .FIXUP P |
| 050F | x(F751D007): BL MOD5 [Texts] PROC29 |
| END ; |
| Send(SND,y k,z buf)a;b |
| 0510 | y(40000041): MOV R0, R0, 41H |
| 0511 | z(81E00004): LDR R1, SP, 4H |
| 0512 | a(42E80088): ADD R2, SP, 88H |
| 0513 | a(43000040): MOV R3, R0, 40H |
| 0514 | b(F7FFFB04): BL -1276 [0019H] |
| Texts.WriteString(W,c " receiving")d;e Texts.Append(Oberon.Log,f |
| 0515 | c .FIXUP D |
| 0515 | c(8D00000A): LDR SB, MT, MOD0 [Net] |
| 0516 | c(40D80000): ADD R0, SB, 0H [data] |
| 0517 | c .FIXUP D |
| 0517 | c(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0518 | c(41D80005): ADD R1, SB, VAR5 |
| 0519 | d .FIXUP D |
| 0519 | d(8D000002): LDR SB, MT, MOD0 [Net] |
| 051A | d(42D800E8): ADD R2, SB, E8H [" receiving"] |
| 051B | d(4300000B): MOV R3, R0, BH |
| 051C | e .FIXUP P |
| 051C | e(F751D00D): BL MOD5 [Texts] PROC29 |
| 051D | f .FIXUP D |
| 051D | f(8D900004): LDR SB, MT, MOD9 [Oberon] |
| 051E | f(80D0000D): LDR R0, SB, VAR13 |
| W.buf)g;h |
| 051F | g .FIXUP D |
| 051F | g(8D000002): LDR SB, MT, MOD0 [Net] |
| 0520 | g(81D00000): LDR R1, SB, 0H [data] |
| 0521 | h .FIXUP P |
| 0521 | h(F750E005): BL MOD5 [Texts] PROC14 |
| ReceiveHead(T1)i;j |
| 0522 | i(40000BB8): MOV R0, R0, BB8H |
| 0523 | j(F7FFFB09): BL -1271 [002DH] |
| IF head1.typ = 0 THENk |
| 0524 | k .FIXUP D |
| 0524 | k(8D000005): LDR SB, MT, MOD0 [Net] |
| 0525 | k(90D00037): LDR R0, SB, 37H [data] |
| 0526 | k(E900001C): BNE 28 [0543H] |
| F := Files.New(S.s)l;m |
| 0527 | l(40E80064): ADD R0, SP, 64H |
| 0528 | l(41000020): MOV R1, R0, 20H |
| 0529 | m .FIXUP P |
| 0529 | m(F7203008): BL MOD2 [Files] PROC3 |
| 052A | m(A0E00084): STR R0, SP, 84H |
| IF F # NIL THENn |
| 052B | n(80E00084): LDR R0, SP, 84H |
| 052C | n(E100000D): BEQ 13 [053AH] |
| ReceiveData(F,o done)p;q |
| 052D | o(80E00084): LDR R0, SP, 84H |
| 052E | p(41E80008): ADD R1, SP, 8H |
| 052F | q(F7FFFC7C): BL -900 [01ACH] |
| IF done THENr Files.Register(F)s;t reply(0)u ELSEv endw := 0 ENDx |
| 0530 | r(90E00008): LDR R0, SP, 8H |
| 0531 | r(E1000005): BEQ 5 [0537H] |
| 0532 | s(80E00084): LDR R0, SP, 84H |
| 0533 | t .FIXUP P |
| 0533 | t(F720400A): BL MOD2 [Files] PROC4 |
| 0534 | u(40000000): MOV R0, R0, 0H |
| 0535 | v(F7FFFCDF): BL -801 [0215H] |
| 0536 | w(E7000002): B 2 [0539H] |
| 0537 | x(40000000): MOV R0, R0, 0H |
| 0538 | x(A0E0000C): STR R0, SP, CH |
| ELSE replyy(3)z;a Send(NAK,b 0,c dmy)d |
| 0539 | y(E7000008): B 8 [0542H] |
| 053A | z(40000003): MOV R0, R0, 3H |
| 053B | a(F7FFFCD9): BL -807 [0215H] |
| 053C | b(40000025): MOV R0, R0, 25H |
| 053D | c(41000000): MOV R1, R0, 0H |
| 053E | d .FIXUP D |
| 053E | d(8D00001A): LDR SB, MT, MOD0 [Net] |
| 053F | d(42D80044): ADD R2, SB, 44H [data] |
| 0540 | d(43000008): MOV R3, R0, 8H |
| ENDe |
| 0541 | e(F7FFFAD7): BL -1321 [0019H] |
| ELSIF head1f.typ = NAK THENg reply(4)h |
| 0542 | f(E7000014): B 20 [0557H] |
| 0543 | g .FIXUP D |
| 0543 | g(8D000005): LDR SB, MT, MOD0 [Net] |
| 0544 | g(90D00037): LDR R0, SB, 37H [data] |
| 0545 | g(40090025): SUB R0, R0, 25H |
| 0546 | g(E9000003): BNE 3 [054AH] |
| 0547 | h(40000004): MOV R0, R0, 4H |
| ELSIFi head1j.typ = NPR THENk reply(2)l;m end := 0 |
| 0548 | i(F7FFFCCC): BL -820 [0215H] |
| 0549 | j(E700000D): B 13 [0557H] |
| 054A | k .FIXUP D |
| 054A | k(8D000007): LDR SB, MT, MOD0 [Net] |
| 054B | k(90D00037): LDR R0, SB, 37H [data] |
| 054C | k(40090026): SUB R0, R0, 26H |
| 054D | k(E9000005): BNE 5 [0553H] |
| 054E | l(40000002): MOV R0, R0, 2H |
| 054F | m(F7FFFCC5): BL -827 [0215H] |
| ELSEn replyo(5)p;q end := 0 |
| 0550 | n(40000000): MOV R0, R0, 0H |
| 0551 | n(A0E0000C): STR R0, SP, CH |
| 0552 | o(E7000004): B 4 [0557H] |
| 0553 | p(40000005): MOV R0, R0, 5H |
| 0554 | q(F7FFFCC0): BL -832 [0215H] |
| ENDr ; |
| 0555 | r(40000000): MOV R0, R0, 0H |
| 0556 | r(A0E0000C): STR R0, SP, CH |
| Texts.Scan(S)s |
| 0557 | s(40E80010): ADD R0, SP, 10H |
| 0558 | s .FIXUP D |
| 0558 | s(8D50000E): LDR SB, MT, MOD5 [Texts] |
| 0559 | s(41D80003): ADD R1, SB, VAR3 |
| ENDt |
| 055A | t .FIXUP P |
| 055A | t(F7516027): BL MOD5 [Texts] PROC22 |
| 055B | t(E7FFFF65): B -155 [04C1H] |
| ELSE replyu(1)v |
| 055C | u(E7000002): B 2 [055FH] |
| 055D | v(40000001): MOV R0, R0, 1H |
| ENDw |
| 055E | w(F7FFFCB6): BL -842 [0215H] |
| END |
| ENDx ReceiveFiles; |
| 055F | x(8FE00000): LDR LNK, SP, 0H |
| 0560 | x(4EE800C8): ADD SP, SP, C8H |
| 0561 | x(C700000F): B LNK |
| |
| PROCEDURE SendMsg*; |
| VAR i: INTEGER; ch: CHAR; |
| S: Texts.Scanner; |
| msg: ARRAY 64 OF BYTE; |
| BEGINy GetPar1(S)z;a |
| 0562 | y .PROC 3 |
| 0562 | y .COMMAND SendMsg |
| 0562 | y(4EE900C0): SUB SP, SP, C0H |
| 0563 | y(AFE00000): STR LNK, SP, 0H |
| 0564 | z(40E8000C): ADD R0, SP, CH |
| 0565 | z .FIXUP D |
| 0565 | z(8D50000D): LDR SB, MT, MOD5 [Texts] |
| 0566 | z(41D80003): ADD R1, SB, VAR3 |
| 0567 | a(F7FFFE5D): BL -419 [03C5H] |
| IF S.class = Texts.Name THENb |
| 0568 | b(80E00048): LDR R0, SP, 48H |
| 0569 | b(40090001): SUB R0, R0, 1H |
| 056A | b(E9000030): BNE 48 [059BH] |
| FindPartner(S.s,c i)d;e |
| 056B | c(40E80060): ADD R0, SP, 60H |
| 056C | c(41000020): MOV R1, R0, 20H |
| 056D | d(42E80004): ADD R2, SP, 4H |
| 056E | e(F7FFFAEC): BL -1300 [005BH] |
| IF i = 0 THENf |
| 056F | f(80E00004): LDR R0, SP, 4H |
| 0570 | f(E9000028): BNE 40 [0599H] |
| Texts.Read(S,g ch)h;i |
| 0571 | g(40E8000C): ADD R0, SP, CH |
| 0572 | g .FIXUP D |
| 0572 | g(8D50000D): LDR SB, MT, MOD5 [Texts] |
| 0573 | g(41D80003): ADD R1, SB, VAR3 |
| 0574 | h(42E80008): ADD R2, SP, 8H |
| 0575 | i .FIXUP P |
| 0575 | i(F751301B): BL MOD5 [Texts] PROC19 |
| WHILE (ch >= " ")j & (ki < 64)l DOm |
| 0576 | j(90E00008): LDR R0, SP, 8H |
| 0577 | j(40090020): SUB R0, R0, 20H |
| 0578 | k(E5000012): BLT 18 [058BH] |
| 0579 | l(80E00004): LDR R0, SP, 4H |
| 057A | l(40090040): SUB R0, R0, 40H |
| 057B | m(ED00000F): BGE 15 [058BH] |
| msg[i]n := ORD(ch);o INC(i);p Texts.Read(S,q ch)r |
| 057C | n(80E00004): LDR R0, SP, 4H |
| 057D | n(41090040): SUB R1, R0, 40H |
| 057E | n(DA294A1C): BLCC MT [trap=1, pos=10570] |
| 057F | n(00E80000): ADD R0, SP, R0 |
| 0580 | o(91E00008): LDR R1, SP, 8H |
| 0581 | o(B1000080): STR R1, R0, 80H |
| 0582 | p(80E00004): LDR R0, SP, 4H |
| 0583 | p(40080001): ADD R0, R0, 1H |
| 0584 | p(A0E00004): STR R0, SP, 4H |
| 0585 | q(40E8000C): ADD R0, SP, CH |
| 0586 | q .FIXUP D |
| 0586 | q(8D500014): LDR SB, MT, MOD5 [Texts] |
| 0587 | q(41D80003): ADD R1, SB, VAR3 |
| 0588 | r(42E80008): ADD R2, SP, 8H |
| ENDs ; |
| 0589 | s .FIXUP P |
| 0589 | s(F7513014): BL MOD5 [Texts] PROC19 |
| 058A | s(E7FFFFEB): B -21 [0576H] |
| Send(MSG,t i,u msg)v;w ReceiveHead(T0)x;y |
| 058B | t(40000044): MOV R0, R0, 44H |
| 058C | u(81E00004): LDR R1, SP, 4H |
| 058D | v(42E80080): ADD R2, SP, 80H |
| 058E | v(43000040): MOV R3, R0, 40H |
| 058F | w(F7FFFA89): BL -1399 [0019H] |
| 0590 | x(400003E8): MOV R0, R0, 3E8H |
| 0591 | y(F7FFFA9B): BL -1381 [002DH] |
| IF head1.typ # ACK THENz reply(3)a ENDb |
| 0592 | z .FIXUP D |
| 0592 | z(8D00000C): LDR SB, MT, MOD0 [Net] |
| 0593 | z(90D00037): LDR R0, SB, 37H [data] |
| 0594 | z(40090010): SUB R0, R0, 10H |
| 0595 | z(E1000002): BEQ 2 [0598H] |
| 0596 | a(40000003): MOV R0, R0, 3H |
| 0597 | b(F7FFFC7D): BL -899 [0215H] |
| ELSE replyc(1)d |
| 0598 | c(E7000002): B 2 [059BH] |
| 0599 | d(40000001): MOV R0, R0, 1H |
| ENDe |
| 059A | e(F7FFFC7A): BL -902 [0215H] |
| END |
| ENDf SendMsg; |
| 059B | f(8FE00000): LDR LNK, SP, 0H |
| 059C | f(4EE800C0): ADD SP, SP, C0H |
| 059D | f(C700000F): B LNK |
| |
| PROCEDURE GetTime*; |
| VAR dt, res: INTEGER; |
| S: Texts.Scanner; |
| BEGINg GetPar1(S)h;i |
| 059E | g .PROC 4 |
| 059E | g .COMMAND GetTime |
| 059E | g(4EE90080): SUB SP, SP, 80H |
| 059F | g(AFE00000): STR LNK, SP, 0H |
| 05A0 | h(40E8000C): ADD R0, SP, CH |
| 05A1 | h .FIXUP D |
| 05A1 | h(8D50000F): LDR SB, MT, MOD5 [Texts] |
| 05A2 | h(41D80003): ADD R1, SB, VAR3 |
| 05A3 | i(F7FFFE21): BL -479 [03C5H] |
| IF S.class = Texts.Name THENj |
| 05A4 | j(80E00048): LDR R0, SP, 48H |
| 05A5 | j(40090001): SUB R0, R0, 1H |
| 05A6 | j(E900001B): BNE 27 [05C2H] |
| FindPartner(S.s,k res)l;m |
| 05A7 | k(40E80060): ADD R0, SP, 60H |
| 05A8 | k(41000020): MOV R1, R0, 20H |
| 05A9 | l(42E80008): ADD R2, SP, 8H |
| 05AA | m(F7FFFAB0): BL -1360 [005BH] |
| IF res = 0 THENn |
| 05AB | n(80E00008): LDR R0, SP, 8H |
| 05AC | n(E9000013): BNE 19 [05C0H] |
| Send(TRQ,o 0,p dmy)q;r ReceiveHead(T1)s;t |
| 05AD | o(40000046): MOV R0, R0, 46H |
| 05AE | p(41000000): MOV R1, R0, 0H |
| 05AF | q .FIXUP D |
| 05AF | q(8D00000E): LDR SB, MT, MOD0 [Net] |
| 05B0 | q(42D80044): ADD R2, SB, 44H [data] |
| 05B1 | q(43000008): MOV R3, R0, 8H |
| 05B2 | r(F7FFFA66): BL -1434 [0019H] |
| 05B3 | s(40000BB8): MOV R0, R0, BB8H |
| 05B4 | t(F7FFFA78): BL -1416 [002DH] |
| IF head1.typ = TIM THENu |
| 05B5 | u .FIXUP D |
| 05B5 | u(8D000006): LDR SB, MT, MOD0 [Net] |
| 05B6 | u(90D00037): LDR R0, SB, 37H [data] |
| 05B7 | u(40090047): SUB R0, R0, 47H |
| 05B8 | u(E9000006): BNE 6 [05BFH] |
| PickQ(dt)v;w Oberon.SetClock(dt)x;y reply(6)z |
| 05B9 | v(40E80004): ADD R0, SP, 4H |
| 05BA | w(F7FFFB81): BL -1151 [013CH] |
| 05BB | x(80E00004): LDR R0, SP, 4H |
| 05BC | y .FIXUP P |
| 05BC | y(F7915033): BL MOD9 [Oberon] PROC21 |
| 05BD | z(40000006): MOV R0, R0, 6H |
| ENDa |
| 05BE | a(F7FFFC56): BL -938 [0215H] |
| ELSE replyb(1)c |
| 05BF | b(E7000002): B 2 [05C2H] |
| 05C0 | c(40000001): MOV R0, R0, 1H |
| ENDd |
| 05C1 | d(F7FFFC53): BL -941 [0215H] |
| END |
| ENDe GetTime; |
| 05C2 | e(8FE00000): LDR LNK, SP, 0H |
| 05C3 | e(4EE80080): ADD SP, SP, 80H |
| 05C4 | e(C700000F): B LNK |
| |
| PROCEDURE StartServer*; |
| BEGINf protected := TRUE;g partner[0] := 0X;h SCC.Start(TRUE)i;j |
| 05C5 | f .PROC 5 |
| 05C5 | f .COMMAND StartServer |
| 05C5 | f(4EE90004): SUB SP, SP, 4H |
| 05C6 | f(AFE00000): STR LNK, SP, 0H |
| 05C7 | g(40000001): MOV R0, R0, 1H |
| 05C8 | g .FIXUP D |
| 05C8 | g(8D000013): LDR SB, MT, MOD0 [Net] |
| 05C9 | g(B0D0004C): STR R0, SB, 4CH [data] |
| 05CA | h(40000000): MOV R0, R0, 0H |
| 05CB | h(B0D0003C): STR R0, SB, 3CH |
| 05CC | i(40000001): MOV R0, R0, 1H |
| 05CD | j .FIXUP P |
| 05CD | j(F7104011): BL MOD1 [SCC] PROC4 |
| Oberon.Remove(Server)k;l Oberon.Install(Server)m;n |
| 05CE | k .FIXUP D |
| 05CE | k(8D000006): LDR SB, MT, MOD0 [Net] |
| 05CF | k(80D00028): LDR R0, SB, 28H [data] |
| 05D0 | l .FIXUP P |
| 05D0 | l(F792C003): BL MOD9 [Oberon] PROC44 |
| 05D1 | m .FIXUP D |
| 05D1 | m(8D000003): LDR SB, MT, MOD0 [Net] |
| 05D2 | m(80D00028): LDR R0, SB, 28H [data] |
| 05D3 | n .FIXUP P |
| 05D3 | n(F792B003): BL MOD9 [Oberon] PROC43 |
| Texts.WriteString(W,o " Server started as ")p;q Texts.WriteString(W,r |
| 05D4 | o .FIXUP D |
| 05D4 | o(8D000003): LDR SB, MT, MOD0 [Net] |
| 05D5 | o(40D80000): ADD R0, SB, 0H [data] |
| 05D6 | o .FIXUP D |
| 05D6 | o(8D500002): LDR SB, MT, MOD5 [Texts] |
| 05D7 | o(41D80005): ADD R1, SB, VAR5 |
| 05D8 | p .FIXUP D |
| 05D8 | p(8D000002): LDR SB, MT, MOD0 [Net] |
| 05D9 | p(42D800F4): ADD R2, SB, F4H [" Server started as "] |
| 05DA | p(43000014): MOV R3, R0, 14H |
| 05DB | q .FIXUP P |
| 05DB | q(F751D008): BL MOD5 [Texts] PROC29 |
| 05DC | r .FIXUP D |
| 05DC | r(8D000004): LDR SB, MT, MOD0 [Net] |
| 05DD | r(40D80000): ADD R0, SB, 0H [data] |
| 05DE | r .FIXUP D |
| 05DE | r(8D500002): LDR SB, MT, MOD5 [Texts] |
| 05DF | r(41D80005): ADD R1, SB, VAR5 |
| Oberon.User)s;t |
| 05E0 | s .FIXUP D |
| 05E0 | s(8D900002): LDR SB, MT, MOD9 [Oberon] |
| 05E1 | s(42D80008): ADD R2, SB, VAR8 |
| 05E2 | s(43000008): MOV R3, R0, 8H |
| 05E3 | t .FIXUP P |
| 05E3 | t(F751D008): BL MOD5 [Texts] PROC29 |
| Texts.WriteLn(W)u;v Texts.Append(Oberon.Log,w W.buf)x |
| 05E4 | u .FIXUP D |
| 05E4 | u(8D000004): LDR SB, MT, MOD0 [Net] |
| 05E5 | u(40D80000): ADD R0, SB, 0H [data] |
| 05E6 | u .FIXUP D |
| 05E6 | u(8D500002): LDR SB, MT, MOD5 [Texts] |
| 05E7 | u(41D80005): ADD R1, SB, VAR5 |
| 05E8 | v .FIXUP P |
| 05E8 | v(F751C005): BL MOD5 [Texts] PROC28 |
| 05E9 | w .FIXUP D |
| 05E9 | w(8D900003): LDR SB, MT, MOD9 [Oberon] |
| 05EA | w(80D0000D): LDR R0, SB, VAR13 |
| 05EB | x .FIXUP D |
| 05EB | x(8D000002): LDR SB, MT, MOD0 [Net] |
| 05EC | x(81D00000): LDR R1, SB, 0H [data] |
| ENDy StartServer; |
| 05ED | y .FIXUP P |
| 05ED | y(F750E005): BL MOD5 [Texts] PROC14 |
| 05EE | y(8FE00000): LDR LNK, SP, 0H |
| 05EF | y(4EE80004): ADD SP, SP, 4H |
| 05F0 | y(C700000F): B LNK |
| |
| PROCEDURE Unprotect*; |
| BEGINz protected := FALSE |
| 05F1 | z .PROC 6 |
| 05F1 | z .COMMAND Unprotect |
| 05F1 | z(4EE90004): SUB SP, SP, 4H |
| 05F2 | z(AFE00000): STR LNK, SP, 0H |
| ENDa Unprotect; |
| 05F3 | a(40000000): MOV R0, R0, 0H |
| 05F4 | a .FIXUP D |
| 05F4 | a(8D000009): LDR SB, MT, MOD0 [Net] |
| 05F5 | a(B0D0004C): STR R0, SB, 4CH [data] |
| 05F6 | a(8FE00000): LDR LNK, SP, 0H |
| 05F7 | a(4EE80004): ADD SP, SP, 4H |
| 05F8 | a(C700000F): B LNK |
| |
| PROCEDURE WProtect*; |
| BEGINb protected := TRUE |
| 05F9 | b .PROC 7 |
| 05F9 | b .COMMAND WProtect |
| 05F9 | b(4EE90004): SUB SP, SP, 4H |
| 05FA | b(AFE00000): STR LNK, SP, 0H |
| ENDc WProtect; |
| 05FB | c(40000001): MOV R0, R0, 1H |
| 05FC | c .FIXUP D |
| 05FC | c(8D000008): LDR SB, MT, MOD0 [Net] |
| 05FD | c(B0D0004C): STR R0, SB, 4CH [data] |
| 05FE | c(8FE00000): LDR LNK, SP, 0H |
| 05FF | c(4EE80004): ADD SP, SP, 4H |
| 0600 | c(C700000F): B LNK |
| |
| PROCEDURE Reset*; |
| BEGINd SCC.Start(TRUE)e |
| 0601 | d .PROC 8 |
| 0601 | d .COMMAND Reset |
| 0601 | d(4EE90004): SUB SP, SP, 4H |
| 0602 | d(AFE00000): STR LNK, SP, 0H |
| 0603 | e(40000001): MOV R0, R0, 1H |
| ENDf Reset; |
| 0604 | f .FIXUP P |
| 0604 | f(F7104017): BL MOD1 [SCC] PROC4 |
| 0605 | f(8FE00000): LDR LNK, SP, 0H |
| 0606 | f(4EE80004): ADD SP, SP, 4H |
| 0607 | f(C700000F): B LNK |
| |
| PROCEDURE StopServer*; |
| BEGINg Oberon.Remove(Server)h;i Texts.WriteString(W,j " Server stopped")k;l |
| 0608 | g .PROC 9 |
| 0608 | g .COMMAND StopServer |
| 0608 | g(4EE90004): SUB SP, SP, 4H |
| 0609 | g(AFE00000): STR LNK, SP, 0H |
| 060A | h .FIXUP D |
| 060A | h(8D00000E): LDR SB, MT, MOD0 [Net] |
| 060B | h(80D00028): LDR R0, SB, 28H [data] |
| 060C | i .FIXUP P |
| 060C | i(F792C008): BL MOD9 [Oberon] PROC44 |
| 060D | j .FIXUP D |
| 060D | j(8D000003): LDR SB, MT, MOD0 [Net] |
| 060E | j(40D80000): ADD R0, SB, 0H [data] |
| 060F | j .FIXUP D |
| 060F | j(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0610 | j(41D80005): ADD R1, SB, VAR5 |
| 0611 | k .FIXUP D |
| 0611 | k(8D000002): LDR SB, MT, MOD0 [Net] |
| 0612 | k(42D80108): ADD R2, SB, 108H [" Server stopped"] |
| 0613 | k(43000010): MOV R3, R0, 10H |
| 0614 | l .FIXUP P |
| 0614 | l(F751D008): BL MOD5 [Texts] PROC29 |
| Texts.WriteLn(W)m;n Texts.Append(Oberon.Log,o W.buf)p |
| 0615 | m .FIXUP D |
| 0615 | m(8D000004): LDR SB, MT, MOD0 [Net] |
| 0616 | m(40D80000): ADD R0, SB, 0H [data] |
| 0617 | m .FIXUP D |
| 0617 | m(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0618 | m(41D80005): ADD R1, SB, VAR5 |
| 0619 | n .FIXUP P |
| 0619 | n(F751C005): BL MOD5 [Texts] PROC28 |
| 061A | o .FIXUP D |
| 061A | o(8D900003): LDR SB, MT, MOD9 [Oberon] |
| 061B | o(80D0000D): LDR R0, SB, VAR13 |
| 061C | p .FIXUP D |
| 061C | p(8D000002): LDR SB, MT, MOD0 [Net] |
| 061D | p(81D00000): LDR R1, SB, 0H [data] |
| ENDq StopServer; |
| 061E | q .FIXUP P |
| 061E | q(F750E005): BL MOD5 [Texts] PROC14 |
| 061F | q(8FE00000): LDR LNK, SP, 0H |
| 0620 | q(4EE80004): ADD SP, SP, 4H |
| 0621 | q(C700000F): B LNK |
| |
| PROCEDURE SCCStatus*; |
| BEGINr |
| 0622 | r .PROC 10 |
| 0622 | r .COMMAND SCCStatus |
| 0622 | r(4EE90004): SUB SP, SP, 4H |
| 0623 | r(AFE00000): STR LNK, SP, 0H |
| Texts.WriteString(W,s "SCC.Available() ")t;u |
| 0624 | s .FIXUP D |
| 0624 | s(8D000008): LDR SB, MT, MOD0 [Net] |
| 0625 | s(40D80000): ADD R0, SB, 0H [data] |
| 0626 | s .FIXUP D |
| 0626 | s(8D500002): LDR SB, MT, MOD5 [Texts] |
| 0627 | s(41D80005): ADD R1, SB, VAR5 |
| 0628 | t .FIXUP D |
| 0628 | t(8D000002): LDR SB, MT, MOD0 [Net] |
| 0629 | t(42D80118): ADD R2, SB, 118H ["SCC.Available() "] |
| 062A | t(43000011): MOV R3, R0, 11H |
| 062B | u .FIXUP P |
| 062B | u(F751D00D): BL MOD5 [Texts] PROC29 |
| Texts.WriteInt(W,v SCC.Available()w,x 1)y;z |
| 062C | v .FIXUP D |
| 062C | v(8D000004): LDR SB, MT, MOD0 [Net] |
| 062D | v(40D80000): ADD R0, SB, 0H [data] |
| 062E | v .FIXUP D |
| 062E | v(8D500002): LDR SB, MT, MOD5 [Texts] |
| 062F | v(41D80005): ADD R1, SB, VAR5 |
| 0630 | w(4EE90008): SUB SP, SP, 8H |
| 0631 | w(A0E00004): STR R0, SP, 4H |
| 0632 | w(A1E00000): STR R1, SP, 0H |
| 0633 | x .FIXUP P |
| 0633 | x(F7106008): BL MOD1 [SCC] PROC6 |
| 0634 | x(02000000): MOV R2, R0, R0 |
| 0635 | x(81E00000): LDR R1, SP, 0H |
| 0636 | x(80E00004): LDR R0, SP, 4H |
| 0637 | x(4EE80008): ADD SP, SP, 8H |
| 0638 | y(43000001): MOV R3, R0, 1H |
| 0639 | z .FIXUP P |
| 0639 | z(F751E006): BL MOD5 [Texts] PROC30 |
| Texts.WriteLn(W)a;b |
| 063A | a .FIXUP D |
| 063A | a(8D00000C): LDR SB, MT, MOD0 [Net] |
| 063B | a(40D80000): ADD R0, SB, 0H [data] |
| 063C | a .FIXUP D |
| 063C | a(8D500002): LDR SB, MT, MOD5 [Texts] |
| 063D | a(41D80005): ADD R1, SB, VAR5 |
| 063E | b .FIXUP P |
| 063E | b(F751C005): BL MOD5 [Texts] PROC28 |
| Texts.Append(Oberon.Log,c W.buf)d |
| 063F | c .FIXUP D |
| 063F | c(8D900003): LDR SB, MT, MOD9 [Oberon] |
| 0640 | c(80D0000D): LDR R0, SB, VAR13 |
| 0641 | d .FIXUP D |
| 0641 | d(8D000002): LDR SB, MT, MOD0 [Net] |
| 0642 | d(81D00000): LDR R1, SB, 0H [data] |
| ENDe SCCStatus; |
| 0643 | e .FIXUP P |
| 0643 | e(F750E005): BL MOD5 [Texts] PROC14 |
| 0644 | e(8FE00000): LDR LNK, SP, 0H |
| 0645 | e(4EE80004): ADD SP, SP, 4H |
| 0646 | e(C700000F): B LNK |
| |
| BEGINf Texts.OpenWriter(W)g;h Server := Oberon.NewTask(Serve,i 500)j |
| 0647 | f .PROC 0 |
| 0647 | f .ENTRYPOINT |
| 0647 | f(4EE90004): SUB SP, SP, 4H |
| 0648 | f(AFE00000): STR LNK, SP, 0H |
| 0649 | g .FIXUP D |
| 0649 | g(8D000008): LDR SB, MT, MOD0 [Net] |
| 064A | g(40D80000): ADD R0, SB, 0H [data] |
| 064B | g .FIXUP D |
| 064B | g(8D500002): LDR SB, MT, MOD5 [Texts] |
| 064C | g(41D80005): ADD R1, SB, VAR5 |
| 064D | h .FIXUP P |
| 064D | h(F751700A): BL MOD5 [Texts] PROC23 |
| 064E | i(F7000000): BL 0 [064FH] |
| 064F | i(40F90F8C): SUB R0, LNK, F8CH |
| 0650 | j(410001F4): MOV R1, R0, 1F4H |
| ENDk Net.l |
| 0651 | k .FIXUP P |
| 0651 | k(F792A004): BL MOD9 [Oberon] PROC42 |
| 0652 | k .FIXUP D |
| 0652 | k(8D000007): LDR SB, MT, MOD0 [Net] |
| 0653 | k(A0D00028): STR R0, SB, 28H [data] |
| 0654 | l(8FE00000): LDR LNK, SP, 0H |
| 0655 | l(4EE80004): ADD SP, SP, 4H |
| 0656 | l(C700000F): B LNK |