[sebhc] Re-creating actual floppies from archive
dwight.elvey at amd.com
Thu Mar 16 19:20:46 CST 2006
>From: "Robin England" <robin.england at dial.pipex.com>
>Thanks for your comments. Well I've tried it but cannot get it to work. I've
>followed the instructions to the letter, but can you clarify a couple of
>points for me? First, when you initially turn on the H/Z89 and press B with
>no disk in the drive, I assume that it *is* necessary to press enter at this
>stage to actually start the boot attempt in order that the BIOS variables
>are initialised? Secondly, what should the DOS utility H89TRANS respond with
>after you've pressed L and it has successfully sent the loader (e.g. should
>the command prompt re-appear?).
I assume that after doing the B ( and yes, on some machines you need
the return. I don't think it is need on the old H89's ) you then
enter the 50 or so bytes from the monitor and started that program?
Note that you need to use the reset button and not cycle the power
to restart after the B command ( I had another fellow do this.
See my note at the end of the post. I took forever for me to
get him to tell me what he was doing. ).
>I'm finding that when I start H89TRANS and select the correct COM port
>(COM1) I get the command menu. Then I press L (obviously with cable
>connected and H/Z89 running the loader code) and it just sits there. As the
>loader seems to be only about 800 bytes I'd expect it to complete fairly
>quickly at 9600 baud, but it does nothing. I can exit the DOS program with
>ESC, so the DOS PC hasn't hung.
It shouldn't hang, it should return with the menu. ( 686 bytes to be exact
or about 6 seconds ). I think you also need the H89LDR2.BIN file
to be in the same directory you were in when you started H89TRANS.
I think that error aborts back to DOS,though.
>I'm pretty sure that the problem is not with the RS232 side of things (cable
>etc). If I connect the internal serial cable (brown molex conn) to the
>terminal board instead of the serial card, I can happily send characters
>from the DOS PC (using Procomm) and receive them from the Z/89 keyboard,
>which suggests all is OK there. If I keep this setup and run your H89TRANS
>on the DOS PC, upon pressing L the loader is clearly sent because I can see
>it dumped to the H/Z89 screen.
>So, I believe that the problem I have is related to the internal H/Z89
>serial configuration. On my serial card, the LP port is labelled on the
>silkscreen of the PCB as being the topmost connector (when viewed with the
>card as mounted normally). However I have tried both the other serial ports
>without success. I have also looped the CTS/RTS DSR/DTR handshaking lines at
>the Z/89 connector just in case the BIOS serial routines require the 8250 to
Then, I suspect that the top one is the right one but you may
have to swap lines 2 and 3 or move the brown connector cable.
As I recall, there are some jumpers to select this on the serial
board but my memory is a little fuzzy here as to if that was
the H8 or the H89 that had the jumpers to swap these lines.
I do recall that the LP port had the 2 and 3 wires swapped
relative to the normal serial port. Do you have a serial status
light box? If not, you should have one.
>The serial card itself only has jumpers for IRQ setting. In the case of both
>my machines, the IRQ setting is OFF for all three 8250s. I'm not sure what
>other jumper / switch settings may be important? As far as I can tell, the
>DIP switch on the logic board is concerned only with the serial I/O between
>terminal board and logic board.
I don't use interrupts so that is correct, IRQ off. I'll check these
>Also, is it possible that your code will not work on certain BIOS versions?
>I'm not sure but I think I've got MTR-90 on this machine (it supports the
There was an issue with the motor timeout that another had
with a Z90. He was able to get it to work after I patched
the code so I suspect it should work with your code. The first
part of the code doesn't use any of the ROM code so it is
unlikely that this is an issue. It isn't until it is actually
reading and writing a disk that it uses anything in the ROMs.
>Have you any suggestions or perhaps some code that will dump input from the
>LP serial channel to the H/Z89 screen as a test? I will look at writing this
>myself if not, however my time with these machines has been more focussed on
>restoring the hardware itself and not the programming yet!
Look to make sure that the 2 and 3 signal lines are both driven.
Use the top connector if that says LP. I suspect that that is the
correct port if the board says LP. I won't be able to check my hardware
setup until this weekend and won't be at a computer on the web
until Monday ( the place is in the mountains ).
For the loader part, the boot strap you enter into the H89 just
sets up the serial port and reads the bytes into memory. It writes
the data starting at the high end of the code and then continues
to write until it writes over the last byte of the loader. This
causes the code to go forward to where there is some code that isn't
position sensitive to reposition the actual code such that if there
were any additional bytes ( up to 3 more or less bytes by 1 ) that the
code was off, it'll put things in the right place.
Once the code is moved, it will then flush any remaining '0'
from the serial ( NOP's ) and wait for the PC to send the first
real command. The command ( as I recall ) an illegal command.
As I recall, the H89 should then respond with a '?'. If so,
the PC believes that the main code has been loaded and is
ready to run.
Knowing this, you could setup your terminal program on the H89
and wait until you think the loader is done loading. You can then
reply with a '?' character sent from the H89 to the PC. It
should then bring the menu back. This will tell you that the
serial connection is working both ways for the PC program.
I don't think that the terminal program should echo for
the first part as the code is load but you might try it
both ways, with and without echo ).
I'll try and look at my code on the PC tonight and see if
I'm correct about the last handshake. I believe the assembly
source code is in the release for the part that is transferred
to the H89 from the PC as H89LDR2.ASM. After the code has been
transferred, you can drop back to the monitor on the H89 and look
to see what is in the location 043 141 (split octal) and on.
This code should match what the assembly code would create
at the location of MAININT in the assembly code. Bytes before
that may not match exactly the posistion.
I don't recall if the H89LDR2.BIN file is stored byte reverse
order or if I just reverse send it on the fly from the PC.
One other thing. When talking to others to trouble shoot, I
find that they tend leave out important details about what
they did( similar to me not having the 'CR' after the B ). In
order to make sure I know just what you've done could you
give me a complete step by step report of what you did?
Please be complete or it will be a waste of both our time.
Include an estimate of the delay in time between each step.
This may seem trivial to you but otherwise I'm working blind.
This should give you enough to get things get started.
>----- Original Message -----
>From: "Dwight Elvey" <dwight.elvey at amd.com>
>To: <sebhc at sebhc.org>
>Sent: Thursday, March 16, 2006 12:36 AM
>Subject: Re: [sebhc] Re-creating actual floppies from archive
>> Do make sure and let me know how it works for you!!!
>> Also, make sure and follow the steps. When I do it,
>> I forget to do the first disk attempt after powering on.
>> It just won't work because I depend on the bios to
>> initialize the variables and the controller. I need
>> to carefully read my own instructions.
>> >From: "Dwight Elvey" <dwight.elvey at amd.com>
>> >Hi Robin
>> > I don't recall which jumper setup was correct for the
>> >serial but as I recall, things were just what was the
Delivered by the SEBHC Mailing List
More information about the Sebhc