Simply put: Just drop the files in your DriveWire4 server folder, and access them from the Dragon using DLOAD"FILE".
The files can be Dragon DOS binary or BASIC files, or DECB binaries.
The DWLOAD client can be loaded from tape or disk or, most conveniently, embedded into the BASIC ROM.
The DWLOAD ROM
The DWLOAD client nicely replaces the (dysfunctional on Dragon 32, slow on Dragon 64) DLOAD command, and makes use of the DLOAD code locations and some unused spots in the ROM. No other parts of the BASIC ROM have been touched, so the modified ROM is 100% compatible with the original. Luckily, it fits into the high 8K ROM chip, which on most Dragon 32's is socketed (the lower 8K ROM is often soldered). The modified ROM image can therefore be burned to an EPROM and only a 24-pin ROM to 28-pin EPROM adapter is needed.
On Dragon 64, DWLOAD works in 32K mode. A modified ROM image replaces the 32K ROM (which also is socketed). This thanks to Ken, who rearranged the 32K ROM to fit the same DWLOAD code as on the Dragon 32. Compatibility is here less than 100% but you have the possibility to go full-RAM and run the original ROM from RAM if ever needed.
On power-on, the DWLOAD silently attempts to load an AUTOLOAD.DWL file. This makes it possible to have for instance a menu program running automatically. Or your favorite game The auto-loading can be disabled by pressing the Shift key.
Note that is called DWLOAD but it is spelled DLOAD on the Dragon
DWLOAD Extensible Execution Blocks (dweeb)
The DWLOAD client is relatively simple, due to the space contraints in the ROM. The dweeb is a mechanism to dynamically extend the functionality of DWLOAD. The dweeb is loaded from the server like any other program, but accesses the I/O routines of DWLOAD. It also reads its command parameters from the DWLOAD command line.
The best example is the "SAVE" dweeb. There is not enough room in the ROM to include support for saving files over DriveWire. However, this functionality can be loaded on demand. DLOAD"SAVE""MYFILE.BAS" saves a BASIC program to the DriveWire server. The SAVE functionality is only temporarily loaded into RAM and used during this invocation.
Another typical dweeb is "DOS" for booting an operating system (NitrOS-9), similar to the DOS command in HDB-DOS or the DWDOS program.
Pere has also created some dweebs for accessing VDK disk images on the DriveWire server, this is very useful for accessing Dragon DOS program collections without using a disk drive or DOS.
Since a dweeb uses the I/O routines of the calling DWLOAD, it is independent of the real transport being used, which makes development with for instance the Becker interface in XRoar very convenient.
DWLOAD only uses RAM when it is run, there is no resident code or data in RAM. It uses the same buffer space in lower RAM as CLOAD/CLOADM. A few, normally unused, locations in lower RAM is used for bookkeeping during loading.
Advantages of DWLOAD
- No fiddling with disk images
- No need for a DOS consuming RAM and blocking some programs
- Frees the cartridge memory space for other things
- Also works well in combination with DOS
- Fast and low latency
- Cartridge port free for other purposes (2015 will give us more of those)
- Puts the rarely used printer port to good use
This started last year when I revived the DLOAD command, fitting in the low-level bit-banging routines from the HDB-DOS/NitrOS9 code. However the DLOAD protocol is not so efficient, and it needs a special DLOAD server. At the same time we already have a great DriveWire4 server... I went on to extending the DWDOS program to load arbitrary files from a DriveWire server, not just boot tracks. Further work added support for reading DECB binaries, and DWLOAD was born. Months has passed with testing and further refinement, seeing the addition of Dragon DOS file format support. Still fitting in the BASIC ROM
Thanks a lot to Ken and Pere who have been beta-testing, burning ROMs and given many excellent inputs, as well as writing dweebs! I am sure they are as excited as me to share this with the Dragon community!
See also the post I made on the CoCo list in June: http://thread.gmane.org/gmane.comp.hard ... coco/78869
Availability of EPROMs and ROM/EPROM adapters
For those who cannot burn their own EPROMs I will be offering a DWLOAD EPROM modding service and socket adapters. Stay tuned on the "Sales" section.
For the press
"Best thing for the Dragon since Microsoft Color BASIC"
"After trying DWLOAD from ROM there is no going back"
"Cross-development made easy: just assemble with lwasm --format decb and directly DWLOAD it on your real Dragon"
Notes on the DriveWire4 program
The DriveWire4 server program currently has a few limitations:
- It is not able to create files using the OBJ_NAMEOBJ_CREATE DriveWire request
To save files, create empty files on the server, and use the "RESAVE" dweeb.
- Mounted files must have length of a multiple of 256 bytes
All files must be padded to be n*256 bytes long.
The attached pad256 script can be used on Linux and MacOSX.
Please see the readme.txt files in the attached collections! Use 7-zip on Windows to open .tar.xz files.