From 6e50e4ce922ee3dda352124acc2e243f7a3b83d1 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sun, 14 Jan 2024 16:06:24 -0800 Subject: [PATCH] (bifurcan) Modernize style --- projects/examples/demos/bifurcan.tal | 191 +++++++++++---------------- 1 file changed, 74 insertions(+), 117 deletions(-) diff --git a/projects/examples/demos/bifurcan.tal b/projects/examples/demos/bifurcan.tal index 08a99c6..8e75d03 100644 --- a/projects/examples/demos/bifurcan.tal +++ b/projects/examples/demos/bifurcan.tal @@ -1,162 +1,119 @@ ( Bifurcan ) -|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] -|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ] -|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ] -|c0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ] -|80 @Controller [ &vector $2 &button $1 &key $1 ] +|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2 +|20 @Screen &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 +|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &wheel $1 +|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 +|80 @Controller &vector $2 &button $1 &key $1 |0000 -@last $1 -@style $1 -@pointer [ &x $2 &y $2 ] -@center [ &x $2 &y $2 ] + @last $1 + @style $1 + @pointer &x $2 &y $2 + @center &x $2 &y $2 -|0100 ( -> ) +|0100 - ( theme ) - #0f3a .System/r DEO2 - #0fda .System/g DEO2 +@on-reset ( -> ) + ( | theme ) + #0f3a .System/r DEO2 + #0fda .System/g DEO2 #0faa .System/b DEO2 - ( vectors ) + ( | vectors ) ;on-frame .Screen/vector DEO2 ;on-mouse .Mouse/vector DEO2 ;on-button .Controller/vector DEO2 - ( find center ) + ( | find center ) .Screen/width DEI2 #01 SFT2 .center/x STZ2 .Screen/height DEI2 #01 SFT2 .center/y STZ2 - ( background ) - ;tiles ;cover-pattern JSR2 - ;redraw JSR2 - -BRK + ( | background ) + ;tiles cover-pattern redraw BRK @on-frame ( -> ) - - ( only draw once per second ) - .DateTime/second DEI .last LDZ NEQ JMP [ BRK ] - .DateTime/second DEI .last STZ - ;redraw JSR2 - -BRK + ( only draw once per second ) .DateTime/second DEI .last LDZ NEQ [ JMP BRK ] .DateTime/second DEI .last STZ + redraw BRK @on-mouse ( -> ) - - ;draw-cursor JSR2 - - .Mouse/state DEI #00 NEQ JMP BRK - ,select JSR - -BRK + draw-cursor .Mouse/state DEI #00 NEQ [ JMP BRK ] ,select JSR BRK @on-button ( -> ) - - .Controller/button DEI #00 NEQ JMP BRK - ,select JSR - -BRK + .Controller/button DEI #00 NEQ JMP + BRK ,select JSR BRK @select ( -- ) - - ( incr ) .style LDZ INC #03 ;mod JSR2 .style STZ - ( bg ) ;tiles [ #00 .style LDZ #40 SFT ] ADD2 ;cover-pattern JSR2 - ( fg ) ;redraw JSR2 - ( release ) #0000 .Mouse/state DEO .Controller/button DEO - -JMP2r + ( incr ) .style LDZ INC #03 mod .style STZ + ( bg ) ;tiles [ #00 .style LDZ #40 SFT ] ADD2 cover-pattern + ( fg ) redraw + ( release ) #0000 .Mouse/state DEO + .Controller/button DEO + JMP2r @redraw ( -- ) - - ( hrs ) - [ .center/x LDZ2 #0018 SUB2 ] - [ .center/y LDZ2 #0048 SUB2 ] - .DateTime/hour DEI #0a DIV ;draw-number JSR2 - [ .center/x LDZ2 #0008 ADD2 ] - [ .center/y LDZ2 #0048 SUB2 ] - .DateTime/hour DEI #0a ;mod JSR2 ;draw-number JSR2 - ( min ) - [ .center/x LDZ2 #0018 SUB2 ] - [ .center/y LDZ2 #0018 SUB2 ] - .DateTime/minute DEI #0a DIV ;draw-number JSR2 - [ .center/x LDZ2 #0008 ADD2 ] - [ .center/y LDZ2 #0018 SUB2 ] - .DateTime/minute DEI #0a ;mod JSR2 ;draw-number JSR2 - ( sec ) - [ .center/x LDZ2 #0018 SUB2 ] - [ .center/y LDZ2 #0018 ADD2 ] - .DateTime/second DEI #0a DIV - ;draw-number JSR2 - [ .center/x LDZ2 #0008 ADD2 ] - [ .center/y LDZ2 #0018 ADD2 ] - .DateTime/second DEI #0a ;mod JSR2 + ( | hrs ) + [ .center/x LDZ2 #0018 SUB2 ] [ .center/y LDZ2 #0048 SUB2 ] .DateTime/hour DEI #0a DIV ;draw-number JSR2 [ .center/x LDZ2 #0008 ADD2 ] [ .center/y LDZ2 #0048 SUB2 ] .DateTime/hour DEI #0a ;mod JSR2 ;draw-number JSR2 + ( | min ) + [ .center/x LDZ2 #0018 SUB2 ] [ .center/y LDZ2 #0018 SUB2 ] .DateTime/minute DEI #0a DIV ;draw-number JSR2 [ .center/x LDZ2 #0008 ADD2 ] [ .center/y LDZ2 #0018 SUB2 ] .DateTime/minute DEI #0a ;mod JSR2 ;draw-number JSR2 + ( | sec ) + [ .center/x LDZ2 #0018 SUB2 ] [ .center/y LDZ2 #0018 ADD2 ] .DateTime/second DEI #0a DIV ;draw-number JSR2 [ .center/x LDZ2 #0008 ADD2 ] [ .center/y LDZ2 #0018 ADD2 ] .DateTime/second DEI #0a ;mod JSR2 @draw-number ( x* y* n -- ) - - ,&digit STR ,&y STR2 ,&x STR2 - #0f00 - &loop - ( save-x ) DUP #03 ;mod JSR2 #00 SWP #30 SFT2 [ LIT2 &x $2 ] ADD2 .Screen/x DEO2 + ,&digit STR + ,&y STR2 + ,&x STR2 + #0f00 + &loop ( -- ) + ( save-x ) DUP #03 mod #00 SWP #30 SFT2 [ LIT2 &x $2 ] ADD2 .Screen/x DEO2 ( save-y ) DUP #03 DIV #00 SWP #30 SFT2 [ LIT2 &y $2 ] ADD2 .Screen/y DEO2 - ( get digit* ) DUP [ LIT &digit $1 ] DUP ADD #00 SWP ;digits ADD2 LDA2 - ( get bit ) ROT #0e SWP SUB SFT2 #0001 AND2 - ( set tile ) #30 SFT2 ;tiles ADD2 - ( set style ) .style LDZ #40 SFT #00 SWP ADD2 - .Screen/addr DEO2 + ( get digit* ) DUP [ LIT &digit $1 ] DUP ADD #00 SWP ;digits ADD2 LDA2 + ( get bit ) ROT #0e SWP SUB SFT2 #0001 AND2 + ( set tile ) #30 SFT2 ;tiles ADD2 + ( set style ) .style LDZ #40 SFT #00 SWP ADD2 .Screen/addr DEO2 ( draw ) #01 .Screen/sprite DEO INC GTHk ,&loop JCN - POP2 - -JMP2r + POP2 JMP2r @cover-pattern ( addr* -- ) - .Screen/addr DEO2 .Screen/height DEI2 #03 SFT2 NIP ,&h STR .Screen/width DEI2 #03 SFT2 NIP ,&w STR [ LIT &h $1 ] #00 - &ver + &ver ( -- ) #00 OVR #30 SFT2 .Screen/y DEO2 [ LIT &w $1 ] #00 - &hor - #00 OVR #30 SFT2 .Screen/x DEO2 - #01 .Screen/sprite DEO - INC GTHk ,&hor JCN - POP2 - INC GTHk ,&ver JCN - POP2 - -JMP2r + &hor ( -- ) + #00 OVR #30 SFT2 .Screen/x DEO2 + #01 .Screen/sprite DEO + INC GTHk ,&hor JCN + POP2 INC GTHk ,&ver JCN + POP2 JMP2r @draw-cursor ( -- ) - - ( clear last cursor ) - ;cursor .Screen/addr DEO2 - .pointer/x LDZ2 .Screen/x DEO2 - .pointer/y LDZ2 .Screen/y DEO2 + ( | clear last cursor ) + ;cursor .Screen/addr DEO2 + .pointer/x LDZ2 .Screen/x DEO2 + .pointer/y LDZ2 .Screen/y DEO2 #40 .Screen/sprite DEO - ( record pointer positions ) - .Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 - .Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 - ( colorize on state ) + ( | record pointer positions ) + .Mouse/x DEI2 DUP2 .pointer/x STZ2 + .Screen/x DEO2 + .Mouse/y DEI2 DUP2 .pointer/y STZ2 + .Screen/y DEO2 + ( | colorize on state ) #41 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/sprite DEO + JMP2r -JMP2r +@mod ( -- ) + DIVk MUL SUB JMP2r -@mod DIVk MUL SUB JMP2r +@cursor [ 80c0 e0f0 f8e0 1000 ] -@cursor - 80c0 e0f0 f8e0 1000 +@digits [ + 7b6f 2492 73e7 73cf 5bc9 79cf 49ef 7249 + 7bef 7bc9 ] -@digits - 7b6f 2492 73e7 73cf - 5bc9 79cf 49ef 7249 - 7bef 7bc9 +@tiles [ + 0102 0408 1020 4080 8040 2010 0804 0201 + 0718 2040 4080 8080 0101 0102 0204 18e0 + 0808 0810 e304 0808 0808 0804 e310 0808 ] -@tiles - 0102 0408 1020 4080 - 8040 2010 0804 0201 - 0718 2040 4080 8080 - 0101 0102 0204 18e0 - 0808 0810 e304 0808 - 0808 0804 e310 0808