Version History
return to home

version history of the Exelyx kernel
(the different version releases are archived, not revisions, though)

version 2.00
-removed kernel infinite loop; no longer needed
-temporarily removed priority processing -to trim source code size and speed up the kernel, the built-in command prompt has been removed; will be re-added as a Exelyx app later
-all threads are automatically terminated upon causing an error
-added errorHandlerPointer to threadData type, and changed errorHandler to errorHandlerHandle to accommodate new error trapping abilities
-removed startAddr and endAddr from threadData type since threads don't share handles
-removed cursorH and cursorV from threadData type since they were never really used anyway
-removed nextThread from threadData type since it will no longer be needed with the redesigned code core of this kernel
-modified system error handlers to exclude references to GetNaturalErrorText and GetKernelErrorText
-removed GetNaturalErrorText
-removed GetKernelErrorText
-removed InitKeyTable and related data structures
-removed fileData type

version 1.42 (merged into kernel 2.00)
-added the dir command to the help screen in the command prompt
-added kint 0x34 (open / close cd drive door)
-handle probing status (on or off) is now displayed by the mem command
-stripped down kernel error handler
-fixed screen mode change bug in CommandPrompt()
-fixed bug that occurred when a thread used the terminate thread kint on itself
-fixed bugs in mov and call instructions -further optimized code execution core
version 1.40
-merged ExecInstruction() with Main() for further speed increases
-trimmed code for unsupported instructions from ExecInstruction() to clean up the source
-overhauled code execution core algorithm for speed, yielding major performance gains; individual instructions still need optimized
-added kint 0x33 (set thread priority)
-added kint 0x32 (set thread pause state)
-added 'priority' to the threadData type to allow different threads to have more CPU time than others (e.g., the kernel infinite loop is set to lowest,
 and all other launched threads are set to the highest, but a thread can set its own priority if it doesn't require the highest speed setting)
-the kernel now informs the user of the status change of a thread when 'thread x pause' is used

version 1.35
-optimized some portions of code for speed
-added simple debugger which displays the register contents as the program executes
-fixed bugs in kint 0x09 involving cursor positioning
-fixed cursor relocation bug in kint 0x03
-eliminated need for the CLIST and DAREA resources, apps may now only have one 32K block for code and data, the DS register does not get set upon app load, and the mov family of instructions all access exactly the address they're told, instead of adding the value of ds to the address first
-fixed bugs in kint function 0x18
-added kint 0x31(draw line)

version 1.34
-to reduce source code size and segmentation problems the built-in debugger has been removed
-the command prompt now checks to see if drive c is available before assuming it is, and makes the first drive available as the default drive if c: isn't there
-fixed a bug where the drives command would display incorrect drive information for CD-ROM drives under plain DOS, not when being run from within Windows
-eliminated run command, just typing the program's name will run it as in DOS; if you type only the program name (e.g. 'program' not 'program.exe') the kernel will first look
 for a program of that title in the following extension order: .pco, .bat, .com, and .exe
-improved consistency of output of the mem command so far as handles allocated and block sizes; output used to differ widely depending on which underlying xms driver is being used
-certain essential system threads are now able to be designated as 'locked,' meaning they cannot be terminated; currently only thread 0 uses this, and that's probably how it should stay
-fixed annoying cursor relocation bug after dismissing an error box by pressing ESC
-fixed memory leak when using the restart command, due to the kernel not terminating all running threads before resetting itself... trying to restart the kernel now will generate an error if any threads are running
-got rid of the annoying prompt "Press any key to begin the program." when launching DOS apps
-fixed minor annoyances in the appearance of the text as a Exelyx app loads
-improved error handling and thread stability issues
-replaced the "Press DEL to access the system menu." line with "Press DEL to terminate this thread." in error boxes to eliminate having to do more error checking from having the command prompt running over top itself
-modified kernel startup error handling to include XMS setup also before switching over to the main error handler
-fixed text appearance of thread command output, no more wrapping lines
-eliminated two separate thread name fields (public and private) so threads can now only have one universal name
-fixed startup procedure so that if a file is specified it gets run, or if no file is specified on the command line the kernel goes straight to the command prompt
-fixed a bug concerning remnants of the old Exelyx-style lfn support; the kernel no longer tries to see if a folder or file contains a Exelyx filename
-fixed a bug in the Exelyx app loading routine which would leave a thread incompletely set up if an error occurred while attempting to load the app's CODE resources
-fixed a bug in how the kernel detects the amount of XMS installed and XMS free; the kernel has always used all installed memory, but would just report the wrong numbers for how much was there,
 now the correct numbers are shown
-made minor changes to the XMS section of the output of the mem command
-added /nhp switch to disable handle probing which causes problems under windows
-fixed a bug in the xms release command that would let handles which are in use by an app be terminated
-the dir command now recognizes invalid switches
-added /s switch to the dir command
-added separate file and folder counters to the dir command's output, in addition to the usual item count
-fixed output of date command (used to be an error with 1st, 2nd, 3rd, etc...)
-fixed output of drives command, line wrapping / spacing bug with mapped drives

version 1.33 revision 0x0010
-fixed bug in copy command that puts the system in an infinite loop if an error occurs while copying
-fixed bug where every directory created with a long filename is made lowercase
-fixed bug in mem command that caused overflow errors

version 1.33 revision 0x000F
-added 'restart' command

version 1.33 revision 0x000E
-fixed drive label bug where the label for drive C would appear as the label for every drive
-enabled asterisk wildcard in 'dir' for file filtering
-added /w switch to the dir command
-added support to 'dir' for listing directories other than the one you're currently in
-modified drives command to include displaying drive labels

version 1.33 revision 0x0007:
-added /a switch to the dir command
-increased stability of copy command when used on non-lfn drives

version 1.33 revision 0x0005:
added commands: copy, credits, date, drives, eject, info, label, login, logout, make, pause, ren, time, type
-enhanced ver command
-fixed a bug where commands typed with leading spaces are not recognized
-fixed the program launch bug where when typing the name of a program to run it, the kernel displays "The command or filename is not recognized." regardless of whether or not the program actually existed.
 also, if the program did not exist, an error dialog used to appear in addition to the message
-md/mkdir now work properly
-dir command works
-rd/rmdir gives no errors
-fixed a bug with the cd command where it would change to a directory that doesn't exist if you type an 8 character or longer dir name with extra letters, just so the first 8 match
-the thread command now works properly when used with 'stop'
-commands typed in mixed case now will execute
-run command added

version 1.33
-added built-in command prompt interface to replace limited console menu system
-eliminated Exelyx-style LFN support in favor of the Windows style... why complicate things by having three standards for filenames when we could have only two? :)
-temporarily removed KINT 0x27, 0x26, 0x25, 0x24 and 0x23; they need rewritten to use Windows lfn
-modified KINTs 0x0C and 0x17 to not use Exelyx-style lfn's; need to add Windows lfn support though

version 1.00
official beta release

known bugs:
-the handle probing routine which the kernel uses to obtain size and allocation data about XMS handles causes problems with Windows ME; use the /nhp switch when starting the kernel to shut handle probing off
-several inconsistencies have arisen when the Exelyx kernel is used atop Caldera's DR-DOS, a few of which are listed here:
-your XMS available will be 64MB, even if you have more installed in your system
-the 'drives' command will show every drive to be a floppy disk

kernel to do list:
-increase max number of threads
-move stack space for each app into one XMS block, away from thread memory space, and make them all a fixed size, 32K each
-make max code resource size 64MB, instead of the current 32K
-add enhanced instruction set, including new opcodes which will do the following:
-'push' and 'pop' will work on multiple registers at once, and work with numbers and memory locations, as follows:
push 8192
pop ua, ub, uc
pop [0xB4]
push es, di
push ax, bx, ua
push [0x34]
-'mov' will use auto incrementing registers, so instead of writing:
mov [ua], ax
inc [ua]
mov [ua], ax
inc [ua]
mov [ua], ax
inc [ua]
code can be written like this:
mov [ua]+, ax
mov [ua]+, ax
mov [ua]+, ax
-make wildcards be able to be used for drive letters also
-make command prompt multithreaded (so other Exelyx apps no longer freeze while you use the command prompt)