CPU-Board

Das CPU-Board beinhaltet neben dem 65c02-Prozessor  64k RAM in der Organisation,  2 + 32k* 8 in Form von 2 62256 SRAM-Bausteinen. Für SRAM haben wir uns schlichtweg der Einfachheit halber entschieden, denn so benötigt das Steckschwein keinen DRAM-Controller, und SRAMs sind inzwischen einfach und günstig zu bekommen.
Das ROM besteht aus einem 28c256 EEPROM, von dem 8k in den Adressbereich ab $e000 eingeblendet sind.
Desweiteren sind auf dem CPU-Board noch der Reset-Schaltkreis und der Taktgenerator untergebracht.

cpu_mem_rdy

Zentrale CPU/Memory Baugruppe

decoder

Adressdekoder und RDY-Generator

 

Zusammengehalten wird all dies durch den Kern der CPU/Memory-Baugruppe: den Adressdekoder.

Dieser sorgt für die Zuordung (Mapping) der einzelnen Komponenten in eigene Bereiche des Adressraums. Der eigentliche Dekoder ist in einem GAL22V10 untergebracht und dekodiert die oberen 12 Bit des Adressbus.

		GAL22V10

	  -------___/-------
      A15 |  1           24 | VCC
	  |                 |
      A14 |  2           23 | CSIO	- /ENABLE für einen nachgelagerten 74HCT139 für weitere 4 io-enable pins von $0240 bis $0270
	  |                 |
      A13 |  3           22 | MEMCTL	- /CS für das "Memory Mapping Control-Latch" an Adresse $02f0
	  |                 |
      A12 |  4           21 | CSVDP	- /CS für den VDP TMS9929 an Adresse $0220
	  |                 |
      A11 |  5           20 | CSVIA	- /CS für die VIA 65c22   an Adresse $0210
	  |                 |
      A10 |  6           19 | CSUART	- /CS für den UART  16550 an Adresse $0200
	  |                 |
       A9 |  7           18 | CSHIRAM	- /CS für den "oberen"  62256 von $8000-$DFFF($FFFF)
	  |                 |
       A8 |  8           17 | CSLORAM	- /CS für den "unteren" 62256 von $0000-$7FFF
	  |                 |
       A7 |  9           16 | CSROM	- /CS für das ROM von $E000-$FFFF
	  |                 |
       A6 | 10           15 | ROMOFF	- Wenn H, wird das ROM in $E000-$FFFF ausgeblendet um das darunterliegende RAM lesbar zu machen
	  |                 |		  Ist mit Bit 1 des "Memory Mapping Control-Latch" verbunden
       A5 | 11           14 | RW
	  |                 |
      GND | 12           13 | A4
	  -------------------

Dadurch ist es möglich, den Adressraum mit einer Granularität von 16byte zu unterteilen. Zusätzlich wird die R/W-Leitung des Prozessors sowie ein Steuerpin ROMOFF ausgewertet, um das Memory-Mapping zur Laufzeit zu steuern. Schreibzugriffe in den ROM-Bereich von $E000-$FFFF landen im darunterliegenden RAM. Ist ROMOFF High, wird das ROM ausgeblendet, sodass sich das dort liegende RAM lesen läßt. ROMOFF ist mit Bit 1 des „Memory Mapping Control-Latch“ verbunden, sodass sich durch schreiben einer 1 nach $02f0 das ROM ausblenden und mit Schreiben einer 0 nach $02f0 wieder einblenden läßt. Das Memory-Mapping ist wie folgt:

Adresse Beschreibung
$0000-$00ff Zeropage Durch CPU vorgegeben
$0100-$01ff Stack Durch CPU vorgegeben
$0200-$02ff IO-Bereich
$0300-$7fff RAM
$8000-$dfff RAM
$e000-$ffff ROM/RAM

Da das verwendete EEPROM 28C256 32k * 8 gross ist, und wir nur 8k davon nutzen, sind dessen Adressleitungen A13 und A14 mit den Bits 1 und 2 des Latches verbunden. Somit ist das EEPROM in 4 Bänke a 8k unterteilt, die sich per Software anwählen lassen.