Z64 Hardware v3 bios ver 2.15 code dump
This is an old discussion originally published on the dextrose forum
Side Show
well, after reading through some of the messages I though that maybe people might like to have access to the code dump on my z64, so I got it. you can get the code at http://personal.riverusers.com/~bielicki/z64215c.zip
-Side Show
handy
What's to keep those bratty little kids from modifying it into a vicious bios? It's been done before. That's probably why its not given out to just anyone...
Side Show
It is not the source code that I have posted, it is the hex code that I dumped from my bios, and somone would have to have at least some technical knowhow to be able modify the code. I dumped it so if my bios were to become corrupted I could simply erase it and reprogram it.
milo
Sorry Handy but it sounds like the Pope in Middle-Age.
'Knowledge is not good for the people.'
This was and still is a poor argument.
Any additional information will make the Z more interesting.
handy
milo, you appear to be a new member. I have been here a really long time,I read all the messages here [thousands] and I can tell you, people make nasty bios's and people load them and have to get a new bios chip. Then they write here how to get that bios chip.
nemesis112
You have to remember Milo that the bios in the Z is it's real brain, without it the Z doesn't work. It wouldn't take much to fry your EEprom with a modified BIOS, meaning a costly trip to the backup doctor.
That though would be the best case, the Z uses an intel 386 CPU, a version of DOS and the DOS filing system. Imagine what a virus could do!
Megabit
The Z uses an "Intel" 386 CPU? Where the hell is my "Intel Inside" sticker?
_kid
The Z64 contains an ALi chip, which is far more than a 386: it is a more or less complete PC (memory, dma and timers, isa bus, keyboard and simple ISA-based IDE) with that chip, a clock generator and a few of DRAM chip you have a completely running system.
The N64 interface is done (in HW1.x and 2.x) with a QuickLogic PLD, while in the 3.x hardware is implemented on-dice in the CPU (which ALi is able to customize up to a certain degree...) The "ROM" memory and the emulation interface is visible to the Z64 as a set of I/O ports.
The Z64 has 512k of RAM (upgradable to 1Meg soldering in the appropriate chip) and 512K of flash memory (this memory is paged). it works at ~28MHz. The "ROM" is a 5V dual-bank EDO SIMM. A non-edo or 3.3V (5v tolerant) part WON'T work.
the layout of the flash is as follows:
4k of "boot rom": the rom is structured as a ISA-EXTENSION bios (which makes the rest of the flash a bootable disk)
444k of a virtual drive (the Z64 sees this as 'A:') formatted as a normal MSDOS FAT12 floppy.
64k in which the bios for the x86 is stored two times.
The Z64 uses Caldera's OpenDOS as operating system, but it works just fine with any MSDOS-Like OS (for example the EXCELLENT RxDOS, which became totally free recently).
The internal bios is limited to CHS addressing for the hard drive, so you could have an hard disk of no more than 5xx megabytes, but OpenDOS has an even harder limitation: the rom'able version only supports 512 bytes (1 sector) clusters, so you can have only 32 megs as harddrive. This limitation is bypassed by the IOMega GUEST.EXE so it is possible to use a zip disk -- most probably using the GUEST.EXE of the 250M zip it should work fine.
The Z64 user interface is a simple MSDOS program (the on-screen N64 gui is done by sending to the N64 a special "ROM")
Side Show
yup, kid's got it right.
milo
The Flash-Rom in HW2 is a SST 28SF040
On the SST site (http://www.ssti.com/) this chip is well documented.
It's unlikely that software can fry this chip, but it can get in a non-accessible state.
On the above site you can find instructions to exit this state.
(you'll have to take the chip out and use a programmer)
-milo-
_kid
To a user that cannot access to a flash programmer, putting a:
loop: jr loop
in the first 4k and recalculating the checksum is all what it takes to render the Z64 completely unusable....
MHSsoccer
kid-
If there is a free version of dos that supports drives of 5xx MB then why not use that for CDROM support (and say that only the first 5xx MB of the CD are usable)?
-soc
Opium
Why not put a version of MSCDEX & the CDROM drivers in an unused portion of the bios?
You say the A: is virtual, why not put it there? Does the 512 sectors limitation have anything to do with MSCDEX?
_kid
The CDROM is not a problem related to bios or cluster size: in fact the "cdrom.sys" driver and MSCDEX.EXE do handle all the accesses to the CD directly (the "cdrom.sys" generally hits the hardware directly exposing a known interface via a device for MSCDEX.EXE, which hooks itself to the int vectors and ADDS functionality to the existing BIOS and DOS). The problem is the Z64.EXE program, which makes certain assumptions regarding the environment in which he lives: first off the drive containing the roms must be writeable -- try to protect the zip with the zip tools on the pc -- second it assumes to detect insertion/removal of the disk using the ASPI interface (directly addressing a "ZIP 100" device. If these requirements are not met it behaves somewhat weirdly (don't understand why it still works with 250M zip, but it does, oddly enough)
One could rewrite the Z64.EXE but I'm not sure if it is really worth the effort...
MHSsoccer
kid-
do you have a copy of the z64 bios? if not do you know where i can get it?
-soc
jb0395
So you actually have a zip 250 in and working perfectly?
_kid
The bios of the Z64 is available to everyone...
But maybe you're talking about the source... No i don't have the source, but it's very easy to dissect the bios file in its 3 components (bootrom, virtual disk and bios) and the virtual disk itself contains just plain MSDOS executeable files compressed with PKLite...
_kid
> So you actually have a zip 250 in and working perfectly? I can't vouch it works PERFECTLY, I could only test it a few hours: the iter was as follows: dissect the Z64 bios, PKLite GUEST.EXE from the 250M zip, put it in the virtual disk, reassemble, burn to flash and run. The test was as follows: placed a blank 250M the Z64 said 19xx MBITS Free. Backup a few of roms. reload them. Place a 100M zip, backup a few of roms and reload.
It seemed like it worked fine.