@sauhund
Ja genau - das hab ich ja gemeint... ![]()
Hast du zufällig noch ein paar Codeschnipsel zu dieser Thematik rumfliegen?
Beiträge von Ingo im Thema „FLD-VSP-Effekt vom IRQ-Kurs aus der Magic Disk“
-
-
Also so weit ich das alles so überblicke,
ist VSP das vertikale scrollen,
HSP müsste dann DMA-Delay entsprechen -> horizontales scrollen
und AGSP die Kombination von beidem. -
Super - vielen Dank !!!
Dann werd ich mich dann erst mal da durchquälen...Hast Du auch noch mehr Codebeispiele für z.B. AGSP?
Bin für alles dankbar. -
Ja klar -gern!!!

-
Stimmt - hab ich übersehen...

Aber jetzt passt's ja noch weniger.
Oder muss ich früher anfangen zu zählen ?
-
Mir ist jetzt aber nochwas nicht ganz klar:
Bei "nextrow" hab ich ja 'nen stabilen Raster.
Wenn ich aber hier anfange, meine Taktzyklen zu zählen,
komme ich bis Zeile 31 auf 54 bzw. 56(mit dem einen NOP mehr)
Zyklen.
Zähle ich falsch? - Denn normalerweise (nach dem oben beschriebenen)
müssten doch, damit das ganze funktioniert(und das tut es ;)), 53 bzw. 55 rauskommen.Code
Alles anzeigenLDA $D012 CMP $D012 BNE nextrow nextrow LDA #$18 ; -> jetzt stabil !!! 2 STA $D011 ; 4 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP ; 32 (16 NOP's) NOP ; 2 -> VSP-Effekt LDA $02 ; 2 BEQ dir1 ; 2 wenn's nicht verzweigt LDX #$00 ; 2 dir2 LDA data1,X ; 4 ORA #$18 ; 2 STA $D011 ; 4 54 bzw. (VSP) 56 -
Genau das hab ich gemeint - danke!

-
Ich glaub, wir haben aneinander vorbei gesprochen.
Wie D011 geändert wird(also hier jetzt aus einer Tabelle)
war nicht meine Frage, sondern bezogen auf CJokes Antwort, wann d011
gändert wird(in welchem Zyklus),
ob da ein Schreibzugriff reicht oder sonstwas. -
Keine Ahnung - ich versteh's einfach nicht...

-
Schon klar - also einfach ein Schreibzugriff....
-
Spielt es dabei eine Rolle, welches Bit geändert wird,
oder ist es wie bei der Irq-Quittierung bei $d019 so,
daß $d011 einfach beschrieben werden muß? -
Hallo,
ich arbeite gerade den IRQ-Kurs von Ivo Herzeg aus
der Magic Disc durch.
Siehe Thread
Bitte melde dich an, um diesen Link zu sehen.Bin auf der Seite 135 angelangt, wo er das VSP (Vertikale scrollen)
erklärt.
Nur versteh ich das nicht so ganz. Er schreibt, dass durch ein NOP mehr
(siehe code Zeile 131)
aus der FLD-Routine eine VSP-Routine entsteht.
Angeblich wird in dieser Zeit "die interne Adresse auf das Video-RAM um 40
Zeichen erhöht"
Kann mir das mal einer erklären?
Warum erhöht sich das ganze um nochmal 40 Zeichen,
wenn in der FLD-Routine jeweils eine Rasterzeile länger gewartet wird?
Dann komm der NOP doch gar nicht mehr zum tragen!?Hier mal der Quellcode:
Code
Alles anzeigen!to "fld", cbm *= $0800 !byte $00,$0c,$08,$0a,$00,$9e,$32,$30,$36,$34,$00,$00,$00,$00 *=$0810 init SEI LDA #$7F STA $DC0D BIT $DC0D LDA #$F8 STA $D012 LDA $D011 AND #$7F STA $D011 LDA #$01 STA $D01A LDX #<irq1 LDY #>irq1 STX $FFFE STY $FFFF LDA #$00 STA $02 LDA #$00 STA $3FFF JSR fill LDA #$35 STA $01 CLI LDA #$7F STA $DC00 in LDA $DC01 CMP #$EF BNE in SEI LDA #$37 STA $01 JMP $FCE2 fill LDX #$00 loop LDA $1400,X STA $0400,X LDA $1500,X STA $0500,X LDA $1600,X STA $0600,X LDA $1700,X STA $0700,X LDA #$01 STA $D800,X STA $D900,X STA $DA00,X STA $DB00,X INX BNE loop RTS ;-------------------------------------------------- *=$1100 irq2 PHA ; Raster bei $2d TXA PHA TYA PHA DEC $D019 INC $D012 LDX #<irq3 LDY #>irq3 STX $FFFE STY $FFFF CLI wait NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP JMP wait ;-------------------------------------------------- irq3 PLA ; Raster bei $2e PLA PLA DEC $D019 LDA #$F8 STA $D012 LDX #<irq1 LDY #>irq1 STX $FFFE STY $FFFF NOP NOP NOP NOP NOP NOP NOP LDA $D012 CMP $D012 BNE nextrow nextrow LDA #$18 ; Raster bei $2f -> jetzt stabil !!! STA $D011 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP nop ; -> VSP-Effekt LDA $02 BEQ dir1 LDX #$00 dir2 LDA data1,X ORA #$18 STA $D011 LDA data2,X STA $D020 STA $D021 NOP NOP NOP NOP NOP NOP NOP LDA data3,X STA $D020 STA $D021 NOP NOP BIT $EA INX CPX $02 BCC dir2 dir1 NOP NOP NOP NOP NOP LDA #$0E STA $D020 LDA #$06 STA $D021 PLA TAY PLA TAX PLA RTI ;-------------------------------------------------- *=$1300 irq1 PHA ; Raster ist in $f8 TXA PHA TYA PHA LDA #$10 STA $D011 LDA #$2d STA $D012 DEC $D019 LDX #<irq2 LDY #>irq2 STX $FFFE STY $FFFF JSR joy PLA TAY PLA TAX PLA RTI joy LDA $DC00 LSR BCS joy1 LDA $02 BEQ leave DEC $02 RTS joy1 LSR BCS leave LDA $02 CMP #$1A BEQ leave INC $02 leave RTS ;-------------------------------------------------- *=$1400 data1 !byte $01, $02, $03, $04, $05, $06, $07, $00 !byte $01, $02, $03, $04, $05, $06, $07, $00 !byte $01, $02, $03, $04, $05, $06, $07, $00 !byte $01, $02, $03, $04, $05, $06, $07, $00 !byte $01, $02, $03, $04, $05, $06, $07, $00 *=$1430 data2 !byte $06, $0e, $03, $0d, $01, $0d, $03, $0e !byte $06, $00, $06, $0e, $03, $0d, $01, $0d !byte $03, $0e, $06, $00, $06, $0e, $03, $0d !byte $01, $0d, $03, $0e, $06, $00, $06, $0e !byte $03, $0d, $01, $0d, $03, $0e, $06, $00 *=$1460 data3 !byte $09, $02, $08, $0a, $07, $0a, $08, $02 !byte $09, $00, $09, $02, $08, $0a, $07, $0a !byte $08, $02, $09, $00, $09, $02, $08, $0a !byte $07, $0a, $08, $02, $09, $00, $09, $02 !byte $08, $0a, $07, $0a, $08, $02, $09, $00