diff --git a/src/main.tal b/src/main.tal index ad578e6..260d12b 100644 --- a/src/main.tal +++ b/src/main.tal @@ -4,28 +4,12 @@ %< { LTH } %> { GTH } %= { EQU } %! { NEQ } %-- { SUB2 } %** { MUL2 } %// { DIV2 } -%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 } -%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 } -%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 } -%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 } -%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 } -%40* { #60 SFT } %40/ { #06 SFT } %40** { #60 SFT2 } - -%RELEASE-MOUSE { #0096 DEO } - %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 } -%BANK-SPRITESHEET { #8000 } -%BANK-NAMETABLE { #9000 } -%BANK-COLOR { #9100 } - -%SET-STATE { #01 .state/changed STZ ;draw-state JSR2 } -%RESET-STATE { #00 .state/changed STZ ;draw-state JSR2 } - %SIZE-TO-RECT { STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2 } ( x y w h -- x1 y1 x2 y2 ) @@ -118,7 +102,7 @@ .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 8** #0080 SIZE-TO-RECT ;tileview 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 @@ -148,7 +132,7 @@ BRK ;on-button .Controller/vector DEO2 ;on-mouse .Mouse/vector DEO2 #01 ;draw-filepath JSR2 - RELEASE-MOUSE + ( release mouse ) #0096 DEO JMP2r @@ -161,7 +145,7 @@ JMP2r .cursor/x LDZ2 .Screen/x DEO2 .cursor/y LDZ2 .Screen/y DEO2 #40 .Screen/sprite DEO - RELEASE-MOUSE + ( release mouse ) #0096 DEO JMP2r @@ -225,7 +209,7 @@ BRK .state/timer LDZ DUP #07 AND ,&no-blink JCN - DUP 8/ #01 AND 8* INC ;draw-filepath JSR2 + DUP #03 SFT #01 AND #30 SFT INC ;draw-filepath JSR2 &no-blink INC .state/timer STZ @@ -245,7 +229,7 @@ BRK [ LIT 'q ] NEQk NIP ,&no-tool0 JCN #00 ;set-tool JSR2 &no-tool0 [ LIT 'w ] NEQk NIP ,&no-tool1 JCN #01 ;set-tool JSR2 &no-tool1 [ LIT 'e ] NEQk NIP ,&no-tool2 JCN #02 ;set-tool JSR2 &no-tool2 - [ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run-selection JSR2 SET-STATE ;redraw JSR2 &no-delete + [ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run-selection JSR2 #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 &no-delete [ #20 ] NEQk NIP ,&no-zoom JCN ;toggle-zoom JSR2 &no-zoom [ #1b ] NEQk NIP ,&no-escape JCN .selection/x1 LDZ2 .selection/x2 STZ2 ;redraw JSR2 &no-escape POP @@ -316,29 +300,29 @@ BRK .Mouse/y DEI2 .tileview/y1 LDZ2 -- .settings/color LDZ .Mouse/state DEI #01 = * ;put-pixel JSR2 - SET-STATE + #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 BRK &zoom ( -> ) - .Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP - .Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP - DUP2 8* SWP 8* SWP ;set-selection-zoom JSR2 + .Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 NIP + .Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 NIP + DUP2 #30 SFT SWP #30 SFT SWP ;set-selection-zoom JSR2 ;set-selection-from JSR2 ;toggle-zoom JSR2 ;redraw JSR2 - RELEASE-MOUSE + ( release mouse ) #0096 DEO BRK &zoomed ( -> ) - .Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// #00 .selection/zx LDZ ADD2 - .Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// #00 .selection/zy LDZ ADD2 + .Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 #00 .selection/zx LDZ ADD2 + .Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 #00 .selection/zy LDZ ADD2 .settings/color LDZ .Mouse/state DEI #01 = * ;put-pixel JSR2 - SET-STATE + #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 BRK @@ -348,17 +332,17 @@ BRK .Mouse/state DEI DUP .cursor/last LDZ DUP2 #0000 EQU2 ,&end JCN DUP2 #0100 NEQ2 ,&no-down JCN - .Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP - .Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP + .Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 NIP + .Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 NIP ( select zoom ) - DUP2 8* SWP 8* SWP ;set-selection-zoom JSR2 + DUP2 #30 SFT SWP #30 SFT SWP ;set-selection-zoom JSR2 ( select from ) ;set-selection-from JSR2 ,&end JMP &no-down ( release ) - .Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP - .Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP + .Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 NIP + .Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 NIP ;set-selection-to JSR2 &end POP2 @@ -369,28 +353,28 @@ BRK @on-touch-nametable ( -> ) ( get touch tile ) - .Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10** - .Mouse/x DEI2 .nametable/x LDZ2 -- 8// ADD2 STH2 + .Mouse/y DEI2 .nametable/y LDZ2 -- #03 SFT2 #40 SFT2 + .Mouse/x DEI2 .nametable/x LDZ2 -- #03 SFT2 ADD2 STH2 ( look for changes ) - STH2kr BANK-NAMETABLE ADD2 LDA - .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP - STH2kr BANK-COLOR ADD2 LDA + STH2kr ;spritesheet/nametable ADD2 LDA + .settings/focus LDZ2 ;spritesheet -- #04 SFT2 NIP + STH2kr ;spritesheet/color ADD2 LDA .settings/blend LDZ NEQ2 ,&continue JCN POP2r BRK &continue ( set sprite ) - .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP - STH2kr BANK-NAMETABLE ADD2 STA + .settings/focus LDZ2 ;spritesheet -- #04 SFT2 NIP + STH2kr ;spritesheet/nametable ADD2 STA ( set color ) .settings/blend LDZ - STH2r BANK-COLOR ADD2 STA + STH2r ;spritesheet/color ADD2 STA ;draw-nametable JSR2 - SET-STATE + #01 .state/changed STZ ;draw-state JSR2 BRK @on-touch-toolview ( -> ) - RELEASE-MOUSE - .Mouse/x DEI2 .toolview/x1 LDZ2 -- 8// NIP + ( release mouse ) #0096 DEO + .Mouse/x DEI2 .toolview/x1 LDZ2 -- #03 SFT2 NIP [ #1f ] NEQk NIP ,&no-save JCN ;save-file JSR2 POP BRK &no-save [ #1d ] NEQk NIP ,&no-load JCN ;load-file JSR2 POP BRK &no-load [ #1c ] NEQk NIP ,&no-name JCN ;new-file JSR2 POP BRK &no-name @@ -406,34 +390,34 @@ BRK @on-touch-zoomview ( -> ) - .Mouse/y DEI2 .zoomview/y1 LDZ2 -- 8// NIP #04 ! ;&no-mod JCN2 - .Mouse/x DEI2 .zoomview/x1 LDZ2 -- 8// NIP + .Mouse/y DEI2 .zoomview/y1 LDZ2 -- #03 SFT2 NIP #04 ! ;&no-mod JCN2 + .Mouse/x DEI2 .zoomview/x1 LDZ2 -- #03 SFT2 NIP DUP #00 = .Mouse/state DEI #01 = #0101 NEQ2 ,&no-shiftup JCN ;op-shift-tile-up ;run-selection JSR2 - SET-STATE &no-shiftup + #01 .state/changed STZ ;draw-state JSR2 &no-shiftup DUP #00 = .Mouse/state DEI #01 > #0101 NEQ2 ,&no-shiftdown JCN ;op-shift-tile-down ;run-selection JSR2 - SET-STATE &no-shiftdown + #01 .state/changed STZ ;draw-state JSR2 &no-shiftdown DUP #01 = .Mouse/state DEI #01 = #0101 NEQ2 ,&no-shiftright JCN ;op-shift-tile-right ;run-selection JSR2 - SET-STATE &no-shiftright + #01 .state/changed STZ ;draw-state JSR2 &no-shiftright DUP #01 = .Mouse/state DEI #01 > #0101 NEQ2 ,&no-shiftleft JCN ;op-shift-tile-left ;run-selection JSR2 - SET-STATE &no-shiftleft + #01 .state/changed STZ ;draw-state JSR2 &no-shiftleft POP - RELEASE-MOUSE + ( release mouse ) #0096 DEO ,&finish JMP &no-mod ( paint ) - .Mouse/x DEI2 .zoomview/x1 LDZ2 -- 4// - .Mouse/y DEI2 .zoomview/y1 LDZ2 -- 4// + .Mouse/x DEI2 .zoomview/x1 LDZ2 -- #02 SFT2 + .Mouse/y DEI2 .zoomview/y1 LDZ2 -- #02 SFT2 .settings/focus LDZ2 ADD2 ( detect erase ) .settings/color LDZ .Mouse/state DEI #01 = * STH OVR2 OVR2 STHkr #00 ;toggle-pixel JSR2 #0008 ADD2 STHr #01 ;toggle-pixel JSR2 - SET-STATE + #01 .state/changed STZ ;draw-state JSR2 &finish @@ -443,8 +427,8 @@ BRK @on-touch-blendview ( -> ) - .Mouse/x DEI2 .blendview/x1 LDZ2 -- 8// NIP - .Mouse/y DEI2 .blendview/y1 LDZ2 -- 8// NIP 4* + + .Mouse/x DEI2 .blendview/x1 LDZ2 -- #03 SFT2 NIP + .Mouse/y DEI2 .blendview/y1 LDZ2 -- #03 SFT2 NIP #20 SFT + DUP #0f > ,&no-set JCN DUP .settings/blend LDZ #b0 AND + .settings/blend STZ &no-set @@ -457,25 +441,25 @@ BRK POP ;draw-blendview JSR2 ;draw-preview JSR2 - RELEASE-MOUSE + ( release mouse ) #0096 DEO BRK @on-touch-colorview ( -> ) - .Mouse/y DEI2 .colorview/y1 LDZ2 -- 8// NIP + .Mouse/y DEI2 .colorview/y1 LDZ2 -- #03 SFT2 NIP DUP #00 ! ,&no-r JCN .System/r STHk ,&set-color JSR - STHr [ .settings/color LDZ 2/ + ] DEO + STHr [ .settings/color LDZ #01 SFT + ] DEO &no-r DUP #01 ! ,&no-g JCN .System/g STHk ,&set-color JSR - STHr [ .settings/color LDZ 2/ + ] DEO + STHr [ .settings/color LDZ #01 SFT + ] DEO &no-g DUP #02 ! ,&no-b JCN .System/b STHk ,&set-color JSR - STHr [ .settings/color LDZ 2/ + ] DEO + STHr [ .settings/color LDZ #01 SFT + ] DEO &no-b POP @@ -484,28 +468,28 @@ BRK BRK &set-color - .settings/color LDZ STHk 2/ + DEI + .settings/color LDZ STHk #01 SFT + DEI STHr #01 AND STHk - #0f SWP [ 40* SFT ] AND + #0f SWP [ #60 SFT SFT ] AND STHr #00 = - .Mouse/x DEI2 .colorview/x1 LDZ2 -- 2// NIP + .Mouse/x DEI2 .colorview/x1 LDZ2 -- #01 SFT2 NIP ( clamp to #0f ) DUP #01 > - - SWP [ 40* SFT ] + + SWP [ #60 SFT SFT ] + JMP2r BRK @on-touch-preview ( -> ) - ( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- 8// NIP - ( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- 8// NIP + ( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- #03 SFT2 NIP + ( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- #03 SFT2 NIP #40 SFT + #11 + .settings/ratio STZ ;redraw JSR2 - RELEASE-MOUSE + ( release mouse ) #0096 DEO BRK @@ -587,7 +571,7 @@ JMP2r .selection/y1 LDZ .selection/y2 STZ &no-y - .selection/x1 LDZ 8* .selection/y1 LDZ 8* ;set-selection-zoom JSR2 + .selection/x1 LDZ #30 SFT .selection/y1 LDZ #30 SFT ;set-selection-zoom JSR2 ( focus ) .selection LDZ2 ;set-focus JSR2 @@ -603,8 +587,8 @@ JMP2r .selection/zx LDZ + SWP ;set-selection-zoom JSR2 ( set from ) - .selection/zx LDZ 8/ - .selection/zy LDZ 8/ + .selection/zx LDZ #03 SFT + .selection/zy LDZ #03 SFT ;set-selection-from JSR2 ;draw-tileview-zoom JSR2 @@ -784,7 +768,7 @@ JMP2r AUTO-X #1000 &ver - DUP #00 SWP 8** .tileview/y1 LDZ2 ADD2 .Screen/y DEO2 + DUP #00 SWP #30 SFT2 .tileview/y1 LDZ2 ADD2 .Screen/y DEO2 .tileview/x1 LDZ2 .Screen/x DEO2 #1000 &hor @@ -803,14 +787,14 @@ JMP2r @draw-tileview-zoom ( -- ) - ( find focus ) .settings/focus LDZ2 BANK-SPRITESHEET -- DUP2 2// #00ff AND2 SWP2 #0080 2** DIV2 8** STH2 STH2 + ( find focus ) .settings/focus LDZ2 ;spritesheet -- DUP2 #01 SFT2 #00ff AND2 SWP2 #0080 #10 SFT2 DIV2 #30 SFT2 STH2 STH2 ;pixel-icn .Screen/addr DEO2 #10 #00 &ver - DUP 8* #00 SWP .tileview/y1 LDZ2 ADD2 .Screen/y DEO2 + DUP #30 SFT #00 SWP .tileview/y1 LDZ2 ADD2 .Screen/y DEO2 #10 #00 &hor - DUP 8* #00 SWP .tileview/x1 LDZ2 ADD2 .Screen/x DEO2 + DUP #30 SFT #00 SWP .tileview/x1 LDZ2 ADD2 .Screen/x DEO2 OVR2 NIP OVR SWP ( y ) .selection/zy LDZ + #00 SWP ( x ) ROT .selection/zx LDZ + #00 SWP SWP2 @@ -821,10 +805,10 @@ JMP2r POP2 POP2r POP2r ( guides ) - #00 #07 .selection/zy LDZ - #0007 AND2 8** #0001 -- #0008 ADD2 STH2 + #00 #07 .selection/zy LDZ - #0007 AND2 #30 SFT2 #0001 -- #0008 ADD2 STH2 .tileview/x1 LDZ2 .tileview/x2 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #02 ;line-hor-dashed JSR2 .tileview/x1 LDZ2 .tileview/x2 LDZ2 .tileview/y1 LDZ2 STH2r ADD2 #0040 ADD2 #02 ;line-hor-dashed JSR2 - #00 #07 .selection/zx LDZ - #0007 AND2 8** #0001 -- #0008 ADD2 STH2 + #00 #07 .selection/zx LDZ - #0007 AND2 #30 SFT2 #0001 -- #0008 ADD2 STH2 .tileview/x1 LDZ2 STH2kr ADD2 .tileview/y1 LDZ2 .tileview/y2 LDZ2 #02 ;line-ver-dashed JSR2 .tileview/x1 LDZ2 STH2r ADD2 #0040 ADD2 .tileview/y1 LDZ2 .tileview/y2 LDZ2 #02 ;line-ver-dashed JSR2 @@ -835,13 +819,13 @@ JMP2r AUTO-X #1000 &ver - DUP #00 SWP 8** .nametable/y LDZ2 ADD2 .Screen/y DEO2 + DUP #00 SWP #30 SFT2 .nametable/y LDZ2 ADD2 .Screen/y DEO2 .nametable/x LDZ2 .Screen/x DEO2 #1000 &hor OVR2 NIP OVR SWP [ #40 SFT + ] #00 SWP - DUP2 BANK-NAMETABLE ADD2 LDA #00 SWP 10** BANK-SPRITESHEET ADD2 .Screen/addr DEO2 - BANK-COLOR ADD2 LDA .Screen/sprite DEO + DUP2 ;spritesheet/nametable ADD2 LDA #00 SWP #40 SFT2 ;spritesheet ADD2 .Screen/addr DEO2 + ;spritesheet/color ADD2 LDA .Screen/sprite DEO INC GTHk ,&hor JCN POP2 INC GTHk ,&ver JCN @@ -854,7 +838,7 @@ JMP2r @get-tile-addr ( x y -- addr* ) - #00 SWP 10** ROT #00 SWP ADD2 10** BANK-SPRITESHEET ADD2 + #00 SWP #40 SFT2 ROT #00 SWP ADD2 #40 SFT2 ;spritesheet ADD2 JMP2r @@ -867,7 +851,7 @@ JMP2r ( channel 2 ) [ STHr ] [ STH2r ] #0008 ADD2 LDA SWP #07 SWP - SFT #01 AND - 2* + #10 SFT + JMP2r @@ -881,7 +865,7 @@ JMP2r ( get tile ) SWP2 #83 SFT2 ADD2 SWP2 #43 SFT2 ADD2 - BANK-SPRITESHEET ADD2 + ;spritesheet ADD2 JMP2r @@ -912,7 +896,7 @@ JMP2r @has-nametable ( -- bool ) - BANK-NAMETABLE STH2k #0200 ADD2 STH2r + ;spritesheet/nametable STH2k #0200 ADD2 STH2r &loop LDAk #00 = ,&continue JCN POP2 POP2 #01 JMP2r @@ -930,10 +914,10 @@ JMP2r ;bigpixel-icn .Screen/addr DEO2 #08 #00 &ver - DUP 4* #00 SWP .zoomview/y1 LDZ2 ADD2 .Screen/y DEO2 + DUP #20 SFT #00 SWP .zoomview/y1 LDZ2 ADD2 .Screen/y DEO2 #08 #00 &hor - DUP 4* #00 SWP .zoomview/x1 LDZ2 ADD2 .Screen/x DEO2 + DUP #20 SFT #00 SWP .zoomview/x1 LDZ2 ADD2 .Screen/x DEO2 ( get pixel ) OVR2 NIP OVR SWP ( ch 1 ) @@ -942,7 +926,7 @@ JMP2r ( ch2 ) [ STHr ] [ STH2r ] #0008 ADD2 LDA SWP #07 SWP - SFT #01 AND - 2* + + #10 SFT + .Screen/sprite DEO INC GTHk ,&hor JCN POP2 @@ -968,10 +952,10 @@ JMP2r .settings/focus LDZ2 STH2k .Screen/addr DEO2 #04 #00 &ver - DUP 8* #00 SWP .preview/y1 LDZ2 ADD2 .Screen/y DEO2 + DUP #30 SFT #00 SWP .preview/y1 LDZ2 ADD2 .Screen/y DEO2 #04 #00 &hor - DUP 8* #00 SWP .preview/x1 LDZ2 ADD2 .Screen/x DEO2 + DUP #30 SFT #00 SWP .preview/x1 LDZ2 ADD2 .Screen/x DEO2 ( get x,y ) OVR2 NIP OVR SWP ( check if within ratio ) @@ -980,7 +964,7 @@ JMP2r #0101 NEQ2 ,&outside JCN ( get tile ) STH2kr .Screen/addr DEO2 ( get blending ) .settings/blend LDZ .Screen/sprite DEO - ( incr ) STH2r #0008 [ .settings/depth LDZ 8* #00 SWP ADD2 ] ADD2 STH2 + ( incr ) STH2r #0008 [ .settings/depth LDZ #30 SFT #00 SWP ADD2 ] ADD2 STH2 ,&resume JMP &outside ;halftone-icn .Screen/addr DEO2 @@ -1022,7 +1006,7 @@ JMP2r .Screen/x DEO2 #10 #00 &loop - DUP STHkr > 8* #00 SWP ;slider-icns ADD2 .Screen/addr DEO2 + DUP STHkr > #30 SFT #00 SWP ;slider-icns ADD2 .Screen/addr DEO2 #02 .Screen/sprite DEO .Screen/x DEI2k INC2 INC2 ROT DEO2 INC GTHk ,&loop JCN @@ -1031,7 +1015,7 @@ JMP2r JMP2r &get-color - .settings/color LDZ STHk 2/ + DEI #01 STHr #01 AND - 4* SFT #0f AND + .settings/color LDZ STHk #01 SFT + DEI #01 STHr #01 AND - #20 SFT SFT #0f AND JMP2r @draw-blendview ( -- ) @@ -1039,8 +1023,8 @@ JMP2r .settings/focus LDZ2 .Screen/addr DEO2 #10 #00 &loop - DUP #03 AND #00 SWP 8** .blendview/x1 LDZ2 ADD2 .Screen/x DEO2 - DUP 4/ #00 SWP 8** .blendview/y1 LDZ2 ADD2 .Screen/y DEO2 + DUP #03 AND #00 SWP #30 SFT2 .blendview/x1 LDZ2 ADD2 .Screen/x DEO2 + DUP #02 SFT #00 SWP #30 SFT2 .blendview/y1 LDZ2 ADD2 .Screen/y DEO2 #00 .Screen/sprite DEO DUP .settings/blend LDZ #b0 AND + .Screen/sprite DEO INC GTHk ,&loop JCN @@ -1055,14 +1039,14 @@ JMP2r .blendview/x1 LDZ2 #0010 ADD2 .Screen/x DEO2 .blendview/y1 LDZ2 #0021 ADD2 .Screen/y DEO2 .settings/blend LDZ #20 AND #00 ! STH - ;arrow-ver-icns STHkr #00 SWP 8** ADD2 .Screen/addr DEO2 + ;arrow-ver-icns STHkr #00 SWP #30 SFT2 ADD2 .Screen/addr DEO2 #02 STHr - .Screen/sprite DEO ( x ) .blendview/x1 LDZ2 #0018 ADD2 .Screen/x DEO2 .blendview/y1 LDZ2 #0021 ADD2 .Screen/y DEO2 .settings/blend LDZ #10 AND #00 ! STH - ;arrow-hor-icns STHkr #00 SWP 8** ADD2 .Screen/addr DEO2 + ;arrow-hor-icns STHkr #00 SWP #30 SFT2 ADD2 .Screen/addr DEO2 #02 STHr - .Screen/sprite DEO JMP2r @@ -1077,7 +1061,7 @@ JMP2r #04 #00 &loop .dataview/x1 LDZ2 .Screen/x DEO2 - DUP 2* #00 SWP .settings/focus LDZ2 ADD2 + DUP #10 SFT #00 SWP .settings/focus LDZ2 ADD2 ( ch1 ) LDA2k #01 ;draw-short JSR2 .Screen/x DEI2k #0004 ADD2 ROT DEO2 ( ch2 ) #0008 ADD2 LDA2 #02 ;draw-short JSR2 @@ -1093,13 +1077,13 @@ JMP2r .toolview/y1 LDZ2 .Screen/y DEO2 ( colors ) .toolview/x1 LDZ2 STH2k .Screen/x DEO2 - ;circle-icns [ .settings/color LDZ #01 = #00 SWP 8** ] ADD2 .Screen/addr DEO2 + ;circle-icns [ .settings/color LDZ #01 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2 #01 .Screen/sprite DEO STH2kr #0008 ADD2 .Screen/x DEO2 - ;circle-icns [ .settings/color LDZ #02 = #00 SWP 8** ] ADD2 .Screen/addr DEO2 + ;circle-icns [ .settings/color LDZ #02 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2 #02 .Screen/sprite DEO STH2kr #0010 ADD2 .Screen/x DEO2 - ;circle-icns [ .settings/color LDZ #03 = #00 SWP 8** ] ADD2 .Screen/addr DEO2 + ;circle-icns [ .settings/color LDZ #03 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2 #03 .Screen/sprite DEO ( tools ) STH2kr #0020 ADD2 .Screen/x DEO2 @@ -1109,7 +1093,7 @@ JMP2r ;tool-selector .Screen/addr DEO2 #01 [ .settings/tool LDZ #01 = ] + .Screen/sprite DEO STH2r #0030 ADD2 .Screen/x DEO2 - ;zoom-icns [ .settings/zoom LDZ #00 SWP 8** ADD2 ] .Screen/addr DEO2 + ;zoom-icns [ .settings/zoom LDZ #00 SWP #30 SFT2 ADD2 ] .Screen/addr DEO2 #01 [ .settings/tool LDZ #02 = ] + .Screen/sprite DEO ( file i/o ) ;draw-state JSR2 @@ -1134,7 +1118,7 @@ JMP2r .Mouse/x DEI2 DUP2 .cursor/x STZ2 .Screen/x DEO2 .Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2 ( draw new cursor ) - ;tool-brush #00 .settings/tool LDZ 8* ADD2 .Screen/addr DEO2 + ;tool-brush #00 .settings/tool LDZ #30 SFT ADD2 .Screen/addr DEO2 #42 .Mouse/state DEI #00 ! + .Screen/sprite DEO JMP2r @@ -1190,7 +1174,7 @@ JMP2r @draw-char ( char color -- ) - SWP #20 - #00 SWP 8** ;font ADD2 .Screen/addr DEO2 + SWP #20 - #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2 .Screen/sprite DEO .Screen/x DEI2k #0008 ADD2 ROT DEO2 @@ -1202,36 +1186,36 @@ JMP2r #00 ;draw-filepath JSR2 - BANK-SPRITESHEET #1000 ;mclr JSR2 - BANK-NAMETABLE #0200 ;mclr JSR2 + ;spritesheet #1000 ;mclr JSR2 + ;spritesheet/nametable #0200 ;mclr JSR2 ( rename to untitled.txt ) ;filepath #0020 ;mclr JSR2 ;untitled-txt ;filepath #000c ;mcpy JSR2 - RESET-STATE + #00 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 JMP2r @load-file ( -- ) - BANK-SPRITESHEET #1000 ;mclr JSR2 - BANK-NAMETABLE #0200 ;mclr JSR2 + ;spritesheet #1000 ;mclr JSR2 + ;spritesheet/nametable #0200 ;mclr JSR2 ( spritesheet ) ;filepath .File/name DEO2 #1000 .File/length DEO2 - BANK-SPRITESHEET .File/load DEO2 + ;spritesheet .File/load DEO2 ( nametable ) ;nametable-ext ;filepath ;scap JSR2 #0004 ;mcpy JSR2 ;filepath .File/name DEO2 #0200 .File/length DEO2 - BANK-NAMETABLE .File/load DEO2 + ;spritesheet/nametable .File/load DEO2 ;filepath ;scap JSR2 #0004 -- #0004 ;mclr JSR2 - RESET-STATE + #00 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 JMP2r @@ -1241,18 +1225,18 @@ JMP2r ( spritesheet ) ;filepath .File/name DEO2 #1000 .File/length DEO2 - BANK-SPRITESHEET .File/save DEO2 + ;spritesheet .File/save DEO2 ( nametable ) ;has-nametable JSR2 #00 = ,&no-nametable JCN ;nametable-ext ;filepath ;scap JSR2 #0004 ;mcpy JSR2 ;filepath .File/name DEO2 #0200 .File/length DEO2 - BANK-NAMETABLE .File/save DEO2 + ;spritesheet/nametable .File/save DEO2 ;filepath ;scap JSR2 #0004 -- #0004 ;mclr JSR2 &no-nametable - RESET-STATE + #00 .state/changed STZ ;draw-state JSR2 ;save-theme JSR2 JMP2r @@ -1549,3 +1533,7 @@ JMP2r 0008 0808 0808 0800 0030 1008 0810 3000 0000 0032 4c00 0000 3c42 99a1 a199 423c +|8000 + @spritesheet $1000 + &nametable $100 + &color