HELP!! Denyonet BIOS crashes and I can't find out why

Page 1/3
| 2 | 3

By konamiman

Paladin (949)

konamiman's picture

12-05-2011, 09:19

A couple of days ago I received an email from Koen van Hartingsveld from Sunrise. He reports me a problem with the Denyonet TCP/IP BIOS that seems to appear only on MSX2 machines (I had made tests on my Turbo-R only, in which everything works fine).

Basically, the problem consists on the computer hanging as soon as the floppy disk drive is accessed. But I better paste here the email with all the details:

Hi Nestor,

At Stichting Sunrise were at the stage of testing a series of produced DenYoNet network interfaces, as made by Dennis and Jos. Now I'm getting problems when booting through the DenYoNet Bios (DENYOTCP.ROM) as downloaded from your website.

When I flash the ROM with DENYOTCP.ROM (version 0.4) and reset the MSX (an NMS8280 with internal DOS-kernel 2.24) the MSX hangs after this reset. Disabling the internal DOS2 kernel (making it a DOS1 machine) results in continuous resetting of the MSX. The only way out is to hold the <ESC> key while booting to skip the Bios initially, and then enter CALL DENYOINIT. Then I can test PING and use HGET to transfer a file from my local webserver to the floppy disk of the MSX.

From that moment on everything seems to work fine (both in DOS1 and DOS2.24) except that under DOS2.24 the ping command can't properly be interrupted anymore (if I do so by CTRL-C or just pressing any other key than <RETURN>, I get an uninterruptable repetition of DOS errors that are unreadable since the error message is build-up from graphics-characters). In DOS1 ping can be stopped properly, but of course I can't use the HGET there, as documented.

The same issues are observed with Bios version 0.3 (which I received from Rob Hiep). I also tried different machines (DOS1 only) and get the same problems. Also Rob tested on his machines (DOS1 only) and gets reboots all the time.

What does work (both with Rob's machines and with mine) is to add a CF interface to the system, which includes DOS-kernel 2.20. Now, the MSX can boot propely through the DenYoNet Bios and enables me to proceed normally, although I still get the ping-problem.

What I noticed is that even when I boot with a CF interface, the MSX hangs as soon as I try to access a floppy disk station. It's likely that this is the same effect as when I boot without CF, because then the MSX automatically tries to access the first floppy station (and subsequently hangs, as described above).

So I guess it's not a DOS2 kernel version issue, but more a generally floppy disk access problem, which happenes when there is no CF or other HD/CF/SD interface cartridge inserted. Notice though that when I use the <ESC>, CALL DENYOINIT method, I can access the floppy drives without problems.

Do you have any idea what I do wrong, or what could be the problem. I don't have much documentation about this.

By the way, the hardware seems allright. I run a hardware diagnotic tool from Dennis Koller, and that indicates that everything (including the Flash-ROM is OK). In addition I get the same Bios issues with an original DenYoNet, as bought from Dennis quit a long time ago.

Hope to hear from you soon.
Yesterday I found a Philips 8235 somewhere in my house (I don't even remember where it came from) and I have reproduced the crash problem, that is:

- Booting with Denyonet alone causes the computer to show the BIOS welcome message, then the computer reboots. This repeats indefinitely.

- Booting with Denyonet and a CF reader causes the computer to crash as soon as the floppy disk drive is accessed.

- When booting with ESC pressed and then executing CALL DENYOINIT, everything works fine.

I don't know what can be wrong and it is difficult for me to get time to debug, so I ask here: could someone take a look at the BIOS code and suggest what can be wrong? The BIOS source code is here:

konamiman.com/msx/denyonet/source/denyotcp.asm

I think that the source of the problems may be the hooks patching procedure, I patch the extended BIOS hook and the timer interrupt hook. However I sent to Koen modified versions of the BIOS with the hooks disabled (one hook at a time), and he reports me that the problem persist :-?

So please take a look at the code and tell me if you find something strange. The sooner the problem is solved, the sooner we will be able to enjoy our Denyonets! :)

Login or register to post comments

By caro

Champion (480)

caro's picture

12-05-2011, 10:23

- Booting with Denyonet alone causes the computer to show the BIOS welcome message, then the computer reboots. This repeats indefinitely.The similar situation arises at me with ObsoNET2, when I flash the ROM with BIOSDOS2. ROM.

By caro

Champion (480)

caro's picture

12-05-2011, 12:32

Same occurs if flash a file BIOS.ROM v.1.1 and to establish a card ObsoNET in slot 1, and in slot 2 FDC-controllers.
The replacement of cards by places results in normal work of the computer.
With the version bios 1.0 such is not observed.

By konamiman

Paladin (949)

konamiman's picture

13-05-2011, 08:57

Same occurs if flash a file BIOS.ROM v.1.1 and to establish a card ObsoNET in slot 1, and in slot 2 FDC-controllers.
The replacement of cards by places results in normal work of the computer.
With the version bios 1.0 such is not observed.

Then it is most certainly a problem with the extended BIOS. The difference between Obsonet BIOS 1.0 and 1.1 is that the later implements the Ethernet UNAPI specification and therefore patches the extended BIOS hook, while the former does not.

By the way, I corrected the bug you spotted (5th line of GWORK must be "ld a,060h" and not "ld a,0C0h" ) but it still does not work.

By Yobi

Master (143)

Yobi's picture

13-05-2011, 12:24

Which compiler do you use?

By konamiman

Paladin (949)

konamiman's picture

24-05-2011, 13:08

SOLVED!!

The hint provided by caro (the fact that the same happens with Obsonet BIOS and only in slot 1) has been the key to find the bug.

The problem was a wrong initialization of the EXTBIO hook. When bit 0 of HOKVLD (FB20h) is zero at boot time, the ROM code must initialize the hook with RETs. BUT, not only this hook must be initialized, but also two additional hooks, DISINT and ENAINT, which are located immediately after EXTBIO. So 15 bytes must be filled with C9h starting at FFCAh, and I was filling just 5 bytes.

@Yobi: For developing this BIOS I use Compass.

By Yobi

Master (143)

Yobi's picture

24-05-2011, 16:05

Thank you for fixing it. Hope to see the fixed version soon.
OBSOSMB works perfectly. Only the speed is max 12KB/sec.
Do you use the full w5100 speed?

By konamiman

Paladin (949)

konamiman's picture

24-05-2011, 18:56

Yes, if you are using the TCP/IP UNAPI version of BIOS, it is using the hardware TCP/IP capabilities of W5100. Anyway SMB is a quite complex protocol, and the application is written in C. Please try the FTP client for a more realistic speed test.

By Yobi

Master (143)

Yobi's picture

24-05-2011, 21:45

I'm using DenYoNet TCP/IP UNAPI BIOS 0.4.
Hope to try the FTP-client asap.

I think sunrise is pretty happy when version 0.5 (or 1.0) is final. Hannibal

By sd_snatcher

Prophet (2832)

sd_snatcher's picture

24-05-2011, 22:49

When bit 0 of HOKVLD (FB20h) is zero at boot time, the ROM code must initialize the hook with RETs. BUT, not only this hook must be initialized, but also two additional hooks, DISINT and ENAINT, which are located immediately after EXTBIO. So 15 bytes must be filled with C9h starting at FFCAh, and I was filling just 5 bytes.

We as a community really miss a good MSX specific wiki. This kind of programming tip is too valuable to be lost inside a forum...

By Manuel

Ascended (14658)

Manuel's picture

24-05-2011, 23:24

MRC is working on that... for quite a while Tongue

Page 1/3
| 2 | 3
My MSX profile