( 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