MZ80B - BootRom Disc

parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

MZ80B - BootRom Disc

Post by parc »

In both of my "B"s the tape recorder has problems and does not work ... and even though I have a disc emulator and a disc i/o interface I wanted to have a BASIC, when turning on the "B" and use this "B" without needing the disc emulator.

So, I populated the first part of my first "B" PCB and burned the Monitor and the SB6510 into the ROM - now the system is starting out of the box.

Of course, you can not save anything, but this is not the idea here ... start the system and run some small tests program ... that's it. Now to the next pieces on this PCB.
Attachments
IMG_20210719_103959_skaliert.jpg
parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

Re: MZ80B - BootRom Disc

Post by parc »

So, the second part of the PCB has been populated - the sound IC has been added and I get a sound, can turn on/off 8 LEDs and have some configuration switches for further project.

The third part on the PCB (left part) is actually NOT working, some kind of error somewhere ...
Attachments
IMG_20210720_212535_rotated_scaled.jpg
psmart
Posts: 138
Joined: Thu Nov 21, 2019 10:12 am
Location: Leeds
Contact:

Re: MZ80B - BootRom Disc

Post by psmart »

Cool project, definitely an alternative to the B/2000/2500 cassette drive is needed, they all suffer the same fate.

I'm in the process of getting the cassette cogs 3d printed as they all seem to crack on the clutch/flying drive cog, but to have a backup drive is excellent.
Sharp MZ/X Series Projects and FPGA Emulator
engineers@work : https://eaw.app/sharpmz-series/
parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

Re: MZ80B - BootRom Disc

Post by parc »

So, the left part is also now populated and it works. To summarize:

a) The YM2149 is located at 0x60/0x61 and is feeded by the 4 MHz system clock (therefore a AY8910 will not work)
a.1) One port of the YM2149 is feeding LEDs
a.2) One port of the YM2149 is used for switches (for own software )

b) The right part is the MZ80B Boot-ROM Disc, which contains a 32KByte ROM. Press "/" during IPL-RESET and then the software will be loaded from the ROM and started (proof of concept was here Disc BASIC 6510 with Monitor 1510)

c) The left part is a copy of the MZ1R18 RAM file card, it did not work at the beginning, because I used the original port addresses of the MZ800 and well I was not aware, that the Z80A of the "B" is already there located. So I changed the address to 0x6A, 0x6B'to make them work. In addition to this one has 8 pages of 64K RAM and 8 pages of 64K ROM. (the pages can be selected at 0x6C).

So, the general idea is to have a selection program in the Boot-ROM disc and from there I can select up to 16 programs located in ROM (or however it is located within this ROM).
Attachments
IMG_20210724_165551_scaled.jpg
parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

Re: MZ80B - BootRom Disc

Post by parc »

By the way - thanks to the RC2014 community, where I got the initial YM2149/8910 schematic and from some MZ800 person, who created an new RAM file card for the 800.

I have to make a second revision, because the /M1 signal has not been considered here (and that my lead to errors during IRQ handling), the parts have to be moved away from the edges a little bit and the LED for the booting process has to be changed.

But now to the next card ... its an amazing feeling to build these PCBs - something I really would liked to be able to in the eighties where I worked with these machines.
parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

Re: MZ80B - BootRom Disc

Post by parc »

So here is - I hope - the final edition of the card in terms of features (etc). In addition to the card shown above two changes have been made:

* the iteration through the RAM/ROM disc is now possible over the whole range and not only within the 64K page size

* the RAM (512 K) is now battery buffered ...

Marten
Attachments
IMG_20210825_090925_smaller.jpg
IMG_20210825_090925_smaller.jpg (421.38 KiB) Viewed 4726 times
User avatar
dat-alex
Posts: 34
Joined: Tue Dec 04, 2018 7:18 am
Location: Greece
Contact:

Re: MZ80B - BootRom Disc

Post by dat-alex »

Hi Parc. I want to make a project on 80b interfacing a boot rom + serial interface + esp8266 wifi for connecting to on-line text-base bbs.
Gathering infos on this . Where can I find infos on 80B boot rom schematic. Thank you.

Alex
(sorry for the off-topic)
member of retroclub.gr (Thessaloniki , Greece)
parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

Re: MZ80B - BootRom Disc

Post by parc »

Ah, yes

* the software code can be found in the IPL listing starting at 05EFh
* the schematic of my boot-rom is added to the message

But be aware that I am not an electronic man ...

PS.: The only major thing you should consider is, that the first byte of the boot ROM has to be a value of zero - so I changed the C3-command at the beginning of the Monitor 1510 to a byte of zero and a relative jump.
Attachments
Schematic_Sharp-MZ80B ROM Card V3_2021-09-03.png
User avatar
dat-alex
Posts: 34
Joined: Tue Dec 04, 2018 7:18 am
Location: Greece
Contact:

Re: MZ80B - BootRom Disc

Post by dat-alex »

Thank you Parc for this useful infos (and schematic! :D )

I was looking for these many times with no result.

I had also examined IPL listing trying to make a 'raw schematic' from the code but I wanted to make sure of a working one.

Well done my friend
(Update: I noticed that extra logic needed for CEROM_ADR_HIGH & CEROM_ADR_LOW ,examining your schematic, in order to connect external ROM to expansion bay)

Alex
member of retroclub.gr (Thessaloniki , Greece)
parc
Posts: 19
Joined: Wed Mar 20, 2019 8:29 am

Re: MZ80B - BootRom Disc

Post by parc »

Hey,

the additional signals ( I used a CPLD to do this low level work: ATF22V10 or ATF16V8):

Here parts of my CPLD code (be aware: !m1 => M1 = 1; aX => aX = 1, !aX => aX = 0 etc)

/* Signals for the Boot-ROM Disc of the MZ80B */
/* 11111001 = F9 (read value at address) */
CEROM = a7 & a6 & a5 & a4 & a3 & !a2 & !a1 & a0 & rd & !m1 & iorq ;

/* 11111000 = F8 (write high address byte) */
CEROM_ADR_HIGH = a7 & a6 & a5 & a4 & a3 & !a2 & !a1 & !a0 & wr & !m1 & iorq ;

/* 11111001 = F9 (write low address byte) */
CEROM_ADR_LOW = a7 & a6 & a5 & a4 & a3 & !a2 & !a1 & a0 & wr & !m1 & iorq ;

Actually the code is located in the ATF22V10 (IC lower right on the PCB, but a ATF16V8 is also suitable)
Post Reply