[Simh] are I1401 disk operations working in the current version ?

Mike Stramba mikestramba at gmail.com
Thu Aug 8 04:56:15 EDT 2019


Are disk operations to the dpX devices working in the I1401 simulator ?

If so, does anyone have any sample code ?

The ref man : A24-1403-5_1401RefMan_Apr62.pdf on page 66 shows the "A"
mnemonic for  "write disk single record"  as being "WD"

Are "A" mnemonics what SIMH / the I1401 is supporting ?

The "SPS" mnemonic shows as "M"

I'm using version v4  commit -69ec3778 of the sim, neither of those
mnemonics are accepted by the deposit command :

"d 600 WD %F0 700 W"  gives "Invalid argument"


Looking through  i1401_sys.c, neither "M" or "WD" are present in the
*opcode table :

------------------------------------------------------------
const char *opcode[64] = {
 NULL,  "R",   "W",  "WR",  "P",   "RP",  "WP",  "WRP",
 "SRF", "SPF", NULL, "MA",  "MUL", NULL,  NULL,  NULL,
 NULL,  "CS",  "S",  NULL,  "MTF", "BWZ", "BBE", NULL,
 "MZ",  "MCS", NULL, "SWM", "DIV", NULL,  NULL,  NULL,
 NULL,  NULL,  "SS", "LCA", "MCW", "NOP", NULL,  "MCM",
 "SAR", NULL,  "ZS", NULL,  NULL,  NULL,  NULL,  NULL,
 NULL,  "A",   "B",  "C",   "MN",  "MCE", "CC",  NULL,
 "SBR", NULL,  "ZA", "H",   "CWM", NULL,  NULL,  NULL
 };
---------------------------

Reading through I1401_cpu.c at :
 ------------------------------------------------------------------------------
    case OP_MCW:                                        /* move char */
        if ((ilnt >= 4) && (ioind == BCD_PERCNT)) {     /* I/O form? */
            reason = iodisp (dev, unit, MD_NORM, D);    /* dispatch I/O */
 --------------------------------------

It looks like if an MCW instruction is found with 'ioind' (the 'D
modifier) set to BCD_PERCNT ("%")  then 'iodisp' will be called which
then calls 'dp_io' in i1401_dp.c (the dpX device handler).

If that is how disk ops are working, is the MCW instruction a "non
standard" or "earlier / later" method than what is documented in the
reference manual ?

I've tried to deposit an MCW instruction, but I'm not sure where the
'%' should go.

I tried putting it in as the eighth byte of the instruction with :

d 607 '%'

but it doesn't seem to be found by instruction fetch routine.


Mike


More information about the Simh mailing list