C16 und Plus/4 Expansionsport
Suche
Index
FAQ
Kontakt
Zurück


Der Expansionsport



Der Expansionsport des C16 und Plus/4 ist leider nur eingeschränkt nutzbar. Es sind zwar alle Signal-, Daten- und Adressleitungen vorhanden, jedoch sind nur 16 Byte freier Adressraum verfügbar, die auch noch selbst dekodiert werden müssen.
Zudem wird dieser Bereich beim Systemstart noch initialisiert, da $fd20 ursprünglich für die Speecherweiterung vorgesehen war, die jedoch nicht im Plus/4 verbaut wurde.
Mit dem Expansionsport können ROM-Module eingeblendet werden, die entweder per "CBM"-Kennung oder durch Programm aktiviert werden können.

Bild


PIN  SIGNAL     Verwendung                           PIN  SIGNAL     Verwendung
1     GND        Masse                               A     GND        Masse
2     +5V        Versorgung                          B     C1_Low     Cartridge 1 Low(-Bank)
3     +5V        Versorgung                          C     _RESET     /RESET
4     _IRQ       Interrupt Request                   D     RAS        Row Address Signal
5     C-R/W_     Read/Write  1/0                     E     PHI2       Systemtakt
6     C1_High    Cartridge 1 High(-Bank)             F     A15        Adressleitung
7     C2_Low     Cartridge 2 Low(-Bank)              H     A14        Adressleitung
8     C2_High    Cartridge 2 High(-Bank)             J     A13        Adressleitung
9     CS1_       Chip Select 1 (internes Banking)    K     A12        Adressleitung
10    CS2_       Chip Select 2 (internes Banking)    L     A11        Adressleitung
11    CAS        Column Address Signal               M     A10        Adressleitung
12    MUX        Address Multiplexing                N     A9         Adressleitung
13    BA         Bus available (CPU=1)               P     A8         Adressleitung
14    CD7        Datenbit 7                          R     A7         Adressleitung
15    CD6        Datenbit 6                          S     A6         Adressleitung
16    CD5        Datenbit 5                          T     A5         Adressleitung
17    CD4        Datenbit 4                          U     A4         Adressleitung
18    CD3        Datenbit 3                          V     A3         Adressleitung
19    CD2        Datenbit 2                          W     A2         Adressleitung
20    CD1        Datenbit 1                          X     A1         Adressleitung
21    CD0        Datenbit 0                          Y     A0         Adressleitung
22    AEC        Address Enable Control              Z     NC         Nicht verwendet
23    EXAUD      Extern Audio                        AA    NC         Nicht verwendet
24    PHI2       Systemtakt                          BB    NC         Nicht verwendet
25    GND        Masse                               CC    GND        Masse




Bild

Die originale Schaltung eines Plus/4-Cartridge (Logo-Cartridge):

Bild

Im Bild sieht man die Beschaltung der Low-Bank mit dem 23128 ROM (16Kbytex8). Die andere Seite ist identisch und verwendet entsprechend die C1 High-Leitung.

Das ROM-Banking:


LO ROM and HI ROM are determined by writing
to the appropriate ROM LATCH address.

BANK ROM LATCH   LO ROM              HI ROM

 $00 FDD0        BASIC               KERNAL
 $01 FDD1        (FUNCTION LO)       KERNAL
 $02 FDD2        CARTRIDGE 1 LO      KERNAL
 $03 FDD3        CARTRIDGE 2 LO      KERNAL
 $04 FDD4        BASIC               (FUNCTION HI)
 $05 FDD5        (FUNCTION LO)       (FUNCTION HI)
 $06 FDD6        CARTRIDGE 1 LO      (FUNCTION HI)
 $07 FDD7        CARTRIDGE 2 LO      (FUNCTION HI)
 $08 FDD8        BASIC               CARTRIDGE 1 HI
 $09 FDD9        (FUNCTION LO)       CARTRIDGE 1 HI
 $0a FDDA        CARTRIDGE 1 LO      CARTRIDGE 1 HI
 $0b FDDB        CARTRIDGE 2 LO      CARTRIDGE 1 HI
 $0c FDDC        BASIC               CARTRIDGE 2 HI
 $0d FDDD        (FUNCTION LO)       CARTRIDGE 2 HI
 $0e FDDE        CARTRIDGE 1 LO      CARTRIDGE 2 HI
 $0f FDDF        CARTRIDGE 2 LO      CARTRIDGE 2 HI
  ( ) NOT AVAILABLE ON THE C16



Auswahl per Software:

ldx $bank ; siehe Tabelle
sta $ffd0,x
stx $fb
rts


So blendet man die ROMs per Software ein. Man sollte dabei aber immer im Hinterkopf behalten, dass es sehr unschöne Nebeneffekte haben kann, wenn man sich z.B. das Kernal ausblendet. ;)

ROM-Erkennung beim Systemstart



Wenn ab $8007,x die Kennung "cbm" gefunden wird, springt das Kernal die Adresse $8000 an. Das entspricht Bank $02 oder Select-Leitung C1_Low mit ROM ab $8000.

        ; *********************************************
        ;
        ; Check for ROM's.
        ; Here we search for the ROM sig (cbm) at $8007
        ;
        ; *********************************************
LFC1E   LDX   #$03
        STX   $96
        LDA   #$00
LFC24   STA   $05EC,x
        DEX
        BPL   LFC24
LFC2A   LDX   $96
        LDA   $FC7B,x
        TAX
        STA   $FDD0,x
        LDY   #$02
LFC35   LDA   $8007,y
        CMP   $FC56,y
        BNE   LFC51
        DEY
        BPL   LFC35
        LDA   $8006
        LDX   $96
        STA   $05EC,x
        CMP   #$01
        BNE   LFC51
        STX   $FB
        JSR   L8000
LFC51   DEC   $96
        BPL   LFC2A
        RTS

        db    $43,$42,$4d             ; ROM ID  "cbm"




Die freie Adresse $FD20



Der Initialisierungs-Code im Startup des ROM:

        LDA   #$09
        STA   $FD20
        ORA   #$80
        STA   $FD20


Die freie Adresse $fd20-$fd2f kann für eigene Anwendungen dekodiert oder direkt die passende Select-Leitung am PLA verwendet werden. Dabei muss jedoch beachtet werden, dass obiger Schreibzugriff auf $fd20 einige Bits setzt. Die drei gesetzten Bit %10001001 können dann vielleicht trickreich verwendet werden oder A0 mit in die Dekodierung mit eingebunden werden. Dann muss zumindest es $fd21 werden, wenn %00000000 ($00) nach dem Start des Rechners vorliegen sollen.

Prinzipiell kann man auch im unteren Adressraum des RAM, z.B. $1000-$4000 eine Adresse ausschließlich (!) zum Schreiben verwenden. Hierbei ist aber zu beachten, dass auch ins RAM in dem gewählten Bereich geschrieben wird und Lesen nicht stattfinden kann ! - Die Treiber der Erweiterung und des RAM arbeiten dann gegeneinander.


Unvollendetes:



Hier noch ein kleiner Ansatz als Inspiration. Das Cartridge verwendet $df2x zum Schalten der Register und zwei 010er Flash-ROMs zur Aufnahme vieler einzelner ROM-Images. Die Steuersoftware wird im Low-ROM Bank $00 untergebracht und wird beim Startup zuerst aktiviert. So sollte eine komfortable Auswahl der gespeicherten ROMs möglich sein.

Wie man im Bild erkennen kann, ist die Dekodierung mehr als holprig mit Standard-TTLs. Da wäre wohl zumindest ein GAL 20V8 oder CPLD angebracht.

Image


 

Letzte Änderung: 2019-01-03 11:08:27
  Rubrik:  C16
Rubriken-Übersicht
 3 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!