1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-11-28 10:51:14 +00:00
C02/x16/mousetst.c02
2020-03-29 14:56:57 -04:00

96 lines
2.2 KiB
Plaintext

/********************************
* MOUSETST - Test mouse module *
* for Commander X16 computer *
********************************/
//use -h option on command line
#include <screen.h02>
#include <mouse.h02>
alias char rambnk = $9F61; //RAM Bank Select Register
char i,j,r;
char aa,yy,xx;
int yx;
char key; //Last Keypress
char scale; //Mouse Scaling Factor
void prtbtn(aa,yy,xx) {
putchr(' ');
if (aa & yy) xx = '*';
putchr(xx);
}
void prtbyt(aa) {
putchr('$');
prbyte(aa);
}
void prtwrd(.,yy,xx) {
putchr('$');
prbyte(yy);
prbyte(xx);
}
/* Print Kernal Mouse Status */
void prtsts() {
putstr("MSTS: "); prtbyt(mousev.msts);
if (mousev.msts:-) putstr(" ON"); else putstr(" OFF");
putstr(" SCALE: "); prhex(mousev.msts);
}
/* Print Kernal Mouse Variables */
void prtkmv() {
push rambnk; //Save RAM Bank
rambnk = 0; //Set RAM Bank to Kernal Variables
newlin(); //Skip a Line
prtsts(); newlin();
putstr("XMIN: "); prtwrd(mousev.xmin); newlin();
putstr("XMAX: "); prtwrd(mousev.xmax); newlin();
putstr("XMIN: "); prtwrd(mousev.ymin); newlin();
putstr("XMAX: "); prtwrd(mousev.ymax); newlin();
putstr("XPOS: "); prtwrd(mousev.xpos); newlin();
putstr("XPOS: "); prtwrd(mousev.xpos); newlin();
putstr("BTNS: "); prtwrd(mousev.btns); newlin();
pop rambnk; //Retore RAM Bank
}
void error() {
putstr();
newlin();
goto exit;
}
main:
scale = #MSLOW; //Set to mcnfg() default
//Enable Mouse
if (mcnfg(#MSHOW)) error("ERROR ENABLING MOUSE");
while() {
key = getkey();
if (key == #ESCKEY) break;
if (key == ' ') {
scale = (scale == #MSLOW) ? #MSHIGH : #MSLOW;
mcnfg(#MHIDE); //Disable, then Enable with
mcnfgs(#MSHOW, scale); //New Scaling
}
if (mread()) error("ERROR READING MOUSE");
crsrhm();
putstr("SCALE: "); prhex(scale); newlin();
putstr("MOUSEX: "); prtwrd(mousex); newlin();
putstr("MOUSEY: "); prtwrd(mousey); newlin();
putstr("MOUSEB: "); prtbyt(mouseb);
prtbtn(mouseb, #MBLEFT, 'L');
prtbtn(mouseb, #MBMIDL, 'M');
prtbtn(mouseb, #MBRGHT, 'R'); newlin();
//prtkmv(); //Print Kernal Mouse Variables
}
mcnfg(#MHIDE); //Hide Mouse
goto exit;