mirror of
https://github.com/simh/simh.git
synced 2026-04-25 19:51:25 +00:00
ISYS8010, ISYS8020: Cleanup Build issues for gcc and clang and g++ and clang++
Corrected declaration sizes to match for consistency across different modules.
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,211 +0,0 @@
|
||||
Altair 8800 Simulator
|
||||
|
||||
=====================
|
||||
|
||||
|
||||
|
||||
1. Background.
|
||||
|
||||
|
||||
|
||||
The MITS (Micro Instrumentation and Telemetry Systems) Altair 8800
|
||||
|
||||
was announced on the January 1975 cover of Popular Electronics, which
|
||||
|
||||
boasted you could buy and build this powerful computer kit for only $397.
|
||||
|
||||
The kit consisted at that time of only the parts to build a case, power
|
||||
|
||||
supply, card cage (18 slots), CPU card, and memory card with 256 *bytes* of
|
||||
|
||||
memory. Still, thousands were ordered within the first few months after the
|
||||
|
||||
announcement, starting the personal computer revolution as we know it today.
|
||||
|
||||
|
||||
|
||||
Many laugh at the small size of the that first kit, noting there
|
||||
|
||||
were no peripherals and the 256 byte memory size. But the computer was an
|
||||
|
||||
open system, and by 1977 MITS and many other small startups had added many
|
||||
|
||||
expansion cards to make the Altair quite a respectable little computer. The
|
||||
|
||||
"Altair Bus" that made this possible was soon called the S-100 Bus, later
|
||||
|
||||
adopted as an industry standard, and eventually became the IEE-696 Bus.
|
||||
|
||||
|
||||
|
||||
2. Hardware
|
||||
|
||||
|
||||
|
||||
We are simulating a fairly "loaded" Altair 8800 from about 1977,
|
||||
|
||||
with the following configuration:
|
||||
|
||||
|
||||
|
||||
device simulates
|
||||
|
||||
name(s)
|
||||
|
||||
|
||||
|
||||
CPU Altair 8800 with Intel 8080 CPU board, 62KB
|
||||
|
||||
of RAM, 2K of EPROM with start boot ROM.
|
||||
|
||||
2SIO MITS 88-2SIO Dual Serial Interface Board. Port 1
|
||||
|
||||
is assumed to be connected to a serial "glass
|
||||
|
||||
TTY" that is your terminal running the Simulator.
|
||||
|
||||
PTR Paper Tape Reader attached to port 2 of the
|
||||
|
||||
2SIO board.
|
||||
|
||||
PTP Paper Tape Punch attached to port 2 of the
|
||||
|
||||
2SIO board. This also doubles as a printer
|
||||
|
||||
port.
|
||||
|
||||
DSK MITS 88-DISK Floppy Disk controller with up
|
||||
|
||||
to eight drives.
|
||||
|
||||
|
||||
|
||||
2.1 CPU
|
||||
|
||||
|
||||
|
||||
We have 2 CPU options that were not present on the original
|
||||
|
||||
machine but are useful in the simulator. We also allow you to select
|
||||
|
||||
memory sizes, but be aware that some sample software requires the full
|
||||
|
||||
64K (i.e. CP/M) and the MITS Disk Basic and Altair DOS require about
|
||||
|
||||
a minimum of 24K.
|
||||
|
||||
|
||||
|
||||
SET CPU 8080 Simulates the 8080 CPU (normal)
|
||||
|
||||
SET CPU Z80 Simulates the later Z80 CPU [At the present time
|
||||
|
||||
this is not fully implemented and is not to be
|
||||
|
||||
trusted with real Z80 software]
|
||||
|
||||
SET CPU ITRAP Causes the simulator to halt if an invalid 8080
|
||||
|
||||
Opcode is detected.
|
||||
|
||||
SET CPU NOITRAP Does not stop on an invalid Opcode. This is
|
||||
|
||||
how the real 8080 works.
|
||||
|
||||
SET CPU 4K
|
||||
|
||||
SET CPU 8K
|
||||
|
||||
SET CPU 12K
|
||||
|
||||
SET CPU 16K
|
||||
|
||||
......
|
||||
|
||||
SET CPU 64K All these set various CPU memory configurations.
|
||||
|
||||
The 2K EPROM at the high end of memory is always
|
||||
|
||||
present and will always boot.
|
||||
|
||||
|
||||
|
||||
The BOOT EPROM card starts at address 177400. Jumping to this address
|
||||
|
||||
will always boot drive 0 of the floppy controller. If no valid bootable
|
||||
|
||||
software is present there the machine crashes. This is historically
|
||||
|
||||
accurate behavior.
|
||||
|
||||
|
||||
|
||||
The real 8080, on receiving a HLT (Halt) instruction, freezes the processor
|
||||
|
||||
and only an interrupt or CPU hardware reset will restore it. The simulator
|
||||
|
||||
is alot nicer, it will halt but send you back to the simulator command line.
|
||||
|
||||
|
||||
|
||||
CPU Registers include the following:
|
||||
|
||||
|
||||
|
||||
name size comments
|
||||
|
||||
|
||||
|
||||
PC 16 The Program Counter
|
||||
|
||||
A 8 The accumulator
|
||||
|
||||
BC 16 The BC register pair. Register B is the high
|
||||
|
||||
8 bits, C is the lower 8 bits
|
||||
|
||||
DE 16 The DE register pair. D is the top 8 bits, E is
|
||||
|
||||
the bottom.
|
||||
|
||||
HL 16 The HL register pair. H is top, L is bottom.
|
||||
|
||||
C 1 Carry flag.
|
||||
|
||||
Z 1 Zero Flag.
|
||||
|
||||
AC 1 Auxillary Carry flag.
|
||||
|
||||
P 1 Parity flag.
|
||||
|
||||
S 1 Sign flag.
|
||||
|
||||
SR 16 The front panel switches.
|
||||
|
||||
BREAK 16 Breakpoint address (377777 to disable).
|
||||
|
||||
WRU 8 The interrupt character. This starts as 005
|
||||
|
||||
(ctrl-E) but some Altair software uses this
|
||||
|
||||
keystroke so best to change this to something
|
||||
|
||||
exotic such as 035 (which is Ctl-]).
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2.2 The Serial I/O Card (2SIO)
|
||||
|
||||
|
||||
|
||||
This simple programmed I/O device provides 2 serial ports to the
|
||||
|
||||
outside world, which could be hardware jumpered to support RS-232 plugs or a
|
||||
|
||||
TTY current loop interface. The standard I/O addresses assigned by MITS
|
||||
|
||||
was 20-21 (octal) for the first port, and 22-23 (octal) for the second.
|
||||
|
||||
We follow this standard in the Simulator.
|
||||
@@ -1,41 +0,0 @@
|
||||
/* system_80_10.cfg: Intel System 80/10 simulator definitions
|
||||
|
||||
This file holds the configuration for the System 80/10
|
||||
boards I/O and Memory.
|
||||
|
||||
Copyright (c) 2010, William A. Beech
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
William A. Beech BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of William A. Beech shall not be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from William A. Beech.
|
||||
|
||||
16 Dec 12 - Original file
|
||||
*/
|
||||
|
||||
/* set the base I/O address for the iSBC 208 */
|
||||
#define SBC208_BASE 0x40
|
||||
|
||||
/* configure interrupt request line */
|
||||
#define SBC208_INT INT_1
|
||||
|
||||
/* set the base and size for the iSBC 064 */
|
||||
#define SBC064_BASE 0x0000
|
||||
#define SBC064_SIZE 0x10000
|
||||
|
||||
@@ -24,14 +24,43 @@
|
||||
in this Software without prior written authorization from William A. Beech.
|
||||
|
||||
?? ??? 10 - Original file.
|
||||
16 Dec 12 - Modified to use isbc_80_10.cfg file to set base and size.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "isys8010_cfg.h" /* Intel System 80/10 configuration */
|
||||
//#include "isys8010_cfg.h" /* Intel System 80/10 configuration */
|
||||
#include "sim_defs.h" /* simulator defns */
|
||||
|
||||
/* set the base I/O address and device count for the 8255s */
|
||||
#define I8255_BASE_0 0xE4
|
||||
#define I8255_BASE_1 0xE8
|
||||
#define I8255_NUM 2
|
||||
|
||||
/* set the base I/O address and device count for the 8251s */
|
||||
#define I8251_BASE 0xEC
|
||||
#define I8251_NUM 1
|
||||
|
||||
/* set the base and size for the EPROM on the iSBC 80/10 */
|
||||
#define ROM_BASE 0x0000
|
||||
#define ROM_SIZE 0x1000
|
||||
|
||||
/* set the base and size for the RAM on the iSBC 80/10 */
|
||||
#define RAM_BASE 0x3C00
|
||||
#define RAM_SIZE 0x0400
|
||||
|
||||
/* set INTR for CPU on the iSBC 80/10 */
|
||||
#define INTR INT_1
|
||||
|
||||
/* set the base I/O address for the iSBC 208 */
|
||||
#define SBC208_BASE 0x40
|
||||
|
||||
/* configure interrupt request line */
|
||||
#define SBC208_INT INT_1
|
||||
|
||||
/* set the base and size for the iSBC 064 */
|
||||
#define SBC064_BASE 0x0000
|
||||
#define SBC064_SIZE 0x10000
|
||||
|
||||
/* multibus interrupt definitions */
|
||||
|
||||
#define INT_0 0x01
|
||||
|
||||
Reference in New Issue
Block a user