Commit graph

41 commits

Author SHA1 Message Date
Mark Pizzolato
756ac0d2a1 BUILDROMS: Fix potential compiler warnings 2022-11-13 11:07:46 -05:00
Seth Morabito
9b62da6567 3B2-700 Initial Public Release
This commit introduces dozens of changes to make the 3B2-700 simulator
fully functional and ready for wider use. In addition to 3B2-700
availability, this commit includes a tremendous amount of refactoring
of the 3B2-400 and common code to make the project structure easier to
maintain and reason about.

One final important change: ROM files are no longer included in the
source code. 3B2 ROM images must be obtained separately and loaded
into the simulator before boot.

Changes:

- The 3b2 target has been aliased to 3b2-400
- The formerly named 3b2-600 project has become 3b2-700
- SCSI QIC tape support has been added to sim_scsi.c
- Header files have been reworked to reduce complexity of includes
- Common code has been consolidated
- Timer code has been unified
2022-09-15 14:15:28 -07:00
Bill Beech
087e0c7bc8 SWTP: Rename boot rom to reflect the ROM version in the filename 2022-06-09 14:10:33 -07:00
Mark Pizzolato
d1a720debd BuildROMs: Change name define logic to avoid conflicts
Each of the BOOT_CODE_SIZE, BOOT_CODE_FILENAME and BOOT_CODE_ARRAY names
are replaced whenever a BuildROMs generated file is included.
2021-08-23 13:36:04 -07:00
Mark Pizzolato
cfac7dee42 BuildROMs: Add simple support for including multiple ROM images
When multiple ROM images are included by the same source module,
 #define variables with names BOOT_CODE_SIZE_n, BOOT_CODE_FILENAME_n
and BOOT_CODE_ARRAY_n will be defined.
2021-08-23 12:20:43 -07:00
Mark Pizzolato
e7169d48cd BuildROMs: Generate include files with standard lines endings on all platforms 2021-05-15 15:24:27 -07:00
Seth Morabito
92ff16ca7b 3B2: Rename files in prep for Rev 3 support
This change lays the groundwork for adding support for Rev 3 3B2 models,
which includes the Model 500, Model 600, and Model 1000.

Rather than use the fixed strings "400" and "1000" in file names, the
strings "rev2" and "rev3" will be used, which allows greater flexibility
to implement various system configurations more easily.

Additionally, this change adds a copy of the Debug Monitor (DEMON) ROM
image for the Rev 2 board, to be used soon in a later checkin.
2021-05-12 10:56:39 -07:00
Mark Pizzolato
550993a757 VAX: Disable Boot KA655 ROM Interval timer test
Restoring original patch in the ROM.  Too much Heisenberg effects to
capture debug data to isolate the issue.
2020-06-02 20:24:11 -07:00
Seth Morabito
1a3e5af755 3b2: Refactoring in preparation for Rev 3
Refactor in preparation for the addition of a Rev 3 simulator for the
3B2/1000 system.

This change also includes a full cleanup of the rat's-nest of includes
and externs that plagued the 3B2 simulator and made it difficult to
understand and maintain. Headers are now required in the following
order:

  compilation unit -> "3b2_defs.h" -> {... dependencies ...}

Finally, HELP has been added to the CPU device.
2020-03-26 15:12:08 -07:00
Mark Pizzolato
1d1fe6f329 BuildROMS: Avoid theoretical buffer overruns 2019-12-30 13:54:14 -08:00
Mark Pizzolato
2991ae067d BuildROMS: Cleanup potential buffer overrun and execution with MinGW
As discussed in  #717
2019-07-12 13:44:31 -07:00
Matt Burke
650cfd4864 VAX420: Added ROM patch to correct boot problem on MicroVAX 3100 M10/M20 2019-05-16 22:15:53 +01:00
Mark Pizzolato
c9b0e2b00f BuildROMs: Simplify makefile dependencies avoiding extra builds when possible 2019-05-14 01:03:30 -07:00
Matt Burke
f028802bff VAX: Added many different model VAX simulators
- MicroVAX 2000 & VAXstation 2000
- MicroVAX 3100 M10/M20
- MicroVAX 3100 M10e/M20e
- InfoServer 100
- InfoServer 150 VXT
- VAXstation 3100 M30
- VAXstation 3100 M38
- VAXstation 3100 M76
- VAXstation 4000 VLC
- VAXstation 4000 M60
- MicroVAX 3100 M80
- InfoServer 1000
2019-04-21 16:29:45 -07:00
Matt Burke
4babf7f529 MicroVAX2: Added new video device (VCB02) 2019-04-10 22:01:52 -07:00
Lars Brinkhoff
a070a5375c PDP11: Add 11LOGO programming language and make it bootable from the NG device. 2019-02-07 08:16:52 +01:00
Lars Brinkhoff
3bdf41c809 PDP11: Add Dazzle Dart game and make it bootable from the DAZ device. 2019-02-07 08:16:49 +01:00
Seth Morabito
804ea8e322 3b2: Initial release of an AT&T 3B2 model 400 emulator.
For information on usage, please see the file 3B2/README.md
2017-11-20 18:21:49 -08:00
Mark Pizzolato
d77e3e196e VAX: Re-enable the boot ROM interval timer diagnostic tests 2017-01-02 14:03:39 -08:00
Mark Pizzolato
6210ba2059 PDP11: Add BOOT ability to the VT device to run the Lunar Lander program 2016-01-10 17:35:18 -08:00
Mark Pizzolato
4baecec0b1 VAX750: Added VAX. 11.750 Boot ROM booting options
VAX 11/.750 Boot ROM code makes non-longword memory references to MassBus and Unibus register space.  Minor changes were necessary to allow this behavior which was architecturally undefined behavior, but had real code which depended on it.

Added a BOOTDEV option to the CPU to reflect the 4 position boot device selection switch on real VAX 11/750 hardware.

The UBA750 initial state started with the UBA map registers validly mapping the first 256KB of RAM to Unibus space.

Added simulated PCS/WCS memory which boot code on some operating systems (Ultrix and other BSD derived systems) automatically loaded on the VAX 11/750.  PCS/WCS was also automatically loaded by the newer versions of the BOOT ROMs.
2015-09-10 21:42:16 -07:00
Mark Pizzolato
ef9d1adce1 PDP10, PDP11, VAX: const cleanup 2015-02-13 06:18:24 -08:00
Mark Pizzolato
5cb8f4686c VAX780, VAX739, VAX759, VAX8600: Merge branch 'VAX-11-BootBlock-Fixup' - Generic VMB.EXE for *nix VAX operating systems
The native VMB.EXE program historically supported a Boot Block oriented
 boot if Bit 3 of the parameter register (R5) was set when VMB was invoked.
 This Boot Block boot operation reads sector 0 into memory and starts
 execution at offset 2 of the data block in memory.
 When portitions of VMB were migrated into ROM to support the earliest
 MicroVAX system (MicroVAX I) and all subsequent ROM based VMB versions
 the concept of Boot Block booting was extended in these ROM VMB
 implementations.  The change in boot block booting functionality included
 several features:
   1) If a normal boot attempt to a device failed (due to VMB not being
      able to locate a secondary bootstrap program), a boot block boot is
      automatically attempted.  If the Bit 3 of R5 was set, then the
      initial search for a secondary boot block was avoided and a boot
      block boot was immediately attempted.
   2) When performing a boot block boot, the sector 0 contents are examined
      and if these contents conform to the pattern defined for ROM based
      (PRA0) booting, the ROM format Offset, Size, and Starting address
      information is used directly by VMB to load a program into memory
      and control is transferred to that program.  If the contents of
      sector 0 do not fit the pattern required for ROM based booting, then
      the code in sector 0 is executed directly starting at offset 2,
      the same as was originally done with the non ROM based VMB versions.
      Note that this extended behavior allows sector 0 to contain very little
      information and quite possibly no actual boot code.
 Developers of alternate operating systems for VAX computers noticed the ROM
 based boot block behavior and changed their installation media AND the disk
 structures to only provide the minimal boot information required on the
 systems with VMB installed in ROM.

 Since, when this active development of these alternate operating systems for
 VAX computers was happening, the vast majority of development and new system
 deployments were to hardware which had ROM base VMB, no one noticed that
 older systems which booted with the non ROM based VMB could no longer boot
 from new install media or disks formatted with these operating systems.

 This patch addeds the ROM based VMB boot block boot functionality to the
 original dynamically loaded VMB.EXE used by the older systems to boot.

 The patch overwrites some VMB code which exists to support NVAX(1302) and
 Neon-V(1701) systems.  If simh simulators for these systems are ever built
 an alternate location must be found to accomodate this extended logic
2014-12-27 15:21:17 -08:00
Lioncash
b881ccdc19 sim_BuildROMs: Fix potential memory leaks and a double fclose. 2014-11-26 08:24:01 -05:00
Mark Pizzolato
d0d3742504 SWTP6800: Added build support for internally contained swtbug.bin as a built-in ROM image 2014-02-24 18:13:12 -08:00
Mark Pizzolato
02cb5c2d88 Compiler suggested cleanups.
Mostly silencing noise warnings, but bugs were found in sim_console.c and pdp11_dmc.c
2014-02-14 17:07:45 -08:00
Mark Pizzolato
2e85e74699 SCP: Various cleanups.
- Avoid assignments of void * values.  Cast all memory allocation return values to appropriate types.
- Add output to sim_log where missing in various places.
- Fixed issue with lost file positions after a restore for devices which leverage the UNIT_SEQ flag.
2013-11-20 09:13:27 -08:00
Mark Pizzolato
e8667e4f1d Patched VMB.EXE to support boot block booting with the same logic that all of the ROM based VMB systems (MicroVAX I onward) handle interpreting the boot block. Many alternate operating system installation media assumes that all VAX boot logic works this way. 2013-03-24 12:37:35 -07:00
Mark Pizzolato
50cf91d441 Merge branch 'SerialMux' and compiler suggested cleanup 2012-12-18 09:52:14 -08:00
Mark Pizzolato
b466bdc9c6 Compiler warning cleanup 2012-12-13 13:41:57 -08:00
Mark Pizzolato
b01fa8fbb0 Addition of MicroVAX II (VAX630) and rtVAX 1000 (or Industrial VAX 620) processor simulators from Matt Burke
Generalized the Boot Code loading support to use common code which has been added to vax_cpu.c
2012-11-09 12:18:15 -08:00
Mark Pizzolato
76612265ca Addition of MicroVAX I (VAX610) processor simulator from Matt Burke 2012-10-25 11:58:10 -07:00
Mark Pizzolato
9cd3a07ff6 Merge remote-tracking branch 'origin/master' into Extra-VAXen
Merged related functionality into new VAX 750 modules

Cleaned up compiler complaints from the clang compiler
2012-10-22 06:32:38 -07:00
Mark Pizzolato
b816a42177 BuildROMs enhancements.
- Added support to allow proper building of ROM dependent modules if the ROM image file is missing but the desired ROM image include file exists and has the correct/expected contents.
- Added support to help new ROMs to be added to the set of ROMs which are translated/tested.
- Added command Usage to program which is displayed if invoked with /? or /help  Usage displays the current set of ROM images which are known.
2012-05-12 13:49:47 -07:00
Mark Pizzolato
f77a38c3c5 Cleaned up a few compile complaints 2012-04-27 12:11:12 -07:00
Mark Pizzolato
5f505ccadf Fixing many compiler identified nits. 2012-04-18 09:48:04 -07:00
Mark Pizzolato
5284f8f1e6 VMS Build cleanup 2012-03-21 14:45:59 -07:00
Mark Pizzolato
cf49864327 More robust detection of file transfer/conversion errors in ROM/boot code 2012-02-26 12:38:07 -08:00
Mark Pizzolato
153e905339 Added checking to detect unexpected file sizes for ROM image files.
This can happen if the file was transferred or unpacked incorrectly and in the process tried to convert line endings rather than passing the file's contents unmodified.
2012-02-25 08:56:25 -08:00
Mark Pizzolato
9f1f586714 Compiler cleanup 2011-10-21 02:07:36 -07:00
Mark Pizzolato
cb35f6c97b Added support for embedded ROM images in simulators.
This allows a single simulator executable to be a completely useful component (for those simulators which dynamically load ROM or other boot code).
Meanwhile, we continues to allow the explicit use of a user's preferred ROM or other boot code as well.
A build option is provided in the makefile to not build with the included ROM functionality if desired.
2011-09-23 13:28:38 -07:00