( advent of code 2025, day 1 ) %dbg { #010e DEO } |00 |100 @on-reset ( -> ) banner first-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: 20 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 ( 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 ( callback* -- ) ;/filename #a8 DEO2 #01ab DEO &loop DUP2 ;/byte #ac DEO2 #a3 DEI #00 EQU ?/endloop ( EOF ) [ LIT &byte $1 ] ROT ROT JSR2 !/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 @ 1050 ) SWP2 &op $1 #0064 DIV2k MUL2 SUB2 ( mod 100 ) #6400 ADD2 ( keep in range 100-199 ) ,/state STR2 @Dial/left ( -- ) [ LIT2 SUB2 _/op ] STR JMP2r @Dial/right ( -- ) [ LIT2 ADD2 _/op ] STR JMP2r