Much as I hate to try to prove myself wrong, try this, which substitutes byte for unsigned long, and "makes up" a one-byte millis:

#include <Streaming.h>

byte seconds = 0;

byte lastSecond = 0;

byte myMillis = 0;

int count;

void setup ()

{

Serial.begin (115200);

Serial.println ();

}

void loop ()

{

myMillis++;

if (myMillis - lastSecond >= 10)

{

seconds++;

lastSecond += 10;

}

// display seconds

Serial << "myMillis = " << _DEC (myMillis) << endl;

Serial << "lastSecond = " << _DEC (lastSecond) << endl;

Serial << "seconds = " << _DEC (seconds) << endl;

// stop if enough done

if (count++ > 300)

while (true) {}

} // end of loop

Output:

myMillis = 1

lastSecond = 0

seconds = 0

... blah blah ...

lastSecond = 250

seconds = 25

myMillis = 251

lastSecond = 250

seconds = 25

myMillis = 252

lastSecond = 250

seconds = 25

myMillis = 253

lastSecond = 250

seconds = 25

myMillis = 254

lastSecond = 250

seconds = 25

myMillis = 255

lastSecond = 250

seconds = 25

myMillis = 0

lastSecond = 250

seconds = 25

myMillis = 1

lastSecond = 250

seconds = 25

myMillis = 2

lastSecond = 250

seconds = 25

myMillis = 3

lastSecond = 250

seconds = 25

myMillis = 4

lastSecond = 250

seconds = 25

myMillis = 5

lastSecond = 250

seconds = 25

myMillis = 6

lastSecond = 250

seconds = 25

myMillis = 7

lastSecond = 250

seconds = 25

myMillis = 8

lastSecond = 250

seconds = 25

myMillis = 9

lastSecond = 250

seconds = 25

myMillis = 10

lastSecond = 250

seconds = 25

myMillis = 11

lastSecond = 250

seconds = 25

myMillis = 12

lastSecond = 250

seconds = 25

myMillis = 13

lastSecond = 250

seconds = 25

myMillis = 14

lastSecond = 250

seconds = 25

myMillis = 15

lastSecond = 250

seconds = 25

myMillis = 16

lastSecond = 250

seconds = 25

myMillis = 17

lastSecond = 250

seconds = 25

myMillis = 18

lastSecond = 250

seconds = 25

myMillis = 19

lastSecond = 250

seconds = 25

myMillis = 20

lastSecond = 250

seconds = 25

myMillis = 21

lastSecond = 250

seconds = 25

myMillis = 22

lastSecond = 250

seconds = 25

myMillis = 23

lastSecond = 250

seconds = 25

myMillis = 24

lastSecond = 250

seconds = 25

myMillis = 25

lastSecond = 250

seconds = 25

myMillis = 26

lastSecond = 250

seconds = 25

myMillis = 27

lastSecond = 250

seconds = 25

myMillis = 28

lastSecond = 250

seconds = 25

myMillis = 29

lastSecond = 250

seconds = 25

myMillis = 30

lastSecond = 250

seconds = 25

myMillis = 31

lastSecond = 250

seconds = 25

myMillis = 32

lastSecond = 250

seconds = 25

myMillis = 33

lastSecond = 250

seconds = 25

myMillis = 34

lastSecond = 250

seconds = 25

myMillis = 35

lastSecond = 250

seconds = 25

myMillis = 36

lastSecond = 250

seconds = 25

myMillis = 37

lastSecond = 250

seconds = 25

myMillis = 38

lastSecond = 250

seconds = 25

myMillis = 39

lastSecond = 250

seconds = 25

myMillis = 40

lastSecond = 250

seconds = 25

myMillis = 41

lastSecond = 250

seconds = 25

myMillis = 42

lastSecond = 250

seconds = 25

myMillis = 43

lastSecond = 250

seconds = 25

myMillis = 44

lastSecond = 250

seconds = 25

myMillis = 45

lastSecond = 250

seconds = 25

myMillis = 46

lastSecond = 250

seconds = 25

Once we reach lastSecond = 250, seconds gets stuck on 25.