5

The Microbee was an early '80s Z80 microcomputer from Australia that was successful mostly in education.

Looking at some disk image files I've downloaded I can see the disk layout seems to be very similar the Amstrad CPC and Sinclair ZX Spectrum +3 derivatives of the CP/M disk layout. In fact the same DSK disk image format is used.

I can see these disks have a Z80 boot sector in the first sector. But I'd like to know where in RAM this code is loaded and executed.

The boot sectors I've looked at refer to a few addresses in the low 0xE000 range, but they don't align with instructions in the boot code, assuming the sector is loaded at a 16k boundary, which might be a false assumption. Otherwise those could be ROM addresses but so far I can't find any of them referenced on the Internet. (Yes the boot ROM does reside at 0xE000 I can now confirm.)

Info on the technical workings of these machines is scant on the internet and I can't get any of the emulators to work, or at least not with disk support.

Does somebody know where the Microbee loads the boot sector from disk?

2
  • You may try an emulator like uBee512.
    – Polluks
    Commented Jul 22, 2020 at 14:04
  • @Polluks: Yes I have that and I think Nanowasp and MAME and can't get any of them to work well. I had uBee512 working finally a few times and then it started ignoring whatever disk I tried to boot from and now only boots from the same, possibly internal one? Commented Jul 22, 2020 at 14:09

1 Answer 1

5

Where it's loaded and where it's executed may be two totally different things :-)

I don't think the emulators will do you much good since they tend to only emulate the machine hardware itself. What you need to look at is the ROMs, which are almost certainly still subject to copyright (hence hard to get legally).

But I think this actually depends on the model you have. Though it's stretching my memory a bit, I think that the 256 I owned many moons ago could select (via an I/O port) certain banks (32k sections of physical memory making up the 256k) to appear at different places in the 64K Z80 memory map.

By mapping one of the banks into the lower 32K, loading the disk boot image at 6000h, then remapping so that this half-bank now appeared in the upper 32K (replacing the ROM), the loaded code then appeared at e000h, which is where it would jump to.

But, I hear you say, if you're running code in the ROM and you layer some RAM over it, won't that cause issues when the ROM code gets "hidden" by the newly mapped-in bank?

And you're right, it would, except for one final piece of the puzzle, a small piece of memory that "sat above" the actual bank that was mapped into there (I'll call this the priority memory below since I can't recall the actual name of it). That allowed a small memory chunk where you could run code that would survive any mapping changes.

In other words, it would look something like the following, with you effectively being able to see from above:

──────Your view of the address space.──────
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

                                ├───┤       (priority memory)
 ◀───── Bank A ─────▶ ◀───── Bank B ─────▶  (mapped-in banks)
├────────────────────┼────────────────────┤
       Low 32k             High 32k         (address space)

But, again, keep in mind that's for the specific model. You would probably need to look at disassembled ROM listings to figure out where they loaded on other models.


I have to say this question actually brought back some fond memories, as a few mates and I got Forth systems up and running on several different architectures. The Microbee was by far my favourite, as the boot scheme it used pretty much gave us almost the full 64K RAM for Forth.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .