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:
@@ -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)) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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_ */
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -121,8 +121,3 @@ int chan_cmd(uint16 dev, uint16 cmd, uint32 addr);
|
||||
/* S - Floating sub */
|
||||
/* M - Floating mul */
|
||||
/* D - Floating div */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user