◆ APMSX

Z80 MSX card can run 3.58Mhz

이안김 2016. 4. 27. 22:45

Hi everyone,


Z80 card speed didn't reach to 3.58Mhz original MSX.


The Z80 MSX card runs as based on the architecture of the Softcard and it runs 2.045Mhz.

This speed limit is due to the APPLE II BUS speed and Z80 internal structure.

But, I tryied to break the limitation of 2Mhz.

Anyway this is one small BASIC program to determine the system speed.

(Low numbers is faster. (60hz tick) )


It took 88 ticks.


My Z80 MSX card runs as below


(I'm calling it 2Mhz)


Looks very slow?

In fact, while running games, I didn't feel slow as the number says.

Most of games doesn't use loop timer, and they are used 60hz VDP interrupts.

So, It almost same speed on many of games.


And now, I want to make it faster. But, How?

Z80 card have a 512KB SRAM and decide to run the Z80 when it doesn't use APPLE II BUS but using only SRAM.

I tryied several times and finally got the result.


Let's run same BASIC to check speed.



Hmm.. Just little faster..  (I calling it 2Mhz+)

What's wrong?

In fact, BIOS+BASIC is in the SLOT0 and this area is APPLE IIe location.

And it couldn't run faster in the BUS area.

So, Now, I upload the BIOS+BASIC into the SLOT3(SRAM area) and switch it to use only SRAM by Z80.



Ok!! GOOD. 

It is the same ticks spend as the S/W emulator.


I manually Switch the PAGE of BIOS+BASIC configuration.

And it works can switch to 3.58Mhz from 2Mhz+.


But, failed to switch 3.58Mhz to 2Mhz+ on basic prompt.

I guess that it is due to switching timing while running the memroy.

So, move to Safer location and switch the PAGE0&1.

This small program would help to switch the PAGE configuration of MSX.




The Data is Z80 codes and direct control the SLOT memory configuration.

A0 means Lower nibble is 32KB Slot# and (00 00  00 00 (BIN)) is SLOT#0.

Before I set it AA(10 10 10 10) to use SLOT#3.


And you can see the ticks changed to 146(2Mhz+) from 88(3.58Mhz)


I'm considering to move the BIOS+BASIC to SRAM area not on APPLE II Memory area.

It would be better performance.


Anyway I have a bug(Bus conflict) when I used Multi running. So, I disable to run Z80 and 6502 at the same time.

It should work much better but, the BUS conflict bring something wrong.

I'm trying to solve this technical issue.


Anyway, It runs 3.58Mhz Z80.

Thanks