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