Difference between revisions of "83Plus:BCALLs:4D47"

From WikiTI
Jump to: navigation, search
m
 
Line 3: Line 3:
 
'''Official Name:''' AppStartMouse
 
'''Official Name:''' AppStartMouse
  
'''BCALL Address:''' 4D47
+
'''TI-83+/SE & TI-84+/SE BCALL Address:''' 4D47
 +
 
 +
'''TI-84+CSE BCALL Address:''' 4D2F (useless, see comments)
  
 
Initializes mouse, displays mouse cursor on screen, and waits for a keypress.
 
Initializes mouse, displays mouse cursor on screen, and waits for a keypress.
 +
 +
On the TI-84+CSE, this (and all mouse routines) has no actual LCD code, so the calculator will just freeze until you press enter.
  
 
=== Inputs ===
 
=== Inputs ===
Line 13: Line 17:
 
* A: 0Ah if arrow key pressed, 0Ch if enter key pressed
 
* A: 0Ah if arrow key pressed, 0Ch if enter key pressed
 
* 986D: Current mouse cursor coordinates
 
* 986D: Current mouse cursor coordinates
 +
** 9E4E on the TI-84+CSE (useless)
 
* Cursor turned off
 
* Cursor turned off
 
* Run indicated turned off
 
* Run indicated turned off
Line 23: Line 28:
 
== Comments ==
 
== Comments ==
 
This entry point does not clear the screen before displaying the mouse cursor.  It waits for a keypress, but only responds to the arrow keys and the enter key.  Use the [[83Plus:BCALLs:4D65|AppUpdateMouse]] entry point to update the cursor on the screen and wait for another keypress.
 
This entry point does not clear the screen before displaying the mouse cursor.  It waits for a keypress, but only responds to the arrow keys and the enter key.  Use the [[83Plus:BCALLs:4D65|AppUpdateMouse]] entry point to update the cursor on the screen and wait for another keypress.
 +
 +
All of the LCD I/O has been stripped from all mouse routines in OS 4.x (that is, the TI-84+CSE), so the mouse routines are useless. Otherwise, the code is unchanged; TI didn't even expand the column variable to 2 bytes, so the code couldn't be made to work anyway without being largely rewritten. You'd also have to find a lot more scrap RAM (maybe PlotSScreen or SaveSScreen).
 +
 +
8100h appears to store the y coordinate for the mouse (LCD driver style). 8101h is the x coordinate (byte aligned). 986Dh holds the actual pixel coordinates. Or maybe it's 8122h. Not sure. When this paints the mouse, it seems to store a copy of the former background to 811Ah
 +
 +
Here's a fragment of the routine's code in OS 2.55:
 +
; ROM page 7B:
 +
AppStartMouse:
 +
78F9: call 75B0
 +
call 77D9
 +
78FF: '''ld a, 01'''
 +
'''ld (0032), a'''
 +
'''ld (000A), a'''
 +
set 0, (iy + 2C)
 +
ei
 +
halt
 +
call 04B2
 +
or a
 +
jr z, 78FF
 +
di
 +
ld hl, (986D)
 +
ld (8122), hl
 +
res 0, (iy + 2C)
 +
cp 0A
 +
jr c, 7934
 +
cp F3
 +
jr nc, 7934
 +
cp 36
 +
jr nz, 78FF
 +
'''ld a, (iy + 12)'''
 +
'''xor 00'''
 +
'''ld (iy + 12), a'''
 +
jr 78FF
 +
AppUpdateMouse:
 +
7A56: res 7, (iy + 2C)
 +
call 76BD
 +
jp 78FF
 +
 +
== See Also ==
 +
[[83Plus:BCALLs:4D65|AppUpdateMouse]]
 +
 +
[[83Plus:BCALLs:4D53|AppEraseMouse]]
 +
 +
== Credits ==
 +
Dan Englender for the RAM variables
 +
 +
BrandonW has also done more work on the mouse routines.

Latest revision as of 03:31, 10 May 2014

Synopsis

Official Name: AppStartMouse

TI-83+/SE & TI-84+/SE BCALL Address: 4D47

TI-84+CSE BCALL Address: 4D2F (useless, see comments)

Initializes mouse, displays mouse cursor on screen, and waits for a keypress.

On the TI-84+CSE, this (and all mouse routines) has no actual LCD code, so the calculator will just freeze until you press enter.

Inputs

  • None

Outputs

  • A: 0Ah if arrow key pressed, 0Ch if enter key pressed
  • 986D: Current mouse cursor coordinates
    • 9E4E on the TI-84+CSE (useless)
  • Cursor turned off
  • Run indicated turned off
  • Mouse cursor displayed at center of LCD

Destroys

  • BC, DE, HL
  • ramCode

Comments

This entry point does not clear the screen before displaying the mouse cursor. It waits for a keypress, but only responds to the arrow keys and the enter key. Use the AppUpdateMouse entry point to update the cursor on the screen and wait for another keypress.

All of the LCD I/O has been stripped from all mouse routines in OS 4.x (that is, the TI-84+CSE), so the mouse routines are useless. Otherwise, the code is unchanged; TI didn't even expand the column variable to 2 bytes, so the code couldn't be made to work anyway without being largely rewritten. You'd also have to find a lot more scrap RAM (maybe PlotSScreen or SaveSScreen).

8100h appears to store the y coordinate for the mouse (LCD driver style). 8101h is the x coordinate (byte aligned). 986Dh holds the actual pixel coordinates. Or maybe it's 8122h. Not sure. When this paints the mouse, it seems to store a copy of the former background to 811Ah

Here's a fragment of the routine's code in OS 2.55:

; ROM page 7B:
AppStartMouse:
78F9:	call	75B0
	call	77D9
78FF:	ld	a, 01
	ld	(0032), a
	ld	(000A), a
	set	0, (iy + 2C)
	ei
	halt
	call	04B2
	or	a
	jr	z, 78FF
	di
	ld	hl, (986D)
	ld	(8122), hl
	res	0, (iy + 2C)
	cp	0A
	jr	c, 7934
	cp	F3
	jr	nc, 7934
	cp	36
	jr	nz, 78FF
	ld	a, (iy + 12)
	xor	00
	ld	(iy + 12), a
	jr	78FF
AppUpdateMouse:
7A56:	res	7, (iy + 2C)
	call	76BD
	jp	78FF

See Also

AppUpdateMouse

AppEraseMouse

Credits

Dan Englender for the RAM variables

BrandonW has also done more work on the mouse routines.