| MODULE Files; (*NW 11.1.86 / 22.9.93 / 25.5.95 / 25.12.95 / 15.8.2013*) |
| .MODULE Files (KEY 73F5D686, VERSION 1, SIZE 00002620) |
| .IMPORT Kernel (KEY 97E012DD) |
| .IMPORT FileDir (KEY AF8E65FF) |
| .TYPEDESC 00000020 FFFFFFFF FFFFFFFF FFFFFFFF 00000014 00000008 FFFFFFFF 00000200 FFFFFFFF FFFFFFFF FFFFFFFF 00000040 00000044 00000048 0000004C 00000050 00000054 00000058 0000005C 00000060 00000064 00000068 0000006C 00000014 FFFFFFFF 00000500 FFFFFFFF FFFFFFFF FFFFFFFF 0000000C FFFFFFFF 00000500 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |
| .DATA 4H |
| .FIXUP T 0H |
| IMPORT SYSTEM, Kernel, FileDir; |
| |
| (*A file consists of a sequence of pages. The first page |
| contains the header. Part of the header is the page table, an array |
| of disk addresses to the pages. A file is referenced through riders. |
| A rider indicates a current position and refers to a file*) |
| |
| CONST MaxBufs = 4; |
| HS = FileDir.HeaderSize; |
| SS = FileDir.SectorSize; |
| STS = FileDir.SecTabSize; |
| XS = FileDir.IndexSize; |
| |
| TYPE DiskAdr = INTEGER; |
| File* = POINTER TO FileDesc; |
| Buffer = POINTER TO BufferRecord; |
| Index = POINTER TO IndexRecord; |
| |
| Rider* = |
| RECORD eof*: BOOLEAN; |
| res*: INTEGER; |
| file: File; |
| apos, bpos: INTEGER; |
| buf: Buffer |
| END ; |
| |
| FileDesc = |
| RECORD next: INTEGER; (*list of files invisible to the GC*) |
| nofbufs, aleng, bleng: INTEGER; |
| modH, registered: BOOLEAN; |
| firstbuf: Buffer; |
| sechint: DiskAdr; |
| name: FileDir.FileName; |
| date: INTEGER; |
| ext: ARRAY FileDir.ExTabSize OF Index; |
| sec: FileDir.SectorTable |
| END ; |
| |
| BufferRecord = |
| RECORD apos, lim: INTEGER; |
| mod: BOOLEAN; |
| next: Buffer; |
| data: FileDir.DataSector |
| END ; |
| |
| IndexRecord = |
| RECORD adr: DiskAdr; |
| mod: BOOLEAN; |
| sec: FileDir.IndexSector |
| END ; |
| |
| (*aleng * SS + bleng = length (including header) |
| apos * SS + bpos = current position |
| 0 <= bpos <= lim <= SS |
| 0 <= apos <= aleng < PgTabSize |
| (apos < aleng) & (lim = SS) OR (apos = aleng) *) |
| |
| VAR root: INTEGER (*File*); (*list of open files*) |
| |
| PROCEDURE Check(s: ARRAY OF CHAR; |
| VAR name: FileDir.FileName; VAR res: INTEGER); |
| VAR i: INTEGER; ch: CHAR; |
| BEGINa ch := s[0]b;c i := 0;d |
0000 | a .PROC 1 |
0000 | a(4EE9001C): SUB SP, SP, 1CH |
0001 | a(AFE00000): STR LNK, SP, 0H |
0002 | a(A0E00004): STR R0, SP, 4H |
0003 | a(A1E00008): STR R1, SP, 8H |
0004 | a(A2E0000C): STR R2, SP, CH |
0005 | a(A3E00010): STR R3, SP, 10H |
0006 | b(40000000): MOV R0, R0, 0H |
0007 | b(81E00008): LDR R1, SP, 8H |
0008 | b(01090001): SUB R1, R0, R1 |
0009 | b(DA074D1C): BLCC MT [trap=1, pos=1869] |
000A | b(81E00004): LDR R1, SP, 4H |
000B | b(00180000): ADD R0, R1, R0 |
000C | c(90000000): LDR R0, R0, 0H |
000D | c(B0E00018): STR R0, SP, 18H |
000E | d(40000000): MOV R0, R0, 0H |
000F | d(A0E00014): STR R0, SP, 14H |
| IF (ch >= "A")e & (fch <= "Z")g OR (hch >= "a")i & (jch <= "z")k THENl |
0010 | e(90E00018): LDR R0, SP, 18H |
0011 | e(40090041): SUB R0, R0, 41H |
0012 | f(E5000003): BLT 3 [0016H] |
0013 | g(90E00018): LDR R0, SP, 18H |
0014 | g(4009005A): SUB R0, R0, 5AH |
0015 | h(E6000006): BLE 6 [001CH] |
0016 | i(90E00018): LDR R0, SP, 18H |
0017 | i(40090061): SUB R0, R0, 61H |
0018 | j(E500004C): BLT 76 [0065H] |
0019 | k(90E00018): LDR R0, SP, 18H |
001A | k(4009007A): SUB R0, R0, 7AH |
001B | l(EE000049): BGT 73 [0065H] |
| REPEAT name[i]m := ch;n INC(i);o ch := s[i]p |
001C | m(80E00014): LDR R0, SP, 14H |
001D | m(41090020): SUB R1, R0, 20H |
001E | m(DA07AE1C): BLCC MT [trap=1, pos=1966] |
001F | m(81E0000C): LDR R1, SP, CH |
0020 | m(00180000): ADD R0, R1, R0 |
0021 | n(91E00018): LDR R1, SP, 18H |
0022 | n(B1000000): STR R1, R0, 0H |
0023 | o(80E00014): LDR R0, SP, 14H |
0024 | o(40080001): ADD R0, R0, 1H |
0025 | o(A0E00014): STR R0, SP, 14H |
0026 | p(80E00014): LDR R0, SP, 14H |
0027 | p(81E00008): LDR R1, SP, 8H |
0028 | p(01090001): SUB R1, R0, R1 |
0029 | p(DA07C81C): BLCC MT [trap=1, pos=1992] |
002A | p(81E00004): LDR R1, SP, 4H |
002B | p(00180000): ADD R0, R1, R0 |
| UNTILq ~((ch >= "0")r & (sch <= "9")t OR (uch >= "A")v & (wch <= "Z")x |
002C | q(90000000): LDR R0, R0, 0H |
002D | q(B0E00018): STR R0, SP, 18H |
002E | r(90E00018): LDR R0, SP, 18H |
002F | r(40090030): SUB R0, R0, 30H |
0030 | s(E5000003): BLT 3 [0034H] |
0031 | t(90E00018): LDR R0, SP, 18H |
0032 | t(40090039): SUB R0, R0, 39H |
0033 | u(E600000F): BLE 15 [0043H] |
0034 | v(90E00018): LDR R0, SP, 18H |
0035 | v(40090041): SUB R0, R0, 41H |
0036 | w(E5000003): BLT 3 [003AH] |
0037 | x(90E00018): LDR R0, SP, 18H |
0038 | x(4009005A): SUB R0, R0, 5AH |
| OR (ych >= "a")z & (ach <= "z")b OR (cch = ".")d) OR (ei = FileDir.FnLength)f;g |
0039 | y(E6000009): BLE 9 [0043H] |
003A | z(90E00018): LDR R0, SP, 18H |
003B | z(40090061): SUB R0, R0, 61H |
003C | a(E5000003): BLT 3 [0040H] |
003D | b(90E00018): LDR R0, SP, 18H |
003E | b(4009007A): SUB R0, R0, 7AH |
003F | c(E6000003): BLE 3 [0043H] |
0040 | d(90E00018): LDR R0, SP, 18H |
0041 | d(4009002E): SUB R0, R0, 2EH |
0042 | e(E9000003): BNE 3 [0046H] |
0043 | f(80E00014): LDR R0, SP, 14H |
0044 | f(40090020): SUB R0, R0, 20H |
0045 | g(E9FFFFD6): BNE -42 [001CH] |
| IF i = FileDir.FnLength THENh res := 4 |
0046 | h(80E00014): LDR R0, SP, 14H |
0047 | h(40090020): SUB R0, R0, 20H |
0048 | h(E9000004): BNE 4 [004DH] |
| ELSIFi chj = 0X THENk res := 0;l |
0049 | i(40000004): MOV R0, R0, 4H |
004A | i(81E00010): LDR R1, SP, 10H |
004B | i(A0100000): STR R0, R1, 0H |
004C | j(E7000017): B 23 [0064H] |
004D | k(90E00018): LDR R0, SP, 18H |
004E | k(E9000012): BNE 18 [0061H] |
004F | l(40000000): MOV R0, R0, 0H |
0050 | l(81E00010): LDR R1, SP, 10H |
0051 | l(A0100000): STR R0, R1, 0H |
| WHILE i < FileDir.FnLength DOm name[i]n := 0X;o INC(i) ENDp |
0052 | m(80E00014): LDR R0, SP, 14H |
0053 | m(40090020): SUB R0, R0, 20H |
0054 | m(ED00000B): BGE 11 [0060H] |
0055 | n(80E00014): LDR R0, SP, 14H |
0056 | n(41090020): SUB R1, R0, 20H |
0057 | n(DA08D91C): BLCC MT [trap=1, pos=2265] |
0058 | n(81E0000C): LDR R1, SP, CH |
0059 | n(00180000): ADD R0, R1, R0 |
005A | o(41000000): MOV R1, R0, 0H |
005B | o(B1000000): STR R1, R0, 0H |
005C | p(80E00014): LDR R0, SP, 14H |
005D | p(40080001): ADD R0, R0, 1H |
005E | p(A0E00014): STR R0, SP, 14H |
005F | p(E7FFFFF2): B -14 [0052H] |
| ELSE resq := 5 |
0060 | q(E7000003): B 3 [0064H] |
| ENDr |
0061 | r(40000005): MOV R0, R0, 5H |
0062 | r(81E00010): LDR R1, SP, 10H |
0063 | r(A0100000): STR R0, R1, 0H |
| ELSIF chs = 0X THENt name[0] := 0X;u res := -1 |
0064 | s(E700000C): B 12 [0071H] |
0065 | t(90E00018): LDR R0, SP, 18H |
0066 | t(E9000007): BNE 7 [006EH] |
0067 | u(40000000): MOV R0, R0, 0H |
0068 | u(81E0000C): LDR R1, SP, CH |
0069 | u(B0100000): STR R0, R1, 0H |
| ELSEv resw := 3 |
006A | v(5000FFFF): MOV R0, R0, FFFFFFFFH |
006B | v(81E00010): LDR R1, SP, 10H |
006C | v(A0100000): STR R0, R1, 0H |
006D | w(E7000003): B 3 [0071H] |
| ENDx |
006E | x(40000003): MOV R0, R0, 3H |
006F | x(81E00010): LDR R1, SP, 10H |
0070 | x(A0100000): STR R0, R1, 0H |
| ENDy Check; |
0071 | y(8FE00000): LDR LNK, SP, 0H |
0072 | y(4EE8001C): ADD SP, SP, 1CH |
0073 | y(C700000F): B LNK |
| |
| PROCEDURE Old*(name: ARRAY OF CHAR): File; |
| VAR i, k, res: INTEGER; |
| f: File; |
| header: DiskAdr; |
| buf: Buffer; |
| F: FileDir.FileHd; |
| namebuf: FileDir.FileName; |
| inxpg: Index; |
| BEGINz f := NIL;a Check(name,b namebuf,c res)d;e |
0074 | z .PROC 2 |
0074 | z(4EE9004C): SUB SP, SP, 4CH |
0075 | z(AFE00000): STR LNK, SP, 0H |
0076 | z(A0E00004): STR R0, SP, 4H |
0077 | z(A1E00008): STR R1, SP, 8H |
0078 | a(40000000): MOV R0, R0, 0H |
0079 | a(A0E00018): STR R0, SP, 18H |
007A | b(80E00004): LDR R0, SP, 4H |
007B | b(81E00008): LDR R1, SP, 8H |
007C | c(42E80028): ADD R2, SP, 28H |
007D | d(43E80014): ADD R3, SP, 14H |
007E | e(F7FFFF81): BL -127 [0000H] |
| IF res = 0 THENf |
007F | f(80E00014): LDR R0, SP, 14H |
0080 | f(E90000D2): BNE 210 [0153H] |
| FileDir.Search(namebuf,g header)h;i |
0081 | g(40E80028): ADD R0, SP, 28H |
0082 | h(41E8001C): ADD R1, SP, 1CH |
0083 | i .FIXUP P |
0083 | i(F7204083): BL MOD2 [FileDir] PROC4 |
| IF header # 0 THENj |
0084 | j(80E0001C): LDR R0, SP, 1CH |
0085 | j(E10000CD): BEQ 205 [0153H] |
| f := SYSTEM.VAL(File, root);k |
0086 | k .FIXUP D |
0086 | k(8D000086): LDR SB, MT, MOD0 [Files] |
0087 | k(80D00090): LDR R0, SB, 90H [data] |
0088 | k(A0E00018): STR R0, SP, 18H |
| WHILE (f # NIL)l & (mf.secn[0] # header)o DOp f := SYSTEM.VAL(File, f.nextq) ENDr ; |
0089 | l(80E00018): LDR R0, SP, 18H |
008A | m(E100000B): BEQ 11 [0096H] |
008B | n(80E00018): LDR R0, SP, 18H |
008C | n(D10AF84C): BLEQ MT [trap=4, pos=2808] |
008D | o(80000070): LDR R0, R0, 70H |
008E | o(81E0001C): LDR R1, SP, 1CH |
008F | o(00090001): SUB R0, R0, R1 |
0090 | p(E1000005): BEQ 5 [0096H] |
0091 | q(80E00018): LDR R0, SP, 18H |
0092 | q(D10B254C): BLEQ MT [trap=4, pos=2853] |
0093 | r(80000000): LDR R0, R0, 0H |
0094 | r(A0E00018): STR R0, SP, 18H |
0095 | r(E7FFFFF3): B -13 [0089H] |
| IF f = NIL THENs (*file not yet present*) |
0096 | s(80E00018): LDR R0, SP, 18H |
0097 | s(E90000BB): BNE 187 [0153H] |
| NEW(buf);t buf.aposu := 0;v buf.nextw := buf;x buf.mody := FALSE;z |
0098 | t(40E80020): ADD R0, SP, 20H |
0099 | t .FIXUP D |
0099 | t(8D000013): LDR SB, MT, MOD0 [Files] |
009A | t(41D80064): ADD R1, SB, 64H [data] |
009B | t(D70B710C): BL MT [trap=0, pos=2929] |
009C | u(80E00020): LDR R0, SP, 20H |
009D | u(D10B7A4C): BLEQ MT [trap=4, pos=2938] |
009E | v(41000000): MOV R1, R0, 0H |
009F | v(A1000000): STR R1, R0, 0H |
00A0 | w(80E00020): LDR R0, SP, 20H |
00A1 | w(D10B894C): BLEQ MT [trap=4, pos=2953] |
00A2 | x(81E00020): LDR R1, SP, 20H |
00A3 | x(A100000C): STR R1, R0, CH |
00A4 | y(80E00020): LDR R0, SP, 20H |
00A5 | y(D10B994C): BLEQ MT [trap=4, pos=2969] |
00A6 | z(41000000): MOV R1, R0, 0H |
00A7 | z(B1000008): STR R1, R0, 8H |
| F := SYSTEM.VAL(FileDir.FileHd, SYSTEM.ADR(buf.dataa))b;c |
00A8 | a(80E00020): LDR R0, SP, 20H |
00A9 | a(D10BE14C): BLEQ MT [trap=4, pos=3041] |
00AA | b(40080010): ADD R0, R0, 10H |
00AB | c(A0E00024): STR R0, SP, 24H |
| Kernel.GetSector(header,d buf.datae)f;g ASSERT(F.markh = FileDir.HeaderMark)i;j |
00AC | d(80E0001C): LDR R0, SP, 1CH |
00AD | e(81E00020): LDR R1, SP, 20H |
00AE | e(D10C104C): BLEQ MT [trap=4, pos=3088] |
00AF | f(41180010): ADD R1, R1, 10H |
00B0 | g .FIXUP P |
00B0 | g(F710F02D): BL MOD1 [Kernel] PROC15 |
00B1 | h(80E00024): LDR R0, SP, 24H |
00B2 | h(D10C204C): BLEQ MT [trap=4, pos=3104] |
00B3 | i(80000000): LDR R0, R0, 0H |
00B4 | i(71009BA7): MOV' R1, R0, FFFF9BA7H |
00B5 | i(41161D86): IOR R1, R1, 1D86H |
00B6 | i(00090001): SUB R0, R0, R1 |
00B7 | j(D90C377C): BLNE MT [trap=7, pos=3127] |
| NEW(f);k f.alengl := F.alengm;n f.blengo := F.blengp;q f.dater := F.dates;t |
00B8 | k(40E80018): ADD R0, SP, 18H |
00B9 | k .FIXUP D |
00B9 | k(8D000020): LDR SB, MT, MOD0 [Files] |
00BA | k(41D8001C): ADD R1, SB, 1CH [data] |
00BB | k(D70C490C): BL MT [trap=0, pos=3145] |
00BC | l(80E00018): LDR R0, SP, 18H |
00BD | l(D10C514C): BLEQ MT [trap=4, pos=3153] |
00BE | m(81E00024): LDR R1, SP, 24H |
00BF | m(D10C5C4C): BLEQ MT [trap=4, pos=3164] |
00C0 | n(81100024): LDR R1, R1, 24H |
00C1 | n(A1000008): STR R1, R0, 8H |
00C2 | o(80E00018): LDR R0, SP, 18H |
00C3 | o(D10C654C): BLEQ MT [trap=4, pos=3173] |
00C4 | p(81E00024): LDR R1, SP, 24H |
00C5 | p(D10C704C): BLEQ MT [trap=4, pos=3184] |
00C6 | q(81100028): LDR R1, R1, 28H |
00C7 | q(A100000C): STR R1, R0, CH |
00C8 | r(80E00018): LDR R0, SP, 18H |
00C9 | r(D10C784C): BLEQ MT [trap=4, pos=3192] |
00CA | s(81E00024): LDR R1, SP, 24H |
00CB | s(D10C824C): BLEQ MT [trap=4, pos=3202] |
00CC | t(8110002C): LDR R1, R1, 2CH |
00CD | t(A100003C): STR R1, R0, 3CH |
| IF f.alengu = 0 THENv buf.limw := f.blengx ELSEy bufz.lima := SS ENDb ; |
00CE | u(80E00018): LDR R0, SP, 18H |
00CF | u(D10C984C): BLEQ MT [trap=4, pos=3224] |
00D0 | v(80000008): LDR R0, R0, 8H |
00D1 | v(E9000007): BNE 7 [00D9H] |
00D2 | w(80E00020): LDR R0, SP, 20H |
00D3 | w(D10CA94C): BLEQ MT [trap=4, pos=3241] |
00D4 | x(81E00018): LDR R1, SP, 18H |
00D5 | x(D10CB44C): BLEQ MT [trap=4, pos=3252] |
00D6 | y(8110000C): LDR R1, R1, CH |
00D7 | y(A1000004): STR R1, R0, 4H |
00D8 | z(E7000004): B 4 [00DDH] |
00D9 | a(80E00020): LDR R0, SP, 20H |
00DA | a(D10CC14C): BLEQ MT [trap=4, pos=3265] |
00DB | b(41000400): MOV R1, R0, 400H |
00DC | b(A1000004): STR R1, R0, 4H |
| f.firstbufc := buf;d f.nofbufse := 1;f f.nameg := namebuf;h f.registeredi := TRUE;j |
00DD | c(80E00018): LDR R0, SP, 18H |
00DE | c(D10CE24C): BLEQ MT [trap=4, pos=3298] |
00DF | d(81E00020): LDR R1, SP, 20H |
00E0 | d(A1000014): STR R1, R0, 14H |
00E1 | e(80E00018): LDR R0, SP, 18H |
00E2 | e(D10CF44C): BLEQ MT [trap=4, pos=3316] |
00E3 | f(41000001): MOV R1, R0, 1H |
00E4 | f(A1000004): STR R1, R0, 4H |
00E5 | g(80E00018): LDR R0, SP, 18H |
00E6 | g(D10D014C): BLEQ MT [trap=4, pos=3329] |
00E7 | h(4008001C): ADD R0, R0, 1CH |
00E8 | h(41E80028): ADD R1, SP, 28H |
00E9 | h(42000008): MOV R2, R0, 8H |
00EA | h(83100000): LDR R3, R1, 0H |
00EB | h(41180004): ADD R1, R1, 4H |
00EC | h(A3000000): STR R3, R0, 0H |
00ED | h(40080004): ADD R0, R0, 4H |
00EE | h(42290001): SUB R2, R2, 1H |
00EF | h(E9FFFFFA): BNE -6 [00EAH] |
00F0 | i(80E00018): LDR R0, SP, 18H |
00F1 | i(D10D1A4C): BLEQ MT [trap=4, pos=3354] |
00F2 | j(41000001): MOV R1, R0, 1H |
00F3 | j(B1000011): STR R1, R0, 11H |
| f.seck := F.secl;m |
00F4 | k(80E00018): LDR R0, SP, 18H |
00F5 | k(D10D334C): BLEQ MT [trap=4, pos=3379] |
00F6 | l(81E00024): LDR R1, SP, 24H |
00F7 | l(D10D3C4C): BLEQ MT [trap=4, pos=3388] |
00F8 | m(40080070): ADD R0, R0, 70H |
00F9 | m(41180060): ADD R1, R1, 60H |
00FA | m(42000040): MOV R2, R0, 40H |
00FB | m(83100000): LDR R3, R1, 0H |
00FC | m(41180004): ADD R1, R1, 4H |
00FD | m(A3000000): STR R3, R0, 0H |
00FE | m(40080004): ADD R0, R0, 4H |
00FF | m(42290001): SUB R2, R2, 1H |
0100 | m(E9FFFFFA): BNE -6 [00FBH] |
| k := (f.alengn + (XS-STS))o DIV XS;p i := 0;q |
0101 | n(80E00018): LDR R0, SP, 18H |
0102 | n(D10D554C): BLEQ MT [trap=4, pos=3413] |
0103 | o(80000008): LDR R0, R0, 8H |
0104 | o(400800C0): ADD R0, R0, C0H |
0105 | p(40020008): ASR R0, R0, 8H |
0106 | p(A0E00010): STR R0, SP, 10H |
0107 | q(40000000): MOV R0, R0, 0H |
0108 | q(A0E0000C): STR R0, SP, CH |
| WHILE i < k DOr |
0109 | r(80E0000C): LDR R0, SP, CH |
010A | r(81E00010): LDR R1, SP, 10H |
010B | r(00090001): SUB R0, R0, R1 |
010C | r(ED000027): BGE 39 [0134H] |
| NEW(inxpg);s inxpg.adrt := F.extu[i]v;w inxpg.modx := FALSE;y |
010D | s(40E80048): ADD R0, SP, 48H |
010E | s .FIXUP D |
010E | s(8D000055): LDR SB, MT, MOD0 [Files] |
010F | s(41D8007C): ADD R1, SB, 7CH [data] |
0110 | s(D70DA20C): BL MT [trap=0, pos=3490] |
0111 | t(80E00048): LDR R0, SP, 48H |
0112 | t(D10DAC4C): BLEQ MT [trap=4, pos=3500] |
0113 | u(81E00024): LDR R1, SP, 24H |
0114 | u(D10DB54C): BLEQ MT [trap=4, pos=3509] |
0115 | v(82E0000C): LDR R2, SP, CH |
0116 | v(4329000C): SUB R3, R2, CH |
0117 | v(DA0DB81C): BLCC MT [trap=1, pos=3512] |
0118 | v(42210002): LSL R2, R2, 2H |
0119 | v(01180002): ADD R1, R1, R2 |
011A | w(81100030): LDR R1, R1, 30H |
011B | w(A1000000): STR R1, R0, 0H |
011C | x(80E00048): LDR R0, SP, 48H |
011D | x(D10DC34C): BLEQ MT [trap=4, pos=3523] |
011E | y(41000000): MOV R1, R0, 0H |
011F | y(B1000004): STR R1, R0, 4H |
| Kernel.GetSector(inxpg.adrz,a inxpg.secb)c;d f.exte[i]f := inxpg;g INC(i) |
0120 | z(80E00048): LDR R0, SP, 48H |
0121 | z(D10DF44C): BLEQ MT [trap=4, pos=3572] |
0122 | a(80000000): LDR R0, R0, 0H |
0123 | b(81E00048): LDR R1, SP, 48H |
0124 | b(D10DFF4C): BLEQ MT [trap=4, pos=3583] |
0125 | c(41180008): ADD R1, R1, 8H |
0126 | d .FIXUP P |
0126 | d(F710F076): BL MOD1 [Kernel] PROC15 |
0127 | e(80E00018): LDR R0, SP, 18H |
0128 | e(D10E074C): BLEQ MT [trap=4, pos=3591] |
0129 | f(81E0000C): LDR R1, SP, CH |
012A | f(4219000C): SUB R2, R1, CH |
012B | f(DA0E0A1C): BLCC MT [trap=1, pos=3594] |
012C | f(41110002): LSL R1, R1, 2H |
012D | f(00080001): ADD R0, R0, R1 |
012E | g(81E00048): LDR R1, SP, 48H |
012F | g(A1000040): STR R1, R0, 40H |
| ENDh ; |
0130 | h(80E0000C): LDR R0, SP, CH |
0131 | h(40080001): ADD R0, R0, 1H |
0132 | h(A0E0000C): STR R0, SP, CH |
0133 | h(E7FFFFD5): B -43 [0109H] |
| WHILE i < FileDir.ExTabSize DOi f.extj[i]k := NIL;l INC(i) ENDm ; |
0134 | i(80E0000C): LDR R0, SP, CH |
0135 | i(4009000C): SUB R0, R0, CH |
0136 | i(ED00000D): BGE 13 [0144H] |
0137 | j(80E00018): LDR R0, SP, 18H |
0138 | j(D10E5A4C): BLEQ MT [trap=4, pos=3674] |
0139 | k(81E0000C): LDR R1, SP, CH |
013A | k(4219000C): SUB R2, R1, CH |
013B | k(DA0E5D1C): BLCC MT [trap=1, pos=3677] |
013C | k(41110002): LSL R1, R1, 2H |
013D | k(00080001): ADD R0, R0, R1 |
013E | l(41000000): MOV R1, R0, 0H |
013F | l(A1000040): STR R1, R0, 40H |
0140 | m(80E0000C): LDR R0, SP, CH |
0141 | m(40080001): ADD R0, R0, 1H |
0142 | m(A0E0000C): STR R0, SP, CH |
0143 | m(E7FFFFF0): B -16 [0134H] |
| f.sechintn := header;o f.modHp := FALSE;q f.nextr := root;s root := SYSTEM.VAL(INTEGER, f) |
0144 | n(80E00018): LDR R0, SP, 18H |
0145 | n(D10E864C): BLEQ MT [trap=4, pos=3718] |
0146 | o(81E0001C): LDR R1, SP, 1CH |
0147 | o(A1000018): STR R1, R0, 18H |
0148 | p(80E00018): LDR R0, SP, 18H |
0149 | p(D10E984C): BLEQ MT [trap=4, pos=3736] |
014A | q(41000000): MOV R1, R0, 0H |
014B | q(B1000010): STR R1, R0, 10H |
014C | r(80E00018): LDR R0, SP, 18H |
014D | r(D10EA94C): BLEQ MT [trap=4, pos=3753] |
014E | s .FIXUP D |
014E | s(8D000040): LDR SB, MT, MOD0 [Files] |
014F | s(81D00090): LDR R1, SB, 90H [data] |
0150 | s(A1000000): STR R1, R0, 0H |
| ENDt |
0151 | t(80E00018): LDR R0, SP, 18H |
0152 | t(A0D00090): STR R0, SB, 90H |
| END |
| END ; |
| RETURN f |
| ENDu Old; |
0153 | u(80E00018): LDR R0, SP, 18H |
0154 | u(8FE00000): LDR LNK, SP, 0H |
0155 | u(4EE8004C): ADD SP, SP, 4CH |
0156 | u(C700000F): B LNK |
| |
| PROCEDURE New*(name: ARRAY OF CHAR): File; |
| VAR i, res: INTEGER; |
| f: File; |
| buf: Buffer; |
| F: FileDir.FileHd; |
| namebuf: FileDir.FileName; |
| BEGINv f := NIL;w Check(name,x namebuf,y res)z;a |
0157 | v .PROC 3 |
0157 | v(4EE90040): SUB SP, SP, 40H |
0158 | v(AFE00000): STR LNK, SP, 0H |
0159 | v(A0E00004): STR R0, SP, 4H |
015A | v(A1E00008): STR R1, SP, 8H |
015B | w(40000000): MOV R0, R0, 0H |
015C | w(A0E00014): STR R0, SP, 14H |
015D | x(80E00004): LDR R0, SP, 4H |
015E | x(81E00008): LDR R1, SP, 8H |
015F | y(42E80020): ADD R2, SP, 20H |
0160 | z(43E80010): ADD R3, SP, 10H |
0161 | a(F7FFFE9E): BL -354 [0000H] |
| IF res <= 0 THENb |
0162 | b(80E00010): LDR R0, SP, 10H |
0163 | b(40090000): SUB R0, R0, 0H |
0164 | b(EE00009E): BGT 158 [0203H] |
| NEW(buf);c buf.aposd := 0;e buf.modf := TRUE;g buf.limh := HS;i buf.nextj := buf;k |
0165 | c(40E80018): ADD R0, SP, 18H |
0166 | c .FIXUP D |
0166 | c(8D000018): LDR SB, MT, MOD0 [Files] |
0167 | c(41D80064): ADD R1, SB, 64H [data] |
0168 | c(D70FFE0C): BL MT [trap=0, pos=4094] |
0169 | d(80E00018): LDR R0, SP, 18H |
016A | d(D110074C): BLEQ MT [trap=4, pos=4103] |
016B | e(41000000): MOV R1, R0, 0H |
016C | e(A1000000): STR R1, R0, 0H |
016D | f(80E00018): LDR R0, SP, 18H |
016E | f(D110154C): BLEQ MT [trap=4, pos=4117] |
016F | g(41000001): MOV R1, R0, 1H |
0170 | g(B1000008): STR R1, R0, 8H |
0171 | h(80E00018): LDR R0, SP, 18H |
0172 | h(D110264C): BLEQ MT [trap=4, pos=4134] |
0173 | i(41000160): MOV R1, R0, 160H |
0174 | i(A1000004): STR R1, R0, 4H |
0175 | j(80E00018): LDR R0, SP, 18H |
0176 | j(D110364C): BLEQ MT [trap=4, pos=4150] |
0177 | k(81E00018): LDR R1, SP, 18H |
0178 | k(A100000C): STR R1, R0, CH |
| F := SYSTEM.VAL(FileDir.FileHd, SYSTEM.ADR(buf.datal))m;n |
0179 | l(80E00018): LDR R0, SP, 18H |
017A | l(D110784C): BLEQ MT [trap=4, pos=4216] |
017B | m(40080010): ADD R0, R0, 10H |
017C | n(A0E0001C): STR R0, SP, 1CH |
| F.marko := FileDir.HeaderMark;p |
017D | o(80E0001C): LDR R0, SP, 1CH |
017E | o(D110884C): BLEQ MT [trap=4, pos=4232] |
017F | p(61009BA7): MOV' R1, R0, FFFF9BA7H |
0180 | p(41161D86): IOR R1, R1, 1D86H |
0181 | p(A1000000): STR R1, R0, 0H |
| F.alengq := 0;r F.blengs := HS;t F.nameu := namebuf;v |
0182 | q(80E0001C): LDR R0, SP, 1CH |
0183 | q(D110AD4C): BLEQ MT [trap=4, pos=4269] |
0184 | r(41000000): MOV R1, R0, 0H |
0185 | r(A1000024): STR R1, R0, 24H |
0186 | s(80E0001C): LDR R0, SP, 1CH |
0187 | s(D110BB4C): BLEQ MT [trap=4, pos=4283] |
0188 | t(41000160): MOV R1, R0, 160H |
0189 | t(A1000028): STR R1, R0, 28H |
018A | u(80E0001C): LDR R0, SP, 1CH |
018B | u(D110C94C): BLEQ MT [trap=4, pos=4297] |
018C | v(40080004): ADD R0, R0, 4H |
018D | v(41E80020): ADD R1, SP, 20H |
018E | v(42000008): MOV R2, R0, 8H |
018F | v(83100000): LDR R3, R1, 0H |
0190 | v(41180004): ADD R1, R1, 4H |
0191 | v(A3000000): STR R3, R0, 0H |
0192 | v(40080004): ADD R0, R0, 4H |
0193 | v(42290001): SUB R2, R2, 1H |
0194 | v(E9FFFFFA): BNE -6 [018FH] |
| F.datew := Kernel.Clock()x;y |
0195 | w(80E0001C): LDR R0, SP, 1CH |
0196 | w(D110E24C): BLEQ MT [trap=4, pos=4322] |
0197 | x(4EE90004): SUB SP, SP, 4H |
0198 | x(A0E00000): STR R0, SP, 0H |
0199 | y .FIXUP P |
0199 | y(F7112073): BL MOD1 [Kernel] PROC18 |
019A | y(01000000): MOV R1, R0, R0 |
019B | y(80E00000): LDR R0, SP, 0H |
019C | y(4EE80004): ADD SP, SP, 4H |
019D | y(A100002C): STR R1, R0, 2CH |
| NEW(f);z f.alenga := 0;b f.blengc := HS;d f.modHe := TRUE;f |
019E | z(40E80014): ADD R0, SP, 14H |
019F | z .FIXUP D |
019F | z(8D000039): LDR SB, MT, MOD0 [Files] |
01A0 | z(41D8001C): ADD R1, SB, 1CH [data] |
01A1 | z(D711030C): BL MT [trap=0, pos=4355] |
01A2 | a(80E00014): LDR R0, SP, 14H |
01A3 | a(D1110B4C): BLEQ MT [trap=4, pos=4363] |
01A4 | b(41000000): MOV R1, R0, 0H |
01A5 | b(A1000008): STR R1, R0, 8H |
01A6 | c(80E00014): LDR R0, SP, 14H |
01A7 | c(D111194C): BLEQ MT [trap=4, pos=4377] |
01A8 | d(41000160): MOV R1, R0, 160H |
01A9 | d(A100000C): STR R1, R0, CH |
01AA | e(80E00014): LDR R0, SP, 14H |
01AB | e(D111274C): BLEQ MT [trap=4, pos=4391] |
01AC | f(41000001): MOV R1, R0, 1H |
01AD | f(B1000010): STR R1, R0, 10H |
| f.registeredg := FALSE;h f.datei := F.datej;k |
01AE | g(80E00014): LDR R0, SP, 14H |
01AF | g(D111434C): BLEQ MT [trap=4, pos=4419] |
01B0 | h(41000000): MOV R1, R0, 0H |
01B1 | h(B1000011): STR R1, R0, 11H |
01B2 | i(80E00014): LDR R0, SP, 14H |
01B3 | i(D111544C): BLEQ MT [trap=4, pos=4436] |
01B4 | j(81E0001C): LDR R1, SP, 1CH |
01B5 | j(D1115E4C): BLEQ MT [trap=4, pos=4446] |
01B6 | k(8110002C): LDR R1, R1, 2CH |
01B7 | k(A100003C): STR R1, R0, 3CH |
| f.firstbufl := buf;m f.nofbufsn := 1;o f.namep := namebuf;q f.sechintr := 0;s |
01B8 | l(80E00014): LDR R0, SP, 14H |
01B9 | l(D111704C): BLEQ MT [trap=4, pos=4464] |
01BA | m(81E00018): LDR R1, SP, 18H |
01BB | m(A1000014): STR R1, R0, 14H |
01BC | n(80E00014): LDR R0, SP, 14H |
01BD | n(D111824C): BLEQ MT [trap=4, pos=4482] |
01BE | o(41000001): MOV R1, R0, 1H |
01BF | o(A1000004): STR R1, R0, 4H |
01C0 | p(80E00014): LDR R0, SP, 14H |
01C1 | p(D1118F4C): BLEQ MT [trap=4, pos=4495] |
01C2 | q(4008001C): ADD R0, R0, 1CH |
01C3 | q(41E80020): ADD R1, SP, 20H |
01C4 | q(42000008): MOV R2, R0, 8H |
01C5 | q(83100000): LDR R3, R1, 0H |
01C6 | q(41180004): ADD R1, R1, 4H |
01C7 | q(A3000000): STR R3, R0, 0H |
01C8 | q(40080004): ADD R0, R0, 4H |
01C9 | q(42290001): SUB R2, R2, 1H |
01CA | q(E9FFFFFA): BNE -6 [01C5H] |
01CB | r(80E00014): LDR R0, SP, 14H |
01CC | r(D111A54C): BLEQ MT [trap=4, pos=4517] |
01CD | s(41000000): MOV R1, R0, 0H |
01CE | s(A1000018): STR R1, R0, 18H |
| i := 0;t |
01CF | t(40000000): MOV R0, R0, 0H |
01D0 | t(A0E0000C): STR R0, SP, CH |
| REPEAT f.extu[i]v := NIL;w F.extx[i]y := 0;z INC(i) UNTILa i = FileDir.ExTabSize;b |
01D1 | u(80E00014): LDR R0, SP, 14H |
01D2 | u(D111CC4C): BLEQ MT [trap=4, pos=4556] |
01D3 | v(81E0000C): LDR R1, SP, CH |
01D4 | v(4219000C): SUB R2, R1, CH |
01D5 | v(DA11CF1C): BLCC MT [trap=1, pos=4559] |
01D6 | v(41110002): LSL R1, R1, 2H |
01D7 | v(00080001): ADD R0, R0, R1 |
01D8 | w(41000000): MOV R1, R0, 0H |
01D9 | w(A1000040): STR R1, R0, 40H |
01DA | x(80E0001C): LDR R0, SP, 1CH |
01DB | x(D111DD4C): BLEQ MT [trap=4, pos=4573] |
01DC | y(81E0000C): LDR R1, SP, CH |
01DD | y(4219000C): SUB R2, R1, CH |
01DE | y(DA11E01C): BLCC MT [trap=1, pos=4576] |
01DF | y(41110002): LSL R1, R1, 2H |
01E0 | y(00080001): ADD R0, R0, R1 |
01E1 | z(41000000): MOV R1, R0, 0H |
01E2 | z(A1000030): STR R1, R0, 30H |
01E3 | a(80E0000C): LDR R0, SP, CH |
01E4 | a(40080001): ADD R0, R0, 1H |
01E5 | a(A0E0000C): STR R0, SP, CH |
01E6 | b(80E0000C): LDR R0, SP, CH |
01E7 | b(4009000C): SUB R0, R0, CH |
01E8 | b(E9FFFFE8): BNE -24 [01D1H] |
| i := 0;c |
01E9 | c(40000000): MOV R0, R0, 0H |
01EA | c(A0E0000C): STR R0, SP, CH |
| REPEAT f.secd[i]e := 0;f F.secg[i]h := 0;i INC(i) UNTILj i = STS |
01EB | d(80E00014): LDR R0, SP, 14H |
01EC | d(D1122B4C): BLEQ MT [trap=4, pos=4651] |
01ED | e(81E0000C): LDR R1, SP, CH |
01EE | e(42190040): SUB R2, R1, 40H |
01EF | e(DA122E1C): BLCC MT [trap=1, pos=4654] |
01F0 | e(41110002): LSL R1, R1, 2H |
01F1 | e(00080001): ADD R0, R0, R1 |
01F2 | f(41000000): MOV R1, R0, 0H |
01F3 | f(A1000070): STR R1, R0, 70H |
01F4 | g(80E0001C): LDR R0, SP, 1CH |
01F5 | g(D1123A4C): BLEQ MT [trap=4, pos=4666] |
01F6 | h(81E0000C): LDR R1, SP, CH |
01F7 | h(42190040): SUB R2, R1, 40H |
01F8 | h(DA123D1C): BLCC MT [trap=1, pos=4669] |
01F9 | h(41110002): LSL R1, R1, 2H |
01FA | h(00080001): ADD R0, R0, R1 |
01FB | i(41000000): MOV R1, R0, 0H |
01FC | i(A1000060): STR R1, R0, 60H |
01FD | j(80E0000C): LDR R0, SP, CH |
01FE | j(40080001): ADD R0, R0, 1H |
01FF | j(A0E0000C): STR R0, SP, CH |
| ENDk ; |
0200 | k(80E0000C): LDR R0, SP, CH |
0201 | k(40090040): SUB R0, R0, 40H |
0202 | k(E9FFFFE8): BNE -24 [01EBH] |
| RETURN f |
| ENDl New; |
0203 | l(80E00014): LDR R0, SP, 14H |
0204 | l(8FE00000): LDR LNK, SP, 0H |
0205 | l(4EE80040): ADD SP, SP, 40H |
0206 | l(C700000F): B LNK |
| |
| PROCEDURE UpdateHeader(f: File; VAR F: FileDir.FileHeader); |
| VAR k: INTEGER; |
| BEGINm F.aleng := f.alengn;o F.bleng := f.blengp;q |
0207 | m(4EE90014): SUB SP, SP, 14H |
0208 | m(AFE00000): STR LNK, SP, 0H |
0209 | m(A0E00004): STR R0, SP, 4H |
020A | m(A1E00008): STR R1, SP, 8H |
020B | m(A2E0000C): STR R2, SP, CH |
020C | n(80E00004): LDR R0, SP, 4H |
020D | n(D112E84C): BLEQ MT [trap=4, pos=4840] |
020E | o(80000008): LDR R0, R0, 8H |
020F | o(81E00008): LDR R1, SP, 8H |
0210 | o(A0100024): STR R0, R1, 24H |
0211 | p(80E00004): LDR R0, SP, 4H |
0212 | p(D112FC4C): BLEQ MT [trap=4, pos=4860] |
0213 | q(8000000C): LDR R0, R0, CH |
0214 | q(81E00008): LDR R1, SP, 8H |
0215 | q(A0100028): STR R0, R1, 28H |
| F.sec := f.secr;s k := (f.alengt + (XS-STS))u DIV XS;v |
0216 | r(80E00004): LDR R0, SP, 4H |
0217 | r(D113104C): BLEQ MT [trap=4, pos=4880] |
0218 | s(81E00008): LDR R1, SP, 8H |
0219 | s(41180060): ADD R1, R1, 60H |
021A | s(40080070): ADD R0, R0, 70H |
021B | s(42000040): MOV R2, R0, 40H |
021C | s(83000000): LDR R3, R0, 0H |
021D | s(40080004): ADD R0, R0, 4H |
021E | s(A3100000): STR R3, R1, 0H |
021F | s(41180004): ADD R1, R1, 4H |
0220 | s(42290001): SUB R2, R2, 1H |
0221 | s(E9FFFFFA): BNE -6 [021CH] |
0222 | t(80E00004): LDR R0, SP, 4H |
0223 | t(D1131F4C): BLEQ MT [trap=4, pos=4895] |
0224 | u(80000008): LDR R0, R0, 8H |
0225 | u(400800C0): ADD R0, R0, C0H |
0226 | v(40020008): ASR R0, R0, 8H |
0227 | v(A0E00010): STR R0, SP, 10H |
| WHILE k > 0 DOw DEC(k);x F.ext[k]y := f.extz[k]a.adrb ENDc |
0228 | w(80E00010): LDR R0, SP, 10H |
0229 | w(40090000): SUB R0, R0, 0H |
022A | w(E6000015): BLE 21 [0240H] |
022B | x(80E00010): LDR R0, SP, 10H |
022C | x(40090001): SUB R0, R0, 1H |
022D | x(A0E00010): STR R0, SP, 10H |
022E | y(80E00010): LDR R0, SP, 10H |
022F | y(4109000C): SUB R1, R0, CH |
0230 | y(DA13571C): BLCC MT [trap=1, pos=4951] |
0231 | y(40010002): LSL R0, R0, 2H |
0232 | y(81E00008): LDR R1, SP, 8H |
0233 | y(00180000): ADD R0, R1, R0 |
0234 | z(81E00004): LDR R1, SP, 4H |
0235 | z(D113604C): BLEQ MT [trap=4, pos=4960] |
0236 | a(82E00010): LDR R2, SP, 10H |
0237 | a(4329000C): SUB R3, R2, CH |
0238 | a(DA13631C): BLCC MT [trap=1, pos=4963] |
0239 | a(42210002): LSL R2, R2, 2H |
023A | a(01180002): ADD R1, R1, R2 |
023B | b(81100040): LDR R1, R1, 40H |
023C | b(D113674C): BLEQ MT [trap=4, pos=4967] |
023D | c(81100000): LDR R1, R1, 0H |
023E | c(A1000030): STR R1, R0, 30H |
023F | c(E7FFFFE8): B -24 [0228H] |
| ENDd UpdateHeader; |
0240 | d(8FE00000): LDR LNK, SP, 0H |
0241 | d(4EE80014): ADD SP, SP, 14H |
0242 | d(C700000F): B LNK |
| |
| PROCEDURE ReadBuf(f: File; buf: Buffer; pos: INTEGER); |
| VAR sec: DiskAdr; |
| BEGINe |
0243 | e(4EE90014): SUB SP, SP, 14H |
0244 | e(AFE00000): STR LNK, SP, 0H |
0245 | e(A0E00004): STR R0, SP, 4H |
0246 | e(A1E00008): STR R1, SP, 8H |
0247 | e(A2E0000C): STR R2, SP, CH |
| IF pos < STS THENf sec := f.secg[pos]h |
0248 | f(80E0000C): LDR R0, SP, CH |
0249 | f(40090040): SUB R0, R0, 40H |
024A | f(ED00000A): BGE 10 [0255H] |
024B | g(80E00004): LDR R0, SP, 4H |
024C | g(D113FA4C): BLEQ MT [trap=4, pos=5114] |
024D | h(81E0000C): LDR R1, SP, CH |
024E | h(42190040): SUB R2, R1, 40H |
024F | h(DA13FF1C): BLCC MT [trap=1, pos=5119] |
0250 | h(41110002): LSL R1, R1, 2H |
0251 | h(00080001): ADD R0, R0, R1 |
| ELSEi secj := f.extk[(pos-STS)l DIV XS]m.secn[(pos-STS)o MOD XS]p |
0252 | i(80000070): LDR R0, R0, 70H |
0253 | i(A0E00010): STR R0, SP, 10H |
0254 | j(E7000014): B 20 [0269H] |
0255 | k(80E00004): LDR R0, SP, 4H |
0256 | k(D114154C): BLEQ MT [trap=4, pos=5141] |
0257 | l(81E0000C): LDR R1, SP, CH |
0258 | l(41190040): SUB R1, R1, 40H |
0259 | m(41120008): ASR R1, R1, 8H |
025A | m(4219000C): SUB R2, R1, CH |
025B | m(DA14271C): BLCC MT [trap=1, pos=5159] |
025C | m(41110002): LSL R1, R1, 2H |
025D | m(00080001): ADD R0, R0, R1 |
025E | n(80000040): LDR R0, R0, 40H |
025F | n(D1142B4C): BLEQ MT [trap=4, pos=5163] |
0260 | o(81E0000C): LDR R1, SP, CH |
0261 | o(41190040): SUB R1, R1, 40H |
0262 | p(411400FF): AND R1, R1, FFH |
0263 | p(42190100): SUB R2, R1, 100H |
0264 | p(DA143D1C): BLCC MT [trap=1, pos=5181] |
0265 | p(41110002): LSL R1, R1, 2H |
0266 | p(00080001): ADD R0, R0, R1 |
| ENDq ; |
0267 | q(80000008): LDR R0, R0, 8H |
0268 | q(A0E00010): STR R0, SP, 10H |
| Kernel.GetSector(sec,r buf.datas)t;u |
0269 | r(80E00010): LDR R0, SP, 10H |
026A | s(81E00008): LDR R1, SP, 8H |
026B | s(D1146A4C): BLEQ MT [trap=4, pos=5226] |
026C | t(41180010): ADD R1, R1, 10H |
026D | u .FIXUP P |
026D | u(F710F0D4): BL MOD1 [Kernel] PROC15 |
| IF pos < f.alengv THENw buf.limx := SS ELSEy bufz.lima := f.blengb ENDc ; |
026E | v(80E00004): LDR R0, SP, 4H |
026F | v(D114814C): BLEQ MT [trap=4, pos=5249] |
0270 | w(81E0000C): LDR R1, SP, CH |
0271 | w(80000008): LDR R0, R0, 8H |
0272 | w(01190000): SUB R1, R1, R0 |
0273 | w(ED000005): BGE 5 [0279H] |
0274 | x(80E00008): LDR R0, SP, 8H |
0275 | x(D1148E4C): BLEQ MT [trap=4, pos=5262] |
0276 | y(41000400): MOV R1, R0, 400H |
0277 | y(A1000004): STR R1, R0, 4H |
0278 | z(E7000006): B 6 [027FH] |
0279 | a(80E00008): LDR R0, SP, 8H |
027A | a(D114A14C): BLEQ MT [trap=4, pos=5281] |
027B | b(81E00004): LDR R1, SP, 4H |
027C | b(D114AC4C): BLEQ MT [trap=4, pos=5292] |
027D | c(8110000C): LDR R1, R1, CH |
027E | c(A1000004): STR R1, R0, 4H |
| buf.aposd := pos;e buf.modf := FALSE |
027F | d(80E00008): LDR R0, SP, 8H |
0280 | d(D114BF4C): BLEQ MT [trap=4, pos=5311] |
0281 | e(81E0000C): LDR R1, SP, CH |
0282 | e(A1000000): STR R1, R0, 0H |
0283 | f(80E00008): LDR R0, SP, 8H |
0284 | f(D114CF4C): BLEQ MT [trap=4, pos=5327] |
| ENDg ReadBuf; |
0285 | g(41000000): MOV R1, R0, 0H |
0286 | g(B1000008): STR R1, R0, 8H |
0287 | g(8FE00000): LDR LNK, SP, 0H |
0288 | g(4EE80014): ADD SP, SP, 14H |
0289 | g(C700000F): B LNK |
| |
| PROCEDURE WriteBuf(f: File; buf: Buffer); |
| VAR i, k: INTEGER; |
| secadr: DiskAdr; inx: Index; |
| BEGINh |
028A | h(4EE9001C): SUB SP, SP, 1CH |
028B | h(AFE00000): STR LNK, SP, 0H |
028C | h(A0E00004): STR R0, SP, 4H |
028D | h(A1E00008): STR R1, SP, 8H |
| IF buf.aposi < STS THENj |
028E | i(80E00008): LDR R0, SP, 8H |
028F | i(D115674C): BLEQ MT [trap=4, pos=5479] |
0290 | j(80000000): LDR R0, R0, 0H |
0291 | j(40090040): SUB R0, R0, 40H |
0292 | j(ED000035): BGE 53 [02C8H] |
| secadr := f.seck[buf.aposl]m;n |
0293 | k(80E00004): LDR R0, SP, 4H |
0294 | k(D115884C): BLEQ MT [trap=4, pos=5512] |
0295 | l(81E00008): LDR R1, SP, 8H |
0296 | l(D115914C): BLEQ MT [trap=4, pos=5521] |
0297 | m(81100000): LDR R1, R1, 0H |
0298 | m(42190040): SUB R2, R1, 40H |
0299 | m(DA15921C): BLCC MT [trap=1, pos=5522] |
029A | m(41110002): LSL R1, R1, 2H |
029B | m(00080001): ADD R0, R0, R1 |
029C | n(80000070): LDR R0, R0, 70H |
029D | n(A0E00014): STR R0, SP, 14H |
| IF secadr = 0 THENo |
029E | o(80E00014): LDR R0, SP, 14H |
029F | o(E9000018): BNE 24 [02B8H] |
| Kernel.AllocSector(f.sechintp,q secadr)r;s |
02A0 | p(80E00004): LDR R0, SP, 4H |
02A1 | p(D115D14C): BLEQ MT [trap=4, pos=5585] |
02A2 | q(80000018): LDR R0, R0, 18H |
02A3 | r(41E80014): ADD R1, SP, 14H |
02A4 | s .FIXUP P |
02A4 | s(F710E037): BL MOD1 [Kernel] PROC14 |
| f.modHt := TRUE;u f.secv[buf.aposw]x := secadr;y f.sechintz := secadr |
02A5 | t(80E00004): LDR R0, SP, 4H |
02A6 | t(D115EA4C): BLEQ MT [trap=4, pos=5610] |
02A7 | u(41000001): MOV R1, R0, 1H |
02A8 | u(B1000010): STR R1, R0, 10H |
02A9 | v(80E00004): LDR R0, SP, 4H |
02AA | v(D115F94C): BLEQ MT [trap=4, pos=5625] |
02AB | w(81E00008): LDR R1, SP, 8H |
02AC | w(D116024C): BLEQ MT [trap=4, pos=5634] |
02AD | x(81100000): LDR R1, R1, 0H |
02AE | x(42190040): SUB R2, R1, 40H |
02AF | x(DA16031C): BLCC MT [trap=1, pos=5635] |
02B0 | x(41110002): LSL R1, R1, 2H |
02B1 | x(00080001): ADD R0, R0, R1 |
02B2 | y(81E00014): LDR R1, SP, 14H |
02B3 | y(A1000070): STR R1, R0, 70H |
02B4 | z(80E00004): LDR R0, SP, 4H |
02B5 | z(D116184C): BLEQ MT [trap=4, pos=5656] |
| ENDa ; |
02B6 | a(81E00014): LDR R1, SP, 14H |
02B7 | a(A1000018): STR R1, R0, 18H |
| IF buf.aposb = 0 THENc |
02B8 | b(80E00008): LDR R0, SP, 8H |
02B9 | b(D116404C): BLEQ MT [trap=4, pos=5696] |
02BA | c(80000000): LDR R0, R0, 0H |
02BB | c(E900000B): BNE 11 [02C7H] |
| UpdateHeader(f,d SYSTEM.VAL(FileDir.FileHeader, buf.datae))f;g f.modHh := FALSE |
02BC | d(80E00004): LDR R0, SP, 4H |
02BD | e(81E00008): LDR R1, SP, 8H |
02BE | e(D116894C): BLEQ MT [trap=4, pos=5769] |
02BF | f(41180010): ADD R1, R1, 10H |
02C0 | f .FIXUP D |
02C0 | f(8D200121): LDR SB, MT, MOD2 [FileDir] |
02C1 | f(42D80001): ADD R2, SB, VAR1 |
02C2 | g(F7FFFF44): BL -188 [0207H] |
02C3 | h(80E00004): LDR R0, SP, 4H |
02C4 | h(D116934C): BLEQ MT [trap=4, pos=5779] |
| ENDi |
02C5 | i(41000000): MOV R1, R0, 0H |
02C6 | i(B1000010): STR R1, R0, 10H |
| ELSE ij := (buf.aposk - STS)l DIV XS;m inx := f.extn[i]o;p |
02C7 | j(E7000055): B 85 [031DH] |
02C8 | k(80E00008): LDR R0, SP, 8H |
02C9 | k(D116BE4C): BLEQ MT [trap=4, pos=5822] |
02CA | l(80000000): LDR R0, R0, 0H |
02CB | l(40090040): SUB R0, R0, 40H |
02CC | m(40020008): ASR R0, R0, 8H |
02CD | m(A0E0000C): STR R0, SP, CH |
02CE | n(80E00004): LDR R0, SP, 4H |
02CF | n(D116DA4C): BLEQ MT [trap=4, pos=5850] |
02D0 | o(81E0000C): LDR R1, SP, CH |
02D1 | o(4219000C): SUB R2, R1, CH |
02D2 | o(DA16DD1C): BLCC MT [trap=1, pos=5853] |
02D3 | o(41110002): LSL R1, R1, 2H |
02D4 | o(00080001): ADD R0, R0, R1 |
02D5 | p(80000040): LDR R0, R0, 40H |
02D6 | p(A0E00018): STR R0, SP, 18H |
| IF inx = NIL THENq |
02D7 | q(80E00018): LDR R0, SP, 18H |
02D8 | q(E9000019): BNE 25 [02F2H] |
| NEW(inx);r inx.adrs := 0;t inx.secu[0] := 0;v f.extw[i]x := inx;y f.modHz := TRUE |
02D9 | r(40E80018): ADD R0, SP, 18H |
02DA | r .FIXUP D |
02DA | r(8D00001A): LDR SB, MT, MOD0 [Files] |
02DB | r(41D8007C): ADD R1, SB, 7CH [data] |
02DC | r(D717080C): BL MT [trap=0, pos=5896] |
02DD | s(80E00018): LDR R0, SP, 18H |
02DE | s(D117104C): BLEQ MT [trap=4, pos=5904] |
02DF | t(41000000): MOV R1, R0, 0H |
02E0 | t(A1000000): STR R1, R0, 0H |
02E1 | u(80E00018): LDR R0, SP, 18H |
02E2 | u(D1171E4C): BLEQ MT [trap=4, pos=5918] |
02E3 | v(41000000): MOV R1, R0, 0H |
02E4 | v(A1000008): STR R1, R0, 8H |
02E5 | w(80E00004): LDR R0, SP, 4H |
02E6 | w(D1172D4C): BLEQ MT [trap=4, pos=5933] |
02E7 | x(81E0000C): LDR R1, SP, CH |
02E8 | x(4219000C): SUB R2, R1, CH |
02E9 | x(DA17301C): BLCC MT [trap=1, pos=5936] |
02EA | x(41110002): LSL R1, R1, 2H |
02EB | x(00080001): ADD R0, R0, R1 |
02EC | y(81E00018): LDR R1, SP, 18H |
02ED | y(A1000040): STR R1, R0, 40H |
02EE | z(80E00004): LDR R0, SP, 4H |
02EF | z(D1173F4C): BLEQ MT [trap=4, pos=5951] |
| ENDa ; |
02F0 | a(41000001): MOV R1, R0, 1H |
02F1 | a(B1000010): STR R1, R0, 10H |
| k := (buf.aposb - STS)c MOD XS;d secadr := inx.sece[k]f;g |
02F2 | b(80E00008): LDR R0, SP, 8H |
02F3 | b(D117684C): BLEQ MT [trap=4, pos=5992] |
02F4 | c(80000000): LDR R0, R0, 0H |
02F5 | c(40090040): SUB R0, R0, 40H |
02F6 | d(400400FF): AND R0, R0, FFH |
02F7 | d(A0E00010): STR R0, SP, 10H |
02F8 | e(80E00018): LDR R0, SP, 18H |
02F9 | e(D117894C): BLEQ MT [trap=4, pos=6025] |
02FA | f(81E00010): LDR R1, SP, 10H |
02FB | f(42190100): SUB R2, R1, 100H |
02FC | f(DA178C1C): BLCC MT [trap=1, pos=6028] |
02FD | f(41110002): LSL R1, R1, 2H |
02FE | f(00080001): ADD R0, R0, R1 |
02FF | g(80000008): LDR R0, R0, 8H |
0300 | g(A0E00014): STR R0, SP, 14H |
| IF secadr = 0 THENh |
0301 | h(80E00014): LDR R0, SP, 14H |
0302 | h(E900001A): BNE 26 [031DH] |
| Kernel.AllocSector(f.sechinti,j secadr)k;l |
0303 | i(80E00004): LDR R0, SP, 4H |
0304 | i(D117CB4C): BLEQ MT [trap=4, pos=6091] |
0305 | j(80000018): LDR R0, R0, 18H |
0306 | k(41E80014): ADD R1, SP, 14H |
0307 | l .FIXUP P |
0307 | l(F710E063): BL MOD1 [Kernel] PROC14 |
| f.modHm := TRUE;n inx.modo := TRUE;p inx.secq[k]r := secadr;s f.sechintt := secadr |
0308 | m(80E00004): LDR R0, SP, 4H |
0309 | m(D117E44C): BLEQ MT [trap=4, pos=6116] |
030A | n(41000001): MOV R1, R0, 1H |
030B | n(B1000010): STR R1, R0, 10H |
030C | o(80E00018): LDR R0, SP, 18H |
030D | o(D117F54C): BLEQ MT [trap=4, pos=6133] |
030E | p(41000001): MOV R1, R0, 1H |
030F | p(B1000004): STR R1, R0, 4H |
0310 | q(80E00018): LDR R0, SP, 18H |
0311 | q(D118064C): BLEQ MT [trap=4, pos=6150] |
0312 | r(81E00010): LDR R1, SP, 10H |
0313 | r(42190100): SUB R2, R1, 100H |
0314 | r(DA18091C): BLCC MT [trap=1, pos=6153] |
0315 | r(41110002): LSL R1, R1, 2H |
0316 | r(00080001): ADD R0, R0, R1 |
0317 | s(81E00014): LDR R1, SP, 14H |
0318 | s(A1000008): STR R1, R0, 8H |
0319 | t(80E00004): LDR R0, SP, 4H |
031A | t(D1181E4C): BLEQ MT [trap=4, pos=6174] |
| ENDu |
031B | u(81E00014): LDR R1, SP, 14H |
031C | u(A1000018): STR R1, R0, 18H |
| END ; |
| Kernel.PutSector(secadr,v buf.dataw)x;y buf.modz := FALSE |
031D | v(80E00014): LDR R0, SP, 14H |
031E | w(81E00008): LDR R1, SP, 8H |
031F | w(D118624C): BLEQ MT [trap=4, pos=6242] |
0320 | x(41180010): ADD R1, R1, 10H |
0321 | y .FIXUP P |
0321 | y(F711001A): BL MOD1 [Kernel] PROC16 |
0322 | z(80E00008): LDR R0, SP, 8H |
0323 | z(D1186C4C): BLEQ MT [trap=4, pos=6252] |
| ENDa WriteBuf; |
0324 | a(41000000): MOV R1, R0, 0H |
0325 | a(B1000008): STR R1, R0, 8H |
0326 | a(8FE00000): LDR LNK, SP, 0H |
0327 | a(4EE8001C): ADD SP, SP, 1CH |
0328 | a(C700000F): B LNK |
| |
| PROCEDURE Buf(f: File; pos: INTEGER): Buffer; |
| VAR buf: Buffer; |
| BEGINb buf := f.firstbufc;d |
0329 | b(4EE90010): SUB SP, SP, 10H |
032A | b(AFE00000): STR LNK, SP, 0H |
032B | b(A0E00004): STR R0, SP, 4H |
032C | b(A1E00008): STR R1, SP, 8H |
032D | c(80E00004): LDR R0, SP, 4H |
032E | c(D118E54C): BLEQ MT [trap=4, pos=6373] |
032F | d(80000014): LDR R0, R0, 14H |
0330 | d(A0E0000C): STR R0, SP, CH |
| WHILE (buf.apose # pos)f & (gbuf.nexth # f.firstbufi)j DOk buf := buf.nextl ENDm ; |
0331 | e(80E0000C): LDR R0, SP, CH |
0332 | e(D118FA4C): BLEQ MT [trap=4, pos=6394] |
0333 | f(80000000): LDR R0, R0, 0H |
0334 | f(81E00008): LDR R1, SP, 8H |
0335 | f(00090001): SUB R0, R0, R1 |
0336 | g(E100000D): BEQ 13 [0344H] |
0337 | h(80E0000C): LDR R0, SP, CH |
0338 | h(D1190D4C): BLEQ MT [trap=4, pos=6413] |
0339 | i(81E00004): LDR R1, SP, 4H |
033A | i(D1191A4C): BLEQ MT [trap=4, pos=6426] |
033B | j(8000000C): LDR R0, R0, CH |
033C | j(81100014): LDR R1, R1, 14H |
033D | j(00090001): SUB R0, R0, R1 |
033E | k(E1000005): BEQ 5 [0344H] |
033F | l(80E0000C): LDR R0, SP, CH |
0340 | l(D1192E4C): BLEQ MT [trap=4, pos=6446] |
0341 | m(8000000C): LDR R0, R0, CH |
0342 | m(A0E0000C): STR R0, SP, CH |
0343 | m(E7FFFFED): B -19 [0331H] |
| IF buf.aposn # pos THENo buf := NIL ENDp ; |
0344 | n(80E0000C): LDR R0, SP, CH |
0345 | n(D119444C): BLEQ MT [trap=4, pos=6468] |
0346 | o(80000000): LDR R0, R0, 0H |
0347 | o(81E00008): LDR R1, SP, 8H |
0348 | o(00090001): SUB R0, R0, R1 |
0349 | o(E1000002): BEQ 2 [034CH] |
034A | p(40000000): MOV R0, R0, 0H |
034B | p(A0E0000C): STR R0, SP, CH |
| RETURN buf |
| ENDq Buf; |
034C | q(80E0000C): LDR R0, SP, CH |
034D | q(8FE00000): LDR LNK, SP, 0H |
034E | q(4EE80010): ADD SP, SP, 10H |
034F | q(C700000F): B LNK |
| |
| PROCEDURE GetBuf(f: File; pos: INTEGER): Buffer; |
| VAR buf: Buffer; |
| BEGINr buf := f.firstbufs;t |
0350 | r(4EE90010): SUB SP, SP, 10H |
0351 | r(AFE00000): STR LNK, SP, 0H |
0352 | r(A0E00004): STR R0, SP, 4H |
0353 | r(A1E00008): STR R1, SP, 8H |
0354 | s(80E00004): LDR R0, SP, 4H |
0355 | s(D119DD4C): BLEQ MT [trap=4, pos=6621] |
0356 | t(80000014): LDR R0, R0, 14H |
0357 | t(A0E0000C): STR R0, SP, CH |
| WHILE (buf.aposu # pos)v & (wbuf.nextx # f.firstbufy)z DOa buf := buf.nextb ENDc ; |
0358 | u(80E0000C): LDR R0, SP, CH |
0359 | u(D119F24C): BLEQ MT [trap=4, pos=6642] |
035A | v(80000000): LDR R0, R0, 0H |
035B | v(81E00008): LDR R1, SP, 8H |
035C | v(00090001): SUB R0, R0, R1 |
035D | w(E100000D): BEQ 13 [036BH] |
035E | x(80E0000C): LDR R0, SP, CH |
035F | x(D11A054C): BLEQ MT [trap=4, pos=6661] |
0360 | y(81E00004): LDR R1, SP, 4H |
0361 | y(D11A124C): BLEQ MT [trap=4, pos=6674] |
0362 | z(8000000C): LDR R0, R0, CH |
0363 | z(81100014): LDR R1, R1, 14H |
0364 | z(00090001): SUB R0, R0, R1 |
0365 | a(E1000005): BEQ 5 [036BH] |
0366 | b(80E0000C): LDR R0, SP, CH |
0367 | b(D11A264C): BLEQ MT [trap=4, pos=6694] |
0368 | c(8000000C): LDR R0, R0, CH |
0369 | c(A0E0000C): STR R0, SP, CH |
036A | c(E7FFFFED): B -19 [0358H] |
| IF buf.aposd # pos THENe |
036B | d(80E0000C): LDR R0, SP, CH |
036C | d(D11A3C4C): BLEQ MT [trap=4, pos=6716] |
036D | e(80000000): LDR R0, R0, 0H |
036E | e(81E00008): LDR R1, SP, 8H |
036F | e(00090001): SUB R0, R0, R1 |
0370 | e(E1000040): BEQ 64 [03B1H] |
| IF f.nofbufsf < MaxBufs THENg (*allocate new buffer*) |
0371 | f(80E00004): LDR R0, SP, 4H |
0372 | f(D11A5B4C): BLEQ MT [trap=4, pos=6747] |
0373 | g(80000004): LDR R0, R0, 4H |
0374 | g(40090004): SUB R0, R0, 4H |
0375 | g(ED000019): BGE 25 [038FH] |
| NEW(buf);h buf.nexti := f.firstbufj.nextk;l f.firstbufm.nextn := buf;o INC(f.nofbufsp) |
0376 | h(40E8000C): ADD R0, SP, CH |
0377 | h .FIXUP D |
0377 | h(8D00009D): LDR SB, MT, MOD0 [Files] |
0378 | h(41D80064): ADD R1, SB, 64H [data] |
0379 | h(D71A950C): BL MT [trap=0, pos=6805] |
037A | i(80E0000C): LDR R0, SP, CH |
037B | i(D11A9E4C): BLEQ MT [trap=4, pos=6814] |
037C | j(81E00004): LDR R1, SP, 4H |
037D | j(D11AAC4C): BLEQ MT [trap=4, pos=6828] |
037E | k(81100014): LDR R1, R1, 14H |
037F | k(D11AB14C): BLEQ MT [trap=4, pos=6833] |
0380 | l(8110000C): LDR R1, R1, CH |
0381 | l(A100000C): STR R1, R0, CH |
0382 | m(80E00004): LDR R0, SP, 4H |
0383 | m(D11ABD4C): BLEQ MT [trap=4, pos=6845] |
0384 | n(80000014): LDR R0, R0, 14H |
0385 | n(D11AC24C): BLEQ MT [trap=4, pos=6850] |
0386 | o(81E0000C): LDR R1, SP, CH |
0387 | o(A100000C): STR R1, R0, CH |
0388 | p(80E00004): LDR R0, SP, 4H |
0389 | p(D11AD84C): BLEQ MT [trap=4, pos=6872] |
| ELSEq (*reuse a buffer*) fr.firstbufs := buf;t |
038A | q(40080004): ADD R0, R0, 4H |
038B | q(81000000): LDR R1, R0, 0H |
038C | q(41180001): ADD R1, R1, 1H |
038D | q(A1000000): STR R1, R0, 0H |
038E | r(E700000B): B 11 [039AH] |
038F | s(80E00004): LDR R0, SP, 4H |
0390 | s(D11B024C): BLEQ MT [trap=4, pos=6914] |
0391 | t(81E0000C): LDR R1, SP, CH |
0392 | t(A1000014): STR R1, R0, 14H |
| IF buf.modu THENv WriteBuf(f,w buf)x ENDy |
0393 | u(80E0000C): LDR R0, SP, CH |
0394 | u(D11B1D4C): BLEQ MT [trap=4, pos=6941] |
0395 | v(90000008): LDR R0, R0, 8H |
0396 | v(E1000003): BEQ 3 [039AH] |
0397 | w(80E00004): LDR R0, SP, 4H |
0398 | x(81E0000C): LDR R1, SP, CH |
0399 | y(F7FFFEF0): BL -272 [028AH] |
| END ; |
| IF pos <= f.alengz THENa ReadBuf(f,b buf,c pos)d ELSEe buff.aposg := pos;h buf.limi := 0;j buf.modk := FALSE ENDl |
039A | z(80E00004): LDR R0, SP, 4H |
039B | z(D11B5B4C): BLEQ MT [trap=4, pos=7003] |
039C | a(81E00008): LDR R1, SP, 8H |
039D | a(80000008): LDR R0, R0, 8H |
039E | a(01190000): SUB R1, R1, R0 |
039F | a(EE000005): BGT 5 [03A5H] |
03A0 | b(80E00004): LDR R0, SP, 4H |
03A1 | c(81E0000C): LDR R1, SP, CH |
03A2 | d(82E00008): LDR R2, SP, 8H |
03A3 | e(F7FFFE9F): BL -353 [0243H] |
03A4 | f(E700000C): B 12 [03B1H] |
03A5 | g(80E0000C): LDR R0, SP, CH |
03A6 | g(D11B834C): BLEQ MT [trap=4, pos=7043] |
03A7 | h(81E00008): LDR R1, SP, 8H |
03A8 | h(A1000000): STR R1, R0, 0H |
03A9 | i(80E0000C): LDR R0, SP, CH |
03AA | i(D11B934C): BLEQ MT [trap=4, pos=7059] |
03AB | j(41000000): MOV R1, R0, 0H |
03AC | j(A1000004): STR R1, R0, 4H |
03AD | k(80E0000C): LDR R0, SP, CH |
03AE | k(D11BA14C): BLEQ MT [trap=4, pos=7073] |
03AF | l(41000000): MOV R1, R0, 0H |
03B0 | l(B1000008): STR R1, R0, 8H |
| END ; |
| RETURN buf |
| ENDm GetBuf; |
03B1 | m(80E0000C): LDR R0, SP, CH |
03B2 | m(8FE00000): LDR LNK, SP, 0H |
03B3 | m(4EE80010): ADD SP, SP, 10H |
03B4 | m(C700000F): B LNK |
| |
| PROCEDURE Unbuffer(f: File); |
| VAR i, k: INTEGER; |
| buf: Buffer; |
| inx: Index; |
| head: FileDir.FileHeader; |
| BEGINn buf := f.firstbufo;p |
03B5 | n(4EE90418): SUB SP, SP, 418H |
03B6 | n(AFE00000): STR LNK, SP, 0H |
03B7 | n(A0E00004): STR R0, SP, 4H |
03B8 | o(80E00004): LDR R0, SP, 4H |
03B9 | o(D11C6B4C): BLEQ MT [trap=4, pos=7275] |
03BA | p(80000014): LDR R0, R0, 14H |
03BB | p(A0E00010): STR R0, SP, 10H |
| REPEAT |
| IF buf.modq THENr WriteBuf(f,s buf)t ENDu ; |
03BC | q(80E00010): LDR R0, SP, 10H |
03BD | q(D11C884C): BLEQ MT [trap=4, pos=7304] |
03BE | r(90000008): LDR R0, R0, 8H |
03BF | r(E1000003): BEQ 3 [03C3H] |
03C0 | s(80E00004): LDR R0, SP, 4H |
03C1 | t(81E00010): LDR R1, SP, 10H |
03C2 | u(F7FFFEC7): BL -313 [028AH] |
| buf := buf.nextv |
03C3 | v(80E00010): LDR R0, SP, 10H |
03C4 | v(D11CBA4C): BLEQ MT [trap=4, pos=7354] |
| UNTILw buf = f.firstbufx;y |
03C5 | w(8000000C): LDR R0, R0, CH |
03C6 | w(A0E00010): STR R0, SP, 10H |
03C7 | x(80E00004): LDR R0, SP, 4H |
03C8 | x(D11CD54C): BLEQ MT [trap=4, pos=7381] |
03C9 | y(81E00010): LDR R1, SP, 10H |
03CA | y(80000014): LDR R0, R0, 14H |
03CB | y(01190000): SUB R1, R1, R0 |
03CC | y(E9FFFFEF): BNE -17 [03BCH] |
| k := (f.alengz + (XS-STS))a DIV XS;b i := 0;c |
03CD | z(80E00004): LDR R0, SP, 4H |
03CE | z(D11CE84C): BLEQ MT [trap=4, pos=7400] |
03CF | a(80000008): LDR R0, R0, 8H |
03D0 | a(400800C0): ADD R0, R0, C0H |
03D1 | b(40020008): ASR R0, R0, 8H |
03D2 | b(A0E0000C): STR R0, SP, CH |
03D3 | c(40000000): MOV R0, R0, 0H |
03D4 | c(A0E00008): STR R0, SP, 8H |
| WHILE i < k DOd |
03D5 | d(80E00008): LDR R0, SP, 8H |
03D6 | d(81E0000C): LDR R1, SP, CH |
03D7 | d(00090001): SUB R0, R0, R1 |
03D8 | d(ED000030): BGE 48 [0409H] |
| inx := f.exte[i]f;g INC(i);h |
03D9 | e(80E00004): LDR R0, SP, 4H |
03DA | e(D11D2A4C): BLEQ MT [trap=4, pos=7466] |
03DB | f(81E00008): LDR R1, SP, 8H |
03DC | f(4219000C): SUB R2, R1, CH |
03DD | f(DA1D2D1C): BLCC MT [trap=1, pos=7469] |
03DE | f(41110002): LSL R1, R1, 2H |
03DF | f(00080001): ADD R0, R0, R1 |
03E0 | g(80000040): LDR R0, R0, 40H |
03E1 | g(A0E00014): STR R0, SP, 14H |
03E2 | h(80E00008): LDR R0, SP, 8H |
03E3 | h(40080001): ADD R0, R0, 1H |
03E4 | h(A0E00008): STR R0, SP, 8H |
| IF inx.modi THENj |
03E5 | i(80E00014): LDR R0, SP, 14H |
03E6 | i(D11D474C): BLEQ MT [trap=4, pos=7495] |
03E7 | j(90000004): LDR R0, R0, 4H |
03E8 | j(E100001F): BEQ 31 [0408H] |
| IF inx.adrk = 0 THENl |
03E9 | k(80E00014): LDR R0, SP, 14H |
03EA | k(D11D5F4C): BLEQ MT [trap=4, pos=7519] |
03EB | l(80000000): LDR R0, R0, 0H |
03EC | l(E9000010): BNE 16 [03FDH] |
| Kernel.AllocSector(f.sechintm,n inx.adro);p f.sechintq := inx.adrr;s f.modHt := TRUE |
03ED | m(80E00004): LDR R0, SP, 4H |
03EE | m(D11D8F4C): BLEQ MT [trap=4, pos=7567] |
03EF | n(80000018): LDR R0, R0, 18H |
03F0 | o(81E00014): LDR R1, SP, 14H |
03F1 | o(D11D984C): BLEQ MT [trap=4, pos=7576] |
03F2 | p .FIXUP P |
03F2 | p(F710E0D1): BL MOD1 [Kernel] PROC14 |
03F3 | q(80E00004): LDR R0, SP, 4H |
03F4 | q(D11DA44C): BLEQ MT [trap=4, pos=7588] |
03F5 | r(81E00014): LDR R1, SP, 14H |
03F6 | r(D11DAF4C): BLEQ MT [trap=4, pos=7599] |
03F7 | s(81100000): LDR R1, R1, 0H |
03F8 | s(A1000018): STR R1, R0, 18H |
03F9 | t(80E00004): LDR R0, SP, 4H |
03FA | t(D11DB74C): BLEQ MT [trap=4, pos=7607] |
| ENDu ; |
03FB | u(41000001): MOV R1, R0, 1H |
03FC | u(B1000010): STR R1, R0, 10H |
| Kernel.PutSector(inx.adrv,w inx.secx)y;z inx.moda := FALSE |
03FD | v(80E00014): LDR R0, SP, 14H |
03FE | v(D11DEE4C): BLEQ MT [trap=4, pos=7662] |
03FF | w(80000000): LDR R0, R0, 0H |
0400 | x(81E00014): LDR R1, SP, 14H |
0401 | x(D11DF74C): BLEQ MT [trap=4, pos=7671] |
0402 | y(41180008): ADD R1, R1, 8H |
0403 | z .FIXUP P |
0403 | z(F7110011): BL MOD1 [Kernel] PROC16 |
0404 | a(80E00014): LDR R0, SP, 14H |
0405 | a(D11E014C): BLEQ MT [trap=4, pos=7681] |
| ENDb |
0406 | b(41000000): MOV R1, R0, 0H |
0407 | b(B1000004): STR R1, R0, 4H |
| ENDc ; |
0408 | c(E7FFFFCC): B -52 [03D5H] |
| IF f.modHd THENe |
0409 | d(80E00004): LDR R0, SP, 4H |
040A | d(D11E2C4C): BLEQ MT [trap=4, pos=7724] |
040B | e(90000010): LDR R0, R0, 10H |
040C | e(E1000013): BEQ 19 [0420H] |
| Kernel.GetSector(f.secf[0],g head)h;i UpdateHeader(f,j head)k;l |
040D | f(80E00004): LDR R0, SP, 4H |
040E | f(D11E4E4C): BLEQ MT [trap=4, pos=7758] |
040F | g(80000070): LDR R0, R0, 70H |
0410 | h(41E80018): ADD R1, SP, 18H |
0411 | i .FIXUP P |
0411 | i(F710F00E): BL MOD1 [Kernel] PROC15 |
0412 | j(80E00004): LDR R0, SP, 4H |
0413 | k(41E80018): ADD R1, SP, 18H |
0414 | k .FIXUP D |
0414 | k(8D20009D): LDR SB, MT, MOD2 [FileDir] |
0415 | k(42D80001): ADD R2, SB, VAR1 |
0416 | l(F7FFFDF0): BL -528 [0207H] |
| Kernel.PutSector(f.secm[0],n head)o;p f.modHq := FALSE |
0417 | m(80E00004): LDR R0, SP, 4H |
0418 | m(D11E8D4C): BLEQ MT [trap=4, pos=7821] |
0419 | n(80000070): LDR R0, R0, 70H |
041A | o(41E80018): ADD R1, SP, 18H |
041B | p .FIXUP P |
041B | p(F711000A): BL MOD1 [Kernel] PROC16 |
041C | q(80E00004): LDR R0, SP, 4H |
041D | q(D11E9F4C): BLEQ MT [trap=4, pos=7839] |
| ENDr |
041E | r(41000000): MOV R1, R0, 0H |
041F | r(B1000010): STR R1, R0, 10H |
| ENDs Unbuffer; |
0420 | s(8FE00000): LDR LNK, SP, 0H |
0421 | s(4EE80418): ADD SP, SP, 418H |
0422 | s(C700000F): B LNK |
| |
| PROCEDURE Register*(f: File); |
| BEGINt |
0423 | t .PROC 4 |
0423 | t(4EE90008): SUB SP, SP, 8H |
0424 | t(AFE00000): STR LNK, SP, 0H |
0425 | t(A0E00004): STR R0, SP, 4H |
| IF (f # NIL)u & (vf.namew[0] # 0X)x THENy |
0426 | u(80E00004): LDR R0, SP, 4H |
0427 | v(E100001C): BEQ 28 [0444H] |
0428 | w(80E00004): LDR R0, SP, 4H |
0429 | w(D11F044C): BLEQ MT [trap=4, pos=7940] |
042A | x(9000001C): LDR R0, R0, 1CH |
042B | y(E1000018): BEQ 24 [0444H] |
| Unbuffer(f)z;a |
042C | z(80E00004): LDR R0, SP, 4H |
042D | a(F7FFFF87): BL -121 [03B5H] |
| IF ~f.registeredb THENc |
042E | b(80E00004): LDR R0, SP, 4H |
042F | b(D11F3C4C): BLEQ MT [trap=4, pos=7996] |
0430 | c(90000011): LDR R0, R0, 11H |
0431 | c(E9000012): BNE 18 [0444H] |
| FileDir.Insert(f.named,e f.secf[0])g;h f.registeredi := TRUE;j f.nextk := root;l root := SYSTEM.VAL(INTEGER, f) |
0432 | d(80E00004): LDR R0, SP, 4H |
0433 | d(D11F5F4C): BLEQ MT [trap=4, pos=8031] |
0434 | e(4008001C): ADD R0, R0, 1CH |
0435 | f(81E00004): LDR R1, SP, 4H |
0436 | f(D11F664C): BLEQ MT [trap=4, pos=8038] |
0437 | g(81100070): LDR R1, R1, 70H |
0438 | h .FIXUP P |
0438 | h(F720501D): BL MOD2 [FileDir] PROC5 |
0439 | i(80E00004): LDR R0, SP, 4H |
043A | i(D11F784C): BLEQ MT [trap=4, pos=8056] |
043B | j(41000001): MOV R1, R0, 1H |
043C | j(B1000011): STR R1, R0, 11H |
043D | k(80E00004): LDR R0, SP, 4H |
043E | k(D11F884C): BLEQ MT [trap=4, pos=8072] |
043F | l .FIXUP D |
043F | l(8D00002B): LDR SB, MT, MOD0 [Files] |
0440 | l(81D00090): LDR R1, SB, 90H [data] |
0441 | l(A1000000): STR R1, R0, 0H |
| ENDm |
0442 | m(80E00004): LDR R0, SP, 4H |
0443 | m(A0D00090): STR R0, SB, 90H |
| END |
| ENDn Register; |
0444 | n(8FE00000): LDR LNK, SP, 0H |
0445 | n(4EE80008): ADD SP, SP, 8H |
0446 | n(C700000F): B LNK |
| |
| PROCEDURE Close*(f: File); |
| BEGINo |
0447 | o .PROC 5 |
0447 | o(4EE90008): SUB SP, SP, 8H |
0448 | o(AFE00000): STR LNK, SP, 0H |
0449 | o(A0E00004): STR R0, SP, 4H |
| IF f # NIL THENp Unbuffer(f)q ENDr |
044A | p(80E00004): LDR R0, SP, 4H |
044B | p(E1000002): BEQ 2 [044EH] |
044C | q(80E00004): LDR R0, SP, 4H |
044D | r(F7FFFF67): BL -153 [03B5H] |
| ENDs Close; |
044E | s(8FE00000): LDR LNK, SP, 0H |
044F | s(4EE80008): ADD SP, SP, 8H |
0450 | s(C700000F): B LNK |
| |
| PROCEDURE Purge*(f: File); |
| VAR a, i, j, k: INTEGER; |
| ind: FileDir.IndexSector; |
| BEGINt |
0451 | t .PROC 6 |
0451 | t(4EE90418): SUB SP, SP, 418H |
0452 | t(AFE00000): STR LNK, SP, 0H |
0453 | t(A0E00004): STR R0, SP, 4H |
| IF f # NIL THENu a := f.alengv + 1;w f.alengx := 0;y f.blengz := HS;a |
0454 | u(80E00004): LDR R0, SP, 4H |
0455 | u(E100005B): BEQ 91 [04B1H] |
0456 | v(80E00004): LDR R0, SP, 4H |
0457 | v(D120AD4C): BLEQ MT [trap=4, pos=8365] |
0458 | w(80000008): LDR R0, R0, 8H |
0459 | w(40080001): ADD R0, R0, 1H |
045A | w(A0E00008): STR R0, SP, 8H |
045B | x(80E00004): LDR R0, SP, 4H |
045C | x(D120BA4C): BLEQ MT [trap=4, pos=8378] |
045D | y(41000000): MOV R1, R0, 0H |
045E | y(A1000008): STR R1, R0, 8H |
045F | z(80E00004): LDR R0, SP, 4H |
0460 | z(D120C84C): BLEQ MT [trap=4, pos=8392] |
0461 | a(41000160): MOV R1, R0, 160H |
0462 | a(A100000C): STR R1, R0, CH |
| IF a <= STS THENb i := a;c |
0463 | b(80E00008): LDR R0, SP, 8H |
0464 | b(40090040): SUB R0, R0, 40H |
0465 | b(EE000003): BGT 3 [0469H] |
0466 | c(80E00008): LDR R0, SP, 8H |
0467 | c(A0E0000C): STR R0, SP, CH |
| ELSE id := STS;e DEC(a, i);f j := (a-1)g MOD XS;h k := (a-1)i DIV XS;j |
0468 | d(E700003A): B 58 [04A3H] |
0469 | e(40000040): MOV R0, R0, 40H |
046A | e(A0E0000C): STR R0, SP, CH |
046B | f(80E00008): LDR R0, SP, 8H |
046C | f(81E0000C): LDR R1, SP, CH |
046D | f(00090001): SUB R0, R0, R1 |
046E | f(A0E00008): STR R0, SP, 8H |
046F | g(80E00008): LDR R0, SP, 8H |
0470 | g(40090001): SUB R0, R0, 1H |
0471 | h(400400FF): AND R0, R0, FFH |
0472 | h(A0E00010): STR R0, SP, 10H |
0473 | i(80E00008): LDR R0, SP, 8H |
0474 | i(40090001): SUB R0, R0, 1H |
0475 | j(40020008): ASR R0, R0, 8H |
0476 | j(A0E00014): STR R0, SP, 14H |
| WHILE k >= 0 DOk |
0477 | k(80E00014): LDR R0, SP, 14H |
0478 | k(40090000): SUB R0, R0, 0H |
0479 | k(E5000029): BLT 41 [04A3H] |
| Kernel.GetSector(f.extl[k]m.adrn,o ind)p;q |
047A | l(80E00004): LDR R0, SP, 4H |
047B | l(D1216D4C): BLEQ MT [trap=4, pos=8557] |
047C | m(81E00014): LDR R1, SP, 14H |
047D | m(4219000C): SUB R2, R1, CH |
047E | m(DA21701C): BLCC MT [trap=1, pos=8560] |
047F | m(41110002): LSL R1, R1, 2H |
0480 | m(00080001): ADD R0, R0, R1 |
0481 | n(80000040): LDR R0, R0, 40H |
0482 | n(D121744C): BLEQ MT [trap=4, pos=8564] |
0483 | o(80000000): LDR R0, R0, 0H |
0484 | p(41E80018): ADD R1, SP, 18H |
0485 | q .FIXUP P |
0485 | q(F710F04D): BL MOD1 [Kernel] PROC15 |
| REPEAT DEC(j);r Kernel.FreeSector(ind[j]s)t UNTILu j = 0;v |
0486 | r(80E00010): LDR R0, SP, 10H |
0487 | r(40090001): SUB R0, R0, 1H |
0488 | r(A0E00010): STR R0, SP, 10H |
0489 | s(80E00010): LDR R0, SP, 10H |
048A | s(41090100): SUB R1, R0, 100H |
048B | s(DA21AD1C): BLCC MT [trap=1, pos=8621] |
048C | s(40010002): LSL R0, R0, 2H |
048D | s(00E80000): ADD R0, SP, R0 |
048E | t(80000018): LDR R0, R0, 18H |
048F | u .FIXUP P |
048F | u(F710D00A): BL MOD1 [Kernel] PROC13 |
0490 | v(80E00010): LDR R0, SP, 10H |
0491 | v(E9FFFFF4): BNE -12 [0486H] |
| Kernel.FreeSector(f.extw[k]x.adry)z;a j := XS;b DEC(k) |
0492 | w(80E00004): LDR R0, SP, 4H |
0493 | w(D121DD4C): BLEQ MT [trap=4, pos=8669] |
0494 | x(81E00014): LDR R1, SP, 14H |
0495 | x(4219000C): SUB R2, R1, CH |
0496 | x(DA21E01C): BLCC MT [trap=1, pos=8672] |
0497 | x(41110002): LSL R1, R1, 2H |
0498 | x(00080001): ADD R0, R0, R1 |
0499 | y(80000040): LDR R0, R0, 40H |
049A | y(D121E44C): BLEQ MT [trap=4, pos=8676] |
049B | z(80000000): LDR R0, R0, 0H |
049C | a .FIXUP P |
049C | a(F710D00D): BL MOD1 [Kernel] PROC13 |
049D | b(40000100): MOV R0, R0, 100H |
049E | b(A0E00010): STR R0, SP, 10H |
| ENDc |
049F | c(80E00014): LDR R0, SP, 14H |
04A0 | c(40090001): SUB R0, R0, 1H |
04A1 | c(A0E00014): STR R0, SP, 14H |
04A2 | c(E7FFFFD4): B -44 [0477H] |
| END ; |
| REPEAT DEC(i);d Kernel.FreeSector(f.sece[i]f)g UNTILh i = 0 |
04A3 | d(80E0000C): LDR R0, SP, CH |
04A4 | d(40090001): SUB R0, R0, 1H |
04A5 | d(A0E0000C): STR R0, SP, CH |
04A6 | e(80E00004): LDR R0, SP, 4H |
04A7 | e(D1223B4C): BLEQ MT [trap=4, pos=8763] |
04A8 | f(81E0000C): LDR R1, SP, CH |
04A9 | f(42190040): SUB R2, R1, 40H |
04AA | f(DA223E1C): BLCC MT [trap=1, pos=8766] |
04AB | f(41110002): LSL R1, R1, 2H |
04AC | f(00080001): ADD R0, R0, R1 |
04AD | g(80000070): LDR R0, R0, 70H |
04AE | h .FIXUP P |
04AE | h(F710D012): BL MOD1 [Kernel] PROC13 |
| ENDi |
04AF | i(80E0000C): LDR R0, SP, CH |
04B0 | i(E9FFFFF2): BNE -14 [04A3H] |
| ENDj Purge; |
04B1 | j(8FE00000): LDR LNK, SP, 0H |
04B2 | j(4EE80418): ADD SP, SP, 418H |
04B3 | j(C700000F): B LNK |
| |
| PROCEDURE Delete*(name: ARRAY OF CHAR; VAR res: INTEGER); |
| VAR adr: DiskAdr; |
| namebuf: FileDir.FileName; |
| BEGINk Check(name,l namebuf,m res)n;o |
04B4 | k .PROC 7 |
04B4 | k(4EE90034): SUB SP, SP, 34H |
04B5 | k(AFE00000): STR LNK, SP, 0H |
04B6 | k(A0E00004): STR R0, SP, 4H |
04B7 | k(A1E00008): STR R1, SP, 8H |
04B8 | k(A2E0000C): STR R2, SP, CH |
04B9 | l(80E00004): LDR R0, SP, 4H |
04BA | l(81E00008): LDR R1, SP, 8H |
04BB | m(42E80014): ADD R2, SP, 14H |
04BC | n(83E0000C): LDR R3, SP, CH |
04BD | o(F7FFFB42): BL -1214 [0000H] |
| IF res = 0 THENp |
04BE | p(80E0000C): LDR R0, SP, CH |
04BF | p(80000000): LDR R0, R0, 0H |
04C0 | p(E9000008): BNE 8 [04C9H] |
| FileDir.Delete(namebuf,q adr)r;s |
04C1 | q(40E80014): ADD R0, SP, 14H |
04C2 | r(41E80010): ADD R1, SP, 10H |
04C3 | s .FIXUP P |
04C3 | s(F7206015): BL MOD2 [FileDir] PROC6 |
| IF adr = 0 THENt res := 2 ENDu |
04C4 | t(80E00010): LDR R0, SP, 10H |
04C5 | t(E9000003): BNE 3 [04C9H] |
04C6 | u(40000002): MOV R0, R0, 2H |
04C7 | u(81E0000C): LDR R1, SP, CH |
04C8 | u(A0100000): STR R0, R1, 0H |
| END |
| ENDv Delete; |
04C9 | v(8FE00000): LDR LNK, SP, 0H |
04CA | v(4EE80034): ADD SP, SP, 34H |
04CB | v(C700000F): B LNK |
| |
| PROCEDURE Rename*(old, new: ARRAY OF CHAR; VAR res: INTEGER); |
| VAR adr: DiskAdr; |
| oldbuf, newbuf: FileDir.FileName; |
| head: FileDir.FileHeader; |
| BEGINw Check(old,x oldbuf,y res)z;a |
04CC | w .PROC 8 |
04CC | w(4EE9045C): SUB SP, SP, 45CH |
04CD | w(AFE00000): STR LNK, SP, 0H |
04CE | w(A0E00004): STR R0, SP, 4H |
04CF | w(A1E00008): STR R1, SP, 8H |
04D0 | w(A2E0000C): STR R2, SP, CH |
04D1 | w(A3E00010): STR R3, SP, 10H |
04D2 | w(A4E00014): STR R4, SP, 14H |
04D3 | x(80E00004): LDR R0, SP, 4H |
04D4 | x(81E00008): LDR R1, SP, 8H |
04D5 | y(42E8001C): ADD R2, SP, 1CH |
04D6 | z(83E00014): LDR R3, SP, 14H |
04D7 | a(F7FFFB28): BL -1240 [0000H] |
| IF res = 0 THENb |
04D8 | b(80E00014): LDR R0, SP, 14H |
04D9 | b(80000000): LDR R0, R0, 0H |
04DA | b(E9000023): BNE 35 [04FEH] |
| Check(new,c newbuf,d res)e;f |
04DB | c(80E0000C): LDR R0, SP, CH |
04DC | c(81E00010): LDR R1, SP, 10H |
04DD | d(42E8003C): ADD R2, SP, 3CH |
04DE | e(83E00014): LDR R3, SP, 14H |
04DF | f(F7FFFB20): BL -1248 [0000H] |
| IF res = 0 THENg |
04E0 | g(80E00014): LDR R0, SP, 14H |
04E1 | g(80000000): LDR R0, R0, 0H |
04E2 | g(E900001B): BNE 27 [04FEH] |
| FileDir.Delete(oldbuf,h adr)i;j |
04E3 | h(40E8001C): ADD R0, SP, 1CH |
04E4 | i(41E80018): ADD R1, SP, 18H |
04E5 | j .FIXUP P |
04E5 | j(F7206022): BL MOD2 [FileDir] PROC6 |
| IF adr # 0 THENk |
04E6 | k(80E00018): LDR R0, SP, 18H |
04E7 | k(E1000013): BEQ 19 [04FBH] |
| FileDir.Insert(newbuf,l adr)m;n |
04E8 | l(40E8003C): ADD R0, SP, 3CH |
04E9 | m(81E00018): LDR R1, SP, 18H |
04EA | n .FIXUP P |
04EA | n(F7205005): BL MOD2 [FileDir] PROC5 |
| Kernel.GetSector(adr,o head)p;q head.name := newbuf;r Kernel.PutSector(adr,s head)t |
04EB | o(80E00018): LDR R0, SP, 18H |
04EC | p(41E8005C): ADD R1, SP, 5CH |
04ED | q .FIXUP P |
04ED | q(F710F003): BL MOD1 [Kernel] PROC15 |
04EE | r(40E80060): ADD R0, SP, 60H |
04EF | r(41E8003C): ADD R1, SP, 3CH |
04F0 | r(42000008): MOV R2, R0, 8H |
04F1 | r(83100000): LDR R3, R1, 0H |
04F2 | r(41180004): ADD R1, R1, 4H |
04F3 | r(A3000000): STR R3, R0, 0H |
04F4 | r(40080004): ADD R0, R0, 4H |
04F5 | r(42290001): SUB R2, R2, 1H |
04F6 | r(E9FFFFFA): BNE -6 [04F1H] |
04F7 | s(80E00018): LDR R0, SP, 18H |
04F8 | t(41E8005C): ADD R1, SP, 5CH |
| ELSEu resv := 2 |
04F9 | u .FIXUP P |
04F9 | u(F711000C): BL MOD1 [Kernel] PROC16 |
04FA | v(E7000003): B 3 [04FEH] |
| ENDw |
04FB | w(40000002): MOV R0, R0, 2H |
04FC | w(81E00014): LDR R1, SP, 14H |
04FD | w(A0100000): STR R0, R1, 0H |
| END |
| END |
| ENDx Rename; |
04FE | x(8FE00000): LDR LNK, SP, 0H |
04FF | x(4EE8045C): ADD SP, SP, 45CH |
0500 | x(C700000F): B LNK |
| |
| PROCEDURE Length*(f: File): INTEGER; |
| BEGINy RETURN f.alengz * SS +a f.blengb -c HS |
0501 | y .PROC 9 |
0501 | y(4EE90008): SUB SP, SP, 8H |
0502 | y(AFE00000): STR LNK, SP, 0H |
0503 | y(A0E00004): STR R0, SP, 4H |
0504 | z(80E00004): LDR R0, SP, 4H |
0505 | z(D125B44C): BLEQ MT [trap=4, pos=9652] |
0506 | a(80000008): LDR R0, R0, 8H |
0507 | a(4001000A): LSL R0, R0, AH |
0508 | b(81E00004): LDR R1, SP, 4H |
0509 | b(D125C34C): BLEQ MT [trap=4, pos=9667] |
050A | c(8110000C): LDR R1, R1, CH |
050B | c(00080001): ADD R0, R0, R1 |
| ENDd Length; |
050C | d(40090160): SUB R0, R0, 160H |
050D | d(8FE00000): LDR LNK, SP, 0H |
050E | d(4EE80008): ADD SP, SP, 8H |
050F | d(C700000F): B LNK |
| |
| PROCEDURE Date*(f: File): INTEGER; |
| BEGINe RETURN f.datef |
0510 | e .PROC 10 |
0510 | e(4EE90008): SUB SP, SP, 8H |
0511 | e(AFE00000): STR LNK, SP, 0H |
0512 | e(A0E00004): STR R0, SP, 4H |
0513 | f(80E00004): LDR R0, SP, 4H |
0514 | f(D126124C): BLEQ MT [trap=4, pos=9746] |
| ENDg Date; |
0515 | g(8000003C): LDR R0, R0, 3CH |
0516 | g(8FE00000): LDR LNK, SP, 0H |
0517 | g(4EE80008): ADD SP, SP, 8H |
0518 | g(C700000F): B LNK |
| |
| (*---------------------------Read---------------------------*) |
| |
| PROCEDURE Set*(VAR r: Rider; f: File; pos: INTEGER); |
| VAR a, b: INTEGER; |
| BEGINh r.eof := FALSE;i r.res := 0;j |
0519 | h .PROC 11 |
0519 | h(4EE9001C): SUB SP, SP, 1CH |
051A | h(AFE00000): STR LNK, SP, 0H |
051B | h(A0E00004): STR R0, SP, 4H |
051C | h(A1E00008): STR R1, SP, 8H |
051D | h(A2E0000C): STR R2, SP, CH |
051E | h(A3E00010): STR R3, SP, 10H |
051F | i(40000000): MOV R0, R0, 0H |
0520 | i(81E00004): LDR R1, SP, 4H |
0521 | i(B0100000): STR R0, R1, 0H |
0522 | j(40000000): MOV R0, R0, 0H |
0523 | j(81E00004): LDR R1, SP, 4H |
0524 | j(A0100004): STR R0, R1, 4H |
| IF f # NIL THENk |
0525 | k(80E0000C): LDR R0, SP, CH |
0526 | k(E1000034): BEQ 52 [055BH] |
| IF pos < 0 THENl a := 0;m b := HS |
0527 | l(80E00010): LDR R0, SP, 10H |
0528 | l(40090000): SUB R0, R0, 0H |
0529 | l(ED000005): BGE 5 [052FH] |
052A | m(40000000): MOV R0, R0, 0H |
052B | m(A0E00014): STR R0, SP, 14H |
| ELSIFn poso < f.alengp * SS +q f.blengr -s HS THENt |
052C | n(40000160): MOV R0, R0, 160H |
052D | n(A0E00018): STR R0, SP, 18H |
052E | o(E700001D): B 29 [054CH] |
052F | p(80E0000C): LDR R0, SP, CH |
0530 | p(D127284C): BLEQ MT [trap=4, pos=10024] |
0531 | q(80000008): LDR R0, R0, 8H |
0532 | q(4001000A): LSL R0, R0, AH |
0533 | r(81E0000C): LDR R1, SP, CH |
0534 | r(D127374C): BLEQ MT [trap=4, pos=10039] |
0535 | s(8110000C): LDR R1, R1, CH |
0536 | s(00080001): ADD R0, R0, R1 |
0537 | t(40090160): SUB R0, R0, 160H |
0538 | t(81E00010): LDR R1, SP, 10H |
0539 | t(01190000): SUB R1, R1, R0 |
053A | t(ED000009): BGE 9 [0544H] |
| a := (pos + HS)u DIV SS;v b := (pos + HS)w MOD SS;x |
053B | u(80E00010): LDR R0, SP, 10H |
053C | u(40080160): ADD R0, R0, 160H |
053D | v(4002000A): ASR R0, R0, AH |
053E | v(A0E00014): STR R0, SP, 14H |
053F | w(80E00010): LDR R0, SP, 10H |
0540 | w(40080160): ADD R0, R0, 160H |
0541 | x(400403FF): AND R0, R0, 3FFH |
0542 | x(A0E00018): STR R0, SP, 18H |
| ELSE ay := f.alengz;a b := f.blengb |
0543 | y(E7000008): B 8 [054CH] |
0544 | z(80E0000C): LDR R0, SP, CH |
0545 | z(D127914C): BLEQ MT [trap=4, pos=10129] |
0546 | a(80000008): LDR R0, R0, 8H |
0547 | a(A0E00014): STR R0, SP, 14H |
0548 | b(80E0000C): LDR R0, SP, CH |
0549 | b(D1279F4C): BLEQ MT [trap=4, pos=10143] |
| ENDc ; |
054A | c(8000000C): LDR R0, R0, CH |
054B | c(A0E00018): STR R0, SP, 18H |
| r.file := f;d r.apos := a;e r.bpos := b;f r.buf := f.firstbufg |
054C | d(80E0000C): LDR R0, SP, CH |
054D | d(81E00004): LDR R1, SP, 4H |
054E | d(A0100008): STR R0, R1, 8H |
054F | e(80E00014): LDR R0, SP, 14H |
0550 | e(81E00004): LDR R1, SP, 4H |
0551 | e(A010000C): STR R0, R1, CH |
0552 | f(80E00018): LDR R0, SP, 18H |
0553 | f(81E00004): LDR R1, SP, 4H |
0554 | f(A0100010): STR R0, R1, 10H |
0555 | g(80E0000C): LDR R0, SP, CH |
0556 | g(D127EC4C): BLEQ MT [trap=4, pos=10220] |
| ELSEh ri.file:= NIL |
0557 | h(80000014): LDR R0, R0, 14H |
0558 | h(81E00004): LDR R1, SP, 4H |
0559 | h(A0100014): STR R0, R1, 14H |
055A | i(E7000003): B 3 [055EH] |
| ENDj |
055B | j(40000000): MOV R0, R0, 0H |
055C | j(81E00004): LDR R1, SP, 4H |
055D | j(A0100008): STR R0, R1, 8H |
| ENDk Set; |
055E | k(8FE00000): LDR LNK, SP, 0H |
055F | k(4EE8001C): ADD SP, SP, 1CH |
0560 | k(C700000F): B LNK |
| |
| PROCEDURE Pos*(VAR r: Rider): INTEGER; |
| BEGINl RETURN r.apos * SS +m r.bpos -n HS |
0561 | l .PROC 12 |
0561 | l(4EE9000C): SUB SP, SP, CH |
0562 | l(AFE00000): STR LNK, SP, 0H |
0563 | l(A0E00004): STR R0, SP, 4H |
0564 | l(A1E00008): STR R1, SP, 8H |
0565 | m(80E00004): LDR R0, SP, 4H |
0566 | m(8000000C): LDR R0, R0, CH |
0567 | m(4001000A): LSL R0, R0, AH |
0568 | n(81E00004): LDR R1, SP, 4H |
0569 | n(81100010): LDR R1, R1, 10H |
056A | n(00080001): ADD R0, R0, R1 |
| ENDo Pos; |
056B | o(40090160): SUB R0, R0, 160H |
056C | o(8FE00000): LDR LNK, SP, 0H |
056D | o(4EE8000C): ADD SP, SP, CH |
056E | o(C700000F): B LNK |
| |
| PROCEDURE Base*(VAR r: Rider): File; |
| BEGINp RETURN r.file |
056F | p .PROC 13 |
056F | p(4EE9000C): SUB SP, SP, CH |
0570 | p(AFE00000): STR LNK, SP, 0H |
0571 | p(A0E00004): STR R0, SP, 4H |
0572 | p(A1E00008): STR R1, SP, 8H |
| ENDq Base; |
0573 | q(80E00004): LDR R0, SP, 4H |
0574 | q(80000008): LDR R0, R0, 8H |
0575 | q(8FE00000): LDR LNK, SP, 0H |
0576 | q(4EE8000C): ADD SP, SP, CH |
0577 | q(C700000F): B LNK |
| |
| PROCEDURE ReadByte*(VAR r: Rider; VAR x: BYTE); |
| VAR buf: Buffer; |
| BEGINr |
0578 | r .PROC 14 |
0578 | r(4EE90014): SUB SP, SP, 14H |
0579 | r(AFE00000): STR LNK, SP, 0H |
057A | r(A0E00004): STR R0, SP, 4H |
057B | r(A1E00008): STR R1, SP, 8H |
057C | r(A2E0000C): STR R2, SP, CH |
| IF r.apos # r.buf.aposs THENt r.buf := GetBuf(r.file,u r.apos)v ENDw ; |
057D | s(80E00004): LDR R0, SP, 4H |
057E | s(80000014): LDR R0, R0, 14H |
057F | s(D129284C): BLEQ MT [trap=4, pos=10536] |
0580 | t(81E00004): LDR R1, SP, 4H |
0581 | t(8110000C): LDR R1, R1, CH |
0582 | t(80000000): LDR R0, R0, 0H |
0583 | t(01190000): SUB R1, R1, R0 |
0584 | t(E1000007): BEQ 7 [058CH] |
0585 | u(80E00004): LDR R0, SP, 4H |
0586 | u(80000008): LDR R0, R0, 8H |
0587 | v(81E00004): LDR R1, SP, 4H |
0588 | v(8110000C): LDR R1, R1, CH |
0589 | w(F7FFFDC6): BL -570 [0350H] |
058A | w(81E00004): LDR R1, SP, 4H |
058B | w(A0100014): STR R0, R1, 14H |
| IF r.bpos < r.buf.limx THENy x := r.buf.dataz[r.bpos]a;b INC(r.bpos) |
058C | x(80E00004): LDR R0, SP, 4H |
058D | x(80000014): LDR R0, R0, 14H |
058E | x(D1296D4C): BLEQ MT [trap=4, pos=10605] |
058F | y(81E00004): LDR R1, SP, 4H |
0590 | y(81100010): LDR R1, R1, 10H |
0591 | y(80000004): LDR R0, R0, 4H |
0592 | y(01190000): SUB R1, R1, R0 |
0593 | y(ED000011): BGE 17 [05A5H] |
0594 | z(80E00004): LDR R0, SP, 4H |
0595 | z(80000014): LDR R0, R0, 14H |
0596 | z(D129824C): BLEQ MT [trap=4, pos=10626] |
0597 | a(81E00004): LDR R1, SP, 4H |
0598 | a(81100010): LDR R1, R1, 10H |
0599 | a(42190400): SUB R2, R1, 400H |
059A | a(DA298A1C): BLCC MT [trap=1, pos=10634] |
059B | a(00080001): ADD R0, R0, R1 |
059C | b(90000010): LDR R0, R0, 10H |
059D | b(81E0000C): LDR R1, SP, CH |
059E | b(B0100000): STR R0, R1, 0H |
| ELSIFc rd.apos < r.file.alenge THENf |
059F | c(80E00004): LDR R0, SP, 4H |
05A0 | c(40080010): ADD R0, R0, 10H |
05A1 | c(81000000): LDR R1, R0, 0H |
05A2 | c(41180001): ADD R1, R1, 1H |
05A3 | c(A1000000): STR R1, R0, 0H |
05A4 | d(E700003A): B 58 [05DFH] |
05A5 | e(80E00004): LDR R0, SP, 4H |
05A6 | e(80000008): LDR R0, R0, 8H |
05A7 | e(D129B74C): BLEQ MT [trap=4, pos=10679] |
05A8 | f(81E00004): LDR R1, SP, 4H |
05A9 | f(8110000C): LDR R1, R1, CH |
05AA | f(80000008): LDR R0, R0, 8H |
05AB | f(01190000): SUB R1, R1, R0 |
05AC | f(ED00002C): BGE 44 [05D9H] |
| INC(r.apos);g buf := Buf(r.file,h r.apos)i;j |
05AD | g(80E00004): LDR R0, SP, 4H |
05AE | g(4008000C): ADD R0, R0, CH |
05AF | g(81000000): LDR R1, R0, 0H |
05B0 | g(41180001): ADD R1, R1, 1H |
05B1 | g(A1000000): STR R1, R0, 0H |
05B2 | h(80E00004): LDR R0, SP, 4H |
05B3 | h(80000008): LDR R0, R0, 8H |
05B4 | i(81E00004): LDR R1, SP, 4H |
05B5 | i(8110000C): LDR R1, R1, CH |
05B6 | j(F7FFFD72): BL -654 [0329H] |
05B7 | j(A0E00010): STR R0, SP, 10H |
| IF buf = NIL THENk |
05B8 | k(80E00010): LDR R0, SP, 10H |
05B9 | k(E9000012): BNE 18 [05CCH] |
| IF r.buf.modl THENm WriteBuf(r.file,n r.buf)o ENDp ; |
05BA | l(80E00004): LDR R0, SP, 4H |
05BB | l(80000014): LDR R0, R0, 14H |
05BC | l(D12A184C): BLEQ MT [trap=4, pos=10776] |
05BD | m(90000008): LDR R0, R0, 8H |
05BE | m(E1000005): BEQ 5 [05C4H] |
05BF | n(80E00004): LDR R0, SP, 4H |
05C0 | n(80000008): LDR R0, R0, 8H |
05C1 | o(81E00004): LDR R1, SP, 4H |
05C2 | o(81100014): LDR R1, R1, 14H |
05C3 | p(F7FFFCC6): BL -826 [028AH] |
| ReadBuf(r.file,q r.buf,r r.apos)s |
05C4 | q(80E00004): LDR R0, SP, 4H |
05C5 | q(80000008): LDR R0, R0, 8H |
05C6 | r(81E00004): LDR R1, SP, 4H |
05C7 | r(81100014): LDR R1, R1, 14H |
05C8 | s(82E00004): LDR R2, SP, 4H |
05C9 | s(8220000C): LDR R2, R2, CH |
| ELSEt ru.buf := buf |
05CA | t(F7FFFC78): BL -904 [0243H] |
05CB | u(E7000003): B 3 [05CFH] |
| ENDv ; |
05CC | v(80E00010): LDR R0, SP, 10H |
05CD | v(81E00004): LDR R1, SP, 4H |
05CE | v(A0100014): STR R0, R1, 14H |
| x := r.buf.dataw[0];x r.bpos := 1 |
05CF | w(80E00004): LDR R0, SP, 4H |
05D0 | w(80000014): LDR R0, R0, 14H |
05D1 | w(D12A9C4C): BLEQ MT [trap=4, pos=10908] |
05D2 | x(90000010): LDR R0, R0, 10H |
05D3 | x(81E0000C): LDR R1, SP, CH |
05D4 | x(B0100000): STR R0, R1, 0H |
| ELSEy xz := 0;a r.eof := TRUE |
05D5 | y(40000001): MOV R0, R0, 1H |
05D6 | y(81E00004): LDR R1, SP, 4H |
05D7 | y(A0100010): STR R0, R1, 10H |
05D8 | z(E7000006): B 6 [05DFH] |
05D9 | a(40000000): MOV R0, R0, 0H |
05DA | a(81E0000C): LDR R1, SP, CH |
05DB | a(B0100000): STR R0, R1, 0H |
| ENDb |
05DC | b(40000001): MOV R0, R0, 1H |
05DD | b(81E00004): LDR R1, SP, 4H |
05DE | b(B0100000): STR R0, R1, 0H |
| ENDc ReadByte; |
05DF | c(8FE00000): LDR LNK, SP, 0H |
05E0 | c(4EE80014): ADD SP, SP, 14H |
05E1 | c(C700000F): B LNK |
| |
| PROCEDURE ReadBytes*(VAR r: Rider; VAR x: ARRAY OF BYTE; n: INTEGER); |
| VAR i: INTEGER; |
| BEGINd i := 0;e (*this implementation is to be improved*) |
05E2 | d .PROC 15 |
05E2 | d(4EE9001C): SUB SP, SP, 1CH |
05E3 | d(AFE00000): STR LNK, SP, 0H |
05E4 | d(A0E00004): STR R0, SP, 4H |
05E5 | d(A1E00008): STR R1, SP, 8H |
05E6 | d(A2E0000C): STR R2, SP, CH |
05E7 | d(A3E00010): STR R3, SP, 10H |
05E8 | d(A4E00014): STR R4, SP, 14H |
05E9 | e(40000000): MOV R0, R0, 0H |
05EA | e(A0E00018): STR R0, SP, 18H |
| WHILE i < n DOf ReadByte(r,g x[i]h);i INC(i) ENDj |
05EB | f(80E00018): LDR R0, SP, 18H |
05EC | f(81E00014): LDR R1, SP, 14H |
05ED | f(00090001): SUB R0, R0, R1 |
05EE | f(ED00000D): BGE 13 [05FCH] |
05EF | g(80E00004): LDR R0, SP, 4H |
05F0 | g(81E00008): LDR R1, SP, 8H |
05F1 | h(82E00018): LDR R2, SP, 18H |
05F2 | h(83E00010): LDR R3, SP, 10H |
05F3 | h(03290003): SUB R3, R2, R3 |
05F4 | h(DA2B9F1C): BLCC MT [trap=1, pos=11167] |
05F5 | h(83E0000C): LDR R3, SP, CH |
05F6 | h(02380002): ADD R2, R3, R2 |
05F7 | i(F7FFFF80): BL -128 [0578H] |
05F8 | j(80E00018): LDR R0, SP, 18H |
05F9 | j(40080001): ADD R0, R0, 1H |
05FA | j(A0E00018): STR R0, SP, 18H |
05FB | j(E7FFFFEF): B -17 [05EBH] |
| ENDk ReadBytes; |
05FC | k(8FE00000): LDR LNK, SP, 0H |
05FD | k(4EE8001C): ADD SP, SP, 1CH |
05FE | k(C700000F): B LNK |
| |
| PROCEDURE Read*(VAR r: Rider; VAR ch: CHAR); |
| VAR buf: Buffer; (*same as ReadByte*) |
| BEGINl |
05FF | l .PROC 16 |
05FF | l(4EE90014): SUB SP, SP, 14H |
0600 | l(AFE00000): STR LNK, SP, 0H |
0601 | l(A0E00004): STR R0, SP, 4H |
0602 | l(A1E00008): STR R1, SP, 8H |
0603 | l(A2E0000C): STR R2, SP, CH |
| IF r.apos # r.buf.aposm THENn r.buf := GetBuf(r.file,o r.apos)p ENDq ; |
0604 | m(80E00004): LDR R0, SP, 4H |
0605 | m(80000014): LDR R0, R0, 14H |
0606 | m(D12C3B4C): BLEQ MT [trap=4, pos=11323] |
0607 | n(81E00004): LDR R1, SP, 4H |
0608 | n(8110000C): LDR R1, R1, CH |
0609 | n(80000000): LDR R0, R0, 0H |
060A | n(01190000): SUB R1, R1, R0 |
060B | n(E1000007): BEQ 7 [0613H] |
060C | o(80E00004): LDR R0, SP, 4H |
060D | o(80000008): LDR R0, R0, 8H |
060E | p(81E00004): LDR R1, SP, 4H |
060F | p(8110000C): LDR R1, R1, CH |
0610 | q(F7FFFD3F): BL -705 [0350H] |
0611 | q(81E00004): LDR R1, SP, 4H |
0612 | q(A0100014): STR R0, R1, 14H |
| IF r.bpos < r.buf.limr THENs ch := CHR(r.buf.datat[r.bpos]u);v INC(r.bpos) |
0613 | r(80E00004): LDR R0, SP, 4H |
0614 | r(80000014): LDR R0, R0, 14H |
0615 | r(D12C804C): BLEQ MT [trap=4, pos=11392] |
0616 | s(81E00004): LDR R1, SP, 4H |
0617 | s(81100010): LDR R1, R1, 10H |
0618 | s(80000004): LDR R0, R0, 4H |
0619 | s(01190000): SUB R1, R1, R0 |
061A | s(ED000011): BGE 17 [062CH] |
061B | t(80E00004): LDR R0, SP, 4H |
061C | t(80000014): LDR R0, R0, 14H |
061D | t(D12C9A4C): BLEQ MT [trap=4, pos=11418] |
061E | u(81E00004): LDR R1, SP, 4H |
061F | u(81100010): LDR R1, R1, 10H |
0620 | u(42190400): SUB R2, R1, 400H |
0621 | u(DA2CA21C): BLCC MT [trap=1, pos=11426] |
0622 | u(00080001): ADD R0, R0, R1 |
0623 | v(90000010): LDR R0, R0, 10H |
0624 | v(81E0000C): LDR R1, SP, CH |
0625 | v(B0100000): STR R0, R1, 0H |
| ELSIFw rx.apos < r.file.alengy THENz |
0626 | w(80E00004): LDR R0, SP, 4H |
0627 | w(40080010): ADD R0, R0, 10H |
0628 | w(81000000): LDR R1, R0, 0H |
0629 | w(41180001): ADD R1, R1, 1H |
062A | w(A1000000): STR R1, R0, 0H |
062B | x(E700003A): B 58 [0666H] |
062C | y(80E00004): LDR R0, SP, 4H |
062D | y(80000008): LDR R0, R0, 8H |
062E | y(D12CD04C): BLEQ MT [trap=4, pos=11472] |
062F | z(81E00004): LDR R1, SP, 4H |
0630 | z(8110000C): LDR R1, R1, CH |
0631 | z(80000008): LDR R0, R0, 8H |
0632 | z(01190000): SUB R1, R1, R0 |
0633 | z(ED00002C): BGE 44 [0660H] |
| INC(r.apos);a buf := Buf(r.file,b r.apos)c;d |
0634 | a(80E00004): LDR R0, SP, 4H |
0635 | a(4008000C): ADD R0, R0, CH |
0636 | a(81000000): LDR R1, R0, 0H |
0637 | a(41180001): ADD R1, R1, 1H |
0638 | a(A1000000): STR R1, R0, 0H |
0639 | b(80E00004): LDR R0, SP, 4H |
063A | b(80000008): LDR R0, R0, 8H |
063B | c(81E00004): LDR R1, SP, 4H |
063C | c(8110000C): LDR R1, R1, CH |
063D | d(F7FFFCEB): BL -789 [0329H] |
063E | d(A0E00010): STR R0, SP, 10H |
| IF buf = NIL THENe |
063F | e(80E00010): LDR R0, SP, 10H |
0640 | e(E9000012): BNE 18 [0653H] |
| IF r.buf.modf THENg WriteBuf(r.file,h r.buf)i ENDj ; |
0641 | f(80E00004): LDR R0, SP, 4H |
0642 | f(80000014): LDR R0, R0, 14H |
0643 | f(D12D314C): BLEQ MT [trap=4, pos=11569] |
0644 | g(90000008): LDR R0, R0, 8H |
0645 | g(E1000005): BEQ 5 [064BH] |
0646 | h(80E00004): LDR R0, SP, 4H |
0647 | h(80000008): LDR R0, R0, 8H |
0648 | i(81E00004): LDR R1, SP, 4H |
0649 | i(81100014): LDR R1, R1, 14H |
064A | j(F7FFFC3F): BL -961 [028AH] |
| ReadBuf(r.file,k r.buf,l r.apos)m |
064B | k(80E00004): LDR R0, SP, 4H |
064C | k(80000008): LDR R0, R0, 8H |
064D | l(81E00004): LDR R1, SP, 4H |
064E | l(81100014): LDR R1, R1, 14H |
064F | m(82E00004): LDR R2, SP, 4H |
0650 | m(8220000C): LDR R2, R2, CH |
| ELSEn ro.buf := buf |
0651 | n(F7FFFBF1): BL -1039 [0243H] |
0652 | o(E7000003): B 3 [0656H] |
| ENDp ; |
0653 | p(80E00010): LDR R0, SP, 10H |
0654 | p(81E00004): LDR R1, SP, 4H |
0655 | p(A0100014): STR R0, R1, 14H |
| ch := CHR(r.buf.dataq[0]);r r.bpos := 1 |
0656 | q(80E00004): LDR R0, SP, 4H |
0657 | q(80000014): LDR R0, R0, 14H |
0658 | q(D12DBA4C): BLEQ MT [trap=4, pos=11706] |
0659 | r(90000010): LDR R0, R0, 10H |
065A | r(81E0000C): LDR R1, SP, CH |
065B | r(B0100000): STR R0, R1, 0H |
| ELSEs cht := 0X;u r.eof := TRUE |
065C | s(40000001): MOV R0, R0, 1H |
065D | s(81E00004): LDR R1, SP, 4H |
065E | s(A0100010): STR R0, R1, 10H |
065F | t(E7000006): B 6 [0666H] |
0660 | u(40000000): MOV R0, R0, 0H |
0661 | u(81E0000C): LDR R1, SP, CH |
0662 | u(B0100000): STR R0, R1, 0H |
| ENDv |
0663 | v(40000001): MOV R0, R0, 1H |
0664 | v(81E00004): LDR R1, SP, 4H |
0665 | v(B0100000): STR R0, R1, 0H |
| ENDw Read; |
0666 | w(8FE00000): LDR LNK, SP, 0H |
0667 | w(4EE80014): ADD SP, SP, 14H |
0668 | w(C700000F): B LNK |
| |
| PROCEDURE ReadInt*(VAR R: Rider; VAR x: INTEGER); |
| VAR x0, x1, x2, x3: BYTE; |
| BEGINx ReadByte(R,y x0)z;a ReadByte(R,b x1)c;d ReadByte(R,e x2)f;g ReadByte(R,h x3)i;j |
0669 | x .PROC 17 |
0669 | x(4EE90014): SUB SP, SP, 14H |
066A | x(AFE00000): STR LNK, SP, 0H |
066B | x(A0E00004): STR R0, SP, 4H |
066C | x(A1E00008): STR R1, SP, 8H |
066D | x(A2E0000C): STR R2, SP, CH |
066E | y(80E00004): LDR R0, SP, 4H |
066F | y(81E00008): LDR R1, SP, 8H |
0670 | z(42E80010): ADD R2, SP, 10H |
0671 | a(F7FFFF06): BL -250 [0578H] |
0672 | b(80E00004): LDR R0, SP, 4H |
0673 | b(81E00008): LDR R1, SP, 8H |
0674 | c(42E80011): ADD R2, SP, 11H |
0675 | d(F7FFFF02): BL -254 [0578H] |
0676 | e(80E00004): LDR R0, SP, 4H |
0677 | e(81E00008): LDR R1, SP, 8H |
0678 | f(42E80012): ADD R2, SP, 12H |
0679 | g(F7FFFEFE): BL -258 [0578H] |
067A | h(80E00004): LDR R0, SP, 4H |
067B | h(81E00008): LDR R1, SP, 8H |
067C | i(42E80013): ADD R2, SP, 13H |
067D | j(F7FFFEFA): BL -262 [0578H] |
| x := ((x3 * 100H +k x2)l * 100H +m x1)n * 100H +o x0 |
067E | k(90E00013): LDR R0, SP, 13H |
067F | k(40010008): LSL R0, R0, 8H |
0680 | l(91E00012): LDR R1, SP, 12H |
0681 | l(00080001): ADD R0, R0, R1 |
0682 | m(40010008): LSL R0, R0, 8H |
0683 | n(91E00011): LDR R1, SP, 11H |
0684 | n(00080001): ADD R0, R0, R1 |
0685 | o(40010008): LSL R0, R0, 8H |
| ENDp ReadInt; |
0686 | p(91E00010): LDR R1, SP, 10H |
0687 | p(00080001): ADD R0, R0, R1 |
0688 | p(81E0000C): LDR R1, SP, CH |
0689 | p(A0100000): STR R0, R1, 0H |
068A | p(8FE00000): LDR LNK, SP, 0H |
068B | p(4EE80014): ADD SP, SP, 14H |
068C | p(C700000F): B LNK |
| |
| PROCEDURE ReadSet*(VAR R: Rider; VAR s: SET); |
| VAR n: INTEGER; |
| BEGINq ReadInt(R,r SYSTEM.VAL(INTEGER, s))s |
068D | q .PROC 18 |
068D | q(4EE90014): SUB SP, SP, 14H |
068E | q(AFE00000): STR LNK, SP, 0H |
068F | q(A0E00004): STR R0, SP, 4H |
0690 | q(A1E00008): STR R1, SP, 8H |
0691 | q(A2E0000C): STR R2, SP, CH |
0692 | r(80E00004): LDR R0, SP, 4H |
0693 | r(81E00008): LDR R1, SP, 8H |
0694 | s(82E0000C): LDR R2, SP, CH |
| ENDt ReadSet; |
0695 | t(F7FFFFD3): BL -45 [0669H] |
0696 | t(8FE00000): LDR LNK, SP, 0H |
0697 | t(4EE80014): ADD SP, SP, 14H |
0698 | t(C700000F): B LNK |
| |
| PROCEDURE ReadReal*(VAR R: Rider; VAR x: REAL); |
| VAR n: INTEGER; |
| BEGINu ReadInt(R,v SYSTEM.VAL(INTEGER, x))w |
0699 | u .PROC 19 |
0699 | u(4EE90014): SUB SP, SP, 14H |
069A | u(AFE00000): STR LNK, SP, 0H |
069B | u(A0E00004): STR R0, SP, 4H |
069C | u(A1E00008): STR R1, SP, 8H |
069D | u(A2E0000C): STR R2, SP, CH |
069E | v(80E00004): LDR R0, SP, 4H |
069F | v(81E00008): LDR R1, SP, 8H |
06A0 | w(82E0000C): LDR R2, SP, CH |
| ENDx ReadReal; |
06A1 | x(F7FFFFC7): BL -57 [0669H] |
06A2 | x(8FE00000): LDR LNK, SP, 0H |
06A3 | x(4EE80014): ADD SP, SP, 14H |
06A4 | x(C700000F): B LNK |
| |
| PROCEDURE ReadString*(VAR R: Rider; VAR x: ARRAY OF CHAR); |
| VAR i: INTEGER; ch: CHAR; |
| BEGINy i := 0;z Read(R,a ch)b;c |
06A5 | y .PROC 20 |
06A5 | y(4EE9001C): SUB SP, SP, 1CH |
06A6 | y(AFE00000): STR LNK, SP, 0H |
06A7 | y(A0E00004): STR R0, SP, 4H |
06A8 | y(A1E00008): STR R1, SP, 8H |
06A9 | y(A2E0000C): STR R2, SP, CH |
06AA | y(A3E00010): STR R3, SP, 10H |
06AB | z(40000000): MOV R0, R0, 0H |
06AC | z(A0E00014): STR R0, SP, 14H |
06AD | a(80E00004): LDR R0, SP, 4H |
06AE | a(81E00008): LDR R1, SP, 8H |
06AF | b(42E80018): ADD R2, SP, 18H |
06B0 | c(F7FFFF4E): BL -178 [05FFH] |
| WHILE ch # 0X DOd |
06B1 | d(90E00018): LDR R0, SP, 18H |
06B2 | d(E1000015): BEQ 21 [06C8H] |
| IF i < LEN(x)-e1 THENf x[i]g := ch;h INC(i) ENDi ; |
06B3 | e(80E00010): LDR R0, SP, 10H |
06B4 | f(40090001): SUB R0, R0, 1H |
06B5 | f(81E00014): LDR R1, SP, 14H |
06B6 | f(01190000): SUB R1, R1, R0 |
06B7 | f(ED00000B): BGE 11 [06C3H] |
06B8 | g(80E00014): LDR R0, SP, 14H |
06B9 | g(81E00010): LDR R1, SP, 10H |
06BA | g(01090001): SUB R1, R0, R1 |
06BB | g(DA30911C): BLCC MT [trap=1, pos=12433] |
06BC | g(81E0000C): LDR R1, SP, CH |
06BD | g(00180000): ADD R0, R1, R0 |
06BE | h(91E00018): LDR R1, SP, 18H |
06BF | h(B1000000): STR R1, R0, 0H |
06C0 | i(80E00014): LDR R0, SP, 14H |
06C1 | i(40080001): ADD R0, R0, 1H |
06C2 | i(A0E00014): STR R0, SP, 14H |
| Read(R,j ch)k |
06C3 | j(80E00004): LDR R0, SP, 4H |
06C4 | j(81E00008): LDR R1, SP, 8H |
06C5 | k(42E80018): ADD R2, SP, 18H |
| ENDl ; |
06C6 | l(F7FFFF38): BL -200 [05FFH] |
06C7 | l(E7FFFFE9): B -23 [06B1H] |
| x[i]m := 0X |
06C8 | m(80E00014): LDR R0, SP, 14H |
06C9 | m(81E00010): LDR R1, SP, 10H |
06CA | m(01090001): SUB R1, R0, R1 |
06CB | m(DA30CA1C): BLCC MT [trap=1, pos=12490] |
06CC | m(81E0000C): LDR R1, SP, CH |
06CD | m(00180000): ADD R0, R1, R0 |
| ENDn ReadString; |
06CE | n(41000000): MOV R1, R0, 0H |
06CF | n(B1000000): STR R1, R0, 0H |
06D0 | n(8FE00000): LDR LNK, SP, 0H |
06D1 | n(4EE8001C): ADD SP, SP, 1CH |
06D2 | n(C700000F): B LNK |
| |
| PROCEDURE ReadNum*(VAR R: Rider; VAR x: INTEGER); |
| VAR n, y: INTEGER; b: BYTE; |
| BEGINo n := 32;p y := 0;q ReadByte(R,r b)s;t |
06D3 | o .PROC 21 |
06D3 | o(4EE9001C): SUB SP, SP, 1CH |
06D4 | o(AFE00000): STR LNK, SP, 0H |
06D5 | o(A0E00004): STR R0, SP, 4H |
06D6 | o(A1E00008): STR R1, SP, 8H |
06D7 | o(A2E0000C): STR R2, SP, CH |
06D8 | p(40000020): MOV R0, R0, 20H |
06D9 | p(A0E00010): STR R0, SP, 10H |
06DA | q(40000000): MOV R0, R0, 0H |
06DB | q(A0E00014): STR R0, SP, 14H |
06DC | r(80E00004): LDR R0, SP, 4H |
06DD | r(81E00008): LDR R1, SP, 8H |
06DE | s(42E80018): ADD R2, SP, 18H |
06DF | t(F7FFFE98): BL -360 [0578H] |
| WHILE b >= 80H DOu y := ROR(y + b-v80H,w 7);x DEC(n, 7);y ReadByte(R,z b)a ENDb ; |
06E0 | u(90E00018): LDR R0, SP, 18H |
06E1 | u(40090080): SUB R0, R0, 80H |
06E2 | u(E500000E): BLT 14 [06F1H] |
06E3 | v(80E00014): LDR R0, SP, 14H |
06E4 | v(91E00018): LDR R1, SP, 18H |
06E5 | v(00080001): ADD R0, R0, R1 |
06E6 | w(40090080): SUB R0, R0, 80H |
06E7 | x(40030007): ROR R0, R0, 7H |
06E8 | x(A0E00014): STR R0, SP, 14H |
06E9 | y(80E00010): LDR R0, SP, 10H |
06EA | y(40090007): SUB R0, R0, 7H |
06EB | y(A0E00010): STR R0, SP, 10H |
06EC | z(80E00004): LDR R0, SP, 4H |
06ED | z(81E00008): LDR R1, SP, 8H |
06EE | a(42E80018): ADD R2, SP, 18H |
06EF | b(F7FFFE88): BL -376 [0578H] |
06F0 | b(E7FFFFEF): B -17 [06E0H] |
| IF n <= 4 THENc x := ROR(y + b MOD 10H,d 4) ELSEe xf := ASR(ROR(y + b,g 7),h n-7)i ENDj |
06F1 | c(80E00010): LDR R0, SP, 10H |
06F2 | c(40090004): SUB R0, R0, 4H |
06F3 | c(EE000008): BGT 8 [06FCH] |
06F4 | d(90E00018): LDR R0, SP, 18H |
06F5 | d(4004000F): AND R0, R0, FH |
06F6 | d(81E00014): LDR R1, SP, 14H |
06F7 | d(00180000): ADD R0, R1, R0 |
06F8 | e(40030004): ROR R0, R0, 4H |
06F9 | e(81E0000C): LDR R1, SP, CH |
06FA | e(A0100000): STR R0, R1, 0H |
06FB | f(E7000009): B 9 [0705H] |
06FC | g(80E00014): LDR R0, SP, 14H |
06FD | g(91E00018): LDR R1, SP, 18H |
06FE | g(00080001): ADD R0, R0, R1 |
06FF | h(40030007): ROR R0, R0, 7H |
0700 | i(81E00010): LDR R1, SP, 10H |
0701 | i(41190007): SUB R1, R1, 7H |
0702 | j(00020001): ASR R0, R0, R1 |
0703 | j(81E0000C): LDR R1, SP, CH |
0704 | j(A0100000): STR R0, R1, 0H |
| ENDk ReadNum; |
0705 | k(8FE00000): LDR LNK, SP, 0H |
0706 | k(4EE8001C): ADD SP, SP, 1CH |
0707 | k(C700000F): B LNK |
| |
| (*---------------------------Write---------------------------*) |
| |
| PROCEDURE NewExt(f: File); |
| VAR i, k: INTEGER; ext: Index; |
| BEGINl k := (f.alengm - STS)n DIV XS;o |
0708 | l(4EE90014): SUB SP, SP, 14H |
0709 | l(AFE00000): STR LNK, SP, 0H |
070A | l(A0E00004): STR R0, SP, 4H |
070B | m(80E00004): LDR R0, SP, 4H |
070C | m(D132B34C): BLEQ MT [trap=4, pos=12979] |
070D | n(80000008): LDR R0, R0, 8H |
070E | n(40090040): SUB R0, R0, 40H |
070F | o(40020008): ASR R0, R0, 8H |
0710 | o(A0E0000C): STR R0, SP, CH |
| NEW(ext);p ext.adrq := 0;r ext.mods := TRUE;t f.extu[k]v := ext;w i := XS;x |
0711 | p(40E80010): ADD R0, SP, 10H |
0712 | p .FIXUP D |
0712 | p(8D0002D3): LDR SB, MT, MOD0 [Files] |
0713 | p(41D8007C): ADD R1, SB, 7CH [data] |
0714 | p(D732D00C): BL MT [trap=0, pos=13008] |
0715 | q(80E00010): LDR R0, SP, 10H |
0716 | q(D132D84C): BLEQ MT [trap=4, pos=13016] |
0717 | r(41000000): MOV R1, R0, 0H |
0718 | r(A1000000): STR R1, R0, 0H |
0719 | s(80E00010): LDR R0, SP, 10H |
071A | s(D132E64C): BLEQ MT [trap=4, pos=13030] |
071B | t(41000001): MOV R1, R0, 1H |
071C | t(B1000004): STR R1, R0, 4H |
071D | u(80E00004): LDR R0, SP, 4H |
071E | u(D132F54C): BLEQ MT [trap=4, pos=13045] |
071F | v(81E0000C): LDR R1, SP, CH |
0720 | v(4219000C): SUB R2, R1, CH |
0721 | v(DA32F81C): BLCC MT [trap=1, pos=13048] |
0722 | v(41110002): LSL R1, R1, 2H |
0723 | v(00080001): ADD R0, R0, R1 |
0724 | w(81E00010): LDR R1, SP, 10H |
0725 | w(A1000040): STR R1, R0, 40H |
0726 | x(40000100): MOV R0, R0, 100H |
0727 | x(A0E00008): STR R0, SP, 8H |
| REPEAT DEC(i);y ext.secz[i]a := 0 UNTILb i = 0 |
0728 | y(80E00008): LDR R0, SP, 8H |
0729 | y(40090001): SUB R0, R0, 1H |
072A | y(A0E00008): STR R0, SP, 8H |
072B | z(80E00010): LDR R0, SP, 10H |
072C | z(D133244C): BLEQ MT [trap=4, pos=13092] |
072D | a(81E00008): LDR R1, SP, 8H |
072E | a(42190100): SUB R2, R1, 100H |
072F | a(DA33271C): BLCC MT [trap=1, pos=13095] |
0730 | a(41110002): LSL R1, R1, 2H |
0731 | a(00080001): ADD R0, R0, R1 |
0732 | b(41000000): MOV R1, R0, 0H |
0733 | b(A1000008): STR R1, R0, 8H |
| ENDc NewExt; |
0734 | c(80E00008): LDR R0, SP, 8H |
0735 | c(E9FFFFF2): BNE -14 [0728H] |
0736 | c(8FE00000): LDR LNK, SP, 0H |
0737 | c(4EE80014): ADD SP, SP, 14H |
0738 | c(C700000F): B LNK |
| |
| PROCEDURE WriteByte*(VAR r: Rider; x: BYTE); |
| VAR f: File; buf: Buffer; |
| BEGINd |
0739 | d .PROC 22 |
0739 | d(4EE90018): SUB SP, SP, 18H |
073A | d(AFE00000): STR LNK, SP, 0H |
073B | d(A0E00004): STR R0, SP, 4H |
073C | d(A1E00008): STR R1, SP, 8H |
073D | d(A2E0000C): STR R2, SP, CH |
| IF r.apos # r.buf.apose THENf r.buf := GetBuf(r.file,g r.apos)h;i END ; |
073E | e(80E00004): LDR R0, SP, 4H |
073F | e(80000014): LDR R0, R0, 14H |
0740 | e(D133B74C): BLEQ MT [trap=4, pos=13239] |
0741 | f(81E00004): LDR R1, SP, 4H |
0742 | f(8110000C): LDR R1, R1, CH |
0743 | f(80000000): LDR R0, R0, 0H |
0744 | f(01190000): SUB R1, R1, R0 |
0745 | f(E1000007): BEQ 7 [074DH] |
0746 | g(80E00004): LDR R0, SP, 4H |
0747 | g(80000008): LDR R0, R0, 8H |
0748 | h(81E00004): LDR R1, SP, 4H |
0749 | h(8110000C): LDR R1, R1, CH |
074A | i(F7FFFC05): BL -1019 [0350H] |
074B | i(81E00004): LDR R1, SP, 4H |
074C | i(A0100014): STR R0, R1, 14H |
| IF r.bpos >= r.buf.limj THENk |
074D | j(80E00004): LDR R0, SP, 4H |
074E | j(80000014): LDR R0, R0, 14H |
074F | j(D133FE4C): BLEQ MT [trap=4, pos=13310] |
0750 | k(81E00004): LDR R1, SP, 4H |
0751 | k(81100010): LDR R1, R1, 10H |
0752 | k(80000004): LDR R0, R0, 4H |
0753 | k(01190000): SUB R1, R1, R0 |
0754 | k(E5000064): BLT 100 [07B9H] |
| IF r.bpos < SS THENl |
0755 | l(80E00004): LDR R0, SP, 4H |
0756 | l(80000010): LDR R0, R0, 10H |
0757 | l(40090400): SUB R0, R0, 400H |
0758 | l(ED000014): BGE 20 [076DH] |
| INC(r.buf.limm);n INC(r.file.blengo);p r.file.modHq := TRUE |
0759 | m(80E00004): LDR R0, SP, 4H |
075A | m(80000014): LDR R0, R0, 14H |
075B | m(D134334C): BLEQ MT [trap=4, pos=13363] |
075C | n(40080004): ADD R0, R0, 4H |
075D | n(81000000): LDR R1, R0, 0H |
075E | n(41180001): ADD R1, R1, 1H |
075F | n(A1000000): STR R1, R0, 0H |
0760 | o(80E00004): LDR R0, SP, 4H |
0761 | o(80000008): LDR R0, R0, 8H |
0762 | o(D134464C): BLEQ MT [trap=4, pos=13382] |
0763 | p(4008000C): ADD R0, R0, CH |
0764 | p(81000000): LDR R1, R0, 0H |
0765 | p(41180001): ADD R1, R1, 1H |
0766 | p(A1000000): STR R1, R0, 0H |
0767 | q(80E00004): LDR R0, SP, 4H |
0768 | q(80000008): LDR R0, R0, 8H |
0769 | q(D134544C): BLEQ MT [trap=4, pos=13396] |
| ELSEr fs := r.file;t WriteBuf(f,u r.buf)v;w INC(r.apos);x buf := Buf(r.file,y r.apos)z;a |
076A | r(41000001): MOV R1, R0, 1H |
076B | r(B1000010): STR R1, R0, 10H |
076C | s(E700004C): B 76 [07B9H] |
076D | t(80E00004): LDR R0, SP, 4H |
076E | t(80000008): LDR R0, R0, 8H |
076F | t(A0E00010): STR R0, SP, 10H |
0770 | u(80E00010): LDR R0, SP, 10H |
0771 | v(81E00004): LDR R1, SP, 4H |
0772 | v(81100014): LDR R1, R1, 14H |
0773 | w(F7FFFB16): BL -1258 [028AH] |
0774 | x(80E00004): LDR R0, SP, 4H |
0775 | x(4008000C): ADD R0, R0, CH |
0776 | x(81000000): LDR R1, R0, 0H |
0777 | x(41180001): ADD R1, R1, 1H |
0778 | x(A1000000): STR R1, R0, 0H |
0779 | y(80E00004): LDR R0, SP, 4H |
077A | y(80000008): LDR R0, R0, 8H |
077B | z(81E00004): LDR R1, SP, 4H |
077C | z(8110000C): LDR R1, R1, CH |
077D | a(F7FFFBAB): BL -1109 [0329H] |
077E | a(A0E00014): STR R0, SP, 14H |
| IF buf = NIL THENb |
077F | b(80E00014): LDR R0, SP, 14H |
0780 | b(E9000032): BNE 50 [07B3H] |
| IF r.apos <= f.alengc THENd ReadBuf(f,e r.buf,f r.apos)g |
0781 | c(80E00010): LDR R0, SP, 10H |
0782 | c(D134EA4C): BLEQ MT [trap=4, pos=13546] |
0783 | d(81E00004): LDR R1, SP, 4H |
0784 | d(8110000C): LDR R1, R1, CH |
0785 | d(80000008): LDR R0, R0, 8H |
0786 | d(01190000): SUB R1, R1, R0 |
0787 | d(EE000007): BGT 7 [078FH] |
0788 | e(80E00010): LDR R0, SP, 10H |
0789 | f(81E00004): LDR R1, SP, 4H |
078A | f(81100014): LDR R1, R1, 14H |
078B | g(82E00004): LDR R2, SP, 4H |
078C | g(8220000C): LDR R2, R2, CH |
| ELSEh ri.buf.aposj := r.apos;k r.buf.liml := 1;m f.alengn := f.alengo + 1;p f.blengq := 1;r f.modHs := TRUE;t |
078D | h(F7FFFAB5): BL -1355 [0243H] |
078E | i(E7000023): B 35 [07B2H] |
078F | j(80E00004): LDR R0, SP, 4H |
0790 | j(80000014): LDR R0, R0, 14H |
0791 | j(D135234C): BLEQ MT [trap=4, pos=13603] |
0792 | k(81E00004): LDR R1, SP, 4H |
0793 | k(8110000C): LDR R1, R1, CH |
0794 | k(A1000000): STR R1, R0, 0H |
0795 | l(80E00004): LDR R0, SP, 4H |
0796 | l(80000014): LDR R0, R0, 14H |
0797 | l(D135384C): BLEQ MT [trap=4, pos=13624] |
0798 | m(41000001): MOV R1, R0, 1H |
0799 | m(A1000004): STR R1, R0, 4H |
079A | n(80E00010): LDR R0, SP, 10H |
079B | n(D135464C): BLEQ MT [trap=4, pos=13638] |
079C | o(81E00010): LDR R1, SP, 10H |
079D | o(D135514C): BLEQ MT [trap=4, pos=13649] |
079E | p(81100008): LDR R1, R1, 8H |
079F | p(41180001): ADD R1, R1, 1H |
07A0 | p(A1000008): STR R1, R0, 8H |
07A1 | q(80E00010): LDR R0, SP, 10H |
07A2 | q(D1355E4C): BLEQ MT [trap=4, pos=13662] |
07A3 | r(41000001): MOV R1, R0, 1H |
07A4 | r(A100000C): STR R1, R0, CH |
07A5 | s(80E00010): LDR R0, SP, 10H |
07A6 | s(D1356B4C): BLEQ MT [trap=4, pos=13675] |
07A7 | t(41000001): MOV R1, R0, 1H |
07A8 | t(B1000010): STR R1, R0, 10H |
| IF (f.alengu - STS)v MOD XS =w 0 THENx NewExt(f)y ENDz |
07A9 | u(80E00010): LDR R0, SP, 10H |
07AA | u(D1358C4C): BLEQ MT [trap=4, pos=13708] |
07AB | v(80000008): LDR R0, R0, 8H |
07AC | v(40090040): SUB R0, R0, 40H |
07AD | w(400400FF): AND R0, R0, FFH |
07AE | x(40090000): SUB R0, R0, 0H |
07AF | x(E9000002): BNE 2 [07B2H] |
07B0 | y(80E00010): LDR R0, SP, 10H |
07B1 | z(F7FFFF56): BL -170 [0708H] |
| END |
| ELSE ra.buf := buf |
07B2 | a(E7000003): B 3 [07B6H] |
| ENDb ; |
07B3 | b(80E00014): LDR R0, SP, 14H |
07B4 | b(81E00004): LDR R1, SP, 4H |
07B5 | b(A0100014): STR R0, R1, 14H |
| r.bpos := 0 |
| ENDc |
07B6 | c(40000000): MOV R0, R0, 0H |
07B7 | c(81E00004): LDR R1, SP, 4H |
07B8 | c(A0100010): STR R0, R1, 10H |
| END ; |
| r.buf.datad[r.bpos]e := x;f INC(r.bpos);g r.buf.modh := TRUE |
07B9 | d(80E00004): LDR R0, SP, 4H |
07BA | d(80000014): LDR R0, R0, 14H |
07BB | d(D1361E4C): BLEQ MT [trap=4, pos=13854] |
07BC | e(81E00004): LDR R1, SP, 4H |
07BD | e(81100010): LDR R1, R1, 10H |
07BE | e(42190400): SUB R2, R1, 400H |
07BF | e(DA36261C): BLCC MT [trap=1, pos=13862] |
07C0 | e(00080001): ADD R0, R0, R1 |
07C1 | f(91E0000C): LDR R1, SP, CH |
07C2 | f(B1000010): STR R1, R0, 10H |
07C3 | g(80E00004): LDR R0, SP, 4H |
07C4 | g(40080010): ADD R0, R0, 10H |
07C5 | g(81000000): LDR R1, R0, 0H |
07C6 | g(41180001): ADD R1, R1, 1H |
07C7 | g(A1000000): STR R1, R0, 0H |
07C8 | h(80E00004): LDR R0, SP, 4H |
07C9 | h(80000014): LDR R0, R0, 14H |
07CA | h(D136434C): BLEQ MT [trap=4, pos=13891] |
| ENDi WriteByte; |
07CB | i(41000001): MOV R1, R0, 1H |
07CC | i(B1000008): STR R1, R0, 8H |
07CD | i(8FE00000): LDR LNK, SP, 0H |
07CE | i(4EE80018): ADD SP, SP, 18H |
07CF | i(C700000F): B LNK |
| |
| PROCEDURE WriteBytes*(VAR r: Rider; x: ARRAY OF BYTE; n: INTEGER); |
| VAR i: INTEGER; |
| BEGINj i := 0;k (*this implementation is to be improed*) |
07D0 | j .PROC 23 |
07D0 | j(4EE9001C): SUB SP, SP, 1CH |
07D1 | j(AFE00000): STR LNK, SP, 0H |
07D2 | j(A0E00004): STR R0, SP, 4H |
07D3 | j(A1E00008): STR R1, SP, 8H |
07D4 | j(A2E0000C): STR R2, SP, CH |
07D5 | j(A3E00010): STR R3, SP, 10H |
07D6 | j(A4E00014): STR R4, SP, 14H |
07D7 | k(40000000): MOV R0, R0, 0H |
07D8 | k(A0E00018): STR R0, SP, 18H |
| WHILE i < n DOl WriteByte(r,m x[i]n)o;p INC(i) ENDq |
07D9 | l(80E00018): LDR R0, SP, 18H |
07DA | l(81E00014): LDR R1, SP, 14H |
07DB | l(00090001): SUB R0, R0, R1 |
07DC | l(ED00000E): BGE 14 [07EBH] |
07DD | m(80E00004): LDR R0, SP, 4H |
07DE | m(81E00008): LDR R1, SP, 8H |
07DF | n(82E00018): LDR R2, SP, 18H |
07E0 | n(83E00010): LDR R3, SP, 10H |
07E1 | n(03290003): SUB R3, R2, R3 |
07E2 | n(DA37141C): BLCC MT [trap=1, pos=14100] |
07E3 | n(83E0000C): LDR R3, SP, CH |
07E4 | n(02380002): ADD R2, R3, R2 |
07E5 | o(92200000): LDR R2, R2, 0H |
07E6 | p(F7FFFF52): BL -174 [0739H] |
07E7 | q(80E00018): LDR R0, SP, 18H |
07E8 | q(40080001): ADD R0, R0, 1H |
07E9 | q(A0E00018): STR R0, SP, 18H |
07EA | q(E7FFFFEE): B -18 [07D9H] |
| ENDr WriteBytes; |
07EB | r(8FE00000): LDR LNK, SP, 0H |
07EC | r(4EE8001C): ADD SP, SP, 1CH |
07ED | r(C700000F): B LNK |
| |
| PROCEDURE Write*(VAR r: Rider; ch: CHAR); |
| VAR f: File; buf: Buffer; |
| BEGINs (*same as WriteByte*) |
07EE | s .PROC 24 |
07EE | s(4EE90018): SUB SP, SP, 18H |
07EF | s(AFE00000): STR LNK, SP, 0H |
07F0 | s(A0E00004): STR R0, SP, 4H |
07F1 | s(A1E00008): STR R1, SP, 8H |
07F2 | s(A2E0000C): STR R2, SP, CH |
| IF r.apos # r.buf.apost THENu r.buf := GetBuf(r.file,v r.apos)w;x END ; |
07F3 | t(80E00004): LDR R0, SP, 4H |
07F4 | t(80000014): LDR R0, R0, 14H |
07F5 | t(D137B74C): BLEQ MT [trap=4, pos=14263] |
07F6 | u(81E00004): LDR R1, SP, 4H |
07F7 | u(8110000C): LDR R1, R1, CH |
07F8 | u(80000000): LDR R0, R0, 0H |
07F9 | u(01190000): SUB R1, R1, R0 |
07FA | u(E1000007): BEQ 7 [0802H] |
07FB | v(80E00004): LDR R0, SP, 4H |
07FC | v(80000008): LDR R0, R0, 8H |
07FD | w(81E00004): LDR R1, SP, 4H |
07FE | w(8110000C): LDR R1, R1, CH |
07FF | x(F7FFFB50): BL -1200 [0350H] |
0800 | x(81E00004): LDR R1, SP, 4H |
0801 | x(A0100014): STR R0, R1, 14H |
| IF r.bpos >= r.buf.limy THENz |
0802 | y(80E00004): LDR R0, SP, 4H |
0803 | y(80000014): LDR R0, R0, 14H |
0804 | y(D137FE4C): BLEQ MT [trap=4, pos=14334] |
0805 | z(81E00004): LDR R1, SP, 4H |
0806 | z(81100010): LDR R1, R1, 10H |
0807 | z(80000004): LDR R0, R0, 4H |
0808 | z(01190000): SUB R1, R1, R0 |
0809 | z(E5000064): BLT 100 [086EH] |
| IF r.bpos < SS THENa |
080A | a(80E00004): LDR R0, SP, 4H |
080B | a(80000010): LDR R0, R0, 10H |
080C | a(40090400): SUB R0, R0, 400H |
080D | a(ED000014): BGE 20 [0822H] |
| INC(r.buf.limb);c INC(r.file.blengd);e r.file.modHf := TRUE |
080E | b(80E00004): LDR R0, SP, 4H |
080F | b(80000014): LDR R0, R0, 14H |
0810 | b(D138334C): BLEQ MT [trap=4, pos=14387] |
0811 | c(40080004): ADD R0, R0, 4H |
0812 | c(81000000): LDR R1, R0, 0H |
0813 | c(41180001): ADD R1, R1, 1H |
0814 | c(A1000000): STR R1, R0, 0H |
0815 | d(80E00004): LDR R0, SP, 4H |
0816 | d(80000008): LDR R0, R0, 8H |
0817 | d(D138464C): BLEQ MT [trap=4, pos=14406] |
0818 | e(4008000C): ADD R0, R0, CH |
0819 | e(81000000): LDR R1, R0, 0H |
081A | e(41180001): ADD R1, R1, 1H |
081B | e(A1000000): STR R1, R0, 0H |
081C | f(80E00004): LDR R0, SP, 4H |
081D | f(80000008): LDR R0, R0, 8H |
081E | f(D138544C): BLEQ MT [trap=4, pos=14420] |
| ELSEg fh := r.file;i WriteBuf(f,j r.buf)k;l INC(r.apos);m buf := Buf(r.file,n r.apos)o;p |
081F | g(41000001): MOV R1, R0, 1H |
0820 | g(B1000010): STR R1, R0, 10H |
0821 | h(E700004C): B 76 [086EH] |
0822 | i(80E00004): LDR R0, SP, 4H |
0823 | i(80000008): LDR R0, R0, 8H |
0824 | i(A0E00010): STR R0, SP, 10H |
0825 | j(80E00010): LDR R0, SP, 10H |
0826 | k(81E00004): LDR R1, SP, 4H |
0827 | k(81100014): LDR R1, R1, 14H |
0828 | l(F7FFFA61): BL -1439 [028AH] |
0829 | m(80E00004): LDR R0, SP, 4H |
082A | m(4008000C): ADD R0, R0, CH |
082B | m(81000000): LDR R1, R0, 0H |
082C | m(41180001): ADD R1, R1, 1H |
082D | m(A1000000): STR R1, R0, 0H |
082E | n(80E00004): LDR R0, SP, 4H |
082F | n(80000008): LDR R0, R0, 8H |
0830 | o(81E00004): LDR R1, SP, 4H |
0831 | o(8110000C): LDR R1, R1, CH |
0832 | p(F7FFFAF6): BL -1290 [0329H] |
0833 | p(A0E00014): STR R0, SP, 14H |
| IF buf = NIL THENq |
0834 | q(80E00014): LDR R0, SP, 14H |
0835 | q(E9000032): BNE 50 [0868H] |
| IF r.apos <= f.alengr THENs ReadBuf(f,t r.buf,u r.apos)v |
0836 | r(80E00010): LDR R0, SP, 10H |
0837 | r(D138EA4C): BLEQ MT [trap=4, pos=14570] |
0838 | s(81E00004): LDR R1, SP, 4H |
0839 | s(8110000C): LDR R1, R1, CH |
083A | s(80000008): LDR R0, R0, 8H |
083B | s(01190000): SUB R1, R1, R0 |
083C | s(EE000007): BGT 7 [0844H] |
083D | t(80E00010): LDR R0, SP, 10H |
083E | u(81E00004): LDR R1, SP, 4H |
083F | u(81100014): LDR R1, R1, 14H |
0840 | v(82E00004): LDR R2, SP, 4H |
0841 | v(8220000C): LDR R2, R2, CH |
| ELSEw rx.buf.aposy := r.apos;z r.buf.lima := 1;b f.alengc := f.alengd + 1;e f.blengf := 1;g f.modHh := TRUE;i |
0842 | w(F7FFFA00): BL -1536 [0243H] |
0843 | x(E7000023): B 35 [0867H] |
0844 | y(80E00004): LDR R0, SP, 4H |
0845 | y(80000014): LDR R0, R0, 14H |
0846 | y(D139234C): BLEQ MT [trap=4, pos=14627] |
0847 | z(81E00004): LDR R1, SP, 4H |
0848 | z(8110000C): LDR R1, R1, CH |
0849 | z(A1000000): STR R1, R0, 0H |
084A | a(80E00004): LDR R0, SP, 4H |
084B | a(80000014): LDR R0, R0, 14H |
084C | a(D139384C): BLEQ MT [trap=4, pos=14648] |
084D | b(41000001): MOV R1, R0, 1H |
084E | b(A1000004): STR R1, R0, 4H |
084F | c(80E00010): LDR R0, SP, 10H |
0850 | c(D139464C): BLEQ MT [trap=4, pos=14662] |
0851 | d(81E00010): LDR R1, SP, 10H |
0852 | d(D139514C): BLEQ MT [trap=4, pos=14673] |
0853 | e(81100008): LDR R1, R1, 8H |
0854 | e(41180001): ADD R1, R1, 1H |
0855 | e(A1000008): STR R1, R0, 8H |
0856 | f(80E00010): LDR R0, SP, 10H |
0857 | f(D1395E4C): BLEQ MT [trap=4, pos=14686] |
0858 | g(41000001): MOV R1, R0, 1H |
0859 | g(A100000C): STR R1, R0, CH |
085A | h(80E00010): LDR R0, SP, 10H |
085B | h(D1396B4C): BLEQ MT [trap=4, pos=14699] |
085C | i(41000001): MOV R1, R0, 1H |
085D | i(B1000010): STR R1, R0, 10H |
| IF (f.alengj - STS)k MOD XS =l 0 THENm NewExt(f)n ENDo |
085E | j(80E00010): LDR R0, SP, 10H |
085F | j(D1398C4C): BLEQ MT [trap=4, pos=14732] |
0860 | k(80000008): LDR R0, R0, 8H |
0861 | k(40090040): SUB R0, R0, 40H |
0862 | l(400400FF): AND R0, R0, FFH |
0863 | m(40090000): SUB R0, R0, 0H |
0864 | m(E9000002): BNE 2 [0867H] |
0865 | n(80E00010): LDR R0, SP, 10H |
0866 | o(F7FFFEA1): BL -351 [0708H] |
| END |
| ELSE rp.buf := buf |
0867 | p(E7000003): B 3 [086BH] |
| ENDq ; |
0868 | q(80E00014): LDR R0, SP, 14H |
0869 | q(81E00004): LDR R1, SP, 4H |
086A | q(A0100014): STR R0, R1, 14H |
| r.bpos := 0 |
| ENDr |
086B | r(40000000): MOV R0, R0, 0H |
086C | r(81E00004): LDR R1, SP, 4H |
086D | r(A0100010): STR R0, R1, 10H |
| END ; |
| r.buf.datas[r.bpos]t := ORD(ch);u INC(r.bpos);v r.buf.modw := TRUE |
086E | s(80E00004): LDR R0, SP, 4H |
086F | s(80000014): LDR R0, R0, 14H |
0870 | s(D13A1E4C): BLEQ MT [trap=4, pos=14878] |
0871 | t(81E00004): LDR R1, SP, 4H |
0872 | t(81100010): LDR R1, R1, 10H |
0873 | t(42190400): SUB R2, R1, 400H |
0874 | t(DA3A261C): BLCC MT [trap=1, pos=14886] |
0875 | t(00080001): ADD R0, R0, R1 |
0876 | u(91E0000C): LDR R1, SP, CH |
0877 | u(B1000010): STR R1, R0, 10H |
0878 | v(80E00004): LDR R0, SP, 4H |
0879 | v(40080010): ADD R0, R0, 10H |
087A | v(81000000): LDR R1, R0, 0H |
087B | v(41180001): ADD R1, R1, 1H |
087C | v(A1000000): STR R1, R0, 0H |
087D | w(80E00004): LDR R0, SP, 4H |
087E | w(80000014): LDR R0, R0, 14H |
087F | w(D13A494C): BLEQ MT [trap=4, pos=14921] |
| ENDx Write; |
0880 | x(41000001): MOV R1, R0, 1H |
0881 | x(B1000008): STR R1, R0, 8H |
0882 | x(8FE00000): LDR LNK, SP, 0H |
0883 | x(4EE80018): ADD SP, SP, 18H |
0884 | x(C700000F): B LNK |
| |
| PROCEDURE WriteInt*(VAR R: Rider; x: INTEGER); |
| BEGINy WriteByte(R,z x MOD 100H)a;b |
0885 | y .PROC 25 |
0885 | y(4EE90010): SUB SP, SP, 10H |
0886 | y(AFE00000): STR LNK, SP, 0H |
0887 | y(A0E00004): STR R0, SP, 4H |
0888 | y(A1E00008): STR R1, SP, 8H |
0889 | y(A2E0000C): STR R2, SP, CH |
088A | z(80E00004): LDR R0, SP, 4H |
088B | z(81E00008): LDR R1, SP, 8H |
088C | a(82E0000C): LDR R2, SP, CH |
088D | a(422400FF): AND R2, R2, FFH |
088E | b(F7FFFEAA): BL -342 [0739H] |
| WriteByte(R,c x DIV 100H MODd 100H)e;f |
088F | c(80E00004): LDR R0, SP, 4H |
0890 | c(81E00008): LDR R1, SP, 8H |
0891 | d(82E0000C): LDR R2, SP, CH |
0892 | d(42220008): ASR R2, R2, 8H |
0893 | e(422400FF): AND R2, R2, FFH |
0894 | f(F7FFFEA4): BL -348 [0739H] |
| WriteByte(R,g x DIV 10000H MODh 100H)i;j |
0895 | g(80E00004): LDR R0, SP, 4H |
0896 | g(81E00008): LDR R1, SP, 8H |
0897 | h(82E0000C): LDR R2, SP, CH |
0898 | h(42220010): ASR R2, R2, 10H |
0899 | i(422400FF): AND R2, R2, FFH |
089A | j(F7FFFE9E): BL -354 [0739H] |
| WriteByte(R,k x DIV 1000000H MODl 100H)m |
089B | k(80E00004): LDR R0, SP, 4H |
089C | k(81E00008): LDR R1, SP, 8H |
089D | l(82E0000C): LDR R2, SP, CH |
089E | l(42220018): ASR R2, R2, 18H |
089F | m(422400FF): AND R2, R2, FFH |
| ENDn WriteInt; |
08A0 | n(F7FFFE98): BL -360 [0739H] |
08A1 | n(8FE00000): LDR LNK, SP, 0H |
08A2 | n(4EE80010): ADD SP, SP, 10H |
08A3 | n(C700000F): B LNK |
| |
| PROCEDURE WriteSet*(VAR R: Rider; s: SET); |
| BEGINo WriteInt(R,p ORD(s))q |
08A4 | o .PROC 26 |
08A4 | o(4EE90010): SUB SP, SP, 10H |
08A5 | o(AFE00000): STR LNK, SP, 0H |
08A6 | o(A0E00004): STR R0, SP, 4H |
08A7 | o(A1E00008): STR R1, SP, 8H |
08A8 | o(A2E0000C): STR R2, SP, CH |
08A9 | p(80E00004): LDR R0, SP, 4H |
08AA | p(81E00008): LDR R1, SP, 8H |
08AB | q(82E0000C): LDR R2, SP, CH |
| ENDr WriteSet; |
08AC | r(F7FFFFD8): BL -40 [0885H] |
08AD | r(8FE00000): LDR LNK, SP, 0H |
08AE | r(4EE80010): ADD SP, SP, 10H |
08AF | r(C700000F): B LNK |
| |
| PROCEDURE WriteReal*(VAR R: Rider; x: REAL); |
| BEGINs WriteInt(R,t ORD(x))u |
08B0 | s .PROC 27 |
08B0 | s(4EE90010): SUB SP, SP, 10H |
08B1 | s(AFE00000): STR LNK, SP, 0H |
08B2 | s(A0E00004): STR R0, SP, 4H |
08B3 | s(A1E00008): STR R1, SP, 8H |
08B4 | s(A2E0000C): STR R2, SP, CH |
08B5 | t(80E00004): LDR R0, SP, 4H |
08B6 | t(81E00008): LDR R1, SP, 8H |
08B7 | u(82E0000C): LDR R2, SP, CH |
| ENDv WriteReal; |
08B8 | v(F7FFFFCC): BL -52 [0885H] |
08B9 | v(8FE00000): LDR LNK, SP, 0H |
08BA | v(4EE80010): ADD SP, SP, 10H |
08BB | v(C700000F): B LNK |
| |
| PROCEDURE WriteString*(VAR R: Rider; x: ARRAY OF CHAR); |
| VAR i: INTEGER; ch: CHAR; |
| BEGINw i := 0;x |
08BC | w .PROC 28 |
08BC | w(4EE9001C): SUB SP, SP, 1CH |
08BD | w(AFE00000): STR LNK, SP, 0H |
08BE | w(A0E00004): STR R0, SP, 4H |
08BF | w(A1E00008): STR R1, SP, 8H |
08C0 | w(A2E0000C): STR R2, SP, CH |
08C1 | w(A3E00010): STR R3, SP, 10H |
08C2 | x(40000000): MOV R0, R0, 0H |
08C3 | x(A0E00014): STR R0, SP, 14H |
| REPEAT ch := x[i]y;z Write(R,a ch)b;c INC(i) UNTILd ch = 0X |
08C4 | y(80E00014): LDR R0, SP, 14H |
08C5 | y(81E00010): LDR R1, SP, 10H |
08C6 | y(01090001): SUB R1, R0, R1 |
08C7 | y(DA3C731C): BLCC MT [trap=1, pos=15475] |
08C8 | y(81E0000C): LDR R1, SP, CH |
08C9 | y(00180000): ADD R0, R1, R0 |
08CA | z(90000000): LDR R0, R0, 0H |
08CB | z(B0E00018): STR R0, SP, 18H |
08CC | a(80E00004): LDR R0, SP, 4H |
08CD | a(81E00008): LDR R1, SP, 8H |
08CE | b(92E00018): LDR R2, SP, 18H |
08CF | c(F7FFFF1E): BL -226 [07EEH] |
08D0 | d(80E00014): LDR R0, SP, 14H |
08D1 | d(40080001): ADD R0, R0, 1H |
08D2 | d(A0E00014): STR R0, SP, 14H |
| ENDe WriteString; |
08D3 | e(90E00018): LDR R0, SP, 18H |
08D4 | e(E9FFFFEF): BNE -17 [08C4H] |
08D5 | e(8FE00000): LDR LNK, SP, 0H |
08D6 | e(4EE8001C): ADD SP, SP, 1CH |
08D7 | e(C700000F): B LNK |
| |
| PROCEDURE WriteNum*(VAR R: Rider; x: INTEGER); |
| BEGINf |
08D8 | f .PROC 29 |
08D8 | f(4EE90010): SUB SP, SP, 10H |
08D9 | f(AFE00000): STR LNK, SP, 0H |
08DA | f(A0E00004): STR R0, SP, 4H |
08DB | f(A1E00008): STR R1, SP, 8H |
08DC | f(A2E0000C): STR R2, SP, CH |
| WHILE (x < -40H)g OR (hx >= 40H)i DOj WriteByte(R,k x MOD 80H +l 80H)m;n x := ASR(x, 7) ENDo ; |
08DD | g(80E0000C): LDR R0, SP, CH |
08DE | g(5009FFC0): SUB R0, R0, FFFFFFC0H |
08DF | h(E5000003): BLT 3 [08E3H] |
08E0 | i(80E0000C): LDR R0, SP, CH |
08E1 | i(40090040): SUB R0, R0, 40H |
08E2 | j(E500000A): BLT 10 [08EDH] |
08E3 | k(80E00004): LDR R0, SP, 4H |
08E4 | k(81E00008): LDR R1, SP, 8H |
08E5 | l(82E0000C): LDR R2, SP, CH |
08E6 | l(4224007F): AND R2, R2, 7FH |
08E7 | m(42280080): ADD R2, R2, 80H |
08E8 | n(F7FFFE50): BL -432 [0739H] |
08E9 | o(80E0000C): LDR R0, SP, CH |
08EA | o(40020007): ASR R0, R0, 7H |
08EB | o(A0E0000C): STR R0, SP, CH |
08EC | o(E7FFFFF0): B -16 [08DDH] |
| WriteByte(R,p x MOD 80H)q |
08ED | p(80E00004): LDR R0, SP, 4H |
08EE | p(81E00008): LDR R1, SP, 8H |
08EF | q(82E0000C): LDR R2, SP, CH |
08F0 | q(4224007F): AND R2, R2, 7FH |
| ENDr WriteNum; |
08F1 | r(F7FFFE47): BL -441 [0739H] |
08F2 | r(8FE00000): LDR LNK, SP, 0H |
08F3 | r(4EE80010): ADD SP, SP, 10H |
08F4 | r(C700000F): B LNK |
| |
| (*---------------------------System use---------------------------*) |
| |
| PROCEDURE Init*; |
| BEGINs root := 0;t Kernel.Init;u FileDir.Init |
08F5 | s .PROC 30 |
08F5 | s .COMMAND Init |
08F5 | s(4EE90004): SUB SP, SP, 4H |
08F6 | s(AFE00000): STR LNK, SP, 0H |
08F7 | t(40000000): MOV R0, R0, 0H |
08F8 | t .FIXUP D |
08F8 | t(8D0001E6): LDR SB, MT, MOD0 [Files] |
08F9 | t(A0D00090): STR R0, SB, 90H [data] |
08FA | u .FIXUP P |
08FA | u(F7115401): BL MOD1 [Kernel] PROC21 |
| ENDv Init; |
08FB | v .FIXUP P |
08FB | v(F7208001): BL MOD2 [FileDir] PROC8 |
08FC | v(8FE00000): LDR LNK, SP, 0H |
08FD | v(4EE80004): ADD SP, SP, 4H |
08FE | v(C700000F): B LNK |
| |
| PROCEDURE RestoreList*; (*after mark phase of garbage collection*) |
| VAR f, f0: INTEGER; |
| |
| PROCEDUREw mark(f: INTEGER): INTEGER; |
08FF | w(E7000010): B 16 [0910H] |
| VAR m: INTEGER; |
| BEGINx |
0900 | x(4EE9000C): SUB SP, SP, CH |
0901 | x(AFE00000): STR LNK, SP, 0H |
0902 | x(A0E00004): STR R0, SP, 4H |
| IF f = 0 THENy m := -1 ELSEz SYSTEMa.GET(f-4,b m) ENDc ; |
0903 | y(80E00004): LDR R0, SP, 4H |
0904 | y(E9000003): BNE 3 [0908H] |
0905 | z(5000FFFF): MOV R0, R0, FFFFFFFFH |
0906 | z(A0E00008): STR R0, SP, 8H |
0907 | a(E7000004): B 4 [090CH] |
0908 | b(80E00004): LDR R0, SP, 4H |
0909 | b(40090004): SUB R0, R0, 4H |
090A | c(80000000): LDR R0, R0, 0H |
090B | c(A0E00008): STR R0, SP, 8H |
| RETURN m |
| ENDd mark; |
090C | d(80E00008): LDR R0, SP, 8H |
090D | d(8FE00000): LDR LNK, SP, 0H |
090E | d(4EE8000C): ADD SP, SP, CH |
090F | d(C700000F): B LNK |
| |
| BEGINe (*field "next" has offset 0*) |
0910 | e .PROC 31 |
0910 | e .COMMAND RestoreList |
0910 | e(4EE9000C): SUB SP, SP, CH |
0911 | e(AFE00000): STR LNK, SP, 0H |
| WHILE mark(root)f =g 0 DOh SYSTEM.GET(root, root) ENDi ; |
0912 | f .FIXUP D |
0912 | f(8D00001A): LDR SB, MT, MOD0 [Files] |
0913 | f(80D00090): LDR R0, SB, 90H [data] |
0914 | g(F7FFFFEB): BL -21 [0900H] |
0915 | h(40090000): SUB R0, R0, 0H |
0916 | h(E9000005): BNE 5 [091CH] |
0917 | i .FIXUP D |
0917 | i(8D000005): LDR SB, MT, MOD0 [Files] |
0918 | i(80D00090): LDR R0, SB, 90H [data] |
0919 | i(80000000): LDR R0, R0, 0H |
091A | i(A0D00090): STR R0, SB, 90H |
091B | i(E7FFFFF6): B -10 [0912H] |
| f := root;j |
091C | j .FIXUP D |
091C | j(8D000005): LDR SB, MT, MOD0 [Files] |
091D | j(80D00090): LDR R0, SB, 90H [data] |
091E | j(A0E00004): STR R0, SP, 4H |
| WHILE f # 0 DOk |
091F | k(80E00004): LDR R0, SP, 4H |
0920 | k(E100000F): BEQ 15 [0930H] |
| f0 := f;l |
0921 | l(80E00004): LDR R0, SP, 4H |
0922 | l(A0E00008): STR R0, SP, 8H |
| REPEAT SYSTEM.GET(f0, f0) UNTILm mark(f0)n #o 0;p |
0923 | m(80E00008): LDR R0, SP, 8H |
0924 | m(80000000): LDR R0, R0, 0H |
0925 | m(A0E00008): STR R0, SP, 8H |
0926 | n(80E00008): LDR R0, SP, 8H |
0927 | o(F7FFFFD8): BL -40 [0900H] |
0928 | p(40090000): SUB R0, R0, 0H |
0929 | p(E1FFFFF9): BEQ -7 [0923H] |
| SYSTEM.PUT(f, f0);q f := f0 |
092A | q(80E00004): LDR R0, SP, 4H |
092B | q(81E00008): LDR R1, SP, 8H |
092C | q(A1000000): STR R1, R0, 0H |
| ENDr |
092D | r(80E00008): LDR R0, SP, 8H |
092E | r(A0E00004): STR R0, SP, 4H |
092F | r(E7FFFFEF): B -17 [091FH] |
| ENDs RestoreList; |
0930 | s(8FE00000): LDR LNK, SP, 0H |
0931 | s(4EE8000C): ADD SP, SP, CH |
0932 | s(C700000F): B LNK |
| |
| ENDt Files.u |
0933 | t .PROC 0 |
0933 | t .ENTRYPOINT |
0933 | t(4EE90004): SUB SP, SP, 4H |
0934 | t(AFE00000): STR LNK, SP, 0H |
0935 | u(8FE00000): LDR LNK, SP, 0H |
0936 | u(4EE80004): ADD SP, SP, 4H |
0937 | u(C700000F): B LNK |