problem with mouse
'Cause you're using 8-bit integers. To make it simple: 0-1=255. That's why it isn't working.
By Google
???
better explained !!
Or course, make new sources to example:
I'm get
d=PAD(12) : x=x+pad(13):y=y+pad(14)
from BIOS-MSX, and done to move the mouse.
the area 0-255, the register <JR P, 0000> is not corret, but make the
example on new sources . help!
So the make the assembleer, i'm use this in BASIC with mouse. But I Prefet use assembler
to use mouse !!!!
An 8-bit unsigned integer is a number between 0 and 255. Therefore:
0-1=255
Or the other way round:
255+1=0
If you need to check if something is bigger than 255 but without an out-of-range problem, switch to 16-bit integers.
if you use poke to store data, the data can never be <0 or >255 because all the integers from 0 to 255 are all that can be stored. And Poke in MSX basic stores only bytes.
if you add 1 to 255 you get 256, this cannot be stored in 1 byte. Therefore, you cannot check the state of a byte which can be a maximum of 255 being >255.
This is known as a boundary error. You overcome it by changing the boundaries or by modifying your algorithm or both, as needed.
There is no JR P, in z80. Please see the z80 instruction set to see what you wish to achieve. I'm not a z80 programmer, many here are.
I've never used the PAD command as I've not had hardware that used it.
If you're using assembly directly I suspect it might be better to read the actual values that the mouse is sending into the system and use these to control a virtual mouse pointer which you then clamp to your appropriate visual range. If everything I've just typed is nonsense, someone will come along and correct it. 
And what pitpan said made it simple.
I will now 
edit: To add
Pitpan has now said the same thing, simpler, twice.
Switch to 16bit, please.
But I know very well the variables are from 0 to 256 are bytes!
Please make the example without hardware for mouse (mouse.asm)
The sources Need to add my sources to resolved to 100 % assembler.
Of recent, this assembler is the 90% (sorry), but games or util are stop and half.
This utility of mouse is 100% to correct and make games on MSX!
I'm not coding for you, sorry. I just code for fun (and for me, of course).
why don't you check for 1 instead of 0 and 254 instead of 255?
oh sure, you'd lose a pixel on borders and strangely your mouse pointer won't be able to actually reach that border, but whatever, who cares.
do you really need that bad to go that far on the borders?
i will now
too, but with a sweater, because it's FRICKING FREEZING here...
Perhaps this thread will help you: http://www.msx.org/forumtopic10388.html
This routine returns the offset (positive or negative) of the mouse (in relation to the last position). So you can still catch the screen borders yourself without switching to 16 bits.
Why? I'm get mouse on msx2 no msx1 if necessary, but the limit to area is not found for mouse ?
limit 0 - 255 for x
limit 0 -192 for y
The only solutions (and wrong solutions but not olther metod) is set mouse to BASIC and limit set is
O.K.
But olther application have use mouse with limit x,y area ! The mouse is necessary for ROM and
modify to graphics and map.
if x is 256 and not 255, then use 16bit as HL, and can't set the condition ?
cp H or L jr ??? , limit
So use mouse with limit is util, but this http://www.msx.org/forumtopic10388.html
is util for limit for mouse ?
wait ... the new source mouse and limit set !!
;) and you are the friend for msx !! talk you!!

By DanySoft
Expert (125)
10-10-2011, 21:11