diff --git a/src/main.tal b/src/main.tal index 260d12b..1a0b7c7 100644 --- a/src/main.tal +++ b/src/main.tal @@ -4,24 +4,6 @@ %< { LTH } %> { GTH } %= { EQU } %! { NEQ } %-- { SUB2 } %** { MUL2 } %// { DIV2 } -%AUTO-NONE { #00 .Screen/auto DEO } -%AUTO-X { #01 .Screen/auto DEO } -%AUTO-Y { #02 .Screen/auto DEO } -%AUTO-ADDR { #04 .Screen/auto DEO } -%AUTO-Y-ADDR { #06 .Screen/auto DEO } - -%SIZE-TO-RECT { - STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 -} ( x y w h -- x1 y1 x2 y2 ) - -%SET-RECT { - DUP2 ROT2 SWP2 #0006 ADD2 STA2 - DUP2 ROT2 SWP2 #0004 ADD2 STA2 - DUP2 ROT2 SWP2 #0002 ADD2 STA2 - DUP2 ROT2 SWP2 STA2 - POP2 -} ( x1 y1 x2 y2 addr -- ) - ( devices ) |00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] @@ -98,18 +80,15 @@ #00 .settings/brush STZ #0000 ;set-focus JSR2 - .Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 -- - .Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 -- - .frame/width LDZ2 .frame/height LDZ2 SIZE-TO-RECT ;frame SET-RECT - - .frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ADD2 #10 #00 SWP #30 SFT2 #0080 SIZE-TO-RECT ;tileview SET-RECT - .frame/x1 LDZ2 #0082 ADD2 .frame/y1 LDZ2 #0030 ADD2 #007f #007f SIZE-TO-RECT ;nametable SET-RECT - .frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #001f #0028 SIZE-TO-RECT ;zoomview SET-RECT - .frame/x1 LDZ2 #002f ADD2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT - .frame/x1 LDZ2 #005f ADD2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT - .frame/x1 LDZ2 #008f ADD2 .frame/y1 LDZ2 #0020 #0028 SIZE-TO-RECT ;blendview SET-RECT - .frame/x1 LDZ2 #00bf ADD2 .frame/y1 LDZ2 #0048 #0020 SIZE-TO-RECT ;dataview SET-RECT - .tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ADD2 #0100 #0008 SIZE-TO-RECT ;toolview SET-RECT + .Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 -- .Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 -- .frame/width LDZ2 .frame/height LDZ2 ;frame ;set-size JSR2 + .frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ADD2 #10 #00 SWP #30 SFT2 #0080 ;tileview ;set-size JSR2 + .frame/x1 LDZ2 #0082 ADD2 .frame/y1 LDZ2 #0030 ADD2 #007f #007f ;nametable ;set-size JSR2 + .frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #001f #0028 ;zoomview ;set-size JSR2 + .frame/x1 LDZ2 #002f ADD2 .frame/y1 LDZ2 #0020 #0020 ;preview ;set-size JSR2 + .frame/x1 LDZ2 #005f ADD2 .frame/y1 LDZ2 #0020 #0020 ;colorview ;set-size JSR2 + .frame/x1 LDZ2 #008f ADD2 .frame/y1 LDZ2 #0020 #0028 ;blendview ;set-size JSR2 + .frame/x1 LDZ2 #00bf ADD2 .frame/y1 LDZ2 #0048 #0020 ;dataview ;set-size JSR2 + .tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ADD2 #0100 #0008 ;toolview ;set-size JSR2 .frame/x1 LDZ2 #0002 -- .workspace-frame/x1 STZ2 .tileview/y1 LDZ2 #0001 -- .workspace-frame/y1 STZ2 @@ -520,8 +499,8 @@ JMP2r @set-selection-zoom ( x y -- ) - #7f AND .selection/zy STZ - #7f AND .selection/zx STZ + #7f AND .selection/zy STZ + #7f AND .selection/zx STZ JMP2r @@ -583,12 +562,12 @@ JMP2r @mod-selection-zoom ( x y -- ) ( set zoom ) - .selection/zy LDZ + SWP - .selection/zx LDZ + SWP + .selection/zy LDZ + SWP + .selection/zx LDZ + SWP ;set-selection-zoom JSR2 ( set from ) - .selection/zx LDZ #03 SFT - .selection/zy LDZ #03 SFT + .selection/zx LDZ #03 SFT + .selection/zy LDZ #03 SFT ;set-selection-from JSR2 ;draw-tileview-zoom JSR2 @@ -765,7 +744,7 @@ JMP2r .settings/zoom LDZ ;draw-tileview-zoom JCN2 - AUTO-X + #01 .Screen/auto DEO #1000 &ver DUP #00 SWP #30 SFT2 .tileview/y1 LDZ2 ADD2 .Screen/y DEO2 @@ -779,7 +758,7 @@ JMP2r POP2 INC GTHk ,&ver JCN POP2 - AUTO-NONE + #00 .Screen/auto DEO .workspace-frame #03 ;line-rect JSR2 @@ -795,8 +774,8 @@ JMP2r #10 #00 &hor DUP #30 SFT #00 SWP .tileview/x1 LDZ2 ADD2 .Screen/x DEO2 - OVR2 NIP OVR SWP - ( y ) .selection/zy LDZ + #00 SWP + OVR2 NIP OVR SWP + ( y ) .selection/zy LDZ + #00 SWP ( x ) ROT .selection/zx LDZ + #00 SWP SWP2 ;get-pixel JSR2 .Screen/sprite DEO INC GTHk ,&hor JCN @@ -816,7 +795,7 @@ JMP2r @draw-nametable ( -- ) - AUTO-X + #01 .Screen/auto DEO #1000 &ver DUP #00 SWP #30 SFT2 .nametable/y LDZ2 ADD2 .Screen/y DEO2 @@ -830,7 +809,7 @@ JMP2r POP2 INC GTHk ,&ver JCN POP2 - AUTO-NONE + #00 .Screen/auto DEO JMP2r @@ -872,7 +851,7 @@ JMP2r @put-pixel ( x* y* color -- ) STH - OVR2 SWP2 ,get-pixel-addr JSR + OVR2 SWP2 ,get-pixel-addr JSR ( ch1 ) OVR2 OVR2 STHkr #00 ,toggle-pixel JSR ( ch2 ) #0008 ADD2 STHr #01 ,toggle-pixel JSR @@ -1014,8 +993,8 @@ JMP2r POPr JMP2r - &get-color - .settings/color LDZ STHk #01 SFT + DEI #01 STHr #01 AND - #20 SFT SFT #0f AND + &get-color + .settings/color LDZ STHk #01 SFT + DEI #01 STHr #01 AND - #20 SFT SFT #0f AND JMP2r @draw-blendview ( -- ) @@ -1162,11 +1141,11 @@ JMP2r @draw-short ( short* color -- ) - STH SWP STHkr ,draw-byte JSR STHr + STH SWP STHkr ,draw-byte JSR STHr @draw-byte ( byte color -- ) - STH DUP #04 SFT STHkr ,draw-hex JSR #0f AND STHr + STH DUP #04 SFT STHkr ,draw-hex JSR #0f AND STHr @draw-hex ( char color -- ) @@ -1319,6 +1298,20 @@ JMP2r ( generics ) +@set-size ( x1 y1 w* h* rect* -- ) + + STH2 + ( size to rect ) + STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 + STH2r + DUP2 ROT2 SWP2 #0006 ADD2 STA2 + DUP2 ROT2 SWP2 #0004 ADD2 STA2 + DUP2 ROT2 SWP2 #0002 ADD2 STA2 + DUP2 ROT2 SWP2 STA2 + POP2 + +JMP2r + @within-rect ( x* y* rect -- flag ) STH @@ -1443,9 +1436,6 @@ JMP2r JMP2r -@rol ( byte -- byte ) DUP #07 SFT SWP #10 SFT + JMP2r -@ror ( byte -- byte ) DUP #70 SFT SWP #01 SFT + JMP2r - @print ( short* -- ) &short ( short* -- ) SWP ,&byte JSR @@ -1454,34 +1444,26 @@ JMP2r JMP2r +@rol ( byte -- byte ) DUP #07 SFT SWP #10 SFT + JMP2r +@ror ( byte -- byte ) DUP #70 SFT SWP #01 SFT + JMP2r + @untitled-txt "untitled.chr $1 @nametable-ext ".tbl $1 -@tool-brush e0d0 8844 2212 0c00 -@tool-selector 80c0 e0f0 f8e0 1000 -@tool-zoom 3048 8484 4834 0200 -@pixel-icn 7cfe fefe fefe 7c00 -@bigpixel-icn f0f0 f0f0 0000 0000 -@halftone-icn aa55 aa55 aa55 aa55 -@save-icn 1054 28c6 2854 1000 -@make-icn fe82 8282 848a f400 -@load-icn feaa d6aa d4aa f400 - -@slider-icns - f0f0 f0f0 f0f0 f000 ( full ) - 50a0 50a0 50a0 5000 ( empty ) -@circle-icns - 3844 8282 8244 3800 ( full ) - 387c fefe fe7c 3800 ( line ) -@zoom-icns - 3048 8484 4834 0200 ( in ) - 3245 8284 4834 0200 ( out ) -@arrow-hor-icns - 0010 181c fe1c 1810 - 0010 3070 fe70 3010 -@arrow-ver-icns - 0010 387c fe10 1010 - 0010 1010 fe7c 3810 +@tool-brush e0d0 8844 2212 0c00 +@tool-selector 80c0 e0f0 f8e0 1000 +@tool-zoom 3048 8484 4834 0200 +@pixel-icn 7cfe fefe fefe 7c00 +@bigpixel-icn f0f0 f0f0 0000 0000 +@halftone-icn aa55 aa55 aa55 aa55 +@save-icn 1054 28c6 2854 1000 +@make-icn fe82 8282 848a f400 +@load-icn feaa d6aa d4aa f400 +@slider-icns f0f0 f0f0 f0f0 f000 50a0 50a0 50a0 5000 +@circle-icns 3844 8282 8244 3800 387c fefe fe7c 3800 +@zoom-icns 3048 8484 4834 0200 3245 8284 4834 0200 +@arrow-hor-icns 0010 181c fe1c 1810 0010 3070 fe70 3010 +@arrow-ver-icns 0010 387c fe10 1010 0010 1010 fe7c 3810 @font ( specter8-frag font ) 0000 0000 0000 0000 0008 0808 0800 0800 @@ -1533,7 +1515,7 @@ JMP2r 0008 0808 0808 0800 0030 1008 0810 3000 0000 0032 4c00 0000 3c42 99a1 a199 423c -|8000 - @spritesheet $1000 - &nametable $100 +|8000 + @spritesheet $1000 + &nametable $100 &color