( GUI Hover ) %RTN { JMP2r } ( devices ) |00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] |20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ] |60 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ] ( variables ) |0000 @color [ &byte $1 ] @pointer [ &x $2 &y $2 &sprite $2 ] @rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] @r1 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] @r2 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] @r3 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] ( program ) |0100 ( theme ) #0f0f .System/r DEO2 #0fff .System/g DEO2 #0ff0 .System/b DEO2 ( vectors ) ;on-mouse .Mouse/vector DEO2 #0020 #0030 #0060 #0060 .r1/y2 POK2 .r1/x2 POK2 .r1/y1 POK2 .r1/x1 POK2 #0058 #0050 #0090 #0080 .r2/y2 POK2 .r2/x2 POK2 .r2/y1 POK2 .r2/x1 POK2 #0048 #0048 #0080 #0098 .r3/y2 POK2 .r3/x2 POK2 .r3/y1 POK2 .r3/x1 POK2 ( no BRK, run through to on-mouse ) @on-mouse ;pointer_icn .pointer/sprite POK2 #01 .color POK ( matrix comparison ) .Mouse/x DEI2 .r1/x1 PEK2 GTH2 .Mouse/x DEI2 .r1/x2 PEK2 LTH2 #0101 EQU2 .Mouse/y DEI2 .r1/y1 PEK2 GTH2 .Mouse/y DEI2 .r1/y2 PEK2 LTH2 #0101 EQU2 #0101 NEQ2 ,&draw1 JNZ #02 .color POK ;hand_icn .pointer/sprite POK2 &draw1 .r1/x1 PEK2 .r1/y1 PEK2 .r1/x2 PEK2 .r1/y2 PEK2 .color PEK ;line-rect JSR2 #01 .color POK ( 2-step comparison ) .Mouse/x DEI2 .r2/x1 PEK2 GTH2 .Mouse/x DEI2 .r2/x2 PEK2 LTH2 #0101 NEQ2 ,&draw2 JNZ .Mouse/y DEI2 .r2/y1 PEK2 GTH2 .Mouse/y DEI2 .r2/y2 PEK2 LTH2 #0101 NEQ2 ,&draw2 JNZ #03 .color POK ;hand_icn .pointer/sprite POK2 &draw2 .r2/x1 PEK2 .r2/y1 PEK2 .r2/x2 PEK2 .r2/y2 PEK2 .color PEK ;line-rect JSR2 #01 .color POK ( 4-step comparison ) .Mouse/x DEI2 .r3/x1 PEK2 LTH2 ,&draw3 JNZ .Mouse/x DEI2 .r3/x2 PEK2 GTH2 ,&draw3 JNZ .Mouse/y DEI2 .r3/y1 PEK2 LTH2 ,&draw3 JNZ .Mouse/y DEI2 .r3/y2 PEK2 GTH2 ,&draw3 JNZ #02 .color POK ;hand_icn .pointer/sprite POK2 &draw3 .r3/x1 PEK2 .r3/y1 PEK2 .r3/x2 PEK2 .r3/y2 PEK2 .color PEK ;line-rect JSR2 ;draw-cursor JSR2 BRK @draw-cursor ( clear last cursor ) ;clear_icn .Screen/addr DEO2 .pointer/x PEK2 .Screen/x DEO2 .pointer/y PEK2 .Screen/y DEO2 #30 .Screen/color DEO ( record pointer positions ) .Mouse/x DEI2 .pointer/x POK2 .Mouse/y DEI2 .pointer/y POK2 ( draw new cursor ) .pointer/sprite PEK2 .Screen/addr DEO2 .pointer/x PEK2 .Screen/x DEO2 .pointer/y PEK2 .Screen/y DEO2 #31 .Screen/color DEO RTN @line-rect ( x1 y1 x2 y2 color ) ( load ) .color POK .rect/y2 POK2 .rect/x2 POK2 DUP2 .Screen/y DEO2 .rect/y1 POK2 DUP2 .Screen/x DEO2 .rect/x1 POK2 &hor ( incr ) .Screen/x DEI2 #0001 ADD2 .Screen/x DEO2 ( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO ( draw ) .rect/y2 PEK2 .Screen/y DEO2 .color PEK .Screen/color DEO .Screen/x DEI2 .rect/x2 PEK2 LTH2 ,&hor JNZ .rect/y1 PEK2 .Screen/y DEO2 &ver ( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO ( draw ) .rect/x2 PEK2 .Screen/x DEO2 .color PEK .Screen/color DEO ( incr ) .Screen/y DEI2 #0001 ADD2 .Screen/y DEO2 .Screen/y DEI2 .rect/y2 PEK2 #0001 ADD2 LTH2 ,&ver JNZ RTN @clear_icn [ 0000 0000 0000 0000 ] @pointer_icn [ 80c0 e0f0 f8e0 1000 ] @hand_icn [ 4040 4070 f8f8 f870 ]