nope, same there as on Codebase.
Thinking of some simple shift+add with the 1/10 since that is a very simple bitpattern 110011001100110011...
.export htd32 .proc htd32 HTD_IN = ARGS+0 ; 32-bit input HTD_OUT = RESULT ; 10-digit output, one digit per ZP-loc ldy #0 ;digit position : ; Count digits on position y ldx #<-1 ;digit value : inx sec lda HTD_IN+0 sbc table0,y sta HTD_IN+0 lda HTD_IN+1 sbc table1,y sta HTD_IN+1 lda HTD_IN+2 sbc table2,y sta HTD_IN+2 lda HTD_IN+3 sbc table3,y sta HTD_IN+3 bcs :- ; Rollback underflowed result clc lda HTD_IN+0 adc table0,y sta HTD_IN+0 lda HTD_IN+1 adc table1,y sta HTD_IN+1 lda HTD_IN+2 adc table2,y sta HTD_IN+2 lda HTD_IN+3 adc table3,y sta HTD_IN+3 txa sta HTD_OUT,y iny cpy #10 bne :-- rts table0: .byte <(1000000000>> 0),<(100000000>> 0),<(10000000>> 0),<(1000000>> 0),<(100000>> 0),<(10000>> 0),<(1000>> 0),<(100>> 0),<(10>> 0),<(1>> 0) table1: .byte <(1000000000>> 8),<(100000000>> 8),<(10000000>> 8),<(1000000>> 8),<(100000>> 8),<(10000>> 8),<(1000>> 8),<(100>> 8),<(10>> 8),<(1>> 8) table2: .byte <(1000000000>>16),<(100000000>>16),<(10000000>>16),<(1000000>>16),<(100000>>16), <(10000>>16),<(1000>>16),<(100>>16),<(10>>16),<(1>>16) table3: .byte <(1000000000>>24),<(100000000>>24),<(10000000>>24),<(1000000>>24),<(100000>>24), <(10000>>24),<(1000>>24),<(100>>24),<(10>>24),<(1>>24) .endproc