Just my bit to the discussion. QL `_zip' seems an universal container preserving QDOS header.
Not sure how many users out there still transfer files to the real thing QL over serial line as I do. This works even on unexpanded QLs, wiith only 128K of mem, where zip simply would not fit (with its 80K of code + 100K dataspace) .
EDIT
`qzip' - 69206 code / 60764 dataspace (modified)
`zip' - 74112 code / 309388 dataspace !! (ziprelease v3.0)
All is needed is to keep 15 byte QDOS header at least on executables (contains precious dataspace), which is preserved in `_zip' (all 64 bytes). On binaries the header just contain file size and can be reconstructed.
When an executable header is lost, a rule of thumb for `C' binaries, 100K may be a good start for datspace.
I have a modified zip, and zipinfo, that can output the QDOS header.
So on my *ux host I keep binary files along with the twin header.
<file>
<file>.hdr
Or <file_bin> when the header is part of the file already, as saved from QL by COPY <file_bin> TO SER2 or SBYTES SER2
Text files I keep terminated with ^Z ($1A).
These can be loaded e.g. with LOAD SER2Z
This way, I can boot the whole QL from SER2 with a set of programs and extensions.
I have also learnt to cope with qemu zip, as it puts full text verbatim in binaries, "this is qdos header" so to speak, followed by 14 byte header, w/o initial $ff flag
EDIT example
Code: Select all
00000000 5d 21 51 44 4f 53 20 46 69 6c 65 20 48 65 61 64 |]!QDOS File Head|
00000010 65 72 00 0f 00 01 00 00 44 58 00 00 00 00 60 00 |er......DX....`.|
Code: Select all
tcat@lynx:~/ql$ qlsnd
No such file
Usage: qlsnd -b [baud] -p[ause] [file]
tcat@lynx:~/ql$ qlrcv
No such file
Usage: qlrcv -b [baud] [file]
tcat@lynx:~/ql$ mkhdr
No such file
Usage: mkhdr -t [type] -s [data space] [file]
tcat@lynx:~/ql$ qemuh # qemulator
No such file
Usage: qemuh [file]
Code: Select all
tcat@lynx:~/ql/sw$ zipinfo -v qed.zip QED
...
file system or operating system of origin: SMS/QDOS
...
The central-directory extra field contains:
- A subfield with ID 0xfb4a (SMS/QDOS) and 72 data bytes.
The QDOS extra field subtype is `QDOS'
00 00 1e dc 00 01 00 00
06 00 00 00 00 00 00 03
51 45 44 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 47 9d e7 27
00 00 00 02 00 00 00 00.
- A subfield with ID 0x5455 (universal time) and 5 data bytes.
The local extra field has UTC/GMT modification time.
There is no file comment.
Tom