FTPC2C64

Fischertechnik Computing PC Interface am C64

Da das Fischertechnik Computing Interface für den C64 (Modell 30562 Commodore) nicht mehr so leicht aufzutreiben ist, habe ich mir die Mühe gemacht und einen Adapterstecker entworfen, mit dem man das noch leichter erhältliche Interface für den PC (Modell 30520 Universal) am Userport des C64 betreiben kann.

Nachbau auf eigene Gefahr!

Um mit einer einseitigen Platine auszukommen, mußte ich leider einen Kompromiss eingehen und ein Kabel von Pin 6 des Userportsteckers zum als “TP1” herausgeführten Pin 17 des Interfacesteckers ziehen. Das ist das weiße Kabel im Foto unten:

Mit dem oben beschrieben Adapterstecker kann das Interface am C64 mit der original Software betrieben werden. Sie kann im Netz heruntergeladen werden. Z.B. in der Emuecke: http://www.emu-ecke.de/index.htm?http://people.freenet.de/electronic-man/hardware/hardware/fischertechnik.htm

Hier die Bilder und Eagle-Dateien in einem Paket:

ftpc2c64.zip

Ansteuerung des Interfaces:

Für Interessierte hier noch das Impuls- und Blockdiagramm zum Universalinterface.

Man beachte, dass der C64, im Gegensatz zum PC, einen modulierten “Count In”-Impuls erwartet, da er die Anzahl der Impulse zählt und nicht die Dauer eines einzelnen Impulses.

Höhere Genauigkeit für EX und EY

Der C64 misst die Analogwerte im Vergelich zum PC zwar schon recht genau, aber mit den beiliegenden 4k7-Potis erreicht man u.U. dennoch nur Werte zwischen 20 und 150 für EX und EY.

Mit folgender Änderung wird die Auflösung erhöht, indem der Timer den Systemtakt des C64 zählt, solange Count In einen High-Pegel hat. Der Wertebereich für die Potis liegt damit (bei meinem Interface) zwischen 115 und 1200. (ACME Code):

    ;--------------------------------------
    ; Analogwert für EX oder EY ermitteln
    ; Variante mit beiden Timern
    ;--------------------------------------
    .lce8b
    sty $d07a      ; Super CPU auf 1 MHz

    lda #$01
    sta $dd04      ; Timer A L
    lda #$00
    sta $dd05      ; Timer A H

    lda #$ff
    sta $dd06      ; Timer B L
    sta $dd07      ; Timer B H

    lda #%10010001 ; 50Hz, Count Sys, Load Latch, Cont after Underflow, Start Timer
    sta $dd0e      ; cra (Timer A)

    lda #%11111001 ; 50Hz, Count OV CRA when CNT, Load Latch, Cont after Underflow, Start Timer
    sta $dd0f      ; crb (Timer B)

    ; Umwandlung starten
    stx $dd01      ; aus USR EX=#%00100010 (DATA IN,-,TR.Y,LOAD_IN) oder EX=#%00010010  (DATA IN,-,TR.X,LOAD_IN)
                   ; Achtung TR.X und TR.Y sind LO-aktiv
    ldx #%0011101  ; Tr.Y, Tr. X, Clock, Load In
    stx $dd01

    .loop1
    lda $dd01      ; warten auf Beginn Lo Impuls
    and #%10000000 ; Data In prüfen
    bne .loop1

    ; warten auf Ende Lo Impuls
    .loop
    lda $dd01
    and #%10000000 ; Data In prüfen
    beq .loop

    .fin
    sty $d07b        ; Super CPU wieder auf 0MHz
    ldx #%00111000   ; Tr. Y, Tr. X, Clock
    stx $dd01 
    sec
    lda #$ff
    sbc $dd06        ; Timer B L
    tay
    lda #$ff
    sbc $dd07        ; Timer B H
    jsr $b391        ; an Basic zurückggeben
    ldx #$00
    beq .lce89       ; und zurück

Pinbelegungen und weitere Adapter

C64 Adapter für Interface  Modell 30520 Universal
    Pin userport  Interface   Beschreibung
    ----------------------------------------------------
     A GND     - 2          Ground
     C PB0     - 13         Load Out
     D PB1     - 14         Load In
     E PB2     - 11         Data out
     F PB3     - 12         Clock
     H PB4     - 9          Trigger X
     J PB5     - 10         Trigger Y
     L PB7     - 3          Data In
     6 CNT2    - 17         Count In (C64)

Folgende Pins des Interfaces müssen jeweils miteinander verbunden werden:

 1,2
 19,20
 5,7
 6,8

PC Adapter für Interface Modell 30520 Universal

    Pin Centr.    Interface   Beschreibung
    ----------------------------------------------------
     2 Data1   - 13         Load Out
     3 Data2   - 14         Load In
     4 Data3   - 11         Data out
     5 Data4   - 12         Clock
     6 Data5   - 9          Trigger X
     7 Data6   - 10         Trigger Y
    11 Busy    - 3          Data In / Count In (PC)
    18 GND     - 2          Ground

    Folgende Pins des Interfaces müssen jeweils miteinander verbunden werden:

     1,2
     19,20
     5,7
     6,8

C64 Adapter für Interfaces, die direkt am PC Printerport angeschlossen sind

Centronics Adapterplatine PC Sub.D-25
----------------------------------------------------
GND  A ------ GND --------- 18 GND
PB0  C ------ Load Out ---- 2 Data 1
PB1  D ------ Load In ----- 3 Data 2
PB2  E ------ Data Out ---- 4 Data 3
PB3  F ------ Clock ------- 5 Data 4
PB4  H ------ Trigger X --- 6 Data 5
PB5  J ------ Trigger Y --- 7 Data 6
PB6  K ------ Takt -------- -
PB7  L ------ Data In ----- 11 Busy
CNT2 6 ------ Count In ---- 10 /Ackn *
Achtung: Pin 10 am Sub-D Stecker muss eventuell nachträglich
         mit Pin 18 des Flachbandkabels verbunden werden, denn
         bei der PC Adapterplatine fehlt diese Verbindung.
         Siehe weißes Kabel unten.