Minim, 42 37 35 Bytes
New solution halts by checking if [0] > 99.
$<42._^++[0]%10.$<10._^[0]>99.C=-1. With whitespace and comments:
$< 42. ; Print 42 as unicode '*' _^ ++[0] % 10. ; Increment index 0 and skip next stmt if index 0 mod 10 is nonzero $< 10. ; Print 10 as unicode '\n' _^ [0] ==> 10099. ; Skip next stmt if index 0 is 100greater than 99 C = -1. ; Set program counter to -1 (advances to 0 afterwards) Old solutions halted by checking [0] == 100...
$<42._^++[0]%10.$<10._^[0]==100.C=-1. ... or used labels and gotos.
_>1.$<42._^++[0]%10.$<10._<?([0]-100)._>0.