10 REM > MouseTest
   20 REM Test mouse ADVAL/INKEY and OSWORD calls
   30 :
   40 DIMctrl% 31:X%=ctrl%:Y%=X%DIV256
   50 :
   60 PRINTSPC(23)"Osword64"
   70 PRINT"MouseX  ADVAL(7):"'"MouseY  ADVAL(8):"'"Left    INKEY-10:"'"Middle  INKEY-11:"'"Right   INKEY-12:"
   80 VDU11,11,11,11,11:y%=VPOS
   90 GCOL 4,0
  100 omx0%=0:omy0%=0:omx1%=0:omy1%=0:ob0%=0:ob1%=0
  110 mx0%=0:my0%=0:mx1%=0:my1%=0:PROCPointerOn
  120 REPEAT
  130   REPEAT:PROCMouseRd:UNTILdiff%:PROCPointerOff
  140   ob0%=ml0%+mm0%+mr0%:ob1%=ml1%+mm1%+mr1%
  150   omx0%=mx0%:omy0%=my0%:omx1%=mx1%:omy1%=my1%:PROCPointerOn
  160   PRINTTAB(18,y%+0)FNd(mx0%,5)"  "FNd(mx1%,5)
  170   PRINTTAB(18,y%+1)FNd(my0%,5)"  "FNd(my1%,5)
  180   PRINTTAB(18,y%+2)FNd(ml0%,4)"  "FNd(ml1%,4)
  190   PRINTTAB(18,y%+3)FNd(mm0%,4)"  "FNd(mm1%,4)
  200   PRINTTAB(18,y%+4)FNd(mr0%,4)"  "FNd(mr1%,4)
  210 UNTIL0
  220 END
  230 :
  240 DEFPROCPointerOn
  250 MOVE mx0%-8,my0%:DRAW mx0%+8,my0%:MOVE mx0%,my0%-8:DRAW mx0%,my0%+8
  260 ENDPROC
  270 DEFPROCPointerOff
  280 MOVEomx0%-8,omy0%:DRAW omx0%+8,omy0%:MOVE omx0%,omy0%-8:DRAW omx0%,omy0%+8
  290 ENDPROC
  300 DEFPROCMouseRd
  310 mx0%=ADVAL(7):my0%=ADVAL(8):ml0%=INKEY-10:mm0%=INKEY-11:mr0%=INKEY-12
  320 A%=64:!X%=-1:CALL&FFF1:mx1%=X%!0 AND &FFFF:my1%=X%!2 AND &FFFF
  330 ml1%=(X%?6 AND 32)=0:mm1%=(X%?6 AND 64)=0:mr1%=(X%?6 AND 128)=0
  340 diff%=mx0%<>omx0% OR mx1%<>omx1% OR my0%<>omy0% OR my1%<>omy1%
  350 diff%=diff% OR ob0%<>(ml0%+mm0%+mr0%) OR ob1%<>(ml1%+mm1%+mr1%)
  360 ENDPROC
  370 DEFFNd(A%,N%)=RIGHT$("         "+STR$A%,N%)