| MODULE FileDir; (*NW 12.1.86 / 23.8.90 / 15.8.2013*) |
| | .MODULE FileDir (KEY AF8E65FF, VERSION 1, SIZE 00001EFC) |
| | .IMPORT Kernel (KEY 97E012DD) |
| | .TYPEDESC 00000500 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000040 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000500 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |
| | .FIXUP T 0H |
| IMPORT SYSTEM, Kernel; |
| |
| (*File Directory is a B-tree with its root page at DirRootAdr. |
| Each entry contains a file name and the disk address of the file's head sector*) |
| |
| CONST FnLength* = 32; |
| SecTabSize* = 64; |
| ExTabSize* = 12; |
| SectorSize* = 1024; |
| IndexSize* = SectorSize DIV 4; |
| HeaderSize* = 352; |
| DirRootAdr* = 29; |
| DirPgSize* = 24; |
| N = DirPgSize DIV 2; |
| DirMark* = 9B1EA38DH; |
| HeaderMark* = 9BA71D86H; |
| FillerSize = 52; |
| |
| TYPE DiskAdr = INTEGER; |
| FileName* = ARRAY FnLength OF CHAR; |
| SectorTable* = ARRAY SecTabSize OF DiskAdr; |
| ExtensionTable* = ARRAY ExTabSize OF DiskAdr; |
| EntryHandler* = PROCEDURE (name: FileName; sec: DiskAdr; VAR continue: BOOLEAN); |
| |
| FileHeader* = |
| RECORD (*first page of each file on disk*) |
| mark*: INTEGER; |
| name*: FileName; |
| aleng*, bleng*, date*: INTEGER; |
| ext*: ExtensionTable; |
| sec*: SectorTable; |
| fill: ARRAY SectorSize - HeaderSize OF BYTE; |
| END ; |
| |
| FileHd* = POINTER TO FileHeader; |
| IndexSector* = ARRAY IndexSize OF DiskAdr; |
| DataSector* = ARRAY SectorSize OF BYTE; |
| |
| DirEntry* = (*B-tree node*) |
| RECORD |
| name*: FileName; |
| adr*: DiskAdr; (*sec no of file header*) |
| p*: DiskAdr (*sec no of descendant in directory*) |
| END ; |
| |
| DirPage* = |
| RECORD mark*: INTEGER; |
| m*: INTEGER; |
| p0*: DiskAdr; (*sec no of left descendant in directory*) |
| fill: ARRAY FillerSize OF BYTE; |
| e*: ARRAY DirPgSize OF DirEntry |
| END ; |
| |
| (*Exported procedures: Search, Insert, Delete, Enumerate, Init*) |
| |
| PROCEDURE Search*(name: FileName; VAR A: DiskAdr); |
| VAR i, L, R: INTEGER; dadr: DiskAdr; |
| a: DirPage; |
| BEGINa dadr := DirRootAdr;b A := 0;c |
| 0000 | a .PROC 1 |
| 0000 | a .PROC 4 |
| 0000 | a(4EE9041C): SUB SP, SP, 41CH |
| 0001 | a(AFE00000): STR LNK, SP, 0H |
| 0002 | a(A0E00004): STR R0, SP, 4H |
| 0003 | a(A1E00008): STR R1, SP, 8H |
| 0004 | b(4000001D): MOV R0, R0, 1DH |
| 0005 | b .PROC 2 |
| 0005 | b(A0E00018): STR R0, SP, 18H |
| 0006 | c(40000000): MOV R0, R0, 0H |
| 0007 | c(81E00008): LDR R1, SP, 8H |
| 0008 | c(A0100000): STR R0, R1, 0H |
| REPEAT Kernel.GetSector(dadr,d a)e;f ASSERT(a.mark = DirMark)g;h |
| 0009 | d(80E00018): LDR R0, SP, 18H |
| 000A | e .PROC 3 |
| 000A | e(41E8001C): ADD R1, SP, 1CH |
| 000B | f .FIXUP P |
| 000B | f(F710F00B): BL MOD1 [Kernel] PROC15 |
| 000C | g(80E0001C): LDR R0, SP, 1CH |
| 000D | g(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 000E | g(4116A38D): IOR R1, R1, FFFFA38DH |
| 000F | g(00090001): SUB R0, R0, R1 |
| 0010 | h(D907B57C): BLNE MT [trap=7, pos=1973] |
| L := 0;i R := a.m;j (*binary search*) |
| 0011 | i(40000000): MOV R0, R0, 0H |
| 0012 | i(A0E00010): STR R0, SP, 10H |
| 0013 | j(80E00020): LDR R0, SP, 20H |
| 0014 | j(A0E00014): STR R0, SP, 14H |
| WHILE L < R DOk |
| 0015 | k(80E00010): LDR R0, SP, 10H |
| 0016 | k(81E00014): LDR R1, SP, 14H |
| 0017 | k(00090001): SUB R0, R0, R1 |
| 0018 | k(ED00001C): BGE 28 [0035H] |
| i := (L+R)l DIV 2;m |
| 0019 | l(80E00010): LDR R0, SP, 10H |
| 001A | l(81E00014): LDR R1, SP, 14H |
| 001B | l(00080001): ADD R0, R0, R1 |
| 001C | m(40020001): ASR R0, R0, 1H |
| 001D | m(A0E0000C): STR R0, SP, CH |
| IF name <= a.e[i]n.name THENo R := i ELSEp Lq := i+1 ENDr |
| 001E | n(80E0000C): LDR R0, SP, CH |
| 001F | n(41090018): SUB R1, R0, 18H |
| 0020 | n(DA08281C): BLCC MT [trap=1, pos=2088] |
| 0021 | n(400A0028): MUL R0, R0, 28H |
| 0022 | n(00E80000): ADD R0, SP, R0 |
| 0023 | o(81E00004): LDR R1, SP, 4H |
| 0024 | o(4008005C): ADD R0, R0, 5CH |
| 0025 | o(92100000): LDR R2, R1, 0H |
| 0026 | o(41180001): ADD R1, R1, 1H |
| 0027 | o(93000000): LDR R3, R0, 0H |
| 0028 | o(40080001): ADD R0, R0, 1H |
| 0029 | o(04290003): SUB R4, R2, R3 |
| 002A | o(E9000002): BNE 2 [002DH] |
| 002B | o(44290000): SUB R4, R2, 0H |
| 002C | o(E9FFFFF8): BNE -8 [0025H] |
| 002D | o(EE000003): BGT 3 [0031H] |
| 002E | p(80E0000C): LDR R0, SP, CH |
| 002F | p(A0E00014): STR R0, SP, 14H |
| 0030 | q(E7000003): B 3 [0034H] |
| 0031 | r(80E0000C): LDR R0, SP, CH |
| 0032 | r(40080001): ADD R0, R0, 1H |
| 0033 | r(A0E00010): STR R0, SP, 10H |
| ENDs ; |
| 0034 | s(E7FFFFE0): B -32 [0015H] |
| IF (R < a.m)t & (uname = a.e[R]v.name)w THENx A := a.e[R]y.adr (*found*) |
| 0035 | t(80E00014): LDR R0, SP, 14H |
| 0036 | t(81E00020): LDR R1, SP, 20H |
| 0037 | t(00090001): SUB R0, R0, R1 |
| 0038 | u(ED000019): BGE 25 [0052H] |
| 0039 | v(80E00014): LDR R0, SP, 14H |
| 003A | v(41090018): SUB R1, R0, 18H |
| 003B | v(DA087B1C): BLCC MT [trap=1, pos=2171] |
| 003C | v(400A0028): MUL R0, R0, 28H |
| 003D | v(00E80000): ADD R0, SP, R0 |
| 003E | w(81E00004): LDR R1, SP, 4H |
| 003F | w(4008005C): ADD R0, R0, 5CH |
| 0040 | w(92100000): LDR R2, R1, 0H |
| 0041 | w(41180001): ADD R1, R1, 1H |
| 0042 | w(93000000): LDR R3, R0, 0H |
| 0043 | w(40080001): ADD R0, R0, 1H |
| 0044 | w(04290003): SUB R4, R2, R3 |
| 0045 | w(E9000002): BNE 2 [0048H] |
| 0046 | w(44290000): SUB R4, R2, 0H |
| 0047 | w(E9FFFFF8): BNE -8 [0040H] |
| 0048 | x(E9000009): BNE 9 [0052H] |
| 0049 | y(80E00014): LDR R0, SP, 14H |
| 004A | y(41090018): SUB R1, R0, 18H |
| 004B | y(DA08921C): BLCC MT [trap=1, pos=2194] |
| 004C | y(400A0028): MUL R0, R0, 28H |
| 004D | y(00E80000): ADD R0, SP, R0 |
| ELSIFz Ra = 0 THENb dadr := a.p0 |
| 004E | z(8000007C): LDR R0, R0, 7CH |
| 004F | z(81E00008): LDR R1, SP, 8H |
| 0050 | z(A0100000): STR R0, R1, 0H |
| 0051 | a(E700000D): B 13 [005FH] |
| 0052 | b(80E00014): LDR R0, SP, 14H |
| 0053 | b(E9000003): BNE 3 [0057H] |
| ELSEc dadrd := a.e[R-1]e.p |
| 0054 | c(80E00024): LDR R0, SP, 24H |
| 0055 | c(A0E00018): STR R0, SP, 18H |
| 0056 | d(E7000008): B 8 [005FH] |
| 0057 | e(80E00014): LDR R0, SP, 14H |
| 0058 | e(40090001): SUB R0, R0, 1H |
| 0059 | e(41090018): SUB R1, R0, 18H |
| 005A | e(DA08E01C): BLCC MT [trap=1, pos=2272] |
| 005B | e(400A0028): MUL R0, R0, 28H |
| 005C | e(00E80000): ADD R0, SP, R0 |
| ENDf ; |
| 005D | f(80000080): LDR R0, R0, 80H |
| 005E | f(A0E00018): STR R0, SP, 18H |
| UNTIL (dadr = 0)g OR (hA # 0)i |
| 005F | g(80E00018): LDR R0, SP, 18H |
| 0060 | h(E1000003): BEQ 3 [0064H] |
| 0061 | i(80E00008): LDR R0, SP, 8H |
| 0062 | i(80000000): LDR R0, R0, 0H |
| ENDj Search; |
| 0063 | j(E1FFFFA5): BEQ -91 [0009H] |
| 0064 | j(8FE00000): LDR LNK, SP, 0H |
| 0065 | j(4EE8041C): ADD SP, SP, 41CH |
| 0066 | j(C700000F): B LNK |
| |
| PROCEDURE insert(name: FileName; |
| dpg0: DiskAdr; |
| VAR h: BOOLEAN; |
| VAR v: DirEntry; |
| fad: DiskAdr); |
| (*h = "tree has become higher and v is ascending element"*) |
| VAR ch: CHAR; |
| i, j, L, R: INTEGER; |
| dpg1: DiskAdr; |
| u: DirEntry; |
| a: DirPage; |
| |
| BEGINk (*~h*) Kernel.GetSector(dpg0,l a)m;n ASSERT(a.mark = DirMark)o;p |
| 0067 | k(4EE9045C): SUB SP, SP, 45CH |
| 0068 | k(AFE00000): STR LNK, SP, 0H |
| 0069 | k(A0E00004): STR R0, SP, 4H |
| 006A | k(A1E00008): STR R1, SP, 8H |
| 006B | k(A2E0000C): STR R2, SP, CH |
| 006C | k(A3E00010): STR R3, SP, 10H |
| 006D | k(A4E00014): STR R4, SP, 14H |
| 006E | k(A5E00018): STR R5, SP, 18H |
| 006F | l(80E00008): LDR R0, SP, 8H |
| 0070 | m(41E8005C): ADD R1, SP, 5CH |
| 0071 | n .FIXUP P |
| 0071 | n(F710F066): BL MOD1 [Kernel] PROC15 |
| 0072 | o(80E0005C): LDR R0, SP, 5CH |
| 0073 | o(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0074 | o(4116A38D): IOR R1, R1, FFFFA38DH |
| 0075 | o(00090001): SUB R0, R0, R1 |
| 0076 | p(D90ABC7C): BLNE MT [trap=7, pos=2748] |
| L := 0;q R := a.m;r (*binary search*) |
| 0077 | q(40000000): MOV R0, R0, 0H |
| 0078 | q(A0E00028): STR R0, SP, 28H |
| 0079 | r(80E00060): LDR R0, SP, 60H |
| 007A | r(A0E0002C): STR R0, SP, 2CH |
| WHILE L < R DOs |
| 007B | s(80E00028): LDR R0, SP, 28H |
| 007C | s(81E0002C): LDR R1, SP, 2CH |
| 007D | s(00090001): SUB R0, R0, R1 |
| 007E | s(ED00001C): BGE 28 [009BH] |
| i := (L+R)t DIV 2;u |
| 007F | t(80E00028): LDR R0, SP, 28H |
| 0080 | t(81E0002C): LDR R1, SP, 2CH |
| 0081 | t(00080001): ADD R0, R0, R1 |
| 0082 | u(40020001): ASR R0, R0, 1H |
| 0083 | u(A0E00020): STR R0, SP, 20H |
| IF name <= a.e[i]v.name THENw R := i ELSEx Ly := i+1 ENDz |
| 0084 | v(80E00020): LDR R0, SP, 20H |
| 0085 | v(41090018): SUB R1, R0, 18H |
| 0086 | v(DA0B271C): BLCC MT [trap=1, pos=2855] |
| 0087 | v(400A0028): MUL R0, R0, 28H |
| 0088 | v(00E80000): ADD R0, SP, R0 |
| 0089 | w(81E00004): LDR R1, SP, 4H |
| 008A | w(4008009C): ADD R0, R0, 9CH |
| 008B | w(92100000): LDR R2, R1, 0H |
| 008C | w(41180001): ADD R1, R1, 1H |
| 008D | w(93000000): LDR R3, R0, 0H |
| 008E | w(40080001): ADD R0, R0, 1H |
| 008F | w(04290003): SUB R4, R2, R3 |
| 0090 | w(E9000002): BNE 2 [0093H] |
| 0091 | w(44290000): SUB R4, R2, 0H |
| 0092 | w(E9FFFFF8): BNE -8 [008BH] |
| 0093 | w(EE000003): BGT 3 [0097H] |
| 0094 | x(80E00020): LDR R0, SP, 20H |
| 0095 | x(A0E0002C): STR R0, SP, 2CH |
| 0096 | y(E7000003): B 3 [009AH] |
| 0097 | z(80E00020): LDR R0, SP, 20H |
| 0098 | z(40080001): ADD R0, R0, 1H |
| 0099 | z(A0E00028): STR R0, SP, 28H |
| ENDa ; |
| 009A | a(E7FFFFE0): B -32 [007BH] |
| IF (R < a.m)b & (cname = a.e[R]d.name)e THENf |
| 009B | b(80E0002C): LDR R0, SP, 2CH |
| 009C | b(81E00060): LDR R1, SP, 60H |
| 009D | b(00090001): SUB R0, R0, R1 |
| 009E | c(ED00001B): BGE 27 [00BAH] |
| 009F | d(80E0002C): LDR R0, SP, 2CH |
| 00A0 | d(41090018): SUB R1, R0, 18H |
| 00A1 | d(DA0B761C): BLCC MT [trap=1, pos=2934] |
| 00A2 | d(400A0028): MUL R0, R0, 28H |
| 00A3 | d(00E80000): ADD R0, SP, R0 |
| 00A4 | e(81E00004): LDR R1, SP, 4H |
| 00A5 | e(4008009C): ADD R0, R0, 9CH |
| 00A6 | e(92100000): LDR R2, R1, 0H |
| 00A7 | e(41180001): ADD R1, R1, 1H |
| 00A8 | e(93000000): LDR R3, R0, 0H |
| 00A9 | e(40080001): ADD R0, R0, 1H |
| 00AA | e(04290003): SUB R4, R2, R3 |
| 00AB | e(E9000002): BNE 2 [00AEH] |
| 00AC | e(44290000): SUB R4, R2, 0H |
| 00AD | e(E9FFFFF8): BNE -8 [00A6H] |
| 00AE | f(E900000B): BNE 11 [00BAH] |
| a.e[R]g.adr := fad;h Kernel.PutSector(dpg0,i a)j (*replace*) |
| 00AF | g(80E0002C): LDR R0, SP, 2CH |
| 00B0 | g(41090018): SUB R1, R0, 18H |
| 00B1 | g(DA0B8E1C): BLCC MT [trap=1, pos=2958] |
| 00B2 | g(400A0028): MUL R0, R0, 28H |
| 00B3 | g(00E80000): ADD R0, SP, R0 |
| 00B4 | h(81E00018): LDR R1, SP, 18H |
| 00B5 | h(A10000BC): STR R1, R0, BCH |
| 00B6 | i(80E00008): LDR R0, SP, 8H |
| 00B7 | j(41E8005C): ADD R1, SP, 5CH |
| ELSEk (*not on this page*) |
| 00B8 | k .FIXUP P |
| 00B8 | k(F7110047): BL MOD1 [Kernel] PROC16 |
| IFl R = 0 THENm dpg1 := a.p0 ELSEn dpg1o := a.e[R-1]p.p ENDq ; |
| 00B9 | l(E700014E): B 334 [0208H] |
| 00BA | m(80E0002C): LDR R0, SP, 2CH |
| 00BB | m(E9000003): BNE 3 [00BFH] |
| 00BC | n(80E00064): LDR R0, SP, 64H |
| 00BD | n(A0E00030): STR R0, SP, 30H |
| 00BE | o(E7000008): B 8 [00C7H] |
| 00BF | p(80E0002C): LDR R0, SP, 2CH |
| 00C0 | p(40090001): SUB R0, R0, 1H |
| 00C1 | p(41090018): SUB R1, R0, 18H |
| 00C2 | p(DA0C161C): BLCC MT [trap=1, pos=3094] |
| 00C3 | p(400A0028): MUL R0, R0, 28H |
| 00C4 | p(00E80000): ADD R0, SP, R0 |
| 00C5 | q(800000C0): LDR R0, R0, C0H |
| 00C6 | q(A0E00030): STR R0, SP, 30H |
| IF dpg1 = 0 THENr (*not in tree, insert*) |
| 00C7 | r(80E00030): LDR R0, SP, 30H |
| 00C8 | r(E9000029): BNE 41 [00F2H] |
| u.adr := fad;s u.p := 0;t h := TRUE;u j := 0;v |
| 00C9 | s(80E00018): LDR R0, SP, 18H |
| 00CA | s(A0E00054): STR R0, SP, 54H |
| 00CB | t(40000000): MOV R0, R0, 0H |
| 00CC | t(A0E00058): STR R0, SP, 58H |
| 00CD | u(40000001): MOV R0, R0, 1H |
| 00CE | u(81E0000C): LDR R1, SP, CH |
| 00CF | u(B0100000): STR R0, R1, 0H |
| 00D0 | v(40000000): MOV R0, R0, 0H |
| 00D1 | v(A0E00024): STR R0, SP, 24H |
| REPEAT ch := name[j]w;x u.name[j]y := ch;z INC(j) |
| 00D2 | w(80E00024): LDR R0, SP, 24H |
| 00D3 | w(41090020): SUB R1, R0, 20H |
| 00D4 | w(DA0C9D1C): BLCC MT [trap=1, pos=3229] |
| 00D5 | w(81E00004): LDR R1, SP, 4H |
| 00D6 | w(00180000): ADD R0, R1, R0 |
| 00D7 | x(90000000): LDR R0, R0, 0H |
| 00D8 | x(B0E0001C): STR R0, SP, 1CH |
| 00D9 | y(80E00024): LDR R0, SP, 24H |
| 00DA | y(41090020): SUB R1, R0, 20H |
| 00DB | y(DA0CA81C): BLCC MT [trap=1, pos=3240] |
| 00DC | y(00E80000): ADD R0, SP, R0 |
| 00DD | z(91E0001C): LDR R1, SP, 1CH |
| 00DE | z(B1000034): STR R1, R0, 34H |
| UNTILa ch = 0X;b |
| 00DF | a(80E00024): LDR R0, SP, 24H |
| 00E0 | a(40080001): ADD R0, R0, 1H |
| 00E1 | a(A0E00024): STR R0, SP, 24H |
| 00E2 | b(90E0001C): LDR R0, SP, 1CH |
| 00E3 | b(E9FFFFEE): BNE -18 [00D2H] |
| WHILE j < FnLength DOc u.name[j]d := 0X;e INC(j) ENDf ; |
| 00E4 | c(80E00024): LDR R0, SP, 24H |
| 00E5 | c(40090020): SUB R0, R0, 20H |
| 00E6 | c(ED00000A): BGE 10 [00F1H] |
| 00E7 | d(80E00024): LDR R0, SP, 24H |
| 00E8 | d(41090020): SUB R1, R0, 20H |
| 00E9 | d(DA0CF51C): BLCC MT [trap=1, pos=3317] |
| 00EA | d(00E80000): ADD R0, SP, R0 |
| 00EB | e(41000000): MOV R1, R0, 0H |
| 00EC | e(B1000034): STR R1, R0, 34H |
| 00ED | f(80E00024): LDR R0, SP, 24H |
| 00EE | f(40080001): ADD R0, R0, 1H |
| 00EF | f(A0E00024): STR R0, SP, 24H |
| 00F0 | f(E7FFFFF3): B -13 [00E4H] |
| ELSE |
| insertg(name,h dpg1,i h,j u,k fad)l |
| 00F1 | g(E7000008): B 8 [00FAH] |
| 00F2 | h(80E00004): LDR R0, SP, 4H |
| 00F3 | i(81E00030): LDR R1, SP, 30H |
| 00F4 | j(82E0000C): LDR R2, SP, CH |
| 00F5 | k(43E80034): ADD R3, SP, 34H |
| 00F6 | k .FIXUP D |
| 00F6 | k(8D0000F6): LDR SB, MT, MOD0 [FileDir] |
| 00F7 | k(44D80014): ADD R4, SB, 14H [data] |
| 00F8 | l(85E00018): LDR R5, SP, 18H |
| ENDm ; |
| 00F9 | m(F7FFFF6D): BL -147 [0067H] |
| IF h THENn (*insert u to the left of e[R]*) |
| 00FA | n(80E0000C): LDR R0, SP, CH |
| 00FB | n(90000000): LDR R0, R0, 0H |
| 00FC | n(E100010B): BEQ 267 [0208H] |
| IF a.m < DirPgSize THENo |
| 00FD | o(80E00060): LDR R0, SP, 60H |
| 00FE | o(40090018): SUB R0, R0, 18H |
| 00FF | o(ED000033): BGE 51 [0133H] |
| h := FALSE;p i := a.m;q |
| 0100 | p(40000000): MOV R0, R0, 0H |
| 0101 | p(81E0000C): LDR R1, SP, CH |
| 0102 | p(B0100000): STR R0, R1, 0H |
| 0103 | q(80E00060): LDR R0, SP, 60H |
| 0104 | q(A0E00020): STR R0, SP, 20H |
| WHILE i > R DOr DEC(i);s a.e[i+1]t := a.e[i]u ENDv ; |
| 0105 | r(80E00020): LDR R0, SP, 20H |
| 0106 | r(81E0002C): LDR R1, SP, 2CH |
| 0107 | r(00090001): SUB R0, R0, R1 |
| 0108 | r(E6000018): BLE 24 [0121H] |
| 0109 | s(80E00020): LDR R0, SP, 20H |
| 010A | s(40090001): SUB R0, R0, 1H |
| 010B | s(A0E00020): STR R0, SP, 20H |
| 010C | t(80E00020): LDR R0, SP, 20H |
| 010D | t(40080001): ADD R0, R0, 1H |
| 010E | t(41090018): SUB R1, R0, 18H |
| 010F | t(DA0DE11C): BLCC MT [trap=1, pos=3553] |
| 0110 | t(400A0028): MUL R0, R0, 28H |
| 0111 | t(00E80000): ADD R0, SP, R0 |
| 0112 | u(81E00020): LDR R1, SP, 20H |
| 0113 | u(42190018): SUB R2, R1, 18H |
| 0114 | u(DA0DEB1C): BLCC MT [trap=1, pos=3563] |
| 0115 | u(411A0028): MUL R1, R1, 28H |
| 0116 | u(01E80001): ADD R1, SP, R1 |
| 0117 | v(4008009C): ADD R0, R0, 9CH |
| 0118 | v(4118009C): ADD R1, R1, 9CH |
| 0119 | v(4200000A): MOV R2, R0, AH |
| 011A | v(83100000): LDR R3, R1, 0H |
| 011B | v(41180004): ADD R1, R1, 4H |
| 011C | v(A3000000): STR R3, R0, 0H |
| 011D | v(40080004): ADD R0, R0, 4H |
| 011E | v(42290001): SUB R2, R2, 1H |
| 011F | v(E9FFFFFA): BNE -6 [011AH] |
| 0120 | v(E7FFFFE4): B -28 [0105H] |
| a.e[R]w := u;x INC(a.m) |
| 0121 | w(80E0002C): LDR R0, SP, 2CH |
| 0122 | w(41090018): SUB R1, R0, 18H |
| 0123 | w(DA0E021C): BLCC MT [trap=1, pos=3586] |
| 0124 | w(400A0028): MUL R0, R0, 28H |
| 0125 | w(00E80000): ADD R0, SP, R0 |
| 0126 | x(4008009C): ADD R0, R0, 9CH |
| 0127 | x(41E80034): ADD R1, SP, 34H |
| 0128 | x(4200000A): MOV R2, R0, AH |
| 0129 | x(83100000): LDR R3, R1, 0H |
| 012A | x(41180004): ADD R1, R1, 4H |
| 012B | x(A3000000): STR R3, R0, 0H |
| 012C | x(40080004): ADD R0, R0, 4H |
| 012D | x(42290001): SUB R2, R2, 1H |
| 012E | x(E9FFFFFA): BNE -6 [0129H] |
| ELSEy (*split page and assign the middle element to v*) |
| 012F | y(80E00060): LDR R0, SP, 60H |
| 0130 | y(40080001): ADD R0, R0, 1H |
| 0131 | y(A0E00060): STR R0, SP, 60H |
| az.m := N;a a.mark := DirMark;b |
| 0132 | z(E70000D2): B 210 [0205H] |
| 0133 | a(4000000C): MOV R0, R0, CH |
| 0134 | a(A0E00060): STR R0, SP, 60H |
| 0135 | b(60009B1E): MOV' R0, R0, FFFF9B1EH |
| 0136 | b(4006A38D): IOR R0, R0, FFFFA38DH |
| 0137 | b(A0E0005C): STR R0, SP, 5CH |
| IF R < N THENc (*insert in left half*) |
| 0138 | c(80E0002C): LDR R0, SP, 2CH |
| 0139 | c(4009000C): SUB R0, R0, CH |
| 013A | c(ED000059): BGE 89 [0194H] |
| v := a.e[N-1];d i := N-1;e |
| 013B | d(80E00010): LDR R0, SP, 10H |
| 013C | d(41E80254): ADD R1, SP, 254H |
| 013D | d(4200000A): MOV R2, R0, AH |
| 013E | d(83100000): LDR R3, R1, 0H |
| 013F | d(41180004): ADD R1, R1, 4H |
| 0140 | d(A3000000): STR R3, R0, 0H |
| 0141 | d(40080004): ADD R0, R0, 4H |
| 0142 | d(42290001): SUB R2, R2, 1H |
| 0143 | d(E9FFFFFA): BNE -6 [013EH] |
| 0144 | e(4000000B): MOV R0, R0, BH |
| 0145 | e(A0E00020): STR R0, SP, 20H |
| WHILE i > R DOf DEC(i);g a.e[i+1]h := a.e[i]i ENDj ; |
| 0146 | f(80E00020): LDR R0, SP, 20H |
| 0147 | f(81E0002C): LDR R1, SP, 2CH |
| 0148 | f(00090001): SUB R0, R0, R1 |
| 0149 | f(E6000018): BLE 24 [0162H] |
| 014A | g(80E00020): LDR R0, SP, 20H |
| 014B | g(40090001): SUB R0, R0, 1H |
| 014C | g(A0E00020): STR R0, SP, 20H |
| 014D | h(80E00020): LDR R0, SP, 20H |
| 014E | h(40080001): ADD R0, R0, 1H |
| 014F | h(41090018): SUB R1, R0, 18H |
| 0150 | h(DA0EF81C): BLCC MT [trap=1, pos=3832] |
| 0151 | h(400A0028): MUL R0, R0, 28H |
| 0152 | h(00E80000): ADD R0, SP, R0 |
| 0153 | i(81E00020): LDR R1, SP, 20H |
| 0154 | i(42190018): SUB R2, R1, 18H |
| 0155 | i(DA0F021C): BLCC MT [trap=1, pos=3842] |
| 0156 | i(411A0028): MUL R1, R1, 28H |
| 0157 | i(01E80001): ADD R1, SP, R1 |
| 0158 | j(4008009C): ADD R0, R0, 9CH |
| 0159 | j(4118009C): ADD R1, R1, 9CH |
| 015A | j(4200000A): MOV R2, R0, AH |
| 015B | j(83100000): LDR R3, R1, 0H |
| 015C | j(41180004): ADD R1, R1, 4H |
| 015D | j(A3000000): STR R3, R0, 0H |
| 015E | j(40080004): ADD R0, R0, 4H |
| 015F | j(42290001): SUB R2, R2, 1H |
| 0160 | j(E9FFFFFA): BNE -6 [015BH] |
| 0161 | j(E7FFFFE4): B -28 [0146H] |
| a.e[R]k := u;l Kernel.PutSector(dpg0,m a)n;o |
| 0162 | k(80E0002C): LDR R0, SP, 2CH |
| 0163 | k(41090018): SUB R1, R0, 18H |
| 0164 | k(DA0F1B1C): BLCC MT [trap=1, pos=3867] |
| 0165 | k(400A0028): MUL R0, R0, 28H |
| 0166 | k(00E80000): ADD R0, SP, R0 |
| 0167 | l(4008009C): ADD R0, R0, 9CH |
| 0168 | l(41E80034): ADD R1, SP, 34H |
| 0169 | l(4200000A): MOV R2, R0, AH |
| 016A | l(83100000): LDR R3, R1, 0H |
| 016B | l(41180004): ADD R1, R1, 4H |
| 016C | l(A3000000): STR R3, R0, 0H |
| 016D | l(40080004): ADD R0, R0, 4H |
| 016E | l(42290001): SUB R2, R2, 1H |
| 016F | l(E9FFFFFA): BNE -6 [016AH] |
| 0170 | m(80E00008): LDR R0, SP, 8H |
| 0171 | n(41E8005C): ADD R1, SP, 5CH |
| 0172 | o .FIXUP P |
| 0172 | o(F71100BA): BL MOD1 [Kernel] PROC16 |
| Kernel.AllocSector(dpg0,p dpg0)q;r i := 0;s |
| 0173 | p(80E00008): LDR R0, SP, 8H |
| 0174 | q(41E80008): ADD R1, SP, 8H |
| 0175 | r .FIXUP P |
| 0175 | r(F710E003): BL MOD1 [Kernel] PROC14 |
| 0176 | s(40000000): MOV R0, R0, 0H |
| 0177 | s(A0E00020): STR R0, SP, 20H |
| WHILE i < N DOt a.e[i]u := a.e[i+N]v;w INC(i) ENDx |
| 0178 | t(80E00020): LDR R0, SP, 20H |
| 0179 | t(4009000C): SUB R0, R0, CH |
| 017A | t(ED000018): BGE 24 [0193H] |
| 017B | u(80E00020): LDR R0, SP, 20H |
| 017C | u(41090018): SUB R1, R0, 18H |
| 017D | u(DA0F921C): BLCC MT [trap=1, pos=3986] |
| 017E | u(400A0028): MUL R0, R0, 28H |
| 017F | u(00E80000): ADD R0, SP, R0 |
| 0180 | v(81E00020): LDR R1, SP, 20H |
| 0181 | v(4118000C): ADD R1, R1, CH |
| 0182 | v(42190018): SUB R2, R1, 18H |
| 0183 | v(DA0F9E1C): BLCC MT [trap=1, pos=3998] |
| 0184 | v(411A0028): MUL R1, R1, 28H |
| 0185 | v(01E80001): ADD R1, SP, R1 |
| 0186 | w(4008009C): ADD R0, R0, 9CH |
| 0187 | w(4118009C): ADD R1, R1, 9CH |
| 0188 | w(4200000A): MOV R2, R0, AH |
| 0189 | w(83100000): LDR R3, R1, 0H |
| 018A | w(41180004): ADD R1, R1, 4H |
| 018B | w(A3000000): STR R3, R0, 0H |
| 018C | w(40080004): ADD R0, R0, 4H |
| 018D | w(42290001): SUB R2, R2, 1H |
| 018E | w(E9FFFFFA): BNE -6 [0189H] |
| 018F | x(80E00020): LDR R0, SP, 20H |
| 0190 | x(40080001): ADD R0, R0, 1H |
| 0191 | x(A0E00020): STR R0, SP, 20H |
| 0192 | x(E7FFFFE5): B -27 [0178H] |
| ELSE (*insert in right half*) |
| Kernely.PutSector(dpg0,z a)a;b |
| 0193 | y(E700006B): B 107 [01FFH] |
| 0194 | z(80E00008): LDR R0, SP, 8H |
| 0195 | a(41E8005C): ADD R1, SP, 5CH |
| 0196 | b .FIXUP P |
| 0196 | b(F7110021): BL MOD1 [Kernel] PROC16 |
| Kernel.AllocSector(dpg0,c dpg0)d;e DEC(R, N);f i := 0;g |
| 0197 | c(80E00008): LDR R0, SP, 8H |
| 0198 | d(41E80008): ADD R1, SP, 8H |
| 0199 | e .FIXUP P |
| 0199 | e(F710E003): BL MOD1 [Kernel] PROC14 |
| 019A | f(80E0002C): LDR R0, SP, 2CH |
| 019B | f(4009000C): SUB R0, R0, CH |
| 019C | f(A0E0002C): STR R0, SP, 2CH |
| 019D | g(40000000): MOV R0, R0, 0H |
| 019E | g(A0E00020): STR R0, SP, 20H |
| IF R = 0 THENh v := u |
| 019F | h(80E0002C): LDR R0, SP, 2CH |
| 01A0 | h(E900000A): BNE 10 [01ABH] |
| ELSEi vj := a.e[N];k |
| 01A1 | i(80E00010): LDR R0, SP, 10H |
| 01A2 | i(41E80034): ADD R1, SP, 34H |
| 01A3 | i(4200000A): MOV R2, R0, AH |
| 01A4 | i(83100000): LDR R3, R1, 0H |
| 01A5 | i(41180004): ADD R1, R1, 4H |
| 01A6 | i(A3000000): STR R3, R0, 0H |
| 01A7 | i(40080004): ADD R0, R0, 4H |
| 01A8 | i(42290001): SUB R2, R2, 1H |
| 01A9 | i(E9FFFFFA): BNE -6 [01A4H] |
| 01AA | j(E7000038): B 56 [01E3H] |
| 01AB | k(80E00010): LDR R0, SP, 10H |
| 01AC | k(41E8027C): ADD R1, SP, 27CH |
| 01AD | k(4200000A): MOV R2, R0, AH |
| 01AE | k(83100000): LDR R3, R1, 0H |
| 01AF | k(41180004): ADD R1, R1, 4H |
| 01B0 | k(A3000000): STR R3, R0, 0H |
| 01B1 | k(40080004): ADD R0, R0, 4H |
| 01B2 | k(42290001): SUB R2, R2, 1H |
| 01B3 | k(E9FFFFFA): BNE -6 [01AEH] |
| WHILE i < R-1 DOl a.e[i]m := a.e[N+1+i]n;o INC(i) ENDp ; |
| 01B4 | l(80E0002C): LDR R0, SP, 2CH |
| 01B5 | l(40090001): SUB R0, R0, 1H |
| 01B6 | l(81E00020): LDR R1, SP, 20H |
| 01B7 | l(01190000): SUB R1, R1, R0 |
| 01B8 | l(ED000019): BGE 25 [01D2H] |
| 01B9 | m(80E00020): LDR R0, SP, 20H |
| 01BA | m(41090018): SUB R1, R0, 18H |
| 01BB | m(DA109D1C): BLCC MT [trap=1, pos=4253] |
| 01BC | m(400A0028): MUL R0, R0, 28H |
| 01BD | m(00E80000): ADD R0, SP, R0 |
| 01BE | n(4100000D): MOV R1, R0, DH |
| 01BF | n(82E00020): LDR R2, SP, 20H |
| 01C0 | n(01180002): ADD R1, R1, R2 |
| 01C1 | n(42190018): SUB R2, R1, 18H |
| 01C2 | n(DA10AB1C): BLCC MT [trap=1, pos=4267] |
| 01C3 | n(411A0028): MUL R1, R1, 28H |
| 01C4 | n(01E80001): ADD R1, SP, R1 |
| 01C5 | o(4008009C): ADD R0, R0, 9CH |
| 01C6 | o(4118009C): ADD R1, R1, 9CH |
| 01C7 | o(4200000A): MOV R2, R0, AH |
| 01C8 | o(83100000): LDR R3, R1, 0H |
| 01C9 | o(41180004): ADD R1, R1, 4H |
| 01CA | o(A3000000): STR R3, R0, 0H |
| 01CB | o(40080004): ADD R0, R0, 4H |
| 01CC | o(42290001): SUB R2, R2, 1H |
| 01CD | o(E9FFFFFA): BNE -6 [01C8H] |
| 01CE | p(80E00020): LDR R0, SP, 20H |
| 01CF | p(40080001): ADD R0, R0, 1H |
| 01D0 | p(A0E00020): STR R0, SP, 20H |
| 01D1 | p(E7FFFFE2): B -30 [01B4H] |
| a.e[i]q := u;r INC(i) |
| 01D2 | q(80E00020): LDR R0, SP, 20H |
| 01D3 | q(41090018): SUB R1, R0, 18H |
| 01D4 | q(DA10CE1C): BLCC MT [trap=1, pos=4302] |
| 01D5 | q(400A0028): MUL R0, R0, 28H |
| 01D6 | q(00E80000): ADD R0, SP, R0 |
| 01D7 | r(4008009C): ADD R0, R0, 9CH |
| 01D8 | r(41E80034): ADD R1, SP, 34H |
| 01D9 | r(4200000A): MOV R2, R0, AH |
| 01DA | r(83100000): LDR R3, R1, 0H |
| 01DB | r(41180004): ADD R1, R1, 4H |
| 01DC | r(A3000000): STR R3, R0, 0H |
| 01DD | r(40080004): ADD R0, R0, 4H |
| 01DE | r(42290001): SUB R2, R2, 1H |
| 01DF | r(E9FFFFFA): BNE -6 [01DAH] |
| ENDs ; |
| 01E0 | s(80E00020): LDR R0, SP, 20H |
| 01E1 | s(40080001): ADD R0, R0, 1H |
| 01E2 | s(A0E00020): STR R0, SP, 20H |
| WHILE i < N DOt a.e[i]u := a.e[N+i]v;w INC(i) ENDx |
| 01E3 | t(80E00020): LDR R0, SP, 20H |
| 01E4 | t(4009000C): SUB R0, R0, CH |
| 01E5 | t(ED000019): BGE 25 [01FFH] |
| 01E6 | u(80E00020): LDR R0, SP, 20H |
| 01E7 | u(41090018): SUB R1, R0, 18H |
| 01E8 | u(DA110F1C): BLCC MT [trap=1, pos=4367] |
| 01E9 | u(400A0028): MUL R0, R0, 28H |
| 01EA | u(00E80000): ADD R0, SP, R0 |
| 01EB | v(4100000C): MOV R1, R0, CH |
| 01EC | v(82E00020): LDR R2, SP, 20H |
| 01ED | v(01180002): ADD R1, R1, R2 |
| 01EE | v(42190018): SUB R2, R1, 18H |
| 01EF | v(DA111B1C): BLCC MT [trap=1, pos=4379] |
| 01F0 | v(411A0028): MUL R1, R1, 28H |
| 01F1 | v(01E80001): ADD R1, SP, R1 |
| 01F2 | w(4008009C): ADD R0, R0, 9CH |
| 01F3 | w(4118009C): ADD R1, R1, 9CH |
| 01F4 | w(4200000A): MOV R2, R0, AH |
| 01F5 | w(83100000): LDR R3, R1, 0H |
| 01F6 | w(41180004): ADD R1, R1, 4H |
| 01F7 | w(A3000000): STR R3, R0, 0H |
| 01F8 | w(40080004): ADD R0, R0, 4H |
| 01F9 | w(42290001): SUB R2, R2, 1H |
| 01FA | w(E9FFFFFA): BNE -6 [01F5H] |
| 01FB | x(80E00020): LDR R0, SP, 20H |
| 01FC | x(40080001): ADD R0, R0, 1H |
| 01FD | x(A0E00020): STR R0, SP, 20H |
| 01FE | x(E7FFFFE4): B -28 [01E3H] |
| END ; |
| a.p0 := v.p;y v.p := dpg0 |
| 01FF | y(80E00010): LDR R0, SP, 10H |
| 0200 | y(80000024): LDR R0, R0, 24H |
| 0201 | y(A0E00064): STR R0, SP, 64H |
| ENDz ; |
| 0202 | z(80E00008): LDR R0, SP, 8H |
| 0203 | z(81E00010): LDR R1, SP, 10H |
| 0204 | z(A0100024): STR R0, R1, 24H |
| Kernel.PutSector(dpg0,a a)b |
| 0205 | a(80E00008): LDR R0, SP, 8H |
| 0206 | b(41E8005C): ADD R1, SP, 5CH |
| ENDc |
| 0207 | c .FIXUP P |
| 0207 | c(F711006E): BL MOD1 [Kernel] PROC16 |
| END |
| ENDd insert; |
| 0208 | d(8FE00000): LDR LNK, SP, 0H |
| 0209 | d(4EE8045C): ADD SP, SP, 45CH |
| 020A | d(C700000F): B LNK |
| |
| PROCEDURE Insert*(name: FileName; fad: DiskAdr); |
| VAR oldroot: DiskAdr; |
| h: BOOLEAN; U: DirEntry; |
| a: DirPage; |
| BEGINe h := FALSE;f |
| 020B | e .PROC 5 |
| 020B | e(4EE9043C): SUB SP, SP, 43CH |
| 020C | e(AFE00000): STR LNK, SP, 0H |
| 020D | e(A0E00004): STR R0, SP, 4H |
| 020E | e(A1E00008): STR R1, SP, 8H |
| 020F | f(40000000): MOV R0, R0, 0H |
| 0210 | f(B0E00010): STR R0, SP, 10H |
| insert(name,g DirRootAdr,h h,i U,j fad)k;l |
| 0211 | g(80E00004): LDR R0, SP, 4H |
| 0212 | h(4100001D): MOV R1, R0, 1DH |
| 0213 | i(42E80010): ADD R2, SP, 10H |
| 0214 | j(43E80014): ADD R3, SP, 14H |
| 0215 | j .FIXUP D |
| 0215 | j(8D00011F): LDR SB, MT, MOD0 [FileDir] |
| 0216 | j(44D80014): ADD R4, SB, 14H [data] |
| 0217 | k(85E00008): LDR R5, SP, 8H |
| 0218 | l(F7FFFE4E): BL -434 [0067H] |
| IF h THENm (*root overflow*) |
| 0219 | m(90E00010): LDR R0, SP, 10H |
| 021A | m(E1000021): BEQ 33 [023CH] |
| Kernel.GetSector(DirRootAdr,n a)o;p ASSERT(a.mark = DirMark)q;r |
| 021B | n(4000001D): MOV R0, R0, 1DH |
| 021C | o(41E8003C): ADD R1, SP, 3CH |
| 021D | p .FIXUP P |
| 021D | p(F710F016): BL MOD1 [Kernel] PROC15 |
| 021E | q(80E0003C): LDR R0, SP, 3CH |
| 021F | q(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0220 | q(4116A38D): IOR R1, R1, FFFFA38DH |
| 0221 | q(00090001): SUB R0, R0, R1 |
| 0222 | r(D912C87C): BLNE MT [trap=7, pos=4808] |
| Kernel.AllocSector(DirRootAdr,s oldroot)t;u Kernel.PutSector(oldroot,v a)w;x |
| 0223 | s(4000001D): MOV R0, R0, 1DH |
| 0224 | t(41E8000C): ADD R1, SP, CH |
| 0225 | u .FIXUP P |
| 0225 | u(F710E008): BL MOD1 [Kernel] PROC14 |
| 0226 | v(80E0000C): LDR R0, SP, CH |
| 0227 | w(41E8003C): ADD R1, SP, 3CH |
| 0228 | x .FIXUP P |
| 0228 | x(F7110003): BL MOD1 [Kernel] PROC16 |
| a.mark := DirMark;y a.m := 1;z a.p0 := oldroot;a a.e[0] := U;b |
| 0229 | y(60009B1E): MOV' R0, R0, FFFF9B1EH |
| 022A | y(4006A38D): IOR R0, R0, FFFFA38DH |
| 022B | y(A0E0003C): STR R0, SP, 3CH |
| 022C | z(40000001): MOV R0, R0, 1H |
| 022D | z(A0E00040): STR R0, SP, 40H |
| 022E | a(80E0000C): LDR R0, SP, CH |
| 022F | a(A0E00044): STR R0, SP, 44H |
| 0230 | b(40E8007C): ADD R0, SP, 7CH |
| 0231 | b(41E80014): ADD R1, SP, 14H |
| 0232 | b(4200000A): MOV R2, R0, AH |
| 0233 | b(83100000): LDR R3, R1, 0H |
| 0234 | b(41180004): ADD R1, R1, 4H |
| 0235 | b(A3000000): STR R3, R0, 0H |
| 0236 | b(40080004): ADD R0, R0, 4H |
| 0237 | b(42290001): SUB R2, R2, 1H |
| 0238 | b(E9FFFFFA): BNE -6 [0233H] |
| Kernel.PutSector(DirRootAdr,c a)d |
| 0239 | c(4000001D): MOV R0, R0, 1DH |
| 023A | d(41E8003C): ADD R1, SP, 3CH |
| ENDe |
| 023B | e .FIXUP P |
| 023B | e(F7110013): BL MOD1 [Kernel] PROC16 |
| ENDf Insert; |
| 023C | f(8FE00000): LDR LNK, SP, 0H |
| 023D | f(4EE8043C): ADD SP, SP, 43CH |
| 023E | f(C700000F): B LNK |
| |
| |
| PROCEDURE underflow(VAR c: DirPage; (*ancestor page*) |
| dpg0: DiskAdr; |
| s: INTEGER; (*insertion point in c*) |
| VAR h: BOOLEAN); (*c undersize*) |
| VAR i, k: INTEGER; |
| dpg1: DiskAdr; |
| a, b: DirPage; (*a := underflowing page, b := neighbouring page*) |
| BEGINg Kernel.GetSector(dpg0,h a)i;j ASSERT(a.mark = DirMark)k;l |
| 023F | g(4EE90824): SUB SP, SP, 824H |
| 0240 | g(AFE00000): STR LNK, SP, 0H |
| 0241 | g(A0E00004): STR R0, SP, 4H |
| 0242 | g(A1E00008): STR R1, SP, 8H |
| 0243 | g(A2E0000C): STR R2, SP, CH |
| 0244 | g(A3E00010): STR R3, SP, 10H |
| 0245 | g(A4E00014): STR R4, SP, 14H |
| 0246 | h(80E0000C): LDR R0, SP, CH |
| 0247 | i(41E80024): ADD R1, SP, 24H |
| 0248 | j .FIXUP P |
| 0248 | j(F710F00D): BL MOD1 [Kernel] PROC15 |
| 0249 | k(80E00024): LDR R0, SP, 24H |
| 024A | k(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 024B | k(4116A38D): IOR R1, R1, FFFFA38DH |
| 024C | k(00090001): SUB R0, R0, R1 |
| 024D | l(D915207C): BLNE MT [trap=7, pos=5408] |
| (*h & a.m = N-1 & dpg0 = c.e[s-1].p*) |
| IF s < c.m THENm (*b := page to the right of a*) |
| 024E | m(80E00010): LDR R0, SP, 10H |
| 024F | m(81E00004): LDR R1, SP, 4H |
| 0250 | m(81100004): LDR R1, R1, 4H |
| 0251 | m(00090001): SUB R0, R0, R1 |
| 0252 | m(ED0000EC): BGE 236 [033FH] |
| dpg1 := c.e[s]n.p;o Kernel.GetSector(dpg1,p b)q;r ASSERT(b.mark = DirMark)s;t |
| 0253 | n(80E00010): LDR R0, SP, 10H |
| 0254 | n(41090018): SUB R1, R0, 18H |
| 0255 | n(DA15931C): BLCC MT [trap=1, pos=5523] |
| 0256 | n(400A0028): MUL R0, R0, 28H |
| 0257 | n(81E00004): LDR R1, SP, 4H |
| 0258 | n(00180000): ADD R0, R1, R0 |
| 0259 | o(80000064): LDR R0, R0, 64H |
| 025A | o(A0E00020): STR R0, SP, 20H |
| 025B | p(80E00020): LDR R0, SP, 20H |
| 025C | q(41E80424): ADD R1, SP, 424H |
| 025D | r .FIXUP P |
| 025D | r(F710F015): BL MOD1 [Kernel] PROC15 |
| 025E | s(80E00424): LDR R0, SP, 424H |
| 025F | s(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0260 | s(4116A38D): IOR R1, R1, FFFFA38DH |
| 0261 | s(00090001): SUB R0, R0, R1 |
| 0262 | t(D915CB7C): BLNE MT [trap=7, pos=5579] |
| k := (b.m-N+u1)v DIV 2;w (*k = no. of items available on page b*) |
| 0263 | u(80E00428): LDR R0, SP, 428H |
| 0264 | u(4009000C): SUB R0, R0, CH |
| 0265 | v(40080001): ADD R0, R0, 1H |
| 0266 | w(40020001): ASR R0, R0, 1H |
| 0267 | w(A0E0001C): STR R0, SP, 1CH |
| a.e[N-1] := c.e[s]x;y a.e[N-1].p := b.p0;z |
| 0268 | x(80E00010): LDR R0, SP, 10H |
| 0269 | x(41090018): SUB R1, R0, 18H |
| 026A | x(DA16291C): BLCC MT [trap=1, pos=5673] |
| 026B | x(400A0028): MUL R0, R0, 28H |
| 026C | x(81E00004): LDR R1, SP, 4H |
| 026D | x(00180000): ADD R0, R1, R0 |
| 026E | y(41E8021C): ADD R1, SP, 21CH |
| 026F | y(40080040): ADD R0, R0, 40H |
| 0270 | y(4200000A): MOV R2, R0, AH |
| 0271 | y(83000000): LDR R3, R0, 0H |
| 0272 | y(40080004): ADD R0, R0, 4H |
| 0273 | y(A3100000): STR R3, R1, 0H |
| 0274 | y(41180004): ADD R1, R1, 4H |
| 0275 | y(42290001): SUB R2, R2, 1H |
| 0276 | y(E9FFFFFA): BNE -6 [0271H] |
| 0277 | z(80E0042C): LDR R0, SP, 42CH |
| 0278 | z(A0E00240): STR R0, SP, 240H |
| IF k > 0 THENa |
| 0279 | a(80E0001C): LDR R0, SP, 1CH |
| 027A | a(40090000): SUB R0, R0, 0H |
| 027B | a(E6000071): BLE 113 [02EDH] |
| (*move k-1 items from b to a, one to c*) i := 0;b |
| 027C | b(40000000): MOV R0, R0, 0H |
| 027D | b(A0E00018): STR R0, SP, 18H |
| WHILE i < k-1 DOc a.e[i+N]d := b.e[i]e;f INC(i) ENDg ; |
| 027E | c(80E0001C): LDR R0, SP, 1CH |
| 027F | c(40090001): SUB R0, R0, 1H |
| 0280 | c(81E00018): LDR R1, SP, 18H |
| 0281 | c(01190000): SUB R1, R1, R0 |
| 0282 | c(ED000018): BGE 24 [029BH] |
| 0283 | d(80E00018): LDR R0, SP, 18H |
| 0284 | d(4008000C): ADD R0, R0, CH |
| 0285 | d(41090018): SUB R1, R0, 18H |
| 0286 | d(DA16AD1C): BLCC MT [trap=1, pos=5805] |
| 0287 | d(400A0028): MUL R0, R0, 28H |
| 0288 | d(00E80000): ADD R0, SP, R0 |
| 0289 | e(81E00018): LDR R1, SP, 18H |
| 028A | e(42190018): SUB R2, R1, 18H |
| 028B | e(DA16B71C): BLCC MT [trap=1, pos=5815] |
| 028C | e(411A0028): MUL R1, R1, 28H |
| 028D | e(01E80001): ADD R1, SP, R1 |
| 028E | f(40080064): ADD R0, R0, 64H |
| 028F | f(41180464): ADD R1, R1, 464H |
| 0290 | f(4200000A): MOV R2, R0, AH |
| 0291 | f(83100000): LDR R3, R1, 0H |
| 0292 | f(41180004): ADD R1, R1, 4H |
| 0293 | f(A3000000): STR R3, R0, 0H |
| 0294 | f(40080004): ADD R0, R0, 4H |
| 0295 | f(42290001): SUB R2, R2, 1H |
| 0296 | f(E9FFFFFA): BNE -6 [0291H] |
| 0297 | g(80E00018): LDR R0, SP, 18H |
| 0298 | g(40080001): ADD R0, R0, 1H |
| 0299 | g(A0E00018): STR R0, SP, 18H |
| 029A | g(E7FFFFE3): B -29 [027EH] |
| c.e[s]h := b.e[i]i;j b.p0 := c.e[s]k.p;l |
| 029B | h(80E00010): LDR R0, SP, 10H |
| 029C | h(41090018): SUB R1, R0, 18H |
| 029D | h(DA16D41C): BLCC MT [trap=1, pos=5844] |
| 029E | h(400A0028): MUL R0, R0, 28H |
| 029F | h(81E00004): LDR R1, SP, 4H |
| 02A0 | h(00180000): ADD R0, R1, R0 |
| 02A1 | i(81E00018): LDR R1, SP, 18H |
| 02A2 | i(42190018): SUB R2, R1, 18H |
| 02A3 | i(DA16DE1C): BLCC MT [trap=1, pos=5854] |
| 02A4 | i(411A0028): MUL R1, R1, 28H |
| 02A5 | i(01E80001): ADD R1, SP, R1 |
| 02A6 | j(40080040): ADD R0, R0, 40H |
| 02A7 | j(41180464): ADD R1, R1, 464H |
| 02A8 | j(4200000A): MOV R2, R0, AH |
| 02A9 | j(83100000): LDR R3, R1, 0H |
| 02AA | j(41180004): ADD R1, R1, 4H |
| 02AB | j(A3000000): STR R3, R0, 0H |
| 02AC | j(40080004): ADD R0, R0, 4H |
| 02AD | j(42290001): SUB R2, R2, 1H |
| 02AE | j(E9FFFFFA): BNE -6 [02A9H] |
| 02AF | k(80E00010): LDR R0, SP, 10H |
| 02B0 | k(41090018): SUB R1, R0, 18H |
| 02B1 | k(DA16EE1C): BLCC MT [trap=1, pos=5870] |
| 02B2 | k(400A0028): MUL R0, R0, 28H |
| 02B3 | k(81E00004): LDR R1, SP, 4H |
| 02B4 | k(00180000): ADD R0, R1, R0 |
| 02B5 | l(80000064): LDR R0, R0, 64H |
| 02B6 | l(A0E0042C): STR R0, SP, 42CH |
| c.e[s]m.p := dpg1;n b.m := b.m - k;o i := 0;p |
| 02B7 | m(80E00010): LDR R0, SP, 10H |
| 02B8 | m(41090018): SUB R1, R0, 18H |
| 02B9 | m(DA17001C): BLCC MT [trap=1, pos=5888] |
| 02BA | m(400A0028): MUL R0, R0, 28H |
| 02BB | m(81E00004): LDR R1, SP, 4H |
| 02BC | m(00180000): ADD R0, R1, R0 |
| 02BD | n(81E00020): LDR R1, SP, 20H |
| 02BE | n(A1000064): STR R1, R0, 64H |
| 02BF | o(80E00428): LDR R0, SP, 428H |
| 02C0 | o(81E0001C): LDR R1, SP, 1CH |
| 02C1 | o(00090001): SUB R0, R0, R1 |
| 02C2 | o(A0E00428): STR R0, SP, 428H |
| 02C3 | p(40000000): MOV R0, R0, 0H |
| 02C4 | p(A0E00018): STR R0, SP, 18H |
| WHILE i < b.m DOq b.e[i]r := b.e[i+k]s;t INC(i) ENDu ; |
| 02C5 | q(80E00018): LDR R0, SP, 18H |
| 02C6 | q(81E00428): LDR R1, SP, 428H |
| 02C7 | q(00090001): SUB R0, R0, R1 |
| 02C8 | q(ED000019): BGE 25 [02E2H] |
| 02C9 | r(80E00018): LDR R0, SP, 18H |
| 02CA | r(41090018): SUB R1, R0, 18H |
| 02CB | r(DA17431C): BLCC MT [trap=1, pos=5955] |
| 02CC | r(400A0028): MUL R0, R0, 28H |
| 02CD | r(00E80000): ADD R0, SP, R0 |
| 02CE | s(81E00018): LDR R1, SP, 18H |
| 02CF | s(82E0001C): LDR R2, SP, 1CH |
| 02D0 | s(01180002): ADD R1, R1, R2 |
| 02D1 | s(42190018): SUB R2, R1, 18H |
| 02D2 | s(DA174F1C): BLCC MT [trap=1, pos=5967] |
| 02D3 | s(411A0028): MUL R1, R1, 28H |
| 02D4 | s(01E80001): ADD R1, SP, R1 |
| 02D5 | t(40080464): ADD R0, R0, 464H |
| 02D6 | t(41180464): ADD R1, R1, 464H |
| 02D7 | t(4200000A): MOV R2, R0, AH |
| 02D8 | t(83100000): LDR R3, R1, 0H |
| 02D9 | t(41180004): ADD R1, R1, 4H |
| 02DA | t(A3000000): STR R3, R0, 0H |
| 02DB | t(40080004): ADD R0, R0, 4H |
| 02DC | t(42290001): SUB R2, R2, 1H |
| 02DD | t(E9FFFFFA): BNE -6 [02D8H] |
| 02DE | u(80E00018): LDR R0, SP, 18H |
| 02DF | u(40080001): ADD R0, R0, 1H |
| 02E0 | u(A0E00018): STR R0, SP, 18H |
| 02E1 | u(E7FFFFE3): B -29 [02C5H] |
| Kernel.PutSector(dpg1,v b)w;x a.m := N-1+k;y h := FALSE |
| 02E2 | v(80E00020): LDR R0, SP, 20H |
| 02E3 | w(41E80424): ADD R1, SP, 424H |
| 02E4 | x .FIXUP P |
| 02E4 | x(F7110087): BL MOD1 [Kernel] PROC16 |
| 02E5 | y(4000000B): MOV R0, R0, BH |
| 02E6 | y(81E0001C): LDR R1, SP, 1CH |
| 02E7 | y(00080001): ADD R0, R0, R1 |
| 02E8 | y(A0E00028): STR R0, SP, 28H |
| ELSEz (*merge pages a and b, discard b*) ia := 0;b |
| 02E9 | z(40000000): MOV R0, R0, 0H |
| 02EA | z(81E00014): LDR R1, SP, 14H |
| 02EB | z(B0100000): STR R0, R1, 0H |
| 02EC | a(E700004E): B 78 [033BH] |
| 02ED | b(40000000): MOV R0, R0, 0H |
| 02EE | b(A0E00018): STR R0, SP, 18H |
| WHILE i < N DOc a.e[i+N]d := b.e[i]e;f INC(i) ENDg ; |
| 02EF | c(80E00018): LDR R0, SP, 18H |
| 02F0 | c(4009000C): SUB R0, R0, CH |
| 02F1 | c(ED000018): BGE 24 [030AH] |
| 02F2 | d(80E00018): LDR R0, SP, 18H |
| 02F3 | d(4008000C): ADD R0, R0, CH |
| 02F4 | d(41090018): SUB R1, R0, 18H |
| 02F5 | d(DA17EF1C): BLCC MT [trap=1, pos=6127] |
| 02F6 | d(400A0028): MUL R0, R0, 28H |
| 02F7 | d(00E80000): ADD R0, SP, R0 |
| 02F8 | e(81E00018): LDR R1, SP, 18H |
| 02F9 | e(42190018): SUB R2, R1, 18H |
| 02FA | e(DA17F91C): BLCC MT [trap=1, pos=6137] |
| 02FB | e(411A0028): MUL R1, R1, 28H |
| 02FC | e(01E80001): ADD R1, SP, R1 |
| 02FD | f(40080064): ADD R0, R0, 64H |
| 02FE | f(41180464): ADD R1, R1, 464H |
| 02FF | f(4200000A): MOV R2, R0, AH |
| 0300 | f(83100000): LDR R3, R1, 0H |
| 0301 | f(41180004): ADD R1, R1, 4H |
| 0302 | f(A3000000): STR R3, R0, 0H |
| 0303 | f(40080004): ADD R0, R0, 4H |
| 0304 | f(42290001): SUB R2, R2, 1H |
| 0305 | f(E9FFFFFA): BNE -6 [0300H] |
| 0306 | g(80E00018): LDR R0, SP, 18H |
| 0307 | g(40080001): ADD R0, R0, 1H |
| 0308 | g(A0E00018): STR R0, SP, 18H |
| 0309 | g(E7FFFFE5): B -27 [02EFH] |
| i := s;h DEC(c.m);i |
| 030A | h(80E00010): LDR R0, SP, 10H |
| 030B | h(A0E00018): STR R0, SP, 18H |
| 030C | i(80E00004): LDR R0, SP, 4H |
| 030D | i(40080004): ADD R0, R0, 4H |
| 030E | i(81000000): LDR R1, R0, 0H |
| 030F | i(41190001): SUB R1, R1, 1H |
| 0310 | i(A1000000): STR R1, R0, 0H |
| WHILE i < c.m DOj c.e[i]k := c.e[i+1]l;m INC(i) ENDn ; |
| 0311 | j(80E00018): LDR R0, SP, 18H |
| 0312 | j(81E00004): LDR R1, SP, 4H |
| 0313 | j(81100004): LDR R1, R1, 4H |
| 0314 | j(00090001): SUB R0, R0, R1 |
| 0315 | j(ED00001A): BGE 26 [0330H] |
| 0316 | k(80E00018): LDR R0, SP, 18H |
| 0317 | k(41090018): SUB R1, R0, 18H |
| 0318 | k(DA18411C): BLCC MT [trap=1, pos=6209] |
| 0319 | k(400A0028): MUL R0, R0, 28H |
| 031A | k(81E00004): LDR R1, SP, 4H |
| 031B | k(00180000): ADD R0, R1, R0 |
| 031C | l(81E00018): LDR R1, SP, 18H |
| 031D | l(41180001): ADD R1, R1, 1H |
| 031E | l(42190018): SUB R2, R1, 18H |
| 031F | l(DA184D1C): BLCC MT [trap=1, pos=6221] |
| 0320 | l(411A0028): MUL R1, R1, 28H |
| 0321 | l(82E00004): LDR R2, SP, 4H |
| 0322 | l(01280001): ADD R1, R2, R1 |
| 0323 | m(40080040): ADD R0, R0, 40H |
| 0324 | m(41180040): ADD R1, R1, 40H |
| 0325 | m(4200000A): MOV R2, R0, AH |
| 0326 | m(83100000): LDR R3, R1, 0H |
| 0327 | m(41180004): ADD R1, R1, 4H |
| 0328 | m(A3000000): STR R3, R0, 0H |
| 0329 | m(40080004): ADD R0, R0, 4H |
| 032A | m(42290001): SUB R2, R2, 1H |
| 032B | m(E9FFFFFA): BNE -6 [0326H] |
| 032C | n(80E00018): LDR R0, SP, 18H |
| 032D | n(40080001): ADD R0, R0, 1H |
| 032E | n(A0E00018): STR R0, SP, 18H |
| 032F | n(E7FFFFE1): B -31 [0311H] |
| a.m := 2*N;o h := c.m < N |
| 0330 | o(40000018): MOV R0, R0, 18H |
| 0331 | o(A0E00028): STR R0, SP, 28H |
| ENDp ; |
| 0332 | p(80E00004): LDR R0, SP, 4H |
| 0333 | p(80000004): LDR R0, R0, 4H |
| 0334 | p(4009000C): SUB R0, R0, CH |
| 0335 | p(ED000002): BGE 2 [0338H] |
| 0336 | p(40000001): MOV R0, R0, 1H |
| 0337 | p(E7000001): B 1 [0339H] |
| 0338 | p(40000000): MOV R0, R0, 0H |
| 0339 | p(81E00014): LDR R1, SP, 14H |
| 033A | p(B0100000): STR R0, R1, 0H |
| Kernel.PutSector(dpg0,q a)r |
| 033B | q(80E0000C): LDR R0, SP, CH |
| 033C | r(41E80024): ADD R1, SP, 24H |
| ELSEs (*b := page to the left of a*) DECt(s);u |
| 033D | s .FIXUP P |
| 033D | s(F7110059): BL MOD1 [Kernel] PROC16 |
| 033E | t(E70000F6): B 246 [0435H] |
| 033F | u(80E00010): LDR R0, SP, 10H |
| 0340 | u(40090001): SUB R0, R0, 1H |
| 0341 | u(A0E00010): STR R0, SP, 10H |
| IF s = 0 THENv dpg1 := c.p0 ELSEw dpg1x := c.e[s-1]y.p ENDz ; |
| 0342 | v(80E00010): LDR R0, SP, 10H |
| 0343 | v(E9000004): BNE 4 [0348H] |
| 0344 | w(80E00004): LDR R0, SP, 4H |
| 0345 | w(80000008): LDR R0, R0, 8H |
| 0346 | w(A0E00020): STR R0, SP, 20H |
| 0347 | x(E7000009): B 9 [0351H] |
| 0348 | y(80E00010): LDR R0, SP, 10H |
| 0349 | y(40090001): SUB R0, R0, 1H |
| 034A | y(41090018): SUB R1, R0, 18H |
| 034B | y(DA190F1C): BLCC MT [trap=1, pos=6415] |
| 034C | y(400A0028): MUL R0, R0, 28H |
| 034D | y(81E00004): LDR R1, SP, 4H |
| 034E | y(00180000): ADD R0, R1, R0 |
| 034F | z(80000064): LDR R0, R0, 64H |
| 0350 | z(A0E00020): STR R0, SP, 20H |
| Kernel.GetSector(dpg1,a b)b;c ASSERT(b.mark = DirMark)d;e |
| 0351 | a(80E00020): LDR R0, SP, 20H |
| 0352 | b(41E80424): ADD R1, SP, 424H |
| 0353 | c .FIXUP P |
| 0353 | c(F710F016): BL MOD1 [Kernel] PROC15 |
| 0354 | d(80E00424): LDR R0, SP, 424H |
| 0355 | d(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0356 | d(4116A38D): IOR R1, R1, FFFFA38DH |
| 0357 | d(00090001): SUB R0, R0, R1 |
| 0358 | e(D919527C): BLNE MT [trap=7, pos=6482] |
| k := (b.m-N+f1)g DIV 2;h (*k = no. of items available on page b*) |
| 0359 | f(80E00428): LDR R0, SP, 428H |
| 035A | f(4009000C): SUB R0, R0, CH |
| 035B | g(40080001): ADD R0, R0, 1H |
| 035C | h(40020001): ASR R0, R0, 1H |
| 035D | h(A0E0001C): STR R0, SP, 1CH |
| IF k > 0 THENi |
| 035E | i(80E0001C): LDR R0, SP, 1CH |
| 035F | i(40090000): SUB R0, R0, 0H |
| 0360 | i(E600008C): BLE 140 [03EDH] |
| i := N-1;j |
| 0361 | j(4000000B): MOV R0, R0, BH |
| 0362 | j(A0E00018): STR R0, SP, 18H |
| WHILE i > 0 DOk DEC(i);l a.e[i+k]m := a.e[i]n ENDo ; |
| 0363 | k(80E00018): LDR R0, SP, 18H |
| 0364 | k(40090000): SUB R0, R0, 0H |
| 0365 | k(E6000019): BLE 25 [037FH] |
| 0366 | l(80E00018): LDR R0, SP, 18H |
| 0367 | l(40090001): SUB R0, R0, 1H |
| 0368 | l(A0E00018): STR R0, SP, 18H |
| 0369 | m(80E00018): LDR R0, SP, 18H |
| 036A | m(81E0001C): LDR R1, SP, 1CH |
| 036B | m(00080001): ADD R0, R0, R1 |
| 036C | m(41090018): SUB R1, R0, 18H |
| 036D | m(DA19E51C): BLCC MT [trap=1, pos=6629] |
| 036E | m(400A0028): MUL R0, R0, 28H |
| 036F | m(00E80000): ADD R0, SP, R0 |
| 0370 | n(81E00018): LDR R1, SP, 18H |
| 0371 | n(42190018): SUB R2, R1, 18H |
| 0372 | n(DA19EF1C): BLCC MT [trap=1, pos=6639] |
| 0373 | n(411A0028): MUL R1, R1, 28H |
| 0374 | n(01E80001): ADD R1, SP, R1 |
| 0375 | o(40080064): ADD R0, R0, 64H |
| 0376 | o(41180064): ADD R1, R1, 64H |
| 0377 | o(4200000A): MOV R2, R0, AH |
| 0378 | o(83100000): LDR R3, R1, 0H |
| 0379 | o(41180004): ADD R1, R1, 4H |
| 037A | o(A3000000): STR R3, R0, 0H |
| 037B | o(40080004): ADD R0, R0, 4H |
| 037C | o(42290001): SUB R2, R2, 1H |
| 037D | o(E9FFFFFA): BNE -6 [0378H] |
| 037E | o(E7FFFFE4): B -28 [0363H] |
| i := k-1;p a.e[i]q := c.e[s]r;s a.e[i]t.p := a.p0;u |
| 037F | p(80E0001C): LDR R0, SP, 1CH |
| 0380 | p(40090001): SUB R0, R0, 1H |
| 0381 | p(A0E00018): STR R0, SP, 18H |
| 0382 | q(80E00018): LDR R0, SP, 18H |
| 0383 | q(41090018): SUB R1, R0, 18H |
| 0384 | q(DA1A0E1C): BLCC MT [trap=1, pos=6670] |
| 0385 | q(400A0028): MUL R0, R0, 28H |
| 0386 | q(00E80000): ADD R0, SP, R0 |
| 0387 | r(81E00010): LDR R1, SP, 10H |
| 0388 | r(42190018): SUB R2, R1, 18H |
| 0389 | r(DA1A181C): BLCC MT [trap=1, pos=6680] |
| 038A | r(411A0028): MUL R1, R1, 28H |
| 038B | r(82E00004): LDR R2, SP, 4H |
| 038C | r(01280001): ADD R1, R2, R1 |
| 038D | s(40080064): ADD R0, R0, 64H |
| 038E | s(41180040): ADD R1, R1, 40H |
| 038F | s(4200000A): MOV R2, R0, AH |
| 0390 | s(83100000): LDR R3, R1, 0H |
| 0391 | s(41180004): ADD R1, R1, 4H |
| 0392 | s(A3000000): STR R3, R0, 0H |
| 0393 | s(40080004): ADD R0, R0, 4H |
| 0394 | s(42290001): SUB R2, R2, 1H |
| 0395 | s(E9FFFFFA): BNE -6 [0390H] |
| 0396 | t(80E00018): LDR R0, SP, 18H |
| 0397 | t(41090018): SUB R1, R0, 18H |
| 0398 | t(DA1A201C): BLCC MT [trap=1, pos=6688] |
| 0399 | t(400A0028): MUL R0, R0, 28H |
| 039A | t(00E80000): ADD R0, SP, R0 |
| 039B | u(81E0002C): LDR R1, SP, 2CH |
| 039C | u(A1000088): STR R1, R0, 88H |
| (*move k-1 items from b to a, one to c*) b.m := b.m - k;v |
| 039D | v(80E00428): LDR R0, SP, 428H |
| 039E | v(81E0001C): LDR R1, SP, 1CH |
| 039F | v(00090001): SUB R0, R0, R1 |
| 03A0 | v(A0E00428): STR R0, SP, 428H |
| WHILE i > 0 DOw DEC(i);x a.e[i]y := b.e[i+b.m+z1]a ENDb ; |
| 03A1 | w(80E00018): LDR R0, SP, 18H |
| 03A2 | w(40090000): SUB R0, R0, 0H |
| 03A3 | w(E600001A): BLE 26 [03BEH] |
| 03A4 | x(80E00018): LDR R0, SP, 18H |
| 03A5 | x(40090001): SUB R0, R0, 1H |
| 03A6 | x(A0E00018): STR R0, SP, 18H |
| 03A7 | y(80E00018): LDR R0, SP, 18H |
| 03A8 | y(41090018): SUB R1, R0, 18H |
| 03A9 | y(DA1A921C): BLCC MT [trap=1, pos=6802] |
| 03AA | y(400A0028): MUL R0, R0, 28H |
| 03AB | y(00E80000): ADD R0, SP, R0 |
| 03AC | z(81E00018): LDR R1, SP, 18H |
| 03AD | z(82E00428): LDR R2, SP, 428H |
| 03AE | z(01180002): ADD R1, R1, R2 |
| 03AF | a(41180001): ADD R1, R1, 1H |
| 03B0 | a(42190018): SUB R2, R1, 18H |
| 03B1 | a(DA1AA21C): BLCC MT [trap=1, pos=6818] |
| 03B2 | a(411A0028): MUL R1, R1, 28H |
| 03B3 | a(01E80001): ADD R1, SP, R1 |
| 03B4 | b(40080064): ADD R0, R0, 64H |
| 03B5 | b(41180464): ADD R1, R1, 464H |
| 03B6 | b(4200000A): MOV R2, R0, AH |
| 03B7 | b(83100000): LDR R3, R1, 0H |
| 03B8 | b(41180004): ADD R1, R1, 4H |
| 03B9 | b(A3000000): STR R3, R0, 0H |
| 03BA | b(40080004): ADD R0, R0, 4H |
| 03BB | b(42290001): SUB R2, R2, 1H |
| 03BC | b(E9FFFFFA): BNE -6 [03B7H] |
| 03BD | b(E7FFFFE3): B -29 [03A1H] |
| c.e[s]c := b.e[b.m]d;e a.p0 := c.e[s]f.p;g |
| 03BE | c(80E00010): LDR R0, SP, 10H |
| 03BF | c(41090018): SUB R1, R0, 18H |
| 03C0 | c(DA1AB71C): BLCC MT [trap=1, pos=6839] |
| 03C1 | c(400A0028): MUL R0, R0, 28H |
| 03C2 | c(81E00004): LDR R1, SP, 4H |
| 03C3 | c(00180000): ADD R0, R1, R0 |
| 03C4 | d(81E00428): LDR R1, SP, 428H |
| 03C5 | d(42190018): SUB R2, R1, 18H |
| 03C6 | d(DA1AC31C): BLCC MT [trap=1, pos=6851] |
| 03C7 | d(411A0028): MUL R1, R1, 28H |
| 03C8 | d(01E80001): ADD R1, SP, R1 |
| 03C9 | e(40080040): ADD R0, R0, 40H |
| 03CA | e(41180464): ADD R1, R1, 464H |
| 03CB | e(4200000A): MOV R2, R0, AH |
| 03CC | e(83100000): LDR R3, R1, 0H |
| 03CD | e(41180004): ADD R1, R1, 4H |
| 03CE | e(A3000000): STR R3, R0, 0H |
| 03CF | e(40080004): ADD R0, R0, 4H |
| 03D0 | e(42290001): SUB R2, R2, 1H |
| 03D1 | e(E9FFFFFA): BNE -6 [03CCH] |
| 03D2 | f(80E00010): LDR R0, SP, 10H |
| 03D3 | f(41090018): SUB R1, R0, 18H |
| 03D4 | f(DA1AD31C): BLCC MT [trap=1, pos=6867] |
| 03D5 | f(400A0028): MUL R0, R0, 28H |
| 03D6 | f(81E00004): LDR R1, SP, 4H |
| 03D7 | f(00180000): ADD R0, R1, R0 |
| 03D8 | g(80000064): LDR R0, R0, 64H |
| 03D9 | g(A0E0002C): STR R0, SP, 2CH |
| c.e[s]h.p := dpg0;i a.m := N-1+k;j h := FALSE;k |
| 03DA | h(80E00010): LDR R0, SP, 10H |
| 03DB | h(41090018): SUB R1, R0, 18H |
| 03DC | h(DA1AE51C): BLCC MT [trap=1, pos=6885] |
| 03DD | h(400A0028): MUL R0, R0, 28H |
| 03DE | h(81E00004): LDR R1, SP, 4H |
| 03DF | h(00180000): ADD R0, R1, R0 |
| 03E0 | i(81E0000C): LDR R1, SP, CH |
| 03E1 | i(A1000064): STR R1, R0, 64H |
| 03E2 | j(4000000B): MOV R0, R0, BH |
| 03E3 | j(81E0001C): LDR R1, SP, 1CH |
| 03E4 | j(00080001): ADD R0, R0, R1 |
| 03E5 | j(A0E00028): STR R0, SP, 28H |
| 03E6 | k(40000000): MOV R0, R0, 0H |
| 03E7 | k(81E00014): LDR R1, SP, 14H |
| 03E8 | k(B0100000): STR R0, R1, 0H |
| Kernel.PutSector(dpg0,l a)m |
| 03E9 | l(80E0000C): LDR R0, SP, CH |
| 03EA | m(41E80024): ADD R1, SP, 24H |
| ELSEn (*merge pages a and b, discard a*) |
| 03EB | n .FIXUP P |
| 03EB | n(F7110098): BL MOD1 [Kernel] PROC16 |
| co.e[s]p.p := a.p0;q b.e[N] := c.e[s]r;s i := 0;t |
| 03EC | o(E7000045): B 69 [0432H] |
| 03ED | p(80E00010): LDR R0, SP, 10H |
| 03EE | p(41090018): SUB R1, R0, 18H |
| 03EF | p(DA1B691C): BLCC MT [trap=1, pos=7017] |
| 03F0 | p(400A0028): MUL R0, R0, 28H |
| 03F1 | p(81E00004): LDR R1, SP, 4H |
| 03F2 | p(00180000): ADD R0, R1, R0 |
| 03F3 | q(81E0002C): LDR R1, SP, 2CH |
| 03F4 | q(A1000064): STR R1, R0, 64H |
| 03F5 | r(80E00010): LDR R0, SP, 10H |
| 03F6 | r(41090018): SUB R1, R0, 18H |
| 03F7 | r(DA1B851C): BLCC MT [trap=1, pos=7045] |
| 03F8 | r(400A0028): MUL R0, R0, 28H |
| 03F9 | r(81E00004): LDR R1, SP, 4H |
| 03FA | r(00180000): ADD R0, R1, R0 |
| 03FB | s(41E80644): ADD R1, SP, 644H |
| 03FC | s(40080040): ADD R0, R0, 40H |
| 03FD | s(4200000A): MOV R2, R0, AH |
| 03FE | s(83000000): LDR R3, R0, 0H |
| 03FF | s(40080004): ADD R0, R0, 4H |
| 0400 | s(A3100000): STR R3, R1, 0H |
| 0401 | s(41180004): ADD R1, R1, 4H |
| 0402 | s(42290001): SUB R2, R2, 1H |
| 0403 | s(E9FFFFFA): BNE -6 [03FEH] |
| 0404 | t(40000000): MOV R0, R0, 0H |
| 0405 | t(A0E00018): STR R0, SP, 18H |
| WHILE i < N-1 DOu b.e[i+N+v1]w := a.e[i]x;y INC(i) ENDz ; |
| 0406 | u(80E00018): LDR R0, SP, 18H |
| 0407 | u(4009000B): SUB R0, R0, BH |
| 0408 | u(ED000019): BGE 25 [0422H] |
| 0409 | v(80E00018): LDR R0, SP, 18H |
| 040A | v(4008000C): ADD R0, R0, CH |
| 040B | w(40080001): ADD R0, R0, 1H |
| 040C | w(41090018): SUB R1, R0, 18H |
| 040D | w(DA1BB21C): BLCC MT [trap=1, pos=7090] |
| 040E | w(400A0028): MUL R0, R0, 28H |
| 040F | w(00E80000): ADD R0, SP, R0 |
| 0410 | x(81E00018): LDR R1, SP, 18H |
| 0411 | x(42190018): SUB R2, R1, 18H |
| 0412 | x(DA1BBC1C): BLCC MT [trap=1, pos=7100] |
| 0413 | x(411A0028): MUL R1, R1, 28H |
| 0414 | x(01E80001): ADD R1, SP, R1 |
| 0415 | y(40080464): ADD R0, R0, 464H |
| 0416 | y(41180064): ADD R1, R1, 64H |
| 0417 | y(4200000A): MOV R2, R0, AH |
| 0418 | y(83100000): LDR R3, R1, 0H |
| 0419 | y(41180004): ADD R1, R1, 4H |
| 041A | y(A3000000): STR R3, R0, 0H |
| 041B | y(40080004): ADD R0, R0, 4H |
| 041C | y(42290001): SUB R2, R2, 1H |
| 041D | y(E9FFFFFA): BNE -6 [0418H] |
| 041E | z(80E00018): LDR R0, SP, 18H |
| 041F | z(40080001): ADD R0, R0, 1H |
| 0420 | z(A0E00018): STR R0, SP, 18H |
| 0421 | z(E7FFFFE4): B -28 [0406H] |
| b.m := 2*N;a DEC(c.m);b h := c.m < N |
| 0422 | a(40000018): MOV R0, R0, 18H |
| 0423 | a(A0E00428): STR R0, SP, 428H |
| 0424 | b(80E00004): LDR R0, SP, 4H |
| 0425 | b(40080004): ADD R0, R0, 4H |
| 0426 | b(81000000): LDR R1, R0, 0H |
| 0427 | b(41190001): SUB R1, R1, 1H |
| 0428 | b(A1000000): STR R1, R0, 0H |
| ENDc ; |
| 0429 | c(80E00004): LDR R0, SP, 4H |
| 042A | c(80000004): LDR R0, R0, 4H |
| 042B | c(4009000C): SUB R0, R0, CH |
| 042C | c(ED000002): BGE 2 [042FH] |
| 042D | c(40000001): MOV R0, R0, 1H |
| 042E | c(E7000001): B 1 [0430H] |
| 042F | c(40000000): MOV R0, R0, 0H |
| 0430 | c(81E00014): LDR R1, SP, 14H |
| 0431 | c(B0100000): STR R0, R1, 0H |
| Kernel.PutSector(dpg1,d b)e |
| 0432 | d(80E00020): LDR R0, SP, 20H |
| 0433 | e(41E80424): ADD R1, SP, 424H |
| ENDf |
| 0434 | f .FIXUP P |
| 0434 | f(F7110049): BL MOD1 [Kernel] PROC16 |
| ENDg underflow; |
| 0435 | g(8FE00000): LDR LNK, SP, 0H |
| 0436 | g(4EE80824): ADD SP, SP, 824H |
| 0437 | g(C700000F): B LNK |
| |
| PROCEDURE delete(name: FileName; |
| dpg0: DiskAdr; |
| VAR h: BOOLEAN; |
| VAR fad: DiskAdr); |
| (*search and delete entry with key name; if a page underflow arises, |
| balance with adjacent page or merge; h := "page dpg0 is undersize"*) |
| |
| VAR i, L, R: INTEGER; |
| dpg1: DiskAdr; |
| a: DirPage; |
| |
| PROCEDUREh del(VAR a: DirPage; R: INTEGER; dpg1: DiskAdr; VAR h: BOOLEAN); |
| 0438 | h(E7000061): B 97 [049AH] |
| VAR dpg2: DiskAdr; (*global: a, R*) |
| b: DirPage; |
| BEGINi Kernel.GetSector(dpg1,j b)k;l ASSERT(b.mark = DirMark)m;n dpg2 := b.e[b.m-1]o.p;p |
| 0439 | i(4EE9041C): SUB SP, SP, 41CH |
| 043A | i(AFE00000): STR LNK, SP, 0H |
| 043B | i(A0E00004): STR R0, SP, 4H |
| 043C | i(A1E00008): STR R1, SP, 8H |
| 043D | i(A2E0000C): STR R2, SP, CH |
| 043E | i(A3E00010): STR R3, SP, 10H |
| 043F | i(A4E00014): STR R4, SP, 14H |
| 0440 | j(80E00010): LDR R0, SP, 10H |
| 0441 | k(41E8001C): ADD R1, SP, 1CH |
| 0442 | l .FIXUP P |
| 0442 | l(F710F00E): BL MOD1 [Kernel] PROC15 |
| 0443 | m(80E0001C): LDR R0, SP, 1CH |
| 0444 | m(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0445 | m(4116A38D): IOR R1, R1, FFFFA38DH |
| 0446 | m(00090001): SUB R0, R0, R1 |
| 0447 | n(D91E6A7C): BLNE MT [trap=7, pos=7786] |
| 0448 | o(80E00020): LDR R0, SP, 20H |
| 0449 | o(40090001): SUB R0, R0, 1H |
| 044A | o(41090018): SUB R1, R0, 18H |
| 044B | o(DA1E7D1C): BLCC MT [trap=1, pos=7805] |
| 044C | o(400A0028): MUL R0, R0, 28H |
| 044D | o(00E80000): ADD R0, SP, R0 |
| 044E | p(80000080): LDR R0, R0, 80H |
| 044F | p(A0E00018): STR R0, SP, 18H |
| IF dpg2 # 0 THENq del(a,r R,s dpg2,t h)u;v |
| 0450 | q(80E00018): LDR R0, SP, 18H |
| 0451 | q(E1000014): BEQ 20 [0466H] |
| 0452 | r(80E00004): LDR R0, SP, 4H |
| 0453 | r(81E00008): LDR R1, SP, 8H |
| 0454 | s(82E0000C): LDR R2, SP, CH |
| 0455 | t(83E00018): LDR R3, SP, 18H |
| 0456 | u(84E00014): LDR R4, SP, 14H |
| 0457 | v(F7FFFFE1): BL -31 [0439H] |
| IF h THENw underflow(b,x dpg2,y b.m,z h)a;b Kernel.PutSector(dpg1,c b)d ENDe |
| 0458 | w(80E00014): LDR R0, SP, 14H |
| 0459 | w(90000000): LDR R0, R0, 0H |
| 045A | w(E100000A): BEQ 10 [0465H] |
| 045B | x(40E8001C): ADD R0, SP, 1CH |
| 045C | x .FIXUP D |
| 045C | x(8D000247): LDR SB, MT, MOD0 [FileDir] |
| 045D | x(41D80028): ADD R1, SB, 28H [data] |
| 045E | y(82E00018): LDR R2, SP, 18H |
| 045F | z(83E00020): LDR R3, SP, 20H |
| 0460 | a(84E00014): LDR R4, SP, 14H |
| 0461 | b(F7FFFDDD): BL -547 [023FH] |
| 0462 | c(80E00010): LDR R0, SP, 10H |
| 0463 | d(41E8001C): ADD R1, SP, 1CH |
| 0464 | e .FIXUP P |
| 0464 | e(F7110022): BL MOD1 [Kernel] PROC16 |
| ELSE |
| bf.e[b.m-1]g.p := a.e[R]h.p;i a.e[R]j := b.e[b.m-1]k;l |
| 0465 | f(E7000031): B 49 [0497H] |
| 0466 | g(80E00020): LDR R0, SP, 20H |
| 0467 | g(40090001): SUB R0, R0, 1H |
| 0468 | g(41090018): SUB R1, R0, 18H |
| 0469 | g(DA1F151C): BLCC MT [trap=1, pos=7957] |
| 046A | g(400A0028): MUL R0, R0, 28H |
| 046B | g(00E80000): ADD R0, SP, R0 |
| 046C | h(81E0000C): LDR R1, SP, CH |
| 046D | h(42190018): SUB R2, R1, 18H |
| 046E | h(DA1F211C): BLCC MT [trap=1, pos=7969] |
| 046F | h(411A0028): MUL R1, R1, 28H |
| 0470 | h(82E00004): LDR R2, SP, 4H |
| 0471 | h(01280001): ADD R1, R2, R1 |
| 0472 | i(81100064): LDR R1, R1, 64H |
| 0473 | i(A1000080): STR R1, R0, 80H |
| 0474 | j(80E0000C): LDR R0, SP, CH |
| 0475 | j(41090018): SUB R1, R0, 18H |
| 0476 | j(DA1F2B1C): BLCC MT [trap=1, pos=7979] |
| 0477 | j(400A0028): MUL R0, R0, 28H |
| 0478 | j(81E00004): LDR R1, SP, 4H |
| 0479 | j(00180000): ADD R0, R1, R0 |
| 047A | k(81E00020): LDR R1, SP, 20H |
| 047B | k(41190001): SUB R1, R1, 1H |
| 047C | k(42190018): SUB R2, R1, 18H |
| 047D | k(DA1F391C): BLCC MT [trap=1, pos=7993] |
| 047E | k(411A0028): MUL R1, R1, 28H |
| 047F | k(01E80001): ADD R1, SP, R1 |
| 0480 | l(40080040): ADD R0, R0, 40H |
| 0481 | l(4118005C): ADD R1, R1, 5CH |
| 0482 | l(4200000A): MOV R2, R0, AH |
| 0483 | l(83100000): LDR R3, R1, 0H |
| 0484 | l(41180004): ADD R1, R1, 4H |
| 0485 | l(A3000000): STR R3, R0, 0H |
| 0486 | l(40080004): ADD R0, R0, 4H |
| 0487 | l(42290001): SUB R2, R2, 1H |
| 0488 | l(E9FFFFFA): BNE -6 [0483H] |
| DEC(b.m);m h := b.m < N;n Kernel.PutSector(dpg1,o b)p |
| 0489 | m(80E00020): LDR R0, SP, 20H |
| 048A | m(40090001): SUB R0, R0, 1H |
| 048B | m(A0E00020): STR R0, SP, 20H |
| 048C | n(80E00020): LDR R0, SP, 20H |
| 048D | n(4009000C): SUB R0, R0, CH |
| 048E | n(ED000002): BGE 2 [0491H] |
| 048F | n(40000001): MOV R0, R0, 1H |
| 0490 | n(E7000001): B 1 [0492H] |
| 0491 | n(40000000): MOV R0, R0, 0H |
| 0492 | n(81E00014): LDR R1, SP, 14H |
| 0493 | n(B0100000): STR R0, R1, 0H |
| 0494 | o(80E00010): LDR R0, SP, 10H |
| 0495 | p(41E8001C): ADD R1, SP, 1CH |
| ENDq |
| 0496 | q .FIXUP P |
| 0496 | q(F7110032): BL MOD1 [Kernel] PROC16 |
| ENDr del; |
| 0497 | r(8FE00000): LDR LNK, SP, 0H |
| 0498 | r(4EE8041C): ADD SP, SP, 41CH |
| 0499 | r(C700000F): B LNK |
| |
| BEGINs (*~h*) Kernel.GetSector(dpg0,t a)u;v ASSERT(a.mark = DirMark)w;x |
| 049A | s(4EE90424): SUB SP, SP, 424H |
| 049B | s(AFE00000): STR LNK, SP, 0H |
| 049C | s(A0E00004): STR R0, SP, 4H |
| 049D | s(A1E00008): STR R1, SP, 8H |
| 049E | s(A2E0000C): STR R2, SP, CH |
| 049F | s(A3E00010): STR R3, SP, 10H |
| 04A0 | t(80E00008): LDR R0, SP, 8H |
| 04A1 | u(41E80024): ADD R1, SP, 24H |
| 04A2 | v .FIXUP P |
| 04A2 | v(F710F00C): BL MOD1 [Kernel] PROC15 |
| 04A3 | w(80E00024): LDR R0, SP, 24H |
| 04A4 | w(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 04A5 | w(4116A38D): IOR R1, R1, FFFFA38DH |
| 04A6 | w(00090001): SUB R0, R0, R1 |
| 04A7 | x(D91FD07C): BLNE MT [trap=7, pos=8144] |
| L := 0;y R := a.m;z (*binary search*) |
| 04A8 | y(40000000): MOV R0, R0, 0H |
| 04A9 | y(A0E00018): STR R0, SP, 18H |
| 04AA | z(80E00028): LDR R0, SP, 28H |
| 04AB | z(A0E0001C): STR R0, SP, 1CH |
| WHILE L < R DOa |
| 04AC | a(80E00018): LDR R0, SP, 18H |
| 04AD | a(81E0001C): LDR R1, SP, 1CH |
| 04AE | a(00090001): SUB R0, R0, R1 |
| 04AF | a(ED00001C): BGE 28 [04CCH] |
| i := (L+R)b DIV 2;c |
| 04B0 | b(80E00018): LDR R0, SP, 18H |
| 04B1 | b(81E0001C): LDR R1, SP, 1CH |
| 04B2 | b(00080001): ADD R0, R0, R1 |
| 04B3 | c(40020001): ASR R0, R0, 1H |
| 04B4 | c(A0E00014): STR R0, SP, 14H |
| IF name <= a.e[i]d.name THENe R := i ELSEf Lg := i+1 ENDh |
| 04B5 | d(80E00014): LDR R0, SP, 14H |
| 04B6 | d(41090018): SUB R1, R0, 18H |
| 04B7 | d(DA203B1C): BLCC MT [trap=1, pos=8251] |
| 04B8 | d(400A0028): MUL R0, R0, 28H |
| 04B9 | d(00E80000): ADD R0, SP, R0 |
| 04BA | e(81E00004): LDR R1, SP, 4H |
| 04BB | e(40080064): ADD R0, R0, 64H |
| 04BC | e(92100000): LDR R2, R1, 0H |
| 04BD | e(41180001): ADD R1, R1, 1H |
| 04BE | e(93000000): LDR R3, R0, 0H |
| 04BF | e(40080001): ADD R0, R0, 1H |
| 04C0 | e(04290003): SUB R4, R2, R3 |
| 04C1 | e(E9000002): BNE 2 [04C4H] |
| 04C2 | e(44290000): SUB R4, R2, 0H |
| 04C3 | e(E9FFFFF8): BNE -8 [04BCH] |
| 04C4 | e(EE000003): BGT 3 [04C8H] |
| 04C5 | f(80E00014): LDR R0, SP, 14H |
| 04C6 | f(A0E0001C): STR R0, SP, 1CH |
| 04C7 | g(E7000003): B 3 [04CBH] |
| 04C8 | h(80E00014): LDR R0, SP, 14H |
| 04C9 | h(40080001): ADD R0, R0, 1H |
| 04CA | h(A0E00018): STR R0, SP, 18H |
| ENDi ; |
| 04CB | i(E7FFFFE0): B -32 [04ACH] |
| IF R = 0 THENj dpg1 := a.p0 ELSEk dpg1l := a.e[R-1]m.p ENDn ; |
| 04CC | j(80E0001C): LDR R0, SP, 1CH |
| 04CD | j(E9000003): BNE 3 [04D1H] |
| 04CE | k(80E0002C): LDR R0, SP, 2CH |
| 04CF | k(A0E00020): STR R0, SP, 20H |
| 04D0 | l(E7000008): B 8 [04D9H] |
| 04D1 | m(80E0001C): LDR R0, SP, 1CH |
| 04D2 | m(40090001): SUB R0, R0, 1H |
| 04D3 | m(41090018): SUB R1, R0, 18H |
| 04D4 | m(DA209D1C): BLCC MT [trap=1, pos=8349] |
| 04D5 | m(400A0028): MUL R0, R0, 28H |
| 04D6 | m(00E80000): ADD R0, SP, R0 |
| 04D7 | n(80000088): LDR R0, R0, 88H |
| 04D8 | n(A0E00020): STR R0, SP, 20H |
| IF (R < a.m)o & (pname = a.e[R]q.name)r THENs |
| 04D9 | o(80E0001C): LDR R0, SP, 1CH |
| 04DA | o(81E00028): LDR R1, SP, 28H |
| 04DB | o(00090001): SUB R0, R0, R1 |
| 04DC | p(ED000059): BGE 89 [0536H] |
| 04DD | q(80E0001C): LDR R0, SP, 1CH |
| 04DE | q(41090018): SUB R1, R0, 18H |
| 04DF | q(DA20C71C): BLCC MT [trap=1, pos=8391] |
| 04E0 | q(400A0028): MUL R0, R0, 28H |
| 04E1 | q(00E80000): ADD R0, SP, R0 |
| 04E2 | r(81E00004): LDR R1, SP, 4H |
| 04E3 | r(40080064): ADD R0, R0, 64H |
| 04E4 | r(92100000): LDR R2, R1, 0H |
| 04E5 | r(41180001): ADD R1, R1, 1H |
| 04E6 | r(93000000): LDR R3, R0, 0H |
| 04E7 | r(40080001): ADD R0, R0, 1H |
| 04E8 | r(04290003): SUB R4, R2, R3 |
| 04E9 | r(E9000002): BNE 2 [04ECH] |
| 04EA | r(44290000): SUB R4, R2, 0H |
| 04EB | r(E9FFFFF8): BNE -8 [04E4H] |
| 04EC | s(E9000049): BNE 73 [0536H] |
| (*found, now delete*) fad := a.e[R]t.adr;u |
| 04ED | t(80E0001C): LDR R0, SP, 1CH |
| 04EE | t(41090018): SUB R1, R0, 18H |
| 04EF | t(DA20FC1C): BLCC MT [trap=1, pos=8444] |
| 04F0 | t(400A0028): MUL R0, R0, 28H |
| 04F1 | t(00E80000): ADD R0, SP, R0 |
| 04F2 | u(80000084): LDR R0, R0, 84H |
| 04F3 | u(81E00010): LDR R1, SP, 10H |
| 04F4 | u(A0100000): STR R0, R1, 0H |
| IF dpg1 = 0 THENv (*a is a leaf page*) |
| 04F5 | v(80E00020): LDR R0, SP, 20H |
| 04F6 | v(E900002A): BNE 42 [0521H] |
| DEC(a.m);w h := a.m < N;x i := R;y |
| 04F7 | w(80E00028): LDR R0, SP, 28H |
| 04F8 | w(40090001): SUB R0, R0, 1H |
| 04F9 | w(A0E00028): STR R0, SP, 28H |
| 04FA | x(80E00028): LDR R0, SP, 28H |
| 04FB | x(4009000C): SUB R0, R0, CH |
| 04FC | x(ED000002): BGE 2 [04FFH] |
| 04FD | x(40000001): MOV R0, R0, 1H |
| 04FE | x(E7000001): B 1 [0500H] |
| 04FF | x(40000000): MOV R0, R0, 0H |
| 0500 | x(81E0000C): LDR R1, SP, CH |
| 0501 | x(B0100000): STR R0, R1, 0H |
| 0502 | y(80E0001C): LDR R0, SP, 1CH |
| 0503 | y(A0E00014): STR R0, SP, 14H |
| WHILE i < a.m DOz a.e[i]a := a.e[i+1]b;c INC(i) ENDd |
| 0504 | z(80E00014): LDR R0, SP, 14H |
| 0505 | z(81E00028): LDR R1, SP, 28H |
| 0506 | z(00090001): SUB R0, R0, R1 |
| 0507 | z(ED000018): BGE 24 [0520H] |
| 0508 | a(80E00014): LDR R0, SP, 14H |
| 0509 | a(41090018): SUB R1, R0, 18H |
| 050A | a(DA21761C): BLCC MT [trap=1, pos=8566] |
| 050B | a(400A0028): MUL R0, R0, 28H |
| 050C | a(00E80000): ADD R0, SP, R0 |
| 050D | b(81E00014): LDR R1, SP, 14H |
| 050E | b(41180001): ADD R1, R1, 1H |
| 050F | b(42190018): SUB R2, R1, 18H |
| 0510 | b(DA21821C): BLCC MT [trap=1, pos=8578] |
| 0511 | b(411A0028): MUL R1, R1, 28H |
| 0512 | b(01E80001): ADD R1, SP, R1 |
| 0513 | c(40080064): ADD R0, R0, 64H |
| 0514 | c(41180064): ADD R1, R1, 64H |
| 0515 | c(4200000A): MOV R2, R0, AH |
| 0516 | c(83100000): LDR R3, R1, 0H |
| 0517 | c(41180004): ADD R1, R1, 4H |
| 0518 | c(A3000000): STR R3, R0, 0H |
| 0519 | c(40080004): ADD R0, R0, 4H |
| 051A | c(42290001): SUB R2, R2, 1H |
| 051B | c(E9FFFFFA): BNE -6 [0516H] |
| 051C | d(80E00014): LDR R0, SP, 14H |
| 051D | d(40080001): ADD R0, R0, 1H |
| 051E | d(A0E00014): STR R0, SP, 14H |
| 051F | d(E7FFFFE4): B -28 [0504H] |
| ELSE dele(a,f R,g dpg1,h h)i;j |
| 0520 | e(E7000011): B 17 [0532H] |
| 0521 | f(40E80024): ADD R0, SP, 24H |
| 0522 | f .FIXUP D |
| 0522 | f(8D0000C6): LDR SB, MT, MOD0 [FileDir] |
| 0523 | f(41D80028): ADD R1, SB, 28H [data] |
| 0524 | g(82E0001C): LDR R2, SP, 1CH |
| 0525 | h(83E00020): LDR R3, SP, 20H |
| 0526 | i(84E0000C): LDR R4, SP, CH |
| 0527 | j(F7FFFF11): BL -239 [0439H] |
| IF h THENk underflow(a,l dpg1,m R,n h)o ENDp |
| 0528 | k(80E0000C): LDR R0, SP, CH |
| 0529 | k(90000000): LDR R0, R0, 0H |
| 052A | k(E1000007): BEQ 7 [0532H] |
| 052B | l(40E80024): ADD R0, SP, 24H |
| 052C | l .FIXUP D |
| 052C | l(8D00000A): LDR SB, MT, MOD0 [FileDir] |
| 052D | l(41D80028): ADD R1, SB, 28H [data] |
| 052E | m(82E00020): LDR R2, SP, 20H |
| 052F | n(83E0001C): LDR R3, SP, 1CH |
| 0530 | o(84E0000C): LDR R4, SP, CH |
| 0531 | p(F7FFFD0D): BL -755 [023FH] |
| END ; |
| Kernel.PutSector(dpg0,q a)r |
| 0532 | q(80E00008): LDR R0, SP, 8H |
| 0533 | r(41E80024): ADD R1, SP, 24H |
| ELSIFs dpg1t # 0 THENu |
| 0534 | s .FIXUP P |
| 0534 | s(F7110092): BL MOD1 [Kernel] PROC16 |
| 0535 | t(E7000018): B 24 [054EH] |
| 0536 | u(80E00020): LDR R0, SP, 20H |
| 0537 | u(E1000013): BEQ 19 [054BH] |
| delete(name,v dpg1,w h,x fad)y;z |
| 0538 | v(80E00004): LDR R0, SP, 4H |
| 0539 | w(81E00020): LDR R1, SP, 20H |
| 053A | x(82E0000C): LDR R2, SP, CH |
| 053B | y(83E00010): LDR R3, SP, 10H |
| 053C | z(F7FFFF5D): BL -163 [049AH] |
| IF h THENa underflow(a,b dpg1,c R,d h)e;f Kernel.PutSector(dpg0,g a)h ENDi |
| 053D | a(80E0000C): LDR R0, SP, CH |
| 053E | a(90000000): LDR R0, R0, 0H |
| 053F | a(E100000A): BEQ 10 [054AH] |
| 0540 | b(40E80024): ADD R0, SP, 24H |
| 0541 | b .FIXUP D |
| 0541 | b(8D000015): LDR SB, MT, MOD0 [FileDir] |
| 0542 | b(41D80028): ADD R1, SB, 28H [data] |
| 0543 | c(82E00020): LDR R2, SP, 20H |
| 0544 | d(83E0001C): LDR R3, SP, 1CH |
| 0545 | e(84E0000C): LDR R4, SP, CH |
| 0546 | f(F7FFFCF8): BL -776 [023FH] |
| 0547 | g(80E00008): LDR R0, SP, 8H |
| 0548 | h(41E80024): ADD R1, SP, 24H |
| 0549 | i .FIXUP P |
| 0549 | i(F7110015): BL MOD1 [Kernel] PROC16 |
| ELSE (*not in tree*) fadj := 0 |
| 054A | j(E7000003): B 3 [054EH] |
| ENDk |
| 054B | k(40000000): MOV R0, R0, 0H |
| 054C | k(81E00010): LDR R1, SP, 10H |
| 054D | k(A0100000): STR R0, R1, 0H |
| ENDl delete; |
| 054E | l(8FE00000): LDR LNK, SP, 0H |
| 054F | l(4EE80424): ADD SP, SP, 424H |
| 0550 | l(C700000F): B LNK |
| |
| PROCEDURE Delete*(name: FileName; VAR fad: DiskAdr); |
| VAR h: BOOLEAN; newroot: DiskAdr; |
| a: DirPage; |
| BEGINm h := FALSE;n |
| 0551 | m .PROC 6 |
| 0551 | m(4EE90414): SUB SP, SP, 414H |
| 0552 | m(AFE00000): STR LNK, SP, 0H |
| 0553 | m(A0E00004): STR R0, SP, 4H |
| 0554 | m(A1E00008): STR R1, SP, 8H |
| 0555 | n(40000000): MOV R0, R0, 0H |
| 0556 | n(B0E0000C): STR R0, SP, CH |
| delete(name,o DirRootAdr,p h,q fad)r;s |
| 0557 | o(80E00004): LDR R0, SP, 4H |
| 0558 | p(4100001D): MOV R1, R0, 1DH |
| 0559 | q(42E8000C): ADD R2, SP, CH |
| 055A | r(83E00008): LDR R3, SP, 8H |
| 055B | s(F7FFFF3E): BL -194 [049AH] |
| IF h THENt (*root underflow*) |
| 055C | t(90E0000C): LDR R0, SP, CH |
| 055D | t(E1000019): BEQ 25 [0577H] |
| Kernel.GetSector(DirRootAdr,u a)v;w ASSERT(a.mark = DirMark)x;y |
| 055E | u(4000001D): MOV R0, R0, 1DH |
| 055F | v(41E80014): ADD R1, SP, 14H |
| 0560 | w .FIXUP P |
| 0560 | w(F710F017): BL MOD1 [Kernel] PROC15 |
| 0561 | x(80E00014): LDR R0, SP, 14H |
| 0562 | x(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0563 | x(4116A38D): IOR R1, R1, FFFFA38DH |
| 0564 | x(00090001): SUB R0, R0, R1 |
| 0565 | y(D923CE7C): BLNE MT [trap=7, pos=9166] |
| IF (a.m = 0)z & (aa.p0 # 0)b THENc |
| 0566 | z(80E00018): LDR R0, SP, 18H |
| 0567 | a(E900000F): BNE 15 [0577H] |
| 0568 | b(80E0001C): LDR R0, SP, 1CH |
| 0569 | c(E100000D): BEQ 13 [0577H] |
| newroot := a.p0;d Kernel.GetSector(newroot,e a)f;g ASSERT(a.mark = DirMark)h;i |
| 056A | d(80E0001C): LDR R0, SP, 1CH |
| 056B | d(A0E00010): STR R0, SP, 10H |
| 056C | e(80E00010): LDR R0, SP, 10H |
| 056D | f(41E80014): ADD R1, SP, 14H |
| 056E | g .FIXUP P |
| 056E | g(F710F00E): BL MOD1 [Kernel] PROC15 |
| 056F | h(80E00014): LDR R0, SP, 14H |
| 0570 | h(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0571 | h(4116A38D): IOR R1, R1, FFFFA38DH |
| 0572 | h(00090001): SUB R0, R0, R1 |
| 0573 | i(D924447C): BLNE MT [trap=7, pos=9284] |
| Kernel.PutSector(DirRootAdr,j a)k (*discard newroot*) |
| 0574 | j(4000001D): MOV R0, R0, 1DH |
| 0575 | k(41E80014): ADD R1, SP, 14H |
| ENDl |
| 0576 | l .FIXUP P |
| 0576 | l(F7110008): BL MOD1 [Kernel] PROC16 |
| END |
| ENDm Delete; |
| 0577 | m(8FE00000): LDR LNK, SP, 0H |
| 0578 | m(4EE80414): ADD SP, SP, 414H |
| 0579 | m(C700000F): B LNK |
| |
| PROCEDURE enumerate(prefix: ARRAY OF CHAR; |
| dpg: DiskAdr; |
| proc: EntryHandler; |
| VAR continue: BOOLEAN); |
| VAR i, j: INTEGER; pfx, nmx: CHAR; |
| dpg1: DiskAdr; a: DirPage; |
| BEGINn Kernel.GetSector(dpg,o a)p;q ASSERT(a.mark = DirMark)r;s i := 0;t |
| 057A | n(4EE90428): SUB SP, SP, 428H |
| 057B | n(AFE00000): STR LNK, SP, 0H |
| 057C | n(A0E00004): STR R0, SP, 4H |
| 057D | n(A1E00008): STR R1, SP, 8H |
| 057E | n(A2E0000C): STR R2, SP, CH |
| 057F | n(A3E00010): STR R3, SP, 10H |
| 0580 | n(A4E00014): STR R4, SP, 14H |
| 0581 | o(80E0000C): LDR R0, SP, CH |
| 0582 | p(41E80028): ADD R1, SP, 28H |
| 0583 | q .FIXUP P |
| 0583 | q(F710F00D): BL MOD1 [Kernel] PROC15 |
| 0584 | r(80E00028): LDR R0, SP, 28H |
| 0585 | r(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0586 | r(4116A38D): IOR R1, R1, FFFFA38DH |
| 0587 | r(00090001): SUB R0, R0, R1 |
| 0588 | s(D925E17C): BLNE MT [trap=7, pos=9697] |
| 0589 | t(40000000): MOV R0, R0, 0H |
| 058A | t(A0E00018): STR R0, SP, 18H |
| WHILE (i < a.m)u & continuev DOw |
| 058B | u(80E00018): LDR R0, SP, 18H |
| 058C | u(81E0002C): LDR R1, SP, 2CH |
| 058D | u(00090001): SUB R0, R0, R1 |
| 058E | v(ED000057): BGE 87 [05E6H] |
| 058F | w(80E00014): LDR R0, SP, 14H |
| 0590 | w(90000000): LDR R0, R0, 0H |
| 0591 | w(E1000054): BEQ 84 [05E6H] |
| j := 0;x |
| 0592 | x(40000000): MOV R0, R0, 0H |
| 0593 | x(A0E0001C): STR R0, SP, 1CH |
| REPEAT pfx := prefix[j]y;z nmx := a.e[i]a.name[j]b;c INC(j) |
| 0594 | y(80E0001C): LDR R0, SP, 1CH |
| 0595 | y(81E00008): LDR R1, SP, 8H |
| 0596 | y(01090001): SUB R1, R0, R1 |
| 0597 | y(DA26371C): BLCC MT [trap=1, pos=9783] |
| 0598 | y(81E00004): LDR R1, SP, 4H |
| 0599 | y(00180000): ADD R0, R1, R0 |
| 059A | z(90000000): LDR R0, R0, 0H |
| 059B | z(B0E00020): STR R0, SP, 20H |
| 059C | a(80E00018): LDR R0, SP, 18H |
| 059D | a(41090018): SUB R1, R0, 18H |
| 059E | a(DA26461C): BLCC MT [trap=1, pos=9798] |
| 059F | a(400A0028): MUL R0, R0, 28H |
| 05A0 | a(00E80000): ADD R0, SP, R0 |
| 05A1 | b(81E0001C): LDR R1, SP, 1CH |
| 05A2 | b(42190020): SUB R2, R1, 20H |
| 05A3 | b(DA264E1C): BLCC MT [trap=1, pos=9806] |
| 05A4 | b(00080001): ADD R0, R0, R1 |
| 05A5 | c(90000068): LDR R0, R0, 68H |
| 05A6 | c(B0E00021): STR R0, SP, 21H |
| UNTILd (nmx # pfx)e OR (fpfx = 0X)g;h |
| 05A7 | d(80E0001C): LDR R0, SP, 1CH |
| 05A8 | d(40080001): ADD R0, R0, 1H |
| 05A9 | d(A0E0001C): STR R0, SP, 1CH |
| 05AA | e(90E00021): LDR R0, SP, 21H |
| 05AB | e(91E00020): LDR R1, SP, 20H |
| 05AC | e(00090001): SUB R0, R0, R1 |
| 05AD | f(E9000002): BNE 2 [05B0H] |
| 05AE | g(90E00020): LDR R0, SP, 20H |
| 05AF | h(E9FFFFE4): BNE -28 [0594H] |
| IF nmx >= pfx THENi |
| 05B0 | i(90E00021): LDR R0, SP, 21H |
| 05B1 | i(91E00020): LDR R1, SP, 20H |
| 05B2 | i(00090001): SUB R0, R0, R1 |
| 05B3 | i(E500002E): BLT 46 [05E2H] |
| IF i = 0 THENj dpg1 := a.p0 ELSEk dpg1l := a.e[i-1]m.p ENDn ; |
| 05B4 | j(80E00018): LDR R0, SP, 18H |
| 05B5 | j(E9000003): BNE 3 [05B9H] |
| 05B6 | k(80E00030): LDR R0, SP, 30H |
| 05B7 | k(A0E00024): STR R0, SP, 24H |
| 05B8 | l(E7000008): B 8 [05C1H] |
| 05B9 | m(80E00018): LDR R0, SP, 18H |
| 05BA | m(40090001): SUB R0, R0, 1H |
| 05BB | m(41090018): SUB R1, R0, 18H |
| 05BC | m(DA26CF1C): BLCC MT [trap=1, pos=9935] |
| 05BD | m(400A0028): MUL R0, R0, 28H |
| 05BE | m(00E80000): ADD R0, SP, R0 |
| 05BF | n(8000008C): LDR R0, R0, 8CH |
| 05C0 | n(A0E00024): STR R0, SP, 24H |
| IF dpg1 # 0 THENo enumerate(prefix,p dpg1,q proc,r continue)s ENDt ; |
| 05C1 | o(80E00024): LDR R0, SP, 24H |
| 05C2 | o(E1000006): BEQ 6 [05C9H] |
| 05C3 | p(80E00004): LDR R0, SP, 4H |
| 05C4 | p(81E00008): LDR R1, SP, 8H |
| 05C5 | q(82E00024): LDR R2, SP, 24H |
| 05C6 | r(83E00010): LDR R3, SP, 10H |
| 05C7 | s(84E00014): LDR R4, SP, 14H |
| 05C8 | t(F7FFFFB1): BL -79 [057AH] |
| IF pfx = 0X THENu |
| 05C9 | u(90E00020): LDR R0, SP, 20H |
| 05CA | u(E9000014): BNE 20 [05DFH] |
| IF continue THENv proc(a.e[i]w.name,x a.e[i]y.adr,z continue)a ENDb |
| 05CB | v(80E00014): LDR R0, SP, 14H |
| 05CC | v(90000000): LDR R0, R0, 0H |
| 05CD | v(E1000010): BEQ 16 [05DEH] |
| 05CE | w(80E00018): LDR R0, SP, 18H |
| 05CF | w(41090018): SUB R1, R0, 18H |
| 05D0 | w(DA275E1C): BLCC MT [trap=1, pos=10078] |
| 05D1 | w(400A0028): MUL R0, R0, 28H |
| 05D2 | w(00E80000): ADD R0, SP, R0 |
| 05D3 | x(40080068): ADD R0, R0, 68H |
| 05D4 | y(81E00018): LDR R1, SP, 18H |
| 05D5 | y(42190018): SUB R2, R1, 18H |
| 05D6 | y(DA276B1C): BLCC MT [trap=1, pos=10091] |
| 05D7 | y(411A0028): MUL R1, R1, 28H |
| 05D8 | y(01E80001): ADD R1, SP, R1 |
| 05D9 | z(81100088): LDR R1, R1, 88H |
| 05DA | a(82E00014): LDR R2, SP, 14H |
| 05DB | b(83E00010): LDR R3, SP, 10H |
| 05DC | b(D1277E5C): BLEQ MT [trap=5, pos=10110] |
| 05DD | b(D7000003): BL R3 |
| ELSE continuec := FALSE |
| 05DE | c(E7000003): B 3 [05E2H] |
| ENDd |
| 05DF | d(40000000): MOV R0, R0, 0H |
| 05E0 | d(81E00014): LDR R1, SP, 14H |
| 05E1 | d(B0100000): STR R0, R1, 0H |
| END ; |
| INC(i) |
| ENDe ; |
| 05E2 | e(80E00018): LDR R0, SP, 18H |
| 05E3 | e(40080001): ADD R0, R0, 1H |
| 05E4 | e(A0E00018): STR R0, SP, 18H |
| 05E5 | e(E7FFFFA5): B -91 [058BH] |
| IF continue & (fi > 0)g & (ha.e[i-1]i.p # 0)j THENk |
| 05E6 | f(80E00014): LDR R0, SP, 14H |
| 05E7 | f(90000000): LDR R0, R0, 0H |
| 05E8 | f(E1000017): BEQ 23 [0600H] |
| 05E9 | g(80E00018): LDR R0, SP, 18H |
| 05EA | g(40090000): SUB R0, R0, 0H |
| 05EB | h(E6000014): BLE 20 [0600H] |
| 05EC | i(80E00018): LDR R0, SP, 18H |
| 05ED | i(40090001): SUB R0, R0, 1H |
| 05EE | i(41090018): SUB R1, R0, 18H |
| 05EF | i(DA27F21C): BLCC MT [trap=1, pos=10226] |
| 05F0 | i(400A0028): MUL R0, R0, 28H |
| 05F1 | i(00E80000): ADD R0, SP, R0 |
| 05F2 | j(8000008C): LDR R0, R0, 8CH |
| 05F3 | k(E100000C): BEQ 12 [0600H] |
| enumerate(prefix,l a.e[i-1]m.p,n proc,o continue)p |
| 05F4 | l(80E00004): LDR R0, SP, 4H |
| 05F5 | l(81E00008): LDR R1, SP, 8H |
| 05F6 | m(82E00018): LDR R2, SP, 18H |
| 05F7 | m(42290001): SUB R2, R2, 1H |
| 05F8 | m(43290018): SUB R3, R2, 18H |
| 05F9 | m(DA281F1C): BLCC MT [trap=1, pos=10271] |
| 05FA | m(422A0028): MUL R2, R2, 28H |
| 05FB | m(02E80002): ADD R2, SP, R2 |
| 05FC | n(8220008C): LDR R2, R2, 8CH |
| 05FD | o(83E00010): LDR R3, SP, 10H |
| 05FE | p(84E00014): LDR R4, SP, 14H |
| ENDq |
| 05FF | q(F7FFFF7A): BL -134 [057AH] |
| ENDr enumerate; |
| 0600 | r(8FE00000): LDR LNK, SP, 0H |
| 0601 | r(4EE80428): ADD SP, SP, 428H |
| 0602 | r(C700000F): B LNK |
| |
| PROCEDURE Enumerate*(prefix: ARRAY OF CHAR; proc: EntryHandler); |
| VAR b: BOOLEAN; |
| BEGINs b := TRUE;t enumerate(prefix,u DirRootAdr,v proc,w b)x |
| 0603 | s .PROC 7 |
| 0603 | s(4EE90014): SUB SP, SP, 14H |
| 0604 | s(AFE00000): STR LNK, SP, 0H |
| 0605 | s(A0E00004): STR R0, SP, 4H |
| 0606 | s(A1E00008): STR R1, SP, 8H |
| 0607 | s(A2E0000C): STR R2, SP, CH |
| 0608 | t(40000001): MOV R0, R0, 1H |
| 0609 | t(B0E00010): STR R0, SP, 10H |
| 060A | u(80E00004): LDR R0, SP, 4H |
| 060B | u(81E00008): LDR R1, SP, 8H |
| 060C | v(4200001D): MOV R2, R0, 1DH |
| 060D | w(83E0000C): LDR R3, SP, CH |
| 060E | x(44E80010): ADD R4, SP, 10H |
| ENDy Enumerate; |
| 060F | y(F7FFFF6A): BL -150 [057AH] |
| 0610 | y(8FE00000): LDR LNK, SP, 0H |
| 0611 | y(4EE80014): ADD SP, SP, 14H |
| 0612 | y(C700000F): B LNK |
| |
| (* ----- initialization ----- *) |
| |
| PROCEDURE Init*; |
| VAR k: INTEGER; |
| A: ARRAY 2000 OF DiskAdr; |
| |
| PROCEDUREz MarkSectors(VAR A: ARRAY OF DiskAdr; k: INTEGER); |
| 0613 | z(E7000178): B 376 [078CH] |
| VAR L, R, i, j, n: INTEGER; x: DiskAdr; |
| hd: FileHeader; |
| B: IndexSector; |
| |
| PROCEDUREa sift(VAR A: ARRAY OF DiskAdr; L, R: INTEGER); |
| 0614 | a(E700006C): B 108 [0681H] |
| VAR i, j: INTEGER; x: DiskAdr; |
| BEGINb j := L;c x := A[j]d;e |
| 0615 | b(4EE90020): SUB SP, SP, 20H |
| 0616 | b(AFE00000): STR LNK, SP, 0H |
| 0617 | b(A0E00004): STR R0, SP, 4H |
| 0618 | b(A1E00008): STR R1, SP, 8H |
| 0619 | b(A2E0000C): STR R2, SP, CH |
| 061A | b(A3E00010): STR R3, SP, 10H |
| 061B | c(80E0000C): LDR R0, SP, CH |
| 061C | c(A0E00018): STR R0, SP, 18H |
| 061D | d(80E00018): LDR R0, SP, 18H |
| 061E | d(81E00008): LDR R1, SP, 8H |
| 061F | d(01090001): SUB R1, R0, R1 |
| 0620 | d(DA2A7B1C): BLCC MT [trap=1, pos=10875] |
| 0621 | d(40010002): LSL R0, R0, 2H |
| 0622 | d(81E00004): LDR R1, SP, 4H |
| 0623 | d(00180000): ADD R0, R1, R0 |
| 0624 | e(80000000): LDR R0, R0, 0H |
| 0625 | e(A0E0001C): STR R0, SP, 1CH |
| REPEAT i := j;f j := 2*j +g 1;h |
| 0626 | f(80E00018): LDR R0, SP, 18H |
| 0627 | f(A0E00014): STR R0, SP, 14H |
| 0628 | g(80E00018): LDR R0, SP, 18H |
| 0629 | g(40010001): LSL R0, R0, 1H |
| 062A | h(40080001): ADD R0, R0, 1H |
| 062B | h(A0E00018): STR R0, SP, 18H |
| IF (j+1 <i R)j & (kA[j]l < A[j+1]m)n THENo INC(j) ENDp ; |
| 062C | i(80E00018): LDR R0, SP, 18H |
| 062D | i(40080001): ADD R0, R0, 1H |
| 062E | j(81E00010): LDR R1, SP, 10H |
| 062F | j(00090001): SUB R0, R0, R1 |
| 0630 | k(ED000016): BGE 22 [0647H] |
| 0631 | l(80E00018): LDR R0, SP, 18H |
| 0632 | l(81E00008): LDR R1, SP, 8H |
| 0633 | l(01090001): SUB R1, R0, R1 |
| 0634 | l(DA2AC01C): BLCC MT [trap=1, pos=10944] |
| 0635 | l(40010002): LSL R0, R0, 2H |
| 0636 | l(81E00004): LDR R1, SP, 4H |
| 0637 | l(00180000): ADD R0, R1, R0 |
| 0638 | m(81E00018): LDR R1, SP, 18H |
| 0639 | m(41180001): ADD R1, R1, 1H |
| 063A | m(82E00008): LDR R2, SP, 8H |
| 063B | m(02190002): SUB R2, R1, R2 |
| 063C | m(DA2AC91C): BLCC MT [trap=1, pos=10953] |
| 063D | m(41110002): LSL R1, R1, 2H |
| 063E | m(82E00004): LDR R2, SP, 4H |
| 063F | m(01280001): ADD R1, R2, R1 |
| 0640 | n(80000000): LDR R0, R0, 0H |
| 0641 | n(81100000): LDR R1, R1, 0H |
| 0642 | n(00090001): SUB R0, R0, R1 |
| 0643 | o(ED000003): BGE 3 [0647H] |
| 0644 | p(80E00018): LDR R0, SP, 18H |
| 0645 | p(40080001): ADD R0, R0, 1H |
| 0646 | p(A0E00018): STR R0, SP, 18H |
| IF (j < R)q & (rx <= A[j]s)t THENu A[i]v := A[j]w ENDx |
| 0647 | q(80E00018): LDR R0, SP, 18H |
| 0648 | q(81E00010): LDR R1, SP, 10H |
| 0649 | q(00090001): SUB R0, R0, R1 |
| 064A | r(ED00001B): BGE 27 [0666H] |
| 064B | s(80E00018): LDR R0, SP, 18H |
| 064C | s(81E00008): LDR R1, SP, 8H |
| 064D | s(01090001): SUB R1, R0, R1 |
| 064E | s(DA2AFE1C): BLCC MT [trap=1, pos=11006] |
| 064F | s(40010002): LSL R0, R0, 2H |
| 0650 | s(81E00004): LDR R1, SP, 4H |
| 0651 | s(00180000): ADD R0, R1, R0 |
| 0652 | t(81E0001C): LDR R1, SP, 1CH |
| 0653 | t(80000000): LDR R0, R0, 0H |
| 0654 | t(01190000): SUB R1, R1, R0 |
| 0655 | u(EE000010): BGT 16 [0666H] |
| 0656 | v(80E00014): LDR R0, SP, 14H |
| 0657 | v(81E00008): LDR R1, SP, 8H |
| 0658 | v(01090001): SUB R1, R0, R1 |
| 0659 | v(DA2B091C): BLCC MT [trap=1, pos=11017] |
| 065A | v(40010002): LSL R0, R0, 2H |
| 065B | v(81E00004): LDR R1, SP, 4H |
| 065C | v(00180000): ADD R0, R1, R0 |
| 065D | w(81E00018): LDR R1, SP, 18H |
| 065E | w(82E00008): LDR R2, SP, 8H |
| 065F | w(02190002): SUB R2, R1, R2 |
| 0660 | w(DA2B111C): BLCC MT [trap=1, pos=11025] |
| 0661 | w(41110002): LSL R1, R1, 2H |
| 0662 | w(82E00004): LDR R2, SP, 4H |
| 0663 | w(01280001): ADD R1, R2, R1 |
| 0664 | x(81100000): LDR R1, R1, 0H |
| 0665 | x(A1000000): STR R1, R0, 0H |
| UNTIL (j >= R)y OR (zx > A[j]a)b;c |
| 0666 | y(80E00018): LDR R0, SP, 18H |
| 0667 | y(81E00010): LDR R1, SP, 10H |
| 0668 | y(00090001): SUB R0, R0, R1 |
| 0669 | z(ED00000B): BGE 11 [0675H] |
| 066A | a(80E00018): LDR R0, SP, 18H |
| 066B | a(81E00008): LDR R1, SP, 8H |
| 066C | a(01090001): SUB R1, R0, R1 |
| 066D | a(DA2B391C): BLCC MT [trap=1, pos=11065] |
| 066E | a(40010002): LSL R0, R0, 2H |
| 066F | a(81E00004): LDR R1, SP, 4H |
| 0670 | a(00180000): ADD R0, R1, R0 |
| 0671 | b(81E0001C): LDR R1, SP, 1CH |
| 0672 | b(80000000): LDR R0, R0, 0H |
| 0673 | b(01190000): SUB R1, R1, R0 |
| 0674 | c(E6FFFFB1): BLE -79 [0626H] |
| A[i]d := x |
| 0675 | d(80E00014): LDR R0, SP, 14H |
| 0676 | d(81E00008): LDR R1, SP, 8H |
| 0677 | d(01090001): SUB R1, R0, R1 |
| 0678 | d(DA2B481C): BLCC MT [trap=1, pos=11080] |
| 0679 | d(40010002): LSL R0, R0, 2H |
| 067A | d(81E00004): LDR R1, SP, 4H |
| 067B | d(00180000): ADD R0, R1, R0 |
| ENDe sift; |
| 067C | e(81E0001C): LDR R1, SP, 1CH |
| 067D | e(A1000000): STR R1, R0, 0H |
| 067E | e(8FE00000): LDR LNK, SP, 0H |
| 067F | e(4EE80020): ADD SP, SP, 20H |
| 0680 | e(C700000F): B LNK |
| |
| BEGINf L := k DIV 2;g R := k;h (*heapsort*) |
| 0681 | f(4EE90828): SUB SP, SP, 828H |
| 0682 | f(AFE00000): STR LNK, SP, 0H |
| 0683 | f(A0E00004): STR R0, SP, 4H |
| 0684 | f(A1E00008): STR R1, SP, 8H |
| 0685 | f(A2E0000C): STR R2, SP, CH |
| 0686 | g(80E0000C): LDR R0, SP, CH |
| 0687 | g(40020001): ASR R0, R0, 1H |
| 0688 | g(A0E00010): STR R0, SP, 10H |
| 0689 | h(80E0000C): LDR R0, SP, CH |
| 068A | h(A0E00014): STR R0, SP, 14H |
| WHILE L > 0 DOi DEC(L);j sift(A,k L,l R)m ENDn ; |
| 068B | i(80E00010): LDR R0, SP, 10H |
| 068C | i(40090000): SUB R0, R0, 0H |
| 068D | i(E6000009): BLE 9 [0697H] |
| 068E | j(80E00010): LDR R0, SP, 10H |
| 068F | j(40090001): SUB R0, R0, 1H |
| 0690 | j(A0E00010): STR R0, SP, 10H |
| 0691 | k(80E00004): LDR R0, SP, 4H |
| 0692 | k(81E00008): LDR R1, SP, 8H |
| 0693 | l(82E00010): LDR R2, SP, 10H |
| 0694 | m(83E00014): LDR R3, SP, 14H |
| 0695 | n(F7FFFF7F): BL -129 [0615H] |
| 0696 | n(E7FFFFF4): B -12 [068BH] |
| WHILE R > 0 DOo |
| 0697 | o(80E00014): LDR R0, SP, 14H |
| 0698 | o(40090000): SUB R0, R0, 0H |
| 0699 | o(E600002B): BLE 43 [06C5H] |
| DEC(R);p x := A[0]q;r A[0]s := A[R]t;u A[R]v := x;w sift(A,x L,y R)z |
| 069A | p(80E00014): LDR R0, SP, 14H |
| 069B | p(40090001): SUB R0, R0, 1H |
| 069C | p(A0E00014): STR R0, SP, 14H |
| 069D | q(40000000): MOV R0, R0, 0H |
| 069E | q(81E00008): LDR R1, SP, 8H |
| 069F | q(01090001): SUB R1, R0, R1 |
| 06A0 | q(DA2BEB1C): BLCC MT [trap=1, pos=11243] |
| 06A1 | q(40010002): LSL R0, R0, 2H |
| 06A2 | q(81E00004): LDR R1, SP, 4H |
| 06A3 | q(00180000): ADD R0, R1, R0 |
| 06A4 | r(80000000): LDR R0, R0, 0H |
| 06A5 | r(A0E00024): STR R0, SP, 24H |
| 06A6 | s(40000000): MOV R0, R0, 0H |
| 06A7 | s(81E00008): LDR R1, SP, 8H |
| 06A8 | s(01090001): SUB R1, R0, R1 |
| 06A9 | s(DA2BF11C): BLCC MT [trap=1, pos=11249] |
| 06AA | s(40010002): LSL R0, R0, 2H |
| 06AB | s(81E00004): LDR R1, SP, 4H |
| 06AC | s(00180000): ADD R0, R1, R0 |
| 06AD | t(81E00014): LDR R1, SP, 14H |
| 06AE | t(82E00008): LDR R2, SP, 8H |
| 06AF | t(02190002): SUB R2, R1, R2 |
| 06B0 | t(DA2BF91C): BLCC MT [trap=1, pos=11257] |
| 06B1 | t(41110002): LSL R1, R1, 2H |
| 06B2 | t(82E00004): LDR R2, SP, 4H |
| 06B3 | t(01280001): ADD R1, R2, R1 |
| 06B4 | u(81100000): LDR R1, R1, 0H |
| 06B5 | u(A1000000): STR R1, R0, 0H |
| 06B6 | v(80E00014): LDR R0, SP, 14H |
| 06B7 | v(81E00008): LDR R1, SP, 8H |
| 06B8 | v(01090001): SUB R1, R0, R1 |
| 06B9 | v(DA2BFF1C): BLCC MT [trap=1, pos=11263] |
| 06BA | v(40010002): LSL R0, R0, 2H |
| 06BB | v(81E00004): LDR R1, SP, 4H |
| 06BC | v(00180000): ADD R0, R1, R0 |
| 06BD | w(81E00024): LDR R1, SP, 24H |
| 06BE | w(A1000000): STR R1, R0, 0H |
| 06BF | x(80E00004): LDR R0, SP, 4H |
| 06C0 | x(81E00008): LDR R1, SP, 8H |
| 06C1 | y(82E00010): LDR R2, SP, 10H |
| 06C2 | z(83E00014): LDR R3, SP, 14H |
| ENDa ; |
| 06C3 | a(F7FFFF51): BL -175 [0615H] |
| 06C4 | a(E7FFFFD2): B -46 [0697H] |
| WHILE L < k DOb |
| 06C5 | b(80E00010): LDR R0, SP, 10H |
| 06C6 | b(81E0000C): LDR R1, SP, CH |
| 06C7 | b(00090001): SUB R0, R0, R1 |
| 06C8 | b(ED000069): BGE 105 [0732H] |
| Kernel.GetSector(A[L]c,d hd)e;f ASSERT(hd.mark = HeaderMark)g;h |
| 06C9 | c(80E00010): LDR R0, SP, 10H |
| 06CA | c(81E00008): LDR R1, SP, 8H |
| 06CB | c(01090001): SUB R1, R0, R1 |
| 06CC | c(DA2C521C): BLCC MT [trap=1, pos=11346] |
| 06CD | c(40010002): LSL R0, R0, 2H |
| 06CE | c(81E00004): LDR R1, SP, 4H |
| 06CF | c(00180000): ADD R0, R1, R0 |
| 06D0 | d(80000000): LDR R0, R0, 0H |
| 06D1 | e(41E80028): ADD R1, SP, 28H |
| 06D2 | f .FIXUP P |
| 06D2 | f(F710F14F): BL MOD1 [Kernel] PROC15 |
| 06D3 | g(80E00028): LDR R0, SP, 28H |
| 06D4 | g(71009BA7): MOV' R1, R0, FFFF9BA7H |
| 06D5 | g(41161D86): IOR R1, R1, 1D86H |
| 06D6 | g(00090001): SUB R0, R0, R1 |
| 06D7 | h(D92C767C): BLNE MT [trap=7, pos=11382] |
| IF hd.aleng < SecTabSize THENi j := hd.aleng + 1;j |
| 06D8 | i(80E0004C): LDR R0, SP, 4CH |
| 06D9 | i(40090040): SUB R0, R0, 40H |
| 06DA | i(ED000010): BGE 16 [06EBH] |
| 06DB | j(80E0004C): LDR R0, SP, 4CH |
| 06DC | j(40080001): ADD R0, R0, 1H |
| 06DD | j(A0E0001C): STR R0, SP, 1CH |
| REPEAT DEC(j);k Kernel.MarkSector(hd.sec[j]l)m UNTILn j = 0 |
| 06DE | k(80E0001C): LDR R0, SP, 1CH |
| 06DF | k(40090001): SUB R0, R0, 1H |
| 06E0 | k(A0E0001C): STR R0, SP, 1CH |
| 06E1 | l(80E0001C): LDR R0, SP, 1CH |
| 06E2 | l(41090040): SUB R1, R0, 40H |
| 06E3 | l(DA2CE41C): BLCC MT [trap=1, pos=11492] |
| 06E4 | l(40010002): LSL R0, R0, 2H |
| 06E5 | l(00E80000): ADD R0, SP, R0 |
| 06E6 | m(80000088): LDR R0, R0, 88H |
| 06E7 | n .FIXUP P |
| 06E7 | n(F710C015): BL MOD1 [Kernel] PROC12 |
| ELSEo jp := SecTabSize;q |
| 06E8 | o(80E0001C): LDR R0, SP, 1CH |
| 06E9 | o(E9FFFFF4): BNE -12 [06DEH] |
| 06EA | p(E7000043): B 67 [072EH] |
| 06EB | q(40000040): MOV R0, R0, 40H |
| 06EC | q(A0E0001C): STR R0, SP, 1CH |
| REPEAT DEC(j);r Kernel.MarkSector(hd.sec[j]s)t UNTILu j = 0;v |
| 06ED | r(80E0001C): LDR R0, SP, 1CH |
| 06EE | r(40090001): SUB R0, R0, 1H |
| 06EF | r(A0E0001C): STR R0, SP, 1CH |
| 06F0 | s(80E0001C): LDR R0, SP, 1CH |
| 06F1 | s(41090040): SUB R1, R0, 40H |
| 06F2 | s(DA2D441C): BLCC MT [trap=1, pos=11588] |
| 06F3 | s(40010002): LSL R0, R0, 2H |
| 06F4 | s(00E80000): ADD R0, SP, R0 |
| 06F5 | t(80000088): LDR R0, R0, 88H |
| 06F6 | u .FIXUP P |
| 06F6 | u(F710C00F): BL MOD1 [Kernel] PROC12 |
| 06F7 | v(80E0001C): LDR R0, SP, 1CH |
| 06F8 | v(E9FFFFF4): BNE -12 [06EDH] |
| n := (hd.aleng - SecTabSize)w DIV 256;x i := 0;y |
| 06F9 | w(80E0004C): LDR R0, SP, 4CH |
| 06FA | w(40090040): SUB R0, R0, 40H |
| 06FB | x(40020008): ASR R0, R0, 8H |
| 06FC | x(A0E00020): STR R0, SP, 20H |
| 06FD | y(40000000): MOV R0, R0, 0H |
| 06FE | y(A0E00018): STR R0, SP, 18H |
| WHILE i <= n DOz |
| 06FF | z(80E00018): LDR R0, SP, 18H |
| 0700 | z(81E00020): LDR R1, SP, 20H |
| 0701 | z(00090001): SUB R0, R0, R1 |
| 0702 | z(EE00002B): BGT 43 [072EH] |
| Kernel.MarkSector(hd.ext[i]a)b;c |
| 0703 | a(80E00018): LDR R0, SP, 18H |
| 0704 | a(4109000C): SUB R1, R0, CH |
| 0705 | a(DA2DCC1C): BLCC MT [trap=1, pos=11724] |
| 0706 | a(40010002): LSL R0, R0, 2H |
| 0707 | a(00E80000): ADD R0, SP, R0 |
| 0708 | b(80000058): LDR R0, R0, 58H |
| 0709 | c .FIXUP P |
| 0709 | c(F710C013): BL MOD1 [Kernel] PROC12 |
| Kernel.GetSector(hd.ext[i]d,e B)f;g (*index sector*) |
| 070A | d(80E00018): LDR R0, SP, 18H |
| 070B | d(4109000C): SUB R1, R0, CH |
| 070C | d(DA2DF51C): BLCC MT [trap=1, pos=11765] |
| 070D | d(40010002): LSL R0, R0, 2H |
| 070E | d(00E80000): ADD R0, SP, R0 |
| 070F | e(80000058): LDR R0, R0, 58H |
| 0710 | f(41E80428): ADD R1, SP, 428H |
| 0711 | g .FIXUP P |
| 0711 | g(F710F008): BL MOD1 [Kernel] PROC15 |
| IF i < n THENh j := 256 ELSEi jj := (hd.aleng - SecTabSize)k MOD 256 +l 1 ENDm ; |
| 0712 | h(80E00018): LDR R0, SP, 18H |
| 0713 | h(81E00020): LDR R1, SP, 20H |
| 0714 | h(00090001): SUB R0, R0, R1 |
| 0715 | h(ED000003): BGE 3 [0719H] |
| 0716 | i(40000100): MOV R0, R0, 100H |
| 0717 | i(A0E0001C): STR R0, SP, 1CH |
| 0718 | j(E7000005): B 5 [071EH] |
| 0719 | k(80E0004C): LDR R0, SP, 4CH |
| 071A | k(40090040): SUB R0, R0, 40H |
| 071B | l(400400FF): AND R0, R0, FFH |
| 071C | m(40080001): ADD R0, R0, 1H |
| 071D | m(A0E0001C): STR R0, SP, 1CH |
| REPEAT DEC(j);n Kernel.MarkSector(B[j]o)p UNTILq j = 0;r |
| 071E | n(80E0001C): LDR R0, SP, 1CH |
| 071F | n(40090001): SUB R0, R0, 1H |
| 0720 | n(A0E0001C): STR R0, SP, 1CH |
| 0721 | o(80E0001C): LDR R0, SP, 1CH |
| 0722 | o(41090100): SUB R1, R0, 100H |
| 0723 | o(DA2E941C): BLCC MT [trap=1, pos=11924] |
| 0724 | o(40010002): LSL R0, R0, 2H |
| 0725 | o(00E80000): ADD R0, SP, R0 |
| 0726 | p(80000428): LDR R0, R0, 428H |
| 0727 | q .FIXUP P |
| 0727 | q(F710C016): BL MOD1 [Kernel] PROC12 |
| 0728 | r(80E0001C): LDR R0, SP, 1CH |
| 0729 | r(E9FFFFF4): BNE -12 [071EH] |
| INC(i) |
| ENDs |
| 072A | s(80E00018): LDR R0, SP, 18H |
| 072B | s(40080001): ADD R0, R0, 1H |
| 072C | s(A0E00018): STR R0, SP, 18H |
| 072D | s(E7FFFFD1): B -47 [06FFH] |
| END ; |
| INC(L) |
| ENDt |
| 072E | t(80E00010): LDR R0, SP, 10H |
| 072F | t(40080001): ADD R0, R0, 1H |
| 0730 | t(A0E00010): STR R0, SP, 10H |
| 0731 | t(E7FFFF93): B -109 [06C5H] |
| ENDu MarkSectors; |
| 0732 | u(8FE00000): LDR LNK, SP, 0H |
| 0733 | u(4EE80828): ADD SP, SP, 828H |
| 0734 | u(C700000F): B LNK |
| |
| PROCEDURE TraverseDir(VAR A: ARRAY OF DiskAdr; VAR k: INTEGER; dpg: DiskAdr); |
| VAR i: INTEGER; a: DirPage; |
| BEGINv Kernel.GetSector(dpg,w a)x;y ASSERT(a.mark = DirMark)z;a Kernel.MarkSector(dpg)b;c i := 0;d |
| 0735 | v(4EE90418): SUB SP, SP, 418H |
| 0736 | v(AFE00000): STR LNK, SP, 0H |
| 0737 | v(A0E00004): STR R0, SP, 4H |
| 0738 | v(A1E00008): STR R1, SP, 8H |
| 0739 | v(A2E0000C): STR R2, SP, CH |
| 073A | v(A3E00010): STR R3, SP, 10H |
| 073B | w(80E00010): LDR R0, SP, 10H |
| 073C | x(41E80018): ADD R1, SP, 18H |
| 073D | y .FIXUP P |
| 073D | y(F710F016): BL MOD1 [Kernel] PROC15 |
| 073E | z(80E00018): LDR R0, SP, 18H |
| 073F | z(71009B1E): MOV' R1, R0, FFFF9B1EH |
| 0740 | z(4116A38D): IOR R1, R1, FFFFA38DH |
| 0741 | z(00090001): SUB R0, R0, R1 |
| 0742 | a(D92FB27C): BLNE MT [trap=7, pos=12210] |
| 0743 | b(80E00010): LDR R0, SP, 10H |
| 0744 | c .FIXUP P |
| 0744 | c(F710C007): BL MOD1 [Kernel] PROC12 |
| 0745 | d(40000000): MOV R0, R0, 0H |
| 0746 | d(A0E00014): STR R0, SP, 14H |
| WHILE i < a.m DOe |
| 0747 | e(80E00014): LDR R0, SP, 14H |
| 0748 | e(81E0001C): LDR R1, SP, 1CH |
| 0749 | e(00090001): SUB R0, R0, R1 |
| 074A | e(ED000023): BGE 35 [076EH] |
| A[k]f := a.e[i]g.adr;h INC(k);i INC(i);j |
| 074B | f(80E0000C): LDR R0, SP, CH |
| 074C | f(80000000): LDR R0, R0, 0H |
| 074D | f(81E00008): LDR R1, SP, 8H |
| 074E | f(01090001): SUB R1, R0, R1 |
| 074F | f(DA2FF61C): BLCC MT [trap=1, pos=12278] |
| 0750 | f(40010002): LSL R0, R0, 2H |
| 0751 | f(81E00004): LDR R1, SP, 4H |
| 0752 | f(00180000): ADD R0, R1, R0 |
| 0753 | g(81E00014): LDR R1, SP, 14H |
| 0754 | g(42190018): SUB R2, R1, 18H |
| 0755 | g(DA30001C): BLCC MT [trap=1, pos=12288] |
| 0756 | g(411A0028): MUL R1, R1, 28H |
| 0757 | g(01E80001): ADD R1, SP, R1 |
| 0758 | h(81100078): LDR R1, R1, 78H |
| 0759 | h(A1000000): STR R1, R0, 0H |
| 075A | i(80E0000C): LDR R0, SP, CH |
| 075B | i(81000000): LDR R1, R0, 0H |
| 075C | i(41180001): ADD R1, R1, 1H |
| 075D | i(A1000000): STR R1, R0, 0H |
| 075E | j(80E00014): LDR R0, SP, 14H |
| 075F | j(40080001): ADD R0, R0, 1H |
| 0760 | j(A0E00014): STR R0, SP, 14H |
| IF k = 2000 THENk MarkSectors(A,l k)m;n k := 0 ENDo |
| 0761 | k(80E0000C): LDR R0, SP, CH |
| 0762 | k(80000000): LDR R0, R0, 0H |
| 0763 | k(400907D0): SUB R0, R0, 7D0H |
| 0764 | k(E9000008): BNE 8 [076DH] |
| 0765 | l(80E00004): LDR R0, SP, 4H |
| 0766 | l(81E00008): LDR R1, SP, 8H |
| 0767 | m(82E0000C): LDR R2, SP, CH |
| 0768 | m(82200000): LDR R2, R2, 0H |
| 0769 | n(F7FFFF17): BL -233 [0681H] |
| 076A | o(40000000): MOV R0, R0, 0H |
| 076B | o(81E0000C): LDR R1, SP, CH |
| 076C | o(A0100000): STR R0, R1, 0H |
| ENDp ; |
| 076D | p(E7FFFFD9): B -39 [0747H] |
| IF a.p0 # 0 THENq |
| 076E | q(80E00020): LDR R0, SP, 20H |
| 076F | q(E1000019): BEQ 25 [0789H] |
| TraverseDir(A,r k,s a.p0)t;u i := 0;v |
| 0770 | r(80E00004): LDR R0, SP, 4H |
| 0771 | r(81E00008): LDR R1, SP, 8H |
| 0772 | s(82E0000C): LDR R2, SP, CH |
| 0773 | t(83E00020): LDR R3, SP, 20H |
| 0774 | u(F7FFFFC0): BL -64 [0735H] |
| 0775 | v(40000000): MOV R0, R0, 0H |
| 0776 | v(A0E00014): STR R0, SP, 14H |
| WHILE i < a.m DOw |
| 0777 | w(80E00014): LDR R0, SP, 14H |
| 0778 | w(81E0001C): LDR R1, SP, 1CH |
| 0779 | w(00090001): SUB R0, R0, R1 |
| 077A | w(ED00000E): BGE 14 [0789H] |
| TraverseDir(A,x k,y a.e[i]z.p)a;b INC(i) |
| 077B | x(80E00004): LDR R0, SP, 4H |
| 077C | x(81E00008): LDR R1, SP, 8H |
| 077D | y(82E0000C): LDR R2, SP, CH |
| 077E | z(83E00014): LDR R3, SP, 14H |
| 077F | z(44390018): SUB R4, R3, 18H |
| 0780 | z(DA30D41C): BLCC MT [trap=1, pos=12500] |
| 0781 | z(433A0028): MUL R3, R3, 28H |
| 0782 | z(03E80003): ADD R3, SP, R3 |
| 0783 | a(8330007C): LDR R3, R3, 7CH |
| 0784 | b(F7FFFFB0): BL -80 [0735H] |
| ENDc |
| 0785 | c(80E00014): LDR R0, SP, 14H |
| 0786 | c(40080001): ADD R0, R0, 1H |
| 0787 | c(A0E00014): STR R0, SP, 14H |
| 0788 | c(E7FFFFEE): B -18 [0777H] |
| END |
| ENDd TraverseDir; |
| 0789 | d(8FE00000): LDR LNK, SP, 0H |
| 078A | d(4EE80418): ADD SP, SP, 418H |
| 078B | d(C700000F): B LNK |
| |
| BEGINe k := 0;f TraverseDir(A,g k,h DirRootAdr)i;j MarkSectors(A,k k)l |
| 078C | e .PROC 8 |
| 078C | e .COMMAND Init |
| 078C | e(4EE91F48): SUB SP, SP, 1F48H |
| 078D | e(AFE00000): STR LNK, SP, 0H |
| 078E | f(40000000): MOV R0, R0, 0H |
| 078F | f(A0E00004): STR R0, SP, 4H |
| 0790 | g(40E80008): ADD R0, SP, 8H |
| 0791 | g(410007D0): MOV R1, R0, 7D0H |
| 0792 | h(42E80004): ADD R2, SP, 4H |
| 0793 | i(4300001D): MOV R3, R0, 1DH |
| 0794 | j(F7FFFFA0): BL -96 [0735H] |
| 0795 | k(40E80008): ADD R0, SP, 8H |
| 0796 | k(410007D0): MOV R1, R0, 7D0H |
| 0797 | l(82E00004): LDR R2, SP, 4H |
| ENDm Init; |
| 0798 | m(F7FFFEE8): BL -280 [0681H] |
| 0799 | m(8FE00000): LDR LNK, SP, 0H |
| 079A | m(4EE81F48): ADD SP, SP, 1F48H |
| 079B | m(C700000F): B LNK |
| |
| ENDn FileDir.o |
| 079C | n .PROC 0 |
| 079C | n .ENTRYPOINT |
| 079C | n(4EE90004): SUB SP, SP, 4H |
| 079D | n(AFE00000): STR LNK, SP, 0H |
| 079E | o(8FE00000): LDR LNK, SP, 0H |
| 079F | o(4EE80004): ADD SP, SP, 4H |
| 07A0 | o(C700000F): B LNK |