Cleaned up parameter declarations in all simulators to achieve clean compiles on all platforms
Very minor in all cases, but the strange case of swtp_cpu.c This module used expressions of the form: PC = ++PC & ADDRMASK; Officially, the C language says that expressions which modify the same variable in more than one place have undefined behavior. These were changed to the legal form which performs the desired action: PC = (PC + 1) & ADDRMASK;
This commit is contained in:
parent
eb514e2a8d
commit
a6964f849d
32 changed files with 126 additions and 125 deletions
|
@ -141,7 +141,7 @@ device addresses, if a device is plugged to a port it's routine
|
||||||
address is here, 'nulldev' means no device is available
|
address is here, 'nulldev' means no device is available
|
||||||
*/
|
*/
|
||||||
struct idev {
|
struct idev {
|
||||||
int32 (*routine)();
|
int32 (*routine)(int32, int32);
|
||||||
};
|
};
|
||||||
struct idev dev_table[256] = {
|
struct idev dev_table[256] = {
|
||||||
{&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /* 000 */
|
{&nulldev}, {&nulldev}, {&nulldev}, {&nulldev}, /* 000 */
|
||||||
|
|
|
@ -122,7 +122,7 @@ DEVICE ptp_dev = {
|
||||||
|
|
||||||
/* service routine - actually gets char & places in buffer */
|
/* service routine - actually gets char & places in buffer */
|
||||||
|
|
||||||
int32 sio_svc (UNIT *uptr)
|
t_stat sio_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
int32 temp;
|
int32 temp;
|
||||||
|
|
||||||
|
@ -139,12 +139,12 @@ int32 sio_svc (UNIT *uptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int32 ptr_svc (UNIT *uptr)
|
t_stat ptr_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 ptp_svc (UNIT *uptr)
|
t_stat ptp_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ int32 ptp_svc (UNIT *uptr)
|
||||||
|
|
||||||
/* Reset routine */
|
/* Reset routine */
|
||||||
|
|
||||||
int32 sio_reset (DEVICE *dptr)
|
t_stat sio_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
sio_unit.buf = 0; /* Data */
|
sio_unit.buf = 0; /* Data */
|
||||||
sio_unit.u3 = 0x02; /* Status */
|
sio_unit.u3 = 0x02; /* Status */
|
||||||
|
@ -161,7 +161,7 @@ int32 sio_reset (DEVICE *dptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int32 ptr_reset (DEVICE *dptr)
|
t_stat ptr_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
ptr_unit.buf = 0;
|
ptr_unit.buf = 0;
|
||||||
ptr_unit.u3 = 0x02;
|
ptr_unit.u3 = 0x02;
|
||||||
|
@ -169,7 +169,7 @@ int32 ptr_reset (DEVICE *dptr)
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 ptp_reset (DEVICE *dptr)
|
t_stat ptp_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
ptp_unit.buf = 0;
|
ptp_unit.buf = 0;
|
||||||
ptp_unit.u3 = 0x02;
|
ptp_unit.u3 = 0x02;
|
||||||
|
|
|
@ -507,10 +507,10 @@ typedef struct {
|
||||||
int32 sio_can_read; /* bit mask to indicate that one can read from this port */
|
int32 sio_can_read; /* bit mask to indicate that one can read from this port */
|
||||||
int32 sio_cannot_read; /* bit mask to indicate that one cannot read from this port */
|
int32 sio_cannot_read; /* bit mask to indicate that one cannot read from this port */
|
||||||
int32 sio_can_write; /* bit mask to indicate that one can write to this port */
|
int32 sio_can_write; /* bit mask to indicate that one can write to this port */
|
||||||
int32 hasReset; /* TRUE iff SIO has reset command */
|
t_bool hasReset; /* TRUE iff SIO has reset command */
|
||||||
int32 sio_reset; /* reset command */
|
int32 sio_reset; /* reset command */
|
||||||
int32 hasOUT; /* TRUE iff port supports OUT command */
|
t_bool hasOUT; /* TRUE iff port supports OUT command */
|
||||||
int32 isBuiltin; /* TRUE iff mapping is built in */
|
t_bool isBuiltin; /* TRUE iff mapping is built in */
|
||||||
} SIO_PORT_INFO;
|
} SIO_PORT_INFO;
|
||||||
|
|
||||||
static SIO_PORT_INFO port_table[PORT_TABLE_SIZE] = {
|
static SIO_PORT_INFO port_table[PORT_TABLE_SIZE] = {
|
||||||
|
|
|
@ -632,8 +632,8 @@ static int32 doWrite(void) {
|
||||||
hdskbuf[i] = GetBYTEWrapper(selectedDMA + i);
|
hdskbuf[i] = GetBYTEWrapper(selectedDMA + i);
|
||||||
rtn = sim_fwrite(hdskbuf, 1, uptr -> HDSK_SECTOR_SIZE, uptr -> fileref);
|
rtn = sim_fwrite(hdskbuf, 1, uptr -> HDSK_SECTOR_SIZE, uptr -> fileref);
|
||||||
if (rtn != (size_t)(uptr -> HDSK_SECTOR_SIZE)) {
|
if (rtn != (size_t)(uptr -> HDSK_SECTOR_SIZE)) {
|
||||||
TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not write Sector=%02d Track=%04d Result=%zd." NLP,
|
TRACE_PRINT(VERBOSE_MSG, ("HDSK%d: " ADDRESS_FORMAT " Could not write Sector=%02d Track=%04d Result=%d." NLP,
|
||||||
selectedDisk, PCX, selectedSector, selectedTrack, rtn));
|
selectedDisk, PCX, selectedSector, selectedTrack, (int)rtn));
|
||||||
return CPM_ERROR;
|
return CPM_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -475,8 +475,8 @@ static char *messages[0x20] = {
|
||||||
uint8 I8272_Write(const uint32 Addr, uint8 cData)
|
uint8 I8272_Write(const uint32 Addr, uint8 cData)
|
||||||
{
|
{
|
||||||
I8272_DRIVE_INFO *pDrive;
|
I8272_DRIVE_INFO *pDrive;
|
||||||
unsigned int flags = 0;
|
uint32 flags = 0;
|
||||||
unsigned int readlen;
|
uint32 readlen;
|
||||||
uint8 disk_read = 0;
|
uint8 disk_read = 0;
|
||||||
int32 i;
|
int32 i;
|
||||||
|
|
||||||
|
|
|
@ -421,8 +421,8 @@ static uint8 MFDC_Read(const uint32 Addr)
|
||||||
if(mfdc_info->datacount == 0) {
|
if(mfdc_info->datacount == 0) {
|
||||||
unsigned int i, checksum;
|
unsigned int i, checksum;
|
||||||
unsigned long sec_offset;
|
unsigned long sec_offset;
|
||||||
unsigned int flags;
|
uint32 flags;
|
||||||
unsigned int readlen;
|
uint32 readlen;
|
||||||
|
|
||||||
/* Clear out unused portion of sector. */
|
/* Clear out unused portion of sector. */
|
||||||
memset(&sdata.u.unused[0], 0x00, 10);
|
memset(&sdata.u.unused[0], 0x00, 10);
|
||||||
|
@ -524,8 +524,8 @@ static uint8 MFDC_Read(const uint32 Addr)
|
||||||
static uint8 MFDC_Write(const uint32 Addr, uint8 cData)
|
static uint8 MFDC_Write(const uint32 Addr, uint8 cData)
|
||||||
{
|
{
|
||||||
unsigned int sec_offset;
|
unsigned int sec_offset;
|
||||||
unsigned int flags = 0;
|
uint32 flags = 0;
|
||||||
unsigned int writelen;
|
uint32 writelen;
|
||||||
MFDC_DRIVE_INFO *pDrive;
|
MFDC_DRIVE_INFO *pDrive;
|
||||||
|
|
||||||
pDrive = &mfdc_info->drive[mfdc_info->sel_drive];
|
pDrive = &mfdc_info->drive[mfdc_info->sel_drive];
|
||||||
|
|
|
@ -547,7 +547,7 @@ static void VFDHD_Command(void)
|
||||||
|
|
||||||
if(vfdhd_info->read == 1) { /* Perform a Read operation */
|
if(vfdhd_info->read == 1) { /* Perform a Read operation */
|
||||||
unsigned int i, checksum;
|
unsigned int i, checksum;
|
||||||
unsigned int readlen;
|
uint32 readlen;
|
||||||
|
|
||||||
TRACE_PRINT(RD_DATA_MSG, ("VFDHD: " ADDRESS_FORMAT " RD: Drive=%d, Track=%d, Head=%d, Sector=%d" NLP,
|
TRACE_PRINT(RD_DATA_MSG, ("VFDHD: " ADDRESS_FORMAT " RD: Drive=%d, Track=%d, Head=%d, Sector=%d" NLP,
|
||||||
PCX,
|
PCX,
|
||||||
|
@ -619,7 +619,7 @@ static void VFDHD_Command(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { /* Perform a Write operation */
|
} else { /* Perform a Write operation */
|
||||||
unsigned int writelen;
|
uint32 writelen;
|
||||||
|
|
||||||
TRACE_PRINT(WR_DATA_MSG, ("VFDHD: " ADDRESS_FORMAT " WR: Drive=%d, Track=%d, Head=%d, Sector=%d" NLP,
|
TRACE_PRINT(WR_DATA_MSG, ("VFDHD: " ADDRESS_FORMAT " WR: Drive=%d, Track=%d, Head=%d, Sector=%d" NLP,
|
||||||
PCX,
|
PCX,
|
||||||
|
|
|
@ -445,8 +445,8 @@ uint8 WD179X_Read(const uint32 Addr)
|
||||||
{
|
{
|
||||||
uint8 cData;
|
uint8 cData;
|
||||||
WD179X_DRIVE_INFO *pDrive;
|
WD179X_DRIVE_INFO *pDrive;
|
||||||
unsigned int flags = 0;
|
uint32 flags = 0;
|
||||||
unsigned int readlen;
|
uint32 readlen;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if(wd179x_info->sel_drive >= WD179X_MAX_DRIVES) {
|
if(wd179x_info->sel_drive >= WD179X_MAX_DRIVES) {
|
||||||
|
@ -578,8 +578,8 @@ static uint8 Do1793Command(uint8 cCommand)
|
||||||
{
|
{
|
||||||
uint8 result = 0;
|
uint8 result = 0;
|
||||||
WD179X_DRIVE_INFO *pDrive;
|
WD179X_DRIVE_INFO *pDrive;
|
||||||
unsigned int flags = 0;
|
uint32 flags = 0;
|
||||||
unsigned int readlen;
|
uint32 readlen;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if(wd179x_info->sel_drive >= WD179X_MAX_DRIVES) {
|
if(wd179x_info->sel_drive >= WD179X_MAX_DRIVES) {
|
||||||
|
@ -955,8 +955,8 @@ uint8 WD179X_Write(const uint32 Addr, uint8 cData)
|
||||||
{
|
{
|
||||||
WD179X_DRIVE_INFO *pDrive;
|
WD179X_DRIVE_INFO *pDrive;
|
||||||
/* uint8 disk_read = 0; */
|
/* uint8 disk_read = 0; */
|
||||||
unsigned int flags = 0;
|
uint32 flags = 0;
|
||||||
unsigned int writelen;
|
uint32 writelen;
|
||||||
|
|
||||||
if(wd179x_info->sel_drive >= WD179X_MAX_DRIVES) {
|
if(wd179x_info->sel_drive >= WD179X_MAX_DRIVES) {
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
|
|
|
@ -197,7 +197,7 @@ int32 int_mask; /* current active interrupt mask (ipl sensitive) */
|
||||||
int32 mem_mask; /* mask for memory address bits based on current memory size */
|
int32 mem_mask; /* mask for memory address bits based on current memory size */
|
||||||
int32 cpu_dsw = 0; /* CPU device status word */
|
int32 cpu_dsw = 0; /* CPU device status word */
|
||||||
int32 ibkpt_addr = -1; /* breakpoint addr */
|
int32 ibkpt_addr = -1; /* breakpoint addr */
|
||||||
int32 sim_gui = TRUE; /* enable gui */
|
t_bool sim_gui = TRUE; /* enable gui */
|
||||||
t_bool running = FALSE; /* TRUE if CPU is running */
|
t_bool running = FALSE; /* TRUE if CPU is running */
|
||||||
t_bool power = TRUE; /* TRUE if CPU power is on */
|
t_bool power = TRUE; /* TRUE if CPU power is on */
|
||||||
t_bool cgi = FALSE; /* TRUE if we are running as a CGI program */
|
t_bool cgi = FALSE; /* TRUE if we are running as a CGI program */
|
||||||
|
@ -222,7 +222,7 @@ t_stat cpu_set_type (UNIT *uptr, int32 value, char *cptr, void *desc);
|
||||||
void calc_ints (void);
|
void calc_ints (void);
|
||||||
|
|
||||||
extern t_stat ts_wr (int32 data, int32 addr, int32 access);
|
extern t_stat ts_wr (int32 data, int32 addr, int32 access);
|
||||||
extern t_stat detach_cmd (int flags, char *cptr);
|
extern t_stat detach_cmd (int32 flags, char *cptr);
|
||||||
extern UNIT cr_unit;
|
extern UNIT cr_unit;
|
||||||
extern int32 sim_switches;
|
extern int32 sim_switches;
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ extern int32 sim_switches;
|
||||||
static void archive_backtrace(char *inst);
|
static void archive_backtrace(char *inst);
|
||||||
static void reset_backtrace (void);
|
static void reset_backtrace (void);
|
||||||
static void show_backtrace (int nshow);
|
static void show_backtrace (int nshow);
|
||||||
static t_stat backtrace_cmd (int flag, char *cptr);
|
static t_stat backtrace_cmd (int32 flag, char *cptr);
|
||||||
#else
|
#else
|
||||||
#define archive_backtrace(inst)
|
#define archive_backtrace(inst)
|
||||||
#define reset_backtrace()
|
#define reset_backtrace()
|
||||||
|
@ -245,7 +245,7 @@ extern int32 sim_switches;
|
||||||
|
|
||||||
static void init_console_window (void);
|
static void init_console_window (void);
|
||||||
static void destroy_console_window (void);
|
static void destroy_console_window (void);
|
||||||
static t_stat view_cmd (int flag, char *cptr);
|
static t_stat view_cmd (int32 flag, char *cptr);
|
||||||
static t_stat cpu_attach (UNIT *uptr, char *cptr);
|
static t_stat cpu_attach (UNIT *uptr, char *cptr);
|
||||||
static t_bool bsctest (int32 DSPLC, t_bool reset_V);
|
static t_bool bsctest (int32 DSPLC, t_bool reset_V);
|
||||||
static void exit_irq (void);
|
static void exit_irq (void);
|
||||||
|
@ -1556,7 +1556,7 @@ static void show_backtrace (int nshow)
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
static t_stat backtrace_cmd (int flag, char *cptr)
|
static t_stat backtrace_cmd (int32 flag, char *cptr)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
|
@ -1854,7 +1854,7 @@ void debug_print (char *fmt, ...)
|
||||||
|
|
||||||
/* view_cmd - let user view and/or edit a file (e.g. a printer output file, script, or source deck) */
|
/* view_cmd - let user view and/or edit a file (e.g. a printer output file, script, or source deck) */
|
||||||
|
|
||||||
static t_stat view_cmd (int flag, char *cptr)
|
static t_stat view_cmd (int32 flag, char *cptr)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
char cmdline[256];
|
char cmdline[256];
|
||||||
|
|
|
@ -951,7 +951,7 @@ t_stat load_cr_boot (int drvno, int switches)
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
t_stat cr_boot (int unitno, DEVICE *dptr)
|
t_stat cr_boot (int32 unitno, DEVICE *dptr)
|
||||||
{
|
{
|
||||||
t_stat rval;
|
t_stat rval;
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
extern int cgi; /* TRUE if we are running as a CGI program */
|
extern int cgi; /* TRUE if we are running as a CGI program */
|
||||||
extern int cgiwritable; /* TRUE if we can write the disk images back to the image file in CGI mode */
|
extern int cgiwritable; /* TRUE if we can write the disk images back to the image file in CGI mode */
|
||||||
extern int sim_gui;
|
extern t_bool sim_gui;
|
||||||
|
|
||||||
extern uint16 M[]; /* core memory, up to 32Kwords (note: don't even think about trying 64K) */
|
extern uint16 M[]; /* core memory, up to 32Kwords (note: don't even think about trying 64K) */
|
||||||
extern uint16 ILSW[]; /* interrupt level status words */
|
extern uint16 ILSW[]; /* interrupt level status words */
|
||||||
|
@ -269,7 +269,7 @@ void xio_error (char *msg);
|
||||||
|
|
||||||
void bail (char *msg);
|
void bail (char *msg);
|
||||||
t_stat load_cr_boot (int drv, int switches);
|
t_stat load_cr_boot (int drv, int switches);
|
||||||
t_stat cr_boot (int unitno, DEVICE *dptr);
|
t_stat cr_boot (int32 unitno, DEVICE *dptr);
|
||||||
t_stat cr_rewind (void);
|
t_stat cr_rewind (void);
|
||||||
t_stat cr_detach (UNIT *uptr);
|
t_stat cr_detach (UNIT *uptr);
|
||||||
void calc_ints (void); /* recalculate interrupt bitmask */
|
void calc_ints (void); /* recalculate interrupt bitmask */
|
||||||
|
|
|
@ -43,9 +43,9 @@ extern int32 sim_switches;
|
||||||
extern int32 sim_quiet;
|
extern int32 sim_quiet;
|
||||||
static int trace_dms = 0;
|
static int trace_dms = 0;
|
||||||
static void tracesector (int iswrite, int nwords, int addr, int sector);
|
static void tracesector (int iswrite, int nwords, int addr, int sector);
|
||||||
static t_stat where_cmd (int flag, char *ptr);
|
static t_stat where_cmd (int32 flag, char *ptr);
|
||||||
static t_stat phdebug_cmd (int flag, char *ptr);
|
static t_stat phdebug_cmd (int32 flag, char *ptr);
|
||||||
static t_stat fdump_cmd (int flags, char *cptr);
|
static t_stat fdump_cmd (int32 flags, char *cptr);
|
||||||
static void enable_dms_tracing (int newsetting);
|
static void enable_dms_tracing (int newsetting);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ static t_stat dsk_svc (UNIT *uptr);
|
||||||
static t_stat dsk_reset (DEVICE *dptr);
|
static t_stat dsk_reset (DEVICE *dptr);
|
||||||
static t_stat dsk_attach (UNIT *uptr, char *cptr);
|
static t_stat dsk_attach (UNIT *uptr, char *cptr);
|
||||||
static t_stat dsk_detach (UNIT *uptr);
|
static t_stat dsk_detach (UNIT *uptr);
|
||||||
static t_stat dsk_boot (int unitno, DEVICE *dptr);
|
static t_stat dsk_boot (int32 unitno, DEVICE *dptr);
|
||||||
|
|
||||||
static void diskfail (UNIT *uptr, int dswflag, int unitflag, t_bool do_interrupt);
|
static void diskfail (UNIT *uptr, int dswflag, int unitflag, t_bool do_interrupt);
|
||||||
|
|
||||||
|
@ -571,7 +571,7 @@ static t_stat dsk_detach (UNIT *uptr)
|
||||||
|
|
||||||
/* boot routine - if they type BOOT DSK, load the standard boot card. */
|
/* boot routine - if they type BOOT DSK, load the standard boot card. */
|
||||||
|
|
||||||
static t_stat dsk_boot (int unitno, DEVICE *dptr)
|
static t_stat dsk_boot (int32 unitno, DEVICE *dptr)
|
||||||
{
|
{
|
||||||
t_stat rval;
|
t_stat rval;
|
||||||
|
|
||||||
|
@ -644,7 +644,7 @@ char * saywhere (int addr)
|
||||||
|
|
||||||
static int phdebug_lo = -1, phdebug_hi = -1;
|
static int phdebug_lo = -1, phdebug_hi = -1;
|
||||||
|
|
||||||
static t_stat phdebug_cmd (int flag, char *ptr)
|
static t_stat phdebug_cmd (int32 flag, char *ptr)
|
||||||
{
|
{
|
||||||
int val1, val2;
|
int val1, val2;
|
||||||
|
|
||||||
|
@ -671,7 +671,7 @@ static t_stat phdebug_cmd (int flag, char *ptr)
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static t_stat where_cmd (int flag, char *ptr)
|
static t_stat where_cmd (int32 flag, char *ptr)
|
||||||
{
|
{
|
||||||
int addr;
|
int addr;
|
||||||
char *where;
|
char *where;
|
||||||
|
@ -836,7 +836,7 @@ done:
|
||||||
savesector(addr, offset, nwords, phid, name);
|
savesector(addr, offset, nwords, phid, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static t_stat fdump_cmd (int flags, char *cptr)
|
static t_stat fdump_cmd (int32 flags, char *cptr)
|
||||||
{
|
{
|
||||||
int addr = 0x7a24; /* address of next statement */
|
int addr = 0x7a24; /* address of next statement */
|
||||||
int sofst = 0x7a26, symaddr;
|
int sofst = 0x7a26, symaddr;
|
||||||
|
|
|
@ -637,7 +637,7 @@ static t_stat prt1403_svc(UNIT *uptr)
|
||||||
|
|
||||||
/* delete_cmd - SCP command to delete a file */
|
/* delete_cmd - SCP command to delete a file */
|
||||||
|
|
||||||
static t_stat delete_cmd (int flag, char *cptr)
|
static t_stat delete_cmd (int32 flag, char *cptr)
|
||||||
{
|
{
|
||||||
char gbuf[CBUFSIZE];
|
char gbuf[CBUFSIZE];
|
||||||
int status;
|
int status;
|
||||||
|
|
|
@ -37,7 +37,7 @@ static t_stat ptr_svc (UNIT *uptr);
|
||||||
static t_stat ptr_reset (DEVICE *dptr);
|
static t_stat ptr_reset (DEVICE *dptr);
|
||||||
static t_stat ptr_attach (UNIT *uptr, char *cptr);
|
static t_stat ptr_attach (UNIT *uptr, char *cptr);
|
||||||
static t_stat ptr_detach (UNIT *uptr);
|
static t_stat ptr_detach (UNIT *uptr);
|
||||||
static t_stat ptr_boot (int unitno, DEVICE *dptr);
|
static t_stat ptr_boot (int32 unitno, DEVICE *dptr);
|
||||||
static t_stat ptp_svc (UNIT *uptr);
|
static t_stat ptp_svc (UNIT *uptr);
|
||||||
static t_stat ptp_reset (DEVICE *dptr);
|
static t_stat ptp_reset (DEVICE *dptr);
|
||||||
static t_stat ptp_attach (UNIT *uptr, char *cptr);
|
static t_stat ptp_attach (UNIT *uptr, char *cptr);
|
||||||
|
@ -228,7 +228,7 @@ static t_stat ptr_detach (UNIT *uptr)
|
||||||
|
|
||||||
/* ptr_attach - perform paper tape initial program load */
|
/* ptr_attach - perform paper tape initial program load */
|
||||||
|
|
||||||
static t_stat ptr_boot (int unitno, DEVICE *dptr)
|
static t_stat ptr_boot (int32 unitno, DEVICE *dptr)
|
||||||
{
|
{
|
||||||
int ch, nch, val, addr;
|
int ch, nch, val, addr;
|
||||||
t_bool leader = TRUE, start = FALSE;
|
t_bool leader = TRUE, start = FALSE;
|
||||||
|
|
|
@ -5957,12 +5957,12 @@ int32 Debug_Entry(int32 PC, int32 inst, int32 inst2, int32 AC0, int32 AC1, int32
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 Debug_Dump(UNIT *uptr, int32 val, char *cptr, void *desc)
|
t_stat Debug_Dump(UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||||
{
|
{
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 Dump_History (FILE *st, UNIT *uptr, int32 val, void *desc)
|
t_stat Dump_History (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||||
{
|
{
|
||||||
char debmap[4], debion[4];
|
char debmap[4], debion[4];
|
||||||
t_value simeval[20];
|
t_value simeval[20];
|
||||||
|
|
|
@ -223,14 +223,14 @@
|
||||||
struct ndev {
|
struct ndev {
|
||||||
int32 mask; /* done/busy mask */
|
int32 mask; /* done/busy mask */
|
||||||
int32 pi; /* assigned pi bit */
|
int32 pi; /* assigned pi bit */
|
||||||
int32 (*routine)(); /* dispatch routine */
|
int32 (*routine)(int32, int32, int32); /* dispatch routine */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32 dnum; /* device number */
|
int32 dnum; /* device number */
|
||||||
int32 mask; /* done/busy mask */
|
int32 mask; /* done/busy mask */
|
||||||
int32 pi; /* assigned pi bit */
|
int32 pi; /* assigned pi bit */
|
||||||
int32 (*routine)(); /* dispatch routine */
|
int32 (*routine)(int32, int32, int32); /* dispatch routine */
|
||||||
} DIB;
|
} DIB;
|
||||||
|
|
||||||
/* Device flags (simulator representation)
|
/* Device flags (simulator representation)
|
||||||
|
|
|
@ -861,7 +861,8 @@ return SCPE_ARG;
|
||||||
|
|
||||||
char *get_addr (char *cptr, t_addr addr, t_bool ext, int32 cflag, int32 *val)
|
char *get_addr (char *cptr, t_addr addr, t_bool ext, int32 cflag, int32 *val)
|
||||||
{
|
{
|
||||||
int32 d, r, x, pflag;
|
int32 d, x, pflag;
|
||||||
|
t_stat r;
|
||||||
char gbuf[CBUFSIZE];
|
char gbuf[CBUFSIZE];
|
||||||
int32 dmax, dsign;
|
int32 dmax, dsign;
|
||||||
|
|
||||||
|
|
|
@ -446,24 +446,24 @@ const d10 bytemask[64] = { 0,
|
||||||
ONES, ONES, ONES, ONES, ONES, ONES, ONES, ONES, ONES
|
ONES, ONES, ONES, ONES, ONES, ONES, ONES, ONES, ONES
|
||||||
};
|
};
|
||||||
|
|
||||||
static t_bool (*io700d[16])() = {
|
static t_bool (*io700d[16])(a10, int32) = {
|
||||||
&aprid, NULL, NULL, NULL, &wrapr, &rdapr, &czapr, &coapr,
|
&aprid, NULL, NULL, NULL, &wrapr, &rdapr, &czapr, &coapr,
|
||||||
NULL, NULL, NULL, NULL, &wrpi, &rdpi, &czpi, &copi
|
NULL, NULL, NULL, NULL, &wrpi, &rdpi, &czpi, &copi
|
||||||
};
|
};
|
||||||
static t_bool (*io701d[16])() = {
|
static t_bool (*io701d[16])(a10, int32) = {
|
||||||
NULL, &rdubr, &clrpt, &wrubr, &wrebr, &rdebr, NULL, NULL,
|
NULL, &rdubr, &clrpt, &wrubr, &wrebr, &rdebr, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||||
};
|
};
|
||||||
static t_bool (*io702d[16])() = {
|
static t_bool (*io702d[16])(a10, int32) = {
|
||||||
&rdspb, &rdcsb, &rdpur, &rdcstm, &rdtim, &rdint, &rdhsb, NULL,
|
&rdspb, &rdcsb, &rdpur, &rdcstm, &rdtim, &rdint, &rdhsb, NULL,
|
||||||
&wrspb, &wrcsb, &wrpur, &wrcstm, &wrtim, &wrint, &wrhsb, NULL
|
&wrspb, &wrcsb, &wrpur, &wrcstm, &wrtim, &wrint, &wrhsb, NULL
|
||||||
};
|
};
|
||||||
#define io700i io700d
|
#define io700i io700d
|
||||||
static t_bool (*io701i[16])() = {
|
static t_bool (*io701i[16])(a10, int32) = {
|
||||||
&clrcsh, &rdubr, &clrpt, &wrubr, &wrebr, &rdebr, NULL, NULL,
|
&clrcsh, &rdubr, &clrpt, &wrubr, &wrebr, &rdebr, NULL, NULL,
|
||||||
NULL, &rdpcst, NULL, &wrpcst, NULL, NULL, NULL, NULL
|
NULL, &rdpcst, NULL, &wrpcst, NULL, NULL, NULL, NULL
|
||||||
};
|
};
|
||||||
static t_bool (*io702i[16])() = {
|
static t_bool (*io702i[16])(a10, int32) = {
|
||||||
&sdbr1, &sdbr2, &sdbr3, &sdbr4, &rdtim, &rdint, &rdhsb, &spm,
|
&sdbr1, &sdbr2, &sdbr3, &sdbr4, &rdtim, &rdint, &rdhsb, &spm,
|
||||||
&ldbr1, &ldbr2, &ldbr3, &ldbr4, &wrtim, &wrint, &wrhsb, &lpmr
|
&ldbr1, &ldbr2, &ldbr3, &ldbr4, &wrtim, &wrint, &wrhsb, &lpmr
|
||||||
};
|
};
|
||||||
|
@ -697,7 +697,7 @@ for ( ;; ) { /* loop until ABORT */
|
||||||
int32 op, ac, i, st, xr, xct_cnt, its_2pr, pflgs;
|
int32 op, ac, i, st, xr, xct_cnt, its_2pr, pflgs;
|
||||||
a10 ea;
|
a10 ea;
|
||||||
d10 inst, mb, indrct, rs[2];
|
d10 inst, mb, indrct, rs[2];
|
||||||
t_bool (*fptr)();
|
t_bool (*fptr)(int32, int32);
|
||||||
|
|
||||||
pager_PC = PC; /* update pager PC */
|
pager_PC = PC; /* update pager PC */
|
||||||
pager_tc = FALSE; /* not in trap cycle */
|
pager_tc = FALSE; /* not in trap cycle */
|
||||||
|
|
|
@ -130,7 +130,7 @@ t_stat rx_wr (int32 data, int32 PA, int32 access);
|
||||||
t_stat rx_svc (UNIT *uptr);
|
t_stat rx_svc (UNIT *uptr);
|
||||||
t_stat rx_reset (DEVICE *dptr);
|
t_stat rx_reset (DEVICE *dptr);
|
||||||
t_stat rx_boot (int32 unitno, DEVICE *dptr);
|
t_stat rx_boot (int32 unitno, DEVICE *dptr);
|
||||||
void rx_done (int esr_flags, int new_ecode);
|
void rx_done (int32 esr_flags, int32 new_ecode);
|
||||||
|
|
||||||
/* RX11 data structures
|
/* RX11 data structures
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@ t_stat ry_wr (int32 data, int32 PA, int32 access);
|
||||||
t_stat ry_svc (UNIT *uptr);
|
t_stat ry_svc (UNIT *uptr);
|
||||||
t_stat ry_reset (DEVICE *dptr);
|
t_stat ry_reset (DEVICE *dptr);
|
||||||
t_stat ry_boot (int32 unitno, DEVICE *dptr);
|
t_stat ry_boot (int32 unitno, DEVICE *dptr);
|
||||||
void ry_done (int esr_flags, int new_ecode);
|
void ry_done (int32 esr_flags, int32 new_ecode);
|
||||||
t_stat ry_set_size (UNIT *uptr, int32 val, char *cptr, void *desc);
|
t_stat ry_set_size (UNIT *uptr, int32 val, char *cptr, void *desc);
|
||||||
t_stat ry_attach (UNIT *uptr, char *cptr);
|
t_stat ry_attach (UNIT *uptr, char *cptr);
|
||||||
|
|
||||||
|
|
|
@ -735,7 +735,7 @@ fnc = GET_FNC (cmdhdr); /* get fnc+mode */
|
||||||
mod = GET_MOD (cmdhdr);
|
mod = GET_MOD (cmdhdr);
|
||||||
if (DEBUG_PRS (ts_dev))
|
if (DEBUG_PRS (ts_dev))
|
||||||
fprintf (sim_deb, ">>TS: cmd=%s, mod=%o, buf=%o, lnt=%d, pos=%d\n",
|
fprintf (sim_deb, ">>TS: cmd=%s, mod=%o, buf=%o, lnt=%d, pos=%d\n",
|
||||||
fnc_name[fnc], mod, cmdadl, cmdlnt, ts_unit.pos);
|
fnc_name[fnc], mod, cmdadl, cmdlnt, (int)ts_unit.pos);
|
||||||
if ((fnc != FNC_WCHR) && (tssr & TSSR_NBA)) { /* ~wr chr & nba? */
|
if ((fnc != FNC_WCHR) && (tssr & TSSR_NBA)) { /* ~wr chr & nba? */
|
||||||
ts_endcmd (TC3, 0, 0); /* error */
|
ts_endcmd (TC3, 0, 0); /* error */
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
|
@ -1018,7 +1018,7 @@ if (cmdhdr & CMD_IE)
|
||||||
ts_ownm = 0; ts_ownc = 0;
|
ts_ownm = 0; ts_ownc = 0;
|
||||||
if (DEBUG_PRS (ts_dev))
|
if (DEBUG_PRS (ts_dev))
|
||||||
fprintf (sim_deb, ">>TS: sta=%o, tc=%o, rfc=%d, pos=%d\n",
|
fprintf (sim_deb, ">>TS: sta=%o, tc=%o, rfc=%d, pos=%d\n",
|
||||||
msgxs0, GET_TC (tssr), msgrfc, ts_unit.pos);
|
msgxs0, GET_TC (tssr), msgrfc, (int)ts_unit.pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -598,7 +598,7 @@ return MBE_GOE;
|
||||||
|
|
||||||
/* Abort transfer */
|
/* Abort transfer */
|
||||||
|
|
||||||
t_stat tu_abort (void)
|
int32 tu_abort (void)
|
||||||
{
|
{
|
||||||
return tu_reset (&tu_dev);
|
return tu_reset (&tu_dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1989,7 +1989,7 @@ else *ea = (PC & BLKMASK) | (t & IAMASK); /* within 32K */
|
||||||
return sta;
|
return sta;
|
||||||
}
|
}
|
||||||
|
|
||||||
t_stat Incr_addr (int32 ma)
|
int32 Incr_addr (int32 ma)
|
||||||
{
|
{
|
||||||
if (memm)
|
if (memm)
|
||||||
return ((ma & B_EPCMASK) | ((ma + 1) & B_DAMASK));
|
return ((ma & B_EPCMASK) | ((ma + 1) & B_DAMASK));
|
||||||
|
|
|
@ -159,7 +159,7 @@ t_stat fp15_fmul (int32 ir, UFP *a, UFP *b);
|
||||||
t_stat fp15_fdiv (int32 ir, UFP *a, UFP *b);
|
t_stat fp15_fdiv (int32 ir, UFP *a, UFP *b);
|
||||||
t_stat fp15_fix (int32 ir, UFP *a);
|
t_stat fp15_fix (int32 ir, UFP *a);
|
||||||
t_stat fp15_norm (int32 ir, UFP *a, UFP *b, t_bool rnd);
|
t_stat fp15_norm (int32 ir, UFP *a, UFP *b, t_bool rnd);
|
||||||
t_stat fp15_exc (int32 sta);
|
t_stat fp15_exc (t_stat sta);
|
||||||
void fp15_asign (int32 ir, UFP *a);
|
void fp15_asign (int32 ir, UFP *a);
|
||||||
void dp_add (UFP *a, UFP *b);
|
void dp_add (UFP *a, UFP *b);
|
||||||
void dp_sub (UFP *a, UFP *b);
|
void dp_sub (UFP *a, UFP *b);
|
||||||
|
|
10
S3/s3_cpu.c
10
S3/s3_cpu.c
|
@ -398,13 +398,13 @@ extern t_stat sim_activate (UNIT *uptr, int32 delay);
|
||||||
extern int32 fprint_sym (FILE *of, int32 addr, uint32 *val,
|
extern int32 fprint_sym (FILE *of, int32 addr, uint32 *val,
|
||||||
UNIT *uptr, int32 sw);
|
UNIT *uptr, int32 sw);
|
||||||
int32 nulldev (int32 opcode, int32 m, int32 n, int32 data);
|
int32 nulldev (int32 opcode, int32 m, int32 n, int32 data);
|
||||||
int add_zoned (int32 addr1, int32 len1, int32 addr2, int32 len2);
|
int32 add_zoned (int32 addr1, int32 len1, int32 addr2, int32 len2);
|
||||||
int32 subtract_zoned (int32 addr1, int32 len1, int32 addr2, int32 len2);
|
int32 subtract_zoned (int32 addr1, int32 len1, int32 addr2, int32 len2);
|
||||||
static int32 compare(int32 byte1, int32 byte2, int32 cond);
|
static int32 compare(int32 byte1, int32 byte2, int32 cond);
|
||||||
static int32 condition(int32 qbyte);
|
static int32 condition(int32 qbyte);
|
||||||
static void store_decimal (int32 addr, int32 len, uint8 *dec, int sign);
|
static void store_decimal (int32 addr, int32 len, uint8 *dec, int sign);
|
||||||
static void load_decimal (int32 addr, int32 len, uint8 *result, int32 *count, int32 *sign);
|
static void load_decimal (int32 addr, int32 len, uint8 *result, int *count, int *sign);
|
||||||
static void add_decimal (uint8 *dec1, uint8 *dec2, uint8 *result, int32 *count);
|
static void add_decimal (uint8 *dec1, uint8 *dec2, uint8 *result, int *count);
|
||||||
static void subtract_decimal (uint8 *dec1, uint8 *dec2, uint8 *result, int *count, int *sign);
|
static void subtract_decimal (uint8 *dec1, uint8 *dec2, uint8 *result, int *count, int *sign);
|
||||||
int32 GetMem(int32 addr);
|
int32 GetMem(int32 addr);
|
||||||
int32 PutMem(int32 addr, int32 data);
|
int32 PutMem(int32 addr, int32 data);
|
||||||
|
@ -1541,7 +1541,7 @@ int sign1, sign2, sign3; /* Sign of operands & result */
|
||||||
/* This field is set to zero if the result is all zero, */
|
/* This field is set to zero if the result is all zero, */
|
||||||
/* or to MAX_DECIMAL_DIGITS+1 if overflow occurred. */
|
/* or to MAX_DECIMAL_DIGITS+1 if overflow occurred. */
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
static void add_decimal (uint8 *dec1, uint8 *dec2, uint8 *result, int32 *count)
|
static void add_decimal (uint8 *dec1, uint8 *dec2, uint8 *result, int *count)
|
||||||
{
|
{
|
||||||
int d; /* Decimal digit */
|
int d; /* Decimal digit */
|
||||||
int i; /* Array subscript */
|
int i; /* Array subscript */
|
||||||
|
@ -1684,7 +1684,7 @@ uint8 *lower; /* -> Lower value operand */
|
||||||
/* exception, or if the operand causes a data exception */
|
/* exception, or if the operand causes a data exception */
|
||||||
/* because of invalid decimal digits or sign. */
|
/* because of invalid decimal digits or sign. */
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
static void load_decimal (int32 addr, int32 len, uint8 *result, int32 *count, int32 *sign)
|
static void load_decimal (int32 addr, int32 len, uint8 *result, int *count, int *sign)
|
||||||
{
|
{
|
||||||
int h; /* Hexadecimal digit */
|
int h; /* Hexadecimal digit */
|
||||||
int i, j; /* Array subscripts */
|
int i, j; /* Array subscripts */
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
struct ndev {
|
struct ndev {
|
||||||
int32 level; /* interrupt level */
|
int32 level; /* interrupt level */
|
||||||
int32 pri; /* Device priority */
|
int32 pri; /* Device priority */
|
||||||
int32 (*routine)(); /* dispatch routine */
|
int32 (*routine)(int32, int32, int32, int32); /* dispatch routine */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Structure to define operation codes */
|
/* Structure to define operation codes */
|
||||||
|
|
|
@ -88,7 +88,7 @@ uint32 rtfile_find (uint32 block, uint32 sector);
|
||||||
|
|
||||||
/* FLOAD file_name {file_origin} */
|
/* FLOAD file_name {file_origin} */
|
||||||
|
|
||||||
t_stat vax780_fload (int flag, char *cptr)
|
t_stat vax780_fload (int32 flag, char *cptr)
|
||||||
{
|
{
|
||||||
char gbuf[CBUFSIZE];
|
char gbuf[CBUFSIZE];
|
||||||
uint16 file_name[3], blkbuf[BLK_SIZE];
|
uint16 file_name[3], blkbuf[BLK_SIZE];
|
||||||
|
|
|
@ -138,7 +138,7 @@ void sbi_set_tmo (int32 pa);
|
||||||
void uba_eval_int (void);
|
void uba_eval_int (void);
|
||||||
t_stat vax780_boot (int32 flag, char *ptr);
|
t_stat vax780_boot (int32 flag, char *ptr);
|
||||||
|
|
||||||
extern t_stat vax780_fload (int flag, char *cptr);
|
extern t_stat vax780_fload (int32 flag, char *cptr);
|
||||||
extern int32 intexc (int32 vec, int32 cc, int32 ipl, int ei);
|
extern int32 intexc (int32 vec, int32 cc, int32 ipl, int ei);
|
||||||
extern int32 iccs_rd (void);
|
extern int32 iccs_rd (void);
|
||||||
extern int32 nicr_rd (void);
|
extern int32 nicr_rd (void);
|
||||||
|
|
|
@ -161,7 +161,7 @@ address is here, 'nulldev' means no device is available
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct idev {
|
struct idev {
|
||||||
int32 (*routine)();
|
int32 (*routine)(int32, int32);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct idev dev_table[32] = {
|
struct idev dev_table[32] = {
|
||||||
|
@ -405,7 +405,7 @@ int32 sim_instr (void)
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
IR = OP = mem_get_byte(PC); /* fetch instruction */
|
IR = OP = mem_get_byte(PC); /* fetch instruction */
|
||||||
PC = ++PC & ADDRMASK; /* increment PC */
|
PC = (PC + 1) & ADDRMASK; /* increment PC */
|
||||||
sim_interval--;
|
sim_interval--;
|
||||||
|
|
||||||
/* The Big Instruction Decode Switch */
|
/* The Big Instruction Decode Switch */
|
||||||
|
@ -421,11 +421,11 @@ int32 sim_instr (void)
|
||||||
A = get_psw();
|
A = get_psw();
|
||||||
break;
|
break;
|
||||||
case 0x08: /* INX */
|
case 0x08: /* INX */
|
||||||
IX = ++IX & ADDRMASK;
|
IX = (IX + 1) & ADDRMASK;
|
||||||
condevalZ(IX);
|
condevalZ(IX);
|
||||||
break;
|
break;
|
||||||
case 0x09: /* DEX */
|
case 0x09: /* DEX */
|
||||||
IX = --IX & ADDRMASK;
|
IX = (IX + 1) & ADDRMASK;
|
||||||
condevalZ(IX);
|
condevalZ(IX);
|
||||||
break;
|
break;
|
||||||
case 0x0A: /* CLV */
|
case 0x0A: /* CLV */
|
||||||
|
@ -558,60 +558,60 @@ int32 sim_instr (void)
|
||||||
IX = (SP + 1) & ADDRMASK;
|
IX = (SP + 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x31: /* INS */
|
case 0x31: /* INS */
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x32: /* PUL A */
|
case 0x32: /* PUL A */
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
A = mem_get_byte(SP);
|
A = mem_get_byte(SP);
|
||||||
break;
|
break;
|
||||||
case 0x33: /* PUL B */
|
case 0x33: /* PUL B */
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
B = mem_get_byte(SP);
|
B = mem_get_byte(SP);
|
||||||
break;
|
break;
|
||||||
case 0x34: /* DES */
|
case 0x34: /* DES */
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x35: /* TXS */
|
case 0x35: /* TXS */
|
||||||
SP = (IX - 1) & ADDRMASK;
|
SP = (IX - 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x36: /* PSH A */
|
case 0x36: /* PSH A */
|
||||||
mem_put_byte(SP, A);
|
mem_put_byte(SP, A);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x37: /* PSH B */
|
case 0x37: /* PSH B */
|
||||||
mem_put_byte(SP, B);
|
mem_put_byte(SP, B);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x39: /* RTS */
|
case 0x39: /* RTS */
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
PC = mem_get_word(SP) & ADDRMASK;
|
PC = mem_get_word(SP) & ADDRMASK;
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x3B: /* RTI */
|
case 0x3B: /* RTI */
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
set_psw(mem_get_byte(SP));
|
set_psw(mem_get_byte(SP));
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
B = mem_get_byte(SP);
|
B = mem_get_byte(SP);
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
A = mem_get_byte(SP);
|
A = mem_get_byte(SP);
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
IX = mem_get_word(SP);
|
IX = mem_get_word(SP);
|
||||||
SP = (SP += 2) & ADDRMASK;
|
SP = (SP + 2) & ADDRMASK;
|
||||||
PC = mem_get_word(SP) & ADDRMASK;
|
PC = mem_get_word(SP) & ADDRMASK;
|
||||||
SP = ++SP & ADDRMASK;
|
SP = (SP + 1) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x3E: /* WAI */
|
case 0x3E: /* WAI */
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_word(SP, PC);
|
mem_put_word(SP, PC);
|
||||||
SP = (SP -= 2) & ADDRMASK;
|
SP = (SP - 2) & ADDRMASK;
|
||||||
mem_put_word(SP, IX);
|
mem_put_word(SP, IX);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_byte(SP, A);
|
mem_put_byte(SP, A);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_byte(SP, B);
|
mem_put_byte(SP, B);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_byte(SP, get_psw());
|
mem_put_byte(SP, get_psw());
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
if (I) {
|
if (I) {
|
||||||
reason = STOP_HALT;
|
reason = STOP_HALT;
|
||||||
continue;
|
continue;
|
||||||
|
@ -621,17 +621,17 @@ int32 sim_instr (void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x3F: /* SWI */
|
case 0x3F: /* SWI */
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_word(SP, PC);
|
mem_put_word(SP, PC);
|
||||||
SP = (SP -= 2) & ADDRMASK;
|
SP = (SP - 2) & ADDRMASK;
|
||||||
mem_put_word(SP, IX);
|
mem_put_word(SP, IX);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_byte(SP, A);
|
mem_put_byte(SP, A);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_byte(SP, B);
|
mem_put_byte(SP, B);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_byte(SP, get_psw());
|
mem_put_byte(SP, get_psw());
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
I = 0x10000;
|
I = 0x10000;
|
||||||
PC = mem_get_word(0xFFFB) & ADDRMASK;
|
PC = mem_get_word(0xFFFB) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
|
@ -720,7 +720,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (A == 0x80)
|
if (A == 0x80)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
A = --A & 0xFF;
|
A = (A - 1) & 0xFF;
|
||||||
condevalN(A);
|
condevalN(A);
|
||||||
condevalZ(A);
|
condevalZ(A);
|
||||||
break;
|
break;
|
||||||
|
@ -728,7 +728,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (A == 0x7F)
|
if (A == 0x7F)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
A = ++A & 0xFF;
|
A = (A + 1) & 0xFF;
|
||||||
condevalN(A);
|
condevalN(A);
|
||||||
condevalZ(A);
|
condevalZ(A);
|
||||||
break;
|
break;
|
||||||
|
@ -829,7 +829,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (B == 0x80)
|
if (B == 0x80)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
B = --B & 0xFF;
|
B = (B - 1) & 0xFF;
|
||||||
condevalN(B);
|
condevalN(B);
|
||||||
condevalZ(B);
|
condevalZ(B);
|
||||||
break;
|
break;
|
||||||
|
@ -837,7 +837,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (B == 0x7F)
|
if (B == 0x7F)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
B = ++B & 0xFF;
|
B = (B + 1) & 0xFF;
|
||||||
condevalN(B);
|
condevalN(B);
|
||||||
condevalZ(B);
|
condevalZ(B);
|
||||||
break;
|
break;
|
||||||
|
@ -957,7 +957,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (lo == 0x80)
|
if (lo == 0x80)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
lo = --lo & 0xFF;
|
lo = (lo - 1) & 0xFF;
|
||||||
mem_put_byte(DAR, lo);
|
mem_put_byte(DAR, lo);
|
||||||
condevalN(lo);
|
condevalN(lo);
|
||||||
condevalZ(lo);
|
condevalZ(lo);
|
||||||
|
@ -968,7 +968,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (lo == 0x7F)
|
if (lo == 0x7F)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
lo = ++lo & 0xFF;
|
lo = (lo + 1) & 0xFF;
|
||||||
mem_put_byte(DAR, lo);
|
mem_put_byte(DAR, lo);
|
||||||
condevalN(lo);
|
condevalN(lo);
|
||||||
condevalZ(lo);
|
condevalZ(lo);
|
||||||
|
@ -1094,7 +1094,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (lo == 0x80)
|
if (lo == 0x80)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
lo = --lo & 0xFF;
|
lo = (lo - 1) & 0xFF;
|
||||||
mem_put_byte(DAR, lo);
|
mem_put_byte(DAR, lo);
|
||||||
condevalN(lo);
|
condevalN(lo);
|
||||||
condevalZ(lo);
|
condevalZ(lo);
|
||||||
|
@ -1105,7 +1105,7 @@ int32 sim_instr (void)
|
||||||
V = 0;
|
V = 0;
|
||||||
if (lo == 0x7F)
|
if (lo == 0x7F)
|
||||||
V = 0x10000;
|
V = 0x10000;
|
||||||
lo = ++lo & 0xFF;
|
lo = (lo + 1) & 0xFF;
|
||||||
mem_put_byte(DAR, lo);
|
mem_put_byte(DAR, lo);
|
||||||
condevalN(lo);
|
condevalN(lo);
|
||||||
condevalZ(lo);
|
condevalZ(lo);
|
||||||
|
@ -1215,9 +1215,9 @@ int32 sim_instr (void)
|
||||||
break;
|
break;
|
||||||
case 0x8D: /* BSR rel */
|
case 0x8D: /* BSR rel */
|
||||||
lo = get_rel_addr();
|
lo = get_rel_addr();
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_word(SP, PC);
|
mem_put_word(SP, PC);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
PC = PC + lo;
|
PC = PC + lo;
|
||||||
PC &= ADDRMASK;
|
PC &= ADDRMASK;
|
||||||
break;
|
break;
|
||||||
|
@ -1429,9 +1429,9 @@ int32 sim_instr (void)
|
||||||
break;
|
break;
|
||||||
case 0xAD: /* JSR ind */
|
case 0xAD: /* JSR ind */
|
||||||
DAR = get_indir_addr();
|
DAR = get_indir_addr();
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_word(SP, PC);
|
mem_put_word(SP, PC);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
PC = DAR;
|
PC = DAR;
|
||||||
break;
|
break;
|
||||||
case 0xAE: /* LDS ind */
|
case 0xAE: /* LDS ind */
|
||||||
|
@ -1542,9 +1542,9 @@ int32 sim_instr (void)
|
||||||
break;
|
break;
|
||||||
case 0xBD: /* JSR ext */
|
case 0xBD: /* JSR ext */
|
||||||
DAR = get_ext_addr();
|
DAR = get_ext_addr();
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
mem_put_word(SP, PC);
|
mem_put_word(SP, PC);
|
||||||
SP = --SP & ADDRMASK;
|
SP = (SP - 1) & ADDRMASK;
|
||||||
PC = DAR;
|
PC = DAR;
|
||||||
break;
|
break;
|
||||||
case 0xBE: /* LDS ext */
|
case 0xBE: /* LDS ext */
|
||||||
|
@ -2010,7 +2010,7 @@ int32 get_dir_addr()
|
||||||
int32 temp;
|
int32 temp;
|
||||||
|
|
||||||
temp = mem_get_byte(PC);
|
temp = mem_get_byte(PC);
|
||||||
PC = ++PC & ADDRMASK;
|
PC = (PC + 1) & ADDRMASK;
|
||||||
return temp & 0xFF;
|
return temp & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ Copyright (c) 2005, 2007, William Beech
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../sim_defs.h" // simulator defs
|
#include "sim_defs.h" // simulator defs
|
||||||
|
|
||||||
/* Memory */
|
/* Memory */
|
||||||
|
|
||||||
|
|
|
@ -408,7 +408,7 @@ int32 fdccmd(int32 io, int32 data)
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("Unknown FDC command %02H\n\r", data);
|
printf("Unknown FDC command %02X\n\r", data);
|
||||||
}
|
}
|
||||||
} else { /* read status from fdc */
|
} else { /* read status from fdc */
|
||||||
val = cur_flg[cur_dsk]; /* set return value */
|
val = cur_flg[cur_dsk]; /* set return value */
|
||||||
|
|
|
@ -114,7 +114,7 @@ int32 ptp_flag = 0, ptr_flag = 0;
|
||||||
|
|
||||||
/* console input service routine */
|
/* console input service routine */
|
||||||
|
|
||||||
int32 sio_svc (UNIT *uptr)
|
t_stat sio_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
int32 temp;
|
int32 temp;
|
||||||
|
|
||||||
|
@ -132,21 +132,21 @@ int32 sio_svc (UNIT *uptr)
|
||||||
|
|
||||||
/* paper tape reader input service routine */
|
/* paper tape reader input service routine */
|
||||||
|
|
||||||
int32 ptr_svc (UNIT *uptr)
|
t_stat ptr_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* paper tape punch output service routine */
|
/* paper tape punch output service routine */
|
||||||
|
|
||||||
int32 ptp_svc (UNIT *uptr)
|
t_stat ptp_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset console */
|
/* Reset console */
|
||||||
|
|
||||||
int32 sio_reset (DEVICE *dptr)
|
t_stat sio_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
sio_unit.buf = 0; // Data buffer
|
sio_unit.buf = 0; // Data buffer
|
||||||
sio_unit.u3 = 0x02; // Status buffer
|
sio_unit.u3 = 0x02; // Status buffer
|
||||||
|
@ -156,7 +156,7 @@ int32 sio_reset (DEVICE *dptr)
|
||||||
|
|
||||||
/* Reset paper tape reader */
|
/* Reset paper tape reader */
|
||||||
|
|
||||||
int32 ptr_reset (DEVICE *dptr)
|
t_stat ptr_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
ptr_unit.buf = 0;
|
ptr_unit.buf = 0;
|
||||||
ptr_unit.u3 = 0x02;
|
ptr_unit.u3 = 0x02;
|
||||||
|
@ -166,7 +166,7 @@ int32 ptr_reset (DEVICE *dptr)
|
||||||
|
|
||||||
/* Reset paper tape punch */
|
/* Reset paper tape punch */
|
||||||
|
|
||||||
int32 ptp_reset (DEVICE *dptr)
|
t_stat ptp_reset (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
ptp_unit.buf = 0;
|
ptp_unit.buf = 0;
|
||||||
ptp_unit.u3 = 0x02;
|
ptp_unit.u3 = 0x02;
|
||||||
|
|
Loading…
Add table
Reference in a new issue