home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 November / CDVD1105.ISO / Software / Shareware / programare / emu8086 / version.txt < prev   
Encoding:
Text File  |  2005-09-30  |  13.0 KB  |  350 lines

  1.  
  2. emu8086 
  3.  
  4. The Microprocessor Emulator of 8086 Microprocessor (Intel and AMD compatible)
  5. And Integrated Assembler
  6.  
  7.  
  8.  
  9. Version 4.00 - Beta 14
  10.  
  11.  
  12. What's new:
  13. ===========
  14.  
  15. The step-back button allows to execute instructions backwards.
  16.  
  17. Font size of logical flag analyser can be modified in emu8086.ini
  18.  
  19. The keyboard buffer is now visible and can be flushed with a click.
  20.  
  21. It's possible to use _ to separate nibbles of long binary values,
  22. for example:      mov ax, 1000_0011_0001_1111b
  23.  
  24. All devices are external, source codes of the devices can be found
  25. in this folder c:\emu8086\devices\developer\
  26.  
  27. All ports from 0 to 65535 are free for custom i/o devices.
  28.  
  29. All devices must be recompiled with new location of IO file.
  30. new location is: c:\emu8086.io 
  31.  
  32. Default code templates can be customised in c:\emu8086\inc 
  33.  
  34. External button loads windows debug.exe after the compilation.
  35.  
  36. Default fonts for memory, emulator screen and disassembly
  37. are changed to Terminal, if your system does not have an appropriate
  38. Terminal font you can set it back to Fixedsys from options.
  39.  
  40. Far call is supported, see examples: far_call.asm and far_call_advanced.asm
  41.  
  42. Default output type for boot records is now .bin -- .boot output type
  43. is obsolete. .binf file has the information required for the emulator
  44. to know the loading prefix, for boot record it is 0000:7c00 (CS=0, IP=7c00).
  45. if there is no .binf file associated with .bin file, then default.binf
  46. is used by the emulator to determine where to load the binary file.
  47.  
  48. Recent files menu is not reset with other options.
  49.  
  50. More ASCII extensions can be added to emu8086.ini, files that are
  51. considered ASCII are loaded into the source editor rather than the emulator.
  52.  
  53. c:\emu8086\FLOPPY_0 - virtual floppy drive is empty by default,
  54. previously it was pre-loaded with micro operating system example.
  55.  
  56. Command prompt can be launched in output folder right after the compilation,
  57. or from emulator's view menu.
  58.  
  59. SEG directive returns cs when there are no defined segments.
  60. assembler automatically replaces code like this: mov dx, seg var1
  61. with this: mov dx, cs
  62.  
  63. There is no practical use for this when compiling tiny and simple .com file,
  64. because it usually has only one segment and can relocate itself without
  65. the need of relocation tables.
  66.  
  67. New interrupt function available INT 21h/43h - get/set file attributes.
  68. example is in c:\emu8086\examples\attrib.asm 
  69.  
  70. mov dx, offset file ; zero terminated file name.
  71. mov ah, 43h
  72.  
  73. mov al, 0  ; get attributes.
  74. mov al, 1  ; set attributes.
  75.  
  76. ; cx - attributes:
  77.  
  78.  mov cx, 0       ;  normal - no attributes.
  79.  mov cx, 1       ;  read-only.
  80.  mov cx, 2       ;  hidden.
  81.  mov cx, 4       ;  system
  82.  mov cx, 7       ;  hidden, system & read-only.
  83.  
  84. Interrupt documentation is only partly updated, 
  85. this function is not documented yet, but there is
  86. an example in c:\emu8086\examples\attrib.asm 
  87. note: it may look like the file suddenly disappears unless you set 
  88. the settings of file manager to show system and hidden files.
  89.  
  90. Programs can be started in real environment - external button and menu.
  91.  
  92. OUT instruction can be undone with step-back as well.
  93.  
  94. Moving cars added to traffic lights device, example: traffic_lights.asm
  95.  
  96. Automatic workaround for short relative jumps updated, to overcome
  97. jump limit of +/-127 bytes, short conditional jumps are replaced
  98. with the opposite instruction and one normal jump, then cpu just either 
  99. skips over normal jump, if original condition is false, or doesn't if
  100. original condition is true. for more information refer to tutorial 7.
  101.  
  102. WRITEBIN.ASM unitliy is updated, this little program can be used to 
  103. write bin file to boot record of a floppy drive and make it bootable.
  104. now it's possible to write a complete micro-operating system on a floppy
  105. drive. to use this utility you need to compile it first. it works from
  106. command line. to write a boot record type this:
  107.         writebin loader.bin
  108. to write kernel type this:
  109.         writebin kernel.bin /k
  110. this utility should be used with micro-operating system example:
  111.    micro-os_loader.asm       and       micro-os_kernel.asm
  112. however, it is not limited to these files and can be used with other
  113. files, for example it can be used to test timer.asm as well.
  114.  
  115. Double word definition is supported:
  116.  
  117. mydoubles dd 12345678h
  118.  
  119. ; it is equal to:
  120.  
  121. mywords   dw 5678h
  122.           dw 1234h
  123.  
  124. ;  or
  125.  
  126. mybytes   db  78h
  127.           db  56h
  128.           db  34h
  129.           db  12h
  130.  
  131. ; exactly 32 bits
  132. binn dd 00010010001101000101011001111000b
  133. ; load double word to dx:ax
  134. mov ax, binn
  135. mov dx, binn+2
  136.  
  137. Default vdrive path can be changed in emu8086.ini
  138.  
  139. Long jump is supported, for example:
  140.  
  141.     jmp far addr
  142.  
  143.     addr dd 1235:5124h
  144.  
  145. Most of the file operations can be undone with step back.
  146. all file write operations are undone when file open function is undone.
  147. byte-by-byte undo is not allowed.
  148.  
  149. Major mouse driver interrupts are implemented.
  150. see mouse.asm and mouse2.asm in c:\emu8086\examples.
  151.  
  152. New example of a simplest virtual device in pure assembly language is created.
  153. see simplest.asm in examples.
  154.  
  155. New directive added:
  156. #start=mydevice.exe#
  157. the emulator starts the specified executable from c:\emu8086\devices\ folder
  158. when this directive is found in the original source code. 
  159. previous method of searching filenames in comments is obsolete.
  160.  
  161. External debug.exe can be easily launched by F12 hotkey.
  162. it can be used along with the log button to check validity of the emulator if results are disputable.
  163. hotkey for the emulator's log button is F11.
  164.  
  165. Hardware interrupts are enabled.
  166. when interrupt flag is 1, the emulator continually checks first 256 bytes of this file c:\emu8086.hw
  167. if any of the bytes is none-zero the microprocessor transfers control
  168. to an interrupt handler that matches the trigerring byte offset in emu8086.hw file (0 to 255)
  169. according to the interrupt vector table (memory 0000-0400h) and resets the byte in emu8086.hw to 00.
  170.  
  171. Tab codes (9) are expanded as specified by ascii standard.
  172. The bell code (7) produces a short beep. for example:
  173. mov al, 7
  174. mov ah, 0eh
  175. int 10h
  176.  
  177. The startup window can be turned off/on from emu8086.ini
  178.  
  179. "#mem=..." directive can be used to write values to memory before program starts
  180. (for .bin files that run in the emulator only).
  181. #MEM=nnnnn,[bytestring]-nnnn:nnnn,[bytestring]#
  182. for example:
  183. #MEM=0100:FFFE,00FF-0100:FF00,F4#
  184. all values must be in hex. address can be physical (nnnnn) or logical (nnnn:nnnn).
  185.  "-" separates the entries. spaces inside byte strings are ignored.
  186. default.binf is updated to automatically stop the program when RET instruction is executed.
  187.  SP register is set to FFFE. MEM directive sets value FF00 to top of the stack 
  188. (it is used by first RET to set IP register to that offset). 
  189. F4 is an opcode for HLT instruction. F4 is written to offset FF00. 
  190.  
  191. Java executable files (.jar and .class) are automatically added to virtual devices menu of the emulator.
  192.  
  193. World wide localization support is greatly improved:
  194. http://www.emu8086.com/dr/loc/
  195.  
  196. Automated translation tool is to be developed in the near future to help the translators.
  197.  
  198. The log button is renamed to debug. binary/ascii dump is enabled, for example:
  199. d ds:[bx]
  200. d ds:0100
  201. d 100
  202.  
  203. More improvements to extended debug (debug commands and output may not be compatible
  204. with the original Microsoft debug because of the enhanced features).
  205. for more information visit:
  206. http://www.emu8086.com/dr/debug.html
  207.  
  208. Stop on condition feature is added to the emulator. It allows to stop the execution
  209. when a value of some register or byte in RAM changes or becomes equal to a specified expression.
  210. (accessible from [debug] -> [stop on condition] menu).
  211.  
  212. The assembly code can be automatically exported to HTML format for publishing or printing,
  213. preserving the coloured syntax and highlight. Click file->export to html...
  214.  
  215. The listing file is generated automatically (*.list)
  216. listing allows to see what assembler really does, when and why.
  217. this new feature can be turned off in emu8086.ini by setting listing=false
  218.  
  219. Listing line numbers start from the same line as in the source editor.
  220.  
  221. Relative jumps are updated for compatibility with MASM, from now on:
  222.    jmp $3   ; jumps 3 bytes from the location counter.
  223. to jump over 3 bytes after jmp instruction use  jmp $3+2   or jmp $5
  224. because the size of the machine code for jmp instruction is 2 bytes.
  225.  
  226. Unless the executable file is manually saved these file extensions are used now:
  227.    .com_    ,    .exe_     ,     .bin_
  228. the emulator loads these files automatically when they are double clicked.
  229.  
  230. By default STRICT_SYNTAX=false is set in emu8086.ini
  231. if you want the assembler to generate errors set STRICT_SYNTAX=true , for example:
  232.     mov ax, v1
  233.     v1 db 5
  234.     v2 db 7
  235.  
  236. To disable the screen window pop-up when program terminates set:
  237. ACTIVATE_SCREEN_WHEN_STOPPED=false
  238. (emu8086.ini) 
  239.  
  240. Licence agreement is updated once again, refer to LICENCE.txt for more information.
  241.  
  242. Option to trim lines of the original source code can be turned off by setting:
  243. TRIM_ORIGINAL_SOURCE=false in emu8086.ini
  244.  
  245. The emulator shows physical memory addresses in the memory list.
  246.  
  247. New tabled memory viewer/editor, click "aux" button.
  248.  
  249.  
  250. It is possible to enter any effective address for the memory list,
  251. and even a variable name to specify an offset, for example: 
  252.  
  253. CS:[BX+2]  
  254. DS:var2
  255. DS:[SI]
  256.  
  257. This works both for integrated and tabbed memory viewer and for disassembly list.
  258.  
  259. New format for the symbol table.
  260. The symbol table and listing are appended to the aux button.
  261.  
  262. New debug command: c
  263. Compare bytes. For example to compare 16 bytes at offsets 100 and 200 type:
  264. c 100 L 10 200
  265. L - denotes the length. Equal bytes are not printed out.
  266. Parameters can be variables or registers, for example:
  267. C SI L 2 DI
  268. If L parameter is not used the command compares 8 bytes by default.
  269.  
  270. Font sizes are set to 12 if default Terminal font has width less than 8 pixels
  271. To prevent messing the letter D with 0 (localized versions of Windows XP only).
  272. The fix can be turned off by setting FIX_SMALL_FONTS=true in emu8086.ini
  273.  
  274. More interrupts enabled: 
  275. INT 21h/AH=57h,AL=0/1 
  276. INT 21h/AH=4Eh/AH=4Fh
  277. INT 21H/AH=48h
  278.  
  279. Stop on condition is added to "aux" button of the emulator.
  280. In addition to general registers it's possible to stop when any of the flags is changed.
  281.  
  282. The integrity check is added to micro-os kernel to prevent running arbitrary code when it is loaded
  283. to sector 1 instead of sector 2. When base offset is not 0 the kernel prints out "F" and reboots.
  284. To prevent this failure the kernel must be written to sector 2 and boot loader to sector 1.
  285.  
  286. Improved MASM compatibility.
  287. This code sets the difference of offsets of a and b to ax:
  288.          a:
  289.          mov ax, b-a
  290.          ret
  291.          b db 5         
  292. ; Previously it was required to use the OFFSET directive, like this:
  293.          mov ax, offset b - offset a    
  294.  
  295. Fix for multi-line comments, for example:
  296. comment *
  297.           This is my 
  298.               multi-line 
  299.                    comment!
  300. *
  301. Note: the syntax highlight remains unchanged.
  302. It is highly recommended to select blocks of texts and use Ctrl+Q and Ctrl+W key combinations instead.
  303. Ctrl+Q comments a block of text, and Ctrl+W uncomments block of text.
  304.  
  305. To pass VGA checks it's now possible to use VGA state emulation. Just add this line on top:
  306.   #START=VGA_STATE.exe#
  307. Source code for that simplest device is available in c:\emu8086\DEVICES\DEVELOPER\sources
  308. Example: worm2.asm from Antiquenties: http://groups.yahoo.com/group/emu8086/files/Antiquities
  309.  
  310. Screen activation can be turned off completely by setting this property in emu8086.ini:
  311. ACTIVATE_SCREEN=false
  312. If set "false" the emulator screen is not activated and the "screen" button has to be pushed to see the output.
  313.  
  314. Esc hotkey is cancelled to prevent conflicts with programs that wait for that key,
  315. and from now on by default: SCREEN_HOTKEYS=true  in emu8086.ini
  316. if set "SCREEN_HOTKEYS=false" the emulator screen does not accept hot-keys such as F8, F6, etc... 
  317. and these keys are written to the keyboard buffer.
  318.  
  319. The .RADIX directive is supported, for example:
  320. .radix 2
  321. mov ax, 101        ; AX = 5
  322. .radix 16
  323. mov ax, 101        ; AX = 101h
  324. .radix 10
  325. mov ax, 20         ; AX = 20
  326. .radix 8
  327. mov ax, 20         ; AX = 16
  328. Note: suffixes have priority over the radix directive: "h", "o", "b", "d".
  329. Therefore, hexadecimal numbers that has D or B as the last digit must ALWAYS have an h suffix or 0x prefix.
  330. This makes the radix directive not practically useful, because it's simpler to add h suffixes to all hexadecimal numbers. 
  331. For example:
  332. .RADIX 16
  333. DW 123D         ; = 123d (decimal, not 123Dh) 
  334. DB 101B         ; = 00000101b (binary, not 101Bh) 
  335. DW 8F0B         ; WRONG (b suffix)
  336. DW 8F0Bh        ; correct 
  337. DW 0x8F0B       ; correct 
  338. MOV AX, 0ABCD   ; WRONG  (d suffix)
  339. MOV AX, 0ABCDh  ; correct
  340. MOV AX, 0ABCE   ; correct
  341.  
  342. The interrupt list is updated.
  343.  
  344. ---------------
  345. Copyright emu8086.com (c) 2005 ALL RIGHTS RESERVED
  346. Intel is a registered trademark of Intel Corporation.
  347. AMD is a registered trademark of AMD Corporation.
  348. Microsoft is a registered trademark of Microsoft Corporation.
  349.  
  350.