mirror of
https://github.com/simh/simh.git
synced 2026-05-02 06:15:23 +00:00
VAX420: Added ROM patch to correct boot problem on MicroVAX 3100 M10/M20
This commit is contained in:
BIN
VAX/ka41a.bin
BIN
VAX/ka41a.bin
Binary file not shown.
24
VAX/ka41a_patch.com
Normal file
24
VAX/ka41a_patch.com
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
$!
|
||||||
|
$! This procedure patches KA41A.BIN (V1.6) Boot ROM image to work under
|
||||||
|
$! the SIMH simulator
|
||||||
|
$!
|
||||||
|
$ PATCH /ABSOLUTE /NEW_VERSION /OUTPUT=KA41A.BIN KA41A_ORIG.BIN
|
||||||
|
!
|
||||||
|
! Test D - NVR
|
||||||
|
!
|
||||||
|
! - This appears to be a bug in the ROM code, which
|
||||||
|
! causes an endless loop if the NVR is not initialised.
|
||||||
|
! The subroutine loops until a particular value is found
|
||||||
|
! in the SIE register however the SIE is a constant and
|
||||||
|
! never matches the expected value. There are no other
|
||||||
|
! exit conditions from this loop. The KA41-D V1.0 ROM
|
||||||
|
! has the same subroutine however the loop is exited
|
||||||
|
! when the expected value is not found in the SIE.
|
||||||
|
!
|
||||||
|
REPLACE/INSTRUCTION 0284C = 'BNEQ 0000280E'
|
||||||
|
'BNEQ 0000285B'
|
||||||
|
EXIT
|
||||||
|
!
|
||||||
|
UPDATE
|
||||||
|
EXIT
|
||||||
|
$
|
||||||
@@ -1022,9 +1022,6 @@ if (*rom == 0) { /* no boot? */
|
|||||||
#if defined (VAX_41A) || defined (VAX_41D)
|
#if defined (VAX_41A) || defined (VAX_41D)
|
||||||
rom_wr_B (ROMBASE+4, sys_model ? 2 : 1); /* Set Magic Byte to determine system type */
|
rom_wr_B (ROMBASE+4, sys_model ? 2 : 1); /* Set Magic Byte to determine system type */
|
||||||
#endif
|
#endif
|
||||||
#if defined (VAX_41A)
|
|
||||||
rom_wr_B (ROMBASE+7, 8); /* ROM goes into endless loop without this? */
|
|
||||||
#endif
|
|
||||||
for (i = 0; i < OR_COUNT; i++) /* unmap all option ROMs */
|
for (i = 0; i < OR_COUNT; i++) /* unmap all option ROMs */
|
||||||
or_unmap (i);
|
or_unmap (i);
|
||||||
for (i = 0; (cdptr = sim_devices[i]) != NULL; i++) { /* loop over all devices */
|
for (i = 0; (cdptr = sim_devices[i]) != NULL; i++) { /* loop over all devices */
|
||||||
|
|||||||
32794
VAX/vax_ka41a_bin.h
32794
VAX/vax_ka41a_bin.h
File diff suppressed because it is too large
Load Diff
@@ -46,7 +46,7 @@ struct ROM_File_Descriptor {
|
|||||||
{"VAX/ka410.bin", "VAX/vax_ka410_bin.h", 262144, 0xFEDA0B61, "vax_ka410_bin"},
|
{"VAX/ka410.bin", "VAX/vax_ka410_bin.h", 262144, 0xFEDA0B61, "vax_ka410_bin"},
|
||||||
{"VAX/ka411.bin", "VAX/vax_ka411_bin.h", 262144, 0xFECB7EE3, "vax_ka411_bin"},
|
{"VAX/ka411.bin", "VAX/vax_ka411_bin.h", 262144, 0xFECB7EE3, "vax_ka411_bin"},
|
||||||
{"VAX/ka412.bin", "VAX/vax_ka412_bin.h", 262144, 0xFED96BB4, "vax_ka412_bin"},
|
{"VAX/ka412.bin", "VAX/vax_ka412_bin.h", 262144, 0xFED96BB4, "vax_ka412_bin"},
|
||||||
{"VAX/ka41a.bin", "VAX/vax_ka41a_bin.h", 262144, 0xFECBAC7B, "vax_ka41a_bin"},
|
{"VAX/ka41a.bin", "VAX/vax_ka41a_bin.h", 262144, 0xFECBAD2E, "vax_ka41a_bin"},
|
||||||
{"VAX/ka41d.bin", "VAX/vax_ka41d_bin.h", 262144, 0xFECB8513, "vax_ka41d_bin"},
|
{"VAX/ka41d.bin", "VAX/vax_ka41d_bin.h", 262144, 0xFECB8513, "vax_ka41d_bin"},
|
||||||
{"VAX/ka42a.bin", "VAX/vax_ka42a_bin.h", 262144, 0xFED8967F, "vax_ka42a_bin"},
|
{"VAX/ka42a.bin", "VAX/vax_ka42a_bin.h", 262144, 0xFED8967F, "vax_ka42a_bin"},
|
||||||
{"VAX/ka42b.bin", "VAX/vax_ka42b_bin.h", 262144, 0xFECBB2EF, "vax_ka42b_bin"},
|
{"VAX/ka42b.bin", "VAX/vax_ka42b_bin.h", 262144, 0xFECBB2EF, "vax_ka42b_bin"},
|
||||||
|
|||||||
Reference in New Issue
Block a user