Beiträge von Bytebreaker im Thema „Kurze Frage Zu IRQ“

    @ hoogo

    Ja so was meinte ich.
    Ich las davon dass während eines IRQ ein weiterer IRQ platziert und ausgelöst werden kann und brachte das in Bezug auf Mikes Aussage im Zitat weiter oben.

    @ gi Joe

    Danke für den Hinweis, so ginge man vor wenn man den ersten IRQ abwarten (d.h. RTI) will bevor man einen zweiten, geänderten nutzen will und sich den Sprung nach $febc sparen will.

    Zitat von Mike

    Damit kann dann automatisch auch ein Interrupt während eines Interrupts bedient werden.

    Das heißt, während des Interrupts einen weiteren Interrupt nach $0314/15 laden, den bestehenden ACKen über $d019 und mit cli den c64 bereit machen auf IRQs zu reagieren noch während der Rasterstrahl im Bildaufbau ist. Der zweite IRQ kann sich auf eine spätere Zeile beziehen.

    Den zweiten IRQ dann wieder ACKen und den ersten IRQ Vektor in $0314/15 einsetzen.

    Vielen Dank für die Antworten.


    Zitat von Mike

    Es besteht auch die Möglichkeit, am Anfang der Interrupt-Routine die IRQ-Bits von VIC und CIA abzufragen, je nachdem (mit Priorität für VIC) die eine oder andere Interrupt-Quelle zu bedienen, und dann auch nur diese Aufforderung beim Chip zu bestätigen. Damit kann dann automatisch auch ein Interrupt während eines Interrupts bedient werden. Problematisch an dieser Variante ist nur, daß dann ein Raster-IRQ verzögert abgearbeitet wird, wenn er auftritt, während sich die Interrupt-Routine gerade um den CIA-Interrupt kümmert. Mit vorschobenen/flackernden Raster-Balken ist natürlich keinem gedient, darum kommt diese Variante eher selten zum Einsatz.


    Genau damit hatte ich so meinen Stress. Ich musste mit nops ausgleichen das war kein Spaß.
    Wieder was dazu gelernt. :smile:

    Hallo,

    Ich glaube ich hab es eigentlich schon verstanden, möchte mich aber nochmal absichern:
    Wenn man sich nicht extra kümmert ist es ab einer gewissen Code Länge so gut wie sicher dass einem der CIA IRQ in den Raster IRQ pfuscht, d.h. der Raster IRQ vom Timer IRQ noch während des Zeilenaufbaus (Frame noch nicht voll gezeichnet) unterbrochen und der in den Interrupt Vektor geschmuggelte Code wird von vorne ausgeführt auch wenn wir noch mitten im Zeilenaufbaus sind.

    Man muss also den CIA IRQ entweder abfangen oder ausschalten per Interrupt Maske oder gleich das ROM ausblenden.

    Richtig?