@@ 17,55 17,53 @@
ctrl+v - paste
)
-%+ { ADD } %- { SUB }
+%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
-%++ { ADD2 } %-- { SUB2 }
+%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
-%!~ { NEQk NIP }
-%DEBUG { ;print-hex JSR2 #0a .Console/write DEO }
-%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
+%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 }
-%2* { #10 SFT } %2/ { #01 SFT }
-%4* { #20 SFT } %4/ { #02 SFT }
-%8* { #30 SFT } %8/ { #03 SFT }
-%20* { #50 SFT }
%40* { #60 SFT }
%80* { #70 SFT }
-%2** { #10 SFT2 } %2// { #01 SFT2 }
-%4// { #02 SFT2 }
-%8** { #30 SFT2 } %8// { #03 SFT2 }
-%10** { #40 SFT2 } %10// { #04 SFT2 }
-%20** { #50 SFT2 }
%80** { #70 SFT2 }
%100** { #80 SFT2 }
%200** { #90 SFT2 }
-%2INC2 { INC2 INC2 }
-%2MOD { #01 AND }
-%4MOD { #03 AND }
-%8MOD { #07 AND }
-%10MOD { #0f AND }
+%2MOD { #01 AND } %2MOD2 { #0001 AND2 }
+%4MOD { #03 AND } %4MOD2 { #0003 AND2 }
+%8MOD { #07 AND } %8MOD2 { #0007 AND2 }
+%10MOD { #0f AND } %10MOD2 { #000f AND2 }
+
%20MOD { #1f AND }
-%8MOD2 { #0007 AND2 }
%100MOD2 { #00ff AND2 }
-%10MOD2 { #000f AND2 }
-
%TOS { #00 SWP }
-%SWP2? { #01 JCN SWP2 }
+
+%STEP8 { #33 SFT2 }
+
+%!~ { NEQk NIP }
+
+%DEBUG { ;print-hex/byte JSR2 #0a #18 DEO }
+%DEBUG2 { ;print-hex JSR2 #0a #18 DEO }
%RTN { JMP2r }
-%ROL { DUP #07 SFT SWP #10 SFT + }
-%ROR { DUP #70 SFT SWP #01 SFT + }
%SFL { #40 SFT SFT }
%GTS2 { #8000 ++ SWP2 #8000 ++ << }
-%STEP8 { #33 SFT2 }
%TOGGLE { LDZk #00 = SWP STZ }
%GET-ITER { OVR2 NIP OVR SWP }
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP }
+%ROL { DUP #07 SFT SWP #10 SFT + }
+%ROR { DUP #70 SFT SWP #01 SFT + }
+
+( defines )
+
%HOR { #10 } %VER { #10 }
%LENGTH { #1000 }
@@ 79,6 77,7 @@
%BANK-COLOR { #9100 }
( todo )
+
%DATA-CLIP { #6000 }
%GET-HEX-ADDR { TOS 8** ;font-hex ++ .Screen/addr DEO2 }
@@ 502,19 501,31 @@ BRK
@on-touch-nametable ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
-
- .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
+ ( get touch tile )
+
.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
- .Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++
- BANK-NAMETABLE ++ STA
+ .Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++ STH2
- ( get blending ) .settings/blend LDZ
- .Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
- .Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++
- BANK-COLOR ++ STA
+ ( look for changes )
- ;redraw JSR2
+ ( sprite ) STH2kr BANK-NAMETABLE ++ LDA
+ ( color ) STH2kr BANK-COLOR ++ LDA
+ ( sprite ) .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
+ ( color ) .settings/blend LDZ
+
+ ( stop ) NEQ2 ,&continue JCN POP2r BRK &continue
+
+ ( set sprite )
+ .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
+ STH2kr BANK-NAMETABLE ++ STA
+
+ ( set color )
+ .settings/blend LDZ
+ STH2r BANK-COLOR ++ STA
+
+ ;draw-nametable JSR2
+ SET-STATE
BRK
@@ 1136,7 1147,7 @@ RTN
&loop
DUP STHkr > 8* TOS ;slider-icns ++ .Screen/addr DEO2
#02 .Screen/sprite DEO
- .Screen/x DEI2 2INC2 .Screen/x DEO2
+ .Screen/x DEI2 INC2 INC2 .Screen/x DEO2
INC GTHk ,&loop JCN
POP2
POPr
@@ 1454,7 1465,7 @@ RTN
STH STH
( y2 ) STHkr #06 + LDZ2
- ( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
+ ( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k #01 JCN SWP2
&ver
( save ) DUP2 .Screen/y DEO2
( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2
@@ 1465,7 1476,7 @@ RTN
INC2 GTH2k ,&ver JCN
POP2
( x2 ) STHkr #04 + LDZ2
- ( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
+ ( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k #01 JCN SWP2
&hor
( save ) DUP2 .Screen/x DEO2
( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2
@@ 1488,7 1499,7 @@ RTN
&loop
( save ) DUP2 .Screen/x DEO2
( draw ) STHkr .Screen/pixel DEO
- 2INC2 GTH2k ,&loop JCN
+ INC2 INC2 GTH2k ,&loop JCN
POP2 POP2 POPr
RTN
@@ 1499,18 1510,20 @@ RTN
&loop
( save ) DUP2 .Screen/y DEO2
( draw ) STHkr .Screen/pixel DEO
- 2INC2 GTH2k ,&loop JCN
+ INC2 INC2 GTH2k ,&loop JCN
POP2 POP2 POPr
RTN
-@print-hex ( value -- )
+@print-hex ( value* -- )
- STHk #04 SFT ,&parse JSR .Console/write DEO
- STHr #0f AND ,&parse JSR .Console/write DEO
+ SWP ,&byte JSR
+ &byte ( byte -- )
+ STHk #04 SFT ,&parse JSR #18 DEO
+ STHr #0f AND ,&parse JSR #18 DEO
RTN
- &parse ( value -- char )
- DUP #09 GTH ,&above JCN #30 ADD RTN &above #09 SUB #60 ADD RTN
+ &parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 + RTN
+ &above #57 + RTN
RTN