Commit graph

19 commits

Author SHA1 Message Date
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
Seth Morabito
9736cc3116 3b2: STRCPY fix, CTC and NI cleanup
- The previous fix for STRCPY introduced a new bug. STRCPY must always
  copy the final NULL terminator of the string, but must NOT increment
  the source or destination pointers for the NULL terminator.

- The CTC simulation did not correctly support streaming mode, which
  can in some cases request reads that are not on 512-byte block
  boundaries.

- To begin to support System V Release 4 UNIX, the NI card (called EMD
  under SVR4) needed to support several more CRC codes for pump code.
2019-08-15 08:07:49 -07:00
Seth Morabito
571c8f96a5 3b2: WE32106 Math Acceleration Unit (MAU)
This change adds support for the WE32106 Math Acceleration Unit (MAU).
The WE32106 is an IEEE-754 1985 compatible floating point math
acceleration unit that was an optional component on the 3B2/310 and
3B2/400.

The MAU is implemented using software floating point routines.  As
always, there may be bugs, but the MAU currently passes extensive
floating point tests with exactly the same results as a real 3B2/400
equipped with a physical MAU, so I hope these are few.
2019-06-29 08:45:27 -07:00
Seth Morabito
726a07b547 3b2: Fix Coverity identified issues
This change also addresses some unused function parameter warnings
issued by GNU Flycheck (not generally used by the build process, but
useful when editing files with Flycheck enabled)
2019-03-20 10:13:30 -07:00
Seth Morabito
b0a4fb443c 3b2: NI 10Base5 Ethernet Device
- Implements an Ethernet device ("NI", for "Network Interface")
    for the 3B2 simulator.
2019-03-09 14:32:21 -08:00
Seth Morabito
3f7e473b79 3b2: Fix for erratic CONTTY behavior 2018-08-22 17:13:48 -07:00
Seth Morabito
71ee25be1a 3B2: Remove unused code, move static declarations
This change cleans up warnings issued when compiled with
-Wall.

- Removed unused functions and variables.
- Moved static declarations out of headers and into source files
- Added braces around initialization where suggested.
2018-08-19 12:37:31 -07:00
Seth Morabito
ba9d8626e9 3b2: CIO PORTS and CTC devices
This change adds Common-IO implementations of the PORTS 4-port serial
line card and the CTC tape controller card.
2018-05-21 14:29:58 -07:00
Seth Morabito
a7d0d4a6e7 3b2: CIO feature card framework
Adds a skeleton framework for CIO ("Common I/O") feature cards. The
first feature card to be implemented will be the "PORTS" serial MUX.

Part of this support involved reworking IRQ handling in the CPU. It
now respects both IRQ Vector and IPL.

This change also removes all 'assert(0)' calls from the simulator and
replaces them with generic "Simulator Error" halts. These should only
happen if there's a genuine logic error lurking somewhere.
2018-04-11 18:19:31 -07:00
Seth Morabito
177be95e5d 3b2: Refactor DUART and DMA
This change is a major refactor of how DMA and the DUART interact.

DMA implementation can now be overridden by individual devices that
require DMA. Disk and Floppy both continue to use a generic DMA
implementation, but the DUART code replaces the generic DMA with its
own implementation that correctly rate-limits TX. Among other things,
this allows the simulator to work correctly with real serial
terminals. This functionality has been tested on an AT&T 5620 "Blit"
terminal, which can run the 'layers' windowing software from the
simulator.
2018-04-11 14:24:48 -07:00
Seth Morabito
651faa78ae 3b2: Allow handling of TRACE and BREAKPOINT traps
The 3B2 emulator did not have support for traps, rendering debugging
under the simulator fairly useless. This change adds support for
trap handling. The 'sdb' UNIX debugger under SVR3 should now work
correctly.
2017-12-27 15:13:58 -08:00
Seth Morabito
e7eaaa8550 3b2: Fix warnings generated by older GCC
GCC 4.1.2 produced several warnings about inline functions.
This commit fixes those warnings.
2017-12-17 11:32:31 -08:00
Seth Morabito
7bb02e7530 3b2: CONTTY line configuration
Adds modem control line speed configuration to prevent FIFO overflow.
2017-12-16 16:07:08 -08:00
Seth Morabito
6b8d8b048e 3b2: Support software power-off 2017-12-15 13:32:11 -08:00
Seth Morabito
5a19a6b12c 3b2: Support for multiple integrated disks
This commit improves the integrated disk (ID) controller's behavior,
enabling full support for up to two 72MB (emulated WREN II)
integrated winchester disks.
2017-12-13 14:15:56 -08:00
Seth Morabito
22b8e211c6 3b2: Improve TOD calculation 2017-11-29 21:44:40 +00:00
Seth Morabito
690c30b6f4 3b2: Gracefully handle clock reset
Clock reset was not being handled gracefully at all, leading some
diagnostic tests not to pass, or not to pass consistently.

This change will "kick" the system clock whenever the timer divider is
reset, so the new divider is picked up immediately.
2017-11-25 01:38:05 -08:00
Seth Morabito
f6e63892b4 3b2: Preserve opcode values in history 2017-11-25 01:38:05 -08: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