----------------------- Emu8086, Inc. 2002-2004 http://www.emu8086.com ----------------------- Emu8086 - 8086 Assembler and Microprocessor Emulator +++ Revision History +++ ******************************************** [+] - stands for new features. [-] - stands for known bugs. [*] - stands for fixed bugs. ******************************************** Version 3.07c Saturday, January 29, 2005 [+] Language help file updated. Emu8086 can be translated to any world language. More info is available from "How_To_Translate.txt" file under "Translation" folder of your Emu8086 installation. ******************************************** Version 3.07 Saturday, January 15, 2005 [*] DAS instruction error: MOV AL,76H SUB AL,39H ; AL=3DH DAS ; AL=37H (not AL=D7H) Thanks to Wu Sheng-Ho from Taiwan :) ******************************************** Version 3.05 Sunday, October 31, 2004 [+] Shareware Nag Screen updated... To let you think about registration benefits a little bit more. Thanks to Bill from USA :) [+] Error report is reverted, to make it easier to compile your code and find possible syntax errors. [*] DIV instruction error: MOV DX, 0FFFEh MOV AX, 00001h MOV BX, 0FFFFh DIV BX Is totaly fixed. Thanks to Mehrdad University of Amir Kabir (Poly Technic) of Tehran - Iran :) [*] The External Memory Viewer window caused a very long "Reload"... Now you have to press "Refresh" button, because otherwise it works very slow even on Pentium 10GHz. Thanks to Y.W. Lee from Hong Kong :) This problem fixed is also fixed. ******************************************** Version 3.04 Friday, October 29, 2004 [+] Font size for "External Memory Viewer" is set to "Fixed" system font, to make it look better under Windows XP. Thanks to Joshua from Israel :) [*] Editor highlight for SCASB and SCASW instructions works from now on. Thanks to Marco from Spain :) [*] Declaring STACK segment before DATA segment for EXE file, caused memory access problems. Bug fixed. Thanks to Y.W. Lee from Hong Kong, and Egman from China :) ******************************************** Version 3.03 Sunday, October 24, 2004 [*] Incorrect description of STOSW instruction in documentation is fixed. Thanks to Amir Badiyehneshin. [*] Full range custom interrupt calls are available from 0h to 0FFh. (previously it was limited to INT 7Fh) Thanks to Joe Moretti. ******************************************** Version 3.02 Tuesday, October 12, 2004 [*] Intel 8086 DAA instruction bug is fixed. Thanks to Zhang Xing Liang from China :) [*] Intel 8086 DAS instruction bug is fixed. ******************************************** Version 3.00 Friday, October 01, 2004 [+] New virtual device added: Thermometer and Heater Device for demonstration of automatic temperature control. See Thermometer.asm in Samples and Thermometer.exe in DEVICES folder. This device comes with complete source code. [*] Robot device bug fixed. The "robot" device sometimes made a turn when a light is switched on or switched off. Thanks to Mike O'Neil. [*] Carry flag error is fixed for ADC instruction. Thanks to Shameerudheen PT. ******************************************** Version 2.58 Saturday, April 10, 2004 [*] Execution speed can be changed while emulator is in input state without causing misapprehension. [+] Message box is shown when trying to type into "Actual Source" window. [*] Unworking shortcuts removed for "Comment block" and "Uncomment block" menus. ******************************************** Version 2.57 Friday, August 01, 2003 [+] New look and feel! [*] Font settings are saved correctly. Thanks to DarkDaemon! ******************************************** Version 2.12 Friday, June 06, 2003 [*] Recent menu on startup form works. [+] 100 to 200 address limit for custom I/O devices removed. Current limit is: 00000Fh to 0FFFFh (15 to 65535). IO.BAS and IO.H files are updated, custom devices should be recompiled to be compatible with new version. ******************************************** Version 2.11 Tuesday, June 03, 2003 [+] "Making your own Operating System" tutorial is updated. Thanks to Daniel (aka, The Starman) ! [+] New virtual device is available: "Printer.exe" + PrinterDemo.asm (see "prReadMe.txt" in "Sources.zip" inside "DEVICES" folder). Thanks to Andrew Nelis ! [*] ORG directive was working well with some specific code. Fixed! Thanks to Robert M ! [*] UNIX file format is supported again. [*] INCLUDE directive parses out comments properly. [+] Start up form is added. ******************************************** Version 2.10 Friday, January 10, 2003 [+] There are no dramatic changes in this version, we've just upgraded our web site to http://www.emu8086.com so links are updated. ******************************************** Version 2.09 Friday, December 27, 2002 [+] External add-on devices can be attached to Emu8086! See "simple_io.asm" in samples. Other programmers can write their own devices in Visual Basic or any other language (VC++), check "DEVICES" folder for more info. [+] Source files are loaded faster. [+] 400k limitation removed for EXE files, new limit is about 700k. [+] When double clicking over the value in STACK window "Extended Value Viewer" is opened. Thanks to John McNally! [+] Main editor window is automatically minimized when emulator is shown. [*] INT 15h / 86h works correctly! Thanks to Teerapon Jungwiwattanapor! [*] MagicGlob internationalization system updated to version 1.01 (problem with translating tool tips fixed). Thanks to Georges Schreyer! ******************************************** Version 2.07 Friday, November 29, 2002 [+] Interface of Emu8086 can be translated to any other language (German, French, Italian, Spanish, etc...). For more information check inside "Translate" folder. [+] More samples added: matrix.asm - matrix transpose sample. palindrome.asm - checks if string is a palindrome. ToBin.asm - prints out binary equivalent of a decimal number. [*] Disposition for Flags window is restored more precisely when it is at the right edge of the screen. [*] Regression found and fixed: compiler wasn't adding variable offset when calculating effective address: MOV a[bx][si], 7 a DB 1,2,3,4,5 ******************************************** Version 2.06 Thursday, November 21, 2002 [*] DAA and DAS instructions correctly adjust the result (in all situations) and required flags are set. Thanks to Jacob Feindt! ******************************************** Version 2.05 Saturday, November 16, 2002 [+] Disposition for various windows on screen is saved and restored automatically. [+] New separate window for looking at memory. Accessible from "View" menu of the emulator as "External Memory Viewer". [+] When a register or variable changes (while single-stepping), it is highlighted. It may help the user notice that something has changed. [+] User can set custom output directory. Accessible from "Compile" menu. [+] Decimal immediate values may have "d" suffix, for example: MOV CX, 10000d ******************************************** Version 2.04 Saturday, August 24, 2002 [+] New sample added: "print_hex_digit.asm" [*] Description of XLAT instruction in "8086 instruction set" corrected. ******************************************** Version 2.03 Saturday, August 10, 2002 [+] Samples updated: "snake.asm" and "keyboard.asm". [*] Options to set default colors for User Screen are improved. [*] "Debug Log" is unloaded correctly when Emulator window is closed. [*] Compiler supports: MOV AX, [BP] (even without displacement). [*] Tab indexes corrected for controls on emulator window. ******************************************** Version 2.02 Thursday, August 08, 2002 [+] Documentation updated. [+] For COM file CX register is set to file size in bytes. For EXE file CX register is set to file size without EXE header (200h). [+] Made possible to Drag & Drop files from Windows Explorer into the main window (area below the "About" button), and into the emulator window (area between "Memory" and "Disassemble" buttons). ******************************************** Version 2.01 Monday, August 05, 2002 [+] Documentation updated. "MASM / TASM compatibility" section added to "Emu8086 reference". [+] Cancel button added to "Choose Template" dialog box (shown when New button is clicked). [+] Message Box is automatically hidden on reload when it has one of the following messages: "System halted!" "PROGRAM TERMINATED!" [*] This code gives more reasonable error messages: MOV AX, 0 MOV CX, 5 m1: INC AX LOOP m1 ; not a real error! MOV AL, 0FFFFh ; real error is here. (see also "Compiling Assembly Code" in "Emu8086 reference"). ******************************************** Version 2.00 Saturday, August 03, 2002 [*] "Extended Value Viewer" is automatically hidden when emulator window is closed. [*] "Lexical Flag Analyzer" supports standard emulator hot keys: F8 - single step. Shift + F8 - step over. Ctrl + F8 - run until cursor. F9 - run. F7 - current instruction. ******************************************** Version 1.32 Friday, August 02, 2002 [*] It is no longer required to un-install previous version of Emu8086 before installing new version. Thanks to Darrell Collins. [*] Un-install of previous version does not reset options for current version of Emu8086. [*] Hexadecimal and Octal values are treated as unsigned, huge decimal numbers are not converted to singed values. Compiler reports expected overflow error messages for: MOV BL, 0FFFFh MOV BL, 177777o MOV BL, 65523 [*] Emulator does not reset its options to default after it is closed and then re-opened. [*] Backup ".~asm" files are saved with original extension of an executable file, to prevent conflicts. [*] "MyBuild" folder is automatically re-created even if manually deleted on runtime. Required for "Compile and Emulate" button to work properly. [*] LOOP instruction is disassembled correctly. Previously it was decoded as LOOPNE. ******************************************** Version 1.31 Tuesday, July 30, 2002 [+] "Lexical Flag Analyzer" added to "View" menu of the emulator. (see "4_sample.asm" in Samples). [+] Default "step delay" is set to 200 ms. [*] Documentation flaws corrected. [*] Assembler recognizes data types better, and generates correct machine code (even without 'b.' or 'w.'). [*] Regression found and fixed: SHL BX, CL and other shift-rotate commands were not assembled when second operand is CL. [*] Undefined data was set to AX by the following code: MOV CL, 0 MOV AX, 5 SHL AX, CL (AX should be unchanged). Fixed! [*] Bizarre resize of Editor Window (to the minimum) caused GPF under Windows XP. Fixed! [*] This code caused overflow: MOV AL, 251 MOV BL, 254 MUL BL Fixed! [*] Incorrect result was calculated by: MOV AX, -12 MOV BL, -2 IDIV BL Fixed! [+] "Debug Log" shows next instruction that is going to be executed when it is opened. ******************************************** Version 1.30 Sunday, July 28, 2002 [*] Version number added to default install path, to avoid conflicts with previous installations. Thanks to Starman! [+] Variable View improved, it is possible to view arrays and strings while your program is executing. See "Variables" in Tutorials. [+] Full path to source file is included in editor's caption. [+] Support for BIN files improved. [+] Stack window is less flickering. [+] Separate "View" menu added to emulator, it allows to see Stack, Variables, Flags, User Screen, ALU and etc... ******************************************** Version 1.29 Wednesday, July 24, 2002 [+] New sample that prints out the result with floating point added to Samples folder: "float.asm". [*] Disassembler updated! Some relative jumps were not decoded correctly. [+] Option to browse "MyBuild" folder or load in emulator after compilation. [+] Shortcut to Emu8086 is added to "SendTo" folder automatically, this allows to load any ASM or Executable files directly without changing your current Windows settings. [*] Regression found and fixed: MOV AL, [SI] + 00102h was not compiled properly! Thanks to Donald?! [*] Segment prefixes are not treated as labels on pre-compile. [+] "CALL immediate" is supported. [*] Minimization after focus lost issue is fixed! Thanks to Donald! [+] A primitive variable view window is added. Select "Variables" from "View" menu of emulator. It is still under construction. [+] Compiler has better support for JMP / JCC instructions with immediate values as parameters. See "Program Flow Control" in tutorials. ******************************************** Version 1.28 Wednesday, July 17, 2002 [+] Emu8086.exe supports command line parameters. It is possible to set it up to open ".asm" files in Windows Explorer. You can also load executable files using "Send To" menu of Windows Explorer (copy the shortcut of Emu8086.exe to "Windows\SendTo" folder). [+] Documentation updated, new tutorials added: "Macros Tutorial" "Making your own Operating System" "Controlling External Devices: Robot, Stepper-Motor, Traffic Lights" [+] Cosmetic improvements. [+] HLT instruction can be used to Halt the Emulator. [*] "Extended Value Viewer" is improved. [*] MOVSB/W, LODSB/W, STOSB/W instructions work with "REPNE" prefix (the same way as with "REP" prefix - ZF not checked in both cases). ******************************************** Version 1.27 Wednesday, July 10, 2002 [+] "Robot" virtual device is updated, lamps and walls can be added to the map. [+] "Emu8086 reference" is updated, "Using the Mouse" added to "Source Code Editor" chapter. [+] Tool Tip showing current line number while dragging the vertical scroll bar thumb can be turned off in Options. [*] Debug menu works correctly both for break points and "run until...". [+] "Extended Value Viewer" is shown when memory value is double-clicked in the list. It allows to edit the value in all supported numeric systems, and watch after the value while program runs. ******************************************** Version 1.26 Monday, July 08, 2002 [*] "Traffic Lights" looked a little bit ugly on some systems, fixed. [*] Regression fixed. "User Screen" is shown after program termination. [+] Samples: "micro-os_kernel.asm" and "bintest.asm" are updated to use new compiler directives. [+] New virtual device added: "Robot". See "I/O ports" in "Emu8086 reference". [*] Emulator Hot keys work from Virtual Device windows. ******************************************** Version 1.25 Sunday, July 07, 2002 [+] New compiler directives added. See "Compiling Assembly Code" in "Emu8086 reference". [+] Assembler supports IN and OUT instructions! [+] Emulator has new Virtual Devices: "Traffic Lights" and "Stepper Motor". See "I/O ports" in "Emu8086 reference". [+] "Extended Value Viewer" window is shown when register text box is doubled clicked, or it can be selected from "View" menu. This window is updated automatically on run-time. [+] Custom memory map support added. See "Custom Memory Map" section in "Emu8086 reference". [+] Templates for all supported source files added. ******************************************** Version 1.24 Wednesday, July 03, 2002 [+] "Step Over" command allows to run through procedures or macros very fast and stop on the next instruction. [+] List of supported Hot Keys updated: Single Step: F8 Run: F9 Stop: Esc Step Over: Shift + F8 Run until gets to: Ctrl + F8 [+] Hot Keys work on all emulator related windows (Flags, Stack, Log). [+] Closing "User Screen" causes the emulator to stop (can resume if "Run" is pressed again). [*] "Run until selected" menu in Debug renamed to "Run until gets to", and it works much better now (Ctrl + F8), the value of CS:IP where stop should occur can be set by clicking on lines of "Actual Source" window or disassembled list. [*] Right-click popup menu wasn't working on "Actual Source" window. [*] Ctrl+G (Go to Line) works in editor. [*] "Find..." and "Find Next" work from popup menu of the source editor. ******************************************** Version 1.23 Tuesday, July 02, 2002 [+] Complete 8086 instruction set is added to reference section of the help. [+] Editor updated! Color Syntax Highlighting, Custom Color and Font Settings, Line Numbering, Regular Expression Search and Replace, Indent / Outdent, User defined Keystroke Macros. [+] Operating system sample is updated: now it contains two files: "micro-os_loader.asm" "micro-os_kernel.asm" 'micro-os' is already loaded on virtual floppy drive, so you can select: 'Virtual Drive' -> 'Boot from Floppy' on emulator window. [+] Compiler reports errors before completing all passes. [*] Emulator screen had problem with hiding previous cursor when back-space is pressed. [+] Compiler works faster. [*] Timer function INT 1Ah/00 did not report correct number of ticks after midnight. [+] "Reload" button added to emulator. [+] "Reset Emulator and RAM" added to "File" menu of emulator. [+] INT 10h/00 function can be used to set video mode (size of the screen window). [+] Support for the following 80186 instructions added: PUSHA POPA PUSH ib (immediate signed byte) PUSH iw (immediate word) [+] Shift and Rotate instructions support any byte constant (not only 1), the compiler automatically generates the required number of single shift/rotate instructions. [*] CALL instruction supports both label or procedure name. [*] DIV instruction generated internal 'Overflow' in some rare conditions. [+] SCAN_NUM procedure of 'emu8086.inc' library is improved, it allows to input only digits. Macro to print entire string is added, this is how it works: PRINT "hello there!" [+] JMP and CALL instructions support immediate double-word as parameter: JMP FFFFh:0000h [+] "MySource" folder is used as default for saving ".asm" files. [+] "MyBuild" folder is used for compiled files (*.com, *.exe, *.bin, *.boot). (previously it was "EMU_TEMP"). [+] New Hot Key for "Single Step": F8 [+] New Hot Key for "Run until selected": Ctrl + F8 ******************************************** Version 1.22 Monday, June 17, 2002 [+] New sample added: "micro-os.asm" an example of micro operating system. [+] Tutorials are heavily updated. [+] emu8086.inc updated, procedure for string input is added. [*] Inner macro string parameters are transferred correctly. [+] Debug log uses correct number of spaces between encoded instruction and machine code. [*] Default position of text cursor is made more reasonable. [+] "Find" dialog is shown with currently selected text in the code editor. [*] String inside string declaration is processed correctly. [+] Refresh of the user screen is optimized. ******************************************** Version 1.21 Friday, June 14, 2002 [+] Keyboard support is improved, INT 16h / 00h / 01h return BIOS scan code also. [+] "Step delay" can be set to zero. [+] Sample "snake.asm" is updated :) [*] REPE/REPNE prefix was not decreasing CX by one on exit. Fixed. [*] String parameters are transferred correctly to macro. [*] Compiler cares about duplicate declarations, and reports about it. [+] Several tool tips added. [+] Input state can be interrupted by a tiny stop button. [+] Debug Log added to emulator, start it from "View" menu. [+] Edit menu added to code editor, it is possible to do indent, outdent, find... ******************************************** Version 1.20 Tuesday, June 11, 2002 [+] New samples added: snake.asm include.asm calc.asm sort.asm [+] It is possible to use shorter "b." and "w." instead of "BYTE PTR" and "WORD PTR". Disassembler always uses short form. [*] Command line parameters did not include the prefix space (like original DOS). It is fixed by adding prefix space. [*] There was a problem compiling this expression: "WORD PTR [20h]" when there are more then one space after PTR keyword. Fixed, also for "BYTE PTR". [*] Blue color "0001b" was not as original DOS color RGB(0,0,128). Fixed. [+] Cursor options are improved, it can be made invisible using: INT 10h / AH=01. [*] Compiler was unable to evaluate some immediate expressions. Fixed. [+] Expression Evaluator added (Math menu). [+] Arithmetic & Logical Unit updated. [+] Other internal optimizations. [+] "Compile & Emulate" button added (does the same as F5 key). [+] "Loading..." is shown while loading source files. [*] Selection of currently executing macro is much better now. [+] Emulator "step delay" can be set to maximum of 9000 milliseconds (9 seconds). [+] It is possible to set a breakpoint via "Debug" menu. ******************************************** Version 1.19 Thursday, June 06, 2002 [+] Documentation is updated! Better tutorials and reference added. [+] Command line parameters option is improved for both COM and EXE files. (see "param.asm" and "paramexe.asm" in samples). [+] Double-click on stack list also opens Number Convertor with selected value converted to all possible forms. [*] [Load] button renamed to [Open] in compiler window, this is more logical. [+] "BYTE PTR" and "WORD PTR" no longer required for immediate offset location: MOV [0020h], DL MOV BX, [0020h] ******************************************** Version 1.18 Monday, June 03, 2002 [+] User Screen is activated automatically after program is terminated (when it is opened in the background). [+] "Save current emulator state..." from "Debug" menu saves registers and memory in addition to disassembled code. [+] New function supported INT 10h / AH=13h to write string with attributes, (see reference.html and "int10_13.asm" in Samples). [+] Disassembling of 8 bit displacements is improved. Previously code: MOV AX, [DI-1] was disassembled as: MOV AX, [DI] + 0FFFFFFFFh now it is disassembled as: MOV AX, [DI] - 01h [*] Segment prefix is compiled correctly: MOV BYTE PTR ES:[020h], DL [*] "Clear Screen" button forces to update memory and disassembled lists when required. [*] Compiler reports an nice error in case of: db 1234h (previously anything over byte size was converted to zero without a warning). [+] Emulator asks for a missing ".binf" file, when it cannot find it in the same folder with a ".bin" file. [*] Number Convertor gets correct word value after double clicking memory list. (previously instead of FB09h it received FB9h). [*] Error message was shown mistakenly on creating new floppy drive and writing boot record. Fixed. ******************************************** Version 1.17 Sunday, June 02, 2002 [+] Timer function added (INT 15h / 86h), (see reference.html and "timer.asm" is Samples). [+] Enabled compiling of actual offset number instead of variables: MOV BYTE PTR [82h], 'A' (assumed that segment is in DS register - DS:[0082h]). [+] It is possible to set cursor size: INT 10h / 01h (see reference.html). [+] Keyboard buffer added, currently it can hold up to 8 key-codes. Function INT 16h / 00h can be used to check if there is something in a buffer (see "keybrd.asm" in Samples). [*] Major bug with showing memory at some address (B800:0000) fixed. [*] INT 21h / 0Ah uses the current color for each character. [+] Decoding unknown bytes as "DB ??" instead of "???". [*] Compiler did not report an error for MOV DI, offset s1 when "s1" is not defined. Fixed. [*] Memory list was updated with physical address instead of offset. Fixed. [*] Some built in interrupts were unable to set Carry Flag (because flag register is pushed before interrupt and popped on IRET). Fixed. [*] Constant evaluation included comment in result. Fixed. ******************************************** Version 1.16 Friday, May 31, 2002 [+] More instructions are now supported by emulator: AAA AAS AAD AAM DAA DAS (see "bcd_add.asm" in Samples). [*] Disassembler shows relative jumps with correct offset (previously physical address was shown). [+] "Save current emulator state" from "Debug" menu uses logical addresses instead of physical. [+] Selecting memory value automatically selects the disassembled line that corresponds to that byte. [*] Major bug fixed! BIOS Teletype function (INT 10h/0Eh) was not making scroll correctly! There also was unnecessary moving of current cursor position to the bottom of the screen. ******************************************** Version 1.15 Wednesday, May 29, 2002 [+] Support for 8 video pages added, see "pages.asm" in samples. [+] Memory list shows only the offset of physical address, segment is shown in the first text box above it. [+] Separate "Help" button added. ******************************************** Version 1.14 Sunday, May 26, 2002 [+] Text color support added. [*] Text-boxes for register values are made wider (some systems displayed only part of the value on selection). [+] It is possible to disassemble up to 1K of memory, and to save disassembled code into a file (by clicking "Save current emulator state" from "Debug" menu). ******************************************** Version 1.13 Saturday, May 25, 2002 [+] New better font options added. [+] "Terminal" (OEM/DOS) font is used as default for user screen and memory list. [*] Number Convertor converts double characters correctly, assuming that missing character has zero value. [+] Memory word at 0040h:004Ah has number of columns on screen. Memory byte at 0040h:0084h has number of rows on screen minus one. This value is modified when screen window is resized. [+] More interrupts are supported: INT 10h / AH=06h - scroll up window. INT 10h / AH=07h - scroll down window. (see "scroll.asm" in Samples). ******************************************** Version 1.12 Thursday, May 23, 2002 [+] Output file extensions are made more reasonable (".BOOT" for a boot sector, ".BIN" for files that are loaded at specified location by ".BINF" files). [+] BIN file can be loaded at any location using ".bINF" file, startup values for all registers are also set by this file. See "bintest.asm" in "Samples" for more information. [*] Actual source line is shown correctly for boot sector files. [+] "Create new floppy drive" menu is added to "Virtual Drive" menu. You can add up to 4 floppy drives: FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3 [+] INT 11h returns the correct number of floppy drives (total-1). ******************************************** Version 1.11 Wednesday, May 22, 2002 [+] New file type supported by emulator: ".PRE". (replaced with ".BIN" in version 1.12) [+] You can write a boot sector of a virtual floppy (FLOPPY_0) via menu in emulator. First you should make a ".boot" file and load it in emulator (see "micro-os.asm" in "Samples" for more info). Then, if you are curious, you may write the virtual floppy to real floppy and boot your computer from it, I recommend using "RawWrite for Windows" from: http://uranus.it.swin.edu.au/~jn/linux (note that "micro-os.asm" isn't MS-DOS compatible boot sector, so it's better to use and empty floppy, it should be IBM/MS-DOS formatted). [*] Major bugs with accessing far memory is fixed (I hope, since I need to do more tests). [+] Mouse cursor is updated for URL and e-mail on about form (eye & candy). [+] Regular menu is added to emulator form, previously these options were available from right-click on "Load" button, and memory list. ******************************************** Version 1.10 Sunday, May 19, 2002 [*] Major bugs are fixed for instructions: CMPSB, CMPSW, SCASB, SCASW (zero flag was checked before operation instead of after when prefix is used). [*] Minor bug fixed: cursor is not advanced after INT 10h / AH=09h and INT 10h / AH=0Ah even if CX isn't 1. [*] Effective address 8 bit displacement was always treated as positive. [+] Virtual floppy drive is added: FLOPPY_0 (it is blank, but I was able to make an image from DOS 6.22 bootable floppy currently it boots until "Starting MS-DOS..." message - and it takes several minutes :) - much to investigate!). [+] Interrupt 1Eh points to Vector of Diskette Controller Parameters. [+] More interrupts are supported: INT 12h - get memory size (returns: AX = kilobytes of contiguous memory starting at absolute address 00000h, this call returns the contents of the word at 0040h:0013h). INT 13h / AH = 00h - reset disk system. INT 13h / AH = 02h - read disk sectors into memory. INT 16h / AH = 00h - get keystroke from keyboard (no echo). [+] It's possible to set selected memory value from Number Convertor by right clicking the memory list, (first left click to select the address). [+] Stack memory can be viewed in a separate window. [+] Segmented values can be used when getting memory list and disassembled code (example: 0B56:0100). [*] Minor screen bug is fixed, (last cursor location was lost when screen form was closed). ******************************************** Version 1.09 Thursday, May 16, 2002 [*] Minor bug fixed: internal CPU flag for REP/REPE prefix was not reset after some string operations. [+] More interrupts are supported: INT 10h / AH=02h - set cursor position. INT 10h / AH=03h - get cursor position. INT 10h / AH=08h - read character and attribute at cursor position. INT 10h / AH=09h - write character and attribute at cursor position. INT 10h / AH=0Ah - write character only at cursor position. INT 10h / AH=0Eh - teletype output. (note: currently emulator has no support for character attributes or cursor size, default white on black color mode is used for all operations) [+] Screen window is not activated after any output operation, making it easier to operate with emulator (buttons do not stuck). [+] A call to BIOS sub-system is disassembled by "BIOS DI" (it doesn't use DI register in any way, it's just because of the way the encoding is done: we are using "FF /7" for such encoding, "FFFFCD10" is used to make emulator to emulate interrupt number 10) [+] INT 4 and INT 0 are defined and produce the expected message, you can re-define those for you own needs. [+] Sample code that can be compiled and emulated is moved to "Samples" folder. ******************************************** Version 1.08 Monday, May 13, 2002 [*] Major bug fixed: effective address calculation "[DI] + d16" was calculated with SI segment instead of DI. [+] More instructions are now supported by emulator: LEA (for effective address) XLAT INT 3 (trap to debugger) - it is not used by emulator, so you may use for any purpose, you just should set the address of your sub-program in the interrupt vector (at 3*4 = 0Ch). INTO (currently also not defined). ******************************************** Version 1.07 Sunday, May 12, 2002 [+] Interrupt vector is added to emulator, now I'm really approaching the real PC emulation. BIOS ROM is loaded at location F400:0000. Both files can be modified by the user, so you may alter the original version. [+] More instructions are now supported by emulator: RETF CALL (full support) IRET LOOPE / LOOPZ LOOPNE / LOOPNZ STOSB STOSW SCASB SCASW CMPSB CMPSW LES LDS [+] ".BIN" files are loaded at 07C0h:0000 (just like a boot sector). [+] Disassembler is improved: (automatic re-disassemble after JMP, CALL, RET instructions). [+] Horizontal scroll bar added to disassembled list. [*] Memory list update fixed. ******************************************** Version 1.06 Saturday, May 04, 2002 [+] More instructions are now supported by emulator: SHL SAL ROL RCL SHR SAR ROR RCR SAHF LAHF ADC SBB [+] You can double click a memory value to open Number Convertor. [*] Bug with current byte selection in list when starting address not zero, is fixed. [+] Disassembler is improved (commands are shown before they are executed). ******************************************** Version 1.05 Monday, April 22, 2002 [+] Support for command line parameters (currently only for COM files). Right click "Load" button in emulator to set them. This line is loaded at the address of 80h at PSP. [*] Temporary files are saved into EMU_TEMP folder. This way we avoid accidental overwriting of executable files. Thanks to Starman. [+] Every time you compile your file, a backup file with ".~asm" extension is saved, along with ".debug" file that contains information required for emulator to select lines in your source code while executing. When not specified "MyBuild" directory is used. [+] Number Convertor is added, with its help you can convert binary numbers to hexadecimal, octal to decimal, or see an ASCII characters and vice versa... Double click a register value in emulator to load its value to calculator, or click "Calculator" in the main menu of source editor. [+] More instructions are now supported by emulator: JCXZ CMC STC CLC CLD STD CLI STI CBW CWD INC (full support) DEC (full support) XCHG JMP (full support) ******************************************** Version 1.04 Friday, April 19, 2002 [+] The command that is going to be executed next is selected in actual source window (previously command was shown only after it is executed). [+] Corresponding line is selected when clicking on error message. [+] Support for ".BIN" files added, the only difference from ".COM" files that they are not loaded at 100H prefix, and thus do not require "ORG 100H" line in the beginning of the file. [*] "MOV AL, -5" caused a critical compilation error. [+] When showing registers prefix zeros are added. [+] More instructions are now supported by emulator: DIV IDIV IMUL MUL NEG NOT TEST (now full support) [*] Overflow is reported correctly on compile. ******************************************** Version 1.03 Sunday, March 31, 2002 [+] More instructions are now supported by emulator: PUSH CS PUSH DS PUSH ES PUSH SS POP DS POP ES POP SS PUSHF POPF [+] Hourglass mouse pointer is shown while loading files in emulator. [+] Emulator shows decimal and char representation of memory (previously it was hexadecimal only). [*] Bug with INT 21h, AH=0Ah (line input) is fixed, last new line char was added one byte after required position. [+] INT 21h/AH=01h is supported, write character to standard output, with echo, result is stored in AL. [+] INT 21h/AH=02h is supported, read character from standard input, DL = character to write, after execution AL = DL. [*] TAB key is works again when typed in editor. ******************************************** Version 1.02 Saturday, March 30, 2002 [*] COM files are loaded at 100h prefix! (as they really should). [*] A few other bugs fixed. [+] INT 20 added (exit to OS), the same as INT 21, AH=4Ch. [+] INT 21h, AH=0Ah is now supported, (string input, fist byte is buffer size, second byte is number of chars actually read). [+] Disassembler uses HEX for numbers. [*] INCLUDE directive looks for files in the same folder where the source is (in case full path is not specified), and there is a regular error message when file not found. [+] Emulator window is now re-sizeable. ******************************************** Version 1.01 Tuesday, March 26, 2002 [+] Support for COM files added. ******************************************** Version 1.00 Wednesday, February 13, 2002 [+] The very first release! ******************************************** ----------------------- Emu8086, Inc. 2002-2003 http://www.emu8086.com -----------------------