Commit graph

239 commits

Author SHA1 Message Date
Patrick Linstruth
65e8799872 AltairZ80: Adds CUTER PROM to SOL20 device
SET SOL20 VER=CUTER
2024-09-04 11:53:38 -04:00
Peter Schorn
7b99876e1e AltairZ80: Fix 8080 and Z80 CPU 2024-09-04 11:45:18 -04:00
B. Scott Michel
103d1dd554 CMAKE: Regenerate, PDP10 needs USES_AIO
- Periodic "python cmake/generate.py" to sync with makefile changes.

- Ensure that AIO_CCDEFS (makefile) and USES_AIO (CMake generate.py) are
  present for PDP-10 simulators. Otherwise, user gets a warning message
  when the simulator starts about network support and asynchronous I/O.
2024-06-28 12:45:49 -04:00
Patrick Linstruth
f1fb14d350 AltairZ80: Adds Cromemco TUART devices
Adds the following devices to AltairZ80:

TUART0: Cromemco FDC controller TUART console port at I/O address 0x00.
TUART1: Cromemco TU-ART port A at I/O address 0x20.
TUART2: Cromemco TU-ART port B at I/I address 0x50.

These devices are fully TMXR capable.
2024-06-17 14:02:59 -04:00
Patrick Linstruth
c55b964921 AltairZ80: Changes to JAIR devices
I was having problems with the JAIR device keeping up with received
data at 57.6K.

This PR makes the following changes to the JAIR devices:

- Refactors the service routines into STAT, TX and RX units
- Adds a 128-byte input ring buffer
- Corrects a null pointer exception
- Adds overrun status bit implementation
- Removes a tab with spaces
2024-06-08 13:55:57 -04:00
Patrick Linstruth
1e4a43d8f8 AltairZ80: Adds Cromemco DAZZLER and JS1 devices
Adds Cromemco Dazzler and JS1 joystick devices
Adds vid_render_set_logical_size() to sim_video.c
2024-06-08 13:55:30 -04:00
Patrick Linstruth
e444c674f6 AltairZ80: Enable interrupt event after BOOT 2024-03-13 10:31:05 -04:00
Patrick Linstruth
2a5f758aad AltairZ80: Adds SET CPU RESIZEMEMORY and other
Changing the CPU type or MEMORY size/configuration causes memory
resources mapped by other devices to be removed. This is not made
clear by "HELP CPU" and the user has no feedback that this is
happening.

This PR does the following:

1) HELP SET CPU shows that SET CPU MEMORY requires a value.
2) Feedback is provided if the value is omitted or not properly formatted.
3) Unmapped memory resources caused by a SET CPU command are displayed
   on the SIMH console.
4) Adds a SET CPU RESIZEMEMORY command that resizes system memory
   without unmapping other device memory resources.
2024-02-01 12:55:50 -05:00
Patrick Linstruth
b273cac59e ALTAIRZ80: Fixes problem with MEM dump command
The MEM dump command would not display past SET CPU xK memory
size. This prevented displaying ROMs or other RAM windows when
a lower amount of memory was specified. This PR changes MEM to
always display a minimum of a 64K regardless of main RAM size.
2024-02-01 12:52:59 -05:00
Patrick Linstruth
3b4333dfcc ALTAIRZ80: Adds JAIR devices to simulator
Josh's Altair/IMSAI Replacement (JAIR) is a single board computer
(SBC) for the S100 bus. I created this device to assist a friend
with getting IMP and CBBS working on his JAIR. Without having a
JAIR myself, AltairZ80 to the rescue!

The following devices are added:

JAIR   - The main JAIR board I/O and ROM
JAIRS0 - Serial Port 0 (COM1)
JAIRS1 - Serial Port 1 (COM2)
JAIRP  - Parallel Port

This was a bit challenging because the JAIR uses an on-board SD
card with FAT file system to hold its BIOS and CP/M disk images.
The ATTACH command is used to mount SD card images to the
simulator. The simulator emulates the SD card interface for
read/writing SD card sectors. These images are easily mounted on
a Mac making moving files around easy. I do not know about Windows.
These same images can be written to an SD card and used with real
JAIR hardware, which may be useful for JAIR owners.

The serial and parallel ports fully support TMXR. Host serial ports
and sockets may be attached to these devices.

I am working on a GitHub repository containing an SD card image and
init script that will boot CP/M 2.2 on the JAIR simulator.

Is this device one that should be added to AltairZ80?
2024-02-01 12:52:41 -05:00
Patrick Linstruth
6925456d51 ALTAIRZ80: Add 1K RAM to SOL20 device
The Sol-20 provides 1K RAM at C800. This was discovered to be missing
when issuing a "SET CPU 24K" command. Without the CPU providing RAM
at C800, the Sol-20 would not function. This PR corrects the problem
by having the SOL20 device provide its own 1K RAM at C800.
2024-02-01 12:52:06 -05:00
Patrick Linstruth
90e4597aa9 AltairZ80: M2SIO, CPU, SIO and PMMI additions and fixes
Adds 6850 DCD status latch to M2SIO devices.
Adds vector interrupt support to M2SIO devices.

Removes CTS inactive transmit disable from PMMI device.

Adds IMSAI-style programmed output to CPU/SIO devices.

SET CPU PO will display "PO: AREG" upon an "OUT 0FFH"
instruction.

SET CPU NOPO will disable the function (default).

Corrects problem with Mode 0 interrupts.

When the CPU receives an interrupt, it pushes the current
program counter on the stack. The current implementation
of Mode 0 was performing interrupt processing after fetching
the next opcode from RAM, which also increases the PC by 1.
This caused PC+1 to be pushed on the stack. The interrupt
processing is now done prior to fetching the next opcode,
preserving the correct program counter.
2023-10-09 20:14:51 -04:00
Patrick Linstruth
9247b96b37 AltairZ80: Add CTS command to M2SIO device 2023-07-30 09:23:44 -04:00
Howard M. Harte
f8a9f9bbe7 AltairZ80: m68k: Avoid buffer overflow detected by gcc 9.4.0. 2023-07-15 17:20:05 -04:00
Peter Schorn
4c1aee0887 AltairZ80: Correct spelling, formatting and years 2023-06-30 14:31:06 +02:00
Howard M. Harte
3acc69fbd2 AltairZ80: IBC MCC: Clean up HDC. 2023-06-18 16:12:30 -07:00
Peter Schorn
b0a496446f AltairZ80: Code cleanup and simplifications 2023-05-23 21:44:47 +02:00
B. Scott Michel
8b14bb69be
CMake build infrastructure II (#53)
* CMake build infrastructure

The squashed commit that builds and packages releases for the SIMH
simulator suite with CMake, version 3.14 or newer.

See README-CMake.md for documentation.
2023-05-17 20:18:42 -04:00
Howard M. Harte
2c6ad66acd AltairZ80: IBC: Fix MCC hard disk command mask. 2023-05-09 11:23:38 -04:00
Howard M. Harte
d2b663ec94 AltairZ80: IBC: Fix line endings. 2023-05-09 11:23:38 -04:00
Peter Schorn
1aa76cca6e AltairZ80: Additional checks for stop_cpu condition 2023-04-26 10:19:23 -04:00
Howard M. Harte
15d2b89573 AltairZ80: Add IBC Super Cadet / Middi Cadet support. 2023-04-25 21:00:06 -07:00
Peter Schorn
8b1b5eaeb7 AltairZ80: Add void when missing in function declaration 2023-04-05 16:28:15 +02:00
Peter Schorn
cc23adf6fd AltairZ80: Remove MetroWerks support for Macintosh OS 9 2023-04-05 16:15:41 +02:00
Patrick Linstruth
0bc7f09edf AltairZ80 VDM1: Corrects SCP error and video aspect ratio
Corrects video window aspect ratio
Corrects 'd -m c mov m,b' SCP error
Changes default dirty flag from FALSE to TRUE
2023-04-03 09:58:56 -04:00
Howard M. Harte
30d45ae7d9 AltairZ80: CPU: Properly reset PC.
After adding the sim_clock_precalibrate_commands, the PC was not zero
at the sim> prompt after loading altairz80.

Set CPU_S to zero in cpu_reset to address this issue.
2023-04-01 07:01:16 -07:00
Howard M. Harte
74eb45492a AltairZ80: Fix warnings in m68kfpu.c. 2023-04-01 07:01:15 -07:00
Howard M. Harte
7286b4a724 AltairZ80: Fix warnings in altairz80_sio.c. 2023-04-01 07:01:15 -07:00
Howard M. Harte
58b565f769 AltairZ80: Fix warnings in altairz80_hdsk.c. 2023-04-01 07:01:14 -07:00
Howard M. Harte
885f9123c1 AltairZ80: Fix warnings in altairz80_cpu.c. 2023-04-01 07:01:13 -07:00
Howard M. Harte
0521722525 AltairZ80: Resolve warnings in Flashwriter and Disk3. 2023-04-01 07:01:12 -07:00
Howard M. Harte
94d0e78a2e AltairZ80: Move find_unit_index() to altairz80_sys.c 2023-04-01 07:01:12 -07:00
Howard M. Harte
c6e9acab8a AltairZ80: wd179x: clean up / correct usage of status. 2023-04-01 07:01:11 -07:00
Patrick Linstruth
d70a0a16c5 AltairZ80 SOL20: Minor corrections and formatting
While working on the AltairZ80 documentation, I found some problems
with the SOL20 registers and fixed some formatting issues.
Added static and "vdm1_" prefix to "charset" variable in s100_vdm1.c
2023-03-24 21:42:10 -07:00
Mark Pizzolato
decbe5b76b Various simulators: Set line endings to CRLF for consistency, remove stray tabs
Project standard source code has tabs converted to spaces and CRLF line
endings.

Other text files have CRLF line endings.
2023-03-19 16:51:27 -04:00
Patrick Linstruth
cf9fac614c AltairZ80: Adds SOL20 and VDM1 devices
This PR adds support for the Processor Technology VDM-1 display adapter and Sol-20 computer system. The VDM-1 was integrated into the Sol-20 but has been separated out into its own device.

This PR adds the following devices to the AltairZ80 simulator:

VDM1 - Processor Technology VDM-1 display adapter
SOL20 - Processor Technology SOL20 with SOLOS ROMs
SOL20K - SOL20 Keyboard (callback from VDM1)
SOL20T - SOL20 Tape (reads/writes cassette file images)
SOL20S - SOL20 Serial Port (TMXR capable)
SOL20P - SOL20 Printer Port (TMXR capable)
2023-03-19 16:47:38 -04:00
Patrick Linstruth
825a505083 AltairZ80: Add sim_clock_precalibrate_commands
Used to initialize SCP timers to prevent problems during simulator startup
when THROTTLE is being used.

/*
 * This sequence of instructions is a mix that mimics
 * a resonable instruction set that is a close estimate
 * to the calibrated result.
 */

static const char *cpu_clock_precalibrate_commands[] = {
    "-m 100 LXI H,200H",
    "-m 103 MVI B,0",
    "-m 105 DCR B",
    "-m 106 MOV M,B",
    "-m 107 INX H",
    "-m 108 JNZ 0105H",
    "-m 10B JMP 0100H",
    "PC 100",
    NULL};
2023-03-19 16:45:19 -04:00
Howard M. Harte
c5ce339566 AltairZ80: ADCS6: Fix uninitialized unit structure
Proper initialization of the ADCS6 unit data structure depended on the
ADCS6 device being enabled.  In cases where the ADCS6 unit was not
enabled, non-debug builds may crash on some host platforms depending on
compiler/memory layout.
2023-02-06 19:12:49 -08:00
Howard M. Harte
09899c18fa AltairZ80: 2SIO: Fix potential NULL pointer dereference. 2023-01-29 10:19:07 -08:00
Howard M. Harte
023cd3b387 AltairZ80: Add support for NMI interrupts. 2023-01-29 10:19:07 -08:00
Howard M. Harte
11e555bb20 AltairZ80: Fix width of vectorInterrupt pseudo register. 2023-01-29 10:19:07 -08:00
Howard M. Harte
dcd3e48048 AltairZ80: ADCS6: Initialize extended UDATA in reset routine.
As pointed out by @markpizz , the only allowed macro to initialize UNIT
structures is the UDATA macro.

Setting additional UNIT data structure items should be set through explicit
initialization code in the DEVICE reset routine.
2023-01-18 12:43:34 -05:00
Patrick Linstruth
1a1366650c AltairZ80: Adds -H switch to LOAD command for loading Intel hex files 2023-01-17 20:08:39 -08:00
Howard M. Harte
74197bfb77 AltairZ80: SIO: Allow keyboard interrupts from configurable SIO port. 2022-12-05 12:16:00 -05:00
Howard M. Harte
9dd2fe1615 AltairZ80: ADC Super-Six: add Z80-CTC support. 2022-12-05 12:16:00 -05:00
Howard M. Harte
4359a80670 AltairZ80: wd179x: Add support for raw disk images.
Support standard 8-inch SSSD raw disk images, in addition to .imd.
2022-12-05 12:16:00 -05:00
Patrick Linstruth
3ec3e3aa8f AltairZ80: Fix HALT stop code conflict with ON ERROR
AltairZ80 uses 0 for the VM-specific HLT instruction stop code.
SCP defines SCPE_OK as 0.
SCP uses 0 to mean all errors ("ON ERROR").

The command "ON 0" will generate "%SIM-ERROR: Invalid argument: 0".

This PR changes the HALT stop code from 0 to 5.
2022-11-27 17:14:57 -05:00
Howard M. Harte
60599a9f62 AltairZ80: HDC-1001: Fix MSVC /W4 warnings. 2022-11-27 14:38:05 -05:00
Howard M. Harte
75f11a8e3d AltairZ80: wd179x: Code cleanup and fix MSVC /W4 warnings. 2022-11-27 14:38:05 -05:00
Howard M. Harte
7cca92ce28 AltairZ80: SIO: Support 32-bits for setFCBAddressCmd.
The M68K requires more than 16-bits for the FCB address.  Expand to
32-bits.
2022-11-27 14:38:05 -05:00