Beiträge von BladeRunner im Thema „Verständnisfrage CIA, Tastatur, Joystick“

    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 ....


    Ich bezog mich auch hier auf die Bitte melde dich an, um diesen Link zu sehen.
    Da ja bei Port 2 andere Werte anliegen als bei Port 1 ging ich davon aus dass dies der unterschiedlichen Nutzung geschuldet sei - da keine tiefergehenden Erklärungen dabei waren auch meine Nachfrage.
    Denn wenn Port2 ja wirklich dauerhaft als Ausgang programmiert ist frage ich mich in der Tat wie das klappt.

    Hallo,
    ein paar Fragen zum grundlegenden Ablauf der Kommunikation mit der Aussenwelt:

    Laut Bitte melde dich an, um diesen Link zu sehen. ist ja die CIA1 für Tastatur und Joystickabfrage zuständig, und die Abfrage erfolgt im Kernal.
    Dabei wird wohl Port A Als Ausgang und Port B als Eingang definiert. Soweit noch alles klar.
    Die Tastaturabfrage geschieht nun über eine 0 die durch die einzelnen PortBits von Port A geshiftet wird und dann wird an Port B geprüft ob eine Leitung nun auf Low liegt -> Tastendruck. Auch das verstehe ich noch.
    Wie läuft das aber jetzt mit den Joysticks?
    An Port B (Joy1) verstehe ich es ja noch, der Port ist auf Eingang gestellt, durch die internen Pull-Ups auf High und der Joystick zieht die entsprechenden Leitungen auf Low, indem ein Schluss zu GND geschaffen wird.

    Aber was ist mit Port2 (also CIA Port A)? Der ist doch auf Ausgang programmiert - wie kommt da die Pegeländerung zustande? Da sollte doch immer das anliegen was als letztes ins Datenregister reingepoked wurde, warum also reagiert der Port auf den Schluss zur Masse im Joystick? Da würde doch de facto ein Kurzer entstehen, da der ausgang 5V direkt an Masse anlegt, belastet das nicht den Ausgang arg?

    (Ach ja, kurze Seitenfrage: Die $7F die da ohne Betätigung anliegen ergeben sich daraus dass der Ausgang zwischen den Shiftereien so 'geparkt' wird- es wird also nicht bei jeder Tastaturabfrage durch den Kernal der Zustand des Ports abgefragt?)

    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')?