This document (2008-2018 by C. Masloch) is in the Public Domain.
This document has been sloppily compiled on 2022-05-10, release 2018-10-08. WARNING: Most sections of this document are outdated, dating back to the release 2011-01-14.
This product is distributed AS IS and contains no warranty whatsoever, including warranty of merchantability or fitness for a particular purpose.
Copyright (C) 1990-1999 Mike Podanoffsky
This is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, see the file LICENSE.TXT.
C. Masloch ported the provided source code to NASM, and packed these files up for the RxDOS 7.20N release. Her associated work is released as-is, without any warranty whatsoever, and is in the public domain. This does not affect other copyrights as noted above.
2008-2018 by C. Masloch
Usage of the works is permitted provided that this instrument is retained with the works, so that any entity that uses the works is notified of this instrument.
DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.
BriefLZ - small fast Lempel-Ziv
8086 Assembly lDOS iniload payload depacker
Based on: BriefLZ C safe depacker
Copyright (c) 2002-2016 Joergen Ibsen
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
This is the free RxDOS operating system. The main programs are a widely MS-DOS compatible DOS kernel (RxDOS.COM) and a custom command line interpreter/COMMAND.COM
replacement (RxCMD). The RxDOS distribution includes some supplemental programs as well. These are a virtual file system driver for use in conventional memory (RxVDISK), boot loaders that load RxDOS.COM (ldosboot boot12, boot16, boot32), and a small program that installs ldosboot on a DOS drive (instsect).
You may send bug reports directly to my e-mail address or register a account to write it to the BTTR Software support forum. (I'm a member of BTTR Software, and even if I can't help you there are some other DOS experts.) Contact data is in section 5.
RxDOS was initially written and developed for many years by the professional programmer Mike Podanoffsky. He also wrote a book titled "Dissecting DOS" about RxDOS that was first published in 1994. However he stopped his development on RxDOS in 1999 or so, probably because he saw both MS-DOS and its best known competitor DR-DOS stopping their activities. Fortunately he released RxDOS version 7.1.5 on 1999-08-07 under the GNU General Public License.
I, C. Masloch, learned Assembly language (NASM) in 2007. I already used parts of FreeDOS for a long time when I thought about programming a DOS kernel. I didn't wanted to help with DOS-C (the FreeDOS kernel) because I can't write C so well and I really like Assembly more. In 2008 I heard from RxDOS and got it from the FreeDOS mirror servers. Later (2008-05 or so) I started porting the free RxDOS version 7.1.5 from the MASM source to NASM. This port eventually became RxDOS 7.20N.
Do not use RxDOS version 7.20N. It tries to re-produce every bug of RxDOS 7.1.5 (as found on the FreeDOS mirrors). It is not usable currently. The release of version 7.20N is only intended for developers.
Versions 7.2x are also not entirely useable yet. It is planned to release a more complete kernel later as version 7.30, which would implement all basics.
RxDOS does only consist of the DOS system core (kernel), the command line interpreter and a few supplemental programs.
It's recommended to use the programs from the FreeDOS project: Most of these run on RxDOS as well and they're all free like RxDOS as well.
If you're running some DOS (possible RxDOS from an installation disk) locate the executable instsect.com. Type ‘instsect A:
’ (without the quotes), substituting ‘A:
’ by the drive you want to install RxDOS on. In general you'll have to type ‘instsect A:
’ or ‘instsect B:
’ to install RxDOS on a floppy drive or ‘instsect C:
’ to install RxDOS on a hard drive. (Note that RxDOS can boot from any partition, including non-primary partitions and subsequent hard drives.) Then, copy the files RxDOS.COM and RxCMD.EXE to the drive you want to install RxDOS on. If you want, you can copy RxDOSPAK.COM to be used as your RxDOS.COM, which is a file packed with BriefLZ and given a boot-time unpacker.
RxDOS.COM
RxDOSPAK.COM
RxCMD.EXE
instsect.com
RXVDISK.SYS
DEVICE=RXVDISK.SYS
’. WARNING: This device driver is outdated and should not be used.
RxDOSCMD to RxCMD
RxDOSBIO (renamed RxBIO, later integrated into RxDOS.COM)
RxD_BOOT (dropped, use ldosboot and instsect instead)
RxDOSMBR (dropped, use ldosmbr instead)
Former:
\ Binaries, documentation, license,
makefile, link files
\sources Actual source, include/macro files, license
\objs Object files
\errors Assembler and linker error messages
New:
\ Make scripts
\RxBIO RxBIO source
\RxDOS RxDOS source
\RxCMD RxCMD source
\RxAPP Sources of RxMBR, RxBOOT, RxD_BOOT, RxVDISK
\MACRO Macro files
\doc Documentation, license
\lst Listings
\map Map files
\obj Object files
\bin Binaries
OUT: ax != 33FFh and ax != 3300h and ax != 0001h
ax = 7852h "Rx" for RxDOS
cx = build year
dh = build month
dl = build day
bx = DOS kernel version
di = BIO kernel version
(since RxDOS 7.23 always same as bx)
si = reserved, currently unset
INP: dx = 0
OUT: dx != 0 if supported
dx:ax -> ASCIZ filename with drive
(file in root directory), in DOSDATA
cx, bx, di, si = reserved, currently unset
INP: CY
OUT: NC, ax != 33FFh and ax != 3300h and ax != 0001h
ax = DOS capability flags
cx = reserved, set to zero
dh = size of a DPB
dl = reserved, set to zero
bh = size of an SFT
bl = size of a CDS entry
di, si = reserved, currently unset
INP: dx = 0
OUT: dx != 0 if supported
(may or may NOT clear the Carry Flag)
dx:ax -> ASCIZ version string, in DOSCODE
Example strings:
"RxDOS version 7.24 [hg 2d2992dcc533+] [2018-04-06]"
"FreeDOS kernel - SVN (build 2042 OEM:0xfd) [compiled Sep 22 2017]"
bin
)
Usage of NASM's internal linker made exe2bin unnecessary. The kernel can now only be build with NASM, object file output support is discontinued.
The "word data exceeds bounds" warnings that are displayed for biocode.asm:455, biocode.asm:504, and doscode.asm:600 can probably be ignored.
ldosboot shows messages indicating how many bytes are left available in the boot sector loaders, these are:
ldosboot iniload shows messages indicating how many bytes are left available before the various fixed labels, these are:
iniblz shows a message indicating how many bytes are used by the depacker. Additionally, building RxDOSPAK.COM also shows the same messages for ldosboot iniload as the normal build, these will generally be the same.
lDOS entry.asm and RxDOS dosdata.asm show how many bytes are left in front of specific fixed labels, these are:
The mak.sh script should be sufficient to create a makefile or simple script for your particular platform. It was created for a Linux bash environment.
The provided documentation is partly written for Halibut, a program that compiles its input to various other formats. To compile the documentation into one text file and one HTML file, use the script doc/makdoc. This script is now called by the mak.sh script too.