cromemco bank switching question for 64KZ-II - CP/M

This is a discussion on cromemco bank switching question for 64KZ-II - CP/M ; can someone explain to me in some detail how Cromemco's bank switching scheme works for Z80 Cromix? From what i've read, Cromix uses a 1K block of RAM between FC00-FFFFh to share data between the OS and User memory banks. ...

+ Reply to Thread
Results 1 to 11 of 11

Thread: cromemco bank switching question for 64KZ-II

  1. cromemco bank switching question for 64KZ-II

    can someone explain to me in some detail how Cromemco's bank switching
    scheme works for Z80 Cromix?

    From what i've read, Cromix uses a 1K block of RAM between FC00-FFFFh
    to share data between the OS and User memory banks. When I look at the
    64KZ-II it shows each 64K card occupying an entire 64K. So what I'm
    wondering is if this makes the shared 1k at the top truly common or
    not. Cromix selects bank 7 to "broadcast" all write data to each
    card. This works because the OS 64k card occupies bank 0 and bank 7.
    Each User ram card occupies one bank between bank 1 and 6, and also
    occupies bank 7.

    This scheme seems ok for writes, but for reads it doesn't seem like a
    very good design, since any slight mismatch in the timing of the
    individual RAM cards will cause a short period of potential bus
    contention.

    Also, if the data in the upper 1K of one of the RAM cards differed
    from the others, then real serious contention would occur. This could
    happen if the CPU did a write to the upper 1K without having bank 7
    selected.

    Am I missing something, or is this how it was designed to work?

  2. Re: cromemco bank switching question for 64KZ-II

    Hi Howard,

    About Cromemco Bank switching, I thought I understood it well but
    your questions had me thinking!

    From what I understand

    The system memory card sits in Bank 0
    The User memory cards sit in Banks 1 through 6

    Additionally all memory cards have their top 32K bytes 8000-FFFF
    mapped into bank 7

    Although this full 32K bytes are mapped z80 cromix chooses only to
    use the FC00 to FFFF area to write information into, to communicate
    out i.e. information transfer from Bank0 to a user memory area.

    Presumably there is no real need for the system to read anything from
    another Banks memory since it surely has its own copy in Bank 0. In
    other words: User 1 executes some code in Bank1. If it wants to
    communicate back to Bank0 it
    a) makes sure its PCounter is in upper 32K
    b) switches to Bank 7
    c) writes something (by convention in FC00 to FFFF area) in theory any
    place from 8000-FFFF
    d) switches to Bank 0
    e) CPU reads the data from its own Bank0 in FC00 to FFFF range

    That's just my thought of course, it is somewhat of a shame that the
    original source code is not available for us to examine.

  3. Re: cromemco bank switching question for 64KZ-II

    On May 22, 2:40*am, marcusb wrote:
    > Hi Howard,
    >
    > About Cromemco Bank switching, *I thought I understood it well but
    > your questions had me thinking!
    >
    > From what I understand
    >
    > The system memory card sits in Bank 0
    > The User memory cards sit in Banks 1 through 6
    >
    > Additionally all memory cards have their top 32K bytes 8000-FFFF
    > mapped into bank 7
    >
    > Although this full *32K bytes are mapped z80 cromix chooses only to
    > use the FC00 to FFFF area to write information into, to communicate
    > out i.e. information transfer from Bank0 to a user memory area.
    >
    > Presumably there is no real need for the system to read anything from
    > another Banks memory since it surely has its own copy in Bank 0. *In
    > other words: *User 1 executes some code in Bank1. *If it wants to
    > communicate back to Bank0 it
    > a) makes sure its PCounter is in upper 32K
    > b) switches to Bank 7
    > c) writes something (by convention in FC00 to FFFF area) in theory any
    > place from 8000-FFFF
    > d) switches to Bank 0
    > e) CPU reads the data from its own Bank0 in FC00 to FFFF range
    >
    > That's just my thought of course, *it is somewhat of a shame that the
    > original source code is not available for us to examine.


    thanks for clarifying that for me. The part that I was missing is
    that part B of each RAM card is the part that is common (upper 32k.)

    While Cromix may only Ihe topmost 1k for sharing data, it may be using
    the other 31k of common RAM for loading code to User banks.

    -Howard

  4. Re: cromemco bank switching question for 64KZ-II

    On May 22, 10:54*am, Howard Harte wrote:
    > On May 22, 2:40*am, marcusb wrote:
    >
    >
    >
    >
    >
    > > Hi Howard,

    >
    > > About Cromemco Bank switching, *I thought I understood it well but
    > > your questions had me thinking!

    >
    > > From what I understand

    >
    > > The system memory card sits in Bank 0
    > > The User memory cards sit in Banks 1 through 6

    >
    > > Additionally all memory cards have their top 32K bytes 8000-FFFF
    > > mapped into bank 7

    >
    > > Although this full *32K bytes are mapped z80 cromix chooses only to
    > > use the FC00 to FFFF area to write information into, to communicate
    > > out i.e. information transfer from Bank0 to a user memory area.

    >
    > > Presumably there is no real need for the system to read anything from
    > > another Banks memory since it surely has its own copy in Bank 0. *In
    > > other words: *User 1 executes some code in Bank1. *If it wants to
    > > communicate back to Bank0 it
    > > a) makes sure its PCounter is in upper 32K
    > > b) switches to Bank 7
    > > c) writes something (by convention in FC00 to FFFF area) in theory any
    > > place from 8000-FFFF
    > > d) switches to Bank 0
    > > e) CPU reads the data from its own Bank0 in FC00 to FFFF range

    >
    > > That's just my thought of course, *it is somewhat of a shame that the
    > > original source code is not available for us to examine.

    >
    > thanks for clarifying that for me. *The part that I was missing is
    > that part B of each RAM card is the part that is common (upper 32k.)
    >
    > While Cromix may only Ihe topmost 1k for sharing data, it may be using
    > the other 31k of common RAM for loading code to User banks.
    >
    > -Howard- Hide quoted text -
    >
    > - Show quoted text -

    ---
    Yes, the 64KZs are effectively two independent 32K blocks which can be
    mapped into the upper or lower half of any banks(s), and that's the
    smallest granularity available; 32K or nothing ;-) But I don't see a
    problem reading; presumably you would write to bank 7 (and all cards)
    but only read from the relevant bank.

    Incidentally, the System not only uses bank 0 and 7 but also any
    unused banks so that there is physical memory in all 8 banks
    regardless of whether there is an actual card/block in that bank.

    There is some somewhat relevant info in the multi-user BASIC example
    in the 64KZ manual but I've never found any detailed description of
    how Cromix manages memory; have you, Marcus?

    mike

  5. Re: cromemco bank switching question for 64KZ-II

    On May 22, 9:16*am, MikeS wrote:
    > On May 22, 10:54*am, Howard Harte wrote:
    >
    > > On May 22, 2:40*am, marcusb wrote:

    >
    > > > Hi Howard,

    >
    > > > About Cromemco Bank switching, *I thought I understood it well but
    > > > your questions had me thinking!

    >
    > > > From what I understand

    >
    > > > The system memory card sits in Bank 0
    > > > The User memory cards sit in Banks 1 through 6

    >
    > > > Additionally all memory cards have their top 32K bytes 8000-FFFF
    > > > mapped into bank 7

    >
    > > > Although this full *32K bytes are mapped z80 cromix chooses only to
    > > > use the FC00 to FFFF area to write information into, to communicate
    > > > out i.e. information transfer from Bank0 to a user memory area.

    >
    > > > Presumably there is no real need for the system to read anything from
    > > > another Banks memory since it surely has its own copy in Bank 0. *In
    > > > other words: *User 1 executes some code in Bank1. *If it wants to
    > > > communicate back to Bank0 it
    > > > a) makes sure its PCounter is in upper 32K
    > > > b) switches to Bank 7
    > > > c) writes something (by convention in FC00 to FFFF area) in theory any
    > > > place from 8000-FFFF
    > > > d) switches to Bank 0
    > > > e) CPU reads the data from its own Bank0 in FC00 to FFFF range

    >
    > > > That's just my thought of course, *it is somewhat of a shame that the
    > > > original source code is not available for us to examine.

    >
    > > thanks for clarifying that for me. *The part that I was missing is
    > > that part B of each RAM card is the part that is common (upper 32k.)

    >
    > > While Cromix may only Ihe topmost 1k for sharing data, it may be using
    > > the other 31k of common RAM for loading code to User banks.

    >
    > > -Howard- Hide quoted text -

    >
    > > - Show quoted text -

    >
    > ---
    > Yes, the 64KZs are effectively two independent 32K blocks which can be
    > mapped into the upper or lower half of any banks(s), and that's the
    > smallest granularity available; 32K or nothing ;-) But I don't see a
    > problem reading; presumably you would write to bank 7 (and all cards)
    > but only read from the relevant bank.
    >
    > Incidentally, the System not only uses bank 0 and 7 but also any
    > unused banks so that there is physical memory in all 8 banks
    > regardless of whether there is an actual card/block in that bank.
    >
    > There is some somewhat relevant info in the multi-user BASIC example
    > in the 64KZ manual but I've never found any detailed description of
    > how Cromix manages memory; have you, Marcus?
    >
    > mike


    Have you ever seen Cromix print the error message "cannot open
    console" and go back to the prompt asking for the major and minor root
    device prompt?

    I can't find any documentation on this error.

    I'd like to get Cromix running on my system, but I'm stuck at this
    point.

    The system has a ZPU, 64FDC, and 7 64KZ-II's.

    Thanks

  6. Re: cromemco bank switching question for 64KZ-II

    On May 22, 9:01*pm, Howard Harte wrote:
    > On May 22, 9:16*am, MikeS wrote:
    >
    >
    >
    >
    >
    > > On May 22, 10:54*am, Howard Harte wrote:

    >
    > > > On May 22, 2:40*am, marcusb wrote:

    >
    > > > > Hi Howard,

    >
    > > > > About Cromemco Bank switching, *I thought I understood it well but
    > > > > your questions had me thinking!

    >
    > > > > From what I understand

    >
    > > > > The system memory card sits in Bank 0
    > > > > The User memory cards sit in Banks 1 through 6

    >
    > > > > Additionally all memory cards have their top 32K bytes 8000-FFFF
    > > > > mapped into bank 7

    >
    > > > > Although this full *32K bytes are mapped z80 cromix chooses only to
    > > > > use the FC00 to FFFF area to write information into, to communicate
    > > > > out i.e. information transfer from Bank0 to a user memory area.

    >
    > > > > Presumably there is no real need for the system to read anything from
    > > > > another Banks memory since it surely has its own copy in Bank 0. *In
    > > > > other words: *User 1 executes some code in Bank1. *If it wants to
    > > > > communicate back to Bank0 it
    > > > > a) makes sure its PCounter is in upper 32K
    > > > > b) switches to Bank 7
    > > > > c) writes something (by convention in FC00 to FFFF area) in theory any
    > > > > place from 8000-FFFF
    > > > > d) switches to Bank 0
    > > > > e) CPU reads the data from its own Bank0 in FC00 to FFFF range

    >
    > > > > That's just my thought of course, *it is somewhat of a shame that the
    > > > > original source code is not available for us to examine.

    >
    > > > thanks for clarifying that for me. *The part that I was missing is
    > > > that part B of each RAM card is the part that is common (upper 32k.)

    >
    > > > While Cromix may only Ihe topmost 1k for sharing data, it may be using
    > > > the other 31k of common RAM for loading code to User banks.

    >
    > > > -Howard- Hide quoted text -

    >
    > > > - Show quoted text -

    >
    > > ---
    > > Yes, the 64KZs are effectively two independent 32K blocks which can be
    > > mapped into the upper or lower half of any banks(s), and that's the
    > > smallest granularity available; 32K or nothing ;-) But I don't see a
    > > problem reading; presumably you would write to bank 7 (and all cards)
    > > but only read from the relevant bank.

    >
    > > Incidentally, the System not only uses bank 0 and 7 but also any
    > > unused banks so that there is physical memory in all 8 banks
    > > regardless of whether there is an actual card/block in that bank.

    >
    > > There is some somewhat relevant info in the multi-user BASIC example
    > > in the 64KZ manual but I've never found any detailed description of
    > > how Cromix manages memory; have you, Marcus?

    >
    > > mike

    >
    > Have you ever seen Cromix print the error message "cannot open
    > console" and go back to the prompt asking for the major and minor root
    > device prompt?
    >
    > I can't find any documentation on this error.
    >
    > I'd like to get Cromix running on my system, but I'm stuck at this
    > point.
    >
    > The system has a ZPU, 64FDC, and 7 64KZ-II's.
    >
    > Thanks- Hide quoted text -
    >
    > - Show quoted text -


    Hi Howard,

    Yes, I've certainly seen that message, but it's been a while. As far
    as I know, it means that the loader has finished loading Cromix but it
    can't start up for some reason. Unfortunately it doesn't tell you much
    about the reason...

    If it's hardware, then it's most likely a memory problem; try removing
    all 64KZs except banks 0 and 1 and double check the dip switch
    settings.

    If it's software, then either the Cromix version does not match the
    loader, or the configuration does not match your hardware in some
    crucial way; less likely are software/hardware revision level
    mismatches. Which version of Cromix are you trying to load, and are
    you loading the bare-bones distribution configuration or one that has
    already been installed and configured on another system? 11.27 is the
    latest Z80 release that I've seen, although I think there may have
    been at least one more.

    Maybe Marcus or someone who has a better memory than I can confirm,
    correct or add to my recollections.

    mike

  7. Re: cromemco bank switching question for 64KZ-II

    On May 22, 9:01*pm, Howard Harte wrote:
    > On May 22, 9:16*am, MikeS wrote:
    >
    >
    >
    >
    >
    > > On May 22, 10:54*am, Howard Harte wrote:

    >
    > > > On May 22, 2:40*am, marcusb wrote:

    >
    > > > > Hi Howard,

    >
    > > > > About Cromemco Bank switching, *I thought I understood it well but
    > > > > your questions had me thinking!

    >
    > > > > From what I understand

    >
    > > > > The system memory card sits in Bank 0
    > > > > The User memory cards sit in Banks 1 through 6

    >
    > > > > Additionally all memory cards have their top 32K bytes 8000-FFFF
    > > > > mapped into bank 7

    >
    > > > > Although this full *32K bytes are mapped z80 cromix chooses only to
    > > > > use the FC00 to FFFF area to write information into, to communicate
    > > > > out i.e. information transfer from Bank0 to a user memory area.

    >
    > > > > Presumably there is no real need for the system to read anything from
    > > > > another Banks memory since it surely has its own copy in Bank 0. *In
    > > > > other words: *User 1 executes some code in Bank1. *If it wants to
    > > > > communicate back to Bank0 it
    > > > > a) makes sure its PCounter is in upper 32K
    > > > > b) switches to Bank 7
    > > > > c) writes something (by convention in FC00 to FFFF area) in theory any
    > > > > place from 8000-FFFF
    > > > > d) switches to Bank 0
    > > > > e) CPU reads the data from its own Bank0 in FC00 to FFFF range

    >
    > > > > That's just my thought of course, *it is somewhat of a shame that the
    > > > > original source code is not available for us to examine.

    >
    > > > thanks for clarifying that for me. *The part that I was missing is
    > > > that part B of each RAM card is the part that is common (upper 32k.)

    >
    > > > While Cromix may only Ihe topmost 1k for sharing data, it may be using
    > > > the other 31k of common RAM for loading code to User banks.

    >
    > > > -Howard- Hide quoted text -

    >
    > > > - Show quoted text -

    >
    > > ---
    > > Yes, the 64KZs are effectively two independent 32K blocks which can be
    > > mapped into the upper or lower half of any banks(s), and that's the
    > > smallest granularity available; 32K or nothing ;-) But I don't see a
    > > problem reading; presumably you would write to bank 7 (and all cards)
    > > but only read from the relevant bank.

    >
    > > Incidentally, the System not only uses bank 0 and 7 but also any
    > > unused banks so that there is physical memory in all 8 banks
    > > regardless of whether there is an actual card/block in that bank.

    >
    > > There is some somewhat relevant info in the multi-user BASIC example
    > > in the 64KZ manual but I've never found any detailed description of
    > > how Cromix manages memory; have you, Marcus?

    >
    > > mike

    >
    > Have you ever seen Cromix print the error message "cannot open
    > console" and go back to the prompt asking for the major and minor root
    > device prompt?
    >
    > I can't find any documentation on this error.
    >
    > I'd like to get Cromix running on my system, but I'm stuck at this
    > point.
    >
    > The system has a ZPU, 64FDC, and 7 64KZ-II's.
    >
    > Thanks- Hide quoted text -
    >
    > - Show quoted text -


    PS: If you do temporarily remove the bank 2-6 cards, don't forget to
    change the bank 0 DIP settings accordingly.

    m

  8. Re: cromemco bank switching question for 64KZ-II

    Cannot open console! Yes I had this error several times. Annoyingly
    for me I can't quite remember the solution.

    I think it is along the lines of missing definitions and permissions
    in the /dev directory of the console or root device. So the
    blunderbus approach is usually to

    a) Get a full /dev/ directory on the media you are booting from
    b) Get a distribution Cromix or customised one that has drivers for
    TUART, and 64FDC

    This is all great advice but a bit useless if you don't have a working
    system on which you can mount the non working boot disk, make the
    necessary modifications, and try a reboot.

    In shameless plug mode, binaries for cromemco versions I have are
    listed here

    http://maben.homeip.net/static/S100/...mix/index.html


    Now that I have a working 5.25 Dunfield Image Disk PC working I can
    surely create a working 360K boot diskette for most Cromix versions,
    so if you can unpack such an image let me know, and which Z80 version
    to create, how about 11.27??

  9. Re: cromemco bank switching question for 64KZ-II

    On May 23, 7:38*am, marcusb wrote:
    > Cannot open console! *Yes I had this error several times. *Annoyingly
    > for me *I can't quite remember the solution.
    >
    > I think it is along the lines of missing definitions and permissions
    > in the /dev directory of the console or root device. *So the
    > blunderbus approach is usually to
    >
    > a) Get a full /dev/ directory on the media you are booting from
    > b) Get a distribution Cromix or customised one that has drivers for
    > TUART, and 64FDC
    >
    > This is all great advice but a bit useless if you don't have a working
    > system on which you can mount the non working boot disk, make the
    > necessary modifications, and try a reboot.
    >
    > In shameless plug mode, binaries for *cromemco versions I have are
    > listed here
    >
    > http://maben.homeip.net/static/S100/...ting%20systems...
    >
    > Now that I have a working 5.25 Dunfield Image Disk PC working I can
    > surely create a working 360K boot diskette for most Cromix versions,
    > so if you can unpack such an image let me know, and which Z80 version
    > to create, how about 11.27??


    I can handle ImageDisk (IMD) images no problem, in fact that is my
    preferred format.

    If you can provide any Cromix or CDOS or CP/M disk images that are not
    already on Dave Dunfield's site, that would be great. Those are the
    disk images I am currently using.

    Thanks for the help.

  10. Re: cromemco bank switching question for 64KZ-II

    On May 23, 12:40*pm, Howard Harte wrote:
    > On May 23, 7:38*am, marcusb wrote:
    >
    >
    >
    >
    >
    > > Cannot open console! *Yes I had this error several times. *Annoyingly
    > > for me *I can't quite remember the solution.

    >
    > > I think it is along the lines of missing definitions and permissions
    > > in the /dev directory of the console or root device. *So the
    > > blunderbus approach is usually to

    >
    > > a) Get a full /dev/ directory on the media you are booting from
    > > b) Get a distribution Cromix or customised one that has drivers for
    > > TUART, and 64FDC

    >
    > > This is all great advice but a bit useless if you don't have a working
    > > system on which you can mount the non working boot disk, make the
    > > necessary modifications, and try a reboot.

    >
    > > In shameless plug mode, binaries for *cromemco versions I have are
    > > listed here

    >
    > >http://maben.homeip.net/static/S100/...ting%20systems...

    >
    > > Now that I have a working 5.25 Dunfield Image Disk PC working I can
    > > surely create a working 360K boot diskette for most Cromix versions,
    > > so if you can unpack such an image let me know, and which Z80 version
    > > to create, how about 11.27??

    >
    > I can handle ImageDisk (IMD) images no problem, in fact that is my
    > preferred format.
    >
    > If you can provide any Cromix or CDOS or CP/M disk images that are not
    > already on Dave Dunfield's site, that would be great. *Those are the
    > disk images I am currently using.
    >
    > Thanks for the help.- Hide quoted text -
    >
    > - Show quoted text -


    Which version are you trying to load? I think he has about 6 or 7
    different ones, although some may be duplicates. Even if you download
    good 11.27 disks from Marcus I'd still be curious to see what's wrong
    with the ones you're trying to install, so what are your IMD file
    names?

    TIA and good luck!

    BTW, what kind of chassis are you putting these in? Can't be your
    System 1 ;-)

    You probably already know this but it's particularly easy to put an HD
    5 1/4 drive on the 64FDC; just add 1 jumper for the READY line and you
    can put it on the same 34-pin cable as the DD drive, and then you can
    save a little time & trouble by using 8" images.

    m

  11. Re: cromemco bank switching question for 64KZ-II

    On May 23, 9:57*am, MikeS wrote:
    > On May 23, 12:40*pm, Howard Harte wrote:
    >
    >
    >
    > > On May 23, 7:38*am, marcusb wrote:

    >
    > > > Cannot open console! *Yes I had this error several times. *Annoyingly
    > > > for me *I can't quite remember the solution.

    >
    > > > I think it is along the lines of missing definitions and permissions
    > > > in the /dev directory of the console or root device. *So the
    > > > blunderbus approach is usually to

    >
    > > > a) Get a full /dev/ directory on the media you are booting from
    > > > b) Get a distribution Cromix or customised one that has drivers for
    > > > TUART, and 64FDC

    >
    > > > This is all great advice but a bit useless if you don't have a working
    > > > system on which you can mount the non working boot disk, make the
    > > > necessary modifications, and try a reboot.

    >
    > > > In shameless plug mode, binaries for *cromemco versions I have are
    > > > listed here

    >
    > > >http://maben.homeip.net/static/S100/...ting%20systems....

    >
    > > > Now that I have a working 5.25 Dunfield Image Disk PC working I can
    > > > surely create a working 360K boot diskette for most Cromix versions,
    > > > so if you can unpack such an image let me know, and which Z80 version
    > > > to create, how about 11.27??

    >
    > > I can handle ImageDisk (IMD) images no problem, in fact that is my
    > > preferred format.

    >
    > > If you can provide any Cromix or CDOS or CP/M disk images that are not
    > > already on Dave Dunfield's site, that would be great. *Those are the
    > > disk images I am currently using.

    >
    > > Thanks for the help.- Hide quoted text -

    >
    > > - Show quoted text -

    >
    > Which version are you trying to load? I think he has about 6 or 7
    > different ones, although some may be duplicates. Even if you download
    > good 11.27 disks from Marcus I'd still be curious to see what's wrong
    > with the ones you're trying to install, so what are your IMD file
    > names?
    >
    > TIA and good luck!
    >
    > BTW, what kind of chassis are you putting these in? Can't be your
    > System 1 ;-)
    >
    > You probably already know this but it's particularly easy to put an HD
    > 5 1/4 drive on the 64FDC; just add 1 jumper for the READY line and you
    > can put it on the same 34-pin cable as the DD drive, and then you can
    > save a little time & trouble by using 8" images.
    >
    > m


    You're right, it's not my System One, it's actually in simulation, so
    that might be part of the problem!

    I'm preparing for the ressurrction of 86DOS, so I'm trying to make
    sure the simulated 4/16/64FDC is good. I can run both the CDOS258 5"
    and 8" IMD images fine, and the CRCPM64 and 48 images boot, but it
    appears that the first sector of each file is corrupt, so maybe it's a
    simulation bug and that's why Cromix doesn't come up. I was thinking
    maybe the CP/M images were bad, but maybe not.

+ Reply to Thread