scelbi: New SCELBI (SCientic-ELectronics-BIology) Simulator from Hans-Åke Lund
This commit is contained in:
parent
5ef84f7da2
commit
202e49cfdf
9 changed files with 2011 additions and 1810 deletions
File diff suppressed because it is too large
Load diff
139
Intel-Systems/scelbi/scelbi.txt
Normal file
139
Intel-Systems/scelbi/scelbi.txt
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
SCELBI Sumulator with Intel 8008 CPU
|
||||||
|
====================================
|
||||||
|
|
||||||
|
1. Background.
|
||||||
|
|
||||||
|
The SCELBI (SCientic-ELectronics-BIology) computer was probably
|
||||||
|
the first commercially available micro-computer marketed toward hobbyist.
|
||||||
|
The first market announce for SCELBI-8H was a tiny advertisement in the
|
||||||
|
back of the March 1974 issue of QST, an amateur radio magazine.
|
||||||
|
The computer was built around the Intel 8008 architecture. There were two
|
||||||
|
versions of the SCELBI. The first version was called the 8H. The H standing
|
||||||
|
for hobbyist. The second version was called the 8B, the B standing for
|
||||||
|
business. It had all the features of the 8H, but added support for up
|
||||||
|
to 16K of memory. As the default memory configuration for the SCELBI simulator
|
||||||
|
is 16K, it is really a SCELBI-8B that is simulated. More information about the
|
||||||
|
SCELBI computer can be found at: http://www.willegal.net/scelbi/scelbi.html
|
||||||
|
and http://history-computer.com/ModernComputer/Personal/Scelbi.html.
|
||||||
|
|
||||||
|
2. Hardware
|
||||||
|
|
||||||
|
We are simulating a SCELBI-8B from about 1975, with the following
|
||||||
|
configuration:
|
||||||
|
|
||||||
|
device simulates
|
||||||
|
name(s)
|
||||||
|
|
||||||
|
CPU SCELBI-8B with Intel 8008 CPU, 16KB of RAM.
|
||||||
|
TTY Serial "bit banger" interface (commonly to an
|
||||||
|
ASR-33), is assumed to be connected to a serial
|
||||||
|
"glass TTY" that is your terminal running the Simulator.
|
||||||
|
PTR Paper Tape Reader, but not implemented yet.
|
||||||
|
|
||||||
|
2.1 CPU
|
||||||
|
|
||||||
|
You may select different memory sizes, the default size is 16K.
|
||||||
|
|
||||||
|
SET CPU 4K
|
||||||
|
SET CPU 8K
|
||||||
|
SET CPU 12K
|
||||||
|
SET CPU 16K
|
||||||
|
|
||||||
|
CPU Registers include the following:
|
||||||
|
|
||||||
|
name size comments
|
||||||
|
|
||||||
|
PC 14 The Program Counter
|
||||||
|
A 8 The accumulator
|
||||||
|
B 8 The B register.
|
||||||
|
C 8 The C register.
|
||||||
|
D 8 The E register.
|
||||||
|
E 8 The E register.
|
||||||
|
HL 16 The HL register pair. H is the top 8 bits, L is
|
||||||
|
the bottom 8 bits.
|
||||||
|
SP 3 Stack Pointer to return address in stack.
|
||||||
|
CF 1 Carry Flag.
|
||||||
|
ZF 1 Zero Flag.
|
||||||
|
PF 1 Parity Flag.
|
||||||
|
SF 1 Sign Flag.
|
||||||
|
WRU 8 The interrupt character. This starts as 005
|
||||||
|
(Ctrl-E)
|
||||||
|
|
||||||
|
2.2 The TTY Serial Interface
|
||||||
|
|
||||||
|
This interface simulates a "bitbanger" TTY interface as
|
||||||
|
implemented on the SCELBI computer in the SCELBAL source code.
|
||||||
|
Inport 2 bit 7 is used as input from the TTY and Outport 2 bit 0
|
||||||
|
is used as output to the TTY. In other SCELBI documentation Inport 5
|
||||||
|
is used for input from the TTY and Outport 6 is used for output to the TTY.
|
||||||
|
The I/O simulation routines are mapped in the i/o configuration table
|
||||||
|
to both port variants.
|
||||||
|
|
||||||
|
There are also functions that support simulated I/O for
|
||||||
|
an Intel 8008 computer built for a master thesis in 1975.
|
||||||
|
These functions are however not mapped in the i/o configuration
|
||||||
|
table as they conflict with the SCELBI TTY interface.
|
||||||
|
|
||||||
|
3. Sample Software
|
||||||
|
|
||||||
|
SCELBAL was called the SCientific ELementary BAsic for the 8008
|
||||||
|
and 8080 by SCELBI Computer Consulting. SCELBAL could be run on a SCELBI
|
||||||
|
or other 8008 based machine that had 8K of memory. SCELBAL completely
|
||||||
|
supported floating point math with 6 digits of precision. As time went on,
|
||||||
|
additional packages including matrix arithmetic and math functions were added.
|
||||||
|
|
||||||
|
SCELBAL can be downloaded from http://www.willegal.net/scelbi/scelbal.html
|
||||||
|
there are assembler source, hex and binary images available for three
|
||||||
|
variants of SCELBAL. The web page also includes information about SCELBAL
|
||||||
|
and a link to a scan of the SCELBI's SCELBAL book:
|
||||||
|
http://www.scelbi.com/files/docs/scelbal/SCELBAL.pdf
|
||||||
|
In chapter 14 of the SCELBAL book there is a language reference.
|
||||||
|
|
||||||
|
To run SCELBAL on the SCELBI simulator, download the binary code from:
|
||||||
|
http://www.willegal.net/scelbi/software/sc1.bin
|
||||||
|
|
||||||
|
Then start the simulator, load the code and run:
|
||||||
|
|
||||||
|
SCELBI simulator V4.0-0 Beta git commit id: ba447399
|
||||||
|
sim> d pc 100
|
||||||
|
sim> load sc1.bin
|
||||||
|
11942 Bytes loaded.
|
||||||
|
sim> g
|
||||||
|
|
||||||
|
READY
|
||||||
|
|
||||||
|
SCR
|
||||||
|
|
||||||
|
READY
|
||||||
|
|
||||||
|
10 A=1
|
||||||
|
20 B=7
|
||||||
|
30 PRINT "A + B =";
|
||||||
|
40 PRINT A+B
|
||||||
|
50 END
|
||||||
|
LIST
|
||||||
|
10 A=1
|
||||||
|
20 B=7
|
||||||
|
30 PRINT "A + B =";
|
||||||
|
40 PRINT A+B
|
||||||
|
50 END
|
||||||
|
|
||||||
|
READY
|
||||||
|
|
||||||
|
RUN
|
||||||
|
A + B = 8.0
|
||||||
|
|
||||||
|
READY
|
||||||
|
|
||||||
|
|
||||||
|
Simulation stopped, PC: 000103 (INP 5)
|
||||||
|
sim> exit
|
||||||
|
|
||||||
|
|
||||||
|
Some notes on SCELBAL:
|
||||||
|
Only upper case is recognized.
|
||||||
|
Always do SCR before entering a program, otherwise strange
|
||||||
|
things will happen.
|
||||||
|
The binary code at the web page above shall be loaded starting
|
||||||
|
at address 0100. The program shall also start to run from
|
||||||
|
address 0100.
|
345
Intel-Systems/scelbi/scelbi_io.c
Normal file
345
Intel-Systems/scelbi/scelbi_io.c
Normal file
|
@ -0,0 +1,345 @@
|
||||||
|
/* scelbi_io.c: I/O for the SCELBI computer.
|
||||||
|
|
||||||
|
Copyright (c) 2017, Hans-Ake Lund
|
||||||
|
|
||||||
|
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
|
||||||
|
ROBERT M SUPNIK 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.
|
||||||
|
|
||||||
|
|
||||||
|
This interface simulates a "bitbanger" TTY interface as implemented
|
||||||
|
on the SCELBI computer in the SCELBAL source code.
|
||||||
|
Inport 2 bit 7 is used as input from the TTY and
|
||||||
|
Outport 2 bit 0 is used as output to the TTY.
|
||||||
|
In SCELBI documentation Inport 5 is used for input from the TTY
|
||||||
|
and Outport 6 is used for output to the TTY.
|
||||||
|
The I/O simulation routines are mapped to both port combinations.
|
||||||
|
|
||||||
|
|
||||||
|
There are also functions that support simulated I/O for
|
||||||
|
the Intel 8008 computer built for a master thesis in 1975.
|
||||||
|
These functiona are however not mapped in the i/o configuration
|
||||||
|
table as they conflict with the SCELBI TTY interface.
|
||||||
|
Note that Inport 0 is read by the assembler code as INP 0
|
||||||
|
Outport 0 is written by the AS Macro Assembler code as OUT 10 (octal)
|
||||||
|
|
||||||
|
The following i/o ports were used in this computer:
|
||||||
|
Outport 0: used to select device for reading from Inport 0
|
||||||
|
and writing to Outport 3.
|
||||||
|
Inport 0: used to read external data.
|
||||||
|
Outport 3: used to write external data.
|
||||||
|
|
||||||
|
Outport 1: used to save interupt state, connected to Inport 1.
|
||||||
|
Outport 2: used to save interupt state, connected to Inport 2.
|
||||||
|
|
||||||
|
Inport 3: used to input data from tape-reader
|
||||||
|
Outport 4: used to output character to printer (implemented).
|
||||||
|
Inport 5: used to input character from keyboard (implemented).
|
||||||
|
|
||||||
|
Inport 4: used for status flags for the ports (Flagport).
|
||||||
|
Flag 1 (bit 0): set to 1 when printer ready (implemented).
|
||||||
|
Flag 2 (bit 1): set to 1 when input available from tape-reader.
|
||||||
|
Flag 3 (bit 2): set to 1 when tape in tape-reader.
|
||||||
|
Flag 5 (bit 4): set to 1 when character available from keyboard (implemented).
|
||||||
|
Flag 7 (bit 6): set to 1 when the reset key on the computer is pressed.
|
||||||
|
|
||||||
|
Inport 7: used to start the printer motor, just using an output pulse,
|
||||||
|
no data is read.
|
||||||
|
|
||||||
|
04-Sep-17 HAL Working version of SCELBI simulator
|
||||||
|
12-Sep-17 HAL Modules restructured in "Intel-Systems" directory
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "system_defs.h"
|
||||||
|
|
||||||
|
/* This is the I/O configuration table. There are 8 possible
|
||||||
|
input device addresses (octal 0 - 7) and 24 possible output
|
||||||
|
device addresses (octal 10 - 37).
|
||||||
|
The port numbers are specified as for the 8008 AS Macro Assembler,
|
||||||
|
in other 8008 assemblers outport 012 (octal) may be specified as 2.
|
||||||
|
If a device is plugged to a port it's routine
|
||||||
|
address is here, 'nulldev' means no device is available.
|
||||||
|
*/
|
||||||
|
int32 ttyout_d(int32 io, int32 data);
|
||||||
|
int32 ttyin_d(int32 io, int32 data);
|
||||||
|
int32 prt_d(int32 io, int32 data);
|
||||||
|
int32 kbd_d(int32 io, int32 data);
|
||||||
|
int32 iostat_s(int32 io, int32 data);
|
||||||
|
int32 nulldev(int32 io, int32 data);
|
||||||
|
|
||||||
|
struct idev dev_table[32] = {
|
||||||
|
{&nulldev}, {&nulldev}, {&ttyin_d}, {&nulldev}, /* 000 input 0 - 3 */
|
||||||
|
{&nulldev}, {&ttyin_d}, {&nulldev}, {&nulldev}, /* 004 input 4 - 7 */
|
||||||
|
{&nulldev}, {&nulldev}, {&ttyout_d}, {&nulldev}, /* 010 output 8 - 11 */
|
||||||
|
{&nulldev}, {&nulldev}, {&ttyout_d}, {&nulldev}, /* 014 output 12 - 15 */
|
||||||
|
{&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /* 020 output 16 - 19 */
|
||||||
|
{&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /* 024 output 20 - 23 */
|
||||||
|
{&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /* 030 output 24 - 27 */
|
||||||
|
{&nulldev}, {&nulldev}, {&nulldev}, {&nulldev} /* 034 output 28 - 31 */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define UNIT_V_ANSI (UNIT_V_UF + 0) /* ANSI mode */
|
||||||
|
#define UNIT_ANSI (1 << UNIT_V_ANSI)
|
||||||
|
|
||||||
|
t_stat tty_svc (UNIT *uptr);
|
||||||
|
t_stat tty_reset (DEVICE *dptr);
|
||||||
|
t_stat ptr_svc (UNIT *uptr);
|
||||||
|
t_stat ptr_reset (DEVICE *dptr);
|
||||||
|
|
||||||
|
/* I/O Data Structures */
|
||||||
|
|
||||||
|
/* TTY, TeleTYpewriter - console input/output
|
||||||
|
*/
|
||||||
|
UNIT tty_unit = { UDATA (&tty_svc, 0, 0), KBD_POLL_WAIT };
|
||||||
|
|
||||||
|
REG tty_reg[] = {
|
||||||
|
{ ORDATA (DATA, tty_unit.buf, 8) },
|
||||||
|
{ ORDATA (STAT, tty_unit.u3, 8) },
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
MTAB tty_mod[] = {
|
||||||
|
{ UNIT_ANSI, 0, "TTY", "TTY", NULL },
|
||||||
|
{ UNIT_ANSI, UNIT_ANSI, "ANSI", "ANSI", NULL },
|
||||||
|
{ 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
DEVICE tty_dev = {
|
||||||
|
"TTY", &tty_unit, tty_reg, tty_mod,
|
||||||
|
1, 10, 31, 1, 8, 8,
|
||||||
|
NULL, NULL, &tty_reset,
|
||||||
|
NULL, NULL, NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/* PTR, Paper Tape Reader - not implemented yet
|
||||||
|
*/
|
||||||
|
UNIT ptr_unit = { UDATA (&ptr_svc, UNIT_SEQ + UNIT_ATTABLE, 0), KBD_POLL_WAIT };
|
||||||
|
|
||||||
|
REG ptr_reg[] = {
|
||||||
|
{ ORDATA (DATA, ptr_unit.buf, 8) },
|
||||||
|
{ ORDATA (STAT, ptr_unit.u3, 8) },
|
||||||
|
{ ORDATA (POS, ptr_unit.pos, T_ADDR_W) },
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
DEVICE ptr_dev = {
|
||||||
|
"PTR", &ptr_unit, ptr_reg, NULL,
|
||||||
|
1, 10, 31, 1, 8, 8,
|
||||||
|
NULL, NULL, &ptr_reset,
|
||||||
|
NULL, NULL, NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Service routines to handle simulator functions */
|
||||||
|
|
||||||
|
/* Service routine for TTY - actually gets char & places in buffer
|
||||||
|
*/
|
||||||
|
t_stat tty_svc (UNIT *uptr)
|
||||||
|
{
|
||||||
|
int32 temp;
|
||||||
|
|
||||||
|
sim_activate (&tty_unit, tty_unit.wait); /* continue poll */
|
||||||
|
if ((temp = sim_poll_kbd ()) < SCPE_KFLAG)
|
||||||
|
return (temp); /* no char or error? */
|
||||||
|
tty_unit.buf = temp & 0377; /* Save char */
|
||||||
|
tty_unit.u3 |= 0x10; /* Set status
|
||||||
|
Flag 5 (bit 3) == 1 */
|
||||||
|
|
||||||
|
/* Do any special character handling here */
|
||||||
|
|
||||||
|
tty_unit.pos++;
|
||||||
|
return SCPE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Service routine for Paper Tape Reader - not implemented yet
|
||||||
|
*/
|
||||||
|
t_stat ptr_svc (UNIT *uptr)
|
||||||
|
{
|
||||||
|
return SCPE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset routines */
|
||||||
|
|
||||||
|
/* Reset routine for TTY
|
||||||
|
*/
|
||||||
|
t_stat tty_reset (DEVICE *dptr)
|
||||||
|
{
|
||||||
|
tty_unit.buf = 0; /* Data */
|
||||||
|
tty_unit.u3 = 0x01; /* Status
|
||||||
|
Flag 1 (bit 0) == 1
|
||||||
|
printer always ready */
|
||||||
|
sim_activate (&tty_unit, tty_unit.wait); /* activate unit */
|
||||||
|
return SCPE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset routine for Paper Tape Reader - not implemented yet
|
||||||
|
*/
|
||||||
|
t_stat ptr_reset (DEVICE *dptr)
|
||||||
|
{
|
||||||
|
ptr_unit.buf = 0;
|
||||||
|
ptr_unit.u3 = 0;
|
||||||
|
sim_cancel (&ptr_unit); /* deactivate unit */
|
||||||
|
return SCPE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* I/O instruction handlers for the 8008 simulator.
|
||||||
|
Called from the CPU module when an IN or OUT instruction is issued.
|
||||||
|
Each function is passed an 'io' flag, where 0 means a read from
|
||||||
|
the port, and 1 means a write to the port. On input, the actual
|
||||||
|
input (io == 0) is passed as the return value,
|
||||||
|
on output (io != 0), 'data' is written to the device.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* I/O instruction handlers for the SCELBI bitbanger serial interface
|
||||||
|
*/
|
||||||
|
int32 ttyin_bitcntr = 0;
|
||||||
|
int32 ttyin_charin = 0;
|
||||||
|
|
||||||
|
/* TTY input routine, assumes 1 start bit, 8 databits and 2 stop bits.
|
||||||
|
the assumed number of INP instructions for each character are 9
|
||||||
|
*/
|
||||||
|
int32 ttyin_d(int32 io, int32 data)
|
||||||
|
{
|
||||||
|
int32 newbit;
|
||||||
|
|
||||||
|
/* if (ttyin_bitcntr != 0) {
|
||||||
|
sim_printf("io: %d, bitcntr: %d, charin: 0%o\n",
|
||||||
|
io, ttyin_bitcntr, ttyin_charin);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
if (io != 0) { /* not an INP instruction */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ttyin_bitcntr == 0) {
|
||||||
|
if (tty_unit.u3 & 0x10) {
|
||||||
|
/* Character available if Flag 5 (bit 4) set */
|
||||||
|
ttyin_charin = tty_unit.buf | 0x80; /* bit 7 always set in SCELBAL */
|
||||||
|
tty_unit.u3 = tty_unit.u3 & 0xEF; /* Reset Flag 5 (bit 4) */
|
||||||
|
ttyin_bitcntr = 1;
|
||||||
|
return (0); /* start bit */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return (0x80); /* no start bit */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ttyin_bitcntr > 7) { /* last data bit */
|
||||||
|
if (ttyin_charin & 1)
|
||||||
|
newbit = 0x80;
|
||||||
|
else
|
||||||
|
newbit = 0x00;
|
||||||
|
ttyin_bitcntr = 0;
|
||||||
|
return (newbit);
|
||||||
|
}
|
||||||
|
if (ttyin_charin & 1)
|
||||||
|
newbit = 0x80;
|
||||||
|
else
|
||||||
|
newbit = 0x00;
|
||||||
|
ttyin_bitcntr++;
|
||||||
|
ttyin_charin = ttyin_charin >> 1;
|
||||||
|
return (newbit);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32 ttyout_bitcntr = 0;
|
||||||
|
int32 ttyout_charout = 0;
|
||||||
|
|
||||||
|
/* TTY output routine, assumes 1 start bit, 8 databits and 2 stop bits.
|
||||||
|
the assumed number of OUT instructions for each character are 10
|
||||||
|
*/
|
||||||
|
int32 ttyout_d(int32 io, int32 data)
|
||||||
|
{
|
||||||
|
int32 newbit;
|
||||||
|
|
||||||
|
/* sim_printf("io: %d, data: 0%o, bit0: %d, bitcntr: %d, charout: 0%o\n",
|
||||||
|
io, data, (data & 1), ttyout_bitcntr, ttyout_charout);
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (io == 0) { /* not an OUT instruction */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ((ttyout_bitcntr == 0) && ((data & 1) == 0)) { /* start bit */
|
||||||
|
ttyout_bitcntr = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ttyout_bitcntr == 8) { /* last bit in character */
|
||||||
|
if (data & 1)
|
||||||
|
newbit = 0x80;
|
||||||
|
else
|
||||||
|
newbit = 0x00;
|
||||||
|
ttyout_charout = ttyout_charout >> 1;
|
||||||
|
ttyout_charout = ttyout_charout | newbit;
|
||||||
|
if (ttyout_charout != 0224) /* avoid printing CTRL-T */
|
||||||
|
sim_putchar(ttyout_charout & 0x7f); /* bit 7 always set in SCELBAL */
|
||||||
|
ttyout_bitcntr++;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ttyout_bitcntr > 8) { /* stop bit */
|
||||||
|
ttyout_charout = 0;
|
||||||
|
ttyout_bitcntr = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (data & 1)
|
||||||
|
newbit = 0x80;
|
||||||
|
else
|
||||||
|
newbit = 0x00;
|
||||||
|
ttyout_charout = ttyout_charout >> 1;
|
||||||
|
ttyout_charout = ttyout_charout | newbit;
|
||||||
|
ttyout_bitcntr++;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* I/O instruction handlers for the master thesis computer hardware.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Get status byte from Flagport
|
||||||
|
*/
|
||||||
|
int32 iostat_s(int32 io, int32 data)
|
||||||
|
{
|
||||||
|
if (io == 0)
|
||||||
|
return (tty_unit.u3);
|
||||||
|
else
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get character from keyboard
|
||||||
|
*/
|
||||||
|
int32 kbd_d(int32 io, int32 data)
|
||||||
|
{
|
||||||
|
if (io == 0) {
|
||||||
|
tty_unit.u3 = tty_unit.u3 & 0xEF; /* Reset Flag 5 (bit 4) */
|
||||||
|
return (tty_unit.buf | 0x80); /* bit 7 always set in SCELBAL */
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Put character to printer
|
||||||
|
*/
|
||||||
|
int32 prt_d(int32 io, int32 data)
|
||||||
|
{
|
||||||
|
if (io != 0) {
|
||||||
|
sim_putchar(data & 0x7f); /* bit 7 always set in SCELBAL */
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* I/O instruction handler for unused ports
|
||||||
|
*/
|
||||||
|
int32 nulldev(int32 flag, int32 data)
|
||||||
|
{
|
||||||
|
if (flag == 0)
|
||||||
|
return (0377);
|
||||||
|
return 0;
|
||||||
|
}
|
97
Intel-Systems/scelbi/scelbi_sys.c
Normal file
97
Intel-Systems/scelbi/scelbi_sys.c
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
|
||||||
|
/* scelbi_sys.c: Intel 8008 CPU system interface for the SCELBI computer.
|
||||||
|
|
||||||
|
Copyright (c) 2017, Hans-Ake Lund
|
||||||
|
|
||||||
|
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
|
||||||
|
ROBERT M SUPNIK 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 Hans-Ake Lund shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings
|
||||||
|
in this Software without prior written authorization from Hans-Ake Lund.
|
||||||
|
|
||||||
|
04-Sep-17 HAL Working version of CPU simulator for SCELBI computer
|
||||||
|
12-Sep-17 HAL Modules restructured in "Intel-Systems" directory
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "system_defs.h"
|
||||||
|
|
||||||
|
extern DEVICE cpu_dev;
|
||||||
|
extern UNIT cpu_unit;
|
||||||
|
extern REG cpu_reg[];
|
||||||
|
extern DEVICE tty_dev;
|
||||||
|
extern DEVICE ptr_dev;
|
||||||
|
extern unsigned char Mem[];
|
||||||
|
extern int32 saved_PCreg;
|
||||||
|
|
||||||
|
/* SCP data structures
|
||||||
|
|
||||||
|
sim_name simulator name string
|
||||||
|
sim_PC pointer to saved PC register descriptor
|
||||||
|
sim_emax number of words needed for examine
|
||||||
|
sim_devices array of pointers to simulated devices
|
||||||
|
sim_stop_messages array of pointers to stop messages
|
||||||
|
sim_load binary loader
|
||||||
|
*/
|
||||||
|
|
||||||
|
char sim_name[] = "SCELBI";
|
||||||
|
|
||||||
|
REG *sim_PC = &cpu_reg[0];
|
||||||
|
|
||||||
|
int32 sim_emax = 4;
|
||||||
|
|
||||||
|
DEVICE *sim_devices[] = {
|
||||||
|
&cpu_dev,
|
||||||
|
&tty_dev,
|
||||||
|
&ptr_dev,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *sim_stop_messages[] = {
|
||||||
|
"Unknown error",
|
||||||
|
"Unknown I/O Instruction",
|
||||||
|
"HALT instruction",
|
||||||
|
"Breakpoint",
|
||||||
|
"Invalid Opcode"
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This is the binary loader. The input file is considered to be
|
||||||
|
a string of literal bytes with no format special format. The
|
||||||
|
load starts at the current value of the PC.
|
||||||
|
*/
|
||||||
|
t_stat sim_load (FILE *fileref, CONST char *cptr, CONST char *fnam, int flag)
|
||||||
|
{
|
||||||
|
int32 i, addr = 0, cnt = 0;
|
||||||
|
|
||||||
|
if (*cptr != 0)
|
||||||
|
return SCPE_ARG;
|
||||||
|
if (flag != 0) {
|
||||||
|
sim_printf ("DUMP command not supported.\n");
|
||||||
|
return SCPE_ARG;
|
||||||
|
}
|
||||||
|
addr = saved_PCreg;
|
||||||
|
while ((i = getc (fileref)) != EOF) {
|
||||||
|
if (addr >= MAXMEMSIZE)
|
||||||
|
return (SCPE_NXM);
|
||||||
|
Mem[addr] = i;
|
||||||
|
addr++;
|
||||||
|
cnt++;
|
||||||
|
} /* end while */
|
||||||
|
sim_printf ("%d Bytes loaded.\n", cnt);
|
||||||
|
return (SCPE_OK);
|
||||||
|
}
|
50
Intel-Systems/scelbi/system_defs.h
Normal file
50
Intel-Systems/scelbi/system_defs.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
/* system_defs.h: Definitions for the SCELBI computer.
|
||||||
|
|
||||||
|
Copyright (c) 2017, Hans-Ake Lund
|
||||||
|
|
||||||
|
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
|
||||||
|
ROBERT M SUPNIK 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 Hans-Ake Lund shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings
|
||||||
|
in this Software without prior written authorization from Hans-Ake Lund.
|
||||||
|
|
||||||
|
04-Sep-17 HAL Working version of SCELBI simulator
|
||||||
|
12-Sep-17 HAL Modules restructured in "Intel-Systems" directory
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "sim_defs.h" /* simulator defines */
|
||||||
|
|
||||||
|
/* Memory */
|
||||||
|
|
||||||
|
#define MAXMEMSIZE 16384 /* max memory size */
|
||||||
|
#define MEMSIZE (cpu_unit.capac) /* actual memory size */
|
||||||
|
#define ADDRMASK (MAXMEMSIZE - 1) /* address mask */
|
||||||
|
#define MEM_ADDR_OK(x) (((uint32) (x)) < MEMSIZE)
|
||||||
|
|
||||||
|
/* Simulator stop codes */
|
||||||
|
|
||||||
|
#define STOP_RSRV 1 /* must be 1 */
|
||||||
|
#define STOP_HALT 2 /* HALT */
|
||||||
|
#define STOP_IBKPT 3 /* breakpoint */
|
||||||
|
#define STOP_OPCODE 4
|
||||||
|
|
||||||
|
/* I/O device entries */
|
||||||
|
struct idev {
|
||||||
|
int32 (*routine)(int32, int32);
|
||||||
|
};
|
|
@ -35,6 +35,8 @@
|
||||||
|
|
||||||
#### CDC 1700 simulator from John Forecast
|
#### CDC 1700 simulator from John Forecast
|
||||||
|
|
||||||
|
#### Hans-Åke Lund has implemented an SCELBI (SCientic-ELectronics-BIology) simulator.
|
||||||
|
|
||||||
### New Host Platform support - HP-UX and AIX
|
### New Host Platform support - HP-UX and AIX
|
||||||
|
|
||||||
### Simulator Front Panel API
|
### Simulator Front Panel API
|
||||||
|
|
|
@ -249,6 +249,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ibmpc", "ibmpc.vcproj", "{7
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ibmpcxt", "ibmpcxt.vcproj", "{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ibmpcxt", "ibmpcxt.vcproj", "{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scelbi", "scelbi.vcproj", "{1E92CC4B-9ED5-4CD4-BD35-061F25126523}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{D40F3AF1-EEE7-4432-9807-2AD287B490F8} = {D40F3AF1-EEE7-4432-9807-2AD287B490F8}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
|
@ -463,6 +468,10 @@ Global
|
||||||
{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}.Debug|Win32.Build.0 = Debug|Win32
|
{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}.Release|Win32.ActiveCfg = Release|Win32
|
{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}.Release|Win32.Build.0 = Release|Win32
|
{0026A4C2-655A-4C03-B6CA-B1EAF79FA4D1}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{1E92CC4B-9ED5-4CD4-BD35-061F25126523}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{1E92CC4B-9ED5-4CD4-BD35-061F25126523}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{1E92CC4B-9ED5-4CD4-BD35-061F25126523}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{1E92CC4B-9ED5-4CD4-BD35-061F25126523}.Release|Win32.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
317
Visual Studio Projects/scelbi.vcproj
Normal file
317
Visual Studio Projects/scelbi.vcproj
Normal file
|
@ -0,0 +1,317 @@
|
||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="9.00"
|
||||||
|
Name="scelbi"
|
||||||
|
ProjectGUID="{1E92CC4B-9ED5-4CD4-BD35-061F25126523}"
|
||||||
|
RootNamespace="scelbi"
|
||||||
|
Keyword="Win32Proj"
|
||||||
|
TargetFrameworkVersion="131072"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="..\BIN\NT\$(PlatformName)-$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="..\BIN\NT\Project\simh\$(ProjectName)\$(PlatformName)-$(ConfigurationName)"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||||
|
CharacterSet="0"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
Description="Check for required build dependencies & git commit id"
|
||||||
|
CommandLine="Pre-Build-Event.cmd LIBPCRE"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="./;../;../Intel-Systems/scelbi/;"../../windows-build/PCRE/include/""
|
||||||
|
PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;SIM_NEED_GIT_COMMIT_ID;HAVE_PCREPOSIX_H;PCRE_STATIC"
|
||||||
|
KeepComments="false"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="0"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
CompileAs="1"
|
||||||
|
ShowIncludes="false"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wsock32.lib winmm.lib pcrestaticd.lib pcreposixstaticd.lib"
|
||||||
|
LinkIncremental="2"
|
||||||
|
AdditionalLibraryDirectories="../../windows-build/PCRE/lib/"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="1"
|
||||||
|
StackReserveSize="10485760"
|
||||||
|
StackCommitSize="10485760"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="..\BIN\NT\$(PlatformName)-$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="..\BIN\NT\Project\simh\$(ProjectName)\$(PlatformName)-$(ConfigurationName)"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||||
|
CharacterSet="0"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
Description="Check for required build dependencies & git commit id"
|
||||||
|
CommandLine="Pre-Build-Event.cmd LIBPCRE"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
OmitFramePointers="true"
|
||||||
|
AdditionalIncludeDirectories="./;../;../Intel-Systems/scelbi/;"../../windows-build/PCRE/include/""
|
||||||
|
PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;SIM_NEED_GIT_COMMIT_ID;HAVE_PCREPOSIX_H;PCRE_STATIC"
|
||||||
|
StringPooling="true"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
CompileAs="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wsock32.lib winmm.lib pcrestatic.lib pcreposixstatic.lib"
|
||||||
|
LinkIncremental="1"
|
||||||
|
AdditionalLibraryDirectories="../../windows-build/PCRE/lib/"
|
||||||
|
GenerateDebugInformation="false"
|
||||||
|
SubSystem="1"
|
||||||
|
StackReserveSize="10485760"
|
||||||
|
StackCommitSize="10485760"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
RandomizedBaseAddress="1"
|
||||||
|
DataExecutionPrevention="0"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\Intel-Systems\common\i8008.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\Intel-Systems\scelbi\scelbi_io.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\Intel-Systems\scelbi\scelbi_sys.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\scp.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_console.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_disk.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_ether.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_fio.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_serial.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_sock.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_tape.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_timer.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_tmxr.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_video.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl;inc"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\scp.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_console.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_defs.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_disk.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_ether.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_fio.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_rev.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_serial.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_sock.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_tape.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_timer.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_tmxr.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\sim_video.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\Intel-Systems\scelbi\system_defs.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
|
>
|
||||||
|
</Filter>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
14
makefile
14
makefile
|
@ -1435,6 +1435,12 @@ IBMPCXT = ${IBMPCXTC}/i8088.c ${IBMPCXTD}/ibmpcxt_sys.c \
|
||||||
IBMPCXT_OPT = -I ${IBMPCXTD}
|
IBMPCXT_OPT = -I ${IBMPCXTD}
|
||||||
|
|
||||||
|
|
||||||
|
SCELBID = Intel-Systems/scelbi
|
||||||
|
SCELBIC = Intel-Systems/common
|
||||||
|
SCELBI = ${SCELBIC}/i8008.c ${SCELBID}/scelbi_sys.c ${SCELBID}/scelbi_io.c
|
||||||
|
SCELBI_OPT = -I ${SCELBID}
|
||||||
|
|
||||||
|
|
||||||
TX0D = TX-0
|
TX0D = TX-0
|
||||||
TX0 = ${TX0D}/tx0_cpu.c ${TX0D}/tx0_dpy.c ${TX0D}/tx0_stddev.c \
|
TX0 = ${TX0D}/tx0_cpu.c ${TX0D}/tx0_dpy.c ${TX0D}/tx0_stddev.c \
|
||||||
${TX0D}/tx0_sys.c ${TX0D}/tx0_sys_orig.c ${DISPLAYL}
|
${TX0D}/tx0_sys.c ${TX0D}/tx0_sys_orig.c ${DISPLAYL}
|
||||||
|
@ -1550,7 +1556,7 @@ ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \
|
||||||
nova eclipse hp2100 hp3000 i1401 i1620 s3 altair altairz80 gri \
|
nova eclipse hp2100 hp3000 i1401 i1620 s3 altair altairz80 gri \
|
||||||
i7094 ibm1130 id16 id32 sds lgp h316 cdc1700 \
|
i7094 ibm1130 id16 id32 sds lgp h316 cdc1700 \
|
||||||
swtp6800mp-a swtp6800mp-a2 tx-0 ssem b5500 isys8010 isys8020 \
|
swtp6800mp-a swtp6800mp-a2 tx-0 ssem b5500 isys8010 isys8020 \
|
||||||
isys8030 isys8024 imds-225
|
isys8030 isys8024 imds-225 scelbi
|
||||||
|
|
||||||
all : ${ALL}
|
all : ${ALL}
|
||||||
|
|
||||||
|
@ -1864,6 +1870,12 @@ ${BIN}ibmpcxt${EXE} : ${IBMPCXT} ${SIM} ${BUILD_ROMS}
|
||||||
${MKDIRBIN}
|
${MKDIRBIN}
|
||||||
${CC} ${IBMPCXT} ${SIM} ${IBMPCXT_OPT} $(CC_OUTSPEC) ${LDFLAGS}
|
${CC} ${IBMPCXT} ${SIM} ${IBMPCXT_OPT} $(CC_OUTSPEC) ${LDFLAGS}
|
||||||
|
|
||||||
|
scelbi: ${BIN}scelbi${EXE}
|
||||||
|
|
||||||
|
${BIN}scelbi${EXE} : ${SCELBI} ${SIM} ${BUILD_ROMS}
|
||||||
|
${MKDIRBIN}
|
||||||
|
${CC} ${SCELBI} ${SIM} ${SCELBI_OPT} $(CC_OUTSPEC) ${LDFLAGS}
|
||||||
|
|
||||||
tx-0 : ${BIN}tx-0${EXE}
|
tx-0 : ${BIN}tx-0${EXE}
|
||||||
|
|
||||||
${BIN}tx-0${EXE} : ${TX0} ${SIM}
|
${BIN}tx-0${EXE} : ${TX0} ${SIM}
|
||||||
|
|
Loading…
Add table
Reference in a new issue