( 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 ( starting color ) #0050 =w #0080 =h ( starting size ) ,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 #03 =color #00 IOR2 =touchx #02 IOR2 =touchy ,update JSR BRK @on-release #00 =down #01 =color ,update JSR BRK @on-drag #00 IOR2 ~touchx SUBS2 ~x ADDS2 =x #02 IOR2 ~touchy SUBS2 ~y ADDS2 =y #00 IOR2 =touchx #02 IOR2 =touchy ,update JSR BRK @update ( draw ) ~x ~y ~w ~h ,linerect JSR ( draw ) #0000 ,rounds_chr ~x #0010 ADD2 ~y #0010 ADD2 ,drawsprite JSR ( draw ) #0100 ,eyeeye_chr ~x #0040 ADD2 ~y #0020 ADD2 ,drawsprite JSR ,redraw JSR BRK BRK @putpixel IOW2 ( y short ) IOW2 ( x short ) ,color LDR IOW ( color byte ) #00 IOW ( redraw byte ) RTS @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 @linerect =h =w =y =x ~x =drawx ~y =drawy @linerectcol ( draw ) ~x ~drawy ,putpixel JSR ( draw ) ~x ~w ADD2 ~drawy ,putpixel JSR ~drawy #0001 ADD2 =drawy ~drawy ~h ~y ADD2 LTH2 ,linerectcol ROT JMP? POP2 @linerectrow ( draw ) ~drawx ~y ,putpixel JSR ( draw ) ~drawx ~y ~h ADD2 ,putpixel JSR ~drawx #0001 ADD2 =drawx ~drawx ~w ~x ADD2 #0001 ADD2 LTH2 ,linerectrow ROT JMP? POP2 RTS @getmouse #00 IOR2 ( get mouse x ) #02 IOR2 ( get mouse y ) RTS @drawsprite #02 =dev/w ( set dev/write to sprite ) IOW2 ( y short ) IOW2 ( x short ) IOW2 ( sprite address ) IOW2 ( redraw byte ) RTS @redraw #01 =dev/w ( set dev/write to sprite ) #0000 IOW2 #0000 IOW2 #00 IOW #01 IOW RTS @rounds_chr [ 3844 92aa 9244 3800 0038 7c7c 7c38 0000 ] @eyeeye_chr [ aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55 ] |d000 @ERROR BRK |FFF0 [ f2ac 35bb 2b53 ] ( palette ) |FFFA .RESET .FRAME .ERROR