by Rich and Jim Notini
SmartWriter ROM can be bypassed all together. Just have the system
ignore the SmartWriter ROM and continue searching for a valid boot
device on AdamNET.
It's doable, but tricky. An ADAM cold boot does the following:
(1) Begin execution at address $0000 in the SmartWriter ROM. This has
the sequence DI / JMP $0080.
(2) At $0080, code bank-switches the center-slot XROM to the upper 32K
address space and checks for the presence of the magic word $9966 at
$8000. If found, we JMP $8002 to run the XROM. Otherwise, we
back to RAM in the upper 32K, then load the EOS ROM (which sits at
above SmartWriter) it to its final location in RAM at $E000. This ends
a JMP _EOS_START, EOS's initialization routine.
(3) _EOS_START is the routine that initializes ADAMnet and looks for
active devices and bootable media. If nothing bootable is found, it
terminates in a JMP _WP (an EOS function call), which after insuring
the SmartWriter ROM is switched into the lower 32K address space, does
the JMP $0100 to actually execute SmartWriter application code.
(4) If you want something else to happen other than SmartWriter, you
to have your own code running at $0100; however, you can't just replace
everything. The SmartWriter ROM contains the patterns for all the ASCII
characters, and there is a reserved memory location $0102 that *MUST*
a pointer to the start of this pattern generator table. Even if you
the SmartWriter app with completely different code, you *MUST* preserve
$0100: JR $0104
$0102: DW ASCII_GENERATORS ; EOS reserved memory location
$0104: ... ; other code begins here
; probably JP MY_APP would be a good
; 128 characters, 8 bytes each (1=pixel set, 0=pixel clear)
DB xx, xx, xx, xx, xx, xx, xx, xx ; character 0
DB xx, xx, xx, xx, xx, xx, xx, xx ; character 127
... ; rest of user code here
; could even (eventually) be SmartWriter,
; if there is room
(5) Basically you should preserve the existing contents of addresses
to $00FF, and work your new code around the ASCII generators as
in (4) above. DO NOT MESS WITH EOS ROM CODE.
I have only ever seen one ADAM running with a totally new
ROM, and that was Ron Collins' Mini Winnie hard drive system which
a version of TDOS from ROM; it would work even if the hard drive itself
was not functioning. Tony Morehen made it for him. It had no
app at all, but obeyed (4) and (5) above.
You are more than welcome to modify the R80 SmartWriter disassembly
source, if you can, to create a new ROM boot, with or without the
app. Note that the source is set up for use with the Z80ASM+ assembler
SLR (a CP/M-based program). Not sure how other Z80 assemblers will like
it (especially the very convenient .PHASE and .DEPHASE directives).
*Rich* (Dr. D.)
There is another option available to you but requires some further
ADAM equipment and also an Eprom burner.
First you would need a Multi-Purpose Interface Board 3 or a Parallel
Interface Board, they ones made by Micro Innovations. I am not sure if
anyone has a supply of these boards anymore, but you could check with
Slopsema or Rich Clee first. As a final resort you could also check with
Terry Fowler of eColeco (buyer beware).
These boards plugged into Expansion Slot #2 inside the Memory Console
provide numerous functions, but most important to you would be an open
Socket for the installation of an eprom which has had a program burnt to
it.... therefor the need for an eprom burner. Proms were available back
the day with SmartBASIC, SmartDSK or ADAM's DeskTop on them and other
programs could have been used as well.
When you turned the ADAM system on with one of these boards installed
program that was on the eprom would be loaded instead of SmartWRITER...
basically this is what you'd be looking for.
One way or the other, you will have to burn some eproms, the hard way
be to burn a set to replace the SmartWRITER eproms that are soldered to
motherboard. The easier way would be to track down one of these two
expansion cards and then burn a single eprom to install in the socket of
of these boards.
This is about as far as I can help you as my knowledge of programming
restricted to Basic and accessing OS functions with CALLs, but at least
know now that something else is possible and hopefully still available.