uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 259b9dcf56fb45065d8bf058aaca4f544aeb69ae
parent c5d8ba4e3aa6a227d8417c369becf259ca7a9259
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date:   Sat,  2 Mar 2024 19:37:45 -0800

Removed old examples

Diffstat:
Dprojects/examples/old/asma-piano.tal | 102-------------------------------------------------------------------------------
Dprojects/examples/old/darena.tal | 543-------------------------------------------------------------------------------
Dprojects/examples/old/dungeon.tal | 528-------------------------------------------------------------------------------
Dprojects/examples/old/prng.tal | 82-------------------------------------------------------------------------------
Dprojects/examples/old/rule110.tal | 154-------------------------------------------------------------------------------
5 files changed, 0 insertions(+), 1409 deletions(-)

diff --git a/projects/examples/old/asma-piano.tal b/projects/examples/old/asma-piano.tal @@ -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 - diff --git a/projects/examples/old/darena.tal b/projects/examples/old/darena.tal @@ -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 ] - diff --git a/projects/examples/old/dungeon.tal b/projects/examples/old/dungeon.tal @@ -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 diff --git a/projects/examples/old/prng.tal b/projects/examples/old/prng.tal @@ -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 - diff --git a/projects/examples/old/rule110.tal b/projects/examples/old/rule110.tal @@ -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 -