// https://wokwi.com/projects/410563155121595393
// for https://forum.arduino.cc/t/multitask-using-millis-interrupts-timealarm-in-combination-with-for-loops/1306996/10?u=davex

bool HOBBLE = false;
int NUM = 20;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  if (HOBBLE) {
    for (int ii = 0; ii < NUM ; ++ii) {
      Serial.print(ii);
      Serial.print(" ");
      delay(100);
    }
    Serial.println();
  }
  else // un-HOBBLED
  {
    replacement();
  }
  Serial.print("."); // or other things
}

void replacement() {
  static int ii;
  uint32_t now = millis();
  const uint32_t interval = 100;
  static uint32_t last = 0; // remember for next time
  if (now - last >= interval) {
    last = now;
    Serial.print(ii);
    Serial.print(" ");
    ii += 1;
    if (ii >= NUM) {
      Serial.println();
      ii = 0;
    }
  }
}