I am thinking about this -- and I am confused.
I run CP/NET with serial transport at 38400 baud... or 3840 characters per second. My Altair-Duino is 2.5Mhxz (or so).
But... assuming 2Mhz (for simplicity) - we have 520 cycles per byte. Both CP/NET and XMODEM will transmit around
128 characters, plus a bit for header, then wait for ack/nak. *if* we catch the first character. a 2Mhz 8080 can do it... at
115200... It comes to around 100 cycles per byte, 10 to 20 instructions... (judge 5 or 10 clocks per instruction).
If checksum cannot be computed in the same time, take a second pass. You need only capture the packet...
Note: no display, no debug, just poll for charin, get put into buffer:
lxi h,buf
mvi c, len
top in status ; 10
ani rdy ; 7
jz top ; 10
in data ; 10
mov m,a ; 7
inx h ; 5
dcr c ; 5
jnz top ; 10
is the loop for 8080 - annotated with cycle counts. Total is 64 cycles per byte, so 115200 is "doable" for xmodem
on 2Mhz 8080.
Of course, there is the (lots of time) between receiving last packet byte and sending the ack. If your xmodem is
structured to send the ack right away, you *may* miss the next packet! That would be a "wrong" implementation.
250000 bps would be TOO FAST for 2Mhz 8080. A 12 Mhz cycle should be able to support XMODEM at roughly
1.5 mbit transmission rate. 15Mhz should support closer to 2 megabits/second
Or are you bit-banging the stream with Z80? Which may be why the speeds seem off by an order of magnitude.
Sorry -- I may just be missing context...
FredW