( drag ) :dev/r fff8 ( std read port ) :dev/w fff9 ( std write port ) &Point { x 1 y 1 } &Point2d { x 2 y 2 } &Picture2d { x 2 y 2 width 1 height 1 color 1 addr 2 } ;mouse Point2d ;pict Picture2d ;pictpt Point ( drawing ) ;color 1 ;x1 2 ;x2 2 ;y1 2 ;y2 2 ;i 2 ;state 1 |0100 @RESET #02 =dev/w ( set dev/write to sprite ) #0010 #0020 #04 #04 #01 ,graphic1 ,draw-picture JSR #0020 #0030 #10 #10 #04 ,graphic2 ,draw-picture JSR #0088 #0020 #10 #10 #08 ,graphic2 ,draw-picture JSR #05 =dev/r ( set dev/read mouse ) BRK |c000 @FRAME ( clear last cursor ) #10 ,clear_icn ~mouse.x ~mouse.y ,draw-sprite JSR ( record mouse positions ) #00 IOR2 =mouse.x #02 IOR2 =mouse.y ( record mouse state ) #04 IOR #11 ADD =state ( draw mouse ) ~state ,cursor_icn ~mouse.x ~mouse.y ,draw-sprite JSR BRK @draw-picture ( x y width height addr -> picture ) =pict.addr =pict.color =pict.height =pict.width =pict.y =pict.x #00 =pictpt.y @draw-picture-row #00 =pictpt.x @draw-picture-col ( draw ) ~pict.color ~pict.addr #0008 #00 ~pictpt.x MUL2 ADD2 ( x ) #0008 #00 ~pictpt.y ~pict.width MUL MUL2 ADD2 ( y * width ) ~pict.x #0008 #00 ~pictpt.x MUL2 ADD2 ~pict.y #0008 #00 ~pictpt.y MUL2 ADD2 ,draw-sprite JSR ( draw - end ) ( incr x ) ~pictpt.x #01 ADD =pictpt.x ~pictpt.x ~pict.width LTH ,draw-picture-col ROT JMP? POP2 ( incr y ) ~pictpt.y #01 ADD =pictpt.y ~pictpt.y ~pict.height LTH ,draw-picture-row ROT JMP? POP2 #01 =dev/w ( set dev/write to sprite ) #03 =color ~pict.x #0001 SUB2 ~pict.y #0001 SUB2 ~pict.x #0008 #00 ~pict.width MUL2 ADD2 ~pict.y #0008 #00 ~pict.height MUL2 ADD2 ,line-rect JSR #02 =dev/w ( set dev/write to sprite ) RTS @line-rect ( x1 y1 x2 y2 ) =y2 =x2 ( stash x1 y1 ) DUP2 WSR2 =y1 DUP2 WSR2 =x1 @line-rect-hor ( draw ) ~x1 ~y1 IOW2 IOW2 ~color IOW ( draw ) ~x1 ~y2 IOW2 IOW2 ~color IOW ( incr ) ~x1 #0001 ADD2 DUP2 =x1 ~x2 #0001 ADD2 LTH2 ,line-rect-hor ROT JMP? POP2 ( restore x1 y1 ) RSW2 =x1 RSW2 =y1 @line-rect-ver ( incr ) ~y1 #0001 ADD2 DUP2 =y1 ( draw ) ~x1 ~y1 IOW2 IOW2 ~color IOW ( draw ) ~x2 ~y1 IOW2 IOW2 ~color IOW ~y2 #0001 SUB2 LTH2 ,line-rect-ver ROT JMP? POP2 RTS @draw-sprite IOW2 ( y byte ) IOW2 ( x byte ) IOW2 ( sprite address ) IOW ( layer-color ) RTS @clear_icn [ 0000 0000 0000 0000 ] @cursor_icn [ 80c0 e0f0 f8e0 1000 ] @graphic1 [ ff80 8080 8080 8088 ffff fffc f8f9 f1f4 ffff 0010 c721 2120 ffff 3f0f 0717 c343 8888 8080 8080 8080 f0f1 f2f5 f2f1 f0f4 1208 804c 9212 4c00 7303 0343 1b1b fbfb 8080 8f83 8383 8393 f0f3 f1f0 e4c0 80ff 00c7 c7c6 4606 00ff c3d3 c307 870f 3fff 8f83 8383 8383 83ff fff7 fdff c0e2 f1ff 7fef bfff 07af 5fff ffff ffff ffff ffff ] @graphic2 [ ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fffe ffff ffff fef0 8000 ffff ffd0 0000 0000 ffff ff02 0000 0000 ffff ffff 1f03 0000 ffff ffff ffff ff1f ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fef8 f8e0 f8e0 c000 0003 0c30 0000 0738 c000 0000 17d0 0404 0404 0404 fd00 0000 0000 0000 40be 0100 0000 0000 0300 e01c 0300 0000 ff2f 0300 802d 0000 ffff ff3f 0f07 a101 ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fefc f0e0 c081 a081 060c 3060 8000 c080 0000 0000 0000 0000 0000 0000 0000 0604 0406 0206 0202 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0100 0101 ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fffe ffd0 e0e0 e0e0 16f8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0202 0202 0300 02ba 0000 0000 0000 12c8 0000 0000 0000 4893 0000 0000 0000 00f4 0000 0000 0000 0000 0103 0303 0703 0707 ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff e0e0 e0f0 f0f8 f8fc 0000 0000 0000 0000 0000 0000 0001 020a 0000 0314 7040 8000 0b74 8000 0000 0000 4001 0105 0703 0200 0000 80c0 c080 4000 0000 0000 0000 0000 0700 0000 0000 0000 8028 0000 0000 0000 0f0f 0f1f 1f1f 1f1f ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fcfe feff ffff ffff 0000 0003 82cc c0e0 1060 8000 0000 0000 0000 0000 0000 0b34 0000 0000 17f8 0000 0000 005f ff3f fe68 0000 aff8 e0fc a100 0000 5a00 0092 4000 0000 b217 0080 9000 0000 0040 5801 0101 0f1f 0f1f 0f1f 4f2f ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff e0f0 f0f0 f0f1 f1ed 0105 0a30 4000 0000 c000 0000 0000 0000 0000 0000 0000 0000 071f 1f3f 1fbf 3fbf 8080 a0d0 84e4 f0f0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0302 040a 062b af0f 0f1f 0f0f 1f9f ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff e5e5 eaf0 f2f8 eeff 8000 0000 0200 001e 0000 0000 4500 00aa 0000 0055 0200 01ff 3fbf 28f7 0f14 57ff f059 80d0 c02f fde5 2840 0008 f795 474f 0100 16eb 5fff ffff 54df 1f87 ffff ffff 1f3f 291e bf7b fdfb ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fbfd fef5 fdff ffff 8789 c64f af87 6fe7 f76d 8e56 deed edef 55ff 00fe 896d ffff 5fe1 c9d7 7b77 bb7b 5a5f ffff ff7f 7fff dffc f8f2 c7ea fd9f 0100 8496 619f ffff 6f1f 7f7f ffff ffff 3ffb 7fdf 776f 7777 ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff fcff ffff ffff ffff d7b7 7ff7 bbd7 f3fb edee edfe e2eb d5d6 edff ffe9 22aa dd56 bf7b bb35 75f2 a7ff ffff f7ff 5fd1 2efa efff ffff ff7f 95ee ffff ffff ffff 779a feff feff fefe ffa1 df7f dfbf bfff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff f9ff f5fa fcfc fcff af5f 7fbf 7fff 7fff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 52ff ffff ffff ffff aef5 ffff ffff ffff ddeb fffd fdff fbf9 ffff ffff ffff ff7f ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffde fef0 fbf8 f7ed d1a3 21c1 bfff 3f9f 0f0f 0787 ffff ffff ffff ffff ffff ffff ffff ffff ffff afd2 fdff ea80 ffbf 5fff ffff 1f07 ffff ffff ffff ffff f9f0 f0e0 e8c8 cc94 5fe3 1c0f 0100 0000 ffff bf85 fa3f 0f03 ffff ffff 7f83 fcff ffff ffff ffff 5fa5 ffff ffff ffff fffb ffff ffff ffff fcf3 fffe faeb ac58 f0c0 d9a3 a206 0c18 3830 0402 0404 0404 0404 8381 8040 4000 4000 ffff ff6f 3f1f 0f07 fefe fefe fffe ffdf 8037 00e4 390f 8087 03a3 13f7 47a7 cf1f fef7 fffe fefc f8f8 94a4 2420 4440 4480 0000 0000 0000 0000 0101 0303 060c 0c08 9f86 0001 0303 060c fabf 7dc0 8000 0000 2fd3 fc07 0100 0000 cfbf 7ff1 c080 0000 8080 8000 8080 8080 6020 6060 2060 6020 0404 040c 0404 0404 1000 0008 0002 0000 0101 0000 0000 0080 ffff 7f1f 0f03 0000 e0fd ffff fffe fe1e 3fff ff57 4faf a6f4 f0e0 e182 8200 0000 8080 0000 0000 0000 0000 0000 0000 0000 1810 3020 60c0 80c0 0c18 1030 2040 40c0 0000 0000 0000 0000 0001 0307 0f0f 1f3f 0000 0000 0000 0000 4040 4040 2020 2030 6030 6030 2030 2030 0804 0408 0404 0404 0000 0000 0000 0000 0028 0802 0100 0000 0000 0000 8061 171f 0000 000a 7fff fffe b0b8 995b 8fa9 b4bc 0001 7ffe fea0 0000 0040 e080 0000 0000 0101 0301 0206 0404 8000 0100 0101 0301 8080 8080 0000 0000 0000 0001 0103 0707 7e7c f8f0 e0c0 c080 0000 0000 80c0 6070 1010 1008 0808 0808 2030 1020 3000 3010 0404 0406 0202 0403 0000 0001 0b3f 7fff 0003 1f7f ffff ffff 7fff ffff ffff ffff faf9 f7fd fcff ffff b6da dc9a 5d4d ee6e 0000 0000 00fa ffff 0000 0000 0080 fcf8 0404 0000 0000 0000 0302 0301 0202 0202 0000 0000 0000 0000 0f1f 1e3c 7c78 f0e0 0000 0000 0000 0001 ] |d000 @ERROR BRK |FFF0 [ f0ac f0bb f053 ] ( palette ) |FFFA .RESET .FRAME .ERROR ( vectors )