10 REM > ADVALTest
   20 :
   30 MODE &80:VDU 23,1;0;0;0;0
   40 max%=7
   50 DIM ox%(max%),oy%(max%)
   60 FOR test%=1 TO max%*2 STEP 2:PROCpointer(0,0):NEXT test%
   70 REPEAT
   80   PRINT TAB(7,0);"ADVAL(0)=&";FNh0(ADVAL(0),4)
   90   FOR test%=1 TO max%*2 STEP 2
  100     PROCtest(test%)
  110   NEXT test%
  120   FOR test%=10 TO 12
  130     PRINT MID$("Left  MiddleRight ",test%*6-59,6);" INKEY";-test%;"=";INKEY-test%;SPC3
  140   NEXT
  150 UNTIL FALSE
  160 :
  170 DEFPROCtest(port%)
  180 x%=ADVAL(port%+0)
  190 y%=ADVAL(port%+1)
  200 IF PAGE>&FFFF:IF port%=7:MOUSE x%,y%,A%
  210 IF port%=7:PRINT"Mouse:"
  220 PRINT TAB(07,port%/2+1);"ADVAL(";port%+0;")=";SPC(-(port%<10));x%;SPC2;
  230 PRINT TAB(24,port%/2+1);"ADVAL(";port%+1;")=";SPC(-(port%<9));y%;SPC2
  240 IF port%<5:x%=x%DIV48:y%=y%DIV64
  250 IF x%=ox%(port%/2) AND y%=oy%(port%/2) THEN ENDPROC
  260 PROCpointer(ox%(port%/2),oy%(port%/2)):PROCpointer(x%,y%)
  270 ox%(port%/2)=x%:oy%(port%/2)=y%
  280 ENDPROC
  290 :
  300 DEFPROCpointer(x%,y%)
  310 GCOL 4,0
  320 MOVE x%-16,y%:DRAW x%+16,y%
  330 MOVE x%,y%-16:DRAW x%,y%+16
  340 MOVE x%,y%
  350 ENDPROC
  360 :
  370 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)