LS-DOS 6.3.1 Source Code Restoration Project
The System

[Copyright 1999,2002,2004,2006 Frank Durda IV, All Rights Reserved.
Mirroring of any material on this page in any form is expressly prohibited.
The official web site for this material is:  http://nemesis.lonestar.org
Contact this address for use clearances: clearance at nemesis.lonestar.org
Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]
Did some search engine drop you right here? Visit the 6.3.1 Source Code Restoration Project Index page first!
Also read History of the 6.3.1 Source Code Restoration Project


The entire LS-DOS 6.3.1 source tree is available on LS-DOS 6 format or MS-DOS format floppy diskettes, including all tools and TRSDOS 6/LS-DOS 6 utilities needed to assemble the entire operating system. This can be obtained from M. A. D. Software


LS-DOS 6.3.1 LOWCORE

LOWCORE is the collective name for the resident routines that are stored in the boot track of TRSDOS 6 and LS-DOS 6. LOWCORE is stored in the file BOOT/SYS on bootable media. LOWCORE contains the bootstrap loader, certain low memory storage locations, the I/O drivers, the DCBs and DCTs, memory bank handling, byte I/O routines, time, interrupt and common mathematical functions. The file normally occupies track 0 on a system disk, and the boot sector (1) is read into memory by the computer's boot ROM. Once loaded, control is transfered to the boot sector which loads the remainder of the boot track (LOWCORE) using code contained in the boot sector. After the entire boot track is present, enough functions are available to locate the system disk directory, locate and load the contents of SYS0/SYS, where the boot process continues. The bulk of both LOWCORE and SYS0 remain in memory at all times.

The LOWCORE source code is divided into several subsections. The major ones are listed below.

DCB area - Default DCBs for the standard I/O devices.
BOOT - Boot loader for SYSres and CRT controller initialization
SYSINFO & DCT - The stack area, input buffer, and default DCTs.
IODVR - Byte I/O handling for standard and non-standard devices.
MULDIV - Math routines used by the system (needed during boot to compute disk track/cylinder positions.
CLOCKS - Heartbeat processing, vidram and bank switching.
KIDVR - The keyboard driver and type-ahead processing.
DODVR - The video driver and @VDCTL SVC handler.
PRDVR - The printer driver.
FDCDVR - The floppy disk driver.

LOWCORE source code, resident routines, Z80 Assembler (ASCII, NAME=LOWCORE/ASM) BUILDVER source code, conditional assembly directives, Z80 Assembler (ASCII, NAME=BUILDVER/ASM)

BOOT4 source code, lowcore bootstrap routines, Z80 Assembler (ASCII, NAME=BOOT4/ASM)
CLOCKS source code, lowcore clock routines, Z80 Assembler (ASCII, NAME=CLOCKS/ASM)
DODVR source code, display driver, Z80 Assembler (ASCII, NAME=DODVR/ASM)
FDCDVR source code, floppy disk driver, Z80 Assembler (ASCII, NAME=FDCDVR/ASM)
IODVR source code, lowcore routines, Z80 Assembler (ASCII, NAME=IODVR/ASM)
KIDVR source code, US keyboard driver, Z80 Assembler (ASCII, NAME=KIDVR/ASM)
KIDVRFG source code, French/German keyboard driver, Z80 Assembler (ASCII, NAME=KIDVRFG/ASM)
MULDIV source code, lowcore math routines, Z80 Assembler (ASCII, NAME=MULDIV/ASM)
PRDVR source code, printer driver, Z80 Assembler (ASCII, NAME=PRDVR/ASM)

LOWCORE source code, full assembly listing, Z80 Assembler (ASCII, NAME=LOWCORE/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
LOWCORE source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

LOWCORE/CIM, executable, absolute image, Z80 Machine Code (BINARY, NAME=LOWCORE/CIM)

During the assembly of the LOWCORE/CIM module, the file LDOS60/REF is generated. This is converted into LDOS60/EQU, which is used by all subsequent operating system assembly steps.

LDOS60 reference file, EDAS /REF file (BINARY, NAME=LDOS60/REF)
LDOS60 equate file, EDAS Assembler equate file (ASCII, NAME=LDOS60/EQU)


LS-DOS 6.3.1 SYS0

SYS0 is the second half of the resident routines that make up the TRSDOS 6 and LS-DOS 6 operating system. SYS0 is stored in the file SYS0/SYS and is loaded into memory by routines in the boot track (BOOT/SYS). While LOWCORE mainly consists of I/O drivers, SYS0/SYS provides basic file read/write operations, task scheduling, memory management supervisor call dispatch and other functions that must always be available. SYS0 is also capable of bringing in other operating system overlays for non-resident operations such as file open, file close, and file removal operations.

SYSRES source code, resident routines, Z80 Assembler (ASCII, NAME=SYSRES/ASM)
BUILDVER source code, conditional assembly directives, Z80 Assembler (ASCII, NAME=BUILDVER/ASM)

COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM) FILPOSN source code, file I/O, Z80 Assembler (ASCII, NAME=FILPOSN/ASM)
LDOS60 equate file, EDAS Assembler equate file (ASCII, NAME=LDOS60/EQU)
LOADER source code, executable loader, Z80 Assembler (ASCII, NAME=LOADER/ASM)
LSILOGO source code, start-up logo, Z80 Assembler (ASCII, NAME=LSILOGO/ASM)
(Several different logos that have been used for TRSDOS 6 and LS-DOS can be found in the Boot-up Logos collection, below.)
SOUND source code, tone generation, Z80 Assembler (ASCII, NAME=SOUND/ASM)
SYSINIT4 source code, hardware initialization, Z80 Assembler (ASCII, NAME=SYSINIT4/ASM)
TASKER source code, task management, Z80 Assembler (ASCII, NAME=TASKER/ASM)

SYS0 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS0/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS0 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS0, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS0/CMD)

During the assembly of the SYS0/SYS module, the file SYS0/REF is generated. This is converted into SYS0/EQU in a subsequent step. SYS0/EQU is used by most of the operating system overlays and some system libraries during their assembly.

SYS0 reference file, EDAS /REF file (BINARY, NAME=SYS0/REF)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)


LS-DOS 6.3.1 SYS1

SYS1 is, among other things, the primary command interpreter. As such, it handles all requests for commands in the three system libraries. It also contains the code for the SVCs @CMNSI, @CMNDR, @FSPEC, @FEXT, @PARAM, @EXIT and @ABORT. SYS1 is normally executed by doing an @EXIT or @ABORT SVC from within a program, or by executing a RET instruction as long as the stack pointer is at the same position it was in when the program was executed by the DOS.

SYS1 source code, command interpreter, Z80 Assembler (ASCII, NAME=SYS1/ASM)
BUILDVER source code, conditional assembly directives, Z80 Assembler (ASCII, NAME=BUILDVER/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)
PARAM source code, assembly parameters, Z80 Assembler (ASCII, NAME=PARAM/ASM)

SYS1 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS1/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS1 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS1, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS1/CMD)


LS-DOS 6.3.1 SYS2

SYS2 is a multi-function overlay. It handles creating, opening and renaming files, hashing filenames and passwords, checking a drive for a mounted diskette, and locating a specified file or free DCB. It contains the code for the SVCs @INIT, @OPEN, @RENAME, @GTDCB, and @CKDRV.

SYS2 source code, file open and creation routines, Z80 Assembler (ASCII, NAME=SYS2/ASM)
BUILDVER source code, conditional assembly directives, Z80 Assembler (ASCII, NAME=BUILDVER/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS2 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS2/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS2 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS2, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS2/CMD)


LS-DOS 6.3.1 SYS3

SYS3 handles the closing of a file or device, and restoring the original filespec or devspec to the Control Block. During a file close, it also de-allocated space if the ending record number of the file is smaller than it was when the file was opened. It contains the code for the SVCs @CLOSE and @FNAME.

SYS3 source code, file removal routines, Z80 Assembler (ASCII, NAME=SYS3/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS3 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS3/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS3 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS3, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS3/CMD)


LS-DOS 6.3.1 SYS4

SYS4 handles the system error routines, either displaying an error message or placing the message in a program-specified buffer. Besides the standard error codes, an "extended error" (error number 63) will display an error value placed in the HL register pair. The only SVC handled by SYS4 is @ERROR.

SYS4 source code, extended error handlers and messages, Z80 Assembler (ASCII, NAME=SYS4/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS4 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS4/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS4 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS4, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS4/CMD)


LS-DOS 6.3.1 SYS5

SYS5 is the primary system debugger. It is activated by the system, by the [BREAK] key, or by the SVC @DEBUG. During assembly, SYS5 is cross-referenced to produce an EQUate file used in assembling SYS9, the extended debugger.

SYS5GET source code, system debugger, Z80 Assembler (ASCII, NAME=SYS5GET/ASM)
SYS5 source code, system debugger, Z80 Assembler (ASCII, NAME=SYS5/ASM)
SYS5A source code, system debugger, Z80 Assembler (ASCII, NAME=SYS5A/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS5 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS5/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS5 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS5, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS5/CMD)

During the assembly of the SYS5/SYS module, the file SYS5/REF is generated. This is converted into SYS5/EQU, which is used to assemble the extended debugger, SYS9.

SYS5 reference file, EDAS /REF file (BINARY, NAME=SYS5/REF)
SYS5 equate file, EDAS Assembler equate file (ASCII, NAME=SYS5/EQU)


LS-DOS 6.3.1 SYS9

SYS9 is the extended system debugger. It resides in high memory, and handles additional functions that require more memory than what was available for SYS5, which resides in the overlay region. There are no SVCs directly handled by SYS9.

SYS9 source code, extended system debugger, Z80 Assembler (ASCII, NAME=SYS9/ASM)
SYS5 equate file, EDAS Assembler equate file (ASCII, NAME=SYS5/EQU)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)

SYS9 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS9/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS9 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS9, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS9/CMD)


LS-DOS 6.3.1 SYS10

SYS10 will kill (remove) a file or a device. It contains code for the SVC @REMOV.

SYS10 source code, extended system debugger, Z80 Assembler (ASCII, NAME=SYS10/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS10 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS10/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS10 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS10, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS10/CMD)


LS-DOS 6.3.1 SYS11

SYS11 handles the execution of a JCL file. It automatically links and unlinks itself into the system. It is used to supply input from the JCL file in response to keyboard line requests.

SYS11 source code, JCL processing, Z80 Assembler (ASCII, NAME=SYS11/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS11 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS11/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS11 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS11, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS11/CMD)


LS-DOS 6.3.1 SYS12

SYS12 handles the two mini-directory and free-space SVCs, as well as locates or checks for a memory module header. SYS12 contains the code for the SVCs @DODIR, @RAMDIR and GTMOD.

SYS12 source code, Disk Stats and Memory header manager, Z80 Assembler (ASCII, NAME=SYS12/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS12 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS12/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS12 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS12, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS12/CMD)


LS-DOS 6.3.1 SYS13

SYS13 acts as a placeholder for an extended command interpreter. The provided file performs no function, but is on the disk to set the proper attributes to any file copied over it to act as an extended interpreter. It also prevents a system crash if the extended interpreter flag (EFLAG$) is set without no executable in the SYS13 directory slot.

SYS13 source code, Placeholder for Extended Command Interpreter, Z80 Assembler (ASCII, NAME=SYS13/ASM)
COPYCOM source code, copyright strings, Z80 Assembler (ASCII, NAME=COPYCOM/ASM)
SYS0 equate file, EDAS Assembler equate file (ASCII, NAME=SYS0/EQU)

SYS13 source code, full assembly listing, Z80 Assembler (ASCII, NAME=SYS13/LST)
(The assembly listing is formatted for standard 132 column x 66 line paper.)
SYS13 source code, full assembly listing, Z80 Assembler (HTML)
(The assembly listing is formatted for display on a HTML viewer.)

SYS13, executable, LS-DOS loadable, Z80 Machine Code (BINARY, NAME=SYS13/CMD)


Alternate Boot-up Logos

LS-DOS, as was its predecessor LDOS, were both designed so that the boot-up logo could be replaced with one meeting the requirements of an OEM customer, such as Tandy/Radio Shack.

Below are several logos that were developed at various points during the life of TRSDOS 6/LS-DOS 6. The one to be used is assembled as part of SYS0/SYS, and is currently set to LSILOGO.ASM (listed above in the SYS0 section).

Note that the "3D" Tandy Hour-glass logo was the original one produced by Logical Systems and appeared on several pre-release alpha and beta versions of TRSDOS 6.0.0. The product buyer for Tandy at that time of the initial Model 4 release decided the logo was "too different" and might confuse customers, and so a 2D version was subequently prepared by LSI and a version of that was eventually released and used on TRSDOS 6.0.0 and a few subsequent TRSDOS 6 releases.

The logo that the public saw was changed again for the TRSDOS 6.2 release, and again for the LS-DOS 6.3 releases.

Because of differences between the Model 4 and Model II/12 systems in what codes and what available block text graphics were available, the logos for the Model II releases are also different.

The IBM Logo graphic was done as a stunt. It was built by Logical Systems into one of the beta releases of TRSDOS 6.2 at a point prior to Tandy being forced into actually buying that product, a period when the buyer and LSI would have nothing to do with each other. (The buyer at that time didn't want to have any more OS releases for the Model 4 after 6.1.2.) This "IBM" version was sent only to the buyer and Frank Durda IV, but it so outraged the buyer that he attempted to get Franks copy destroyed. Eventually things calmed down and the 6.2.0 release was turned into an official product, with a non-IBM logo.

Note: It may be possible that some of these older logos will not function or fit into a 6.3.0 or 6.3.1 SYS0, simply because of their size or other system changes that occurred since they were originally designed.

SYS0 source code, The "3D" Tandy boot-up logo for TRSDOS 6, never released, Z80 Assembler (ASCII, NAME=LOGO/ASM)

SYS0 source code, Proposed "normal" Tandy boot-up logo for TRSDOS 6, never released, Z80 Assembler (ASCII, NAME=RSLOGO/ASM)

SYS0 source code, The "normal" Tandy boot-up logo for TRSDOS 6, used in 6.0.x and 6.1.x, Z80 Assembler (ASCII, NAME=RSLOGOA/ASM)

SYS0 source code, The pseudo "3D" Tandy boot-up logo for TRSDOS 6, used in 6.2.x, Z80 Assembler (ASCII, NAME=RSLOGOB/ASM)

SYS0 source code, Yet-another boot-up logo for TRSDOS 6, does not appear to have been used in a formal release, Z80 Assembler (ASCII, NAME=RSLOGOX/ASM)

SYS0 source code, The "IBM" logo, appeared in one TRSDOS 6.2.0 sample, Z80 Assembler (ASCII, NAME=IBMLOGO/ASM)

SYS0 source code, A modified boot-up logo for use on Model II/12 platforms, Z80 Assembler (ASCII, NAME=LOGO/ASM)

SYS0 source code, The "normal" Tandy boot-up logo, Model II/12 platforms, Z80 Assembler (ASCII, NAME=RSLOGO2/ASM)


[Copyright 1999,2002,2004,2006 Frank Durda IV, All Rights Reserved.
Mirroring of any material on this page in any form is expressly prohibited.
The official web site for this material is:  http://nemesis.lonestar.org
Contact this address for use clearances: clearance at nemesis.lonestar.org
Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]


Valid HTML 4.01!