===================================================================== THINGS TO DO -- INTERNAL ===================================================================== IN PROGRESS / DONE MUST DO: We may get into trouble if there is more than one iRMX disk in the system. Too much use of dDrive and curVolInfo. Stash current volume info for each disk. OUGHT TO DO: 1.00 Generalized filetype table. Add gRename, gUnlink to Dir class. Registered type converters and viewers. Should separate DOS-specific stuff into its own module (dosdir.c), which would simplify a Unix port. Could use the BSD directory routines. Menus for Dir and File views should depend on the filesystem. The error message view should be a Text view. This would allow Help view to be re-written, and also let errorPrintf output multiple lines. Vertical centering flag would help. Make Help view take a Menu instead of an array. Menus: add HELP macro, entry type. Move screen help line to label string after ':'. Make closure type (void*). Allow the Dir trees to be partial. Scavenge nodes that aren't visible. (Basically an outline mode) Selective scavenge on Dir trees: can delete contents if tcount = 0 or tcount = fcount, and not on path to dest. Fold changes back into RD7. Put DISK, CONVERT, and HELP modules in separate directories for each product. MAY BE A BAD IDEA: Open: If you create the node first, you don't need to specify ascii/binary/whatever. (On the other hand, std. C specifies the stream ops, not the handle ops.) Read, write, seek, tell, etc. should take a file handle (magic cookie) as an arg. Eliminate dir.file field. NOTES: ===================================================================== DONE: ===================================================================== 0.17 Split fileVr out of Viewer; put buffer stuff there. 0.17 Generic stuff moved into ../LIB, to be used in RD7. 0.16 Parametrize filetypes and filesystems better. Use tables instead of enum types and switch stmts. FS name == name of Dir subclass. 0.12 gFind should start with the kids. 0.09 Make sure CONVERT can handle both read and write to iRMX. The name-fixing and verification stuff should go into dirs.c and irmx.c. 0.07 gRead shouldn't automatically close (open's ok). 0.07 gSeek and gTell for Dirs. gSeek needs xPrvBlk for speed. 0.07 FileViewer: use two buffers for efficiency. All clones of a viewer must share the same set of buffers. Sort of a bidirectional stream. 0.07 gOpenFile(dir, mode) now exists. Maybe ought to go into gOpen, but save that for later. 0.04 Use MsgView for messages instead of InitView. 0.04 Menus.h: use void* for closure instead of char* 0.03 Split view, screen, & menu object defs into separate file. (this file will be almost all data, some stat & init code) 0.03 View: make more generic by separating view, which manages the window and cursor location, and viewer, which traverses the object being viewed. 0.03 Split View.[ch] into View and Viewer. 0.03 Viewer for Drives (add filesystem, disk format to existing drive info (density, tracks, sectors)). (REJ) Drive roots probably ought to be their own subtype of Dir. They're pretty different, including having a different gHeader string. 0.03 [Alternative: use an array-oriented Viewer.] 0.02 Finish hacking main and convert for generic gReadFile, gWriteFile. dCopyDosFile, etc. are now bogus. 0.01 In addition to switching file systems, make it easier to do so again in the future. Parametrize things better. 0.01 Array of drive-info structures. Compaticard? Double-track? 0.01 Update Dir structure and disk.[ch] for iRMX-86 0.01 Split disk.c into disk.c (sector read/write), irmx.c (directory and file read/write) 0.01 Ought to have disk browser (absolute sector dump) Treat tracks as "files"; commands at track & drive level for density, sectors/track, sector size. 0.01 Investigate CopyIIpc and Compaticard boards 0.01 Change Idris -> X (i.e. something neutral) rdi.c -> main.c, rdi.h -> version.h