From a8dcf6b0be55d5a1a836c62a487d155720ad8f47 Mon Sep 17 00:00:00 2001 From: Aleteoryx Date: Mon, 1 Dec 2025 15:23:35 -0500 Subject: [PATCH] split --- aoc/2025/01.1.tal | 110 ++++++++++++++++++++++++++++++++++ aoc/2025/{01.tal => 01.2.tal} | 66 ++++++-------------- aoc/2025/mkfile | 4 +- aoc/2025/xx.tal | 80 ++++++++++++++++--------- 4 files changed, 182 insertions(+), 78 deletions(-) create mode 100644 aoc/2025/01.1.tal rename aoc/2025/{01.tal => 01.2.tal} (67%) diff --git a/aoc/2025/01.1.tal b/aoc/2025/01.1.tal new file mode 100644 index 0000000000000000000000000000000000000000..83be77131d4e84324fadb17eaea77672444dfe03 --- /dev/null +++ b/aoc/2025/01.1.tal @@ -0,0 +1,110 @@ +( advent of code 2025, day 1, first star ) + +%dbg { #010e DEO } + +@on-reset ( -> ) + banner + first-star + BRK + +@banner ( -- ) + ;/str !puts +@banner/str + "advent 20 "of 20 "code 20 "2025, 20 "day 20 "1, 20 "first 20 "star 0a 00 + + +( first star ) + +@first-star ( -- ) + Input/read + + [ LIT2 &pass $2 ] + putdec2 !endl + +@first-star/newline ( -- ) + Number/get Dial/rotate + Number/reset + + Dial/get ORA ?{ ,/pass LDR2 INC2 ,/pass STR2 } + JMP2r + +@first-star/on-input ( b -- ) + DUP #0a NEQ ?{ POP !/newline } + DUP LIT "R NEQ ?{ POP !Dial/right } + DUP LIT "L NEQ ?{ POP !Dial/left } + !Number/one-byte + + +( stdlib ) + +@endl ( n -- ) + #0a18 DEO JMP2r + +@puts ( str* -- ) + LDAk #18 DEO + INC2 LDAk ?puts + + POP2 JMP2r + +@putdec2 ( n* -- ) + [ LITr 00 ] + + &loop + #000a DIV2k STH2k + MUL2 SUB2 + [ LIT "0 ] ADD NIP + STH2r ROT STH + ORAk ?/loop + POP2 + + &loop2 + STHr #18 DEO + STHrk ?/loop2 + POPr JMP2r + + +( object lib ) + +@Input/filename "01.input 00 +@Input/read ( -- ) + #01ab DEO + ;/filename #a8 DEO2 + + &loop + ;/byte #ac DEO2 + #a3 DEI #00 EQU ?/endloop ( EOF ) + [ LIT &byte $1 ] + first-star/on-input + !/loop + + &endloop + POP2 JMP2r + + +@Number/one-byte ( b -- ) + #00 SWP + LIT "0 SUB + [ LIT2 &val 0000 ] + #000a MUL2 ADD2 + ,/val STR2 + JMP2r +@Number/get ( -- n* ) + ,/val LDR2 JMP2r +@Number/reset ( -- ) + #0000 ,/val STR2 JMP2r + + +( problem code ) + +@Dial/get ( -- n* ) + ,/state LDR2 #6400 SUB2 JMP2r +@Dial/rotate ( n* -- ) + [ LIT2 &state 6432 ] ( start @ 25650 ) + SWP2 [ &op $1 ] + #0064 DIV2k MUL2 SUB2 ( mod 100 ) + #6400 ADD2 ( keep in range 25600-25699 ) + ,/state STR2 +@Dial/left ( -- ) + [ LIT2 SUB2 _/op ] STR JMP2r +@Dial/right ( -- ) + [ LIT2 ADD2 _/op ] STR JMP2r diff --git a/aoc/2025/01.tal b/aoc/2025/01.2.tal similarity index 67% rename from aoc/2025/01.tal rename to aoc/2025/01.2.tal index d410f0b9edd4a1f99498da2c38f320652e7c1a5d..2d667a7306347c4e20306cad57579ee9304ba936 100644 --- a/aoc/2025/01.tal +++ b/aoc/2025/01.2.tal @@ -1,47 +1,16 @@ -( advent of code 2025, day 1 ) +( advent of code 2025, day 1, second star ) %dbg { #010e DEO } -|00 - -|100 @on-reset ( -> ) banner - first-star - Dial/reset second-star BRK @banner ( -- ) ;/str !puts @banner/str - "advent 20 "of 20 "code, 20 "day 20 "1 0a 00 - - -( first star ) - -@first-star ( -- ) - ;/input Input/read - - [ LIT2 &pass $2 ] - ;/str puts - putdec2 endl - - JMP2r -@first-star/str "first 20 "star: 09 00 - -@first-star/newline ( -- ) - Number/get Dial/rotate - Number/reset - - Dial/get ORA ?{ ,/pass LDR2 INC2 ,/pass STR2 } - JMP2r - -@first-star/input ( b -- ) - DUP #0a NEQ ?{ POP !/newline } - DUP LIT "R NEQ ?{ POP !Dial/right } - DUP LIT "L NEQ ?{ POP !Dial/left } - !Number/one-byte + "advent 20 "of 20 "code 20 "2025, 20 "day 20 "1, 20 "second 20 "star 0a 00 ( second star ) @@ -50,26 +19,19 @@ ;/input Input/read [ LIT2 &pass $2 ] - ;/str puts putdec2 endl JMP2r -@second-star/str "second 20 "star: 09 00 @second-star/newline ( -- ) + Number/get Dial/rotate + #0000 Dial/get #0000 EQU2 ?{ - Dial/getraw - Number/get - #0064 DIV2k MUL2 SUB2 - Dial/op - - DUP2 #6401 LTH2 STH - #6463 GTH2 STHr ORA ( c < 25601 || c > 25699 ) - ORA + Dial/hitzero ORA } - - Number/get Dial/rotate + + Dial/fixup DUP2 putdec2 #2018 DEO Dial/get putdec2 endl @@ -151,13 +113,19 @@ @Dial/get ( -- n* ) ,/state LDR2 #6400 SUB2 JMP2r -@Dial/getraw ( -- n* ) - ,/state LDR2 JMP2r -@Dial/reset ( -- ) - #6432 ,/state STR2 JMP2r +@Dial/hitzero ( -- hitzero? ) + ,/state LDR2 + DUP2 #6401 LTH2 STH + #6463 GTH2 STHr ORA ( c < 25601 || c > 25699 ) + JMP2r @Dial/rotate ( n* -- ) + #0064 DIV2k MUL2 SUB2 [ LIT2 &state 6432 ] ( start @ 25650 ) SWP2 /op + ,/state STR2 + JMP2r +@Dial/fixup ( n* -- ) + ,/state LDR2 #0064 DIV2k MUL2 SUB2 ( mod 100 ) #6400 ADD2 ( keep in range 25600-25699 ) ,/state STR2 diff --git a/aoc/2025/mkfile b/aoc/2025/mkfile index 68c808fdd0388177d178215d6e41c64d5e8934c0..bf3e74f9f4f7af72f237a6887e3ecd341218689a 100644 --- a/aoc/2025/mkfile +++ b/aoc/2025/mkfile @@ -1,8 +1,8 @@ -DAYS=01.rom +DAYS=01.1.rom 01.2.rom all:VQ: $DAYS -%:V: %.rom +%:VQ: %.rom uxncli $stem.rom %.rom: %.tal diff --git a/aoc/2025/xx.tal b/aoc/2025/xx.tal index 28bdf484d59511c4bca437ee81b3b8836c01acd2..3b6ae395a36c97de8de262807558338349481e26 100644 --- a/aoc/2025/xx.tal +++ b/aoc/2025/xx.tal @@ -1,60 +1,86 @@ -( advent of code 2025, day xx ) +( advent of code 2025, day xx, first star ) -%dbg { #100e DEO } +%dbg { #010e DEO } -|00 - -|100 @on-reset ( -> ) banner + first-star BRK @banner ( -- ) - ;/str - &loop - LDAk #18 DEO - INC2 LDAk ?/loop - POP2 JMP2r + ;/str !puts @banner/str - "advent 20 "of 20 "code, 20 "day 20 "xx 0a 00 + "advent 20 "of 20 "code 20 "2025, 20 "day 20 "xx, 20 "first 20 "star 0a 00 + + +( first star ) + +@first-star ( -- ) + Input/read + JMP2r +@first-star/on-input ( b -- ) + JMP2r + + +( stdlib ) + +@endl ( n -- ) + #0a18 DEO JMP2r + +@puts ( str* -- ) + LDAk #18 DEO + INC2 LDAk ?puts + + POP2 JMP2r + +@putdec2 ( n* -- ) + [ LITr 00 ] + + &loop + #000a DIV2k STH2k + MUL2 SUB2 + [ LIT "0 ] ADD NIP + STH2r ROT STH + ORAk ?/loop + POP2 + + &loop2 + STHr #18 DEO + STHrk ?/loop2 + POPr JMP2r + + +( object lib ) @Input/filename "xx.input 00 -@Input/read ( callback* -- ) +@Input/read ( -- ) + #01ab DEO ;/filename #a8 DEO2 - #01ab DEO2 &loop - DUP2 ;/byte #ac DEO2 #a3 DEI #00 EQU ?/endloop ( EOF ) [ LIT &byte $1 ] - ROT ROT JSR2 + first-star/on-input !/loop &endloop POP2 JMP2r - -@first-star ( -- ) -@on-input ( -> ) - #12 DEI - - BRK - - @Number/one-byte ( b -- ) #00 SWP LIT "0 SUB - [ LIT2 &val 00 &val2 00 ] + [ LIT2 &val 0000 ] #000a MUL2 ADD2 ,/val STR2 JMP2r -@Number/get2 ( -- n* ) +@Number/get ( -- n* ) ,/val LDR2 JMP2r -@Number/get1 ( -- n ) - ,/val2 LDR JMP2r @Number/reset ( -- ) #0000 ,/val STR2 JMP2r + +( problem code ) +