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:
1613
PDP10/ks10_lp.c
1613
PDP10/ks10_lp.c
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
3
makefile
3
makefile
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user