================================================================== 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
  • 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 ==================================================================