From ae825c9afbd16d2fb13d6197be8018691ce1fd4f Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 2 Sep 2020 15:56:07 -0700 Subject: [PATCH] All: Declare sim_stop_messages as an array SCPE_BASE long This avoids a potential invalid pointer dereference when formatting the return value from sim_instr() if it is < SCPE_BASE but greater than the previously defined static array size.sizeof Update simh.doc to reflect this generic change. --- 3B2/3b2_400_sys.c | 2 +- ALTAIR/altair_sys.c | 2 +- AltairZ80/altairz80_sys.c | 2 +- B5500/b5500_sys.c | 2 +- BESM6/besm6_cpu.c | 2 +- CDC1700/cdc1700_sys.c | 2 +- GRI/gri_sys.c | 2 +- H316/h316_sys.c | 2 +- HP2100/hp2100_sys.c | 2 +- HP3000/hp3000_sys.c | 2 +- I1401/i1401_sys.c | 2 +- I1620/i1620_sys.c | 2 +- I650/i650_sys.c | 2 +- I7000/i7010_sys.c | 2 +- I7000/i701_sys.c | 2 +- I7000/i7070_sys.c | 2 +- I7000/i7080_sys.c | 2 +- I7000/i7090_sys.c | 2 +- I7094/i7094_sys.c | 2 +- Ibm1130/ibm1130_sys.c | 2 +- Intel-Systems/ibmpc/ibmpc_sys.c | 2 +- Intel-Systems/ibmpcxt/ibmpcxt_sys.c | 2 +- Interdata/id16_sys.c | 2 +- Interdata/id32_sys.c | 2 +- LGP/lgp_sys.c | 2 +- NOVA/nova_sys.c | 2 +- PDP1/pdp1_sys.c | 2 +- PDP10/kx10_sys.c | 2 +- PDP10/pdp10_sys.c | 2 +- PDP11/pdp11_sys.c | 2 +- PDP18B/pdp18b_sys.c | 2 +- PDP8/pdp8_sys.c | 2 +- PDQ-3/pdq3_sys.c | 2 +- S3/s3_sys.c | 2 +- SAGE/m68k_sys.c | 2 +- SDS/sds_sys.c | 2 +- SSEM/ssem_sys.c | 2 +- TX-0/tx0_sys.c | 2 +- VAX/vax_sys.c | 2 +- alpha/alpha_sys.c | 2 +- doc/simh.doc | Bin 292864 -> 300544 bytes imlac/imlac_sys.c | 2 +- sigma/sigma_sys.c | 2 +- sim_defs.h | 3 ++- swtp6800/swtp6800/mp-a2_sys.c | 2 +- swtp6800/swtp6800/mp-a_sys.c | 2 +- 46 files changed, 46 insertions(+), 45 deletions(-) diff --git a/3B2/3b2_400_sys.c b/3B2/3b2_400_sys.c index 9b9ad5df..b6f39a49 100644 --- a/3B2/3b2_400_sys.c +++ b/3B2/3b2_400_sys.c @@ -60,7 +60,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Reserved Instruction", "Breakpoint", diff --git a/ALTAIR/altair_sys.c b/ALTAIR/altair_sys.c index daab06bb..34557b1c 100644 --- a/ALTAIR/altair_sys.c +++ b/ALTAIR/altair_sys.c @@ -63,7 +63,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O Instruction", "HALT instruction", diff --git a/AltairZ80/altairz80_sys.c b/AltairZ80/altairz80_sys.c index 4279ce20..93706090 100644 --- a/AltairZ80/altairz80_sys.c +++ b/AltairZ80/altairz80_sys.c @@ -145,7 +145,7 @@ DEVICE *sim_devices[] = { static char memoryAccessMessage[256]; static char instructionMessage[256]; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "HALT instruction", "Breakpoint", memoryAccessMessage, diff --git a/B5500/b5500_sys.c b/B5500/b5500_sys.c index acea5c9a..99a5a7c3 100644 --- a/B5500/b5500_sys.c +++ b/B5500/b5500_sys.c @@ -76,7 +76,7 @@ DEVICE *sim_devices[] = { }; /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { 0, }; diff --git a/BESM6/besm6_cpu.c b/BESM6/besm6_cpu.c index b6d0a82e..3e197b65 100644 --- a/BESM6/besm6_cpu.c +++ b/BESM6/besm6_cpu.c @@ -284,7 +284,7 @@ DEVICE *sim_devices[] = { 0 }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Неизвестная ошибка", /* Unknown error */ "Останов", /* STOP */ "Точка останова", /* Emulator breakpoint */ diff --git a/CDC1700/cdc1700_sys.c b/CDC1700/cdc1700_sys.c index d8157746..1d30c3bb 100644 --- a/CDC1700/cdc1700_sys.c +++ b/CDC1700/cdc1700_sys.c @@ -85,7 +85,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "OK", "Indirect addressing loop count exceeded", "Selective Stop", diff --git a/GRI/gri_sys.c b/GRI/gri_sys.c index 75d100be..8c293b9c 100644 --- a/GRI/gri_sys.c +++ b/GRI/gri_sys.c @@ -67,7 +67,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unimplemented unit", "HALT instruction", diff --git a/H316/h316_sys.c b/H316/h316_sys.c index f988a7f3..d8c91280 100644 --- a/H316/h316_sys.c +++ b/H316/h316_sys.c @@ -88,7 +88,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unimplemented instruction", "Unimplemented I/O device", diff --git a/HP2100/hp2100_sys.c b/HP2100/hp2100_sys.c index 66f32fc1..d966c5b3 100644 --- a/HP2100/hp2100_sys.c +++ b/HP2100/hp2100_sys.c @@ -1968,7 +1968,7 @@ DEVICE *sim_devices [] = { /* an array of pointers to the s #define DEVICE_COUNT (sizeof sim_devices / sizeof sim_devices [0] - 1) /* the count excludes the NULL pointer */ -const char *sim_stop_messages [] = { /* an array of pointers to the stop messages in STOP_nnn order */ +const char *sim_stop_messages [SCPE_BASE] = { /* an array of pointers to the stop messages in STOP_nnn order */ "Impossible error", /* 0 (never returned) */ "Unimplemented instruction", /* STOP_UNIMPL */ "Unassigned select code", /* STOP_UNSC */ diff --git a/HP3000/hp3000_sys.c b/HP3000/hp3000_sys.c index 769d28ca..465b393f 100644 --- a/HP3000/hp3000_sys.c +++ b/HP3000/hp3000_sys.c @@ -1099,7 +1099,7 @@ DEVICE *sim_devices [] = { /* an array of pointers to the s #define DEVICE_COUNT (sizeof sim_devices / sizeof sim_devices [0] - 1) -const char *sim_stop_messages [] = { /* an array of pointers to the stop messages in STOP_nnn order */ +const char *sim_stop_messages [SCPE_BASE] = { /* an array of pointers to the stop messages in STOP_nnn order */ "Impossible error", /* 0 (never returned) */ "System halt", /* STOP_SYSHALT */ "Unimplemented instruction", /* STOP_UNIMPL */ diff --git a/I1401/i1401_sys.c b/I1401/i1401_sys.c index 7bf1b4bf..ba9e58c7 100644 --- a/I1401/i1401_sys.c +++ b/I1401/i1401_sys.c @@ -84,7 +84,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unimplemented instruction", "Non-existent memory", diff --git a/I1620/i1620_sys.c b/I1620/i1620_sys.c index 2dc91c49..5ab3061b 100644 --- a/I1620/i1620_sys.c +++ b/I1620/i1620_sys.c @@ -70,7 +70,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/I650/i650_sys.c b/I650/i650_sys.c index b9ddc3bd..3f2c18a2 100644 --- a/I650/i650_sys.c +++ b/I650/i650_sys.c @@ -58,7 +58,7 @@ DIB mt_dib = { 5, &mt_cmd, &mt_ini }; DIB dsk_dib = { 4, &mt_cmd, &dsk_ini }; /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/I7000/i7010_sys.c b/I7000/i7010_sys.c index f8995582..e91f8df0 100644 --- a/I7000/i7010_sys.c +++ b/I7000/i7010_sys.c @@ -115,7 +115,7 @@ DIB com_dib = { CH_TYP_79XX|CH_TYP_UREC, 0, 04200, 07700, &com_cmd, NULL }; /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "IO device not ready", "HALT instruction", diff --git a/I7000/i701_sys.c b/I7000/i701_sys.c index acdfe48d..0b3eb24c 100644 --- a/I7000/i701_sys.c +++ b/I7000/i701_sys.c @@ -82,7 +82,7 @@ DIB mt_dib = { CH_TYP_PIO, NUM_UNITS_MT, 0400, 07770, &mt_cmd, &mt_ini }; /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "IO device not ready", "HALT instruction", diff --git a/I7000/i7070_sys.c b/I7000/i7070_sys.c index d485af3c..a9bc6226 100644 --- a/I7000/i7070_sys.c +++ b/I7000/i7070_sys.c @@ -116,7 +116,7 @@ DIB com_dib = { CH_TYP_79XX, 0, 0, 0, &com_cmd, NULL }; #endif /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "IO device not ready", "HALT instruction", diff --git a/I7000/i7080_sys.c b/I7000/i7080_sys.c index c27d9981..4e0c8cea 100644 --- a/I7000/i7080_sys.c +++ b/I7000/i7080_sys.c @@ -130,7 +130,7 @@ DIB com_dib = { CH_TYP_79XX, 0, 0, 0, &com_cmd, NULL }; #endif /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "IO device not ready", "HALT instruction", diff --git a/I7000/i7090_sys.c b/I7000/i7090_sys.c index 76b82078..87fa2831 100644 --- a/I7000/i7090_sys.c +++ b/I7000/i7090_sys.c @@ -143,7 +143,7 @@ DIB hsdrm_dib = { CH_TYP_SPEC, 1, 0330, 0777, &hsdrm_cmd, &hsdrm_ini }; /* Simulator stop codes */ -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "IO device not ready", "HALT instruction", diff --git a/I7094/i7094_sys.c b/I7094/i7094_sys.c index f109d768..8827cc89 100644 --- a/I7094/i7094_sys.c +++ b/I7094/i7094_sys.c @@ -95,7 +95,7 @@ DEVICE *sim_devices[] = { char ch_bkpt_msg[] = "Channel A breakpoint, CLC: xxxxxx"; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/Ibm1130/ibm1130_sys.c b/Ibm1130/ibm1130_sys.c index 46636b5a..5c18f60a 100644 --- a/Ibm1130/ibm1130_sys.c +++ b/Ibm1130/ibm1130_sys.c @@ -71,7 +71,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Wait", "Invalid command", diff --git a/Intel-Systems/ibmpc/ibmpc_sys.c b/Intel-Systems/ibmpc/ibmpc_sys.c index a5a1c1e1..9915941b 100644 --- a/Intel-Systems/ibmpc/ibmpc_sys.c +++ b/Intel-Systems/ibmpc/ibmpc_sys.c @@ -85,7 +85,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O Instruction", "HALT instruction", diff --git a/Intel-Systems/ibmpcxt/ibmpcxt_sys.c b/Intel-Systems/ibmpcxt/ibmpcxt_sys.c index 819dc83f..fbd1c659 100644 --- a/Intel-Systems/ibmpcxt/ibmpcxt_sys.c +++ b/Intel-Systems/ibmpcxt/ibmpcxt_sys.c @@ -85,7 +85,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O Instruction", "HALT instruction", diff --git a/Interdata/id16_sys.c b/Interdata/id16_sys.c index dc781d2d..9b7e8aac 100644 --- a/Interdata/id16_sys.c +++ b/Interdata/id16_sys.c @@ -86,7 +86,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Reserved instruction", "HALT instruction", diff --git a/Interdata/id32_sys.c b/Interdata/id32_sys.c index 98ee4ed7..e2fe7545 100644 --- a/Interdata/id32_sys.c +++ b/Interdata/id32_sys.c @@ -90,7 +90,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Reserved instruction", "HALT instruction", diff --git a/LGP/lgp_sys.c b/LGP/lgp_sys.c index 3762b071..49932da1 100644 --- a/LGP/lgp_sys.c +++ b/LGP/lgp_sys.c @@ -66,7 +66,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "STOP", "Breakpoint", diff --git a/NOVA/nova_sys.c b/NOVA/nova_sys.c index bfc65cd8..54ec8ff1 100644 --- a/NOVA/nova_sys.c +++ b/NOVA/nova_sys.c @@ -125,7 +125,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O instruction", "HALT instruction", diff --git a/PDP1/pdp1_sys.c b/PDP1/pdp1_sys.c index c78cd41e..0c3a2dcf 100644 --- a/PDP1/pdp1_sys.c +++ b/PDP1/pdp1_sys.c @@ -103,7 +103,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Undefined instruction", "HALT instruction", diff --git a/PDP10/kx10_sys.c b/PDP10/kx10_sys.c index 7e11df05..04b16095 100644 --- a/PDP10/kx10_sys.c +++ b/PDP10/kx10_sys.c @@ -215,7 +215,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/PDP10/pdp10_sys.c b/PDP10/pdp10_sys.c index f063cde9..fb79b25d 100644 --- a/PDP10/pdp10_sys.c +++ b/PDP10/pdp10_sys.c @@ -104,7 +104,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/PDP11/pdp11_sys.c b/PDP11/pdp11_sys.c index 59dc65d6..de89c6c1 100644 --- a/PDP11/pdp11_sys.c +++ b/PDP11/pdp11_sys.c @@ -218,7 +218,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Red stack trap", "Odd address trap", diff --git a/PDP18B/pdp18b_sys.c b/PDP18B/pdp18b_sys.c index a4b01321..07b40db9 100644 --- a/PDP18B/pdp18b_sys.c +++ b/PDP18B/pdp18b_sys.c @@ -194,7 +194,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Undefined instruction", "HALT instruction", diff --git a/PDP8/pdp8_sys.c b/PDP8/pdp8_sys.c index 5ac4deba..ae2eae20 100644 --- a/PDP8/pdp8_sys.c +++ b/PDP8/pdp8_sys.c @@ -115,7 +115,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unimplemented instruction", "HALT instruction", diff --git a/PDQ-3/pdq3_sys.c b/PDQ-3/pdq3_sys.c index 390c5eb8..e2825271 100644 --- a/PDQ-3/pdq3_sys.c +++ b/PDQ-3/pdq3_sys.c @@ -69,7 +69,7 @@ DEVICE *sim_devices[] = { &tim_dev, NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "---", "PC Breakpoint", "MEM Breakpoint", diff --git a/S3/s3_sys.c b/S3/s3_sys.c index 50f58ff5..878de1d9 100644 --- a/S3/s3_sys.c +++ b/S3/s3_sys.c @@ -79,7 +79,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O Instruction", "HALT instruction", diff --git a/SAGE/m68k_sys.c b/SAGE/m68k_sys.c index d0702d8d..b090ddf0 100644 --- a/SAGE/m68k_sys.c +++ b/SAGE/m68k_sys.c @@ -272,7 +272,7 @@ t_stat sim_load(FILE* fptr, CONST char* cptr, CONST char* fnam, t_bool flag) return SCPE_OK; } -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "---", "PC Breakpoint", "MEM Breakpoint", diff --git a/SDS/sds_sys.c b/SDS/sds_sys.c index 5184bc0c..41a4f6fb 100644 --- a/SDS/sds_sys.c +++ b/SDS/sds_sys.c @@ -83,7 +83,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "IO device not ready", "HALT instruction", diff --git a/SSEM/ssem_sys.c b/SSEM/ssem_sys.c index a3a115d8..bae39945 100644 --- a/SSEM/ssem_sys.c +++ b/SSEM/ssem_sys.c @@ -64,7 +64,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Stop", "Breakpoint", diff --git a/TX-0/tx0_sys.c b/TX-0/tx0_sys.c index b015545a..823ca7f0 100644 --- a/TX-0/tx0_sys.c +++ b/TX-0/tx0_sys.c @@ -90,7 +90,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Undefined instruction", "HALT instruction", diff --git a/VAX/vax_sys.c b/VAX/vax_sys.c index ea0d4d24..01473ed2 100644 --- a/VAX/vax_sys.c +++ b/VAX/vax_sys.c @@ -86,7 +86,7 @@ REG *sim_PC = &cpu_reg[0]; int32 sim_emax = 60; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/alpha/alpha_sys.c b/alpha/alpha_sys.c index 622bd532..7eb7e5aa 100644 --- a/alpha/alpha_sys.c +++ b/alpha/alpha_sys.c @@ -53,7 +53,7 @@ REG *sim_PC = &cpu_reg[0]; int32 sim_emax = 1; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/doc/simh.doc b/doc/simh.doc index 371182ce2de411e2519df71be4832c7617c2b73d..f999ffd5786ba605a947a5be889000e90dd994b1 100644 GIT binary patch delta 52705 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 diff --git a/imlac/imlac_sys.c b/imlac/imlac_sys.c index 2003569e..4c002c32 100644 --- a/imlac/imlac_sys.c +++ b/imlac/imlac_sys.c @@ -53,7 +53,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "HALT instruction", "Breakpoint", diff --git a/sigma/sigma_sys.c b/sigma/sigma_sys.c index 95f5e8d2..5a8ac96e 100644 --- a/sigma/sigma_sys.c +++ b/sigma/sigma_sys.c @@ -96,7 +96,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Invalid I/O configuration", "Breakpoint", diff --git a/sim_defs.h b/sim_defs.h index 30c0cb1c..a97492e5 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -93,7 +93,8 @@ sim_devices[] array of pointers to simulated devices sim_PC pointer to saved PC register descriptor sim_interval simulator interval to next event - sim_stop_messages[] array of pointers to stop messages + sim_stop_messages[SCPE_BASE] + array of pointers to stop messages sim_instr() instruction execution routine sim_load() binary loader routine sim_emax maximum number of words in an instruction diff --git a/swtp6800/swtp6800/mp-a2_sys.c b/swtp6800/swtp6800/mp-a2_sys.c index adcd79f5..f5e95129 100644 --- a/swtp6800/swtp6800/mp-a2_sys.c +++ b/swtp6800/swtp6800/mp-a2_sys.c @@ -75,7 +75,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O Instruction", "HALT instruction", diff --git a/swtp6800/swtp6800/mp-a_sys.c b/swtp6800/swtp6800/mp-a_sys.c index cfbc9814..cac0a98f 100644 --- a/swtp6800/swtp6800/mp-a_sys.c +++ b/swtp6800/swtp6800/mp-a_sys.c @@ -73,7 +73,7 @@ DEVICE *sim_devices[] = { NULL }; -const char *sim_stop_messages[] = { +const char *sim_stop_messages[SCPE_BASE] = { "Unknown error", "Unknown I/O Instruction", "HALT instruction",