Re: PC20-III behaves strange with a "new" BIOS

From: Ruud_at_Baltissen.org
Date: Wed, 10 Apr 2019 18:08:25 +0200
Message-ID: <5CAE14F9.7154.55F5952_at_Ruud.Baltissen.org>
Hallo MichaƂ,


> What I would normally do would be to step through this code with a
> debugger, ...

In contrary to my 6502 debugger my PC debugger has no means to set 
an address where the card should halt the PC so I can single-step 
further by hand.
If you have a software debugger in mind, which one?


> I was thinking more of copying it to the RAM on the original
> machine and using plain old DEBUG from MS-DOS.

To be honest, my first impression is that that won't work but it is 
quite possible that I'm overlooking something.



Hallo Mia,


> The PC20-III is probably similar enough to any standard PC
> compatible that you can run it's BIOS ROMs in some emulator, 

Unfortunately not. There where the PC has the control register of 
the 8255 at address 063h, the PC1 and PC10/20-III have another R/W 
register. And there are some registers in the 23xh range of which 
the one at 230h plays an important roll. 
I tried to emulate various things and got a BIOS that ran fine in 
the PCem emulator. After removing the simulations the BIOS didn't 
even pop up the very first start-up message :(


> I would however suggest trying to patch the 33 F6 / 31 F6, 2B CF
> / 29 F9 things to match the original rom. 

That is a very good idea! I altered my original compare program so 
it replaces the NASM codes by the original ones. And in the end I 
ended up with two exact the same ROMs (which on after thought is 
logical). 
Unfortunately this trick cannot be used the moment I change the 
sources for my own need because I have no original file to compare 
with. And just hunting for certain byte combinations won't work 
because I don't know if the found combination is a complete 
instruction or the last byte of one instruction and the first byte 
of the next one. One idea I have is to use the generated LST file as 
base; the compiled lines start with an address and then the 
generated bytes. Worth a try IMHO.
What I can do with the program as-is is to exclude the various 
comparisions one-by-one. IMHO at one moment there is only one drive 
available in VGA and, in theory, I should have found the combination 
that creates the problem. Then I should find out if it is a bug in 
my program or did I find out that, after almost 40 years, I found 
two sets of code that should work the same, but just don't? I'm 
afraid it is the first reason :)


> Btw I'd suggest trying to poke around in RAM to see if you can make
> it believe that it indeed has two drives and if both drives work.

Rereading my original message I see I didn't mention it: it is just 
setting bit 6 of the Equipment byte at 0040:0000 just before calling 
interrupt 19h. 


> It would be a nice hack if someone would patch the bios of a 286 or
> higher to work with 4 drives.

Sergey Malinov already did that. In fact he made it possible to 
attach eigth floppies but under certain conditions. His site:
www.malinov.com . Unfortunately I cannot see where this floppy 
project is. If interested, just ask me, it is just one ZIP file.

I have his Xi8088 procssor board and want to use it for such a 
project. It enables me to exchange various floppy formats with just 
one machine. 
His 8-floppy project can work stand alone in the form of a drop-in 
ROM but has one disadvantage: in that way it cannot work in 
combination with a XT-IDE card (see his equivalent: XT-CF-Lite) for 
the moment. By integrating his code (which is based on the BIOS of 
the Xi8088) into the one of the Xi8088 I hope to avoid that problem. 
If not, I just boot from a Gotek.


And thank you both for answering! It popped up some good ideas again 
:)

--
   
Kind regards / Met vriendelijke groet, Ruud Baltissen
www.Baltissen.org
Received on 2020-05-29 21:36:25

Archive generated by hypermail 2.3.0.