Removed old examples
This commit is contained in:
parent
c5d8ba4e3a
commit
259b9dcf56
|
@ -1,102 +0,0 @@
|
|||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ]
|
||||
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ]
|
||||
|a0 @File [ &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 ]
|
||||
|
||||
( vectors )
|
||||
|
||||
|0100 @reset
|
||||
(
|
||||
Set the log level for helping to debug stuff.
|
||||
Its value is the bitwise OR of all the following output types:
|
||||
#01 prints the number of lines in the source code,
|
||||
#04 dumps all defined labels at end, and
|
||||
#08 prints the heap usage.
|
||||
)
|
||||
#0d ;asma/log-level STA
|
||||
|
||||
;asma-heap ;heap STA2
|
||||
|
||||
(
|
||||
Assemble the source code into an output ROM file.
|
||||
|
||||
If all you want is to use asma.tal to assemble files, insert a BRK
|
||||
after this statement.
|
||||
)
|
||||
;&source-file ;&dest-file ;asma-assemble-file JSR2
|
||||
|
||||
(
|
||||
If an error has occurred, BRK here, otherwise continue. (The error
|
||||
message will already have been printed to the Console in
|
||||
asma-assemble-file.)
|
||||
)
|
||||
;asma/error LDA2 #0000 EQU2 JMP BRK
|
||||
|
||||
(
|
||||
Load the output ROM over the currently running program, almost as if
|
||||
we loaded the ROM with uxnemu directly!
|
||||
|
||||
It's not a totally pristine environment, as File/read doesn't zero out
|
||||
memory beyond the end of the file. So if the assembled program assumes
|
||||
that all memory above it is zero, it may misbehave.
|
||||
|
||||
Asma itself doesn't use the zero page, but this example code writes a
|
||||
DEO2 instruction to 0x00ff. In order to execute File/read and have the
|
||||
CPU continue at memory location 0x0100, we write the final DEO2
|
||||
instruction there and jump there as our final act.
|
||||
|
||||
Just in case the assembled code is zero-length (which can occur when
|
||||
assembling an empty source file), we write a BRK to the reset vector so
|
||||
that will prevent an infinite loop.
|
||||
)
|
||||
;&dest-file .File/name DEO2
|
||||
#ff00 .File/length DEO2
|
||||
#0100 .File/read
|
||||
LIT DEO2 #00ff STA
|
||||
LIT BRK #0100 STA
|
||||
#00ff JMP2
|
||||
|
||||
&source-file
|
||||
"projects/examples/demos/piano.tal 00
|
||||
&dest-file
|
||||
"bin/asma-boot.rom 00
|
||||
|
||||
~projects/library/asma.tal
|
||||
|
||||
(
|
||||
Heap, a large temporary area for keeping track of labels. More complex
|
||||
programs need more of this space. If there's insufficient space then the
|
||||
assembly process will fail, but having extra space above what the most
|
||||
complex program needs provides no benefit.
|
||||
|
||||
This heap, and the buffers below, are free to be used to hold temporary
|
||||
data between assembly runs, and do not need to be initialized with any
|
||||
particular contents to use the assembler.
|
||||
)
|
||||
|
||||
@asma-heap
|
||||
|
||||
|e000 &end
|
||||
|
||||
(
|
||||
Buffer for use with loading source code.
|
||||
The minimum size is the length of the longest token plus one, which is
|
||||
0x21 to keep the same capability of the C assembler.
|
||||
Larger sizes are more efficient, provided there is enough
|
||||
heap space to keep track of all the labels.
|
||||
)
|
||||
|
||||
@asma-read-buffer
|
||||
|
||||
|f800 &end
|
||||
|
||||
(
|
||||
Buffer for use with writing output.
|
||||
The minimum size is 1, and larger sizes are more efficient.
|
||||
)
|
||||
|
||||
@asma-write-buffer
|
||||
|
||||
|ffff &end
|
||||
|
|
@ -1,543 +0,0 @@
|
|||
( darena.tal )
|
||||
( an open-ended game of rocks and sand )
|
||||
( contributed by and cc0 sejo 12021 )
|
||||
|
||||
( parameters )
|
||||
%nrocks { #1f }
|
||||
%nrocks-1 { #1e }
|
||||
%nrocks_mask { #1f }
|
||||
%minposx { #0f }
|
||||
%minposy { #0f }
|
||||
%maxposx { #f1 }
|
||||
%maxposy { #f1 }
|
||||
%anispeedmask_normal { #03 }
|
||||
%anispeedmask_slow { #07 }
|
||||
|
||||
%c_color_normal { #43 }
|
||||
%c_color_flipx { #53 }
|
||||
%index_norock { #ff }
|
||||
|
||||
( output macros )
|
||||
%out_screen_x { LDA #00 SWP .Screen/x DEO2 } ( ;addr )
|
||||
%out_screen_y { LDA #00 SWP .Screen/y DEO2 } ( ;addr )
|
||||
|
||||
( helper macros )
|
||||
%get_bit_n { SFT #01 AND }
|
||||
%get_nibble_h { #04 SFT #0f AND }
|
||||
%get_nibble_l { #0f AND }
|
||||
|
||||
%is_bit_n_set { get_bit_n #01 EQU }
|
||||
|
||||
%set_animate { #01 ;c_state LDA ORA ;c_state STA }
|
||||
%rst_animate { #00 ;c_state STA }
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &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 ]
|
||||
|80 @Controller [ &vector $2 &button $1 &key $1 ]
|
||||
|
||||
( variables )
|
||||
|
||||
|0000
|
||||
|
||||
@c_pos [ &x $1 &y $1 ] ( character position )
|
||||
@c_speed [ &x $1 &y $1 ] ( character speed )
|
||||
@c_color [ $1 ] ( character color )
|
||||
@c_sprite [ $2 ] ( character sprite addr )
|
||||
@c_state [ $1 ] ( high_nibble: animation pointer, bit0: is_animated )
|
||||
|
||||
@f_count [ $1 ] ( frame counter )
|
||||
@ani_speedmask [ $1 ] ( animation speed mask )
|
||||
|
||||
@r_speed_x [ $f ]
|
||||
@r_speed_y [ $f ]
|
||||
|
||||
@tog [ &x $1 &y $1 &state $1 ] ( toggle station state )
|
||||
|
||||
( program )
|
||||
|
||||
|0100 @reset ( -> )
|
||||
#f396 .System/r DEO2
|
||||
#e263 .System/g DEO2
|
||||
#9030 .System/b DEO2
|
||||
|
||||
;on_frame .Screen/vector DEO2
|
||||
|
||||
( init character )
|
||||
#50 ;c_pos/x STA
|
||||
#10 ;c_pos/y STA
|
||||
#00 ;c_speed/x STA
|
||||
#00 ;c_speed/y STA
|
||||
c_color_normal ;c_color STA
|
||||
;s_monitx_stepfront0 ;c_sprite STA2
|
||||
rst_animate
|
||||
|
||||
anispeedmask_normal ;ani_speedmask STA
|
||||
|
||||
( init toggler )
|
||||
#27 ;tog/x STA
|
||||
#27 ;tog/y STA
|
||||
#00 ;tog/state STA
|
||||
|
||||
|
||||
( init background )
|
||||
;init_bg JSR2
|
||||
BRK
|
||||
|
||||
|
||||
@on_frame ( -> )
|
||||
;f_count LDA INC DUP ;f_count STA ( increase frame counter )
|
||||
;ani_speedmask LDA ( mask with animation speed mask )
|
||||
AND #00 EQU ,update_frame JCN ( jump to update if it's time )
|
||||
BRK
|
||||
|
||||
@update_frame
|
||||
( check keyboard )
|
||||
;check_keys JSR2
|
||||
|
||||
( animate character sprite )
|
||||
;animate_c JSR2
|
||||
|
||||
( clear sprites )
|
||||
;clear JSR2
|
||||
|
||||
( update character vars )
|
||||
;update_c/run JSR2
|
||||
|
||||
( update rocks + stand )
|
||||
;update_r/run JSR2
|
||||
|
||||
( draw )
|
||||
;draw JSR2
|
||||
|
||||
BRK
|
||||
|
||||
@clear
|
||||
( clear rocks )
|
||||
;s_clear .Screen/addr DEO2
|
||||
|
||||
nrocks #00
|
||||
&rocks_loop
|
||||
DUP ( get rocks_x[i] )
|
||||
;rocks_x ROT #00 SWP ADD2 out_screen_x
|
||||
|
||||
DUP ( get rocks_y[i] )
|
||||
;rocks_y ROT #00 SWP ADD2 out_screen_y
|
||||
|
||||
#40 .Screen/sprite DEO
|
||||
|
||||
INC
|
||||
DUP2
|
||||
NEQ ,&rocks_loop JCN
|
||||
POP2
|
||||
|
||||
( clear character )
|
||||
;clear_c JSR2
|
||||
JMP2r
|
||||
|
||||
@draw
|
||||
( draw toggler )
|
||||
|
||||
;tog/x out_screen_x
|
||||
;tog/x out_screen_y
|
||||
;s_stand .Screen/addr DEO2
|
||||
#03 .Screen/sprite DEO
|
||||
|
||||
( draw rocks )
|
||||
;s_bola .Screen/addr DEO2
|
||||
|
||||
nrocks #00
|
||||
|
||||
&rocks_loop
|
||||
DUP ( get rocks_x[i] )
|
||||
;rocks_x ROT #00 SWP ADD2 out_screen_x
|
||||
|
||||
DUP ( get rocks_y[i] )
|
||||
;rocks_y ROT #00 SWP ADD2 out_screen_y
|
||||
|
||||
DUP ( get color )
|
||||
;r_color ROT #00 SWP ADD2 LDA #41 ADD .Screen/sprite DEO
|
||||
|
||||
INC
|
||||
|
||||
DUP2
|
||||
NEQ ,&rocks_loop JCN
|
||||
POP2
|
||||
|
||||
( draw character )
|
||||
;draw_c JSR2
|
||||
JMP2r
|
||||
|
||||
@check_keys
|
||||
#00 ;c_speed/x STA
|
||||
#00 ;c_speed/y STA
|
||||
|
||||
.Controller/button DEI #07 is_bit_n_set ,&der JCN
|
||||
.Controller/button DEI #06 is_bit_n_set ,&izq JCN
|
||||
.Controller/button DEI #05 is_bit_n_set ,&aba JCN
|
||||
.Controller/button DEI #04 is_bit_n_set ,&arr JCN
|
||||
|
||||
rst_animate
|
||||
|
||||
JMP2r
|
||||
|
||||
&der
|
||||
#01 ;c_speed/x STA
|
||||
set_animate
|
||||
c_color_normal ;c_color STA
|
||||
;s_monitx_stepside0 ;c_sprite STA2
|
||||
JMP2r
|
||||
|
||||
&izq
|
||||
#ff ;c_speed/x STA
|
||||
set_animate
|
||||
c_color_flipx ;c_color STA
|
||||
;s_monitx_stepside0 ;c_sprite STA2
|
||||
JMP2r
|
||||
|
||||
&aba
|
||||
#01 ;c_speed/y STA
|
||||
set_animate
|
||||
c_color_normal ;c_color STA
|
||||
;s_monitx_stepfront0 ;c_sprite STA2
|
||||
JMP2r
|
||||
|
||||
&arr
|
||||
#ff ;c_speed/y STA
|
||||
set_animate
|
||||
c_color_normal ;c_color STA
|
||||
;s_monitx_stepback0 ;c_sprite STA2
|
||||
JMP2r
|
||||
|
||||
&end
|
||||
JMP2r
|
||||
|
||||
( sub-routines )
|
||||
|
||||
( in: sourcex, source y, index, rangex, rangey )
|
||||
( puts in the stack the index of rock collisioned with )
|
||||
@collision_rocks
|
||||
&range_y $1
|
||||
&range_x $1
|
||||
&src_i $1
|
||||
&src_x $1
|
||||
&src_y $1
|
||||
|
||||
&rock_x $1
|
||||
&rock_y $1
|
||||
|
||||
&run
|
||||
,&range_y STR
|
||||
,&range_x STR
|
||||
,&src_i STR
|
||||
,&src_y STR
|
||||
,&src_x STR
|
||||
|
||||
( check collision with rocks )
|
||||
( nrocks #00 )
|
||||
,&src_i LDR nrocks_mask AND DUP INC nrocks_mask AND
|
||||
|
||||
&rocks_loop
|
||||
DUP ( get rocks_x[i] )
|
||||
;rocks_x ROT #00 SWP ADD2 LDA ,&rock_x STR
|
||||
|
||||
DUP ( get rocks_y[i] )
|
||||
;rocks_y ROT #00 SWP ADD2 LDA ,&rock_y STR
|
||||
|
||||
,&src_x LDR ,&rock_x LDR ,&range_x LDR SUB GTH ( if sx > rx - 8 )
|
||||
,&src_x LDR ,&rock_x LDR ,&range_x LDR ADD LTH ( if sx < rx + 8 )
|
||||
,&src_y LDR ,&rock_y LDR ,&range_y LDR SUB GTH ( if sy > ry - 8 )
|
||||
,&src_y LDR ,&rock_y LDR ,&range_y LDR ADD LTH ( if sy < ry + 8 )
|
||||
ADD ADD ADD #04 EQU ,&found JCN
|
||||
|
||||
INC nrocks_mask AND
|
||||
DUP2
|
||||
NEQ ,&rocks_loop JCN
|
||||
POP2
|
||||
#ff
|
||||
JMP2r
|
||||
&found
|
||||
NIP ( remove loop limit )
|
||||
DUP ;&src_i LDA NEQ ,&end JCN ( check if result is the same as index )
|
||||
POP #ff
|
||||
JMP2r
|
||||
|
||||
&end
|
||||
|
||||
JMP2r
|
||||
|
||||
@update_c ( update character position )
|
||||
&new_x $1
|
||||
&new_y $1
|
||||
|
||||
&rock_i $1
|
||||
&rock_x $1
|
||||
&rock_y $1
|
||||
|
||||
|
||||
&run
|
||||
;c_speed/x LDA ;c_pos/x LDA ADD
|
||||
,&new_x STR
|
||||
;c_speed/y LDA ;c_pos/y LDA ADD
|
||||
,&new_y STR
|
||||
|
||||
anispeedmask_normal ;ani_speedmask STA
|
||||
|
||||
&check_x
|
||||
( check collision with borders )
|
||||
,&new_x LDR minposx EQU ;&noup_x JCN2
|
||||
,&new_x LDR maxposx EQU ;&noup_x JCN2
|
||||
|
||||
|
||||
( check collision with rocks )
|
||||
,&new_x LDR ,&new_y LDR index_norock #09 #06
|
||||
;collision_rocks/run JSR2
|
||||
|
||||
( if it is colliding with rock, check further )
|
||||
DUP #ff NEQ ,&check_x_collision JCN
|
||||
POP
|
||||
,&update_x JMP
|
||||
|
||||
&check_x_collision
|
||||
( DUP DEBUG )
|
||||
( slow down and save rock index )
|
||||
anispeedmask_slow ;ani_speedmask STA
|
||||
,&rock_i STR
|
||||
|
||||
( check if rock collides with others )
|
||||
;rocks_x #00 ,&rock_i LDR ADD2 LDA ,&rock_x STR
|
||||
;rocks_y #00 ,&rock_i LDR ADD2 LDA ,&rock_y STR
|
||||
|
||||
,&rock_x LDR ,&rock_y LDR ,&rock_i LDR #09 #06
|
||||
;collision_rocks/run JSR2
|
||||
|
||||
( DUP DEBUG )
|
||||
|
||||
( if it is colliding, then skip adding x )
|
||||
DUP #ff NEQ ,&check_y JCN
|
||||
POP
|
||||
|
||||
|
||||
( if not, check for borders )
|
||||
;&rock_x LDA minposx EQU ;&noup_x JCN2
|
||||
;&rock_x LDA maxposx EQU ;&noup_x JCN2
|
||||
|
||||
( move rock with same speed as c )
|
||||
;&rock_x LDA ;c_speed/x LDA ADD
|
||||
;rocks_x #00 ;&rock_i LDA ADD2
|
||||
STA
|
||||
|
||||
|
||||
&update_x
|
||||
;&new_x LDA ;c_pos/x STA
|
||||
|
||||
,&check_y JMP
|
||||
|
||||
&noup_x
|
||||
|
||||
&check_y
|
||||
( check collision with borders )
|
||||
;&new_y LDA minposy EQU ;&noup_y JCN2
|
||||
;&new_y LDA maxposy EQU ;&noup_y JCN2
|
||||
|
||||
( check collision with rocks )
|
||||
;&new_x LDA ;&new_y LDA index_norock #06 #09
|
||||
;collision_rocks/run JSR2
|
||||
|
||||
( if it is colliding with rock, check further )
|
||||
DUP #ff NEQ ,&check_y_collision JCN
|
||||
POP
|
||||
,&update_y JMP
|
||||
|
||||
&check_y_collision
|
||||
( DUP DEBUG )
|
||||
anispeedmask_slow ;ani_speedmask STA
|
||||
;&rock_i STA
|
||||
|
||||
( check if rock collides with others )
|
||||
;rocks_x #00 ;&rock_i LDA ADD2 LDA ;&rock_x STA
|
||||
;rocks_y #00 ;&rock_i LDA ADD2 LDA ;&rock_y STA
|
||||
|
||||
;&rock_x LDA ;&rock_y LDA ;&rock_i LDA #06 #09
|
||||
;collision_rocks/run JSR2
|
||||
|
||||
( DUP DEBUG )
|
||||
|
||||
( if it is colliding, then skip adding y )
|
||||
DUP #ff NEQ ,&noup_y JCN
|
||||
POP
|
||||
|
||||
( if not, check for borders )
|
||||
;&rock_y LDA minposx EQU ;&noup_y JCN2
|
||||
;&rock_y LDA maxposx EQU ;&noup_y JCN2
|
||||
|
||||
( if not colliding, then move rock with same speed as c )
|
||||
;&rock_y LDA ;c_speed/y LDA ADD
|
||||
;rocks_y #00 ;&rock_i LDA ADD2
|
||||
STA
|
||||
|
||||
|
||||
&update_y
|
||||
;&new_y LDA ;c_pos/y STA
|
||||
JMP2r
|
||||
|
||||
&noup_y
|
||||
JMP2r
|
||||
|
||||
@update_r
|
||||
&rock_i $1
|
||||
|
||||
&run
|
||||
|
||||
( check collision with rocks )
|
||||
;tog/x LDA ;tog/y LDA index_norock #02 #02
|
||||
;collision_rocks/run JSR2
|
||||
|
||||
( if it is colliding with rock, check if it needs to change state )
|
||||
DUP #ff NEQ ,&change_state JCN
|
||||
|
||||
( DUP DEBUG )
|
||||
|
||||
( if there's no collision, reset toggler )
|
||||
POP
|
||||
#00 ;tog/state STA
|
||||
JMP2r
|
||||
|
||||
&change_state
|
||||
( DUP DEBUG )
|
||||
,&rock_i STR
|
||||
;tog/state LDA ,&done JCN ( don't toggle if state is active )
|
||||
|
||||
;r_color #00 ,&rock_i LDR ADD2 DUP2 STH2
|
||||
LDA #01 EOR STH2r STA
|
||||
#01 ;tog/state STA
|
||||
&done
|
||||
|
||||
JMP2r
|
||||
|
||||
@animate_c
|
||||
( is bit0 -animate- on? )
|
||||
;c_state LDA DUP #00 get_bit_n #01 NEQ ,&s_no_animate JCN
|
||||
|
||||
( increment and save animation pointer )
|
||||
&s_animate
|
||||
DUP
|
||||
get_nibble_h INC #03 AND #40 SFT
|
||||
SWP get_nibble_l ORA
|
||||
;c_state STA
|
||||
JMP2r
|
||||
|
||||
&s_no_animate
|
||||
get_nibble_h #0f AND ;c_state STA
|
||||
JMP2r
|
||||
|
||||
@draw_c ( draw character )
|
||||
#00 ;c_state LDA get_nibble_h #30 SFT
|
||||
;c_sprite LDA2 ADD2 .Screen/addr DEO2
|
||||
;c_pos/x out_screen_x
|
||||
;c_pos/y out_screen_y
|
||||
;c_color LDA .Screen/sprite DEO
|
||||
JMP2r
|
||||
|
||||
@clear_c ( clear character )
|
||||
;s_clear .Screen/addr DEO2
|
||||
;c_pos/x out_screen_x
|
||||
;c_pos/y out_screen_y
|
||||
#40 .Screen/sprite DEO
|
||||
JMP2r
|
||||
|
||||
@init_bg
|
||||
( init bg )
|
||||
;s_border .Screen/addr DEO2
|
||||
|
||||
.Screen/height DEI2 #0000 STH2
|
||||
&vertical0loop
|
||||
DUP2
|
||||
STH2r
|
||||
DUP2 .Screen/y DEO2
|
||||
|
||||
|
||||
.Screen/width DEI2 #0000 STH2
|
||||
&horizontal0loop
|
||||
DUP2
|
||||
STH2r
|
||||
DUP2 .Screen/x DEO2
|
||||
|
||||
#03 .Screen/sprite DEO
|
||||
|
||||
#0008 ADD2 DUP2 STH2
|
||||
GTH2 ,&horizontal0loop JCN
|
||||
|
||||
STH2r POP2 POP2
|
||||
|
||||
|
||||
#0008 ADD2 DUP2 STH2
|
||||
GTH2 ,&vertical0loop JCN
|
||||
STH2r
|
||||
POP2 POP2
|
||||
|
||||
( arena )
|
||||
|
||||
;s_clear .Screen/addr DEO2
|
||||
|
||||
#00 maxposy #00 minposy STH2
|
||||
&vertical0loop_clear
|
||||
DUP2
|
||||
STH2r
|
||||
DUP2 .Screen/y DEO2
|
||||
|
||||
|
||||
#00 maxposx #00 minposx STH2
|
||||
&horizontal0loop_clear
|
||||
DUP2
|
||||
STH2r
|
||||
DUP2 .Screen/x DEO2
|
||||
|
||||
#00 .Screen/sprite DEO
|
||||
|
||||
#0008 ADD2 DUP2 STH2
|
||||
GTH2 ,&horizontal0loop_clear JCN
|
||||
|
||||
STH2r POP2 POP2
|
||||
|
||||
#0008 ADD2 DUP2 STH2 GTH2 ,&vertical0loop_clear JCN
|
||||
STH2r
|
||||
POP2 POP2
|
||||
|
||||
JMP2r
|
||||
|
||||
( rocks )
|
||||
@rocks_x [ 25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc a5
|
||||
e5 dd a2 20 b7 9b 38 e8 33 43 63 b7 aa cf bc ]
|
||||
@rocks_y [ 60 48 34 56 23 65 65 65 ba e9 24 22 72 91 22 c5
|
||||
25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc ]
|
||||
@r_color [ 00 01 01 00 00 00 01 01 01 01 00 00 01 01 00 00
|
||||
01 00 01 00 00 01 00 01 01 01 01 01 00 00 00 ]
|
||||
|
||||
( sprites )
|
||||
|
||||
@s_clear [ 0000 0000 0000 0000 ]
|
||||
@s_border [ 3288 7e83 780d e013 ]
|
||||
@s_bola [ 3c4e 9ffd f962 3c00 ]
|
||||
@s_stand [ 0000 0000 0024 7eff ]
|
||||
@s_stand_original [ 0000 0000 0000 3c7e ]
|
||||
|
||||
@s_monitx [ 3c7e 5a7f 1b3c 5a18 ]
|
||||
@s_monitx_back [ 3c7e 7efe d83c 5a18 ]
|
||||
|
||||
@s_monitx_stepfront0 [ 3c7e 5a7f 1b3c 5a18 ]
|
||||
@s_monitx_stepfront1 [ 3c7e 5a7f 1b3c 5a10 ]
|
||||
@s_monitx_stepfront2 [ 3c7e 5a7f 1b3c 5a18 ]
|
||||
@s_monitx_stepfront3 [ 3c7e 5a7f 1b3c 5a08 ]
|
||||
|
||||
@s_monitx_stepback0 [ 3c7e 7efe d83c 5a18 ]
|
||||
@s_monitx_stepback1 [ 3c7e 7efe d83c 5a10 ]
|
||||
@s_monitx_stepback2 [ 3c7e 7efe d83c 5a18 ]
|
||||
@s_monitx_stepback3 [ 3c7e 7efe d83c 5a08 ]
|
||||
|
||||
@s_monitx_stepside0 [ 1c3c 7afc d81c 1818 ]
|
||||
@s_monitx_stepside1 [ 1c3c 7afc d81c 1828 ]
|
||||
@s_monitx_stepside2 [ 1c3c 7afc d81c 3810 ]
|
||||
@s_monitx_stepside3 [ 1c3c 7afc d81c 1814 ]
|
||||
|
|
@ -1,528 +0,0 @@
|
|||
( art by @ritualdust )
|
||||
|
||||
%MOUSE { #82 }
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ]
|
||||
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ]
|
||||
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|
||||
|30 @Audio0 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ]
|
||||
|40 @Audio1 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ]
|
||||
|50 @Audio2 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ]
|
||||
|60 @Audio3 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ]
|
||||
|80 @Controller [ &vector $2 &button $1 &key $1 ]
|
||||
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ]
|
||||
|a0 @File [ &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 ]
|
||||
|c0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ]
|
||||
|
||||
|
||||
|0000
|
||||
@room
|
||||
&x $2 &y $2
|
||||
@player
|
||||
&x $1 &y $1 &d $1
|
||||
|
||||
|0100
|
||||
|
||||
( theme )
|
||||
#067f .System/r DEO2
|
||||
#036f .System/g DEO2
|
||||
#003f .System/b DEO2
|
||||
|
||||
.Screen/width DEI2 #01 SFT2 #0040 SUB2 .room/x STZ2
|
||||
.Screen/height DEI2 #01 SFT2 #0040 SUB2 .room/y STZ2
|
||||
|
||||
( vectors )
|
||||
;on-frame .Screen/vector DEO2
|
||||
;on-button .Controller/vector DEO2
|
||||
|
||||
;entrance ;draw-dungeon JSR2
|
||||
|
||||
#05 .player/x STZ
|
||||
#06 .player/y STZ
|
||||
|
||||
MOUSE ;draw-mouse JSR2
|
||||
|
||||
BRK
|
||||
|
||||
@on-button ( -> )
|
||||
|
||||
.Controller/button DEI
|
||||
DUP #00 NEQ ,&no-null JCN
|
||||
POP BRK
|
||||
&no-null
|
||||
DUP #10 NEQ ,&no-up JCN
|
||||
#00 .player/d STZ
|
||||
#00 ;draw-mouse JSR2
|
||||
.player/y LDZk #01 SUB SWP STZ
|
||||
MOUSE ;draw-mouse JSR2
|
||||
&no-up
|
||||
DUP #20 NEQ ,&no-down JCN
|
||||
#01 .player/d STZ
|
||||
#00 ;draw-mouse JSR2
|
||||
.player/y LDZk INC SWP STZ
|
||||
MOUSE ;draw-mouse JSR2
|
||||
&no-down
|
||||
DUP #40 NEQ ,&no-left JCN
|
||||
#02 .player/d STZ
|
||||
#00 ;draw-mouse JSR2
|
||||
.player/x LDZk #01 SUB SWP STZ
|
||||
MOUSE ;draw-mouse JSR2
|
||||
&no-left
|
||||
DUP #80 NEQ ,&no-right JCN
|
||||
#03 .player/d STZ
|
||||
#00 ;draw-mouse JSR2
|
||||
.player/x LDZk INC SWP STZ
|
||||
MOUSE ;draw-mouse JSR2
|
||||
&no-right
|
||||
POP
|
||||
|
||||
BRK
|
||||
|
||||
@on-frame ( -> )
|
||||
|
||||
|
||||
|
||||
BRK
|
||||
|
||||
@draw-mouse ( color -- )
|
||||
|
||||
;spritesheet #29 .player/d LDZ ADD #0004 SFT2 ADD2 .Screen/addr DEO2
|
||||
.player/x LDZ #0005 SFT2 .room/x LDZ2 ADD2 .Screen/x DEO2
|
||||
.player/y LDZ #0005 SFT2 .room/y LDZ2 ADD2 .Screen/y DEO2
|
||||
#40 ADD .Screen/sprite DEO
|
||||
|
||||
JMP2r
|
||||
|
||||
@draw-dungeon ( stage* -- )
|
||||
|
||||
STH2
|
||||
#1000
|
||||
&ver
|
||||
DUP #0005 SFT2 .room/y LDZ2 ADD2 .Screen/y DEO2
|
||||
#1000
|
||||
&hor
|
||||
DUP #0005 SFT2 .room/x LDZ2 ADD2 .Screen/x DEO2
|
||||
( get id ) STH2 DUP STH2r ROT OVR SWP #40 SFT ADD #00 SWP
|
||||
( tile ) DUP2 STH2kr ADD2 LDA #0004 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
|
||||
( color ) STH2kr #0100 ADD2 ADD2 LDA .Screen/sprite DEO
|
||||
INC GTHk ,&hor JCN
|
||||
POP2
|
||||
INC GTHk ,&ver JCN
|
||||
POP2
|
||||
POP2r
|
||||
|
||||
JMP2r
|
||||
|
||||
@print-hex ( value -- )
|
||||
|
||||
STHk #04 SFT ,&parse JSR .Console/write DEO
|
||||
STHr #0f AND ,&parse JSR .Console/write DEO
|
||||
JMP2r
|
||||
&parse ( value -- char )
|
||||
DUP #09 GTH ,&above JCN #30 ADD JMP2r &above #09 SUB #60 ADD JMP2r
|
||||
|
||||
JMP2r
|
||||
|
||||
@mouse-icn
|
||||
ffff ffff ffff ffff 0000 0000 0000 0000
|
||||
|
||||
@spritesheet
|
||||
1111 11f1 1111 111f eeee ee0e eeee eee0
|
||||
f5bb 55bb 51b1 51ff 0a44 aa44 ae4e ae00
|
||||
55bb 55bb 1111 1111 aa44 aa44 eeee eeee
|
||||
ff11 11f1 1111 111f 00ee ee0e eeee eee0
|
||||
1111 1111 1111 1111 eeee eeee eeee eeee
|
||||
ff80 8080 80ff 8080 00ff ffff ffff ffff
|
||||
ff01 0101 01ff 0101 00fe fefe fefe fefe
|
||||
ffff 11ff 0ffd 71ff 00ee ee00 fa02 ee00
|
||||
ffff 11ff cffd f9ff 00ee ee00 7a02 6600
|
||||
ff8c 8f9f 9f8e ff00 0cff fcfe fefd ffff
|
||||
ff82 820a 390a ff00 007d 7df5 c6f5 ffff
|
||||
ff7d 7f6f 3d01 ff01 38fe d4fc fafe fefe
|
||||
0000 0000 0007 0808 0000 0000 0007 0f0f
|
||||
0000 0000 00ff 9191 0000 0000 006e 6e6e
|
||||
0000 0000 00ff 1111 0000 0000 00ee eeee
|
||||
0000 0000 00c0 0000 0000 0000 00c0 e0e0
|
||||
1111 1111 1111 111f eeee eeee eeee eee0
|
||||
51b1 51bf 51b1 51f1 ae4e ae40 ae4e ae0e
|
||||
bb55 3b15 111f 1111 44aa c4ea eee0 eeee
|
||||
bf55 bb55 1111 1111 40aa 44aa eeee eeee
|
||||
51b1 51b1 51b1 51f1 ae4e ae4e ae4e ae0e
|
||||
dfba afbf bfbf 9f80 a0c5 d5d5 d5c0 ffff
|
||||
f5fd cdfd 8dfd f901 0a06 7606 7606 fefe
|
||||
ffff 11ff f785 87ff 00ee ee00 7a7a 7800
|
||||
ffff 11ff cffd fdff 00ee ee00 7a02 6200
|
||||
381f 0520 2038 7000 0020 3a38 3800 7c00
|
||||
00ff 0000 0000 0000 0000 ff00 0000 0000
|
||||
1cec 2010 101c 3800 0010 dc1c 1c00 3e00
|
||||
0808 0000 0000 0000 0f0f 0700 0000 0000
|
||||
ff91 9100 0000 0000 6e6e 6e00 0000 0000
|
||||
ff11 1100 0000 0000 eeee ee00 0000 0000
|
||||
8000 0000 0000 0000 e0e0 c000 0000 0000
|
||||
1111 11f1 1111 11ff eeee ee0e eeee ee00
|
||||
51b1 51b1 1111 1111 ae4e ae4e eeee eeee
|
||||
aa55 ab95 8181 817f 55aa d4ea fefe fe80
|
||||
ffab 55ab 51a1 51ff 0054 aa54 ae5e ae00
|
||||
d5ab d5ab d1a1 d1ff 2a54 2a54 2e5e 2e00
|
||||
ffbe aaaa bf9f 80bf 80d5 d5d5 c0ff ffc0
|
||||
fdfd 6d2d fdf9 01f9 0216 96d6 06fe fe06
|
||||
ffff 817e ffff ffff 007e ff81 0000 0000
|
||||
ffff 91ff cffd f9ff 006e 6e00 7a02 6600
|
||||
0000 1c04 1830 303a 0a0e 1f0e 1e2e 2e55
|
||||
2838 3878 004c 4c00 283a 297d 3e7a 32ff
|
||||
1070 7878 0123 1200 1172 5375 1c3c 0c7e
|
||||
080e 1e1e 98c4 4800 884e caae 203c 307e
|
||||
80e0 8080 80e7 8888 e000 e0e0 e007 efef
|
||||
0000 0000 00c7 0808 0000 0000 00c7 efef
|
||||
080e 0808 08ce 0808 0e00 0e0e 0ec0 eeee
|
||||
55ab 55ab 51a1 51ff aa54 aa54 ae5e ae00
|
||||
ab55 ab55 8181 817f 54aa 54aa fefe fe80
|
||||
ab55 ab55 8181 817f 54aa 54aa fefe fe80
|
||||
bf7f bf77 9f81 817f 5cbe 6abe fcfe fe80
|
||||
ab55 ab95 8181 817f 54aa d4ea fefe fe80
|
||||
ffc0 8083 80c0 ffff ffff ffff ffff ff00
|
||||
ff00 80ff 8000 ffff ffff ffff ffff ff00
|
||||
ff07 03c3 0307 ffff fefe fefe fefe fe00
|
||||
ffff 91ff f785 ffd9 006e 6e00 7a7a 006e
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
080e 0808 080e 0808 0e00 0e0e 0e00 0e0e
|
||||
80e0 8080 80e0 8080 e000 e0e0 e000 e0e0
|
||||
ee88 88ee 8890 8000 00ee ee00 eefe fe7c
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
5ea1 51a1 51a1 51ae af5e ae5e ae5e ae5f
|
||||
7e81 8181 8181 817f fffe fefe fefe fe80
|
||||
7e81 41a1 51a1 51ff ff7e be5e ae5e ae00
|
||||
7e81 8185 8783 817f fffe fefa fcfe fefe
|
||||
7e81 8185 8783 817f fffe fefa fcfe fe80
|
||||
eaea eaea ffea ffaa 5555 5555 00ff 0055
|
||||
aaaa aaaa ff00 ffaa 5555 5555 00ff 0055
|
||||
afaf afaf ff17 ffab 5454 5454 00fe 0054
|
||||
ffff 11ff cffd c5ff 00ee ee00 7a02 7a00
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0e0e 040a 040e 0808 0000 0a04 0a00 0e0e
|
||||
e0e0 40a0 40e0 8080 0000 a040 a000 e0e0
|
||||
80e0 8080 e09f 9191 e000 e0e0 00ee ee6e
|
||||
080e 0808 0ef0 1012 0e00 0e0e 00ee eeec
|
||||
5ea1 51a1 51a1 51fe af5e ae5e ae5e ae01
|
||||
7f80 8080 8080 807f ffff ffff ffff ffff
|
||||
7e8d 8f9f f1e1 817f f7f6 f0ee 1efe fe80
|
||||
5ea1 51a1 51a1 51ff af5e ae5e ae5e ae00
|
||||
7e81 41a1 51a9 51fe ff7e be5e ae56 ae07
|
||||
ffff 18ff 7873 7474 00e7 e700 c7cc cbcb
|
||||
ffff 14ff 00ff 0000 00eb eb00 ff00 ffff
|
||||
ffff 18ff 1ece 2e2e 00e7 e700 e333 d3d3
|
||||
ffff 11ff ff85 ffd9 00ee ee00 7a7a 006e
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
ff91 91e0 8080 e080 6eee ee00 e0e0 00e0
|
||||
fe10 100e 0808 0e08 ecee ee00 0e0e 000e
|
||||
0000 0000 0000 55aa 0000 0000 0000 aa55
|
||||
552a ff80 efff 80ff aad5 00ff ff00 ffff
|
||||
55aa ff00 ffff 00ff aa55 00ff ff00 ffff
|
||||
55ab ff01 dfff 01ff aa54 00fe fe00 fefe
|
||||
ffff d700 00ff ffff 0000 ffff ff00 7ce2
|
||||
7474 7474 7000 00ff cbcb cbcb cfff ff00
|
||||
0000 0000 0000 00ff ffff ffff ffff ff00
|
||||
2e2e 2e2e 2e0e 0cff d3d3 d3d3 d3f3 f300
|
||||
ffff 817e ffff fbeb 007e ff81 0004 1414
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
00ff 4444 00ff 4444 00bb bbbb 00bb bbbb
|
||||
00fc 4848 00fc 4848 00b4 b6b6 02b6 b6b4
|
||||
ff01 1fff 011f ff01 00fe fe00 fefe 00fe
|
||||
ff80 ffff 80ff ffff 00ff ff00 ffff 0000
|
||||
ff00 afff 00fd ffff 00ff ff00 ffff 0000
|
||||
ff01 ffff 01ff ffff 00fe fe00 fefe 0000
|
||||
ffff ffff ffff ffff 3e2e ab3d efff d8f7
|
||||
ffa0 ffa8 58ff a8ff 005f 0057 a700 5700
|
||||
ff81 ff09 09ff 81ff 007e 00f6 f600 7e00
|
||||
ff57 5617 270c 0cff 00a9 a9e8 d9f3 f300
|
||||
ffff b9ef e9ef ffe7 0046 5610 5610 3c18
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
007f 8484 e080 8080 007b fbfb 00e0 e0e0
|
||||
00ff 4444 0003 0404 00bb bbbb 0003 0707
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
1fff 011f ff01 1dff fe00 fefe 00fe fe00
|
||||
5ea3 55ab 55ab 55ff af5c aa54 aa54 aa00
|
||||
7e81 55ab 55ab 55ff fffe aa54 aa54 aa00
|
||||
0101 ffff ffff ffff fefe 00ff c7b9 ff67
|
||||
81c1 ffff ffff ffff 7e3e 00ff 1de7 fff9
|
||||
ffff 8080 8080 ff55 00ff ffff ffff 00aa
|
||||
fffe 0101 0101 ff55 00ff fefe fefe 00aa
|
||||
3f18 181f 4e4e 26ff c7e7 e7e0 b3b1 d900
|
||||
efef adef efed fdff 185a 5a18 5a1a 5200
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 8080 00e0 8000 8101
|
||||
0000 0000 0000 0000 0000 0606 3636 b6b6
|
||||
1e01 0181 8181 817f fffe fefe fefe fe80
|
||||
ffff ffff ffff ffff ffff ae71 ffff c7fb
|
||||
ffff ffff ffff ffff fefe fe1c eefe c2be
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
ffff 817e ffff ffff 007e ff81 0008 347e
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
817e ff00 ff18 0081 7eff ffff 00e7 ffff
|
||||
fe81 c1a1 c1a1 c1ff 7f7e 3e5e 3e5e 3e00
|
||||
aa55 ab55 01c3 7d01 55aa 54aa febe 82fe
|
||||
0101 ffff ffff ffff fefe 00fe 78a6 fefa
|
||||
55ab f51b 11e1 817f aa54 eae4 ee1e fe80
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
ff55 ab81 8181 817f 00aa d4fe fefe fe80
|
||||
be41 a181 8181 817f 5fbe 5efe fefe fe80
|
||||
7d7d 017d 7d01 7dff 8282 fe82 82fe 8200
|
||||
7d7d 017d 7d01 7d7d 8282 fe82 82fe 8282
|
||||
d5ab 5db0 908f 837f 2a54 af4f eff0 fc80
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
ff88 ce96 f4f0 f695 fff8 def7 fdf1 f7b5
|
||||
ff0e a634 8270 32c1 ff4f ffff 9ff9 fff7
|
||||
898d 38fd 4f53 44d1 9fff fdff 7fff dffd
|
||||
017d 7d01 7d7d 017d fe82 82fe 8282 fe82
|
||||
ffff ffff ffff ffff ffaa ff55 ffaa 55aa
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
8d85 90b8 f2b7 848d bfc7 91f8 f6ff 9fef
|
||||
ffff ffff ffff ffff 5fbf 5fa7 59bf 47b8
|
||||
ffff ffff ffff ffff 55aa 55ff fff9 cfff
|
||||
ffff ffff ffff ffff 55aa 55bf 53bc 5fbf
|
||||
ffff ffff ffff ffff feaa fe54 feaa 54aa
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
ffff ffff ffff ffff 5faa 5fb5 5faa 55aa
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
42ff 7d41 82fa 6100 7cfc 027e fcfc 7e00
|
||||
|
||||
|
||||
@sewers
|
||||
0c0d 0ea2 0e0e 0f00 0000 0000 0000 0000
|
||||
3c07 58b3 3858 3d00 0000 0000 0000 0000
|
||||
3c17 18c3 3828 3d00 0000 0000 0000 0000
|
||||
3c30 3132 3231 4e0e 0e0e 0e0e 0e0e 0f00
|
||||
3c50 8483 a344 2858 1858 6838 6828 3d00
|
||||
1c1d 1e5f 9441 0718 2718 5818 1858 3d00
|
||||
0000 003c 9441 22b4 64a4 3232 3232 3d00
|
||||
0000 003c 93a3 4183 9383 8383 8341 3d00
|
||||
0000 001c 5f94 5294 7d7e 6e6e 6f41 3d00
|
||||
000c 0e0e 4f94 4194 3d3c 5858 1841 3d00
|
||||
003c 1758 1894 4194 3d3c 1818 1850 3d00
|
||||
003c 1898 1894 4194 3d3c a024 33b1 3d00
|
||||
003c d374 d294 4494 3d3c 23b1 4144 3d00
|
||||
003c d193 9394 4194 3d3c 5052 4141 3d00
|
||||
004c e0c4 c4d4 82d4 4d1c 1d1e 1e1e 1f00
|
||||
00bc 0000 0000 00ca 0000 0000 0000 0000
|
||||
&colors
|
||||
8080 8080 8080 8000 0000 0000 0000 0000
|
||||
8080 8080 8080 8000 0000 0000 0000 0000
|
||||
8080 8080 8080 8000 0000 0000 0000 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
0000 0080 8080 8080 8080 8080 8080 8000
|
||||
0000 0080 8080 8080 8080 8080 8080 8000
|
||||
0000 0080 8080 80a0 8080 8080 8080 8000
|
||||
0080 8080 8080 80a0 8080 8080 8080 8000
|
||||
0080 8080 8080 80a0 8080 8080 8080 8000
|
||||
0080 8080 8080 80a0 8080 8080 8080 8000
|
||||
0080 8080 8080 80a0 8080 8080 8080 8000
|
||||
0080 8080 8080 80a0 8080 8080 8080 8000
|
||||
00a0 8080 8080 8080 a080 8080 8080 8000
|
||||
00a0 0000 0000 0080 0000 0000 0000 0000
|
||||
|
||||
@crypt
|
||||
0000 0c0d 0e0e 0f00 0000 0000 0000 0000
|
||||
0c0d 4f55 5657 4e0e 0f00 0000 0000 0000
|
||||
3c55 5765 6667 5557 3d00 0000 0000 0000
|
||||
3c65 6732 3232 6567 3d00 0000 0000 0000
|
||||
3c30 3235 3637 3233 3d00 0000 0000 0000
|
||||
3c40 4345 4647 5451 3d00 0000 0000 0000
|
||||
3c75 7661 6263 7576 3d4c 604d 0000 0000
|
||||
3c30 3171 7273 3232 3d3c 703d 0000 0000
|
||||
3c50 4441 4141 4141 4e4f 803d 0000 0000
|
||||
3c50 ff41 4152 4141 9091 923d 0000 0000
|
||||
3c50 4141 4141 4141 5e1e 1e1f 0000 0000
|
||||
3c50 5241 4141 4441 3d00 0000 0000 0000
|
||||
1c1d 1e5f 415e 1e1e 1f00 0000 0000 0000
|
||||
0000 004c 824d 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
&colors
|
||||
0000 8080 8080 8000 0000 0000 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
8080 8080 8080 8080 8080 8080 0000 0000
|
||||
8080 8080 8080 8080 8080 8080 0000 0000
|
||||
8080 8080 8080 8080 8080 8080 0000 0000
|
||||
8080 8080 8080 8080 8080 8080 0000 0000
|
||||
8080 8080 8080 8080 8080 8080 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
8080 8080 8080 8080 8000 0000 0000 0000
|
||||
0000 00a0 80a0 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
|
||||
@entrance
|
||||
0c0d 0e0e 0e0e 0e0e 0f0c 0d0e 0e0f 0000
|
||||
3c07 0727 2807 0506 3d3c 1717 173d 0000
|
||||
3c17 287b 0728 1516 4e4f 1717 173d 0000
|
||||
3c30 3131 3131 2526 1717 31a2 313d 0000
|
||||
3c50 a0a1 4141 3432 1717 41b2 443d 0000
|
||||
3c50 b0b1 5241 4144 3431 4141 413d 0000
|
||||
3c50 4141 4141 4141 4141 5241 413d 0000
|
||||
1c1d 1e1e 5f41 5e1e 1e1e 1e1e 1e1f 0000
|
||||
0000 0000 4c81 4d00 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 9d00 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
&colors
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
8080 8081 8080 8080 8080 8080 8080 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
8080 8080 8080 8080 8080 8080 8080 0000
|
||||
0000 0000 a080 a000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 8000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
|
||||
@upper
|
||||
007b 7b7b 7b7b 7b7b 7b0c 0e0e 0e0e 0f7b
|
||||
cfcf cfcf cfcf cfcf 7b3c 7758 7858 3d00
|
||||
0c0d 0e2e 0d0e 0e0e 0e2f 8707 8808 3d00
|
||||
3c05 063e 3868 3807 283e 0102 0202 3d00
|
||||
3c15 1628 090a 0b17 2828 1100 0010 3d00
|
||||
3c25 2628 191a 1b01 a028 1100 0020 3d00
|
||||
3c01 1313 1213 1321 1312 2100 5e1e 1f00
|
||||
3c14 c0c1 c1c1 c000 1010 1004 3dcf 7e00
|
||||
3c14 d0c2 c2c2 d010 1000 1041 3d00 0000
|
||||
3c11 c0c1 c1c1 c004 1010 0419 3d00 0000
|
||||
3c11 0404 0400 1004 0004 0412 3d00 0000
|
||||
3c85 8685 865e 5f70 5e5f 8586 3d00 0000
|
||||
1c1d 1e1e 1e1f 3c80 3d1c 1d1e 1f00 0000
|
||||
8e8e 8e8e 8e8e 4c60 4d00 0000 0000 0000
|
||||
0000 0000 00ef efef 0000 0000 0000 0000
|
||||
&colors
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0080 8080 8080 8080 8080 8080 8080 8080
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 8080 8080 8080 8080 8000
|
||||
8080 8080 8080 9080 8080 8080 8080 8000
|
||||
8080 80a0 80a0 9080 8080 8080 8000 0000
|
||||
8080 a0a0 a0a0 b080 8080 8080 8000 0000
|
||||
8080 8080 8080 8080 8080 8080 8000 0000
|
||||
8080 8080 8080 8080 8080 8080 8000 0000
|
||||
8080 8080 8080 8080 8080 8080 8000 0000
|
||||
8080 8080 8080 a0b0 a000 0000 0000 0000
|
||||
0000 0000 0080 8080 0000 0000 0000 0000
|
||||
0000 0000 0000 0000 0000 0000 0000 0000
|
|
@ -1,82 +0,0 @@
|
|||
( pseudo-random number generator,
|
||||
based on two 16-bit xorshift algorithms by George Marsaglia
|
||||
http://www.jstatsoft.org/v08/i14/paper )
|
||||
|
||||
( devices )
|
||||
|
||||
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ]
|
||||
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|
||||
|c0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ]
|
||||
|
||||
( variables )
|
||||
|
||||
|0000
|
||||
|
||||
( program )
|
||||
|
||||
|0100 ( -> )
|
||||
( init )
|
||||
;on-frame .Screen/vector DEO2
|
||||
|
||||
( seed prng (must be nonzero) )
|
||||
#00 .DateTime/second DEI
|
||||
#00 .DateTime/minute DEI #60 SFT2 EOR2
|
||||
#00 .DateTime/hour DEI #c0 SFT2 EOR2 ;prng2/x STA2
|
||||
#00 .DateTime/hour DEI #04 SFT2
|
||||
#00 .DateTime/day DEI #10 SFT2 EOR2
|
||||
#00 .DateTime/month DEI #60 SFT2 EOR2
|
||||
.DateTime/year DEI2 #a0 SFT2 EOR2 ;prng2/y STA2
|
||||
;prng2/x LDA2 ;prng2/y LDA2 EOR2
|
||||
ORAk ,&non-zero JCN INC2 &non-zero
|
||||
;prng/seed STA2
|
||||
|
||||
( theme )
|
||||
#0fe5 .System/r DEO2
|
||||
#0fc5 .System/g DEO2
|
||||
#0f25 .System/b DEO2
|
||||
BRK
|
||||
|
||||
@on-frame ( -> )
|
||||
#c0
|
||||
&loop
|
||||
,draw-pixel JSR
|
||||
INC
|
||||
DUP ,&loop JCN
|
||||
POP
|
||||
BRK
|
||||
|
||||
@draw-pixel
|
||||
,prng2 JSR
|
||||
#00 SWP .Screen/x DEO2
|
||||
#00 SWP .Screen/y DEO2
|
||||
#01 .Screen/pixel DEO
|
||||
JMP2r
|
||||
|
||||
@prng ( -- number* )
|
||||
( returns the next number in a 65,535-long sequence,
|
||||
which is never zero but every other 16-bit number
|
||||
appears once before the sequence repeats )
|
||||
( http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html )
|
||||
,&seed LDR2
|
||||
DUP2 #70 SFT2 EOR2
|
||||
DUP2 #09 SFT2 EOR2
|
||||
DUP2 #80 SFT2 EOR2
|
||||
,&seed STR2k POP
|
||||
JMP2r
|
||||
|
||||
&seed $2
|
||||
|
||||
@prng2 ( -- number* )
|
||||
( returns the next number in a (2^32-1)-long sequence )
|
||||
( http://b2d-f9r.blogspot.com/2010/08/16-bit-xorshift-rng-now-with-more.html )
|
||||
,&x LDR2
|
||||
DUP2 #50 SFT2 EOR2
|
||||
DUP2 #03 SFT2 EOR2
|
||||
,&y LDR2 DUP2 ,&x STR2
|
||||
DUP2 #01 SFT2 EOR2 EOR2
|
||||
,&y STR2k POP
|
||||
JMP2r
|
||||
|
||||
&x $2
|
||||
&y $2
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
( devices )
|
||||
|
||||
( uxnasm rule110.tal rule110.rom && uxnemu rule110.rom )
|
||||
|
||||
%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 }
|
||||
|
||||
%2MOD { #01 AND } %2MOD2 { #0001 AND2 }
|
||||
%4MOD { #03 AND } %4MOD2 { #0003 AND2 }
|
||||
%8MOD { #07 AND } %8MOD2 { #0007 AND2 }
|
||||
%10MOD { #0f AND } %10MOD2 { #000f AND2 }
|
||||
|
||||
%ROL2 { DUP2 #0f SFT2 SWP2 #10 SFT2 ADD2 }
|
||||
%ROR2 { DUP2 #f0 SFT2 SWP2 #01 SFT2 ADD2 }
|
||||
|
||||
%DEBUG { ;print-hex/byte JSR2 #0a18 DEO }
|
||||
%DEBUG2 { ;print-hex JSR2 #0a18 DEO }
|
||||
%RTN { JMP2r }
|
||||
|
||||
%WIDTH { #0020 }
|
||||
%STEPS { #30 }
|
||||
|
||||
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|
||||
|20 @Screen [ &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|
||||
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ]
|
||||
|
||||
|0000
|
||||
|
||||
@input
|
||||
|
||||
|0100
|
||||
|
||||
( set system colors )
|
||||
#0ff7 .System/r DEO2
|
||||
#0f0e .System/g DEO2
|
||||
#0f0c .System/b DEO2
|
||||
|
||||
;on-mouse .Mouse/vector DEO2
|
||||
|
||||
( set size )
|
||||
#0080 .Screen/width DEO2
|
||||
#0180 .Screen/height DEO2
|
||||
|
||||
( seed ) #0001 ;input STA2
|
||||
|
||||
,render JSR
|
||||
|
||||
BRK
|
||||
|
||||
@render ( -- )
|
||||
|
||||
STEPS #00
|
||||
&loop
|
||||
( update )
|
||||
DUP 2* LDZ2k
|
||||
;rule-110 JSR2
|
||||
ROT INC INC STZ2
|
||||
( draw )
|
||||
DUP ,draw-line JSR
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
|
||||
RTN
|
||||
|
||||
@draw-line ( line -- )
|
||||
|
||||
STHk #00 SWP 8** .Screen/y DEO2
|
||||
#1000
|
||||
&loop
|
||||
DUP #00 SWP 8** .Screen/x DEO2
|
||||
( shift ) INCk #10 SWP SUB
|
||||
( get address ) STHkr 2* LDZ2
|
||||
( bit ) ROT SFT2 #0001 AND2
|
||||
( get sprite ) 8** ;cell-icns ADD2 .Screen/addr DEO2
|
||||
#01 STHkr #00 EQU ADD .Screen/sprite DEO
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
POPr
|
||||
|
||||
RTN
|
||||
|
||||
@rule-110 ( value* -- value* )
|
||||
|
||||
#0000 ,&res STR2
|
||||
ROL2 STH2
|
||||
#1000
|
||||
&loop
|
||||
( get 3-bits ) STH2kr #e000 AND2 #0d SFT2 ;rule ADD2 LDA STH
|
||||
( get result ) DUP #40 SFT #00 STHr ROT SFT2
|
||||
( reset ) ROR2 ROR2 ROR2
|
||||
( save ) ,&res LDR2 ADD2 ,&res STR2
|
||||
STH2r ROR2 STH2
|
||||
INC GTHk ,&loop JCN
|
||||
POP2
|
||||
POP2r
|
||||
|
||||
,&res LDR2
|
||||
|
||||
RTN
|
||||
&res $2
|
||||
|
||||
@rule
|
||||
00 01 01 01 00 01 01 00
|
||||
|
||||
@on-mouse ( -> )
|
||||
|
||||
( clear last cursor )
|
||||
;mouse-icn .Screen/addr DEO2
|
||||
,&x LDR2 .Screen/x DEO2
|
||||
,&y LDR2 .Screen/y DEO2
|
||||
#40 .Screen/sprite DEO
|
||||
|
||||
( record pointer positions )
|
||||
.Mouse/x DEI2 DUP2 ,&x STR2 .Screen/x DEO2
|
||||
.Mouse/y DEI2 DUP2 ,&y STR2 .Screen/y DEO2
|
||||
|
||||
( colorize on state )
|
||||
#43 [ .Mouse/state DEI #00 NEQ ] SUB .Screen/sprite DEO
|
||||
|
||||
( on click )
|
||||
.Mouse/state DEI #00 NEQ JMP BRK
|
||||
|
||||
( toggle bit )
|
||||
.input LDZ2k
|
||||
#0001 .Mouse/x DEI2 8// #000f SWP2 SUB2 NIP #40 SFT SFT2 EOR2
|
||||
ROT STZ2
|
||||
;render JSR2
|
||||
( release ) #00 .Mouse/state DEO
|
||||
|
||||
BRK
|
||||
&x $2 &y $2
|
||||
|
||||
@print-hex ( value* -- )
|
||||
|
||||
SWP ,&byte JSR
|
||||
&byte ( byte -- )
|
||||
STHk #04 SFT ,&parse JSR #18 DEO
|
||||
STHr #0f AND ,&parse JSR #18 DEO
|
||||
RTN
|
||||
&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD RTN
|
||||
&above #57 ADD RTN
|
||||
|
||||
RTN
|
||||
|
||||
@mouse-icn
|
||||
80c0 e0f0 f8e0 1000
|
||||
|
||||
@cell-icns
|
||||
7c82 8282 8282 7c00
|
||||
7cfe fefe fefe 7c00
|
||||
|
Loading…
Reference in New Issue