I haven't had the time to try compiling your code, but if I understand correctly, the "far copy" uses (HHH)(NNN)10 LLLLLLLL... so "far copy" has a "length" of 3 bits (length of 8 or 8+1 = 9 bytes) ? And your "far copy" has a "range" of 3+8 = 11 bits... I assume this is an unsigned "negative" offset upto -2048 ? Otherwise it seems (correct me if I am wrong) it might be a signed range of -1024 to +1023 ?
I assume purely negative offset (11 bit), because any positive offset (10bit+sign) would only be useful if "old RAM" was to be re-used (like in a video).
Err... I have a day off from work, so maybe I'll have the time to try this and report back!
Last Edit: Feb 27, 2015 8:09:57 GMT by hydrophilic: Typos!
The copy is always from behind the current point. You can't copy what has not been sent to the vdc yet. so its like this: (sliding window)(future window). The data stream is fed into future window one byte at a time. Then as it is processed it goes into the sliding window then out of scope.
so, a negative number is never needed.
If the copy is 2 to 8 bytes (encoded as 1-7) If the copy is 64 bytes, its (encoded as 0)
Edit: you don't have to compile. The files have been attached to that post. one d64 and one zip
Yeah, I thought your code was purely negative because you don't use video... Sadly I haven't received any time off to actually test your code... (and of course I would love to finish *my* code... *sigh*)