Optimized BW-DOS by DMSC
March 3, 2024 · View on GitHub
This is a fork of the original BW-DOS sources, converted to MADS assembly syntax and with modifications by HolgetJanz and DMSC.
The main changes from BW-DOS 1.3 to this sources are described bellow.
There is a makefile to assemble all sources, just type make to generate all
the bianry files in the build/disk folder and build and a disk image using
the mkatr tool.
Changes from BW-DOS 1.3
Changes to the resident DOS and command processor
-
Reduced memory usage: new version has
MEMLOat $1E9D, 43 bytes less than the original. Also, the disk file is 181 bytes shorter. -
Modern syntax for the commands.
Internal commands are renamed to modern ones,
| Original | New |
|---|---|
| RENAME | REN |
| ERASE | DEL |
| PROTECT | PROT |
| UNPROTECT | UNPROT |
| CREDIR | MD |
| DELDIR | RD |
| CWD | CD |
| LOAD | LOAD |
| CAR | CAR |
| RUN | RUN |
| TYPE | TYPE |
| DIR | DIR |
| DIRS | DIRS |
| BASIC | BASIC |
-
Adds
MANcommand, same asTYPE, allows reading on-line documentation. -
Always disable BASIC on startup for the XL/XE computers, so it boots directly to the command processor if no external cartridge is present. This means that you need to type
BASIC ONand thenCARto run BASIC. -
Move
COMTABto page 7, at absolute address $726. This allows programs specifically written for BW-DOS 1.4 or newer to call the API directly. -
Size optimizations in many areas, obfuscation in the binaries removed and simplified the loader.
-
The version is shown as 1.4D, 1.4 is the modifications by HolgetJanz.
-
Fixed some minor bugs:
- Improve performance of sector allocation for overwrite cases.
- Don´t accept
@as9when parsing hexadecimal numbers. - Avoid screen corruption when enabling BASIC.
- Fixes detection of RAMBO XL 256k expansion in RAMDISK handler.
Optimization to the resident commands
Many of the external commands are reduced in size, both in disk and in the
resident size after installation, for example, RAMDISK now only uses 31 bytes
of low RAM and XFSIO only 103.
| Command | Original Size / Resident | New Size / Resident |
|---|---|---|
| ARGSPRN | 1484 / 158 | 1446 / 158 |
| ARGSRTC | 1388 / 270 | 1346 / 270 |
| AUTOCWD | 731 / 74 | 639 / 74 |
| CLOCK | 1069 / 210 | 821 / 151 |
| DOSDRIVE | 986 / 108 | 876 / 70 |
| KEYBUFF | 1066 / 278 | 825 / 183 |
| RAMBOX | 1746 / 34 | 1658 / 34 |
| RAMDISK | 2165 / 73 | 2014 / 31 |
| RTIME8 | 1316 / 94 (213) | 1120 / 91 (199) |
| XFSIO | 1074 / 115 | 925 / 101 |
| XLRDISK | 1341 / 73 | 1274 / 31 |
Optimization to the external commands
Many of the external commands are reduced in size:
| Command | Original Size | New Size |
|---|---|---|
| BACKUP | 4617 | 4611 |
| BLOAD | 487 | 377 |
| BOOT | 605 | 511 |
| CHKDSK | 470 | 434 |
| CHVOL | 344 | 301 |
| COPY | 1306 | 1142 |
| CUT | 702 | 628 |
| DATE | 661 | 509 |
| DIRMAST | 2682 | 2252 |
| DISASS | 1603 | 1179 |
| DUMP | 783 | 600 |
| ELSE | 243 | 166 |
| ENDIF | 9 | 9 |
| FORMAT | 2784 | 2652 |
| HEXEDIT | 728 | 558 |
| IF | 442 | 308 |
| MDUMP | 554 | 382 |
| MEM | 620 | 503 |
| MEMEDIT | 502 | 366 |
| MENU | 9883 | 9695 |
| MOVE | 1736 | 1520 |
| MSDOS | 2310 | 2292 |
| MSINI | 1916 | 1565 |
| NEWED | 422 | 364 |
| OFFLOAD | 935 | 829 |
| PAUSE | 273 | 150 |
| SAVE | 466 | 381 |
| TIME | 659 | 511 |
| UNERASE | 1524 | 1498 |
| VERIFY | 227 | 197 |
| XBAT | 315 | 238 |
Extra external commands
Currently, the new external commands are:
PWD: shows the current (default) path in the given drive.