Timefix ROM =========== 1. Purpose This ROM allows you to set the date on the BBC Master series anywhere from 1st January 1900 to 31st Dec 2299. 2. Platform. This ROM code is only for the Master series of BBC computers. It communicates at a low level with the RTC IC (146818) on that platform. If used on a BBC B it will have no effect other than appearing in the ROM table. 3. Memory usage. i) Zero page &70,1 : Restored afterwards. ii) One page of private hidden RAM (or a low memory page if Hazel is full). iii) CMOS RAM location 18. The top two bits are used to store the century 19-22. This matches other date extensions. 4. Installation. Either program an (E)EPROM, load onto a RAM/ROM board (e.g. IFEL) or load into sideways RAM. For example: *SRLOAD TIMEFIX 8000 4 *FX200,3 BREAK The sideways RAM option requires the above FX/BREAK sequence, which simulates a power-on, for correct initialisation. This is related to correct initialisation of private workspace. If you just do CTRL-BREAK you'll likely get a "Bad sum" error and an asterisk prompt (at which you can return to BASIC and do as above). 5. Usage There is little to do upon activation. The TIME$ function can be used for setting/displaying the time as usual. The *TIME command also functions as normal. It is almost certain that the century will display incorrectly on first use of the ROM as it will not have yet been stored in the CMOS RAM. This can be rectified by setting the date with TIME$ or by using the "*CONFIGURE CENTURY nn" command where nn=19 to 22. If you use *CONFIGURE CENTURY without a parameter the century will be set to 20. 6. Technical The ROM uses the extended vector capability, XWORDV, for OSWORD. It traps calls to OSWORD &0E and &0F, points them to new routines which accommodate the century information. The RTC IC is programmed directly using memory mapped IO through SHEILA addresses. Other OSWORD commands are passed through to the MOS. This ROM is therefore unlikely to work alongside other software that traps WORDV and will require reinitialisation when such software has finished (the century, however, will still be safely stored in CMOS RAM). In implementing the new OSWORD routines the sizes and contents of the parameter blocks have been preserved, therefore there should be full backwards compatibility for them. As with the original OSWORD routines, errors in syntax will lead to commands being silently ignored. 7 Disclaimer THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.