1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-04-17 08:41:20 +00:00

I7000: Cleanup. Fixed IOCheck on I7090.

Moved external definitions to i7000_defs.h. Fixed magtape controller
to not cause IO Check under Ibsys.
This commit is contained in:
Richard Cornwell
2016-06-04 23:10:59 -04:00
parent b3ba69568b
commit 2122b6f021
9 changed files with 37 additions and 67 deletions

View File

@@ -67,20 +67,6 @@
#define URCSTA_NOXFER 01000 /* Don't set up to transfer after feed */
#define URCSTA_LOAD 01000 /* Load flag for 7070 card reader */
extern int32 sim_interval;
extern void chan_clear_attn_inq(int chan);
extern void chan_set_attn_inq(int chan);
#ifdef I7070
extern void chan_set_attn_a(int chan);
extern void chan_set_attn_b(int chan);
#endif
extern uint8 lpr_chan9[NUM_CHAN];
#ifdef I7010
extern void chan_set_attn_urec(int chan, uint16 addr);
extern uint8 lpr_chan12[NUM_CHAN];
#endif
uint32 cdp_cmd(UNIT *, uint16, uint16);
void cdp_ini(UNIT *, t_bool);
t_stat cdp_srv(UNIT *);
@@ -271,7 +257,7 @@ cdp_srv(UNIT *uptr) {
struct _card_data *data;
uint8 ch = 0;
data = (struct _card_data *)uptr->u3;
data = (struct _card_data *)uptr->up7;
#ifdef I7080
switch(chan_read_char(chan, &ch, 0)) {

View File

@@ -67,19 +67,6 @@
#define URCSTA_NOXFER 01000 /* Don't set up to transfer after feed */
#define URCSTA_LOAD 01000 /* Load flag for 7070 card reader */
extern int32 sim_interval;
extern void chan_clear_attn_inq(int chan);
extern void chan_set_attn_inq(int chan);
#ifdef I7070
extern void chan_set_attn_a(int chan);
extern void chan_set_attn_b(int chan);
#endif
extern uint8 lpr_chan9[NUM_CHAN];
#ifdef I7010
extern void chan_set_attn_urec(int chan, uint16 addr);
extern uint8 lpr_chan12[NUM_CHAN];
#endif
uint32 cdr_cmd(UNIT *, uint16, uint16);
t_stat cdr_boot(int32, DEVICE *);
t_stat cdr_srv(UNIT *);
@@ -198,6 +185,8 @@ cdr_srv(UNIT *uptr) {
int u = (uptr - cdr_unit);
struct _card_data *data;
data = (struct _card_data *)uptr->up7;
/* Waiting for disconnect */
if (uptr->u5 & URCSTA_WDISCO) {
if (chan_stat(chan, DEV_DISCO)) {
@@ -266,7 +255,6 @@ cdr_srv(UNIT *uptr) {
if (uptr->u5 & URCSTA_READ && uptr->u4 < 80) {
uint8 ch = 0;
data = (struct _card_data *)uptr->u3;
#ifdef I7080
/* Detect RSU */
if (data->image[uptr->u4] == 0x924) {

View File

@@ -65,19 +65,6 @@
#define URCSTA_NOXFER 01000 /* Don't set up to transfer after feed */
#define URCSTA_LOAD 01000 /* Load flag for 7070 card reader */
extern int32 sim_interval;
extern void chan_clear_attn_inq(int chan);
extern void chan_set_attn_inq(int chan);
#ifdef I7070
extern void chan_set_attn_a(int chan);
extern void chan_set_attn_b(int chan);
#endif
extern uint8 lpr_chan9[NUM_CHAN];
#ifdef I7010
extern void chan_set_attn_urec(int chan, uint16 addr);
extern uint8 lpr_chan12[NUM_CHAN];
#endif
struct _con_data
{
uint8 ibuff[145]; /* Input line buffer */

View File

@@ -267,13 +267,17 @@ extern DEBTAB dev_debug[];
#define UNIT_V_SET (UNIT_V_UF + 7)
#define CHAN_SET (1 << UNIT_V_SET)
extern t_value assembly[NUM_CHAN]; /* Assembly register */
extern t_value assembly[NUM_CHAN]; /* Assembly register */
/* I/O routine functions */
/* Channel half of controls */
/* Channel status */
extern uint32 chan_flags[NUM_CHAN]; /* Channel flags */
extern char *chname[NUM_CHAN]; /* Channel names */
extern char *chname[NUM_CHAN]; /* Channel names */
extern int num_devs[NUM_CHAN]; /* Number devices per channel*/
extern uint8 lpr_chan9[NUM_CHAN];
#ifdef I7010
extern uint8 lpr_chan12[NUM_CHAN];
#endif
/* Sense information for 7909 channels */
#define SNS_IOCHECK 0x00000400 /* IO Check */
@@ -371,6 +375,23 @@ void chan9_set_error(int chan, uint32 mask);
void chan_proc();
#ifdef I7010
/* Sets the device that will interrupt on the channel. */
t_stat set_urec(UNIT * uptr, int32 val, CONST char *cptr, void *desc);
t_stat get_urec(FILE * st, UNIT * uptr, int32 v, CONST void *desc);
/* Execute the next channel instruction. */
void chan_set_attn_urec(int chan, uint16 addr);
void chan_set_attn_inq(int chan);
void chan_clear_attn_inq(int chan);
#endif
#ifdef I7070
void chan_set_attn_a(int chan);
void chan_set_attn_b(int chan);
void chan_set_attn_inq(int chan);
void chan_clear_attn_inq(int chan);
#endif
/* Convert micro seconds to click ticks */
#define us_to_ticks(us) (((us) * 10) / cycle_time)
@@ -583,4 +604,7 @@ extern UNIT chan_unit[];
extern REG cpu_reg[];
extern int cycle_time;
#endif /* _I7000_H_ */

View File

@@ -67,19 +67,6 @@
#define URCSTA_NOXFER 01000 /* Don't set up to transfer after feed */
#define URCSTA_LOAD 01000 /* Load flag for 7070 card reader */
extern int32 sim_interval;
extern void chan_clear_attn_inq(int chan);
extern void chan_set_attn_inq(int chan);
#ifdef I7070
extern void chan_set_attn_a(int chan);
extern void chan_set_attn_b(int chan);
#endif
extern uint8 lpr_chan9[NUM_CHAN];
#ifdef I7010
extern void chan_set_attn_urec(int chan, uint16 addr);
extern uint8 lpr_chan12[NUM_CHAN];
#endif
struct _lpr_data
{

View File

@@ -678,6 +678,9 @@ t_stat mt_srv(UNIT * uptr)
extern uint8 astmode;
#endif
/* Call channel proccess to make sure data is ready */
chan_proc();
/* Channel has disconnected, abort current read. */
if ((mt_chan[chan] & 037) == (MTC_SEL | unit) &&
chan_stat(chan, DEV_DISCO)) {

View File

@@ -121,8 +121,3 @@ int chan_cmd(uint16 dev, uint16 cmd, uint32 addr);
/* S - Floating sub */
/* M - Floating mul */
/* D - Floating div */

View File

@@ -1183,22 +1183,22 @@ chan_fetch(int chan)
chan, loc, op[chan], cmd[chan], caddr[chan], limit[chan]);
}
void chan_set_attn_a(chan) {
void chan_set_attn_a(int chan) {
pri_latchs[0] |= 0x002;
}
void chan_set_attn_b(chan) {
void chan_set_attn_b(int chan) {
pri_latchs[0] |= 0x004;
}
void chan_set_attn_inq(chan) {
void chan_set_attn_inq(int chan) {
if (chan == CHAN_UREC)
pri_latchs[0] |= 0x080;
else
pri_latchs[0] |= 0x100;
}
void chan_clear_attn_inq(chan) {
void chan_clear_attn_inq(int chan) {
if (chan == CHAN_UREC)
pri_latchs[0] &= ~0x080;
else

View File

@@ -25,7 +25,7 @@ LDFLAGS = -lm -lwsock32
#NETWORK_OPT = -DUSE_NETWORK -lwpcap -lpacket
#endif
#endif
CC=gcc -g -D_GNU_SOURCE -I.
CC=gcc -g -D_GNU_SOURCE -I. -DUSE_SIM_CARD
LDFLAGS = -lm -lrt