Awesome
Optimized BW-DOS by DMSC
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
MEMLO
at $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
MAN
command, 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 ON
and thenCAR
to run BASIC. -
Move
COMTAB
to 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
@
as9
when 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.