Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06254 DIP/Input Major Always Jun 23, 2016, 10:35 Jul 18, 2016, 20:34
Tester demotester View Status Public Platform MESS (Unofficial Binary)
Assigned To Resolution Open OS Windows XP
Status [?] Confirmed Driver mz700.cpp
Version 0.174 Fixed in Version Build Normal
Summary MESS-specific 06254: mz700: Keyboard unusable for certain games
Description Found following from current sw-list to have problem with keyboard on MZ-700 driver!
(also all work fine on MZ-800 driver in 700-mode - some with enhanced graphics)

nibbler (this one needs to correct the part1 on size 13873 to work! (i.e. to the size mentioned in header -> 128 bytes of header + datasize = new size)

All have been tested to work fine on other emu i.e. "EmuZ-700" from Takeda-san.
Tip: just rename files extension from .mzf to .m12 to work on this emu!

Otherwise, in my humble opinion, it seems to be the only problem left to make the mz700 driver near perfect in MESS !

The keyboard problem could apply to mz1500 driver too ! (because they are practically very similar)

Steps To Reproduce Specific steps to duplicate keyboard issue:
- "MAME mz700 -cass tapeworm " (or select it via the internal UI via the software list)
- Type L from monitor. This will ready the system to load the cassette
- Tap F2 (shortcut for starting PLAY on tape) and wait until game loads fully. You can use the TAB menu and Tape Controls if desired for same results
- Wait or unthrottle the emulation to load the cassette faster if time is a factor
- Once loaded, you are prompted "Would you define the keys by your own? (Yes or No)"
- Y or N will with allow you to remap or use the arrows + space defaults.
- Game will start, notice you cannot move the shooter and the fire button is considered always down.

Additional Information Btw. some other files from the current mz700 sw-list also need to be corrected on size from header to work on MESS!
Work in progress! (provisional sw-lists attached)

Regression Version
Affected Sets / Systems mz700
Attached Files
zip file icon (29,213 bytes) Jun 23, 2016, 10:52 Uploaded by demotester
related to 06283Acknowledged mz700: Joysticks unusable 
User avatar
Jun 23, 2016, 11:07
edited on: Jun 23, 2016, 22:11
The keyboard problem could apply to mz1500 driver too ! (because they are practically very similar)

A quote that could solve the misconception among MZ-1500 and MZ-800 system:

youkan (Japan)
It is misunderstanding that MZ-800 and MZ-1500 are almost identical. MZ-1500 is not just a Japanese version of MZ-800. They are both based on MZ-700 architecture but differently extended. MZ-1500 does not have 640x200/320x200 bitmap screen but has 8-color PCG screen (1024 PCGs consist 320x200 screen). MZ-1500 has two SN76489 while MZ-800 has one. Etc. You would easily understand it if you look at the motherboard of them.


Currently we have "mz800_cass" sw-list attached to mz1500 driver, but according to above quote this is wrong !
(the "mz700_cass" list should be attached to mz1500 driver instead of "mz800_cass" list)

Also, in the "mz700.cpp" you can found this on the bottom: (quote)
COMP( 1984, mz1500, 0, 0, mz800, mz800, mz_state, mz800, "Sharp", "MZ-1500", MACHINE_NOT_WORKING ) // Japanese version of the MZ-800

Obviously an misunderstanding that MZ-800 and MZ-1500 are almost identical, but youkan (Japan) says that is not ! (who is right?)

User avatar
Jun 23, 2016, 14:13
edited on: Jun 23, 2016, 17:09
We have an interesting case here: above does not work on driver with the "working" status (mz700) but work fine on driver with "not working" status (mz800) !
According to that the "not working" mz800 driver is currently more compatible with mz-700 programs than "working" mz700 driver ! How is that possible? :-)
(of course, this apply for mz800 driver in MZ-700 mode, because a real MZ-800 mode seems still not supported - the MZ-800 Basic does not work)

User avatar
Jun 26, 2016, 01:58
Can you describe exactly what the keyboard problem is please?
User avatar
Jun 26, 2016, 08:59
edited on: Jun 26, 2016, 09:03
Yes, the cursor keys on the MZ-700 seem not function ! (Work fine on MZ-800 and other emu i.e. EmuZ-700.)
To test, start one of the mentioned problematic on MZ-700 and compare with MZ-800 (or EmuZ-700) to see exactly what is the problem. IMHO, all problematic should run on a real MZ-700 w/o problem. (Note that also run fine on other MZ-700 emus.)
Yeah, the best would be to test on a real machine, if you can find one in good / working condition. ;-)

User avatar
Jun 28, 2016, 03:40
The problem here is that you are putting way too many issues into one bug and it doesn't keep the focus clear. This bug is about lack of keyboard working in certain games and this what I'll attempt to address.
Anyway, I'm confirming this bug using 'tapeworm' as an example, with the mx700 machine since it is assumed "working" since it had no flags. The image isn't flagged as bad, loads up correct and keyboard doesn't work even after remapping the controls. I tried mapping arrows, and 2 different spots on the keyboard - the fire is considered held down constantly and there is no movement in the shooter.

The other issues with bad images and such can be address at another time or if you fix things you can submit a proper pull request or send a .diff/code changes mentioned at this link:
User avatar
Jun 28, 2016, 10:22
edited on: Jun 29, 2016, 15:37
Thank you for testing and focusing on a real problem. Yes, the problem is that the keyboard does not always work properly.

As for the MX700 machine that you are mentioning, I guess you meant to mz700 !? (or if it is something else about which I have no idea)

Another thing you changed in "Steps To Reproduce" (just wonder, where did you get that information?)
(quote) - "CLO". This will ready the system to load the cassette. (end quote)

Is not usually enough to type the letter "L" for loading from the monitor on mz700 ?
Any combination of words that contains the letter "L" probably works: "OLC", "COL", "OCL" etc. and even "I LOVE MZ" could work fine.

Regarding submission of corrected sw-lists, I am afraid that my old brain could not comprehand all those complicated procedures,
so suggestion would be to use those attached above and do with them whatever you like. (or not, whatever, it is not my task to care about lists anyway) :-)

p.s. However, this preliminary can serve to start while the overall task regarding cleaning / repairing / updating is not completed.. so there is still hope.

User avatar
Jun 28, 2016, 12:22
I only relayed what worked for me to get the game to load. I don't know a lot of these machines and have never used them even in a emulated/simulated environment. When reporting, go in assuming that no one knows how to load/install or use any software an detail the procedures as accurately as possible to make it quicker for others to verify and confirm quickly. And yes, mx700 was a typo .. x being right near z.
User avatar
Jun 28, 2016, 13:37
edited on: Jun 29, 2016, 12:02
Yeah, my fault, I assumed that everyone know the fact that an old Sharp was a "clean" machine and how to use it.
However, you can find lot of info on the net about mz700, so there is no excuse for going out with something you are not sure.
Such things simply should not be happening ... in the extreme case, it is better to ask than to embarrass. :-)

EDIT: "Steps To Reproduce" has been corrected !

User avatar
Jun 29, 2016, 11:50
edited on: Jun 29, 2016, 15:16
8255 PPI -
74LS145 -
MZ-700 SM -
MZ-800 SM -

So, according to SM manuals, both MZ-700 and MZ-800 uses 8255 PPI for the keyboard to scan strobe output and key return data !

MZ-700 SM - on p.12,14
MZ-800 SM - on p.27,28,29

Port name addresses on MZ-700 and MZ-800 in mode 700:

PA($E000) = OUT (keyboard scan strobe signal output)
PB($E001) = IN (keyboard scan data input)

Also, both uses LS145 decoder on PA0-PA3 lines to scan strobe signal output!

(NOTE: Otherwise, MZ-800 in 800 mode uses PA($D0) and PB($D1) ! - the 800 mode seem not supported in MESS anyway !)
(So, different mapping depending on the mode on MZ-800. In 700 mode it is on memory space and in 800 mode it is on I/O space.)

Hmm, now I wonder why above mentioned games works fine on MZ-800 driver in 700 mode but are problematic on MZ-700 driver !? (as f.e. the game tapeworm)
Note that I am not a coder and unfortunately cant help in that area! :(


The MZ-700 custom LSI M60719 ( memory and CRT controller ) -
And the Memory mapped I/O ( Executing I/O operations by storage address) -

MZ-700 SM - on p.4,5 and p.7,8,9,10,11
MZ-800 SM - on p.6,7,8 and p.9,10,11

Is the same LSI also used on MZ-800 !? ->

Hmm, I guess then there also might be possible that something is wrong with the memory controller emulation on mz700 driver in that case !?

Well, this seems interesting as we also have MZ-700 and MZ-800 under the same .cpp ! ( )
Becomes all the more interesting because above mentioned games works fine on MZ-800 but not on MZ-700 ! Why?

Is there a good soul who would like to help solve this dilemma ? :-)

User avatar
Jun 30, 2016, 08:51
edited on: Jun 30, 2016, 22:27
MZ-700 keyboard -

Obviously the keyboard works in emulation, so I guess the problem might be somewhere with the bank switching emulation - !

Have loaded the BASIC and tested will it survive soft-reset "F3" + "Ctrl" key pressed - and it works ! (the bank switching works here)

I give up, have no idea what might be wrong that the keyboard stop responding in above mentioned games on mz700 driver - but works fine on mz800 driver ?

There are possibilities; or mentioned games are not for the mz700 (maybe are hacked - not sure but not impossible) or the mz700 driver does not emulate something properly !?
Maybe the best would be to test games on a real machine to be 100% sure! (to solve the dilemma)

So, the bank switching of the area $0000 - $0FFF works (as tested with "Ctrl + F3"), but is it all fine with $D000 - $FFFF bank switching area where the I/O ports are located ?

User avatar
Jul 2, 2016, 20:05
edited on: Jul 12, 2016, 12:51
Have found two S-BASIC games that have some serious problem to run in MESS, but work fine on other emu (i.e. EmuZ-700):

1) In MESS from monitor load S-Basic "1z013b" with command "L".
2) Eject the cass and attach "aceracer" or "fire" to LOAD / RUN from the S-BASIC.

Ace Racer ... in MESS it does not stop on the title screen !? (Fine on EmuZ-700)
Fire!!! ... in MESS seems like it waits for something !? (Fine on EmuZ-700)

So, some BASIC programs (2 for now) also have a problem in MESS emu - I guess the problem might be with the keyboard !?
(interesting is that it does not work on the mz800 driver too)

Hmm, maybe the problem might be some unknown conflict between joystick emulation and keyboard emulation! (dont know, just guessing)

According to adverts ( ), above 2 mentioned BASIC games has also support for Joystick, so the problem there is not with keyboard than with Joystick emulation.
Also, same games got different version for MZ-800 (for 700-mode) according to adverts ( ), as the Joystick for MZ-700/1500 and for MZ-800 are not same. (MZ-800 uses standard Joysticks with Atari connector)
Now is only unknown which version above 2 tested BASIC games are, for mz-700 or for mz-800 in 700-mode !? (Edit: Confirmed from; 2 tested S-BASIC games are the MZ-700 versions !)
According to MZ-800_Owner's_Manual, MZ-700 programs which use joystick MZ-1X03 cannot be used on MZ-800 in 700 mode !

User avatar
Jul 3, 2016, 13:12
You need to verify if the problematic games work (or not) on a real machine. What happens on "other emu" doesn't count.
User avatar
Jul 3, 2016, 16:30
edited on: Jul 4, 2016, 21:43
The point is that most problematic games work fine on mz800 (700 mode) in MESS, and as there are not a big difference between mz700 and mz800 in 700 mode (according to SM), maybe this should be checked / compared too. Yeah, the best would be verifying on a real machine (if is possible)... other emus are good only for fast testing, nothing else.

User avatar
Jul 18, 2016, 20:34
edited on: Jul 18, 2016, 20:43
Reminder: MZ-700/1500 use analog type joystick (mz-1x03) with its own type connector and MZ-800 use digital type joystick (mz-1x16) with Atari standard type connector.

New findings !

Below programs has been tested on MZ-800 in 700 mode:

Supports mz-1x16 (i.e. Atari standard) joystick on MZ-800 in 700 mode:
-> blastoff, fantgrov, fulspeed, madmaze, skychaos, spacguer, tapeworm

No joystick suppport on MZ-800 in 700 mode:
-> nibbler, patalpha

All above are tested to run fine on a MZ-800 in 700 mode and also some has support for MZ-800 joystick. Only 2 programs did not use MZ-800 joystick.
(Note: all above also run fine on mz800 driver in 700 mode, but are problematic on mz700 driver)

Now, there are programs that come with support for MZ-700 (mz-1x03) joystick, but currently all work problematic on mz700 driver because of broken joystick emulation (MT06283).

Surely the joystick mz-1x03 emulation problem on mz700 driver:
-> Ace Racer, Commando Plain, Dragon Caves, Fire!!!, Lightning Patrol, Star Avenger, Trucker

Possibly the joystick mz-1x03 emulation problem on mz700 driver:
-> Nibbler, Madman, Manik Panik, Patrol Alpha

Hope that these new findings could be helpful.

Ps. I would kicked the keyboard as a problem and focused only on the joystick.