Msg: 5983 *Conference*
08-22-95 18:50:17
From: RON WIESEN
To : COMET _
Subj: REPLY TO MSG #5977 (UNDELETE -- COLD START RECOVERY)
The "save area" I mentioned in prior messages is used by the OS to build line_strings where the operator, in TEXT, uses the SHIFT+PRINT key press. The OS prompts for WIDTH and, based on it, constructs a line_string terminated by CR/LF for each line sent to the LPT port. Maximum WIDTH is 132 and this can encroach into the "save area" as far as address F919 but leaves the 6-byte area from F91A to F91F unchanged. Perhaps these 6 bytes relate to some other function such as a file name without a name extension? Note that WIDTH has a RAM hook. I don't know if the hook is pre-prompt or post-prompt but it should not matter. With some restriction of WIDTH, choice B of my prior messages is viable. For example, in the prior message for choice B a maximum WIDTH of up to 66 characters is accomodated. I think this is too restrictive yet I think few operators really need a WIDTH of 132 characters, so a comprimise can be considered. Given printer realities, a restriction to a maximum WIDTH of 80 characters allows choice B to be viable with less area for "recovery/save" code. Considering recent messages regarding recovery code that is resident in an Option ROM, then at the most only two blocks of code are needed: "save" code for file directory info and for critical RAM address pointers and "WIDTH override" code for guarenteed restiction of WIDTH via its hook. Of course you can use the "code enveloped within a hidden and lowest locale BASIC file" arrangement for all the code, but I think any "WIDTH override" code should stay in the "save area" locale to keep it immune to all operator actions. At the least without any file directory info saved at all, the "save area" must contain critical RAM address pointers and "WIDTH override" code. In such a case the recovery code must be smart to work without benefit of any saved directory info but a 32-Kbyte ROM has room for lots of "smarts" keyed to critical RAM address pointers. Assuming restriction to a maximum of 80-character WIDTH, a 58-byte cell is available. Consider the ammended "choice B" as shown below. File_Address (2nd and 3rd bytes) is saved followed by a copy of 3 critical RAM address pointers (low/high byte pairs) from the OS, plus a 16-byte block of "WIDTH override/save" code. Beware that 16 bytes is pretty tight for both WIDTH override and directory info save logic. 18-byte cell (18 by 1) FA8E file type, RAM file slot #1 .. .. FA9F file type, RAM file slot #18. 58-byte cell (18 by 2, 3 by 2, plus 16) F8E6/F8E7 File_Address, RAM file slot #1 .. .. F908/F909 File_Address, RAM file slot #18. F90A/F90B address to first BASIC file F90C/F90D address to first ASCII file F90E/F90F address to first M/L file F910 to F91F WIDTH override/save code.