PC-QL File Transfer
These days, the internet is probably the primary source of QL software. Files are generally held in a format called 'zipped' on web pages, which means that most or all files have been combined into a single file, called an 'archive' which is both convenient and usually makes the package smaller and hence faster to download on a dial-up internet connection.
I am often asked how to get these files onto a QL. Most people seem to download files on a Windows system, and the usual query runs something like:
"I downloaded program xyz from your website, unzipped it with WinZip on my PC and find it doesn't work - can you help me?"
If the zip file contains a QL executable (a program you can EXEC), DO NOT unzip it in Windows. It won't work. Not at all. Windows doesn't understand QL file headers and these are lost totally and irretrievably by Windows. You can usually tell when you copy it to a QL and find that when you try to EXEC a program it stops with a 'bad parameter' or similar error when the QL realises there is no executable file header and no dataspace information.
This poses an interesting dilemma. Zip files you download from the internet have to be copied to the QL and unzipped within QDOS or SMSQE environments, but how do you transfer files and how do you get the Unzip program to a QL in the first place, since it is usually supplied zipped itself, so you find yourself in a catch 22 situation of needing a copy of Unzip to unzip your copy of Unzip!
We will need to look at five aspects of this:
And we have to bear in mind of course that file transfer programs are just that - file TRANSFER program. They do not do any reformatting of data, you will need more programs for that. For example, a Quill DOC file will not readily load into Word (or vide versa) without conversion. It is important to realise that TRANSFER and FORMAT CONVERSION are two very different but related subjects.
Simply download programs from websites in the normal way and store them on your PC hard disk. I tend to store them in a receive directory called C:\RECV (using sub-directories if necessary), to make it easier to find them later when copying them to floppy disk.
It is possible to set up a serial link between the PC and QL and transfer files via a cable between the two computers. While this works and can indeed be very useful and flexible, it tends to be somewhat slow, as a standard QL will only work reliably at up to 9,600 baud. For more on serial links, follow this link.
There are very few programs available for Windows which understand QL floppy disks. Two such programs are QLTools (a DOS program) and WXQT2 from Jonathan Hudson. I use WXQT2 myself and know how well it works and how easy it is to use once set up. Both are available from Jonathan's website http://www.daria.co.uk/qdos/. Simply install WXQT2 in your Start menu or as a desktop shortcut icon in the usual way for your version of Windows.
WXQT2 is a Windows program which offers two file selection boxes for source and destination drive file lists. You simply select which drive to use - the drives can be a PC hard disk, a QL floppy disk, or a "QXL.WIN" container file as used by some emulators (e.g. QPC2, QXL, uQLx and QemuLator). WXQT2 will need the QLtools program to reside in the same directory as the wxqt2.exe program. Note: like most of Jonathan's software, these programs may come as part of extensive packages including source code and documentation, for wxqt2 you will basically only need the wxqt2.exe program and the relevant version of qltools. There are two versions of QLtools, one for Windows 95/98 type systems and the other for NT-type file systems. Put the appropriate one into the same directory as wxqt2.exe and ensure that the version you are used has been named qltools.exe. If you are using Windows XP you will need to use the Windows NT version of QLtools.
To set up WXQT2 to transfer between PC hard disk and a QL format floppy disk, click on the FILE menu in WXQT2 and select the OPTIONS command. This dialogue box appears:
In the Native Directory box, enter a PC drive name and directory. WXQT2 seems to recognise both Windows and Linux style name conventions. As I store most of my QL downloads in a directory called RECV on my PC, I entered C:\RECV here. There are some tick boxes to the right - ensure the top row has a tick in the left hand box, which ensures that the left files list in wxqt2 corresponds to the C:\RECV you just entered. In the QL Floppy box, enter A: (assuming you will be using the PC's floppy disk drive A: for the QL disk of course). Ensure that the second row of tick boxes has a tick in the right hand column, this ensures that the right hand files list of wxqt2 corresponds to the A drive you entered. This sets up WXQT2 to list the PC hard disk files in the left hand window, and the QL disk files list in the right hand window. Click on OK to save the configuration.
To transfer files, you simply highlight the files to be copied by clicking on the filename (if more than one file is to be transferred, click on the first to highlight it, then hold down the CTRL key while clicking on the second and subsequent filenames to create multiple selections). To actually transfer the files, click on the appropriate arrow between the two windows to indicate the direction of the file transfer. It really is that simple to use. Using it is much easier than setting it up in the first place! WXQT2 can also transfer files in and out of a QXL.WIN hard disk drive as used by emulators like QPC2, QXL, uQLx and recent versions of Windows QemuLator.
You may find it easier to copy the files downloaded onto a PC format floppy disk, which you can place into a QL floppy disk drive and use a DOS/Windows disk reader running on a QL. Possibly the best known such program is Discover from Dave Walker, but there are a number of other programs like IBMdisk, ATdisk, Ergon Floppy Disk Utilities, MultiDOS, Utility Room Reader and Media Manager. Some of these programs are available from my File Transfer page, others are available from most good QL software download sites and PD libraries. I won't try to give instructions for them here because there are so many such programs and most are quite easy to use, like most QL software.
The official version of Unzip for QDOS is maintained by Jonathan Hudson and is the QDOS port of the official Info-Zip group zip archiving package. It is available from Jonathan Hudson's website http://www.daria.co.uk/qdos/or from my Archivers download page. There are also older versions of Zip and Unzip available from various websites and PD libraries - these are not official versions and probably best not used, better to stick to the official Info-Zip group version of Unzip for QDOS. You can get zipped copies of unzip, and also a version called a 'self-extracting' version. Try to get a copy of version 5.32 or 5.41 or later. Note that v5.41 may give an error message such as "signal extensions are missing" when it starts, this may be ignored, the program appears to work perfectly well without these extensions if you do not have them on your system. If you already have a version of Unzip on your system, it will normally unzip more recent versions if you wish to update your copy. If you don't have a copy of Unzip already, download the Self-Extracting (SFX) version - this can be unpacked on a QDOS or SMSQE system even if you don't already have a copy of Unzip to decompress it. Note that the program needs an expanded memory system, preferably 384K or more. This means you may not be able to unpack it on a 128K QL or a version of QemuLator using just 128K of memory for example.
Once you have downloaded the SFX version of Unzip from Jonathan's website, you will have a file called unzip541xQ.bin or unzip541xQ_bin. The '541' may vary depending on the actual version number. The Q indicates it's the QL version.
WARNING: by default you will find this file is called 'unzip541xQ.bin' - it has a full stop character in the filename. On a QDOS/SuperBASIC machine (including machines and emulators using a Minerva ROM) filenames containing full stop characters have to be enclosed in quotes. SMSQE/SBASIC systems will normally allow unquoted filenames to contain full stop characters. If you are unsure, enclose the filename in quote marks, i.e. 'unzip541xQ.bin' or "unzip541xQ.bin"
Transfer it to your QL system then follow this procedure to 'self-extract' the Unzip program and its associated files. It is not difficult, but it must be done totally correctly or the process may not work properly.
Ensure you have Toolkit 2 active on your QL system. In most cases this is automatic. Where Toolkit 2 is supplied as part of a disk interface such as those from Miracle Systems, you may need a TK2_EXT command to activate it.
We'll assume that your Unzip SFX is on FLP1_ and we'll be decompressing it to FLP2_. If you only have a single disk system, you can of course decompress it to the same drive, or to a temporary ramdisk and copy it to disk afterward. The first step is to LRESPR the SFX:
Please remember that the ".bin" extension may be renamed to "_bin" during the original transfer process, if so, use LRESPR FLP1_unzip541xQ_bin instead. The program will now issue simple instructions on the screen as to how to proceed:
You must enter a device/directory name for temporary files created during the decompression process. I used ramdisk RAM1_ in the example above. Then enter the drive/directory name to extract the Unzip program files to. I used FLP2_ in the example above. It should then create the temporary files, then issue the following message:
Press any key to exit. To complete the self-extraction, you have to LRUN the SFX_bas program it created on the drive you specified. In most cases, this will work without problem, in a few cases (e.g. on QPC2 emulator v3.32) this may result in a frozen machine. In this case, a slightly different procedure is needed. Restart the process as far as the message above, press the key to exit, but DO NOT attempt to LRUN the SFX_bas basic program. Copy it to the screen with a VIEW or COPY command to see that it's a short list of basic commands like this:
EW RAM1_SFX_exe;'-d FLP2_'
What you have to do is to manually type in these commands instead.
Type in the first line and press ENTER:
EW RAM1_SFX_exe;'-d FLP2_'
Obviously the drive names depend on what you entered earlier. EX may be used instead of EW if preferred. This unpacks the Unzip program files. Then enter the three delete commands to get rid of the temporary files. You should now have a copy of the full Unzip package on FLP2_ (or whichever drive you specified!).
If all this fails and you are still stuck, you have two choices of how to get a working Unzip. First option is to get a copy on disk from a PD library or a friend who already has a copy. I think the terms of the licence allow you to get it free or certainly at no profit (i.e. the person supplying it to you may make reasonable charges to cover costs involved, but not make a profit). Second option is to extract or download a copy of unzip to Windows, unzip it there and accept that Windows will destroy the executable file header. Having transferred it to the QL, you'll find it won't start and may give a 'bad parameter' error when you try. Here is how to repair it - load it into memory and use the SEXEC command from SuperBASIC or SBASIC to save a repaired copy of Unzip. Run this little program for Unzip v5.32:
100 fl = FLEN(\'FLP2_Unzip')
110 base = ALCHP(fl)
120 LBYTES FLP2_Unzip,base
130 DELETE FLP2_Unzip
140 SEXEC FLP2_Unzip,base,fl,51270 : REMark change to 51810 for v5.41 of Unzip
150 RECHP base
Note that the dataspace value at the end of line 140 varies slightly, depending on the Unzip program version. The dataspace value is 51270 for version 5.32, or 51810 for version 5.41. fl is the program length, and should be 108460 for v5.32, or 111158 for v5.41
There is a potential "Catch 22" scenario in terms of getting a first copy of QL Unzip onto a QL:
1. If you unzip the QDOS unzip program into Windows ready to transfer to QL, it loses its executable file, so by the time you've transferred it to a QL disk or over a serial link, you suddenly find it won't run, giving a 'bad parameter' or similar error. This can be fixed using the example above, but it is not a job for the inexperienced user as so much can go wrong!
2. You need a copy of QL Unzip to unzip QL Unzip on a QL so as not to lose the executable file header.
To some extent, this can be worked around by having a QL emulator such as the now free QPC2 (from www.kilgus.net) which is able to read and write both QL and DOS/Windows format floppy disks - QPC2 for example can use a USB floppy disk drive on a PC.
Another workaround I've created takes advantage of the fact that QL BASIC programs (unlike QL executables, i.e. programs you start with EXEC) can safely be unzipped in Windows prior to transfer to QL. Using that fact, I reduced a copy of QDOS Unzip down to DATA statements in a QL BASIC program. Transfer that program to a QL, run it, and it builds a copy of Unzip on the QL to get you started. Once you have a copy of Unzip, you can now transfer QL zipped files to the QL and use that copy of Unzip to decompress the zip files. Then you can get the full copy of both Zip and Unzip from Jonathan Hudson's website at http://www.daria.co.uk/qdos/
To get this program, visit my Archivers page at http://www.dilwyn.me.uk/arch/index.html and scroll down to Job2Bas. Just under that you'll find links to download copies of two versions of QL Unzip - try v5.32 first for the reasons stated under v5.42.
Once you've got Unzip on your system, you are then faced with how to use it. As it's a program ported from other platforms, its instructions are largely based on the original documents with a short QL specific readme file. I'll assume here you'd like simple basic use instructions to get you going the first few times. Remember that Unzip can only really work on an expanded memory system (i.e. not on a system with only 128K of RAM)
I'll assume you need to unzip a zipped file called FLP1_EXAMPLE_ZIP, and that it's to be unzipped to FLP2_, and that your copy of the Unzip program is also on FLP1_. The command needed to unzip it is:
EW FLP1_UNZIP;'-d FLP2_ FLP1_EXAMPLE_ZIP'
The -d directive is followed by a space and the drive name to unzip the file to, then another space before the filename of the zip file. If the -d FLP2_ is omitted, example_zip will be decompressed to the DATA_USE default device instead:
There are also pointer driven front ends for Unzip, like Archivers Control Panel (ACP) from Thierry Godefroy which are well worth looking at if you intend to make a lot of use of Unzip. They are menu driven and save a lot of work typing in such commands! Archivers Control Panel will also handle archives made with other programs like Zoo and LHA/LHQ.
The three main QL emulators for PCs have very different ways of transferring files between QL and Windows/DOS.
QPC2 users probably have it best, since that emulator has something called a DOS device, where you have up to 8 'drives' called DOS1_, DOS2_, DOS3 etc up to DOS8_ which can be defined as corresponding to various PC drive and directory names, e.g. DOS1_ might be the main hard disk, drive C: and DOS2_ might be the second hard drive if you have one, or the CD-ROM (drive D:) Do remember that QPC2 can also read PC floppy disks, making it easy to transfer files between QL and PC floppy disks. QPC2 can read PC format floppy disks and write QL files to them as well, although you may find yourself limited to short filenames like the old 8.3 DOS names. Being an SMSQ/E based system with SBASIC, unquoted filenames may contain full stop characters, which is very useful.
QemuLator users can also transfer files to and from the PC hard disk from within the emulator. This is achieved by making one of the 'Microdrive' slots at the bottom correspond to the PC hard disk. To assign a slot to the PC hard disk, just click on one of the slots at the bottom of the QemuLator display. In the little menu which appears, click on 'Attach Directory' and navigate to the C drive or whichever directory is required. Supposing you clicked on the second slot, reference to WIN2_ would then actually point to the PC hard directory and you could copy a file to the floppy drive attached to slot one by means of COPY WIN2_filename TO FLP1_filename. Do bear in mind that QemuLator (like other QDOS based systems) will require you to enclose filenames containing full stop characters in quotes.
Unfortunately, life can be a little more difficult with QLay and QLay2. You may need to use the tools software supplied to transfer files back and forth. I am not really familiar with this on QLay so I'll leave you to study the documentation to work it out!
Good luck! I assure you that the only hard part of all this is getting it all set up the first time, from then on transferring downloaded software to the QL is quite easy once you get used to the process involved. There are other possibilities too, including special software which encodes and decodes or appends QL file header information in such a way that it's preserved when saved into the Windows environment, but that's rather technical a subject best not gone into too much here.
Return to section index | Return to home page