Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .pc =$0801 "Basic Upstart Program"
- :BasicUpstart($0810)
- .pc = $810 "Program"
- IRQ_Begin:
- pha
- txa
- pha
- tya
- pha
- :Stable()
- // SUPER STABLE COOL CODE!
- jsr $e544 // clear screen
- sei
- lda #<irq1
- sta $0314
- lda #>irq1
- sta $0315
- asl $d019
- lda #$7b // stop interrupt from CIA1 CIA2 VICII
- sta $dc0d
- lda #$81
- sta $d01a
- lda #$1b
- sta $d011
- lda #190 // sätt interrupt vektorn vid linje ...nått
- sta $d012
- cli
- this: jmp this
- //-- end of stable code -----
- lda #<irq2
- sta $fffe
- lda #>irq2
- sta $ffff
- lda #$01
- sta $d019
- pla
- tay
- pla
- tax
- pla
- rti
- irq1:
- :Stable()
- asl $d019
- :SetBorderColor(3)
- lda #<irq2 // set adress to my second code inside the interrupt vector
- ldx #>irq2
- sta $0314
- stx $0315
- ldy #60 // sätt interrupt vektorn vid linje $160..
- sty $d012
- asl $d019 // clear pending interrupt..hmm
- // jmp $ea81 kallar på en subrutin som rensar stacken å sätter på interrupt igen.. du spar 3 bytes! istället för att hoppa! :-) jmp kommandot!
- pla
- tay
- pla
- tax
- pla
- rti
- irq2: :SetBorderColor(5)
- lda #<irq1
- ldx #>irq1
- sta $0314
- stx $0315
- ldy #$00 // raster line 0
- sty $d012
- asl $d019 // interrupt register 53273 ($D019) is turned ON
- jmp $ea81
- // A little macro
- .macro SetBorderColor(color) {
- lda #color
- sta $d020
- sta $d021
- }
- // Define macro
- .macro Stable () {
- lda #<WedgeIRQ
- sta $fffe
- lda #>WedgeIRQ
- sta $ffff
- // Set the Raster IRQ to trigger on the next line
- inc $d012
- // Acknowlege current raster IRQ
- lda #$01
- sta $d019 // säger till på en gång! hallå, värdet i registret är samma som det aktuella riktiga rastervärdet! oki ja fattar nu.. allt detta är ett sätt att automatiskt sätta igång saker!
- /* When the raster register is written to (including the MSB) the number
- written to is saved for use with the raster compare function. When the
- actual raster value becomes the same as the number written to the raster
- register, a bit in the VIC-II chip interrupt register 53273 ($D019) is
- turned ON by setting it to 1.
- Man spara ett rastervärde i ett register
- Sen finns det en funktion som säger till när det riktiga rastervärdet blir den samma som i rastervärds-registret
- */
- tsx // Store current Stack Pointer, will be messed up pretty soon :-)
- cli // Allow IRQ to happen (Remember the interrupt flag is set by the Interrupt Handler)
- // Kör NOP till man bytt rasterline å Raster IRQ har triggats ..
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- // lägg till en extra nop för 65 cykels NTSC maskiner..
- // CYCLECOUNT 64 - 71
- WedgeIRQ: // Nu är triggas nästa Raster Compare IRQ och jitter är max 1 cykel..
- txs // Restore stack pointer, ignore last stack manipulation by the IRQ
- // PAL 63 cykles
- ldx #$08
- dex
- bne *-1
- bit $00
- lda $d012
- cmp $d012
- beq *+2
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement