home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn Exec 3
/
CD_Magazyn_EXEC_nr_3.iso
/
Recent
/
misc
/
emu
/
evax11.readme
< prev
next >
Wrap
Text File
|
2000-07-31
|
19KB
|
347 lines
Short: VAX Emulator, a "Virtual VAX" for Mac OS Computers
Author: Tom Cole
Uploader: louise@amiga.hu (LouiSe/AMIGAonly)
Version: 1.1
Type: misc/emu
VAX emulator for AmigaOS 68k - ported by LouiSe
(sources included)
http://louise.amiga.hu
http://amigaonly.ahol.com/louise
[This change history was started 8/23/99 since contributions from the
"outside world" are beginning to appear.]
08/23/99 Integrated fixes to clean up compiler warnings and
added MATCHC instruction from Carl Fongheiser
(cmf@iabears.org).
08/25/99 Integrated new instructions REMQTI and REMQHI from CMF
08/26/99 Separated disassembly code from operand decode for
performance. Added DECC$STRCAT shim and sample program
and executable SIEVE.C and SIEVE.EXE for performance
testing.
08/27/99 Added SKPC from CMF. Added License.txt to the source
area describing the open source license nature of the
software. Modified header comments accordingly.
08/28/99 Published (in-progress) draft of user guide as HTML
to web site.
http://www.forest-edge.net/evaxdoc.html
09/03/99 Added profiling of instruction modes. Need this to
figure out how to optimize operand decoding more.
Use SHOW INSTRUCTION MODES to see the profile data.
Also, made sure VMS build tools DESCRIP.MMS and
EVAX.OPT are included in tar files for distribution.
09/04/99 Tinkering around with supporting LIB$GET_INPUT as a
generalized input routine. This moves us one step
closer to being able to run useful programs compiled
on a VAX. Implemented EXE$INPUT shim for handling the
low-level console input, and LIB$GET_INPUT in the
microkernel to support rest of the functionality. This
will have to do for now until a byte-for-byte console
input function works. I need to come up with a suite
of character input test-and-read routines for all the
various hosts next!
09/07/99 Started on keyboard console input proper. Created a
MacOS version to start with, and stubbed it out for other
ports. This allows a keystroke hit while the emulator
is executing VAX instructions to capture the data in RXDB
and optionally generate an interrupt. Started changing
kernel.asm to allow for a generalized input buffer handler.
09/13/99 CMF contributed ASHQ and found the ASHL bug which is also
fixed here. This version also contains a very first stab
at segmenting out memory addresses in the RAM versus ROM
or memory-mapped I/O. On VAXstations (at least the two
I have gotten hold of) there is CPU data stored at E0040004
that the booter needs. So you can now read this address
outside the regular memory map. This needs LOTS OF THOUGHT.
This release contains a few more misc. performance tweaks,
to wring out a teeny bit more performance from instruction
decoding. This will be doubly important if the I/O-memory-
and ROM-addressing becomes more expensive.
09/20/99 Small tweaks to protect against crashes; there are a number
of commands and pseudo-opcodes that depend on the VMINIT
and microkernel environment. The changes detect when it
is valid or not, and prevent bogus command execution. Also,
the attendant eVAX.doc documentation file (MS Word 97) has
been updated to Draft 1.2 and contains most of the console
and microassembler documentation at this point.
09/21/99 Added "sequential translation cache" to VM. 80% or more
of all VM translations are done on the very same page just
translated (instruction decoding, block moves, etc.). So
keep the last page as a single-slot level 1 cache before
the translation buffer is read. Also updated the format
of the eVAX.doc file to make it a little more readable.
09/22/99 Added support for a ROM at physical address 20040000. The
virtual memory handler, storage handler, and anciliary
functions that read memory were modified to allow reading
from a ROM that is 256k long. This ROM exists on various
small VAXstation systems to support native console functions.
Also added the ROM command which reads a file "rom.txt" from
the default directory. This file is assumed to be a dump
of the console ROM, with lines in the format
P aaaaaaaa xxxxxxxx
Where "P" is a literal constant (means physical memory),
"aaaaaaaa" is the address in the ROM, and "xxxxxxxx" is
a hexadecimal longword at that location. If you use the
EXAM command in the console of a VAX this is the format of
the output you get. Use the (currently undocumented) ROM
command to load this file (often over a megabyte of text)
into the special memory reserved for the ROM. Later this
will be made more elegant, I'm sure.
09/23/99 More support for ROM images. You can now SAVE/ROM "file"
to save the currently loaded ROM image as a binary file.
It uses the same kind of mechanism as the SAVE binary
operation. The LOAD/ROM command can now sense a binary image
(magic first 8 bytes) and load accordingly. Binary
ROM images are more-or-less the size of the ROM, where
text files are 4-5x larger. Use binary when you can!
Also changed the default file name to "default.rom".
When you load a ROM file you can specify the base
and size with /BASE=hex-address and /SIZE=size-in-K
qualifiers to the ROM command. SHOW ROM now displays
info about the currently-loaded ROM. You can INIT/ROM
to create empty ROM space if you are building your own,
and use the /BASE and /SIZE qualifiers.
Also updated the EXAM command so it accepts /AD and /AZ
as qualifiers to mirror the VMS debugger environment.
Also updated numerous little errors in the Word doc.
09/24/99 And even more wierd address stuff. The physical address
mapping is now abstracted enough that disjoint address
space areas and memory_mapped I/O are all handled reasonably
smoothly. There are at least four distinct memory areas in
the emulator now: main memory, ROM memory, NVRAM memory, and
special I/O memory locations.
There is a LOAD/NVRAM, SAVE/NVRAM, and INIT/NVRAM command
that will allow the non-volatile RAM to be managed. It
supports /BASE and /SIZE qualifiers on the INIT command,
and assumes that something will be assembled or run in
the console ROM to initialize it.
Created symbols CONSOLE$ROM_BASE, CONSOLE$ROM_END,
CONSOLE$ROM_SIZE, CONSOLE$NVRAM_BASE, CONSOLE$NVRAM_END,
and CONSOLE$NVRAM_SIZE to record the info on these
special areas.
Extended the privileged register set from 64 to 128 register,
and "enabled" the SAVIPL, SAVPC, and SAVPSL registers which
are used by the console.
09/27/99 First pass at being 64-bit friendly if not 64-bit clean. A
user is trying to build on Tru64, so here are some fixes to
correct memory access errors (can no longer assume native long
and VAX long are same sizes) and use __int32 types where math
overflow matters. Added new TRU64 architecture type.
09/28/99 Bug fix to MOVC5 from Sergey Tikhonov <tsv@excom.spb.su>. I
also fixed a bug in the image activator for loading OpenVMS
images into the emulator; multi-page sections were overwritten
on the same physical address. Bad.
10/03/99 Second try on 64-bit clean. It doesn't seem to make sense to
use 64-bit longs in general, so I've create explicit data types
of LONGWORD and QUADWORD for 32- and 64-bit integers. Globally
changed everywhere. Ports may be a little rough if arch.h isn't
quite right, let me know if I goofed up somewhere.
10/07/99 Numerous bug fixes in the assembler. Added support for a few
missing addressing modes ( @b^nn(Rn), for example) and a few
nuances found in assemblers such as @(Rn). Added pseudo-ops
to support GAS extensions like JEQL, etc. Added aliases to
handle overloaded opcodes, like BEQLU being same as BEQL.
10/09/99 Cleaned up a number of warnings generated by Visual Studio
on Windows.
10/12/99 Added more SHIM support, to try to support a handful of minimal
NetBSD-style system service interfaces. Updated the microkernel
with new shim support for open, close, read, and write.
Assembling a forth interpreter for VAX written for NetBSD, I'm
getting close to making it run. Seems like a good next test
for correctness of instructions.
Added STEP/OVER, STEP/INTO, STEP/RETURN to the console. Added
SET STEP to define default STEP mode. These slowed down the
execution model again (somewhat) so soon it will be time to
again review vax.c for cleanup and performance tweaks.
10/15/99 Fixed a number of errors in handling of floating point
conversions. This made the floating point parts of the
Forth interpreter work much better. There still appears
to be a precision problem; don't know yet if that's
inherent in the Forth code or in my F_FLOAT support.
Also fixed bug where disassembling an operand with
side effects (such as "(R3)+") actually changed the
register value. Bad. Found and fixed bug in BCS handler.
10/17/99 Fixed major bugs in FPU.C which prevented floating point
from working correctly on little-endian ports (Alpha, x86, etc).
10/29/99 Fixed minor bug in HELP command that caused crashes if
trailing spaces on keywords. Also added rounding support
in FPU.C such that F_FLOAT values appear to be correct
now when imprecise fractions result from calculations.
11/01/99 Fixes in the microkernel to support exception trapping.
11/03/99 Added printf() support to the LIBRTL shim library.
11/04/99 Split LIBRTL.C into several modules based on function. Added
a number of basic RTL functions for VMS. This makes it much
easier to write test programs in C that can print results,
etc. Use the SHOW SHIM command to list the implemented
runtime functions.
Also fixed bug in STEP/RETURN so it works correctly.
11/08/99 Performance fixes to execution model. STEP/RETURN and
STEP/OVER used a different mechanism than BREAK to handle
control flowing back to console. Changed to support a
temporary "one-shot" break type. This squeezes 2-3%
performance gain back out of execution handler by not
checking two places for break info.
Fixed bugs in CALL/STEP that caused bogus syntax error
message. Added LOAD/IMAGE which just loads a VMS image
without executing it.
Updated the documentation somewhat. The Word doc still
lags behind the code but it's getting better. Started
on "architectural overview" section but didn't get far
yet. This is a near-term goal, to describe the structure
of the emulator code itself better, to encourage more
participation.
11/09/99 Updates to microkernel support for VM. I need to be able
to have a "sparse" address map, rather than the old system
of mapping each sequential physical page to a virtual page.
This allows supporting the P1 vector area for VMS system
services in the microkernel.
This did force me to finally confirm my suspicion that the
memory read routines wouldn't work if a read spanned non-
contiguous pages. They now detect "split" memory reads
and do a slower but more correct byte-for-byte read in
this case.
When a TNV fault is hit and the microkernel is active,
a new page of physical memory is mapped to the faulting
page. This continues until there are no more physical
pages available. Note that there is no page writer,
so when all physical pages are used, then a TNV fault
is returned by the emulator.
Of course, if the microkernel is not active, then
the emulator TNV handler is not used.
Also fixed annoying bug where two RUN commands could
not be executed in a row (bad ICB chain reset). Also
if image open fails, try adding ".exe" to the name.
11/14/99 Parsing commands had become rather cumbersome in some
places in the console, so I decided to take a day and
integrate an old peice of code I had sitting around that
is similar to DCL on VMS. To get started, I've converted
the CLEAR and SHOW commands to use DCL syntax. For example,
"SHOW ALL SYMBOLS" is now "SHOW SYMBOL/ALL". See the new
file "evax.dcl" which contains the command grammar definitions.
Once all the console commands are converted, I'll integrate
the grammar into command initialization.
11/16/99 Fixed bugs on DCLRTL regarding ambiguous keyword detection.
As of 11/16/99, the only version that includes this week's
DCL-related changes is the Unix .tar.gz file. I'm at
COMDEX this week and don't have a connection good enough
to push the 1MB Windows and Mac files. These will be updated
around 11/22/99.
11/29/99 Removed about 100 warnings generated by Visual Studio. Most
were nuisance warnings but a few were bugs. Also fixed an
annoying bug where EXAM/AZ displayed wrong number of bytes.
12/06/99 Fixed bug in SHOW command. Updated Word document and online
help.
12/09/99 Fixed bug in LOCC handling of Z bit. Added SHOW IMAGES
command which shows active images. Added SYS$EXPREG and
SYS$DCLEXH services.
Major bug fixes in the VMS image loader. I can now run
a C program, activating the VAX runtime libraries
as needed. At the "bottom" of the call chain, system
services are called to do "real" work. Staring to fill
in a minimal set of services to allow RUN execution of
more "real" programs. For example, supporting SYS$EXPREG
for P0 space allows the LIB$ family of VM routines to work
out-of-the-box using the LIBRTL.EXE from the Hobbyist CD.
[An interestin possible outcome of this would be to write
an Alpha/VMS specific version of the system services that
re-marshalled the arguments and called _real_ VMS system
services on Alpha to do the work of the program. This
would make running VAX images on Alpha feasible without
depending on the now-discontinued VAX Migration Package.]
Fixed bug(s) in string pool allocation in VMINIT.
12/20/99 Added more runtime support for images, including memory mgmt
routines like malloc() and LIB$GET_VM for VMS users. Added
SHOW MEMORY/RUNTIME command to display runtime memory use
for VAX programs. More bug fixes.
12/28/99 Fixed dumb bug in writing multibyte values across pages on
little-endian systems, where often zero was written instead
of desired values. Also added sanity checking to structure
management in RUN command support for VMS shared images; I
suspect I still have a memory corruption lurking that I have
not yet found.
01/11/00 More C runtime support; trying to get a snobol processor to
run. Added librtl_time.c to support time functions, updates
to the kernel to support runtime data storage required by
DECC$RTL on VMS.
Fixed bug in emul_integer_math.c that prevented correct
decoding of BISx and BICx instructions.
01/14/00 Finished cleanup of STEP command, so the formatting (and
behavior!) are pretty much like the VMS debugger, and
consistent between the various STEP modes. Setting the
default mode to STEP/OVER now makes sense... Also fixed
a small disassembly formatting error when indexed mode is
used for other than the first operand.
01/27/00 Several minor performance tweaks to eke out a few more
micro-mips. It seems likely that the entire suite of
branch handlers need to be made separate handlers rather
than groups with a switch() statement, to avoid the unneeded
overhead of the comparisons, and to give optimizers a break.
01/28/00 Restructured rest of branch handlers to make simple branch
handler separated out.
[BOTTOM]