
emu8086 - assembler and emulator of Intel 8086 microprocessor (AMD compatible)

version 3.27p


what's new:
===========

step-back button allows to execute instructions backwards.

font size of logical flag analyser can be modified in emu8086.ini

keyboard buffer is now visible and can be flushed with a click.

it is possible to use _ to separate nibbles of long binary values,
for example:      mov ax, 1000_0011_0001_1111b

virtual device from "devices" folder starts automatically when
its file name is found anywhere in the source code or in comments.

all devices are external, source codes of the devices can be found
in this folder c:\emu8086\devices\developer\

all ports from 0 to 65535 are free for custom i/o devices.

all devices must be recompiled with new location of IO file.
new location is: c:\emu8086.io 
there is no need to use GetWindowsTemp() API function any more.

default code templates can be customised in c:\emu8086\inc 

external button loads windows debug.exe after the compilation

default fonts for memory, emulator screen and disassembly
are changed to Terminal, if your system does not have an appropriate
Terminal font you can set it back to Fixedsys from options.

far call is supported, see examples: far_call.asm and far_call_advanced.asm

default output type for boot records is now .bin -- .boot output type
is obsolete. .binf file has the information required for the emulator
to know the loading prefix, for boot record it is 0000:7c00 (CS=0, IP=7c00).
if there is no .binf file associated with .bin file, then default.binf
is used by the emulator to determine where to load the binary file.

recent files menu is not reset with other options.

more ASCII extensions can be added to emu8086.ini, files that are
considered ASCII are loaded into the source editor rather than the emulator.

c:\emu8086\FLOPPY_0 - virtual floppy drive is empty by default,
previously it was pre-loaded with micro operating system example.

command prompt can be launched in output folder right after the compilation,
or from emulator's view menu.

seg directive returns zero when there are no defined
segments, however there is no practical use for this when compiling tiny and
simple .com file, because it usually has only one segment and can relocate
itself without the need of relocation tables.

new interrupt function available INT 21h/43h - get/set file attributes.
example is in c:\emu8086\examples\attrib.asm 

ds:
mov dx, offset file ; zero terminated file name.
mov ah, 43h

mov al, 0  ; get attributes.
mov al, 1  ; set attributes.

; cx - attributes:

 mov cx, 0       ;  normal - no attributes.
 mov cx, 1       ;  read-only.
 mov cx, 2       ;  hidden.
 mov cx, 4       ;  system
 mov cx, 7       ;  hidden, system & read-only.

interrupt documentation is only partly updated, 
this function is not documented yet, but there is
an example in c:\emu8086\examples\attrib.asm 
note: it may look like the file suddenly disappears unless you set 
the settings of file manager to show system and hidden files.

this code compiles successfully to tiny com file:

.model tiny
.data
message   db "Hello world, I'm learning assembly!", "$"
.code
main   proc
   mov   ax,seg message
   mov   ds,ax

   mov   ah,09
   lea   dx,message
   int   21h

   mov   ax,4c00h
   int   21h
main   endp
end main

programs can be started in real environment - external button.

out instruction can be undone with step-back.

moving cars added to traffic lights device, example: traffic_lights.asm

automatic workaround for short relative jumps updated, to overcome
jump limit of +/-127 bytes, short conditional jumps are replaced
with the opposite instruction and one normal jump, then cpu just either 
skips over normal jump, if original condition is false, or doesn't if
original condition is true. for more information refer to tutorial 7.

writebin.asm unitliy is updated, this little program can be used to 
write bin file to boot record of floppy drive and make it bootable.
now it's possible to write complete micro-operating system on a floppy
drive. to use this utility you need to compile it first. it works from
command line. to write a boot record type this:
		writebin loader.bin
to write kernel type this:
		writebin kernel.bin /k
this utility should be used with micro-operating system example:
		micro-os_loader.asm
		micro-os_kernel.asm
it is not limited to these files and can be used with other
files, for example it can be used to test timer.asm as well.

double word definition is supported:

mydoubles dd 12345678h

; it is equal to:

mywords   dw 5678h
          dw 1234h

;  or

mybytes   db  78h
          db  56h
          db  34h
          db  12h

; exactly 32 bits
binn dd 10101011110011011110111110101010b
; load double word to dx:ax
mov ax, binn
mov dx, binn+2

default vdrive path can be changed in emu8086.ini


