Hello, Guest the thread was called8.7k times and contains 58 replays

last post from DMHas at the

IRQ-Kurs von Ivo Herzeg aus der Magic Disk

  • ok,
    unten ist das listing und prg-file.
    zu erklärung.


    $1000-101e: simple irq-init routine
    $101f-1037: teil 1 des double-irq um ein stabilen raster zu bekommen.
    $1038-104c:teil 2 des double-irq. aber hier flacker der raster nicht mehr.


    so...ab $1055 beginnt die eigentliche routine.
    und was macht die?
    wir gehen davon aus, dass eine "normal" rasterzeile 63 zyklen, und eine badline (in der die neuen zeichen für die nächste zeile geholt werden) 20 zyklen hat.
    d.h. wenn ich die hintergrundfarbe eine zeile vor der badline mittem im bildschrim wechsle (z.b. auf hellgrau schalte) und genau 83 zyklen später wieder auf blau zurück schalte bekomme ich einen Raster, der genau 2 zeilen hoch ist und horizontal betrachtet genau untereinander die farbe wechselt (sieht dann aus, als hätte der raster einen knick).


    genau das macht die routine ab $1055.
    erst wird die hintergrundfarbe auf hellgrau geschaltet.
    dann kommen einige "verzögerungsbefehle".... 35 x NOP = 70 Zyklen, 1 x LDA 07F8 = 4 Zyklen, 1 x BIT 00 = 3 Zyklen und dann nicht die 6 Zyklen für das zurückschalten der Hintergrundfarbe vergessen (nur einmal).... sind insgesammt: 70+4+3+6=83 Zyklen....


    soweit ist ja alles noch einfach.


    Doch nun schauen wir und diesen LDA 07F8 mal genauer an, und warum der so "unmotiviert" zwischen all den NOPs steht :)
    die Adresse (07F8 ) ansich ist egal, könnte auch jede andere sein.
    wichtig ist die "zeitliche" position und die Art des Befehls.
    Leute die sich genauer mit Assembler befassen wissen, dass so ein LDA genausoviel Zyklen braucht wie ein STA. Nämlich genau 4 Zyklen.
    Ändert man nun den LDA in ein STA dürfte sich eigentlich am Timing nichts ändern, und der Raster genauso aussehen wie vorher.
    TUT ER ABER NICHT!!!!
    Wir sehen, dass nun 1 Zyklus früher wieder auf Blau zurückgeschaltet wird.
    Das liegt daran, dass der STA eben genau an der Schwelle liegt, an der die CPU für das einlesen der neuen Zeichen (Badline) für 43 Zyklen angehalten wird.
    Nur ein SCHREIBBEFEHL kann eben noch 1 Zyklus ausführen....(ein Ladezyklus dagegen nicht).
    Daher könnte man meinen, man hat in einer Badline 21 Zyklen zur Verfügung, oder der STA braucht plötzlich nur noch 3 zyklen...


    So, ich hoffe ich habe nun nicht allzuviele hier verwirrt :juhu: :nixwiss:


    ps: Das selbe Phänomen gibt es mit den DEC,INC, ASL....usw Befehlen, die eigentlich 6 Zyklen brauchen, an dieser Schwelle (die es auch beim Beginn der Spriteverzögerung der CPU gibt) plötzlich nur noch 4 Zyklen brauchen....


  • Hier, was ich irgendwann mal im CF zu IRQ's geschrieben habe. Ich hab jetzt nur so CF-Typische Kürzel rausgenommen und sonst nichts überarbeitet/kontrolliert. Vielleicht sind ja Bugs drin, aber zumindest damals war ich mir recht sicher, was ich da schreibe

  • Roland


    Ich habe mir mal das Diagramm aus dem VIC-Artikel
    vom Andreas Grützmann angesehen.
    Also 40 Zyklen braucht der VIC in einer Bad Line.
    Dann sind da noch die 3 Takte für die Busübernahme.
    D.h. also, die Zyklen können von 40 bis 43 schwanken,
    je nachdem, was für ein Befehl an dieser Schwelle ausgeführt wird.


    Bei einem Lesebefehl ist's klar, da wird der Prozessor
    direkt unterbrochen und die Zyklen liegen bei 43, der
    Prozessor hat dann noch 20 - richtig?
    Und bei einem Schreibbefehl? Der wird ja angeblich noch ausgeführt.
    Aber wie, wenn der doch bis zu 6 Zyklen braucht???

  • Es dreht sich weniger um die Art des Befehls als darum, was denn der Befehl so auf dem Bus veranstaltet. Ein Befehl wie "Sta 1024" braucht 4 Takte. Die ersten 3 sind Lesetakte für die 3 Bytes des Befehls an sich, nur der 4. Takt ist ein Schreibtakt, der noch ausgeführt wird. Befehle wie "Inc 1024" haben aus technischen Gründen 2 Schreibtakte, ein JSR sowieso, und ein BRK müsste 3 haben. Die Vorgänge zu den einzelnen Takten sind im AAY64 gut aufgeschlüsselt, musst Du mal reingucken, hab die nicht alle im Kopf.

  • Quote

    Originally posted by Krill
    cbmhardware schrieb:


    Also... das würd ich so ganz und gar nicht sagen. Schau mal nach #c-64 im IRCnet oder im EFnet


    Oh, hallo Krill! Dich habe ich hier ja noch gar net gesehen. Schön dich zu lesen. :)
    Gibt's eigentlich Pläne die 1x Years Plush noch irgendwann zu releasen? Zur X vielleicht, das wäre doch ein guter Zeitpunkt. Habe auch schon immerhin 1,5 Parts fertig. :D


    PS an cbmhardware: weiss zwar net worum es ging, aber ich hänge hin und wieder im channel #comballradio (irc.comballradio.de) herum. Wäre ja schlimm wenn man nicht mal mehr genug Zeit zum idlen hätte...

  • Ja,ja,ja... alter Thread und so... :whistling:
    Hat jemand noch diese PDFs? Oder sogar einen Scan? Finde das nirgends auf der Filebase oder F64 Platte.


    Bevor wieder jemand mit dem Vorschlag kommt: Ich kenne natürlich diese Webseite, aber dort sind keine Scans drauf.

  • Danke, mir ist schon klar, dass es kein vollwertiges Printmagazin war.
    Aber ich dachte, es hätte noch ein paar Seiten Papier begleitend gehabt.
    Zumindest ist das so bei den anderen 1995er Ausgaben so auf der F64 Platte... :gruebel

  • Danke, mir ist schon klar, dass es kein vollwertiges Printmagazin war.
    Aber ich dachte, es hätte noch ein paar Seiten Papier begleitend gehabt.
    Zumindest ist das so bei den anderen 1995er Ausgaben so auf der F64 Platte... :gruebel


    Weiß nicht mehr genau, wie es in der "Spätphase" war - da haben die glaube ich einfach nur noch alten Content unter dem Namen "Magic Disk Classic" wiederaufgelegt. Davor lag die Disk 'ne zeitlang einfach der Playtime bei.
    Zur Zeit vom Interruptkurs (Start 6/90) war es ein reines Diskmagazin.
    Die Cover der "regulären Ausgaben" bis 1993 findet man komplett auf Kultboy. Auf der "Rückseite" war häufig nur noch eine Seite Werbung, die dort bei den Scans fehlt.


    Hier die Infos dazu ausm C64 Wiki:

    Quote

    Die "Magic Disk 64" war ein reines deutschsprachiges Diskettenmagazin für den Commodore 64, dass im CP Verlag (Computer Publications GmbH) von 12/1987 (27.11.1987) bis 11/1993 eigenständig erschien. Die 5,25"-Programmdiskette lag in einem entsprechenden "Magic Disk 64"-Umschlag mit Pappe und wurde am Kiosk bundesweit verkauft.
    Mit der Ausgabe 12/1993 wurde die "Magic Disk 64" mit dem Diskettenmagazin "Game On" zusammengelegt und mit der Computerspielezeitschrift "Play Time" gebundelt als "C64 Three in One Kombi" verkauft, d.h. es gab 2 Disketten und eine Spielemagazin für verschiedenen Systeme zu einem Preis. Das reine Diskettenmagazin "Magic Disk 64" wurde mit Ausgabe 07/1995 eingestellt.


    Danach startete der Verlag den Versuch unter dem Namen "Magic Disk Classic 64" eine C64-Zeitschrift mit Heftdiskette herauszugeben. Es sind hier die monatlichen Ausgaben 08/1995 bis 01/1996 erschienen.


    Quelle: https://www.c64-wiki.de/index.php/Magic_Disk_64


    EDIT: im Wiki sieht man auch, dass der IRQ-Kurs 1993-1995 nochmal lief. Das allerdings auch zur reinen Diskmag-Zeit als Beigabe zur Playtime.