💾 Archived View for uscoffings.net › retro-computing › systems › Tandy › t › standb.txt captured on 2022-06-04 at 00:49:28.
-=-=-=-=-=-=-
The "standby" feature of the 1400LT has been a problem for those using communications programs or who need to have the computer on and awake for longer than 3 hours, fifty-nine minutes at a time. The only fix which has emerged thus far is the NODOZE.SYS program, which captures the 1400's timer tick and continuously increments the timeout counter so that it never reaches the time set for putting the machine on standby. NODOZE.SYS is supplemented by SB14.COM (available in DL5, this forum) by some users. NODOZE.SYS has the disadvantages that it has small but measurable overheads in speed and memory use. Moreover, if one does want to save power when possible and to keep the screen off when possible (for back light longevity) the combination of NODOZE and SB14.COM (which times out the back light only) uses even more memory and may have more effect on processing speed. Fortunately the standby time appears to be readily manipulable under program control. The BIOS stores the times at memory locations 0040:00C8H (minutes) and 0040:00C9H (hours). A program which can poke values into these locations can control the standby time. This control lasts only until the monitor is invoked (CTRL-ALT-INS) or the machine is switched off and restarted. In other words, the standby time set by the monitor is not permanently changed. Here are a few program fragments which suggest how to handle a situation in which one doesn't want to use NODOZE but temporarily needs a long standby time without having to remember to change it at the monitor: In BASIC: DEF SEG = &H0040 ; note "DEF SEG" is 2 words POKE &H00C9, &H08 ; changes standby hours to 8 If you had your normal timeout set to five minutes, you could use the little BASIC program above to change it to 8 hours, five minutes. Then, on exiting the time-sensitive program, you could use BASIC again: DEF SEG = &H0040 POKE &H00C9, &H00 The same thing can be accomplished with DEBUG using redirection. You could have a batch file which looked like this: debug < stbyoff.scr <YOUR TERMINAL PROGRAM> debug < stbyon.scr in which STBYOFF.SCR would be e 0040:00C8 08 q and STBYON.SCR could be e 0040:00C8 00 q These accomplish the same things as the BASIC program - that is, they raise the standby period to eight hours and then restore it to zero hours, plus however many minutes you normally have set. Crosstalk Mark 4 permits this whole operation to be done from within Crosstalk itself. I've set it up in my Crosstalk startup file thus: POKE 004000C9,08 MACRO QUIT DO QUIT1400 where QUIT1400.XTS is POKE 004000C9,00 QUIT Thus the whole process is trouble-free and I don't have to mess with NODOZE or SB14. Little .COM programs could be put together in assembler to do the same things: MOV AX,0040 MOV DS,AX ; Sets data segment to 0040H MOV AL,08 ; 8 hours plus to standby MOV BX,00C9 ; Address to change; use 00C8 for minutes MOV [BX],AL ; Sticks the "8" into 0040:00C9H INT 20 ; exit I hope this is useful for you all. Please note the absolute absence of error- checking or routines which could read the standby time and restore it properly when delay is no longer needed and so on. It ain't graceful but it works. Finally, I have two caveats: These little routines are for the 1400LT only. I have no way of knowing what they will do on other machines. Secondly, I have not yet had the chance to test a really long standby time, so I don't KNOW whether the 1400LT will go to sleep in 8 hours or not. Will welcome news of any further tests.