 // --------------------+
 
 #if ArduinoMicro
+ #define version "ArduinoMicro"
 
  // Pins for Gigatron
  #define SER_DATA  PB1


    // Check that segment doesn't cross the page boundary
    if ((address & 255) + len > 256) {
      Serial.println("!Data error (page overflow)");
      return;
    }

    // Send downstream
    Serial.print(":Loading ");
    Serial.print(len);
    Serial.print(" bytes at $");
    Serial.println(address, HEX);
    Serial.flush();

    sendGt1Segment(address, len, segment);

    // Signal that we're ready to receive more

{
  int nextByte;

  #if hasSerial
    #define readNext() {\
      nextByte = gt1 ? pgm_read_byte(gt1++) : nextSerial();\
      if (nextByte < 0) return;\
    }
    #define ask(n)\
      if (!gt1) {\
        Serial.print(n);\
        Serial.println("?");\
      }
  #else
    #define readNext() {\
      nextByte = pgm_read_byte(gt1++);\
      if (nextByte < 0) return;\
    }
    #define ask(n)
  #endif

  byte segment[300] = {0}; // Multiple of N for padding

