diff --git a/src/inc/mouse.plh b/src/inc/mouse.plh index 3466b93..defda2c 100644 --- a/src/inc/mouse.plh +++ b/src/inc/mouse.plh @@ -14,11 +14,12 @@ import mouse const VBL_INT_ENABLE = $08 const BUTTON_INT_ENABLE= $04 const MOVE_INT_ENABLE = $02 + const MOUSE_ENABLE = $01 // // Mouse API // struc t_mouse - word chkVbl + word chkVBL word chkMouse word readMouse // readMouse()#3 word setMouse // setMouse(mode) diff --git a/src/libsrc/apple/mouse.pla b/src/libsrc/apple/mouse.pla index ec023fc..e80de1d 100644 --- a/src/libsrc/apple/mouse.pla +++ b/src/libsrc/apple/mouse.pla @@ -47,13 +47,12 @@ end asm chkEvt(addr) LDA ESTKL,X STA ESTKH-1,X - PHP SEI LDA (ESTKH-1,X) ; READ INT COUNT TAY LDA #$00 STA (ESTKH-1,X) ; CLEAR INT COUNT - PLP + CLI STY ESTKL,X ; RETURN INT COUNT STA ESTKH,X RTS @@ -159,7 +158,6 @@ end for rom = $C100 to $C700 step $0100 if rom->5 == $38 and rom->7 == $18 and rom->11 == $01 and rom->12 == $20 puts("Found Mouse in slot #"); putc('0' + ((rom >> 8) & $07)); putln - puts("Service IRQ: $"); puth(@serviceMouse); putln // // Hook mouse IRQ handler into ProDOS IRQ chain // diff --git a/src/samplesrc/mousetest.pla b/src/samplesrc/mousetest.pla index 9a33ec9..610638d 100644 --- a/src/samplesrc/mousetest.pla +++ b/src/samplesrc/mousetest.pla @@ -1,11 +1,23 @@ include "inc/cmdsys.plh" +include "inc/conio.plh" include "inc/mouse.plh" var count +var xPos, yPos, bttn -Mouse:setMouse(VBL_INT_ENABLE) -while count < 100 and ^$C000 < 128 - count = count + Mouse:chkVBL() - puti(count); putln +Mouse:clampMouse(0, 39, 0, 23) +//Mouse:setMouse(VBL_INT_ENABLE|MOVE_INT_ENABLE|BUTTON_INT_ENABLE|MOUSE_ENABLE) +Mouse:setMouse(MOVE_INT_ENABLE|BUTTON_INT_ENABLE|MOUSE_ENABLE) +while ^$C000 < 128 + if Mouse:chkMouse() + conio:gotoxy(xPos, yPos); putc(' ') + xPos, yPos, bttn = Mouse:readMouse()#3 + conio:gotoxy(xPos, yPos); putc(bttn & BUTTON_DOWN ?? '+' :: '^') + fin + if Mouse:chkVBL() + ^$400++ + fin loop +getc +Mouse:detachMouse() done