Hey DM,
Hoping you can help clarify something for me. I'm playing with zmodem source code.
In a ZFILE frame, there are 4 bytes used for "flags", and I thought they were used as bits?
For ZF0, google AI certainly told me they were bits, but suggested that they are:
Bit 0: LSZ_CONVBIN (Transfer in binary)
Bit 1: LSZ_CONVCNL (convert new lines)
BIt 2: LSZ_CONVRECOV (resume transfers).
However, looking at some old code, I see that the header files had them recorded as 0x01, 0x02, and 0x03 respectively,
and the code I was looking at was setting ZF0 with
ls_txHdr[LSZ_F0] = LSZ_CONVBIN [pipe] LSZ_CONVRECOV when sending a file.
which doesnt make sense having 0x01 [pipe] 0x03, which equals 3, and bit 0 and 1 are on (not bit 2).
So I went to google AI to help me understand, and it infact came back a similiar explaination (indicating ZF0 CONVRECOV is 0x03).
So I looked at your zmodem code, and I see that you just set ZF0 to just 0x01.
So is this a bug in the code I'm referencing? ie: LSZ_CONVRECOV should actually be 0x04 do you know, or are the flags actually treated as values?
Secondly, when looking at your code I was confused on how you are setting ZF1. It seems it could end up as either ZF1_ZMPROT 0x07, or ZM1_ZMCLOB 0x04 or ZF1_ZMNEW 0x05 or ZF1_ZMCRC 0x02. IE: also "values".
The Google AI explanation for ZF1 is that it bit has a different purpose. 0x1 - make new name (ok that lines up when used with 0x04 and you have 0x05), but
0x2 - modify an existing file, and
0x4 - protect and existing file
0x8 - clobber a file.
So your definitions for 0x02 and 0x04 differ, and makes no reference to a CRC bit.
Any of this make sense? Is the difference due to implementation or version or something else I havent discovered yet?
Sysop: | Tetrazocine |
---|---|
Location: | Melbourne, VIC, Australia |
Users: | 14 |
Nodes: | 8 (0 / 8) |
Uptime: | 73:01:26 |
Calls: | 178 |
Files: | 21,502 |
Messages: | 79,654 |