1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-04-05 05:13:22 +00:00

KA10: Added KS10 LP20 printer support.

This commit is contained in:
Richard Cornwell
2022-01-10 23:06:59 -05:00
parent 5d86b4704f
commit d5f6e61be5
4 changed files with 930 additions and 716 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -208,8 +208,8 @@ int
uba_write_npr(t_addr addr, uint16 ctl, uint64 data)
{
int ubm = uba_device[ctl];
t_addr oaddr = addr;
uint32 map = uba_map[ubm][(077) & (addr >> 11)];
t_addr oaddr = addr;
if ((addr & 0400000) != 0)
return 0;
if ((map & MAP_VALID) == 0)
@@ -227,6 +227,7 @@ uba_read_npr_byte(t_addr addr, uint16 ctl, uint16 *data)
{
int ubm = uba_device[ctl];
uint32 map = uba_map[ubm][(077) & (addr >> 11)];
t_addr oaddr = addr;
uint64 wd;
if ((addr & 0400000) != 0)
return 0;
@@ -234,10 +235,12 @@ uba_read_npr_byte(t_addr addr, uint16 ctl, uint16 *data)
return 0;
addr = (map & PAGE_MASK) | (addr >> 2) & 0777;
wd = M[addr];
if (addr & 02)
sim_debug(DEBUG_DATA, &cpu_dev, "RD NPR B %08o %08o %012llo ", oaddr, addr, wd);
if ((oaddr & 02) == 0)
wd >>= 18;
if (addr & 01)
if ((oaddr & 01))
wd >>= 8;
sim_debug(DEBUG_DATA, &cpu_dev, "%03llo ", wd & 0377);
*data = (uint16)(wd & 0377);
return 1;
}
@@ -247,6 +250,7 @@ uba_write_npr_byte(t_addr addr, uint16 ctl, uint16 data)
{
int ubm = uba_device[ctl];
uint32 map = uba_map[ubm][(077) & (addr >> 11)];
t_addr oaddr = addr;
uint64 wd;
uint64 msk;
uint64 buf;
@@ -258,11 +262,11 @@ uba_write_npr_byte(t_addr addr, uint16 ctl, uint16 data)
msk = 0377;
buf = (uint64)(data & msk);
wd = M[addr];
if (addr & 02) {
if ((oaddr & 02) == 0) {
buf <<= 18;
msk <<= 18;
}
if (addr & 01) {
if ((oaddr & 01)) {
buf <<= 8;
msk <<= 8;
}
@@ -277,6 +281,7 @@ uba_read_npr_word(t_addr addr, uint16 ctl, uint16 *data)
{
int ubm = uba_device[ctl];
uint32 map = uba_map[ubm][(077) & (addr >> 11)];
t_addr oaddr = addr;
uint64 wd;
if ((addr & 0400000) != 0)
return 0;
@@ -284,7 +289,7 @@ uba_read_npr_word(t_addr addr, uint16 ctl, uint16 *data)
return 0;
addr = (map & PAGE_MASK) | (addr >> 2) & 0777;
wd = M[addr];
if (addr & 02)
if ((oaddr & 02) == 0)
wd >>= 18;
*data = (uint16)(wd & 0177777);
return 1;
@@ -295,6 +300,7 @@ uba_write_npr_word(t_addr addr, uint16 ctl, uint16 data)
{
int ubm = uba_device[ctl];
uint32 map = uba_map[ubm][(077) & (addr >> 11)];
t_addr oaddr = addr;
uint64 wd;
uint64 msk;
uint64 buf;
@@ -306,7 +312,7 @@ uba_write_npr_word(t_addr addr, uint16 ctl, uint16 data)
msk = 0177777;
buf = (uint64)(data & msk);
wd = M[addr];
if (addr & 02) {
if ((oaddr & 02) == 0) {
buf <<= 18;
msk <<= 18;
}

View File

@@ -460,6 +460,10 @@ extern void restore_pi_hold();
extern void set_pi_hold();
extern UNIT cpu_unit[];
extern UNIT ten11_unit[];
#if KS
extern DEVICE lp20_dev;
extern DEVICE ch11_dev;
#endif
#if KL
extern DEVICE dte_dev;
extern DEVICE lp20_dev;
@@ -739,9 +743,13 @@ extern void ka10_lights_clear_aux (int);
#define NUM_DEVS_NIA 1
#define NUM_DEVS_DN 0
#elif KS
#define NUM_DEVS_LP20 0
#define NUM_DEVS_LP20 1
#define NUM_DEVS_DZ 4
#define NUM_DEVS_TCU 1
#if KS_ITS
#define NUM_DEVS_IMP 0 /* KS_ITS */
#define NUM_DEVS_CH11 0 /* KS_ITS */
#endif
#endif
#if KA | KI
#define NUM_DEVS_RC 1

View File

@@ -2155,7 +2155,8 @@ KL10_OPT = -DKL=1 -DUSE_INT64 -I $(KL10D) ${NETWORK_OPT}
KS10D = ${SIMHD}/PDP10
KS10 = ${KS10D}/kx10_cpu.c ${KS10D}/kx10_sys.c ${KS10D}/kx10_disk.c \
${KS10D}/ks10_cty.c ${KS10D}/ks10_uba.c ${KS10D}/kx10_rh.c \
${KS10D}/kx10_rp.c ${KS10D}/kx10_tu.c ${KS10D}/ks10_dz.c ${KS10D}/ks10_tcu.c
${KS10D}/kx10_rp.c ${KS10D}/kx10_tu.c ${KS10D}/ks10_dz.c \
${KS10D}/ks10_tcu.c ${KS10D}/ks10_lp.c
KS10_OPT = -DKS=1 -DUSE_INT64 -I $(KS10D) ${NETWORK_OPT}
ATT3B2D = ${SIMHD}/3B2