Beiträge von GI-Joe im Thema „Verständnisfrage CIA, Tastatur, Joystick“

    Oder arbeitet das mit einer Art Latch und wenn ich lese wird kurzfristig auf Eingang umgeschaltet?

    genau so.
    Und da an den Ports interne PullUps hängen, schalten die Joysticks direkt gegen GND
    Setzt Du einen Port auf Ausgang (DDR=1) und schreibst in den Port ein #$00, dann ist der Port nur so lange auf #$00, solange du diesen Port nicht ausliest.
    So kannst Du direkt die Joysticks abfragen, Joy1 mit LDA$DC01 und Joy2 mit LDA$DC00 (natürlich mit anschließender Auswertung der Bits 0-4).

    EDIT:
    nur der gleichzeitige Druck einer "passenden" Taste könnte Dir da in die Suppe spucken, sofern der jeweils andere Port eines der Bit´s 0-4 noch auf 0 gesetzt hat.

    Denn wenn Port2 ja wirklich dauerhaft als Ausgang programmiert ist frage ich mich in der Tat wie das klappt.

    wenn ein Port auf Ausgang gesetzt wurde, wird trotzdem bei einem READ-Zugriff der Pegelstatus an den Portpins übergeben.
    Also ist bei DDR=1 Lesen und Setzen der Ports möglich, bei DDR=0 ist nur Lesen möglich - auch wenn du ein STA auf den Port machen würdest (so sagt es zumindest das Datenblatt des 6526).

    siehe auch Bitte melde dich an, um diesen Link zu sehen.

    Was würde eigentlich passieren wenn man beide DDR der CIA auf Ausgang programmiert und dann eine Taste drückt? Die Ausgänge kollidieren dann ja, könnte das einen Schaden an der CIA verursachen (aka 'Killerpoke')?

    Das Datenblatt der NMOS6526 sagt "CMOS-compatible I/O-lines" - sind also quasi kurzschlußfest (also nicht niederohmig - sonst wäre solch ein "POKE" in der Tat ein Overkill). Die meisten CIA´s sterben durch statische Überladung/Potentialunterschiede von außen oder durch zu hohe Stromversorgung.

    Joy2 Abfrage ? Is mir neu, daß es dafür ne Kernal-Routine gibt ( oder macht $FFE4 die Joysticks mit (bin mir gerad nich sicher)).
    Joystick-Abfragen macht man doch eigentlich direkt mit Setzen/Auswertungen von $DC00/$DC01 (bzw. $DC01/$DC00) - ich seh da jetzt kein Problem ....

    EDIT:
    aufpassen mußte man nur beim DTV, weil sich da nur 1 der beiden Ports auf Ausgang schalten lässt.