december_adventure_2023

December Adventure (2023)
git clone https://git.eamoncaddigan.net/december_adventure_2023.git
Log | Files | Refs | README

december-adventure.tal (5324B)


      1 ( december-adventure.tal )
      2 
      3 |00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
      4 |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
      5 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
      6 |30 @Audio0 &vector $2 &position $2 &output $1 &duration $2 &pad $1 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1
      7 
      8 |0000
      9 
     10 |0100
     11 	#0a6f .System/r DEO2
     12 	#05cf .System/g DEO2
     13 	#0caf .System/b DEO2
     14 
     15 	( Attempt to set to 320 x 200 )
     16 	#0140 .Screen/width DEO2
     17 	#00c8 .Screen/height DEO2
     18 
     19 	( Center the text and draw it )
     20 	.Screen/width DEI2 #00 #0e #08 MUL SUB2 #01 SFT2 .Screen/x DEO2
     21 	.Screen/height DEI2 #0008 SUB2 #01 SFT2 .Screen/y DEO2
     22 	;message ;draw-string JSR2
     23 
     24 	( Set up the audio device to play the message )
     25 	;play-message .Audio0/vector DEO2
     26 	#00c8 .Audio0/duration DEO2
     27 	#00f0 .Audio0/adsr DEO2
     28 	#0001 .Audio0/length DEO2
     29 	;silence .Audio0/addr DEO2
     30 	#ff .Audio0/volume DEO
     31 	#4e .Audio0/pitch DEO
     32 BRK
     33 
     34 @play-message ( -> )
     35 	[ LIT2 00 &f $1 ] INCk ,&f STR
     36 	DUP2
     37 		#10 SFT ;durations ADD2
     38 	DUP2 ;durations/end LTH2 ,&play JCN
     39 		POP2
     40 BRK
     41 	&play
     42 		LDA2 .Audio0/duration DEO2
     43 	#0001 AND2 ,&mute JCN
     44 		#0100 .Audio0/length DEO2
     45 		;sin-pcm .Audio0/addr DEO2
     46 		#4e .Audio0/pitch DEO
     47 BRK
     48 	&mute
     49 		#0001 .Audio0/length DEO2
     50 		;silence .Audio0/addr DEO2
     51 		#4e .Audio0/pitch DEO
     52 BRK
     53 
     54 @draw-character ( char -- )
     55 	#20 SUB #00 SWP #30 SFT2
     56 	;font ADD2 .Screen/addr DEO2
     57 	#43 .Screen/sprite DEO
     58 JMP2r
     59 
     60 @draw-string ( text* -- )
     61 	[ #00 .Screen/auto DEI ] .Screen/x DEI2 ROT2
     62 	#01 .Screen/auto DEO
     63 	&while
     64 		LDAk
     65 		[ #00 ] NEQk NIP ,&not-00 JCN
     66 			POP
     67 			,&end-while JMP
     68 		&not-00
     69 		[ #0a ] NEQk NIP ,&not-0a JCN
     70 			POP
     71 			OVR2 .Screen/x DEO2
     72 			.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
     73 			,&end-if JMP
     74 		&not-0a
     75 		( else )
     76 			;draw-character JSR2
     77 		&end-if
     78 			INC2 ,&while JMP
     79 	&end-while
     80 	POP2 POP2
     81 	.Screen/auto DEO POP
     82 JMP2r
     83 
     84 @message
     85 	"Happy 20 "New 20 "Year 00
     86 
     87 ( Hard-coding a message with a 5 WPM transmission speed but an 18 WPM
     88   character speed )
     89 @durations
     90 	( "H", "....", )
     91 	0043 0043 0043 0043 0043 0043 0043
     92 	0620
     93 	( "A", ".-", )
     94 	0043 0043 00c8
     95 	0620
     96 	( "P", ".--.", )
     97 	0043 0043 00c8 0043 00c8 0043 0043
     98 	0620
     99 	( "P", ".--.", )
    100 	0043 0043 00c8 0043 00c8 0043 0043
    101 	0620
    102 	( "Y", "-.--", )
    103 	00c8 0043 0043 0043 00c8 0043 00c8
    104 	0e4c
    105 	( "N", "-.", )
    106 	00c8 0043 0043
    107 	0620
    108 	( "E", ".", )
    109 	0043
    110 	0620
    111 	( "W", ".--", )
    112 	0043 0043 00c8 0043 00c8
    113 	0e4c
    114 	( "Y", "-.--", )
    115 	00c8 0043 0043 0043 00c8 0043 00c8
    116 	0620
    117 	( "E", ".", )
    118 	0043
    119 	0620
    120 	( "A", ".-", )
    121 	0043 0043 00c8
    122 	0620
    123 	( "R", ".-.", )
    124 	0043 0043 00c8 0043 0043
    125 	0e4c
    126 	&end
    127 
    128 @sin-pcm
    129 	8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad
    130 	b0b3 b6b9 bbbe c1c3 c6c9 cbce d0d2 d5d7
    131 	d9db dee0 e2e4 e6e7 e9eb ecee f0f1 f2f4
    132 	f5f6 f7f8 f9fa fbfb fcfd fdfe fefe fefe
    133 	fffe fefe fefe fdfd fcfb fbfa f9f8 f7f6
    134 	f5f4 f2f1 f0ee eceb e9e7 e6e4 e2e0 dedb
    135 	d9d7 d5d2 d0ce cbc9 c6c3 c1be bbb9 b6b3
    136 	b0ad aaa7 a4a1 9e9b 9895 928f 8c89 8683
    137 	807d 7a77 7471 6e6b 6865 625f 5c59 5653
    138 	504d 4a47 4542 3f3d 3a37 3532 302e 2b29
    139 	2725 2220 1e1c 1a19 1715 1412 100f 0e0c
    140 	0b0a 0908 0706 0505 0403 0302 0202 0202
    141 	0102 0202 0202 0303 0405 0506 0708 090a
    142 	0b0c 0e0f 1012 1415 1719 1a1c 1e20 2225
    143 	2729 2b2e 3032 3537 3a3d 3f42 4547 4a4d
    144 	5053 5659 5c5f 6265 686b 6e71 7477 7a7d
    145 
    146 @silence
    147 	7e
    148 
    149 @font
    150 	0000 0000 0000 0000
    151 	1818 1818 1800 1800
    152 	6c6c 6c00 0000 0000
    153 	3636 7f36 7f36 3600
    154 	0c3f 683e 0b7e 1800
    155 	6066 0c18 3066 0600
    156 	386c 6c38 6d66 3b00
    157 	0c18 3000 0000 0000
    158 	0c18 3030 3018 0c00
    159 	3018 0c0c 0c18 3000
    160 	0018 7e3c 7e18 0000
    161 	0018 187e 1818 0000
    162 	0000 0000 0018 1830
    163 	0000 007e 0000 0000
    164 	0000 0000 0018 1800
    165 	0006 0c18 3060 0000
    166 	3c66 6e7e 7666 3c00
    167 	1838 1818 1818 7e00
    168 	3c66 060c 1830 7e00
    169 	3c66 061c 0666 3c00
    170 	0c1c 3c6c 7e0c 0c00
    171 	7e60 7c06 0666 3c00
    172 	1c30 607c 6666 3c00
    173 	7e06 0c18 3030 3000
    174 	3c66 663c 6666 3c00
    175 	3c66 663e 060c 3800
    176 	0000 1818 0018 1800
    177 	0000 1818 0018 1830
    178 	0c18 3060 3018 0c00
    179 	0000 7e00 7e00 0000
    180 	3018 0c06 0c18 3000
    181 	3c66 0c18 1800 1800
    182 	3c66 6e6a 6e60 3c00
    183 	3c66 667e 6666 6600
    184 	7c66 667c 6666 7c00
    185 	3c66 6060 6066 3c00
    186 	786c 6666 666c 7800
    187 	7e60 607c 6060 7e00
    188 	7e60 607c 6060 6000
    189 	3c66 606e 6666 3c00
    190 	6666 667e 6666 6600
    191 	7e18 1818 1818 7e00
    192 	3e0c 0c0c 0c6c 3800
    193 	666c 7870 786c 6600
    194 	6060 6060 6060 7e00
    195 	6377 7f6b 6b63 6300
    196 	6666 767e 6e66 6600
    197 	3c66 6666 6666 3c00
    198 	7c66 667c 6060 6000
    199 	3c66 6666 6a6c 3600
    200 	7c66 667c 6c66 6600
    201 	3c66 603c 0666 3c00
    202 	7e18 1818 1818 1800
    203 	6666 6666 6666 3c00
    204 	6666 6666 663c 1800
    205 	6363 6b6b 7f77 6300
    206 	6666 3c18 3c66 6600
    207 	6666 663c 1818 1800
    208 	7e06 0c18 3060 7e00
    209 	7c60 6060 6060 7c00
    210 	0060 3018 0c06 0000
    211 	3e06 0606 0606 3e00
    212 	183c 6642 0000 0000
    213 	0000 0000 0000 00ff
    214 	1c36 307c 3030 7e00
    215 	0000 3c06 3e66 3e00
    216 	6060 7c66 6666 7c00
    217 	0000 3c66 6066 3c00
    218 	0606 3e66 6666 3e00
    219 	0000 3c66 7e60 3c00
    220 	1c30 307c 3030 3000
    221 	0000 3e66 663e 063c
    222 	6060 7c66 6666 6600
    223 	1800 3818 1818 3c00
    224 	1800 3818 1818 1870
    225 	6060 666c 786c 6600
    226 	3818 1818 1818 3c00
    227 	0000 367f 6b6b 6300
    228 	0000 7c66 6666 6600
    229 	0000 3c66 6666 3c00
    230 	0000 7c66 667c 6060
    231 	0000 3e66 663e 0607
    232 	0000 6c76 6060 6000
    233 	0000 3e60 3c06 7c00
    234 	3030 7c30 3030 1c00
    235 	0000 6666 6666 3e00
    236 	0000 6666 663c 1800
    237 	0000 636b 6b7f 3600
    238 	0000 663c 183c 6600
    239 	0000 6666 663e 063c
    240 	0000 7e0c 1830 7e00
    241 	0c18 1870 1818 0c00
    242 	1818 1800 1818 1800
    243 	3018 180e 1818 3000
    244 	316b 4600 0000 0000
    245 	ffff ffff ffff ffff