NEO-ZMC: Difference between revisions
Cyberwillis (talk | contribs) |
Cyberwillis (talk | contribs) |
||
Line 76: | Line 76: | ||
!DWORD (SDA[15..0]) | !DWORD (SDA[15..0]) | ||
!BANK | !BANK | ||
!RANGE (M1 A[18..0]) | !INPUT RANGE (SDA[15..0]) | ||
!OUTPUT RANGE (M1 A[18..0]) | |||
|- | |- | ||
|$8003 | |$8003 | ||
|bank 00 | |bank 00 | ||
|$8000~$BFFF | |||
|$00000~$03FFF | |$00000~$03FFF | ||
|- | |- | ||
|$8103 | |$8103 | ||
|bank 01 | |bank 01 | ||
|$8000~$BFFF | |||
|$04000~$07FFF | |$04000~$07FFF | ||
|- | |- | ||
|$8203 | |$8203 | ||
|bank 02 | |bank 02 | ||
|$8000~$BFFF | |||
|$08000~$0BFFF | |$08000~$0BFFF | ||
|- | |- | ||
|$8303 | |$8303 | ||
|bank 03 | |bank 03 | ||
|$8000~$BFFF | |||
|$0C000~$0FFFF | |$0C000~$0FFFF | ||
|- | |- | ||
|$8403 | |$8403 | ||
|bank 04 | |bank 04 | ||
|$8000~$BFFF | |||
|$10000~$13FFF | |$10000~$13FFF | ||
|- | |- | ||
|$8503 | |$8503 | ||
|bank 05 | |bank 05 | ||
|$8000~$BFFF | |||
|$14000~$17FFF | |$14000~$17FFF | ||
|- | |- | ||
|$8603 | |$8603 | ||
|bank 06 | |bank 06 | ||
|$8000~$BFFF | |||
|$18000~$1BFFF | |$18000~$1BFFF | ||
|- | |- | ||
|$8703 | |$8703 | ||
|bank 07 | |bank 07 | ||
|$8000~$BFFF | |||
|$1C000~$1FFFF | |$1C000~$1FFFF | ||
|- | |- | ||
|$8803 | |$8803 | ||
|bank 08 | |bank 08 | ||
|$8000~$BFFF | |||
|$20000~$23FFF | |$20000~$23FFF | ||
|- | |- | ||
|$8903 | |$8903 | ||
|bank 09 | |bank 09 | ||
|$8000~$BFFF | |||
|$24000~$27FFF | |$24000~$27FFF | ||
|- | |- | ||
|$8A03 | |$8A03 | ||
|bank 10 | |bank 10 | ||
|$8000~$BFFF | |||
|$28000~$2BFFF | |$28000~$2BFFF | ||
|- | |- | ||
|$8B03 | |$8B03 | ||
|bank 11 | |bank 11 | ||
|$8000~$BFFF | |||
|$2C000~$2FFFF | |$2C000~$2FFFF | ||
|- | |- | ||
|$8C03 | |$8C03 | ||
|bank 12 | |bank 12 | ||
|$8000~$BFFF | |||
|$30000~$33FFF | |$30000~$33FFF | ||
|- | |- | ||
|$8D03 | |$8D03 | ||
|bank 13 | |bank 13 | ||
|$8000~$BFFF | |||
|$34000~$37FFF | |$34000~$37FFF | ||
|- | |- | ||
|$8E03 | |$8E03 | ||
|bank 14 | |bank 14 | ||
|$8000~$BFFF | |||
|$38000~$3BFFF | |$38000~$3BFFF | ||
|- | |- | ||
|$8F03 | |$8F03 | ||
|bank 15 | |bank 15 | ||
|$8000~$BFFF | |||
|$3C000~$3FFFF | |$3C000~$3FFFF | ||
|- | |- | ||
|$9003 | |$9003 | ||
|bank 16 | |bank 16 | ||
|$8000~$BFFF | |||
|$40000~$43FFF | |$40000~$43FFF | ||
|- | |- | ||
|$9103 | |$9103 | ||
|bank 17 | |bank 17 | ||
|$8000~$BFFF | |||
|$40000~$47FFF | |$40000~$47FFF | ||
|- | |- | ||
|$9203 | |$9203 | ||
|bank 18 | |bank 18 | ||
|$8000~$BFFF | |||
|$40000~$4BFFF | |$40000~$4BFFF | ||
|- | |- | ||
|$9303 | |$9303 | ||
|bank 19 | |bank 19 | ||
|$8000~$BFFF | |||
|$40000~$4FFFF | |$40000~$4FFFF | ||
|- | |- | ||
|$9403 | |$9403 | ||
|bank 20 | |bank 20 | ||
|$8000~$BFFF | |||
|$50000~$53FFF | |$50000~$53FFF | ||
|- | |- | ||
|$9503 | |$9503 | ||
|bank 21 | |bank 21 | ||
|$8000~$BFFF | |||
|$54000~$57FFF | |$54000~$57FFF | ||
|- | |- | ||
|$9603 | |$9603 | ||
|bank 22 | |bank 22 | ||
|$8000~$BFFF | |||
|$58000~$5BFFF | |$58000~$5BFFF | ||
|- | |- | ||
|$9703 | |$9703 | ||
|bank 23 | |bank 23 | ||
|$8000~$BFFF | |||
|$5C000~$5FFFF | |$5C000~$5FFFF | ||
|- | |- | ||
|$9803 | |$9803 | ||
|bank 24 | |bank 24 | ||
|$8000~$BFFF | |||
|$60000~$63FFF | |$60000~$63FFF | ||
|- | |- | ||
|$9903 | |$9903 | ||
|bank 25 | |bank 25 | ||
|$8000~$BFFF | |||
|$64000~$67FFF | |$64000~$67FFF | ||
|- | |- | ||
|$9A03 | |$9A03 | ||
|bank 26 | |bank 26 | ||
|$8000~$BFFF | |||
|$68000~$6BFFF | |$68000~$6BFFF | ||
|- | |- | ||
|$9B03 | |$9B03 | ||
|bank 27 | |bank 27 | ||
|$8000~$BFFF | |||
|$6C000~$6FFFF | |$6C000~$6FFFF | ||
|- | |- | ||
|$9C03 | |$9C03 | ||
|bank 28 | |bank 28 | ||
|$8000~$BFFF | |||
|$70000~$73FFF | |$70000~$73FFF | ||
|- | |- | ||
|$9D03 | |$9D03 | ||
|bank 29 | |bank 29 | ||
|$8000~$BFFF | |||
|$74000~$77FFF | |$74000~$77FFF | ||
|- | |- | ||
|$9E03 | |$9E03 | ||
|bank 30 | |bank 30 | ||
|$8000~$BFFF | |||
|$78000~$7BFFF | |$78000~$7BFFF | ||
|- | |- | ||
|$9F03 | |$9F03 | ||
|bank 31 | |bank 31 | ||
|$8000~$BFFF | |||
|$7C000~$7FFFF | |$7C000~$7FFFF | ||
|} | |} | ||
[[Category:Chips]] | [[Category:Chips]] |
Revision as of 20:15, 23 December 2011
Z80 memory controller. Has a hardwired 32KiB bank and switchable 16/8/4/2KiB banks arranged as a register file. To save pins the high address lines (A15-A8) are used for data input. The chip's write strobe is (port) address decoded inside the console.
Pinout
OpenOffice Draw file: File:Neo-zmc.odg
Operation
SDA10,SDA9,SDA8 are the bank selector and SDA1,SDA0 is the bank size selector
SDA1,SDA0 = 0,0 select bank ranges of 2Kbytes (64k M1)
SDA1,SDA0 = 0,1 select bank ranges of 4Kbytes (128k M1)
SDA1,SDA0 = 1,0 select bank ranges of 8Kbytes (256k M1)
SDA1,SDA0 = 1,1 select bank ranges of 16Kbytes (512k M1)
SDRD0 is the memory operation selector WRITE (set bank and range size) / READ (access M1 based in previous configuration)
Details:
We must put SDRD0 is in high logic level before configure any bank;
To configure a bank to be accessed (e.g. bank0):
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8003 (select bank 0 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $00000~$03FFF;
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8103 (select bank 1 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $04000~$07FFF;
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8203 (select bank 2 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $08000~$0BFFF;
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8303 (select bank 3 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $0C000~$0FFFF;
... and so on...
DWORD (SDA[15..0]) | BANK | INPUT RANGE (SDA[15..0]) | OUTPUT RANGE (M1 A[18..0]) |
---|---|---|---|
$8003 | bank 00 | $8000~$BFFF | $00000~$03FFF |
$8103 | bank 01 | $8000~$BFFF | $04000~$07FFF |
$8203 | bank 02 | $8000~$BFFF | $08000~$0BFFF |
$8303 | bank 03 | $8000~$BFFF | $0C000~$0FFFF |
$8403 | bank 04 | $8000~$BFFF | $10000~$13FFF |
$8503 | bank 05 | $8000~$BFFF | $14000~$17FFF |
$8603 | bank 06 | $8000~$BFFF | $18000~$1BFFF |
$8703 | bank 07 | $8000~$BFFF | $1C000~$1FFFF |
$8803 | bank 08 | $8000~$BFFF | $20000~$23FFF |
$8903 | bank 09 | $8000~$BFFF | $24000~$27FFF |
$8A03 | bank 10 | $8000~$BFFF | $28000~$2BFFF |
$8B03 | bank 11 | $8000~$BFFF | $2C000~$2FFFF |
$8C03 | bank 12 | $8000~$BFFF | $30000~$33FFF |
$8D03 | bank 13 | $8000~$BFFF | $34000~$37FFF |
$8E03 | bank 14 | $8000~$BFFF | $38000~$3BFFF |
$8F03 | bank 15 | $8000~$BFFF | $3C000~$3FFFF |
$9003 | bank 16 | $8000~$BFFF | $40000~$43FFF |
$9103 | bank 17 | $8000~$BFFF | $40000~$47FFF |
$9203 | bank 18 | $8000~$BFFF | $40000~$4BFFF |
$9303 | bank 19 | $8000~$BFFF | $40000~$4FFFF |
$9403 | bank 20 | $8000~$BFFF | $50000~$53FFF |
$9503 | bank 21 | $8000~$BFFF | $54000~$57FFF |
$9603 | bank 22 | $8000~$BFFF | $58000~$5BFFF |
$9703 | bank 23 | $8000~$BFFF | $5C000~$5FFFF |
$9803 | bank 24 | $8000~$BFFF | $60000~$63FFF |
$9903 | bank 25 | $8000~$BFFF | $64000~$67FFF |
$9A03 | bank 26 | $8000~$BFFF | $68000~$6BFFF |
$9B03 | bank 27 | $8000~$BFFF | $6C000~$6FFFF |
$9C03 | bank 28 | $8000~$BFFF | $70000~$73FFF |
$9D03 | bank 29 | $8000~$BFFF | $74000~$77FFF |
$9E03 | bank 30 | $8000~$BFFF | $78000~$7BFFF |
$9F03 | bank 31 | $8000~$BFFF | $7C000~$7FFFF |