/* root dir in block 4 entries: 23 char file name 1 byte status ints first block, length 16 per block */ import "io" manifest { root_dir_bn = 4, sizeof_dirent = 8, dirent_name = 0, dirent_status = byte 23, dirent_fb = 6, dirent_sz = 7 } let strcpy(dst, src) be { let i = 0; while true do { let c = byte i of src; if c = 0 then break; byte i of dst := c; i +:= 1 } } let set_entry(buffer, n, name, st, b1, len) be { let eptr = buffer + n * sizeof_dirent; strcpy(eptr + dirent_name, name); dirent_status of eptr := st; eptr ! dirent_fb := b1; eptr ! dirent_sz := len } /* This is the original start that created the directory let start() be { let b = vec 128, x; for i = 0 to 127 do b ! i := 0; set_entry(b, 0, "file1", 1, 11, 1111); set_entry(b, 1, "file2", 1, 15, 500); set_entry(b, 2, "file33333", 1, 16, 5120); x := devctl(DC_DISC_WRITE, 1, root_dir_bn, 1, b); out("write %d\n", x) } */ let start() be { let b = vec 128, x; x := devctl(DC_DISC_READ, 1, root_dir_bn, 1, b); for i = 0 to 16 do { let eptr = b + i * sizeof_dirent; let name = eptr; let st = dirent_status of eptr; let fb = eptr ! dirent_fb; let len = eptr ! dirent_sz; if st = 0 then loop; out("'%s' %d %d %d\n", name, st, fb, len) } }