1
0
mirror of https://github.com/simh/simh.git synced 2026-01-13 07:19:43 +00:00

251 Commits

Author SHA1 Message Date
Peter Schorn
589bb5610f AltairZ80: Improved choice of boot ROM 2025-10-21 06:39:40 -10:00
Howard M. Harte
0bccaaab66 AltairZ80: wd179x: Better support for 5.25-inch floppies. 2025-08-30 21:14:48 -10:00
Patrick Linstruth
5cfa8662e9 AltairZ80: VDM1 correct boot code, IO addressing 2025-02-13 01:24:03 -10:00
Peter Schorn
9f595c066c AltairZ80: Support for disk images of Amstrad CPC 6128 with ULIfAC board 2024-11-26 07:43:03 -10:00
Patrick Linstruth
b3a1bc2466 AltairZ80: Updates prev PR to support Extended Mem
The previous PR that added the "ROM" option to "load -h" did
not support extended memory. @psco provided an update that
corrects that problem.
2024-09-03 20:52:28 -04:00
Patrick Linstruth
2adbe8c4fa AltairZ80: Adds "ROM" option to "load -h"
Adds the ability to mark pages as ROM when loading Intel HEX
files.
2024-09-02 21:17:52 -04:00
Peter Schorn
9b1e541c8f AltairZ80: Fix 8080 and Z80 CPU
This fixes the H flag handling for the 8080 CPU and corrects the parity
flag computation for the Z80 CPU for INI, OUTI, IND, OUTD, INIR, OTIR,
INDR and OTDR instructions. It is based on Thomas Eberhardt's work.
2024-07-16 12:13:48 -10:00
Patrick Linstruth
670a3728ad AltairZ80: Adds CUTER PROM to SOL20 device
SET SOL20 VER=CUTER
2024-07-04 18:13:09 -10:00
Patrick Linstruth
0d705c98d5 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-03 06:16:41 -10:00
Patrick Linstruth
b2ec2bfd26 AltairZ80: Changes to JAIR devices
This PR makes the following changes to the JAIR devices:

Refactors the service routines into STAT, TX and RX units (thanks @markpizz)
Adds a 128-byte input ring buffer
Corrects a null pointer exception
Adds overrun status bit implementation
Replaces a tab with spaces
2024-06-03 06:11:02 -10:00
Patrick Linstruth
318f44eda5 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-05-23 15:15:29 -10:00
Patrick Linstruth
a79fc59d06 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-05-23 13:08:43 -10:00
Patrick Linstruth
b523caac82 AltairZ80: Enable interrupt event after BOOT 2024-03-20 08:51:36 -10:00
Patrick Linstruth
57f055b34f 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-03-20 08:44:46 -10:00
Patrick Linstruth
d19d3f9b8d 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-03-20 08:38:08 -10:00
Patrick Linstruth
ada4b67d07 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-03-20 08:24:05 -10:00
Mark Pizzolato
779ab3a570 ALTAIRZ80: Add support to build m68k code on Itanium under VMS 2024-01-27 13:43:24 -10:00
Mark Pizzolato
01e66b0818 ALTAIRZ80: Properly check for failed return from time() API 2024-01-27 13:39:12 -10:00
Mark Pizzolato
493a58b4bf ALTAIRZ80: Avoid use of possible keyword "readonly" on some compilers 2024-01-27 13:38:03 -10:00
Mark Pizzolato
6d376b2fd9 ALL simulators with instruction history support: Minor history enhancements
- Issue reasonable error message explaining invalid SET CPU HISTORY=n input
- Let SIGINT (^C) abort SHOW HISTORY output
2023-12-04 10:57:31 -10:00
Patrick Linstruth
d317f6c0ed 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-02 02:25:29 -10:00
Peter Schorn
7464b90b36 AltairZ80: Correct spelling, formatting and years 2023-10-02 02:24:02 -10:00
Howard M. Harte
4eb8c65be8 AltairZ80: m68k: Avoid buffer overflow detected by gcc 9.4.0. 2023-07-04 21:06:58 -10:00
Howard M. Harte
5d8bceb77d AltairZ80: IBC MCC: Clean up HDC. 2023-06-27 11:37:45 -10:00
Peter Schorn
3fc0a38fc5 AltairZ80: Code cleanup and simplifications 2023-05-23 11:57:01 -10:00
Howard M. Harte
08d96ed4f5 AltairZ80: IBC: Fix MCC hard disk command mask. 2023-04-30 07:54:17 -10:00
Howard M. Harte
ee110a5a0a AltairZ80: IBC: Fix line endings. 2023-04-30 07:54:17 -10:00
Howard M. Harte
525a409a60 AltairZ80: Add IBC Super Cadet / Middi Cadet support. 2023-04-26 10:02:35 -10:00
Peter Schorn
8e5368aaaf AltairZ80: Additional checks for stop_cpu condition 2023-04-20 16:59:04 -10:00
Peter Schorn
273471d6fb AltairZ80: Add void when missing in function declaration 2023-04-05 08:50:12 -10:00
Peter Schorn
f98156842a AltairZ80: Remove MetroWerks support for Macintosh OS 9 2023-04-05 08:36:55 -10:00
Patrick Linstruth
494393e647 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:03:24 -10:00
Howard M. Harte
5a45a835dd 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-02 13:13:22 -10:00
Howard M. Harte
1e5ea3bd75 AltairZ80: Fix warnings in m68kfpu.c. 2023-04-02 13:13:21 -10:00
Howard M. Harte
49670d60d6 AltairZ80: Fix warnings in altairz80_sio.c. 2023-04-02 13:13:21 -10:00
Howard M. Harte
60b333fc53 AltairZ80: Fix warnings in altairz80_hdsk.c. 2023-04-02 13:13:21 -10:00
Howard M. Harte
8a963d9416 AltairZ80: Fix warnings in altairz80_cpu.c. 2023-04-02 13:13:21 -10:00
Howard M. Harte
6be83be27b AltairZ80: Resolve warnings in Flashwriter and Disk3. 2023-04-02 13:13:21 -10:00
Howard M. Harte
41665e504d AltairZ80: Move find_unit_index() to altairz80_sys.c 2023-04-02 13:13:21 -10:00
Howard M. Harte
23dea1b3f4 AltairZ80: wd179x: clean up / correct usage of status. 2023-04-02 13:13:21 -10:00
Patrick Linstruth
94de4da6a6 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-29 14:20:53 -10:00
Patrick Linstruth
796a3e1abc 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-29 14:19:51 -10:00
Mark Pizzolato
829d696c5e Various Simulators: Changed line endings on accessory text files to CRLF
In following simh project standards
2023-03-10 15:32:06 -10:00
Mark Pizzolato
041c0244c9 AltairZ80: Set line endings to CRLF for consistency, remove tabs
Project standard source code has tabs converted to spaces and CRLF line
endings
2023-03-04 17:51:49 -10:00
Patrick Linstruth
1cafc77ed7 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-04 17:51:49 -10:00
Patrick Linstruth
33ff3e207c AltairZ80: Correct strange line endings in mmd.c
No other changes.
2023-03-04 17:51:49 -10:00
Howard M. Harte
f2431b9214 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-07 06:05:32 -10:00
Howard M. Harte
a65d4227df AltairZ80: 2SIO: Fix potential NULL pointer dereference. 2023-01-22 13:55:58 -08:00
Howard M. Harte
3b229b1188 AltairZ80: Add support for NMI interrupts. 2023-01-22 13:41:04 -08:00
Howard M. Harte
425b5650db AltairZ80: Fix width of vectorInterrupt pseudo register. 2023-01-22 12:15:30 -08:00