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:
Mark Pizzolato 2011-04-15 09:04:39 -07:00
parent eb514e2a8d
commit a6964f849d
32 changed files with 126 additions and 125 deletions

View file

@ -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 */

View file

@ -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;

View file

@ -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] = {

View file

@ -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;
} }
} }

View file

@ -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;

View file

@ -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];

View file

@ -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,

View file

@ -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;

View file

@ -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];

View file

@ -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;

View file

@ -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 */

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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];

View file

@ -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)

View file

@ -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;

View file

@ -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 */

View file

@ -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

View file

@ -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);

View file

@ -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;
} }

View file

@ -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);
} }

View file

@ -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));

View file

@ -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);

View file

@ -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 */

View file

@ -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 */

View file

@ -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];

View file

@ -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);

View file

@ -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;
} }

View file

@ -27,7 +27,7 @@ Copyright (c) 2005, 2007, William Beech
*/ */
#include "../sim_defs.h" // simulator defs #include "sim_defs.h" // simulator defs
/* Memory */ /* Memory */

View file

@ -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 */

View file

@ -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;