ALTAIR, Interdata, LGP, NOVA: Addition of sim_printf in various places from Bob Supnik
This commit is contained in:
parent
7b3fdf5718
commit
c221e1ff97
16 changed files with 101 additions and 98 deletions
|
@ -24,19 +24,19 @@
|
|||
in this Software without prior written authorization from Charles E. Owen.
|
||||
*/
|
||||
|
||||
#include "sim_defs.h" /* simulator defns */
|
||||
#include "sim_defs.h" /* simulator defns */
|
||||
|
||||
/* Memory */
|
||||
|
||||
#define MAXMEMSIZE 65536 /* max memory size */
|
||||
#define MEMSIZE (cpu_unit.capac) /* actual memory size */
|
||||
#define ADDRMASK (MAXMEMSIZE - 1) /* address mask */
|
||||
#define MAXMEMSIZE 65536 /* 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
|
||||
#define STOP_RSRV 1 /* must be 1 */
|
||||
#define STOP_HALT 2 /* HALT */
|
||||
#define STOP_IBKPT 3 /* breakpoint */
|
||||
#define STOP_OPCODE 4
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ while ((i = getc (fileref)) != EOF) {
|
|||
addr++;
|
||||
cnt++;
|
||||
} /* end while */
|
||||
printf ("%d Bytes loaded.\n", cnt);
|
||||
sim_printf ("%d Bytes loaded.\n", cnt);
|
||||
return (SCPE_OK);
|
||||
}
|
||||
|
||||
|
|
|
@ -1948,7 +1948,7 @@ if (!(val & UNIT_816E) && (MEMSIZE > MAXMEMSIZE16)) {
|
|||
MEMSIZE = MAXMEMSIZE16;
|
||||
for (i = MEMSIZE; i < MAXMEMSIZE16E; i = i + 2)
|
||||
M[i >> 1] = 0;
|
||||
printf ("Reducing memory to 64KB\n");
|
||||
sim_printf ("Reducing memory to 64KB\n");
|
||||
}
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
|
|
@ -496,9 +496,9 @@ uint32 dtype = GET_DTYPE (uptr->flags); /* get drive type */
|
|||
|
||||
if (((uptr->flags & UNIT_ATT) == 0) || /* not attached? */
|
||||
((uptr->flags & UNIT_WPRT) && (dp_cmd == CMC_WR))) {
|
||||
dp_done (STC_DTE); /* error, done */
|
||||
return TRUE;
|
||||
}
|
||||
dp_done (STC_DTE); /* error, done */
|
||||
return TRUE;
|
||||
}
|
||||
hd = GET_SRF (dp_hdsc); /* get head */
|
||||
sc = GET_SEC (dp_hdsc); /* get sector */
|
||||
if (dp_cyl != (uint32) uptr->CYL) { /* wrong cylinder? */
|
||||
|
|
|
@ -578,7 +578,7 @@ switch (uptr->FNC & CMC_MASK) { /* case on func */
|
|||
if ((r = idc_rds (uptr))) /* read sec, err? */
|
||||
return r;
|
||||
idc_1st = 0;
|
||||
sch_wrmem (idc_dib.sch, idcxb, IDC_NUMBY); /* write mem */
|
||||
sch_wrmem (idc_dib.sch, idcxb, IDC_NUMBY); /* write mem */
|
||||
if (sch_actv (idc_dib.sch, idc_dib.dno)) { /* more to do? */
|
||||
sim_activate (uptr, idc_rtime); /* reschedule */
|
||||
return SCPE_OK;
|
||||
|
|
|
@ -204,7 +204,7 @@ if ((temp = getc (uptr->fileref)) == EOF) { /* error? */
|
|||
if (feof (uptr->fileref)) { /* eof? */
|
||||
pt_sta = pt_sta | STA_DU; /* set DU */
|
||||
if (ptr_stopioe)
|
||||
printf ("PTR end of file\n");
|
||||
sim_printf ("PTR end of file\n");
|
||||
else return SCPE_OK;
|
||||
}
|
||||
else perror ("PTR I/O error");
|
||||
|
|
|
@ -501,7 +501,7 @@ do {
|
|||
if ((ch = getc (uptr->fileref)) == EOF) { /* read char */
|
||||
if (feof (uptr->fileref)) { /* err or eof? */
|
||||
if (stop)
|
||||
printf ("Reader end of file\n");
|
||||
sim_printf ("Reader end of file\n");
|
||||
else return SCPE_OK;
|
||||
}
|
||||
else perror ("Reader I/O error");
|
||||
|
@ -516,7 +516,7 @@ do {
|
|||
if ((d1 == EOF) || (d2 == EOF)) { /* error? */
|
||||
if (feof (uptr->fileref)) { /* eof? */
|
||||
if (stop)
|
||||
printf ("Reader end of file\n");
|
||||
sim_printf ("Reader end of file\n");
|
||||
else return SCPE_OK;
|
||||
}
|
||||
else perror ("Reader I/O error");
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* nova_cpu.c: NOVA CPU simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M. Supnik
|
||||
Copyright (c) 1993-2013, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -25,6 +25,7 @@
|
|||
|
||||
cpu Nova central processor
|
||||
|
||||
17-Mar-13 RMS Added clarifying brances to IND_STEP macro (Dave Bryan)
|
||||
04-Jul-07 BKR DEV_SET/CLR macros now used,
|
||||
support for non-existant devices added
|
||||
CPU bootstrap code warning: high-speed devices may not boot properly,
|
||||
|
@ -387,7 +388,6 @@ MTAB cpu_mod[] = {
|
|||
{ UNIT_MSIZE, (24 * 1024), NULL, "24K", &cpu_set_size },
|
||||
{ UNIT_MSIZE, (28 * 1024), NULL, "28K", &cpu_set_size },
|
||||
{ UNIT_MSIZE, (32 * 1024), NULL, "32K", &cpu_set_size },
|
||||
|
||||
{ UNIT_MSIZE, (36 * 1024), NULL, "36K", &cpu_set_size },
|
||||
{ UNIT_MSIZE, (40 * 1024), NULL, "40K", &cpu_set_size },
|
||||
{ UNIT_MSIZE, (44 * 1024), NULL, "44K", &cpu_set_size },
|
||||
|
@ -1206,7 +1206,7 @@ return SCPE_OK;
|
|||
#define BOOT_LEN (sizeof(boot_rom) / sizeof(int32))
|
||||
|
||||
static const int32 boot_rom[] = {
|
||||
0062677, /* IORST ;reset all I/O */
|
||||
0062677, /* IORST ;reset all I/O */
|
||||
0060477, /* READS 0 ;read SR into AC0 */
|
||||
0024026, /* LDA 1,C77 ;get dev mask */
|
||||
0107400, /* AND 0,1 ;isolate dev code */
|
||||
|
|
|
@ -344,7 +344,7 @@ int32 dkp_swait = 100; /* seek latency */
|
|||
int32 dkp_rwait = 100; /* rotate latency */
|
||||
int32 dkp_diagmode = 0; /* diagnostic mode */
|
||||
|
||||
int32 dkp_trace = 0 ;
|
||||
int32 dkp_trace = 0 ;
|
||||
|
||||
DEVICE dkp_dev;
|
||||
int32 dkp (int32 pulse, int32 code, int32 AC);
|
||||
|
@ -545,8 +545,8 @@ switch (code) { /* decode IR<5:7> */
|
|||
}
|
||||
DEV_CLR_DONE( INT_DKP ); /* assume done flags 0 */
|
||||
if ( dkp_sta & STA_DFLGS ) /* done flags = 0? */
|
||||
DEV_SET_DONE( INT_DKP ); /* nope - set done */
|
||||
DEV_UPDATE_INTR; /* update intr */
|
||||
DEV_SET_DONE( INT_DKP ) ; /* nope - set done */
|
||||
DEV_UPDATE_INTR ; /* update intr */
|
||||
break;
|
||||
|
||||
case ioDIB: /* DIB */
|
||||
|
@ -575,12 +575,12 @@ switch (code) { /* decode IR<5:7> */
|
|||
(dtype == TYPE_6097) || /* for 6099 and 6103 */
|
||||
(dtype == TYPE_6103)) && /* if data<0> set, */
|
||||
(AC & 010000) )
|
||||
dkp_diagmode = 1; /* set diagnostic mode */
|
||||
dkp_diagmode = 1; /* set diagnostic mode */
|
||||
break;
|
||||
} /* end switch code */
|
||||
|
||||
u = GET_UNIT(dkp_ussc); /* update current unit */
|
||||
uptr = dkp_dev.units + u ; /* select unit */
|
||||
uptr = dkp_dev.units + u ; /* select unit */
|
||||
dtype = GET_DTYPE (uptr->flags); /* get drive type */
|
||||
|
||||
if ( DKP_TRACE(0) )
|
||||
|
@ -606,7 +606,7 @@ switch (pulse) { /* decode IR<8:9> */
|
|||
dkp_ussc = 010003;
|
||||
}
|
||||
else { /* normal mode ... */
|
||||
if (dkp_go (pulse)) /* do command */
|
||||
if (dkp_go (pulse)) /* do command */
|
||||
break ; /* break if no error */
|
||||
}
|
||||
DEV_CLR_BUSY( INT_DKP ) ; /* clear busy */
|
||||
|
@ -645,8 +645,8 @@ switch (pulse) { /* decode IR<8:9> */
|
|||
break; /* no error - do not set done and status */
|
||||
}
|
||||
|
||||
DEV_SET_DONE( INT_DKP ) ; /* set done */
|
||||
DEV_UPDATE_INTR ; /* update ints */
|
||||
DEV_SET_DONE( INT_DKP ) ; /* set done */
|
||||
DEV_UPDATE_INTR ; /* update ints */
|
||||
dkp_sta = dkp_sta | (STA_SKDN0 >> u); /* set controller seek done */
|
||||
break;
|
||||
} /* end case pulse */
|
||||
|
@ -661,8 +661,8 @@ return rval;
|
|||
|
||||
t_stat dkp_go ( int32 pulse )
|
||||
{
|
||||
UNIT * uptr;
|
||||
int32 oldCyl, u, dtype;
|
||||
UNIT *uptr;
|
||||
int32 oldCyl, u, dtype;
|
||||
|
||||
dkp_sta = dkp_sta & ~STA_EFLGS; /* clear errors */
|
||||
u = GET_UNIT (dkp_ussc); /* get unit number */
|
||||
|
@ -687,10 +687,10 @@ uptr->CYL = GET_CYL (dkp_fccy, dtype) ;
|
|||
|
||||
if ( DKP_TRACE(1) )
|
||||
{
|
||||
int32 xSect ;
|
||||
int32 xSurf ;
|
||||
int32 xCyl ;
|
||||
int32 xCnt ;
|
||||
int32 xSect ;
|
||||
int32 xSurf ;
|
||||
int32 xCyl ;
|
||||
int32 xCnt ;
|
||||
|
||||
xSect = GET_SECT(dkp_ussc, dtype) ;
|
||||
xSurf = GET_SURF(dkp_ussc, dtype) ;
|
||||
|
@ -698,25 +698,25 @@ if ( DKP_TRACE(1) )
|
|||
xCnt = 16 - (GET_COUNT(dkp_ussc)) ;
|
||||
|
||||
fprintf( DKP_TRACE_FP,
|
||||
" [%s:%c %-5s: %3d / %2d / %2d %2d %06o ] \r\n",
|
||||
"DKP",
|
||||
(char) (u + '0'),
|
||||
((uptr->FUNC == FCCY_READ) ?
|
||||
"read"
|
||||
: ((uptr->FUNC == FCCY_WRITE) ?
|
||||
"write"
|
||||
: ((uptr->FUNC == FCCY_SEEK) ?
|
||||
"seek"
|
||||
: "<?>"
|
||||
)
|
||||
" [%s:%c %-5s: %3d / %2d / %2d %2d %06o ] \r\n",
|
||||
"DKP",
|
||||
(char) (u + '0'),
|
||||
((uptr->FUNC == FCCY_READ) ?
|
||||
"read"
|
||||
: ((uptr->FUNC == FCCY_WRITE) ?
|
||||
"write"
|
||||
: ((uptr->FUNC == FCCY_SEEK) ?
|
||||
"seek"
|
||||
: "<?>"
|
||||
)
|
||||
),
|
||||
(unsigned) xCyl,
|
||||
(unsigned) xSurf,
|
||||
(unsigned) xSect,
|
||||
(unsigned) (16 - xCnt),
|
||||
(unsigned) (dkp_ma & 0xFFFF) /* show all 16-bits in case DCH B */
|
||||
) ;
|
||||
)
|
||||
),
|
||||
(unsigned) xCyl,
|
||||
(unsigned) xSurf,
|
||||
(unsigned) xSect,
|
||||
(unsigned) (16 - xCnt),
|
||||
(unsigned) (dkp_ma & 0xFFFF) /* show all 16-bits in case DCH B */
|
||||
) ;
|
||||
}
|
||||
|
||||
|
||||
|
@ -727,7 +727,7 @@ switch (uptr->FUNC) { /* decode command */
|
|||
if (((uptr->flags & UNIT_ATT) == 0) || /* not attached? */
|
||||
((uptr->flags & UNIT_WPRT) && (uptr->FUNC == FCCY_WRITE)))
|
||||
{
|
||||
dkp_sta = dkp_sta | STA_DONE | STA_ERR; /* error */
|
||||
dkp_sta = dkp_sta | STA_DONE | STA_ERR; /* error */
|
||||
}
|
||||
else if ( uptr->CYL >= drv_tab[dtype].cyl ) /* bad cylinder */
|
||||
{
|
||||
|
@ -736,7 +736,7 @@ switch (uptr->FUNC) { /* decode command */
|
|||
else if ( GET_SURF(dkp_ussc, dtype) >= drv_tab[dtype].surf ) /* bad surface */
|
||||
{
|
||||
dkp_sta = dkp_sta | STA_DONE | STA_ERR | STA_UNS; /* older drives may not even do this... */
|
||||
/* dkp_sta = dkp_sta | STA_DONE | STA_ERR | STA_XCY ; /- newer disks give this error */
|
||||
/* dkp_sta = dkp_sta | STA_DONE | STA_ERR | STA_XCY ; /- newer disks give this error */
|
||||
}
|
||||
else if ( GET_SECT(dkp_ussc, dtype) >= drv_tab[dtype].sect ) /* or bad sector? */
|
||||
{
|
||||
|
@ -811,7 +811,7 @@ u = uptr - dkp_dev.units; /* get unit number */
|
|||
if (uptr->FUNC == FCCY_SEEK) { /* seek? */
|
||||
if ( ! (uptr->flags & UNIT_ATT) ) /* not attached? */
|
||||
{
|
||||
dkp_sta = dkp_sta | STA_DONE | STA_ERR; /* error (changed during queue time?) */
|
||||
dkp_sta = dkp_sta | STA_DONE | STA_ERR; /* error (changed during queue time?) */
|
||||
}
|
||||
else if ( uptr->CYL >= drv_tab[dtype].cyl ) /* bad cylinder? */
|
||||
{
|
||||
|
@ -856,7 +856,7 @@ else if ( GET_SURF(dkp_ussc, dtype) >= drv_tab[dtype].surf ) /* bad surface */
|
|||
}
|
||||
else if ( GET_SECT(dkp_ussc, dtype) >= drv_tab[dtype].sect ) /* or bad sector? */
|
||||
{
|
||||
/* dkp_sta = dkp_sta | STA_DONE | STA_ERR | STA_UNS; /- older DG drives do not even give error(!), but we do */
|
||||
/* dkp_sta = dkp_sta | STA_DONE | STA_ERR | STA_UNS; /- older DG drives do not even give error(!), but we do */
|
||||
dkp_sta = dkp_sta | STA_DONE | STA_ERR | STA_XCY ; /* newer disks give this error */
|
||||
}
|
||||
else {
|
||||
|
@ -937,8 +937,8 @@ do {
|
|||
}
|
||||
|
||||
newsect = GET_SECT (dkp_ussc, dtype) + 1 ; /* update next sector */
|
||||
newsurf = GET_SURF (dkp_ussc, dtype) ; /* and next head */
|
||||
/* (count set below) */
|
||||
newsurf = GET_SURF (dkp_ussc, dtype) ; /* and next head */
|
||||
/* (count set below) */
|
||||
DKP_UPDATE_USSC( type, 1, newsurf, newsect )
|
||||
} /* end read/write loop */
|
||||
|
||||
|
@ -973,9 +973,9 @@ t_stat dkp_reset (DEVICE *dptr)
|
|||
int32 u;
|
||||
UNIT *uptr;
|
||||
|
||||
DEV_CLR_BUSY( INT_DKP ) ; /* clear busy */
|
||||
DEV_CLR_DONE( INT_DKP ) ; /* clear done */
|
||||
DEV_UPDATE_INTR ; /* update ints */
|
||||
DEV_CLR_BUSY( INT_DKP ) ; /* clear busy */
|
||||
DEV_CLR_DONE( INT_DKP ) ; /* clear done */
|
||||
DEV_UPDATE_INTR ; /* update ints */
|
||||
dkp_fccy = dkp_ussc = dkp_ma = dkp_sta = 0; /* clear registers */
|
||||
dkp_diagmode = 0; /* clear diagnostic mode */
|
||||
dkp_map = 0;
|
||||
|
|
|
@ -149,12 +149,12 @@
|
|||
#define STA_MON (STA_REW | STA_BOT | STA_WLK | STA_RDY | \
|
||||
STA_PEM) /* set status chg */
|
||||
|
||||
extern uint16 M[];
|
||||
extern UNIT cpu_unit;
|
||||
extern int32 int_req, dev_busy, dev_done, dev_disable;
|
||||
extern int32 SR, AMASK;
|
||||
extern uint16 M[];
|
||||
extern UNIT cpu_unit;
|
||||
extern int32 int_req, dev_busy, dev_done, dev_disable;
|
||||
extern int32 SR, AMASK;
|
||||
|
||||
extern t_stat cpu_boot(int32 unitno, DEVICE * dptr ) ;
|
||||
extern t_stat cpu_boot(int32 unitno, DEVICE * dptr ) ;
|
||||
|
||||
|
||||
int32 mta_ma = 0; /* memory address */
|
||||
|
@ -496,7 +496,7 @@ if (change) {
|
|||
/* if (mta_ep) { *//* if polling */
|
||||
/* u = uptr - mta_dev.units; *//* unit num */
|
||||
/* mta_sta = (mta_sta & ~STA_UNIT) | (u << STA_V_UNIT); */
|
||||
/* set polling interupt... */
|
||||
/* set polling interupt... */
|
||||
/* } */
|
||||
mta_sta = mta_sta | STA_CHG; /* flag change */
|
||||
}
|
||||
|
@ -642,4 +642,4 @@ t_stat mta_boot (int32 unitno, DEVICE *dptr)
|
|||
cpu_boot( unitno, dptr ) ;
|
||||
SR = 0100000 + DEV_MTA ;
|
||||
return ( SCPE_OK );
|
||||
} /* end of 'mta_boot' */
|
||||
} /* end of 'mta_boot' */
|
||||
|
|
|
@ -54,7 +54,7 @@ t_stat plt_svc (UNIT *uptr);
|
|||
t_stat plt_reset (DEVICE *dptr);
|
||||
|
||||
|
||||
/* 7 or 8 bit data mask support for either device */
|
||||
/* 7 or 8 bit data mask support for either device */
|
||||
|
||||
#define UNIT_V_8B (UNIT_V_UF + 0) /* 8b output */
|
||||
#define UNIT_8B (1 << UNIT_V_8B)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* nova_pt.c: NOVA paper tape read/punch simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M. Supnik
|
||||
Copyright (c) 1993-2015, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -26,6 +26,7 @@
|
|||
ptr paper tape reader
|
||||
ptp paper tape punch
|
||||
|
||||
28-Mar-15 RMS Revised to use sim_printf
|
||||
04-Jul-07 BKR added PTR and PTP device DISABLE capability,
|
||||
added 7B/8B support PTR and PTP (default is 8B),
|
||||
DEV_SET/CLR macros now used,
|
||||
|
@ -45,10 +46,10 @@ Notes:
|
|||
|
||||
#include "nova_defs.h"
|
||||
|
||||
extern int32 int_req, dev_busy, dev_done, dev_disable ;
|
||||
extern int32 SR ;
|
||||
extern int32 int_req, dev_busy, dev_done, dev_disable ;
|
||||
extern int32 SR ;
|
||||
|
||||
extern t_stat cpu_boot(int32 unitno, DEVICE * dptr ) ;
|
||||
extern t_stat cpu_boot(int32 unitno, DEVICE * dptr ) ;
|
||||
|
||||
|
||||
int32 ptr_stopioe = 0, ptp_stopioe = 0; /* stop on error */
|
||||
|
@ -62,7 +63,7 @@ t_stat ptp_reset (DEVICE *dptr);
|
|||
t_stat ptr_boot (int32 unitno, DEVICE *dptr);
|
||||
|
||||
|
||||
/* 7 or 8 bit data mask support for either device */
|
||||
/* 7 or 8 bit data mask support for either device */
|
||||
|
||||
#define UNIT_V_8B (UNIT_V_UF + 0) /* 8b output */
|
||||
#define UNIT_8B (1 << UNIT_V_8B)
|
||||
|
@ -193,7 +194,7 @@ if ((ptr_unit.flags & UNIT_ATT) == 0) /* attached? */
|
|||
if ((temp = getc (ptr_unit.fileref)) == EOF) { /* end of file? */
|
||||
if (feof (ptr_unit.fileref)) {
|
||||
if (ptr_stopioe)
|
||||
printf ("PTR end of file\n");
|
||||
sim_printf ("PTR end of file\n");
|
||||
else return SCPE_OK;
|
||||
}
|
||||
else perror ("PTR I/O error");
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* nova_qty.c: NOVA multiplexor (QTY/ALM) simulator
|
||||
|
||||
Copyright (c) 2000-2008, Robert M. Supnik
|
||||
Copyright (c) 2000-2015, Robert M. Supnik
|
||||
Written by Bruce Ray and used with his gracious permission.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
@ -26,7 +26,9 @@
|
|||
|
||||
qty multiplexor: QTY = 4060, ALM = 42xx
|
||||
|
||||
04-Jul-07 BKR fixed QTY output line number calculation (affected higher line numbers),
|
||||
28-Mar-15 RMS Revised to use sim_printf
|
||||
14-Mar-12 RMS Fixed dangling else clauses
|
||||
04-Jul-07 BKR Fixed QTY output line number calculation (affected higher line numbers),
|
||||
25-Mar-04 RMS Updated for V3.2
|
||||
12-Jan-04 BKR Initial release
|
||||
includes both original DG "quad" multiplexor (QTY)
|
||||
|
@ -626,7 +628,7 @@ t_stat qty_common_svc( DIB * dibp, UNIT * unitp )
|
|||
|
||||
sim_activate( unitp, tmxr_poll ) ; /* restart the bubble machine */
|
||||
return ( SCPE_OK ) ;
|
||||
} /* end of 'qty_common_svc' */
|
||||
} /* end of 'qty_common_svc' */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
|
@ -636,7 +638,7 @@ t_stat qty_common_svc( DIB * dibp, UNIT * unitp )
|
|||
t_stat qty_svc( UNIT * uptr )
|
||||
{
|
||||
return ( qty_common_svc(&qty_dib,uptr) ) ;
|
||||
} /* end of 'qty_svc' */
|
||||
} /* end of 'qty_svc' */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
|
@ -996,13 +998,13 @@ int32 alm( int32 pulse, int32 code, int32 AC )
|
|||
/* get modem section status */
|
||||
if ( qty_ldsc[ alm_line ].xmte )
|
||||
{
|
||||
iodata = 0035 ; /* set CD, CTS, DSR, MDM flags */
|
||||
iodata = 0035 ; /* set CD, CTS, DSR, MDM flags */
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* get receiver section status */
|
||||
iodata = 0 ; /* receiver error status - no errors by default */
|
||||
iodata = 0 ; /* receiver error status - no errors by default */
|
||||
}
|
||||
}
|
||||
break ;
|
||||
|
|
|
@ -176,11 +176,11 @@ internal state machine:
|
|||
|
||||
t_stat sim_load (FILE *fileref, char *cptr, char *fnam, int flag)
|
||||
{
|
||||
int32 data, csum, count, state, i;
|
||||
int32 origin;
|
||||
int pos ;
|
||||
int block_start ;
|
||||
int done ;
|
||||
int32 data, csum, count, state, i;
|
||||
int32 origin;
|
||||
int pos ;
|
||||
int block_start ;
|
||||
int done ;
|
||||
|
||||
if ((*cptr != 0) || (flag != 0))
|
||||
return ( SCPE_ARG ) ;
|
||||
|
@ -223,11 +223,11 @@ for ( pos = 0 ; (! done) && ((i=getc(fileref)) != EOF) ; ++pos )
|
|||
/* do any auto-start check or inhibit check */
|
||||
saved_PC = (origin & 077777) ; /* 0B0 = auto-start program */
|
||||
/* 1B0 = do not auto start */
|
||||
state = 0 ; /* indicate okay state */
|
||||
done = 1 ; /* we're done! */
|
||||
state = 0 ; /* indicate okay state */
|
||||
done = 1 ; /* we're done! */
|
||||
if ( ! (origin & 0x8000) )
|
||||
{
|
||||
printf( "auto start @ %05o \n", (origin & 0x7FFF) ) ;
|
||||
sim_printf( "auto start @ %05o \n", (origin & 0x7FFF) ) ;
|
||||
}
|
||||
break ;
|
||||
}
|
||||
|
@ -275,8 +275,8 @@ for ( pos = 0 ; (! done) && ((i=getc(fileref)) != EOF) ; ++pos )
|
|||
if (count == 0) {
|
||||
if ( csum )
|
||||
{
|
||||
printf( "checksum error: block start at %d [0x%x] \n", block_start, block_start ) ;
|
||||
printf( "calculated: 0%o [0x%4x]\n", csum, csum ) ;
|
||||
sim_printf( "checksum error: block start at %d [0x%x] \n", block_start, block_start ) ;
|
||||
sim_printf( "calculated: 0%o [0x%4x]\n", csum, csum ) ;
|
||||
if ( ! (sim_switches & SWMASK('I')) )
|
||||
return SCPE_CSUM;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* nova_tt.c: NOVA console terminal simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M. Supnik
|
||||
Copyright (c) 1993-2015, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -26,6 +26,7 @@
|
|||
tti terminal input
|
||||
tto terminal output
|
||||
|
||||
31-Mar-15 RMS Backported parity capability from GitHub master
|
||||
04-Jul-07 BKR fixed Dasher CR/LF swap function in 'tti_svc()',
|
||||
DEV_SET/CLR macros now used,
|
||||
TTO device may now be DISABLED
|
||||
|
@ -40,7 +41,6 @@
|
|||
31-May-01 RMS Added multiconsole support
|
||||
|
||||
Notes:
|
||||
- TTO output is always masked to 7 bits in this rev
|
||||
- TTO "Dasher" attribute sends '\b' to console instead of '\031'
|
||||
- TTO may be disabled
|
||||
- TTI "Dasher" attribute swaps <CR> and <LF>
|
||||
|
@ -90,10 +90,10 @@ REG tti_reg[] = {
|
|||
MTAB ttx_mod[] = {
|
||||
{ UNIT_DASHER, 0, "ANSI", "ANSI", &ttx_setmod },
|
||||
{ UNIT_DASHER, UNIT_DASHER, "Dasher", "DASHER", &ttx_setmod },
|
||||
{ TT_PAR, TT_PAR_EVEN, "Even Parity", "EVEN", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_ODD, "Odd Parity", "ODD", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_MARK, "Mark Parity", "MARK", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_SPACE, "No Parity", "NONE", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_EVEN, "even parity", "EVEN", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_ODD, "odd parity", "ODD", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_MARK, "mark parity", "MARK", &ttx_setpar },
|
||||
{ TT_PAR, TT_PAR_SPACE, "no parity", "NONE", &ttx_setpar },
|
||||
{ 0 }
|
||||
} ;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue