I1620: Fix Coverity identified problems
CPU: Added error test on device addr DP: Fixed bug in write check function test TTY: Fixed tab stop array overrun at right margin
This commit is contained in:
parent
b95e8704d2
commit
f586105051
3 changed files with 13 additions and 8 deletions
|
@ -1,6 +1,6 @@
|
|||
/* i1620_cpu.c: IBM 1620 CPU simulator
|
||||
|
||||
Copyright (c) 2002-2015, Robert M. Supnik
|
||||
Copyright (c) 2002-2017, 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 @@
|
|||
This CPU module incorporates code and comments from the 1620 simulator by
|
||||
Geoff Kuenning, with his permission.
|
||||
|
||||
13-Mar-17 RMS Added error test on device addr (COVERITY)
|
||||
07-May-15 RMS Added missing TFL instruction (Tom McBride)
|
||||
28-Mar-15 RMS Revised to use sim_printf
|
||||
26-Mar-15 RMS Separated compare from add/sub flows (Tom McBride)
|
||||
|
@ -753,7 +754,9 @@ while (reason == 0) { /* loop until halted */
|
|||
|
||||
case OP_K:
|
||||
dev = get_2d (ADDR_A (saved_PC, I_IO)); /* get IO dev */
|
||||
if (k_valid_p[dev]) { /* validate P? */
|
||||
if (dev < 0) /* invalid digits? */
|
||||
return STOP_INVDIG;
|
||||
if (k_valid_p[dev]) { /* validate P? */
|
||||
reason = get_addr (pla, 5, TRUE, &PAR); /* get P addr */
|
||||
if (reason != SCPE_OK) /* stop if error */
|
||||
break;
|
||||
|
@ -761,7 +764,7 @@ while (reason == 0) { /* loop until halted */
|
|||
else PAR = 0;
|
||||
f0 = M[ADDR_A (saved_PC, I_CTL)] & DIGIT; /* get function */
|
||||
f1 = M[ADDR_A (saved_PC, I_CTL + 1)] & DIGIT;
|
||||
if ((dev < 0) || (iodisp[dev] == NULL)) /* undefined dev? */
|
||||
if (iodisp[dev] == NULL) /* undefined dev? */
|
||||
reason = STOP_INVIO; /* stop */
|
||||
else reason = iodisp[dev] (op, PAR, f0, f1); /* call device */
|
||||
break;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* i1620_dp.c: IBM 1311 disk simulator
|
||||
|
||||
Copyright (c) 2002-2015, Robert M. Supnik
|
||||
Copyright (c) 2002-2017, 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"),
|
||||
|
@ -35,6 +35,7 @@
|
|||
to mean the implied sector number that would be in place if the disk pack
|
||||
had been formatted with sequential sector numbers.
|
||||
|
||||
13-Mar-17 RMS Fixed bug in write check function test (COVERITY)
|
||||
18-Oct-02 RMS Fixed bug in error testing (Hans Pufal)
|
||||
*/
|
||||
|
||||
|
@ -190,7 +191,7 @@ if (f1 >= FNC_WRI) /* invalid func? */
|
|||
if (op == OP_RN) /* read? set wch */
|
||||
qwc = f1 & FNC_WCH;
|
||||
else if (op == OP_WN) { /* write? */
|
||||
if (op & FNC_WCH) /* cant check */
|
||||
if (f1 & FNC_WCH) /* cant check */
|
||||
return STOP_INVFNC;
|
||||
f1 = f1 + FNC_WRI; /* offset fnc */
|
||||
}
|
||||
|
@ -224,7 +225,7 @@ switch (f1 & ~(FNC_WCH | FNC_NRL)) { /* case on function */
|
|||
}
|
||||
break; /* done, clean up */
|
||||
|
||||
case FNC_SEC + FNC_WRI: /* write */
|
||||
case FNC_SEC + FNC_WRI: /* write sectors */
|
||||
if (cnt <= 0) /* bad count? */
|
||||
return STOP_INVDCN;
|
||||
psec = dp_fndsec (uptr, sec, FALSE); /* find sector */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* i1620_tty.c: IBM 1620 typewriter
|
||||
|
||||
Copyright (c) 2002-2015, Robert M. Supnik
|
||||
Copyright (c) 2002-2017, 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 @@
|
|||
|
||||
tty console typewriter
|
||||
|
||||
13-Mar-17 RMS Fixed tab stop array overrun at right margin (COVERITY)
|
||||
21-Feb-15 TFM Option to provide single digit numeric output
|
||||
05-Feb-15 TFM Changes to translate tables and valid input char.
|
||||
02-Jan-14 RMS Added variable tab stops
|
||||
|
@ -420,7 +421,7 @@ int32 rpt;
|
|||
|
||||
if (c == '\t') { /* tab? */
|
||||
for (rpt = tto_col + 1; /* find tab stop */
|
||||
(tto_tabs[rpt] == 0) && (rpt <= TTO_COLMAX);
|
||||
(rpt <= TTO_COLMAX) && (tto_tabs[rpt] == 0);
|
||||
rpt++) ;
|
||||
for ( ; tto_col < rpt; tto_col++)
|
||||
sim_putchar (' '); /* use spaces */
|
||||
|
|
Loading…
Add table
Reference in a new issue