home *** CD-ROM | disk | FTP | other *** search
- TBMSBIOS - TurboROM MicroSphere ramdisk BIOS Lindsay Haisley
- ============================================ 10/17/89
-
-
- AN EDITORIAL
- ------------
-
- I am the owner of a Kaypro 10 Z80 based CP/M computer. Some years ago I
- added a MicroSphere ramdisk which I purchased on the advice a friend
- knowledgable in such matters. The MicroSphere ramdisk adds a meg of tran-
- sient disk space along with a 64K printer buffer to my system and works
- entirely via my Centronics parallel printer I/O jack. I have been pleased
- with the ramdisk, which has occasionally coughed or sneezed, usually due to
- a bad connection in a cable or insufficiently stout power supply wire.
-
- I recently purchased a TurboROM from Advent Products and was delighted to
- note on the first page of the disk based documentation that TurboROM vs. 3.4
- now has "provision for integrating external device drivers -- e.g.
- MicroSphere and SWP ramdisks". On page 4 of the same documentation Advent
- advirtised an "External Driver Diskette" which included a software driver
- for my ramdisk.
-
- I called Advent and requested the diskette, and/or any information which
- they had on using the external driver hooks on the TurboROM to access my
- ramdisk. The person with whom I talked told me that in their opinion the
- MicroSphere ramdisk was "a piece of junk" and that they did not support it
- and that the External Driver Diskette did not exist, and that perhaps I
- could find out more information on the external driver diskette from the
- programmer. I stated that I was quite happy with my ramdisk, and was told
- that that was because I had never tried one of theirs. For help with the
- TurboROM hooks I contacted Bridger Mitchell, who was peripherally connec-
- ted with the TurboROM programming some time ago and he gave me what help he
- could, which was none at all!
-
- It's understandable to me that two companies which sell similar products
- should each consider it's product to be superior to that of the competion.
- It's true that the MicroSphere ramdisk, owing to its operation through the
- printer port, is doubtless slower than one such as the Advent ramdisk which
- uses a controller card. It is likewise true that MicroSphere's driver code
- was a tad less than fully optimized. It's a fair question to ask, however,
- whether these sins outweigh that of advirtising vaporware for Lord only
- knows how many years running. I bought my TurboROM because I had previously
- seen the software documentation touting support for my ramdisk and found
- Advent's attitude on the subject to be rather less than helpful.
-
- Now the MicroSphere ramdisk is essentially a pretty simple device. The
- support software which came with it was slow and in need of streamlining,
- however the source code for it was generously provided on the standard
- distribution disk and was written with enough comments to allow extracting
- the essential driver routines (which are quite simple) and integrating them
- into any format which one might desire. It always seems that if I want a
- job done right I have to do it myself. I sat down with the MicroSphere
- ramdisk code and a source for the RAM resident portion of the TurboROM BIOS
- and integrated the two, providing for myself what Advent did not. TBMSBIOS
- is the result, and I am passing it along for use by anyone who has had an
- experience similar to mine.
-
-
- TBMSBIOS FEATURES
- -----------------
-
- This BIOS is derived from Advent's TURBIOS.Z80 which is, I believe, in the
- public domain. TBMSBIOS.Z80 includes several modifications of TURBIOS.Z80.
-
- 1. All code, conditional and otherwise, for support of ZCPR3 has been
- removed. ZCPR34 with NZ-COM loads dynamically, requiring no support
- within the BIOS. NZ-COM 1.2, in fact, requires than the host operating
- system NOT be a version of ZCPR3. The host CBIOS remains in high memory
- but is accessed via a second BIOS which intercepts warm boots and
- reloads CCP from a file.
-
- 2. Provision is made for "function keys". My Kaypro 10 has a number of key
- position in the keyboard PCB which were covered up by the metal housing,
- unused and unsupported. Cutting away the housing and putting switches
- and keys in these positions provided keys for a number of useful
- functions, such as controling the printer buffer in the ramdisk. These
- extra keys all return values in the range of b0h to ffh. The BIOS
- provides a one character look-ahead at keybard input via console status.
- If a key returns a value larger than the value of the maxkey equate it
- is treated as a function key. Console status returns false (zero flag
- and a=0) for such keys and the key value is returned by constat in the L
- register. Normal keys return status true and 0 in L. The return from
- constat may be interpreted by an IOP or any other program so designed.
-
- 3. Two additional jumps have been added to the BIOS jumptable. If you are
- using ZCPR34, you MUST use the NZBIO.ZRL from this library which has the
- two additional jump in it. These jumps provide a number of utility
- functions needed for the MicroSphere ramdisk and printer buffer and are
- used by RDF.COM, the ramdisk format utility.
-
- 4. A number of routines have been added to cause Z80ASM to output assembly
- statistics to screen at assembly time. These provide help in correctly
- aligning TBMSBIOS with existing system elements. The HDR file contains
- a full discussion of this subject.
-
-
- EXTRA JUMPS
- -----------
-
- TBMSBIOS includes 2 jumptable entries beyond the DRI standard jumps. These
- are detailed below.
-
- FUNCTION at xx33h
-
- On Entry: Function: On Exit:
- --------- -------- --------
- C = 0 Toggle on/off output to the ........
- printer from buffer in ramisk.
-
- C = 1 Halt output to printer from ........
- buffer. Clear buffer.
-
- C = 2 Return logical disk for A = disk number
- MicroSphere ramdisk A = 0ffh (no ramdisk)*
-
- C = 3 Get the address of iflag, HL = iflag address
- a TurboROM flags byte.
-
- * Since TBMSBIOS always implements the ramdisk, this subfunction will
- never return A = 0ffh. If you create any other BIOS which does NOT
- enable the ramdisk you should see to it that this subfunction returns
- A = 0ffh, otherwise RDF may attempt to format some other disk with
- unpleasant results!
-
-
- FUNCTION AT xx36h
-
- This function provides direct access to the TurboROM using the
- same preparations (interrupt disable, stack save, etc.) used by
- within BIOS itself. It simply executes a jump to the BIOS calrom
- routine. Programs wanting DIRECT access to the TurboROM may still
- call fffch. This function is useful for IOP routines wishing to
- use do their own device handling and still take advantage of the
- facilities of the TurboROM.
-
- If you are using NZCOM and ZCPR34 it is essential that you add the two
- additional jumps to the NZBIO source and reassemble it. Calls to these
- jumps will otherwise go to lunch rather than the BIOS.
-
-
- FORMATTING THE RAMDISK
- ----------------------
-
- The MicroSphere ramdisk originally came with a single program, RDISK.COM,
- which both initialized and formatted the ramdisk. I have condensed and
- modified this program into RDF.Z80 which only formats the directory tracks
- of the ramdisk (RDISK formatted ALL tracks and took a long time to run). It
- must be run before the ramdisk can be used. RDF checks for the presence of
- the special functions jump in the bios, and if a jump is present it calls it
- and determines whether or not the ramdisk is initialized and if so, which
- logical disk it is. It then formats the first two tracks of the disk. If
- you redefine the ramdisk dpb to include system tracks you must modify the
- RDI.Z80 code to format whichever tracks are assigned to the disk directory.
-
-
- PRINTER BUFFER OPERATIONS
- -------------------------
-
- MicroSphere's original driver required the user to access non-existent
- drives in order to control output from the print buffer built into the
- ramdisk. I found this to be rather limiting, so the print buffer handlers in
- this BIOS may be invoked in any manner which ones imagination can conjure
- up. TBMSBIOS provides hooks for this purpose via an additional jump table
- entry at cboot+33. Calling this vector with 0 in the C register toggles the
- print buffer output, while a 1 in C halts buffer output and clears the
- buffer. The program PBUFF demonstrates the use of this feature and may be
- assembled to control both functions.
-
-
- MLOAD vs. 24
- ------------
-
- Included in this set is MLOAD vs. 24. This is a fine utility from NiteOwl
- software for loading Intel HEX files onto binary images of all sorts. It is
- the tool of preference for overlaying TBMSBIOS.HEX over your TurboROM .SYS
- files. MLOAD vs. 24 (and probably all previous versions) suffers from a
- minor and rather simple bug. When finished with it's job, MLOAD returns to
- the operating system without executing a warm boot. This is fine in most
- cases, however unusually large files will bash portions of the CCP causing a
- system crash. RET instructions in the enclosed version of MLOAD have been
- replaced with RST 0 instructions, forcing a warm boot.
-
-
- CONFIGURATION AND ASSEMBLY
- --------------------------
-
- All configuration options are in the file TBMSBIOS.HDR which contains
- additional information on assembly and options. Please go through this file
- with a word processor and read the comments as you set the options. Code
- syntax is adjusted for the SLR's fine Z80ASM assembler. If you don't have
- it, minor editing of the syntax will allow using M80/L80.
-
-
- CREDITS
- -------
-
- TurboROM is a registered trademark of:
- Advent Products, Inc.
- 3154 Ease La Palma Ave., #F
- Anaheim, CA 92806
-
- The MicroSphere Ramdisk is a product of:
- MicroSphere, Inc.
- P.O. Box 1221
- Bend, OR 97709
-
- NZ-COM is a registered trademark of:
- Alpha Systems
- 711 Chatsworth Place
- San Jose, CA 95128
-
- + + + + + + + +
-
- I will be glad, if I can, to be of assistance to anyone who has questions or
- needs help configuring, assembling or loading this BIOS.
-
-
- Lindsay Haisley
- 14206 Spreading Oaks Drive
- Leander, TX 78641
- (512) 259-1190 vox
- (512) 444-8691 rbbs (Z-node 77)