Change Log - Boot Scriptor
1.2.18
  • fixed the HP e-Vectra/AMI BIOS bug (Int 0x13, ah=0x49 incompatible)
  • fixed a bug in string.read_number, string.read_dec, and string.read_hex that would cause a crash on overflow (number too big)
 
1.2.17ß
  • VBE check on restart removed for mainstream release

Convert 1.1:

  • now converts BMP->BSI and BSI->BMP
 
1.2.16ß
  • splash code now looks for bscript.bsi, then bscript.bmp
  • show command now accepts Boot Scriptor Images
  • display.set_mode now allows mode 2 (640x480)
  • created BSI image display routine

Convert 1.0:

  • First version of BSI conversion program created. Only allows BMP->BSI.
 
1.2.14ß
  • expanded scratch segment from 64kb to 128kb. Now you can only have 320kb of modules loaded.
  • increased BMP file size limit to 126kb
  • moved graphics routines into the kernel
    • created show command (to replace the splash command)
    • command.terminate now forces return to text mode
    • new api functions: display.set_mode, display.get_mode, display.image
    • startup splash functionality implemented in core.asm
 
1.2.13ß
  • created splash module
  • Changed order of initialization to cache bscript.ini before loading the command sets, and thus before the greeting is displayed. The goal here is to go from a black screen to script-menu with nothing in between.
 
1.2.12ß
  • Fixed a bug introduced in 1.2.11 that caused memdisk to not be found, thus the command could not be used.
 
1.2.11ß
  • Changed Isolinux's default directory to /bscript/modules/isolinux. This should make things cleaner for users who are booting Linux kernels.
  • boot progress bar hidden by default (show using Alt or Scroll-Lock)
  • Fixed bug that caused filenames using backslashes to not be found.
 
1.2.9ß
  • Updated Isolinux module to HPA's 2.00 (non-prerelease) version.
 
1.2.8ß
  • Worked around BIOS bug which resulted in a failed boot (debug code 00400019). The bug was invalid response to Int 0x13 extensions check (returned carry flag set even though extensions are supported).
 
1.2.7ß
  • Replaced verbose error messages at startup with a progress bar and status code. You can step through the startup process by holding down the Alt key, or turn on scroll-lock. Caps-lock and the control key are still used to override the bscript.ini file.
 
1.2.6ß
  • implemented cleanup functionality in kernel. Now all modules will be notified to release their resources before Boot Scriptor shuts down.
  • Isolinux module updated to version 2.00-pre8
  • fixed a bug that would cause the loader to fail if called by the BIOS at address 0000:7C00 instead of 07C0:0000.
 
1.2.4ß
  • non-windows commands such as boot, chain, etc. now produce error messages when used in the script debugger.
  • error message system revamped. All commands should now report detailed error information when a script is halted (command name, filename, line number). Error reporting mechanism is built into the API so it should be easy for module
    developers to implement.
  • Isolinux module updated to Isolinux v2.00 pre-7
  • startup path now successfully restored if you use the restart command in the script debugger (DOS/Windows version)
  • implemented "color h" command. Highlight command will be deprecated.
  • list command changed to allow "list commands [module number]" and "list keys [module number]" to limit the displayed keys/commands to those present in the specified module.
 
1.2.3ß
  • changed calls to display.shutdown in boot, chain, isolinux, and memdisk commands to misc.cleanup. misc.cleanup now calls display.shutdown
  • script.get_info API call implemented. This should open the door for better error reporting when commands fail.
  • Diskemu:
    • implemented new function: INT 0x13/AH=0x00 Reset Disk System
    • fixed memory allocation bug which was reserving more memory than was necessary. Memory useage should be at 19kb now (18kb buffer + <1kb code).
    • changed behavior to return error code ah=1 if an Int 0x13 is initiated for an emulated drive, and a non-emulated function is requested. The previous behavior was to just forward the request to the BIOS Int 0x13 handler. This could be dangerous, however, if a user tried writing to (emulated) drive 0. Forwarding the operation would cause the BIOS to execute the write on *physical* drive 0, which is potentially very bad and definately not what was intended.
    • changed behavior of "Shift Emulated Drive Number" function. Previously the function would default to setting the emulated drive number to zero in any case where the requested drive number was not one. Now it returns error code ah=1 (invalid parameter) if the requested drive number is not zero or one.
    • implemented new function: INT 0x13/AH=0x01 Get Status of Last Operation
    • changed function ah=2 (read disk sectors)
    • now returns error ah=1 if called with al=0 (request to read zero sectors)
    • now returns error ah=1 if either bit [7-6] of cl are set when called (those bits are reserved for hard disks)
    • changed function ah=0x42 (extended read)
    • returns error ah=1 if start LBA is out of range
    • fixed potential bug in read commands where rep movsw was used without a cld
    • images are always jumped into at 7C00:0000 (instead of 07C0:0000).
  • changed the behavior of the print command, so that centered and right-alighned newlines return the cursor to the first column on the line
  • fixed bug in memdisk command, when an absolute path was specified
 
1.2.2ß
  • fixed bugs in getkey [timeout] command (due to bugs in misc.get_key_timeout API function)
  • command history increased to remember last 16 commands
 
1.2.1ß
  • fixed bug where files that lied beyond the first sector of a directory were inaccessible
  • about more command now reports supported interrupt 0x13 extensions
  • memdisk and PART.EXE must both be in the /bscript/modules directory now
  • fixed bug in print command that caused message alignments to be off
  • changes made that affect module developers (more changes to M.2 format)
    • cleanup routine added to module header
    • BSS_EXTRA symbol introduced
    • main.get_boot_drive renamed to disc.get_boot_drive
    • main. API functions renamed to misc.
    • misc.cleanup function added
  • changes made that affect module developers
    • most lowercase identifiers in bscript.ini changed to uppercase
    • lowercase identifiers in template.asm changed to uppercase
    • template updated to BSM Version 2 (M.2) format
    • api call main.get_memdisk_status no longer supported
  • all modules updated to M.2 format
  • userkey module and command renamed to "hotkey"
  • first successful debugging session with disc.asm. Able to search for files/directories, and open, close, and read files.
  • Changes made related to modules
    • modules only auto-loaded from /bscript/modules directory
    • all modules in the /bscript/modules directory are auto-loaded (underscore no longer needed)
    • modules renamed to have their underscores removed
  • quit command moved to basic module, and it only works in the script debugger
  • new Isolinux interface module created
  • Changes made to userkey command
    • userkey command now accepts key names with spaces in them
    • userkey command now properly ignores trailing spaces after names and descriptions
    • userkey command now changes its module name once the key has been activated
 
1.1.5
  • Small cleanup in the main Boot Scriptor program
  • Userkey command created
  • Fixed a bug in basic.bsm in the "list keys" command where keys that had no name were still being listed in the output.
  • loadmodule command now doesn't produce the confirmation message if the command was executed in a script and completes without error
  • Delayed greeting display so that it isn't displayed until after all modules have loaded. This should make it less likely to be visible if a script starts with a cls/clear command.
  • Control replaces num-lock as script suppression key
 
1.1.4
  • Boot Scriptor can now load modules from the /BSCRIPT/MODULES directory
  • Reverse directory traversal is now possible (use "cd ..")
  • You can now suppress startup scripts by turning on num-lock
 
1.1.3
  • First non-beta release of Boot Scriptor 1.1.
 
1.1.2ß
  • fix to set_cursor_state API call, and history module affected by it
  • block cursor implemented for insert mode
  • blinking text is now disabled in display.init
 
1.1.1ß
  • First public beta released
  • online help texts updated and colorized
  • new help command finished
  • man command now only provides command-specific help
  • Boot Scriptor can now be built with the loadmodule command built-in. In this version, if no modules are found at startup the built-in loadmodule command will be installed.
  • print command now accepts \t in center and right aligned messages, however the results won't be properly aligned
  • print command now accepts \al, \ac, and \ar escape sequences to change the method of alignment on the fly
  • command line now understands home and end keys
  • command line is now completely editable :) Line editor now interprets the left arrow, right arrow, insert, delete, and backspace keys. Still need to change the appearance of the cursor when in overstrike mode.
  • 'list keys' and 'list modules' added
  • 'list commands' command added
  • commands now split into separate modules, based on theme
  • all planned M.1 (module version 1) API functions implemented
  • loadmodule command created
  • command history implemented (currently set to remember the last 8 commands)
  • $testkey command created (debug command)
  • key commands now working
  • script files are now limited to 65535 bytes (but they'll be completely cached)
  • most commands that had their actions suppressed when they were run in the script debugger are handled slightly differently. Usually they will just silently do nothing, but commands like isolinux and reboot will also terminate the current script when they finish.
  • chdir command will no longer be supported in 1.1. "chdir" is now the name of the api function used to change directories, while "cd" will be used in the console by the user to change directories.
  • Boot Scriptor Module (BSM) template complete
  • fixed bug in memdisk command where a comment would be interpreted as part of the filename parameter
  • new console 1.1 is born :)
  • api interface working
  • most internal restructuring complete
 
1.0.12
  • fixed a bug in the boot command where the program would hang if the device could not be read on an unconditional boot
  • the beta status has been removed from Boot Scriptor 1.0.
    • I'm beginning work on Boot Scriptor 1.1. Some restructuring is planned so I wanted to separate it from 1.0 to keep new bugs from popping up and delaying the end of the beta status.
    • Many issues have been worked out since the initial release of Boot Scriptor, and it is clear to me that there are no major problems in the program, and no minor problems that I am aware of right now. I'd like to thank everyone who informed me of bugs and worked with me to sniff them out. Thanks :)
    • I will continue to make bugfixes to 1.0 when bugs are found, until 1.1 is finalized.
    • The build number is now added to the end of the version number (e.g. 1.0.12 = 1.0 build 12). This is done because some have been confused as to whether the "b" denotes a beta version or a build number.
  • made some changes to the message displayed when the program starts
  • converted string.asm to far call format (working towards making many of the functions in Boot Scriptor into an API)
 
1.0ß - build 11
  • chain command now verifies that the jump offset lies inside the loaded file
  • chain command now accepts files up to 64kb in size. This limit will not change on a build-by-build basis, so there's no need to check the about more command for the max loadable file size anymore.
 
1.0ß - build 10
  • fixed bug where if the script command was used in a script and the new script failed to load, the program would return to the console (correct behavior) but remain in script mode (incorrect behavior)
  • fixed bug in script command where incorrect line number would be displayed on a call-stack fault
  • fixed bug in script and type commands where comments would be interpreted as part of the filename parameter
  • script and type commands are now better about reporting disk read errors
  • the line counter that is used for reporting errors, etc. is no longer incremented when lines longer than 255 characters are broken into segments
  • major update to the file.getline mechanism
    • now allows variable sized buffers
    • input and output buffer segments may be specified
    • script command now caches up to 62kb at a time :)
    • type command now caches as much as will fit in the program segment :)
 
1.0ß - build 9
  • fixed bug where onkey wouldn't check properly for function keys 10, 11, and 12
 
1.0ß - build 8
  • fixed a bug in script-mode check command where <action> was not being performed
  • check command now requires a <p/f> (pass/fail) parameter in script mode. <action> can now be executed on either a pass or fail condition
  • minor change to the about command to conserve space
 
1.0ß - build 7
  • about more command's output reformatted, and now also provides the program build number, and the BIOS drive number for the booted CD-ROM drive.
  • boot command now accepts conditional argument (boot only if the drive appears bootable). The old format is still accepted (boot unconditionally), but with the condition added it functions as the inverse of the check command.
  • check command's [b/p] parameter now changed to <a/b/c> to be uniform with respect to the boot command. The level of checking must now be specified (it was optional before).
  • memdisk command's filename parameter is now based in the current directory, as opposed to the :home directory
 
1.0ß - build 6
  • Fixed bug where program would crash if an invalid offset parameter was given to the chain command
  • Fixed a couple more (major) bugs in the chain command that caused lock-ups. Still unsure wtf I can't load code up into the top of the segment which keeps causing problems for me :(
 
1.0ß - build 5
  • A couple of changes to the dir/ls commands:
    • "File Name" changed to "File/Directory Name"
    • separator added between files and directories
  • Fixed rare error of user's color setting being forgotten when certain commands would fail
  • Highlight color added
    • highlight command added
    • some functions now take advantage of the highlight color
    • added escape code /cXX (change to highlight color)
 
1.0ß - build 4
  • Fixed the command 'chdir :home' not working (same prob with cd)
  • Various changes to the operation of the type command
    • Blank lines in the file are no longer skipped
    • Lines exactly 80 characters in length (or multiples of 80) are no longer followed by a blank line
    • Lines longer than 80 characters in length no longer throw off the line count, so nothing gets pushed off the screen before you get a chance to read it
  • cd/chdir now accept paths with trailing slashes
 
1.0ß - build 3
  • fixed simple-but-major bug in chain command, introduced on the 26 Mar update
 
1.0ß - build 2
  • small bug fixed in chain command (not properly checking for comments)
  • chain command now takes an offset parameter (documentation updated as well)
  • website address added to 'about' messages
 
1.0ß - build 1
  • print command now takes 'l' keyword (left justify) (for completeness)
  • "insert" and "delete" descriptive keys changed to "ins" and "del"
  • "backspace" and "semicolon" descriptive keys changed to "back" and "semi"
  • color command now supports the [t/o] option, and the overscan command is no longer supported
  • online documentation updated to be more in sync with the html docs.
  • file.getline changed now uses a struct instead of a macro to define FCB's
  • file.getline now keeps track of the current line number, and is therefore capable of skipping blank lines and returning only lines that have at least one character on them (so that is what it does)
  • you can now use the noscript keyword on the Isolinux command line to suppress execution of startup scripts
  • bugfix in script command (last line in a file was skipped)
  • bugfix in reboot command (begin_output not called for warm reboots)
  • bugfixes in goto/call/return (return not saving line number, all not handling end-of-file properly)
  • "return never" variation on return command implemented
  • memdisk command now translates filenames to Unix-style
  • "restart noscript" variation on restart command implemented
  • Dir/Ls commands work now :)
  • memdisk command updated to search for memdisk and the image file in the home directory
  • all disk i/o routines should now be able to handle disk read errors to some extent (better than nothing I guess)
  • if a script file is specified on the Isolinux command line before starting Boot Scriptor, it is now saved for execution upon restart (before it was potentially corrupted by the FindFirst/FindNext mechanism)
  • cleaned up center and right aligned portions of the print command to properly handle \n's at the end of a message
  • "backspace", "space", "tab", and shift-function descriptive keys added to the list
  • dir and ls commands added, but they only work under Windows. Hopefully I can get an API implementation of the DOS FindFirst/Next functions done tomorrow :)
  • man command added (help command synonym)
  • file.open, file.exist, file.read, and file.getline updated to report disk errors (zf now indicates EOF status). Now the commands that use them need to be updated to handle disk errors properly.
  • type command now lets you press escape to quit displaying a file
  • chdir/cd command added, command prompt changed to reflect the current directory
  • chain command now seems to be working when files are too big to load. I have problems with the program crashing whenever I start writing up near the top of the segment. I don't know what the problem is but it seems to go away if I stop at around offset 0xFF00.
  • type command now creates it's file read buffer at the end of program memory, thus shortening the .bss section and making it possible to chain-load larger files
  • pressing F3 on the command line now reproduces the previous command entered
  • chain command now loads the whole file in a single API call, as opposed to one sector at a time
  • setpos command added (script command)
  • wait command added (script command)
  • cls command moved into secondary command list
  • check command no longer performs a default action when a drive appears bootable and the program is in console mode. Instead it displays a message "Drive XX appears/does not appear bootable." The script-mode version stays unchanged.
  • batch command renamed "script"
  • default script file renamed from "console.ini" to "bscript.ini"
  • shell command renamed to isolinux (old isolinux command thrown out)
  • secondary console command list added
    • print and test commands were moved into this list
    • commands in this list are not displayed in the help command list
    • command-specific help is still available, though.
    • this list exists because there are some commands that aren't really useful in console mode, yet they still work there anyways. Moving them out of the help command list cleans things up and makes it easier for a user to find commands that are actually useful.
  • introduced the concept of "output sessions". Just an internal change that simplifies command-module coding and ensures uniformity in error messages.
  • after today, the program will be known as "Boot Scriptor" until a better name presents itself.
  • if caps-lock is enabled when the program starts, it goes directly into the console (instead of loading the default script file or processing the Isolinux command line)
  • a script can be specified on the Isolinux command line that will be run instead of the default script when the program starts
  • display.decimal support function added. Now line numbers in error messages are displayed in human-readable form :)
  • tab command added (secondary console command)
  • check command added
  • bug fixed in chain command with files that are too big
  • chain command seems to be working. A small test program was made (chain.bin) that when chain-loaded, reports where it's located (segment:offset) and then attempts to quit back to Isolinux. Both forward and backward loaders report correct load locations.
  • Directories and batch files cleaned up
  • Windows builds now avoid problematic operations (ie. boot command, shell command don't follow through with their actions)
  • reboot command now accepts [warm/cold] option
  • chain command added (broken though)
  • setkey command added (user description key list needs to be expanded)
  • changes to better support comments:
    • char.is_eol is now used to determine if the end of line is reached
    • string.find_space now terminates on comment characters (semicolons)
    • all commands are now "comment aware"
  • if you press the F1 key at the command prompt it now displays general help
  • descriptive keys ("enter", "f1", etc.) list is now complete
  • onkey command added :) Now all the pieces are in place to allow simple menus that can accomplish useful things. :D
  • blink command added
  • print command now supports center and right justification
  • added verbose error messages to goto/call/return commands. Line numbers are displayed in hex, though. :(
  • file.get_line now returns blank lines as zero-length strings (instead of just skipping them). This allows error messages to report line numbers accurately.
  • memdisk command added
  • keyboard input now comes from the Isolinux API
  • getkey command added
  • call command added
  • goto command added
  • comments are now allowed in batch files (use a semicolon to comment a line)
  • return command added
  • restructuring:
    • Console commands and Batch commands now maintain separate command lists
    • Batch commands are ignored at the console (and from help)
    • quit command now does the same thing as the isolinux command
    • exit command renamed to "end". To quit batch processing you now type "end".
  • batch command fixed to work in batch files. Note when you use batch in a batch file, the call stack is cleared and the new batch file never returns to the file that called it.
  • string.read_number funtion added (reads hex or dec dependeng on what it finds)
  • added get/set default text color routines to the display library
  • color command added
  • shell command upgraded from debug status to permanent console command. I figure it's flexible enough to be useful to people. Also the command syntax has changed to specify the shell command on the same line as the keyword.
  • reboot command added
  • type command added
  • overscan command added
  • boot command added
  • print command added (along with display.message). Escape sequences supported: \\, \n, \t, \", \c##
  • about command added
  • buffers moved to .bss section
  • file.open, file.close, file.read functions added
  • string.copy function added
  • file.getline functions added
  • batch command added
  • console now executes the batch file "console.ini" when starting :)
  • exit and quit commands added
  • isolinux command added
  • cls/clear commands added
  • program now operates as a command console :)
  • nop command added
  • restart command added
  • help command added
  • test command made for debug mode
  • shell command made for debug mode
  • command line implemented
  • first successful interface with Isolinux
  • preliminary work constructing display and string libraries
 
Change Log - Isolinux for Boot Scriptor
1.67-1.0.1
  • fixed hang bug that affected images created using mkisofs
  • now properly handles images built with file version numbers
 
1.72 - 1.0ß
  • now based on Isolinux v1.72 by H. Peter Anvin
 
1.71 - 1.0ß
  • now based on Isolinux v1.71 by H. Peter Anvin
  • version updated to 1.71-1.0b
  • NOT RELEASED (17 Apr bug still present)
 
1.70 - 1.0ß
  • now based on Isolinux v1.70 by H. Peter Anvin
  • version updated to 1.70-1.0b
  • commenting out the MKT_BUILD define statement now results in a completely unmodified build
  • NOT RELEASED DUE TO NEW BUG IN ISOLINUX
 
1.67 - 1.0ß
  • FindFirst and FindNext implemented in the API
  • all API functions that modify 32-bit registers now do a pushad when they begin
  • API now has specialized disk I/O routines, and returns error codes when int 0x13 fails instead of prompting the user to reboot the computer ;)
  • fixed a bug in the API when calling with an invalid function number
  • invalid function requests now return error code 1 ("function number invalid")
  • Chdir function added to the API
  • yet another API bugfix, this one the carry flag wasn't being cleared on a successful read due to getfssec wiping out the bp register
  • default load directory changed to "bscript"
  • bug fixed in Open File that affected files who's size was a multiple of 2048
  • Updated to reflect changes in the loader:
    • No longer necessary to hard-code the PVD at sector 16
    • Loader isn't skipped anymore. It _has_ to run now.
    • The boot-file checksum check is the only thing that's skipped.
  • fixed bug in Open File where caller's regisers weren't being preserved, thus resolving the problem with the goto/call/return commands
  • Character input commands added to the API.
  • fixed minor bug in the setting/clearing of flags on the stack
  • API call Open File fixed to allow opening of more than one file at a time, so now things like "type <filename>" work in batch files. :)
  • all API calls now use the caller's stack
  • Read File now reads sectors, instead of lines.
  • More than one file can be opened now :)
  • Open File now converts backslashes to forward slashes
  • fixed repne bug in API (forgot to prevent cx from terminating the scan)
  • Load/Execute API function call implemented
  • Open File function call implemented (limit of one file)
  • Close File function call implemented
  • Read File function call implemented (reads one line at a time)
  • searchdir bug fixed
  • preliminary API hook established for Load/Execute function call
  • getchar relocation bug fixed
  • preliminary work getting Isolinux to work with programs other than mkisofs
  • primary volume descriptor hard-coded to LBA sector 16
  • skip code integrity checks