Page 1 of 1

Question: how to use a mouse on MZ-800 ?

Posted: Tue Feb 13, 2018 11:48 am
by KnaxMax

I always wondered if it would be possible to use an Atari or Commodore mouse at the MZ-800 joystick ports.
AFAIR the C64 mouse (1351) had a special mode, where it more or less emulated normal joystick imput, so it could be used with games, that triggered some kind of pointer/cursor via joystick.

Other software that used it more like a classical mouse, had special drivers for it (GEOS etc.)

So any experience on using such a mouse with Sharp?

Re: Question: how to use a mouse on MZ-800 ?

Posted: Tue Feb 13, 2018 2:07 pm
by goev
Hm... I haven't tried, but it should be possible to do. The joysticks are port $F0 and $F1, so I don't think there is any interrupts triggering on changes on these ports, which means you must poll the port. Using an Atari-mouse, up-down/down-up pulse indicates Y-movement, and left-right/right-left pulse indicates x-movement.

Re: Question: how to use a mouse on MZ-800 ?

Posted: Wed Feb 14, 2018 7:51 am
by Jo Even
I guess this would be similar to using mouse on other 8-bits, like the MSX. Polling is required there too. Maybe have a look at the SymbOS source code and see how it's done.

Btw. the MZ-800 would be a great target for SymbOS :)

Re: Question: how to use a mouse on MZ-800 ?

Posted: Wed Feb 14, 2018 8:44 am
by KnaxMax
Jo Even wrote:
Wed Feb 14, 2018 7:51 am
Btw. the MZ-800 would be a great target for SymbOS :)
This SymbOS looks really cool. Impressing what can be done with 8 Bit machines.
And today some 'makers' use the power of a RasPi3 for just blinking some LEDs.

Re: Question: how to use a mouse on MZ-800 ?

Posted: Wed Feb 14, 2018 10:32 am
by Jo Even
I have SymbOS on my CPC6128 with dual floppydrives and 640Kb RAM. It is indeed very impressive.

Re: Question: how to use a mouse on MZ-800 ?

Posted: Wed Feb 14, 2018 10:43 am
by goev
I think you should port SymbOS to the MZ-800, Jo Even! It is a good reason to finally buy one for yourself ;)

Re: Question: how to use a mouse on MZ-800 ?

Posted: Wed Feb 14, 2018 10:53 am
by Jo Even
Will not happen :D

Re: Question: how to use a mouse on MZ-800 ?

Posted: Wed Jun 13, 2018 6:49 am
by fitus
This issue has been solved many years ago. There is a software ´´MOUSE´´ which you can use with Atari comp. mouse. The manual is in slovak language. ... /Mouse.txt - try google translate. The software is somewhere in download area. You can download it . I didnt try it. Good luck.

Re: Question: how to use a mouse on MZ-800 ?

Posted: Sat Jul 07, 2018 9:22 pm
by TextAdventureKing
Translated the MOUSE manual into English for anybody that needs it.
Just download it by clicking on the link below.!DLw31QJT
decryption key is !PukZSN8yVrnyh5yZiCvaa3VKp4p-NnE9mL-IyHwz4oY

Re: Question: how to use a mouse on MZ-800 ?

Posted: Fri Jan 18, 2019 8:01 am
by Jo Even
Does anybody know where this software can be downloaded?.

The translated manual:

Code: Select all

** ** ** ** ***** ************ 
*** *** *** *** ** ** *** * ** ** **           
** ** ** ** ** ** **           
** ** ** ** ** ** ** ** ***** **           
* * ** ** ** ** ** ***** *******      
** ** ** ** ** ** ** ** **           
** ** ** * ** *** *** *** *** *** ** version 1.0          
** ** ***** ***** *********** ** 

	(c) 1992 by mZx software, BOX 93, 381 01 no. Krumlov 

  Program is designed for all those involved in programming on the 
SHARP MZ-800. Everyone who uses the program must adhere to the rules.

1. If you purchase the program, you may incorporate it into our own programs without any consultation 

2. But only if you 
   do not sell or distribute the program with our mouse driver. 

3. Therefore, there is point 3 - who puts our driver into his commercial 
   program, he has to inform us and negotiate the terms of sale. 

The program was tested with the ATARI mouse, which, given the same 
we recommend. He should, of course, walk with each parallel mouse. 

-------------------------------------------------- --------------- 
              HARDWAROV Á PRAVA 
------------------------------- ----------------------------------

	Before connecting the ATARI mouse to Sharp, it is necessary to spread the 
           signals on the mouse connector according to the following table: 

  ================================= ============================ 
  | pin number | signal | wire color edit for SHARP 
  ================================================== =========== 
  | 1 | XB | brown | XA | 
  -------------------------------------------------- ----------- 
  | 2 | XA | orange | XB | 
  -------------------------------------------------- ----------- 
  | 3 | YA | green | YA | 
  -------------------------------------------------- -----------
  | 4 | YB | blue | YB | 
  -------------------------------------------------- ----------- 
  | 5 | unconnected | --- | + 5V | 
  -------------------------------------------------- ----------- 
  | 6 | left press. | yellow | left button 
  -------------------------------------------------- ----------- 
  | 7 | + 5V | red | right button 
  -------------------------------------------------- ----------- 
  | 8 | ZEM | black | unconnected | 
  -------------------------------------------------- ----------- 
  | 9 | right print. | white | ZEM |
  ================================================== =========== 

	Although the connector is 
unmatchable, it can also be dismantled and re-bonded after interconnection. Who wants to save 15 
Kcs (for so much I bought a new and detachable connector), he can 
work with it. 

	After this adjustment, we can connect the mouse to the SHARP MZ-800 to the 
connector for JOYSTICK 1 or JOYSTICK 2. 

------------------------------ ----------------------------------- 
------------ -------------------------------------------------- --- 

	To understand the MOUSE routine described below, 
I briefly describe a parallel mouse activity.
	The parallel mouse has 
two wires drawn for each direction (horizontal and vertical) , in which the 
logical zeros and logical ones are alternated when the mouse moves, as shown in the following figure: 

                            right (down) 
                        --------------- -----> 

   XA (YA) ..... 0 0 1 1 0 0 1 1 
   XB (YB) 0 1 1 0 0 1 1 0 ..... all over 

                        <-------- ------------ 
                            left (up) 

	It is clear that the mouse movement information is not only its 
immediate state but also the previous state that must be 
stored somewhere. 
	The MOUSE routine described below provides decoding
mouse movement. Output from this routine is the value in the 
microprocessor register A with the reset nibble (bits 4-7). 

Bits 0-3 have the following meanings: 

		bit 3 - its setting indicates that the mouse 
			has taken a step in the vertical direction 
		bit 2 - if bit 3 is set, it indicates step 
				0 - step down 
				1 - step up 
			if bit 3 is zero, meaning 
		bit 1 - its setting indicates that the mouse 
			has moved in the horizontal direction 
		bit 0 - if bit 1 is set, it indicates step direction 
				0 - step right 
				1 - step left 
			if bit 1 is zero has no meaning The 

	routine does not test whether the right or left
mouse button. The status of the buttons can be read easily by reading the 
port and testing the appropriate bit. The status of the left button is on 
bit 4, the right button on bit 5. Such testing is much 
faster than if the entire MOUSE routine ever had to run. 
	For example, we will test the left button as follows: 

		IN A, (JOY), read the port with the 
		BIT 4 mouse , A, test the Button 

	But who would not do it, 
add the mouse test to the MOUSE routine or write a completely new routine. 

	Here's one of many of our mouse operations: 

--------------------------------------- ------------------------- 
; mouse status is accessible on port $ F0 (JOY1) or $ F1 (JOY2) 
; bits with the following meaning: 
; bit 0 ................ XA 
; bit 1 ................ XB 
; bit 2 ................ YA 
; bit 3 ................ YB 
; the mute input bits are insignificant in this routine 
; ------------------------------------------, ------ --------------- 
JOY EQU 0F0H; or 0F1 @ = JOY2 
MOUQE: POP HL; the address of the previous state 
	LD B, (HL), highlight it 
	IN A, (JOY), the new state of the mouse 
	AND 00FH, only this is interesting
	LD (HL), A, the new state will be the old old 
	INC HL, we must go one step further 
	RET Z, no change 
	LD C, A 
	AND 00001010B, these are changes of 
	RET Z, none or 
	LD E , A 
	LD A, B 
	AND 00000101B, here is the direction 
	OR E, all together 
; ----------------------------------------- 

	This routine is relocable even in the translated form. 
Requires a special way to call: 

	Deleted routing DEFS 1; Save 
			mouse state previous

	This method of calling requires that the routine is 
always called from the same location. This deficiency can be eliminated in two 
ways. We can modify the routine by reserving a mouse storage space in memory 
and keeping it up and highlighting it 
directly from the site (at the expense of relocability). Or we can 
create such a subroutine: 

	DEFS 1 call ; 
	RET mouse status ; return to the calling program 

We can place it anywhere and replace the CALL MOUSE 
call by calling CALL MOUSE1 that can be anywhere in the program. 

	Practical use of MOUSE routines demonstrates demonstration
the DEMOMOUS program. Who owns a mouse and has 
modified it according to our instructions can run DEMOMOUS.COM. Who does not have a mouse yet 
can at least look at DEMOMOUS.MAC how it works. 

	After running DEMOMOUS.COM, you can use the mouse to 
move the screen across the screen. When left pressed, the arrow 
leaves behind a trace (draws a line). Pressing the right 
button will delete everything. Finally, pushing both buttons will 
jump to CP / M. 

	Good advice at the end. It is important to test the mouse status as 
often as possible, whether you use the MOUSE routine or 
create your own. With faster mouse movements and larger ones
Testing intervals may result in the mouse doing 
two steps between two tests (more or less). In that case, it is 
not possible to evaluate which mouse the two steps were doing. If you 
accidentally make a mouse between two trials, we will evaluate 
it as step one but the opposite direction (a known strobing effect). 
For this reason, for example, it can not test mouse interrupted by VBLNK. 
Testing 50 times per second is slow. 
	DEMOMOUS shows that you can test a mouse 
at a speed and test some 
simple action (such as a cursor or arrow). 

	Many achievements in creating software for SHARP
MZ-800 and 
				Modified ATARI Mouse to Everyone 

				Ján Koštial, author 
and mZx software, POBOX 93, 
				381 01 Český Krumlov 

				Phone (038) 415 31