home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 3 / CD_Magazyn_EXEC_nr_3.iso / Recent / misc / emu / evax11.readme < prev    next >
Text File  |  2000-07-31  |  19KB  |  347 lines

  1. Short:    VAX Emulator, a "Virtual VAX" for Mac OS Computers
  2. Author:   Tom Cole
  3. Uploader: louise@amiga.hu (LouiSe/AMIGAonly)
  4. Version:  1.1
  5. Type:     misc/emu
  6.  
  7.  
  8. VAX emulator for AmigaOS 68k - ported by LouiSe
  9. (sources included)
  10.  
  11. http://louise.amiga.hu
  12. http://amigaonly.ahol.com/louise
  13.  
  14.  
  15. [This change history was started 8/23/99 since contributions from the
  16.  "outside world" are beginning to appear.]
  17.  
  18. 08/23/99        Integrated fixes to clean up compiler warnings and
  19.                 added MATCHC instruction from Carl Fongheiser
  20.                 (cmf@iabears.org).
  21.  
  22. 08/25/99        Integrated new instructions REMQTI and REMQHI from CMF
  23.  
  24. 08/26/99        Separated disassembly code from operand decode for
  25.                 performance.  Added DECC$STRCAT shim and sample program
  26.                 and executable SIEVE.C and SIEVE.EXE for performance
  27.                 testing.
  28.  
  29. 08/27/99        Added SKPC from CMF.  Added License.txt to the source
  30.                 area describing the open source license nature of the
  31.                 software.  Modified header comments accordingly.
  32.  
  33. 08/28/99        Published (in-progress) draft of user guide as HTML
  34.                 to web site. 
  35.  
  36.                 http://www.forest-edge.net/evaxdoc.html
  37.  
  38. 09/03/99        Added profiling of instruction modes.  Need this to
  39.                 figure out how to optimize operand decoding more.
  40.                 Use SHOW INSTRUCTION MODES to see the profile data.
  41.                 Also, made sure VMS build tools DESCRIP.MMS and
  42.                 EVAX.OPT are included in tar files for distribution.
  43.  
  44. 09/04/99        Tinkering around with supporting LIB$GET_INPUT as a
  45.                 generalized input routine.  This moves us one step
  46.                 closer to being able to run useful programs compiled
  47.                 on a VAX.  Implemented EXE$INPUT shim for handling the
  48.                 low-level console input, and LIB$GET_INPUT in the 
  49.                 microkernel to support rest of the functionality.  This
  50.                 will have to do for now until a byte-for-byte console
  51.                 input function works.  I need to come up with a suite
  52.                 of character input test-and-read routines for all the
  53.                 various hosts next!
  54.  
  55. 09/07/99        Started on keyboard console input proper.  Created a
  56.                 MacOS version to start with, and stubbed it out for other
  57.                 ports.  This allows a keystroke hit while the emulator
  58.                 is executing VAX instructions to capture the data in RXDB
  59.                 and optionally generate an interrupt.  Started changing
  60.                 kernel.asm to allow for a generalized input buffer handler.
  61.  
  62. 09/13/99        CMF contributed ASHQ and found the ASHL bug which is also
  63.                 fixed here.  This version also contains a very first stab
  64.                 at segmenting out memory addresses in the RAM versus ROM
  65.                 or memory-mapped I/O.  On VAXstations (at least the two
  66.                 I have gotten hold of) there is CPU data stored at E0040004
  67.                 that the booter needs.  So you can now read this address
  68.                 outside the regular memory map.  This needs LOTS OF THOUGHT.
  69.                 This release contains a few more misc. performance tweaks,
  70.                 to wring out a teeny bit more performance from instruction
  71.                 decoding.  This will be doubly important if the I/O-memory- 
  72.                 and ROM-addressing becomes more expensive.
  73.  
  74. 09/20/99        Small tweaks to protect against crashes; there are a number
  75.                 of commands and pseudo-opcodes that depend on the VMINIT
  76.                 and microkernel environment.  The changes detect when it
  77.                 is valid or not, and prevent bogus command execution.  Also,
  78.                 the attendant eVAX.doc documentation file (MS Word 97) has
  79.                 been updated to Draft 1.2 and contains most of the console
  80.                 and microassembler documentation at this point.
  81.  
  82. 09/21/99        Added "sequential translation cache" to VM.  80% or more
  83.                 of all VM translations are done on the very same page just
  84.                 translated (instruction decoding, block moves, etc.).  So
  85.                 keep the last page as a single-slot level 1 cache before
  86.                 the translation buffer is read.  Also updated the format
  87.                 of the eVAX.doc file to make it a little more readable.
  88.  
  89. 09/22/99        Added support for a ROM at physical address 20040000.  The
  90.                 virtual memory handler, storage handler, and anciliary
  91.                 functions that read memory were modified to allow reading
  92.                 from a ROM that is 256k long.  This ROM exists on various
  93.                 small VAXstation systems to support native console functions.
  94.                 Also added the ROM command which reads a file "rom.txt" from
  95.                 the default directory.  This file is assumed to be a dump
  96.                 of the console ROM, with lines in the format
  97.  
  98.                                 P aaaaaaaa xxxxxxxx
  99.  
  100.                 Where "P" is a literal constant (means physical memory),
  101.                 "aaaaaaaa" is the address in the ROM, and "xxxxxxxx" is
  102.                 a hexadecimal longword at that location.  If you use the
  103.                 EXAM command in the console of a VAX this is the format of
  104.                 the output you get.  Use the (currently undocumented) ROM
  105.                 command to load this file (often over a megabyte of text)
  106.                 into the special memory reserved for the ROM.  Later this
  107.                 will be made more elegant, I'm sure.
  108.  
  109. 09/23/99        More support for ROM images.  You can now SAVE/ROM "file"
  110.                 to save the currently loaded ROM image as a binary file.
  111.                 It uses the same kind of mechanism as the SAVE binary
  112.                 operation.  The LOAD/ROM command can now sense a binary image
  113.                 (magic first 8 bytes) and load accordingly.  Binary
  114.                 ROM images are more-or-less the size of the ROM, where
  115.                 text files are 4-5x larger.  Use binary when you can!
  116.                 Also changed the default file name to "default.rom".
  117.                 When you load a ROM file you can specify the base 
  118.                 and size with /BASE=hex-address and /SIZE=size-in-K 
  119.                 qualifiers to the ROM command.  SHOW ROM now displays
  120.                 info about the currently-loaded ROM.  You can INIT/ROM
  121.                 to create empty ROM space if you are building your own,
  122.                 and use the /BASE and /SIZE qualifiers.
  123.  
  124.                 Also updated the EXAM command so it accepts /AD and /AZ
  125.                 as qualifiers to mirror the VMS debugger environment.
  126.                 Also updated numerous little errors in the Word doc.
  127.  
  128. 09/24/99        And even more wierd address stuff.  The physical address
  129.                 mapping is now abstracted enough that disjoint address
  130.                 space areas and memory_mapped I/O are all handled reasonably
  131.                 smoothly.  There are at least four distinct memory areas in
  132.                 the emulator now: main memory, ROM memory, NVRAM memory, and
  133.                 special I/O memory locations.
  134.  
  135.                 There is a LOAD/NVRAM, SAVE/NVRAM, and INIT/NVRAM command
  136.                 that will allow the non-volatile RAM to be managed.  It
  137.                 supports /BASE and /SIZE qualifiers on the INIT command,
  138.                 and assumes that something will be assembled or run in
  139.                 the console ROM to initialize it.
  140.  
  141.                 Created symbols CONSOLE$ROM_BASE, CONSOLE$ROM_END,    
  142.                 CONSOLE$ROM_SIZE, CONSOLE$NVRAM_BASE, CONSOLE$NVRAM_END,
  143.                 and CONSOLE$NVRAM_SIZE to record the info on these
  144.                 special areas.
  145.  
  146.                 Extended the privileged register set from 64 to 128 register,
  147.                 and "enabled" the SAVIPL, SAVPC, and SAVPSL registers which
  148.                 are used by the console.
  149.  
  150. 09/27/99        First pass at being 64-bit friendly if not 64-bit clean.  A
  151.                 user is trying to build on Tru64, so here are some fixes to
  152.                 correct memory access errors (can no longer assume native long
  153.                 and VAX long are same sizes) and use __int32 types where math
  154.                 overflow matters.  Added new TRU64 architecture type.
  155.  
  156. 09/28/99        Bug fix to MOVC5 from Sergey Tikhonov <tsv@excom.spb.su>.  I
  157.                 also fixed a bug in the image activator for loading OpenVMS
  158.                 images into the emulator; multi-page sections were overwritten
  159.                 on the same physical address.  Bad.
  160.  
  161. 10/03/99        Second try on 64-bit clean.  It doesn't seem to make sense to
  162.                 use 64-bit longs in general, so I've create explicit data types
  163.                 of LONGWORD and QUADWORD for 32- and 64-bit integers.  Globally
  164.                 changed everywhere.  Ports may be a little rough if arch.h isn't
  165.                 quite right, let me know if I goofed up somewhere.
  166.  
  167. 10/07/99        Numerous bug fixes in the assembler.  Added support for a few
  168.                 missing addressing modes ( @b^nn(Rn), for example) and a few
  169.                 nuances found in assemblers such as @(Rn).  Added pseudo-ops
  170.                 to support GAS extensions like JEQL, etc.  Added aliases to
  171.                 handle overloaded opcodes, like BEQLU being same as BEQL.
  172.  
  173. 10/09/99        Cleaned up a number of warnings generated by Visual Studio
  174.                 on Windows.
  175.  
  176. 10/12/99        Added more SHIM support, to try to support a handful of minimal
  177.                 NetBSD-style system service interfaces.  Updated the microkernel
  178.                 with new shim support for open, close, read, and write.
  179.  
  180.                 Assembling a forth interpreter for VAX written for NetBSD, I'm
  181.                 getting close to making it run.  Seems like a good next test
  182.                 for correctness of instructions.
  183.  
  184.                 Added STEP/OVER, STEP/INTO, STEP/RETURN to the console.  Added
  185.                 SET STEP to define default STEP mode.  These slowed down the
  186.                 execution model again (somewhat) so soon it will be time to
  187.                 again review vax.c for cleanup and performance tweaks.
  188.  
  189. 10/15/99        Fixed a number of errors in handling of floating point
  190.                 conversions.  This made the floating point parts of the
  191.                 Forth interpreter work much better.  There still appears
  192.                 to be a precision problem; don't know yet if that's
  193.                 inherent in the Forth code or in my F_FLOAT support.
  194.                 Also fixed bug where disassembling an operand with
  195.                 side effects (such as "(R3)+") actually changed the
  196.                 register value.  Bad.  Found and fixed bug in BCS handler.
  197.  
  198. 10/17/99        Fixed major bugs in FPU.C which prevented floating point
  199.                 from working correctly on little-endian ports (Alpha, x86, etc).
  200.  
  201.  
  202. 10/29/99        Fixed minor bug in HELP command that caused crashes if
  203.                 trailing spaces on keywords.  Also added rounding support
  204.                 in FPU.C such that F_FLOAT values appear to be correct
  205.                 now when imprecise fractions result from calculations.
  206.  
  207. 11/01/99        Fixes in the microkernel to support exception trapping.
  208.  
  209. 11/03/99        Added printf() support to the LIBRTL shim library.
  210.  
  211. 11/04/99        Split LIBRTL.C into several modules based on function.  Added
  212.                 a number of basic RTL functions for VMS.  This makes it much
  213.                 easier to write test programs in C that can print results,
  214.                 etc.  Use the SHOW SHIM command to list the implemented
  215.                 runtime functions.
  216.  
  217.                 Also fixed bug in STEP/RETURN so it works correctly.
  218.  
  219. 11/08/99        Performance fixes to execution model.  STEP/RETURN and
  220.                 STEP/OVER used a different mechanism than BREAK to handle
  221.                 control flowing back to console.  Changed to support a
  222.                 temporary "one-shot" break type.  This squeezes 2-3%
  223.                 performance gain back out of execution handler by not
  224.                 checking two places for break info.
  225.  
  226.                 Fixed bugs in CALL/STEP that caused bogus syntax error
  227.                 message.  Added LOAD/IMAGE which just loads a VMS image
  228.                 without executing it.
  229.  
  230.                 Updated the documentation somewhat.  The Word doc still
  231.                 lags behind the code but it's getting better.  Started 
  232.                 on "architectural overview" section but didn't get far
  233.                 yet.  This is a near-term goal, to describe the structure
  234.                 of the emulator code itself better, to encourage more
  235.                 participation.
  236.  
  237. 11/09/99        Updates to microkernel support for VM. I need to be able
  238.                 to have a "sparse" address map, rather than the old system
  239.                 of mapping each sequential physical page to a virtual page.
  240.                 This allows supporting the P1 vector area for VMS system
  241.                 services in the microkernel.
  242.  
  243.                 This did force me to finally confirm my suspicion that the
  244.                 memory read routines wouldn't work if a read spanned non-
  245.                 contiguous pages.  They now detect "split" memory reads
  246.                 and do a slower but more correct byte-for-byte read in
  247.                 this case.
  248.  
  249.                 When a TNV fault is hit and the microkernel is active,
  250.                 a new page of physical memory is mapped to the faulting
  251.                 page.  This continues until there are no more physical
  252.                 pages available.  Note that there is no page writer,
  253.                 so when all physical pages are used, then a TNV fault
  254.                 is returned by the emulator.
  255.  
  256.                 Of course, if the microkernel is not active, then
  257.                 the emulator TNV handler is not used.
  258.  
  259.                 Also fixed annoying bug where two RUN commands could
  260.                 not be executed in a row (bad ICB chain reset).  Also
  261.                 if image open fails, try adding ".exe" to the name.
  262.  
  263. 11/14/99        Parsing commands had become rather cumbersome in some
  264.                 places in the console, so I decided to take a day and
  265.                 integrate an old peice of code I had sitting around that
  266.                 is similar to DCL on VMS.  To get started, I've converted
  267.                 the CLEAR and SHOW commands to use DCL syntax.  For example,
  268.                 "SHOW ALL SYMBOLS" is now "SHOW SYMBOL/ALL".  See the new
  269.                 file "evax.dcl" which contains the command grammar definitions.
  270.                 Once all the console commands are converted, I'll integrate
  271.                 the grammar into command initialization.
  272.  
  273. 11/16/99        Fixed bugs on DCLRTL regarding ambiguous keyword detection.
  274.  
  275.                 As of 11/16/99, the only version that includes this week's
  276.                 DCL-related changes is the Unix .tar.gz file.  I'm at
  277.                 COMDEX this week and don't have a connection good enough
  278.                 to push the 1MB Windows and Mac files.  These will be updated
  279.                 around 11/22/99.
  280.  
  281. 11/29/99        Removed about 100 warnings generated by Visual Studio.  Most
  282.                 were nuisance warnings but a few were bugs.  Also fixed an
  283.                 annoying bug where EXAM/AZ displayed wrong number of bytes.
  284.  
  285. 12/06/99        Fixed bug in SHOW command.  Updated Word document and online
  286.                 help.
  287.  
  288. 12/09/99        Fixed bug in LOCC handling of Z bit.  Added SHOW IMAGES
  289.                 command which shows active images.  Added SYS$EXPREG and
  290.                 SYS$DCLEXH services.
  291.  
  292.                 Major bug fixes in the VMS image loader.  I can now run
  293.                 a C program, activating the VAX runtime libraries
  294.                 as needed.  At the "bottom" of the call chain, system
  295.                 services are called to do "real" work.  Staring to fill
  296.                 in a minimal set of services to allow RUN execution of
  297.                 more "real" programs.  For example, supporting SYS$EXPREG
  298.                 for P0 space allows the LIB$ family of VM routines to work
  299.                 out-of-the-box using the LIBRTL.EXE from the Hobbyist CD.
  300.  
  301.                 [An interestin possible outcome of this would be to write
  302.                  an Alpha/VMS specific version of the system services that
  303.                  re-marshalled the arguments and called _real_ VMS system
  304.                  services on Alpha to do the work of the program.  This
  305.                  would make running VAX images on Alpha feasible without
  306.                  depending on the now-discontinued VAX Migration Package.]
  307.  
  308.                  Fixed bug(s) in string pool allocation in VMINIT.
  309.  
  310. 12/20/99        Added more runtime support for images, including memory mgmt
  311.                 routines like malloc() and LIB$GET_VM for VMS users.  Added
  312.                 SHOW MEMORY/RUNTIME command to display runtime memory use
  313.                 for VAX programs.  More bug fixes.
  314.  
  315. 12/28/99        Fixed dumb bug in writing multibyte values across pages on
  316.                 little-endian systems, where often zero was written instead
  317.                 of desired values.  Also added sanity checking to structure
  318.                 management in RUN command support for VMS shared images; I
  319.                 suspect I still have a memory corruption lurking that I have
  320.                 not yet found.
  321.  
  322. 01/11/00        More C runtime support; trying to get a snobol processor to 
  323.                 run.  Added librtl_time.c to support time functions, updates
  324.                 to the kernel to support runtime data storage required by
  325.                 DECC$RTL on VMS.
  326.  
  327.                 Fixed bug in emul_integer_math.c that prevented correct
  328.                 decoding of BISx and BICx instructions.
  329.  
  330. 01/14/00        Finished cleanup of STEP command, so the formatting (and
  331.                 behavior!) are pretty much like the VMS debugger, and
  332.                 consistent between the various STEP modes.  Setting the
  333.                 default mode to STEP/OVER now makes sense...  Also fixed
  334.                 a small disassembly formatting error when indexed mode is
  335.                 used for other than the first operand. 
  336.  
  337. 01/27/00        Several minor performance tweaks to eke out a few more
  338.                 micro-mips.  It seems likely that the entire suite of
  339.                 branch handlers need to be made separate handlers rather
  340.                 than groups with a switch() statement, to avoid the unneeded
  341.                 overhead of the comparisons, and to give optimizers a break.
  342.  
  343. 01/28/00        Restructured rest of branch handlers to make simple branch
  344.                 handler separated out.
  345.  
  346. [BOTTOM]
  347.