Cromemco 256KZ Bank Addressing ?
Randy McLaughlin
cctalk at randy482.com
Thu Apr 7 10:04:26 CDT 2005
From: "Randy McLaughlin" <cctalk at randy482.com>
Sent: Thursday, April 07, 2005 3:33 AM
> There is a maximum of 7 64K banks, adding 80H to the bank code makes
> 8000-FFFF is a common write area bank.
>
> Banks are selected by outputting to port 40H basically 2^n for the output
> data, bank 0=1, bank 1=2,...,bank 6=40H.
>
> Normally you start with bank 0 + common (output a 9 to port 40h). This
> gives you access to lower 32K as bank 0 and upper 32K as write all banks.
I should never post when I have insomnia, that should be 81H to port 40H.
> You copy code from lower 32K to upper 32K that is common, reading the
> upper 32K when all are enabled would make no sense but when you write to
> upper 32K it writes to all banks.
>
> Now jump to upper 32K to the common code and select desired bank.
>
> Now you have 64K of watever bank you want. When you switch banks you just
> make sure to stay in the common code.
>
> To copy data from one bank to another copy the data to lower 32K jump to
> lower 32K enable current bank+common bank (add 80H to bank) to make top
> 32K write to all banks. Now copy desired data to data buffer in upper RAM
> and it will write out to all banks. Reselect current bank without adding
> common bank, jump back to upper bank, select desired bank and you are in
> the desired bank with data from previous bank.
>
>
> You only need a small reserved area in upper RAM for common, the lower
> area used for transferring data can either be a second reserved area or
> just a temporary area that gets saved and restored between switches.
>
>
> Please note this only allows for 448K of bank switched RAM but on a Z80
> running at 4mhz this means 6 users (1 for system + 6 for users).
>
> It a fairly complicated scheme but it gives 64K to each bank (minus maybe
> 1K).
Randy
www.s100-manuals.com
More information about the cctalk
mailing list