@@ 11,7 11,7 @@
@center
&x $2 &y $2
@line
- &x $2 &y $2 &dx $2 &dy $2 &e1 $2
+ &x2 $2 &y2 $2
@needles
&hx $2 &hy $2
&mx $2 &my $2
@@ 72,7 72,7 @@ BRK
( name ) "Catclock 0a
( details ) "Tic 20 "Tac 20 "Cat 20 "Clock 0a
( author ) "By 20 "Hundred 20 "Rabbits 0a
- ( date ) "Jan 20 "8, 20 "2023 00
+ ( date ) "Mar 20 "8, 20 "2023 00
02
( icon ) 83 =appicon
( mask ) 41 1705
@@ 122,7 122,6 @@ JMP2r
STHr #07 GTH ?&tail-reverse
( tail )
-
#0c MUL #00 SWP #30 SFT2 ;spritesheet/tail ADD2 .Screen/addr DEO2
#0c00
&loop-tail
@@ 141,7 140,7 @@ JMP2r
#0c00
&loop-tail-reverse
#00 OVRk
- ( x ) #03 AND [ #04 SWP SUB ] #30 SFT2 .center/x LDZ2 ADD2 #0018 SUB2 .Screen/x DEO2
+ ( x ) #03 AND #04 SWP SUB #30 SFT2 .center/x LDZ2 ADD2 #0018 SUB2 .Screen/x DEO2
( y ) #32 SFT2 .center/y LDZ2 ADD2 #0015 ADD2 .Screen/y DEO2
[ LIT2 14 -Screen/sprite ] DEO
INC GTHk ?&loop-tail-reverse
@@ 160,9 159,9 @@ JMP2r
OVR2 OVR2 .needles/mx LDZ2 .needles/my LDZ2 #00 draw-line
OVR2 OVR2 .needles/hx LDZ2 .needles/hy LDZ2 #00 draw-line
( middle )
- #0001 SUB2 .Screen/y DEO2
- #0001 SUB2 .Screen/x DEO2
;middle-icn .Screen/addr DEO2
+ #0001 SUB2 .Screen/y DEO2
+ #0001 SUB2 .Screen/x DEO2
[ LIT2 0a -Screen/sprite ] DEO
JMP2r
@@ 172,35 171,44 @@ JMP2r
[ LIT2 76 -Screen/auto ] DEO
.center/x LDZ2 #0020 SUB2 .Screen/x DEO2
.Screen/addr DEO2
- #00
+ #00 SWP SUB
&ver
[ LIT2 04 -Screen/sprite ] DEO
- INC GTHk ?&ver
- POP2
+ INC DUP ?&ver
+ POP
JMP2r
@draw-line ( x1* y1* x2* y2* color -- )
- ( load ) ,&color STR ,&y STR2 ,&x STR2 .line/y STZ2 .line/x STZ2
- ,&x LDR2 .line/x LDZ2 SUB2 abs2 .line/dx STZ2
- #0000 ,&y LDR2 .line/y LDZ2 SUB2 abs2 SUB2 .line/dy STZ2
- #ffff #00 .line/x LDZ2 ,&x LDR2 lts2 DUP2 ADD2 ADD2 ,&sx STR2
- #ffff #00 .line/y LDZ2 ,&y LDR2 lts2 DUP2 ADD2 ADD2 ,&sy STR2
- .line/dx LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
+ ( load )
+ ,&color STR
+ ,&y STR2
+ ,&x STR2
+ .line/y2 STZ2
+ .line/x2 STZ2
+
+ ,&x LDR2 .line/x2 LDZ2 SUB2 abs2 ,&dx STR2
+ #0000 ,&y LDR2 .line/y2 LDZ2 SUB2 abs2 SUB2 ,&dy STR2
+
+ #ffff #00 .line/x2 LDZ2 ,&x LDR2 lts2 DUP2 ADD2 ADD2 ,&sx STR2
+ #ffff #00 .line/y2 LDZ2 ,&y LDR2 lts2 DUP2 ADD2 ADD2 ,&sy STR2
+
+ [ LIT2 &dx $2 ] [ LIT2 &dy $2 ] ADD2 ,&e1 STR2
+
&loop
- .line/x LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2
- .line/y LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2
+ .line/x2 LDZ2 DUP2 .Screen/x DEO2 [ LIT2 &x $2 ] EQU2
+ .line/y2 LDZ2 DUP2 .Screen/y DEO2 [ LIT2 &y $2 ] EQU2
[ LIT2 &color $1 -Screen/pixel ] DEO
AND ?&end
- .line/e1 LDZ2 DUP2 ADD2 DUP2
- .line/dy LDZ2 lts2 ?&skipy
- .line/e1 LDZ2 .line/dy LDZ2 ADD2 .line/e1 STZ2
- .line/x LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x STZ2
+ [ LIT2 &e1 $2 ] DUP2 ADD2 DUP2
+ ,&dy LDR2 lts2 ?&skipy
+ ,&e1 LDR2 ,&dy LDR2 ADD2 ,&e1 STR2
+ .line/x2 LDZ2 [ LIT2 &sx $2 ] ADD2 .line/x2 STZ2
&skipy
- .line/dx LDZ2 gts2 ?&skipx
- .line/e1 LDZ2 .line/dx LDZ2 ADD2 .line/e1 STZ2
- .line/y LDZ2 [ LIT2 &sy $2 ] ADD2 .line/y STZ2
+ ,&dx LDR2 gts2 ?&skipx
+ ,&e1 LDR2 ,&dx LDR2 ADD2 ,&e1 STR2
+ .line/y2 LDZ2 [ LIT2 &sy $2 ] ADD2 .line/y2 STZ2
&skipx
!&loop
&end