| 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 |