1058 lines
32 KiB
Plaintext
Executable File
1058 lines
32 KiB
Plaintext
Executable File
==================================================================
|
|
MikeOS -- Open source 16-bit operating system for x86 PCs
|
|
Copyright (C) 2006 - 2022 MikeOS Developers -- see doc/LICENSE.TXT
|
|
==================================================================
|
|
|
|
|
|
4.7.0 (9 April 2022)
|
|
--------------------
|
|
|
|
# Many updates to programs/edit.asm from Pablo Gonzalez and Mark M:
|
|
add support for more than screen-visible columns; show filename on top;
|
|
show current line and column; add "open file" option; remove
|
|
unnecessary screen redraws
|
|
|
|
# Many updates to programs/monitor.asm: separate commands to input and
|
|
execute code; 'd' command added to dump (in hex) a specified range
|
|
of memory to the screen; 'p' command added to poke (insert) a byte
|
|
into a memory location; code can now be entered in lower-case
|
|
|
|
# Added programs/vedit.asm from John Endler: a Vi-like text editor
|
|
|
|
# Added programs/editbin.asm from John Endler: a binary file editor
|
|
|
|
# Added programs/codebyte.asm from John Endler: a machine code byte
|
|
editor (plus sample file hello.512)
|
|
|
|
# Added programs/life.asm from John Endler: an implementation of Conway's
|
|
Game of Life
|
|
|
|
# Added programs/pong.asm from John Endler: a retro Pong-like game
|
|
(press Esc to exit)
|
|
|
|
# Added programs/line.asm from John Endler: a demo using VGA video mode
|
|
(press F to speed up, S to slow down, C to clear and Esc to exit)
|
|
|
|
# Updated programs/forth.asm to version 1.53 (from Walt Nagel)
|
|
|
|
# Added programs/gen.4th (referenced in the Forth manual)
|
|
|
|
# source/features/disk.asm: updated os_get_file_list and int_filename_convert
|
|
to handle extensions with fewer than three bytes; create file uses actual
|
|
file creation date and time; full 32-bit file size returned in EBX
|
|
(transparent to older programs)
|
|
|
|
# source/features/string.asm: new system call: os_string_to_long_int
|
|
|
|
# source/features/math.asm: small update to pseudo-random number generator
|
|
|
|
# source/features/ports.asm: os_serial_port_enable returns modem status in AX
|
|
|
|
# source/features/screen.asm: added BP to register dump
|
|
|
|
# Updated API version to 18, for new system call mentioned above
|
|
|
|
# Renamed programs/serial.asm to programs/terminal.asm
|
|
|
|
# Renamed build-osx.sh to build-macos.sh
|
|
|
|
# Updated programs/sample.pcx
|
|
|
|
# Documentation fixes and updates
|
|
|
|
|
|
|
|
4.6.1 (17 March 2019)
|
|
---------------------
|
|
|
|
# Updated build-osx.sh (thanks to Pete Dietl)
|
|
|
|
# Changed "KB" to "KiB" in documentation for clarity
|
|
|
|
# Updated "MikeTron" game in EXAMPLE.BAS from TachyonOS
|
|
|
|
|
|
|
|
4.6 (9 February 2019)
|
|
---------------------
|
|
|
|
# Added Forth program documentation (doc/handbook-forth.html)
|
|
|
|
# Added command "ls" (long listing) to CLI
|
|
|
|
# Improved string dump display
|
|
|
|
# Corrected jumps out of range in string.asm
|
|
|
|
# Updated MikeBASIC Plus Plus (MBPP.BAS) to version 4.1.0
|
|
|
|
# Updated Memory Manipulator (MEMEDIT.BAS) to 3.2.0
|
|
|
|
# Updated Calculator (CALC.BAS) to 2.1.0
|
|
|
|
# Updated ASCII Artist (DRAW.BAS) to 3.1.0
|
|
|
|
# BASIC: Added keywords STORE and LOAD to STRING command
|
|
|
|
# os_wait_for_key now uses HLT instructions to save power
|
|
|
|
# The CLI "dir" command now presents files in a four column format
|
|
|
|
# Bumped API version to 17
|
|
|
|
# os_input_string now requires an additional parameter for output size
|
|
|
|
# Added "!=" operator to the "if" command in the basic interpreter
|
|
|
|
# Fixes and improvements to build and test scripts
|
|
|
|
|
|
|
|
4.5 (21 December 2014)
|
|
----------------------
|
|
|
|
# New program: Forth interpreter (FORTH.BIN) from Walt Nagel; source code is programs/forth.asm
|
|
|
|
# New program: Mega Archiver (ARCHIVE.BAS) from Joshua Beck
|
|
|
|
# New game: FISHER.BIN from Jasper Ziller
|
|
|
|
# Updated MikeBASIC Plus Plus (MBPP.BAS) to version 3.2.3
|
|
|
|
# Updated Memory Manipulator (MEMEDIT.BAS) to 3.1.1
|
|
|
|
# Updated Calculator (CALC.BAS) to version 2.0.1
|
|
|
|
# Updated Cosmic Flight (CF.BAS) to 2.0.2
|
|
|
|
# Updated ASCII Artist (DRAW.BAS) to 3.0.1
|
|
|
|
# Updated KEYBOARD.BIN with accidentals (from Robert Looney)
|
|
|
|
# Updated build-openbsd.sh (from Takayoshi Sasano)
|
|
|
|
# Updated build-osx.sh (from Caleb Xu)
|
|
|
|
# Fix: always show cursor when returning from BASIC in EDIT.BIN
|
|
|
|
# source/features/basic.asm: do_cls: change "int 10" to "int 10h"
|
|
|
|
# Changed "kigalo" to "kigali" in HANGMAN.BAS
|
|
|
|
# Changed "bueno saires" to "buenos aires" in HANGMAN.BAS
|
|
|
|
# Changed "qemu" to "qemu-system-i386" in test-linux.sh
|
|
|
|
# Updated URL for Windows QEMU in doc/handbook-sysdev.html
|
|
|
|
# Handbook fixes
|
|
|
|
|
|
|
|
4.4 (23 March 2013)
|
|
-------------------
|
|
|
|
# New game: MikeOS Sudoku (SUDOKU.BAS), a puzzle game
|
|
|
|
# New game: Cosmic Flight (CF.BAS) from Joshua
|
|
|
|
# BASIC: string additions now possible with literal strings, other string
|
|
variables, or numeric variables, eg: $1 = $2 + "foo" + x + "bar"
|
|
|
|
# BASIC: Use "x = VARIABLES" to determine where BASIC stores its numeric
|
|
variables
|
|
|
|
# BASIC: New BREAK command to halt execution and show line number
|
|
|
|
# BASIC: Now displays line numbers with error messages
|
|
|
|
# BASIC: New CASE command from Joshua (changes case of a string)
|
|
|
|
# BASIC: New ELSE keyword from Joshua (used with IF)
|
|
|
|
# BASIC: New FILES command from Joshua (shows file listing from disk)
|
|
|
|
# Updated MikeBASIC Plus Plus (MBPP.BAS) to version 3.2.1
|
|
|
|
# Updated Calculator (CALC.BAS) to 2.0.0
|
|
|
|
# Bump API to version 16
|
|
|
|
# Handbook fixes
|
|
|
|
|
|
|
|
4.3.1 (28 April 2012)
|
|
---------------------
|
|
|
|
# Updated to latest version of ASCII Artist (draw.bas)
|
|
|
|
# Updated to latest version of MikeBASIC++ (mbpp.bas)
|
|
|
|
# source/features/basic.asm fixes from Joshua Beck
|
|
|
|
|
|
|
|
4.3 (24 February 2012)
|
|
----------------------
|
|
|
|
# New game: MUNCHER.BAS, an apple-eating action game
|
|
|
|
# New game: ADVNTURE.BAS, a text adventure
|
|
|
|
# Updated to latest versions of MEMEDIT, CALC and DRAW
|
|
|
|
# MikeBASIC++ (MBPP.BAS) library included on the disk
|
|
|
|
# BASIC: DO + LOOP UNTIL/WHILE/ENDLESS loops implemented
|
|
|
|
# BASIC: New STRING command to get or set bytes at locations in a string
|
|
|
|
# BASIC: New PEEKINT and POKEINT commands
|
|
|
|
# BASIC: INK keyword added to get current colour
|
|
|
|
# BASIC: FOR/NEXT loops now accept variables (eg "FOR X = Y TO Z")
|
|
|
|
# BASIC: PRINT no longer scrolls if followed by semi colon on last line
|
|
(with the exception of HEX)
|
|
|
|
# BASIC: NUMBER added, to convert between strings and integers
|
|
|
|
# BASIC: RENAME and SIZE commands added
|
|
|
|
# BASIC: ASKFILE command, which shows the file selector
|
|
|
|
# BASIC: Sums now check for division by zero and break with an error
|
|
|
|
# BASIC: ALERT command can now take a string variable
|
|
|
|
# BASIC: LISTBOX added -- shows list dialog box where first string
|
|
is "Foo,Bar,Baz" and second and third are help
|
|
|
|
# BASIC: INCLUDE added, to append another BAS file onto the end of the
|
|
current one and call routines in it
|
|
|
|
# BASIC: CURSPOS added, to get cursor position
|
|
|
|
# BASIC: CURSCOL added, to get colour of character under the cursor
|
|
|
|
# BASIC: Can use var = TIMER to get lower word value of system clock
|
|
|
|
# BASIC: PAGE added to switch between working and active (display) pages
|
|
|
|
# BASIC: LEN added to get length of string
|
|
|
|
# BASIC: DELETE added to delete files
|
|
|
|
# BASIC: READ added to read data from label
|
|
|
|
# BASIC: INK command added for printing strings
|
|
|
|
# BASIC: AND added to IF
|
|
|
|
# BASIC: ALERT, ASKFILE and LISTBOX preserve cursor location
|
|
|
|
# BASIC: Added VERSION keyword to get the API version
|
|
|
|
# BASIC: SAVE returns 2 in R variable if file exists
|
|
|
|
# USB drive floppy disk emulation updates from Mike Gonta
|
|
|
|
# VIEWER can now read BAS files
|
|
|
|
# SERIAL now clears screen after initial dialog box
|
|
|
|
# HANGMAN now limits input to "a" to "z" keys (and Esc)
|
|
|
|
# Fix CLI bug (eg running COPY internal command even if user had intended
|
|
to run a program called COPYMEGA.BIN)
|
|
|
|
# MIKETRON.BAS removed (code included in EXAMPLE.BAS)
|
|
|
|
# Bump API to version 15
|
|
|
|
|
|
|
|
4.2 (30 September 2011)
|
|
-----------------------
|
|
|
|
# New program: Memory Manipulator (MEMEDIT.BAS) from Joshua Beck: a
|
|
colourful program for editing bytes in memory, written in BASIC
|
|
|
|
# New program: ASCII Artist (DRAW.BAS) from Joshua Beck: lets you draw,
|
|
load and save images created with ASCII characters
|
|
|
|
# New program: MikeTron Reloaded (MIKETRON.BAS) from Joshua Beck: new
|
|
features, bonuses and explosion effects
|
|
|
|
# New program: Calculator (CALC.BAS) from Joshua Beck
|
|
|
|
# CLI has new file management operations to complement FILEMAN program:
|
|
COPY, REN, DEL and SIZE
|
|
|
|
# EDIT now supports the facility to make a new file with the F3 key
|
|
|
|
# EDIT can take an existing file as a parameter at the command line:
|
|
eg "edit myfile.txt"
|
|
|
|
# EDIT will no longer let you run BASIC on an empty file
|
|
|
|
# CLI supports argument passing: program receives the string of parameters
|
|
in SI, or SI = 0 if no parameters are specified
|
|
|
|
# os_run_basic now takes a parameter string in SI and copies it into the
|
|
first BASIC string ($1), unless SI = 0
|
|
|
|
# New system call: os_string_tokenize from Matej Horvat -- reads tokens
|
|
separated by a specified character from a string
|
|
|
|
# os_file_remove now restores all registers to previous state after use
|
|
|
|
# SERIAL program offers to quit out before activating serial ports
|
|
|
|
# TEST.PCX updated and renamed to SAMPLE.PCX
|
|
|
|
# Bugfix: os_get_time_string vector is 0054h, not 0055h
|
|
|
|
# Reordered code inclusion: source/features/basic.asm is now last in kernel
|
|
|
|
# Bump API to version 14
|
|
|
|
|
|
|
|
4.1.2 (18 July 2011)
|
|
--------------------
|
|
|
|
# Added "-O0" (no-optimisation) option to all NASM calls in the build
|
|
scripts; newer versions of NASM use optimisation by default, which
|
|
we don't want
|
|
|
|
|
|
|
|
4.1.1 (20 January 2011)
|
|
-----------------------
|
|
|
|
# source/features/screen.asm: os_list_dialog now scrollable for more
|
|
entries than can fit into the dialog box
|
|
|
|
# source/features/cli.asm: dirlist expanded from 255 to 1024 bytes
|
|
|
|
# source/features/screen.asm: os_file_selector: buffer expanded to
|
|
1024 bytes
|
|
|
|
# Build scripts now copy all .bas files in programs/ to the floppy
|
|
disk image (and not just example.bas)
|
|
|
|
# source/features/misc.asm: os_pause rewritten by Paulo Valongo to work
|
|
with more BIOSes; now takes 110ms chunks in AX
|
|
|
|
# source/features/disk.asm fixes from Mike Gonta: os_get_file_list now
|
|
checks for directory entries AND volume label; os_write_file routine
|
|
now properly zeroes out the .free_clusters list
|
|
|
|
# source/features/keyboard.asm: os_check_for_key now returns 0 in AX
|
|
(and not just AL) when there's no key, as per the API docs
|
|
|
|
# Documentation and comment fixes
|
|
|
|
|
|
|
|
4.1 (17 January 2010)
|
|
---------------------
|
|
|
|
# BASIC variable assignment enhanced: can now take multiple values
|
|
and variables, eg "x = a + 2 * b + 3" (thanks Steve)
|
|
|
|
# Two new system calls: os_port_byte_out and os_port_byte_in --
|
|
send/receive bytes from ports (thanks Paulo)
|
|
|
|
# os_serial_port_enable system call: now takes 0 in AX for normal
|
|
mode (9600 baud as before), or 1 for a new slow mode (1200 baud)
|
|
|
|
# New SERIAL command in BASIC: "SERIAL ON 1200" or "SERIAL ON 9600"
|
|
to enable, "SERIAL SEND X" or "SERIAL SEND 50" to send a byte,
|
|
and "SERIAL REC X" to receive a byte into a variable
|
|
|
|
# New PORT command in BASIC: "PORT OUT 1234 X" or "PORT OUT 1234 20"
|
|
to send byte to a port, and "PORT IN 1234 X" to receive a byte
|
|
|
|
# source/features/serial.asm renamed to source/features/ports.asm
|
|
as it now contains new non-serial routines
|
|
|
|
# os_get_random rewritten: now takes low and high values in AX and
|
|
BX, and returns random int between them (inclusive) in CX; also
|
|
has new os_seed_random routine used by the kernel (thanks Ian)
|
|
|
|
# New RAND command in BASIC: generates a random number between two
|
|
values and stores the result in a variable
|
|
|
|
# CLI command checking code simplified -- no need to point SI to
|
|
the input string each time (thanks Ian)
|
|
|
|
# BASIC CURSORCHAR command is now CURSCHAR, so that it doesn't
|
|
look like a superset of the CURSOR command
|
|
|
|
# API version bumped to 13
|
|
|
|
# Handbook updates and fixes
|
|
|
|
|
|
|
|
4.0 (20 November 2009)
|
|
----------------------
|
|
|
|
# MikeOS BASIC included in the kernel; run EXAMPLE.BAS to try
|
|
it out, and see doc/handbook-appdev-basic.html for a guide
|
|
|
|
# os_run_basic call accessible to use programs: takes AX as start
|
|
of code location, and BX as size of the code (in bytes)
|
|
|
|
# App menu and CLI can now run .BAS programs as well as .BIN
|
|
|
|
# EDIT.BIN can edit .BAS files; press F8 to run the
|
|
currently-being-edited code in the BASIC intepreter
|
|
|
|
# EDIT.BIN: F5 deletes whole lines; Backspace key now functions,
|
|
although newlines still need to be removed with Delete; Esc
|
|
quits without saving -- press F2 to save (as per bottom bar)
|
|
|
|
# If AUTORUN.BIN or AUTORUN.BAS exists on the disk, it will be
|
|
executed immediately after the kernel has loaded, before showing
|
|
the normal program launcher menu
|
|
|
|
# EDIT.BIN now pops up an error dialog if it can't save a file
|
|
|
|
# source/features/string.asm: os_string_strip rewritten -- shorter
|
|
and saves 256 bytes (thanks to Ian Seyler)
|
|
|
|
# source/features/misc.asm: rewrote os_pause routine -- it now takes
|
|
AX = tenths of a second to wait (so eg AX = 30 = 3 seconds)
|
|
|
|
# programs/hello.asm and programs/gfxdemo.asm removed (and their binaries
|
|
on the floppy) -- old and not useful now
|
|
|
|
# os_dialog_box no longer raises a fatal error if strings are too long to
|
|
fit in the box
|
|
|
|
# source/features/disk.asm: os_write_file no longer overwrites a file
|
|
if it already exists; instead it bails out (carry flag set)
|
|
|
|
# API version bumped to 12
|
|
|
|
# source/features/disk.asm: filename checking and file writing bugfixes
|
|
|
|
# doc/handbook-appdev.html renamed doc/handbook-appdev-asm.html
|
|
|
|
|
|
|
|
3.3 (20 February 2009)
|
|
----------------------
|
|
|
|
# New program: EDIT.BIN -- a full-screen text editor (for Unix-formatted
|
|
text files)
|
|
|
|
# README.TXT is no longer copied to the disk images; instead,
|
|
programs/sample.txt is added for use in EDIT.BIN
|
|
|
|
# CLI now includes CAT command to display a file: 'CAT FOO.TXT'
|
|
|
|
# Music keyboard (KEYBOARD.BIN) given new interface to show a
|
|
visual representation of a music keyboard
|
|
|
|
# os_write_file now removes an older version of the specified file,
|
|
if it exists, before performing the write operation
|
|
|
|
# CLI code (source/features/cli.asm) cleaned up -- split into sections
|
|
with fewer local labels
|
|
|
|
# os_string_parse call is now accessible to external programs
|
|
|
|
# Disk calls now convert a filename to uppercase automatically, so
|
|
there's no need for the calling code to do it
|
|
|
|
# API version bumped to 11
|
|
|
|
|
|
|
|
3.2 (25 January 2009)
|
|
---------------------
|
|
|
|
# New system call: os_sint_to_string from Tslil -- converts a
|
|
signed integer to a string
|
|
|
|
# os_int_to_string rewritten by Tslil; cleaner code, and no longer
|
|
needs to be passed BX for a string location (it returns a pointer
|
|
to an internal string via AX)
|
|
|
|
# New system call: os_serial_port_enable -- initialises the port
|
|
|
|
# Serial port is no longer initialised by the kernel, but by any
|
|
external programs that need it (eg in programs/serial.asm)
|
|
|
|
# New system call: os_string_reverse (source/features/string.asm)
|
|
|
|
# os_filename_convert removed; source/features/disk.asm now does
|
|
the conversion internally
|
|
|
|
# API version bumped to 10
|
|
|
|
# Handbooks updated with API changes
|
|
|
|
# build-openbsd.sh updated by Takayoshi
|
|
|
|
|
|
|
|
3.1 (4 January 2009)
|
|
--------------------
|
|
|
|
# HANGMAN game added, in which the player works out names of cities
|
|
|
|
# PCXVIEW program renamed to VIEWER, and can display text files
|
|
as well as images
|
|
|
|
# FILEMAN program now has an option to show a file's size
|
|
|
|
# New system call: os_string_charchange (source/features/string.asm),
|
|
switches all instances of a specified char to a different one
|
|
|
|
# New system call: os_get_random (source/features/math.asm), generates
|
|
integer between 0 and 255 using the BIOS clock
|
|
|
|
# API bumped to version 9
|
|
|
|
# os_draw_block routine (source/features/screen.asm) now available
|
|
to user programs
|
|
|
|
# When a program is called from the app selector, there's no longer a
|
|
key press prompt after the program has finished
|
|
|
|
# os_dialog_box uses coloured blocks to denote highlighted button instead
|
|
of '[=' characters
|
|
|
|
# os_string_strip now uses its own buffer (not the OS disk buffer)
|
|
|
|
# Keyboard codes (eg KEY_ESC) and more colours added to programs/mikedev.inc
|
|
|
|
# os_get_file_size system call fixed
|
|
|
|
# Registers AX, BX, CX, DX, SI, DI cleared to zero before program execution
|
|
to ease debugging
|
|
|
|
# MONITOR program has better help text at the start
|
|
|
|
# build-win.bat renamed buildwin.bat (more suitable in DOS)
|
|
|
|
# Build scripts copy README.TXT to the floppy image, for reading
|
|
in the new VIEWER program
|
|
|
|
|
|
|
|
3.0 (21 December 2008)
|
|
----------------------
|
|
|
|
# Memory map shuffled: first 24K is kernel code space; then 8K buffer for
|
|
kernel disk operations; then 32K for external programs
|
|
|
|
# Major code simplification and cleanup: removed mouse support,
|
|
DOS support, STAKAN.BIN, testzone, CLI PROMPT command; many of these
|
|
features will continue to be developed in the TomOS project
|
|
|
|
# Source code restructured: bootloader moved to source/bootload;
|
|
system calls now separated into multiple files in source/features/;
|
|
os_main.asm renamed kernel.asm; kernel file is now KERNEL.BIN
|
|
|
|
# More code cleanup work: use 'mov ax, 0' instead of 'xor ax, ax' and
|
|
'mov si, foo' instead of 'lea si, [foo]'; more comments; instances of
|
|
8 spaces changed to tabs; hex notation now always uses 'h' suffix
|
|
(eg always '10h' and never '0x10') for consistency
|
|
|
|
# Certain disk routines for manipulating the FAT and root directory have
|
|
been made internal to source/features/disk.asm, and not accessible to
|
|
user programs, to simplify the disk API
|
|
|
|
# New system call: os_string_parse takes a string pointer in SI and
|
|
breaks it into zero-terminated smaller string pieces based on spaces;
|
|
eg SI = 'Foo bar baz stuff' returns AX = 'Foo', BX = 'bar',
|
|
CX = 'baz', DX = 'stuff'
|
|
|
|
# New system call: os_string_to_int takes a decimal string (max '65535')
|
|
in SI and returns the numerical value in AX
|
|
|
|
# File manager (FILEMAN.BIN) can now copy files (up to 28K in size), using
|
|
external program RAM -- first 4K is reserved for the file manager itself
|
|
|
|
# os_get_file_list now returns sanitised comma-separated list of files
|
|
(eg "FOO.BIN,HELLO.TXT" instead of "FOO BIN,HELLO TXT" etc.)
|
|
|
|
# dosbuild.bat renamed build-win.bat -- it now adds boot block and programs
|
|
to mikeos.flp using third-party tools
|
|
|
|
# os_list_dialog rewritten: now shows selected option as a black bar,
|
|
rather than with ">>>>>" indicator
|
|
|
|
# MONITOR.BIN updated for new memory map; now runs code ORGed at 36864
|
|
|
|
# When exiting a program that was launched from the menu-driven app selector,
|
|
the "Program finished" message now appears in a red bar at the bottom
|
|
|
|
# Text with bright attributes should no longer blink on the screen
|
|
|
|
# FILEMAN.BIN now refuses to rename a file to an existing filename
|
|
|
|
# build-linux.sh script now creates disk_images/mikeos.flp if that
|
|
file cannot be found
|
|
|
|
# Added README.TXT to disk/images directory; explains the purpose of each
|
|
file and how to recreate the floppy disk image
|
|
|
|
# Removed os_get_int_handler and os_modify_int_handler system calls
|
|
|
|
# Removed os_execute_program syscall; no longer needed
|
|
|
|
|
|
|
|
2.0.0 (17 October 2008)
|
|
-----------------------
|
|
|
|
# FAT12 write support implemented (limited to 64K files); includes system
|
|
calls to create an empty file, save data from RAM to a file, remove a
|
|
file, rename a file and more -- see source/fat12_write.asm
|
|
|
|
# New file manager: programs/fileman.asm -- lets you delete and rename
|
|
files, and get information on the floppy fisk
|
|
|
|
# Mouse driver from Tomasz Gorol, with system calls in
|
|
source/os_mouse_syscalls.asm and documentation in the doc/ directory;
|
|
also MOUSETST.BIN program to demonstrate it
|
|
|
|
# New system call: os_filename_convert -- takes a normal filename such
|
|
as 'FOO.BIN' and converts it into the FAT12 equivalent of 'FOO BIN'
|
|
(first part padded out with spaces to 8 chars, no full-stop separator)
|
|
|
|
# New system call: os_list_dialog -- takes a comma-separated and
|
|
zero-terminated string, and shows options in a list box
|
|
|
|
# New system call: os_input_dialog -- pops up a small box with
|
|
a message, and prompts user to enter a string
|
|
|
|
# New system call: os_string_strincmp, like os_string_compare but
|
|
limited to the number of characters passed in CL
|
|
|
|
# os_input_string improved: can now enter and backspace through
|
|
strings spanning multiple lines
|
|
|
|
# os_load_file now returns byte count in BX rather than sectors
|
|
|
|
# Cursor is always restored when leaving os_file_selector
|
|
|
|
# os_dump_registers now shows SI and DI along with AX, BX, CX, DX
|
|
|
|
# os_int_to_string fixed -- previously it wouldn't return anything
|
|
if AX = 0; now it sets string as '0'
|
|
|
|
# PCXVIEW.BIN refuses to display files without a .PCX extension
|
|
|
|
# TEST.PCX is now in programs/ and copied to floppy disk when
|
|
build-linux.sh, build-openbsd.sh or build-osx.sh is run
|
|
|
|
# os_draw_background doesn't clear screen at start, to cut down on flicker
|
|
|
|
# At kernel start, don't try to set up a block cursor (it's not useful)
|
|
|
|
# build-linux.sh now includes a method for blanking FAT12 floppies at the
|
|
top of the code, in the comments
|
|
|
|
# In programs/mikedev.inc, os_string_uppercase and os_string_lowercase
|
|
were marked incorrectly as using SI rather than AX -- fixed
|
|
|
|
# Added -w+orphan-labels to NASM calls in build-linux.sh, and fixed labels
|
|
without colons throughout OS and programs
|
|
|
|
# Un-needed commented-out lines removed from programs/keyboard.asm
|
|
|
|
# In source/bootload.asm, comments referred to first two bytes of FAT;
|
|
really means first two clusters -- now fixed
|
|
|
|
|
|
|
|
1.4.2 (20 August 2008)
|
|
----------------------
|
|
|
|
# Users can now exit the minicom serial terminal program
|
|
(SERIAL.ASM) by pressing the F8 key
|
|
|
|
# VOL command added to the CLI: displays volume label and
|
|
filesystem information for the current floppy disk
|
|
|
|
# os_check_for_key now returns complete scancode in AX,
|
|
rather than just the key in AL
|
|
|
|
# Various small documentation updates
|
|
|
|
|
|
|
|
1.4.1 (20 July 2008)
|
|
--------------------
|
|
|
|
# New system call: os_dump_registers (displays the contents of
|
|
AX, BX, CX and DX in hexadecimal format)
|
|
|
|
# System call vectors added for os_show_cursor and os_hide_cursor,
|
|
so that they're accessible to user programs
|
|
|
|
# os_modify_int_handler now clears the interrupt flag on entry,
|
|
and sets it on exit
|
|
|
|
# Some labels didn't have colons, triggering warnings with some
|
|
versions of NASM -- fixed
|
|
|
|
|
|
|
|
1.4.0 (15 July 2008)
|
|
--------------------
|
|
|
|
# System call for debugging: os_dump_string, shows ASCII text and
|
|
hexadecimal dump
|
|
|
|
# New system calls for converting numbers to text: os_print_digit,
|
|
os_print_1hex, os_print_2hex, os_print_4hex, os_long_int_to_string
|
|
|
|
# New system calls: os_set_time_fmt and os_set_date_fmt to determine
|
|
output of os_get_time_string and os_get_date_string respectively
|
|
|
|
# More system calls: os_get_int_handler, os_print_space, os_long_int_negate
|
|
|
|
# Bootloader: Buffer now 8K from end of loader, removed unnecessary disk
|
|
reset calls, simplify FAT cluster calculation, FAT fixes
|
|
|
|
# File selector now exits on Esc keypress (PCXVIEW.BIN updated accordingly)
|
|
|
|
# New DOS function, 35h -- get interrupt vector
|
|
|
|
# Updated FAT code in syscalls.asm as per bootloader fixes
|
|
|
|
# Minor changes and comments to string functions
|
|
|
|
# File selector limited to 14 names to avoid overflow down the screen
|
|
|
|
# os_get_file_list should better handle floppies made on Windows
|
|
|
|
# os_program_load will fail if program is too large
|
|
|
|
# os_file_selector now shows cursor when finished
|
|
|
|
# mikedev.inc's system call list now categorised
|
|
|
|
# New system variables section in os_main.asm, currently holding
|
|
settings for time and date formatting
|
|
|
|
# testzone.asm added in source directory -- a place for trying out quick
|
|
code snippets, accessible via 'TEST' in the CLI
|
|
|
|
# LICENSE.TXT moved to doc/ directory
|
|
|
|
# Lots of small tweaks, comment updates and cosmetic fixes
|
|
|
|
|
|
|
|
1.3.1 (14 May 2008)
|
|
-------------------
|
|
|
|
# OpenBSD build script added (build-openbsd.sh)
|
|
|
|
# Simple PSP block moved from start of kernel to
|
|
os_execute_program routine
|
|
|
|
# Handbook updates (links to OSes based on MikeOS, code samples
|
|
updated, Q for Mac OS X link fixed)
|
|
|
|
# Various cosmetic code and comment cleanups
|
|
|
|
|
|
|
|
1.3.0 (8 April 2008)
|
|
---------------------
|
|
|
|
# New 'minicom'-like serial terminal program, serial.asm in the
|
|
programs/ directory (replaces old serial.asm)
|
|
|
|
# New pcxview.asm program to display 8-bit 320x200 PCX images, plus
|
|
test.pcx on disk images as a demo
|
|
|
|
# os_program_load removed: new routine to load file is os_load_file,
|
|
where AX = filename and CX = location in RAM to load file; returns
|
|
BX = size of file loaded
|
|
|
|
# New system call: os_execute_program: runs code located at 100h
|
|
|
|
# New system call: os_get_cursor_pos -- returns DH = row of cursor
|
|
and DL = column
|
|
|
|
# System call vectors at the start of os_main.asm cleaned up: now
|
|
they are simple jmp instructions rather than call/ret sequences
|
|
|
|
# The CLI and program selector now refuse to execute MIKEKERN.BIN
|
|
|
|
# os_file_selector now shows the cursor after a file is chosen
|
|
|
|
# gfxdemo.asm now displays quit message in top-left corner
|
|
|
|
# hardlist.asm removed from programs/ directory (and HARDLIST.BIN
|
|
removed from disk images) -- no real purpose for it
|
|
|
|
# VLAK.BIN removed from disk image (didn't quit correctly); replaced
|
|
by STAKAN.BIN Tetris-like game
|
|
|
|
|
|
|
|
1.2.0 (20 January 2008)
|
|
-----------------------
|
|
|
|
# New monitor.asm program by Yutaka Saiko: enter machine code
|
|
instructions in hex format, followed by '$'
|
|
|
|
# Information for new monitor.asm program added to Handbook
|
|
|
|
# New system call: os_find_char_in_string -- locates and returns
|
|
the position of a character in a string
|
|
|
|
# CLI now accepts complete executable names (eg 'hello.bin')
|
|
and not only short names ('hello')
|
|
|
|
# doserror.asm removed from the programs/ directory
|
|
|
|
# Handbook fixes
|
|
|
|
|
|
|
|
1.1.1 (12 December 2007)
|
|
------------------------
|
|
|
|
# Mac OS X build script fixed
|
|
|
|
# Project now hosted on BerliOS at http://mikeos.berlios.de
|
|
|
|
# Handbook fixes
|
|
|
|
|
|
|
|
1.1.0 (8 December 2007)
|
|
-----------------------
|
|
|
|
# MikeOS API version incremented to 2
|
|
|
|
# New serial port support for native MikeOS programs (Ian Seyler);
|
|
os_send_via_serial and os_get_via_serial system calls, plus a
|
|
demo program (serial.asm)
|
|
|
|
# New system call: os_get_date_string (Ian Seyler): returns
|
|
a string like '12/31/2007'
|
|
|
|
# CLI updated with new 'TIME' and 'DATE' commands (Ian Seyler)
|
|
|
|
# dosbuild.bat updated (Ian Seyler)
|
|
|
|
# build-osx.sh script for OS X users added (Michael van Tellingen)
|
|
|
|
# New Handbook information on building on Windows and Mac OS X
|
|
|
|
# New Handbook section on the serial port
|
|
|
|
# Handbook tweaks: mini TOC in 'Making an OS' section; new
|
|
'Go further' links section; close <li> tags; 'Using MikeOS'
|
|
section now linked in left-hand bar; FAQ on 16-bit/asm
|
|
|
|
|
|
|
|
1.0.0 (16 September 2007)
|
|
-------------------------
|
|
|
|
# Restructured directory layout: bootloader (renamed bootload.asm)
|
|
and kernel now both in 'source' directory; new 'doc' directory
|
|
|
|
# 'build' and 'make_disks' scripts merged into a single script
|
|
called 'build-linux.sh'; BUILD.BAT renamed DOSBUILD.BAT
|
|
|
|
# New os_file_selector: pops up a dialog box for selecting a file;
|
|
result is a zero-terminated 11-char string pointed to by AX
|
|
|
|
# New system call: os_string_truncate -- cuts string down to specified
|
|
number of characters from start
|
|
|
|
# New system call: os_bcd_to_int -- converts binary coded decimal
|
|
numbers into integers
|
|
|
|
# New system call: os_get_time_string -- generates a string with
|
|
the current time (eg '20:41')
|
|
|
|
# os_string_chomp now strips leading spaces as well as trailing
|
|
|
|
# os_print_blank_line renamed to os_print_newline
|
|
|
|
# os_int_to_string updated -- now based on a public domain routine
|
|
that handles full 16-bit registers
|
|
|
|
# CLI now strips spaces with os_string_chomp before checking for blank
|
|
lines -- stops it complaining that ' ' (space) is not a valid program
|
|
|
|
# os_string_strip and show_files now use os_buffer as a temporary store,
|
|
rather than their own strings (reduces kernel size by 512 bytes)
|
|
|
|
# os_input_string fixed so that backspaced chars are zeroed-out
|
|
|
|
# os_int_reboot internal call added, which reboots the machine
|
|
via the keyboard controller
|
|
|
|
# Removed 'API version' from start of os_main.asm; kernel code now
|
|
starts at 8000h (bootloader updated accordingly)
|
|
|
|
# Added os_get_api_version which returns the current API version,
|
|
as defined at the top of os_main.asm, in AL
|
|
|
|
# Removed CLI_VER from os_cli.asm -- it's not going to be updated
|
|
outside of MikeOS so a single global version number is simpler
|
|
|
|
# Changed 'REBOOT' to 'EXIT' in os_cli.asm -- now it doesn't
|
|
reboot but exits cleanly with a 'ret'
|
|
|
|
# CREDITS.TXT added to list people involved in the project
|
|
|
|
|
|
|
|
0.40 (16th January 2007)
|
|
------------------------
|
|
|
|
CHANGES BY PETER NEMETH:
|
|
|
|
# os_syscalls.asm renamed to syscalls.asm, to support the DOS 8.3
|
|
filename character format (NASM could not find certain files)
|
|
|
|
# BUILD.BAT added for DOS users
|
|
|
|
# Divide by zero handling (int 0h) added
|
|
|
|
# Drive descriptor fixed in bootsector and some features added;
|
|
now it will not hang the system if there is a boot failure
|
|
|
|
# Before loading a DOS program, save and clean up registers
|
|
|
|
# DOS exit call fixed: does not restart the OS, and programs
|
|
can exit with error codes
|
|
|
|
# DOS 'get date' interrupt added; now returns the current date
|
|
|
|
# Some rets replaced with irets
|
|
|
|
# DOS Ctrl+Break handler added; not yet working (IRQ 9 doesn't
|
|
call int 1Bh)
|
|
|
|
# DOS print character via printer added
|
|
|
|
# Some helper routines added for DOS
|
|
|
|
# DOS CP/M compatible routines added
|
|
|
|
# DOS reset disk added
|
|
|
|
# DOS set/get current drive added
|
|
|
|
# DOS set date function added
|
|
|
|
# DOS set/get time function added
|
|
|
|
# DOS functions sorted by function number
|
|
|
|
# DOS unimplemented interrupt call fixed; now only exits from
|
|
program and display message, not restart OS
|
|
|
|
# DOS serial port and modem support interrupt added;
|
|
read and write from STDAUX (COM1)
|
|
|
|
# DOS interrupt flush buffer and read fixed; now really flush the
|
|
buffer before read
|
|
|
|
|
|
CHANGES BY MIKE SAUNDERS:
|
|
|
|
# gfxdemo.asm fixed to quit properly
|
|
|
|
# DOS set vector routine added
|
|
|
|
# Added mini Program Segment Prefix block to os_app_data in
|
|
os_main.asm -- needs to be done properly, but VisiCalc
|
|
now starts up
|
|
|
|
|
|
|
|
0.30 (12th November 2006)
|
|
-------------------------
|
|
|
|
# New command line interface mode, currently featuring DIR, HELP,
|
|
CLS, PROMPT, VER and EXIT inbuilt commands
|
|
|
|
# os_alert_dialog renamed os_dialog_box due to new feature: multiple
|
|
button support. If DX = 1 when called, it presents two buttons
|
|
(OK and Cancel) with the selection returned in AX
|
|
|
|
# New system call: os_string_compare -- takes two strings and sets
|
|
the carry flag if they're the same
|
|
|
|
# New system call: os_string_chomp -- removes trailing spaces
|
|
at the end of a string
|
|
|
|
# New system call: os_string_strip -- removes character specified
|
|
in AX from the string in SI
|
|
|
|
# Kernel source split into multiple files for easier editing, based
|
|
around os_main.asm which includes the rest. These kernel files
|
|
are now in kernel/, with the bootloader in bootloader/
|
|
|
|
# os_program_load now sets carry flag if program not found, instead
|
|
of bailing out to os_fatal_error, and also returns from a call
|
|
|
|
# os_program_load can clear the screen before loading a program if
|
|
BX = 1. Useful for the file selector dialog
|
|
|
|
# Changed os_pause to use BIOS call
|
|
|
|
# Fixed zero-termination bug in os_string_copy
|
|
|
|
# MikeOS programs that include mikedev.inc can now access the
|
|
8K scratchpad buffer via os_buffer
|
|
|
|
# Moved DOSTEST.ASM, for testing DOS compatibility, into the
|
|
programs/ directory (so that it's automatically built)
|
|
|
|
# Bootloader now has error messages, rather than just freezing
|
|
|
|
# Split up the assemble and disk-image scripts to avoid loopback
|
|
mounting errors, and simplify editing
|
|
|
|
# Various small cleanups and fixes
|
|
|
|
|
|
|
|
0.25 (27th October 2006)
|
|
------------------------
|
|
|
|
# New system call: os_modify_int_handler
|
|
|
|
# Removed DOS compatibility interrupt handlers from bootloader,
|
|
replaced with code in kernel using os_modify_int_handler
|
|
|
|
# System call for os_get_file_list routine added
|
|
|
|
# Music keyboard demo app no longer uses 100% CPU
|
|
|
|
|
|
|
|
0.24 (25th October 2006)
|
|
------------------------
|
|
|
|
# Released on SourceForge
|
|
|
|
|
|
==================================================================
|
|
|