( drag ) :dev/r fff8 ( std read port ) :dev/w fff9 ( std write port ) ;drawx 2 ;drawy 2 ;x 2 ;y 2 ;w 2 ;h 2 ;color 1 ;touchx 2 ;touchy 2 ;down 1 |0100 @RESET #05 =dev/r ( set dev/read mouse ) #01 =dev/w ( set dev/write to screen ) #02 =color #0050 =w #0080 =h ,update JSR BRK |c000 @FRAME ( get touch ) #05 IOR #01 EQU ,on-touch ROT JMP? POP2 #05 IOR #10 EQU ,on-release ROT JMP? POP2 #01 ~down EQU ,on-drag ROT JMP? POP2 BRK @on-touch #01 =down #01 =color #00 IOR2 =touchx #02 IOR2 =touchy ,update JSR BRK @on-release #00 =down #02 =color ,update JSR BRK @on-drag ( clear last rect ) #00 =color ~x ~y ~w ~h ,fillrect JSR ( draw new rect ) #03 =color #00 IOR2 ~touchx SUBS2 ~x ADDS2 =x #02 IOR2 ~touchy SUBS2 ~y ADDS2 =y #00 IOR2 =touchx #02 IOR2 =touchy ,update JSR BRK @update ~x ~y ~w ~h ,fillrect JSR ,redraw JSR BRK BRK @fillrect =h =w =y =x ( store values in variables ) ~x =drawx ~y =drawy ( store draw pos in variables ) @fillrectrow ~x =drawx @fillrectcol ( draw ) ~drawx ~drawy IOW2 IOW2 ~color IOW #00 IOW ~drawx #0001 ADD2 =drawx ~drawx ~w ~x ADD2 LTH2 ,fillrectcol ROT JMP? POP2 ~drawy #0001 ADD2 =drawy ~drawy ~h ~y ADD2 LTH2 ,fillrectrow ROT JMP? POP2 RTS @getmouse #00 IOR2 ( get mouse x ) #02 IOR2 ( get mouse y ) RTS @redraw #0000 IOW2 #0000 IOW2 #00 IOW #01 IOW RTS |d000 @ERROR BRK |FFFA .RESET .FRAME .ERROR