little ANSI/uxn proof of concept
This commit is contained in:
parent
f1fec3c767
commit
21281ceead
|
@ -0,0 +1,66 @@
|
|||
( rainbow.tal )
|
||||
|
||||
%emit { #18 DEO }
|
||||
%rows { #0018 }
|
||||
%cols { #0050 }
|
||||
%mod { DIVk MUL SUB }
|
||||
%mod2 { DIV2k MUL2 SUB2 }
|
||||
|
||||
|0000
|
||||
|
||||
( pseudo-random number generator )
|
||||
@rng [ &x $2 &y $2 ]
|
||||
|
||||
( read in regular expressions )
|
||||
( and emit internal structures parsed )
|
||||
|0100
|
||||
;init-rng JSR2 ;draw #20 DEO2 BRK
|
||||
|
||||
( works for 0 <= n < 100 )
|
||||
@emit-decimal ( n^ -> )
|
||||
STHk #0a LTH ,&small JCN
|
||||
STHkr #0a DIV LIT '0 ADD emit
|
||||
&small STHr #0a mod LIT '0 ADD emit
|
||||
JMP2r
|
||||
|
||||
( move to random spot, choose random color, draw char )
|
||||
@random-pixel
|
||||
#5b1b emit emit ( esc [ )
|
||||
;random-short JSR2 rows mod2 NIP ;emit-decimal JSR2
|
||||
LIT '; emit
|
||||
;random-short JSR2 cols mod2 NIP ;emit-decimal JSR2
|
||||
LIT 'H emit
|
||||
|
||||
#5b1b emit emit ( esc [ )
|
||||
#3b31 emit emit ( 1 ; )
|
||||
;random-short JSR2 #000a mod2 NIP #1e ADD ;emit-decimal JSR2
|
||||
LIT 'm emit
|
||||
|
||||
LIT '# emit JMP2r
|
||||
|
||||
@draw ( -> )
|
||||
;random-pixel JSR2
|
||||
;random-pixel JSR2
|
||||
;random-pixel JSR2
|
||||
;random-pixel JSR2
|
||||
BRK
|
||||
|
||||
@init-rng ( -> )
|
||||
#00 #b5 DEI #003c MUL2
|
||||
#00 #b6 DEI ADD2
|
||||
#0001 ORA2 .rng/x STZ2
|
||||
|
||||
#00 #b3 DEI #0018 MUL2
|
||||
#00 #b4 DEI ADD2
|
||||
#0001 ORA2 .rng/y STZ2 JMP2r
|
||||
|
||||
@random-byte ( -> val^ )
|
||||
;random-short JSR2 POP JMP2r
|
||||
|
||||
@random-short ( -> val* )
|
||||
.rng/x LDZ2 DUP2 #50 SFT2 EOR2 ( tmp: x^[x<<5] )
|
||||
.rng/y LDZ2 DUP2 .rng/x STZ2 ( tmp y )
|
||||
DUP2 #01 SFT2 EOR2 ( tmp y^[y>>1] )
|
||||
SWP2 DUP2 #03 SFT2 EOR2 ( y^[y>>1] tmp^[tmp>>3] )
|
||||
EOR2 DUP2 .rng/y STZ2 ( y^[y>>1] ^ tmp^[tmp>>3] )
|
||||
JMP2r
|
Loading…
Reference in New Issue