ROM v4.0
Author
Publisher
Description
The ROM v4.0 AtomUni is for use with the AtomClassic or AtomLite hard disk interface to automatically boot B-DOS from the hard disc, but like the HD BOOT ROM V2 it also allows booting from a floppy disk and is compatible with SamDOS and MasterDOS. Not yet with MasterBasic.
General Information:
Resets the SAA sound chip directly after reset with longer wait according to AL-BOOT v2.2 and defines the function keys F7 as DIR [RETURN] and F8 as DIR PEEK SVAR 7 [RETURN] instead of the tape commands. Also sets Symbol+Z="RECORD".
How It Works:
When the SAM is turned on or reset, the SAA sound chip is reseted and the normal reset procedure is continued. Holding the SHIFT key down during reset will give you a 256K SAM to work with. Before the copyright message is printed a test is made if DOS is in memory and if not it will fool basic that key F9 is pressed and the DOS is booted.
The BOOT command works in the same manner as before from the first attached unit, but now supports booting from any of the four possible (bootable formatted) CF cards. The forced boot is done by holding the keys 1 to 4 during the start-up of the computer. (This option is actually included in the AtomLite BootBlock.)
It is still possible to boot from floppy disk by holding down the SPACE BAR during reset or by disabling the hard disks bootsector.
Changes:
I tried to fix some bugs and add a few useful things, but with as much backward compatibility as possible.
Fixes: (Modified parts)
ROM Version=4.0 Byte at &000F=40
SubVersion1=&03 Byte at &001F=&03 Device(IDE/CF/SD/?)
(Bit_0=IDE (16-bit) AtomC_BootPatch
(Bit_1=CF ( 8-bit) AtomL_BootPatch
(Bit_2=SD ( 8-bit) Trinity_BootPatch (FLASH)
SubVersion2=&02 Byte at &002F=&02 BootPatch version ("HD BOOTROM V2"/"AL_BOOT v2.2")
HD_Boot_AtomUni Reset sound, functionkeys setup, boot from AtomC, AtomL or diskete
INT with ExtMem Fix bug INT with ExtMem paged in
RST&30 with ExtMem Fix bug RST&30 with ExtMem paged in (JP&CALL ROM1 with XM), corrupt AF' now Save&Restore.
DOS Paging DI/EI Instead EI after paging&unpaging DOS will be saved and restored IFF2 status
DOS_ErrorRemoveXM If (Error or HOOK return with E=1,2,3)
JSVIN1 Paging DI/EI Instead EI after paging&unpaging SYS will be saved and restored IFF2 status
ROLL Fix bug ROLL Left,Pix=1,Width=2
MEM$ Fix bug MEM$ with StartAddr (0-16383)
AUTOLIST Fix bug Label (NumVar+PrgLen ?)
LENGTH Fix bug LENGTH(0,A$) ERROR ON PAGE BOUNDARY (according to MasterDos patch)
QMULT SpeedUp 16 bit * 8 bit
SOUND Optimised
Consequences:
L0010_PRINT It can be used from XM, but DE must be from 0 to &BFFF paged in (paging not work)
L0013_PRINTSTR -||-
L015A_JMODE Restore HMPR works fine, probably a result of the RST&30 fix.
???
Added:
JumpVector L0190_JLZX34 Unpack LZX_t34 data from HL=SrcAddr to DE=DstAddr with A=OffsetX value.
RequiredAddresses+UnchangedParts:
&1C9E=NMISTOP ;OK For BDOS (INIT) (SamDos_Init & MasterDos_Init NotUsed)
&3F8C=UNSTLEN ;OK For MDOS/BDOS (READ AT) (SamDos NotUsed)
&ED39=UPACK ;OK For BDOS (INIT) (SamDos_Init & MasterDos_Init NotUsed)
&0286=L0286 ;OK* For MDOS Patch (&5896 to &58BD)
&3FDF=TSURPG ;OK For MDOS
&3FEF=CHKHL ;OK* For MDOS
&3FF2=INCURPAGE ;OK For MDOS
Fix_L1547: ;OK UnchangedArea &07 bytes for MasterDos patch
Fix_L1573: ;OK UnchangedArea &12 bytes for MasterDos patch
IMLENGTH ;OK-F Unchanged area &78 bytes for MasterDos patch + BugFix LENGTH(0,A$)
ToDo:
-MasterBasic compatibility
-After reset, if it does not boot from HDD and floppy is not there, it prints message 0. (After BOOT and BOOT1 commands it normally prints error message.)
-Maybe command NEW does not also execute BOOT.