Nimm mir nicht gleich den ganzen Mut, bevor ich überhaupt erst richtig angefangen habe zu lesen ![]()
mfG Hucky
Bitte melde dich an, um diesen Link zu sehen.
Es gibt 58 Antworten in diesem Thema, welches 16.523 mal aufgerufen wurde. Der letzte Beitrag (
Nimm mir nicht gleich den ganzen Mut, bevor ich überhaupt erst richtig angefangen habe zu lesen ![]()
mfG Hucky
Bitte melde dich an, um diesen Link zu sehen.
ZitatPS: Auf Wunsch könnte ich da auch ein Beispiel-Listing anfügen, dass diesen Effekt verdeutlicht
Hätte ich interesse...
Ich auch!
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
![]()
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....
.C:1000 78 SEI
.C:1001 A9 01 LDA #$01
.C:1003 8D 1A D0 STA $D01A
.C:1006 8D 0D DC STA $DC0D
.C:1009 A9 1B LDA #$1B
.C:100b 8D 11 D0 STA $D011
.C:100e A9 38 LDA #$38
.C:1010 8D 12 D0 STA $D012
.C:1013 A9 1F LDA #$1F
.C:1015 8D 14 03 STA $0314
.C:1018 A9 10 LDA #$10
.C:101a 8D 15 03 STA $0315
.C:101d 58 CLI
.C:101e 60 RTS
.C:101f A9 39 LDA #$39
.C:1021 8D 12 D0 STA $D012
.C:1024 A9 38 LDA #$38
.C:1026 8D 14 03 STA $0314
.C:1029 EE 19 D0 INC $D019
.C:102c 58 CLI
.C:102d EA NOP
.C:102e EA NOP
.C:102f EA NOP
.C:1030 EA NOP
.C:1031 EA NOP
.C:1032 EA NOP
.C:1033 EA NOP
.C:1034 EA NOP
.C:1035 4C 2D 10 JMP $102D
.C:1038 BA TSX
.C:1039 8A TXA
.C:103a 18 CLC
.C:103b 69 06 ADC #$06
.C:103d AA TAX
.C:103e 9A TXS
.C:103f 24 00 BIT $00
.C:1041 A9 1F LDA #$1F
.C:1043 8D 14 03 STA $0314
.C:1046 AD 12 D0 LDA $D012
.C:1049 C9 39 CMP #$39
.C:104b F0 00 BEQ $104D
.C:104d A9 38 LDA #$38
.C:104f 8D 12 D0 STA $D012
.C:1052 EE 19 D0 INC $D019
.C:1055 A9 0F LDA #$0F
.C:1057 8D 21 D0 STA $D021
.C:105a EA NOP
.C:105b EA NOP
.C:105c EA NOP
.C:105d EA NOP
.C:105e EA NOP
.C:105f EA NOP
.C:1060 EA NOP
.C:1061 EA NOP
.C:1062 EA NOP
.C:1063 EA NOP
.C:1064 EA NOP
.C:1065 EA NOP
.C:1066 EA NOP
.C:1067 EA NOP
.C:1068 EA NOP
.C:1069 EA NOP
.C:106a EA NOP
.C:106b EA NOP
.C:106c EA NOP
.C:106d EA NOP
.C:106e EA NOP
.C:106f EA NOP
.C:1070 EA NOP
.C:1071 EA NOP
.C:1072 AD FF 07 LDA $07FF
.C:1075 EA NOP
.C:1076 EA NOP
.C:1077 EA NOP
.C:1078 EA NOP
.C:1079 EA NOP
.C:107a EA NOP
.C:107b EA NOP
.C:107c EA NOP
.C:107d EA NOP
.C:107e EA NOP
.C:107f EA NOP
.C:1080 24 00 BIT $00
.C:1082 A9 06 LDA #$06
.C:1084 8D 21 D0 STA $D021
.C:1087 4C 31 EA JMP $EA31
Alles anzeigen
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
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.
Ach so.
Deshalb reichen die 3 Takte zur Busübernahme,
weil der Schreibprozess an sich max 3 Takte braucht.
Jetzt ist's mir klar.
D.h. dann also, dass man dann wirklich schauen muss,
dass an der besagten Schwelle immer ein definierter Befehl
steht, damit man das richtig austimen kann.
ehm,, wo gibts jetzt nochmal das pdf zu dem kurs ?!?!??! ![]()
ZitatOriginally posted by Krill
cbmhardware schrieb:Also... das würd ich so ganz und gar nicht sagen. Schau mal nach Bitte melde dich an, um diesen Link zu sehen. 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. ![]()
PS an cbmhardware: weiss zwar net worum es ging, aber ich hänge hin und wieder im channel Bitte melde dich an, um diesen Link zu sehen. (irc.comballradio.de) herum. Wäre ja schlimm wenn man nicht mal mehr genug Zeit zum idlen hätte...
ZitatOriginal von trifox
ehm,, wo gibts jetzt nochmal das pdf zu dem kurs ?!?!??!
Ja, ich frage da auch mal bescheiden nach.
In der Download-Ecke wurde ich mal nicht fündig.
-- Thomas
Hi Krill ![]()
sry aber 2 Deiner Links funktionieren nicht :
Bei dem ersten ist die Site under Construction, und bei dem zweiten (der auf deutsch) funzt gar nix mehr.
Könntest Du das checken wenn Du Zeit hast das würde mich sehr interessieren !
Danke vorab ...![]()
Spindizzy
P.S.:...das PDF such ich auch !!! ![]()
![]()
Spindizzy
P.P.S.:
Den IRQ_Kurs hab ich !!! :rotwerd:
![]()
Spindizzy
P.P.P.S
oben rechts, über deinen Postings, ist ein wunderschöner Button der den sinnvollen Titel "Ändern" trägt.
:<<<<<>>>>:
Ja,ja,ja... alter Thread und so...
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 Bitte melde dich an, um diesen Link zu sehen., aber dort sind keine Scans drauf.
Ja,ja,ja... alter Thread und so...
![]()
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 Bitte melde dich an, um diesen Link zu sehen., aber dort sind keine Scans drauf.
Äh, bevor Du Dir 'nen Wolf suchst: die MD64 war ein Diskmagazin, da gibt's nix zu "scannen" - außer die Coverhüllen ![]()
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... ![]()
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...
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 Bitte melde dich an, um diesen Link zu sehen.. 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:
ZitatDie "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: Bitte melde dich an, um diesen Link zu sehen.
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.
Hat jemand noch diese PDFs? Oder sogar einen Scan? ...
Ich hatte schon einmal angefangen damit. Ich glaube ich werde es mal weiter machen und dann veröffentlichen.
(besteht da noch Copyright drauf
)