1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-03-09 12:15:57 +00:00

KA10: Fix divide of 0 on KS10 processor.

This commit is contained in:
Richard Cornwell
2024-05-19 14:10:08 -04:00
parent 64d96727ac
commit edf65cb93c
3 changed files with 12 additions and 14 deletions

View File

@@ -1354,7 +1354,6 @@ t_stat dev_apr(uint32 dev, uint64 *data) {
* MTR device for KL10.
*/
t_stat dev_mtr(uint32 dev, uint64 *data) {
uint64 res = 0;
switch(dev & 03) {
case CONI:
@@ -7188,9 +7187,6 @@ fnormx:
SC--;
} else {
AR = BR;
#if KS
FLAGS |= NODIV|TRP1;
#endif
break;
}
}
@@ -7249,10 +7245,8 @@ fnormx:
SC--;
}
AR &= FMASK;
#if KL | KS
if ((SC & 01600) != 01600)
fxu_hold_set = 1;
#endif
if (AR == (SMASK|EXPO)) {
AR = (AR >> 1) | (AR & SMASK);
SC ++;
@@ -11781,7 +11775,7 @@ fetch_opr:
MB = BR;
if (Mem_write(pi_cycle, 0))
goto last;
MB = AR;
MB = AR;
break;
}
break;
@@ -13874,6 +13868,7 @@ t_bool build_dev_tab (void)
if ((nia_dev.flags & DEV_DIS) == 0 && dptr != &nia_dev &&
rh20 == (((DIB *)nia_dev.ctxt)->dev_num & 0777))
rh20 += 4;
else
/* If NIA20, then assign it to it's requested address */
if ((nia_dev.flags & DEV_DIS) == 0 && dptr == &nia_dev)
d = dibp->dev_num & 0777;

View File

@@ -213,11 +213,11 @@ extern DEBTAB crd_debug[];
#define IOCTL 00000017000000LL
#endif
#define ADR_IFETCH 020
#define ADR_DFETCH 010
#define ADR_WRITE 004
#define ADR_STOP 002
#define ADR_BREAK 001
#define ADR_IFETCH 020
#define ADR_DFETCH 010
#define ADR_WRITE 004
#define ADR_STOP 002
#define ADR_BREAK 001
/* IRQ Flags in APR */
#if KL
@@ -681,7 +681,7 @@ struct pdp_dib {
t_addr (*irq)(uint32 dev, t_addr addr);
struct rh_if *rh;
};
#define RH10_DEV 01000
#define RH20_DEV 02000
struct rh_dev {
@@ -733,6 +733,7 @@ extern void ka10_lights_set_aux (int);
extern void ka10_lights_clear_aux (int);
#endif
/* I/O system parameters */
#if !(PDP6 | KS)
#define NUM_DEVS_LP 1
@@ -774,7 +775,7 @@ extern void ka10_lights_clear_aux (int);
#define NUM_DEVS_CH11 KS_ITS
#endif
#endif
#if KA | KI
#if KA | KI
#define NUM_DEVS_RC 1
#define NUM_DEVS_DK 1
#define NUM_DEVS_DDC 1

View File

@@ -734,6 +734,8 @@ t_stat load_exe (FILE *fileref, int ftype)
}
if ((sim_switches & SWMASK ('M')) == 0) { /* -m? */
ma = mpage << PAG_V_PN; /* mem addr */
} else {
ma = mpage;
}
for (k = 0; k < PAG_SIZE; k++, ma++) { /* copy buf to mem */
if (ma > MEMSIZE)