Advertisement
Guest User

Untitled

a guest
Oct 21st, 2014
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. .pc =$0801 "Basic Upstart Program"
  3. :BasicUpstart($0810)
  4.  
  5. .pc = $810 "Program"
  6.  
  7.  
  8. IRQ_Begin:
  9.  
  10.     pha
  11.     txa
  12.     pha
  13.     tya
  14.     pha
  15.     :Stable()
  16.  
  17.     // SUPER STABLE COOL CODE!
  18.  
  19.             jsr $e544 // clear screen      
  20.             sei
  21.             lda #<irq1
  22.             sta $0314
  23.             lda #>irq1
  24.             sta $0315
  25.             asl $d019
  26.             lda #$7b   // stop interrupt from CIA1 CIA2 VICII
  27.             sta $dc0d
  28.             lda #$81
  29.             sta $d01a
  30.             lda #$1b
  31.             sta $d011
  32.             lda #190            // sätt interrupt vektorn vid linje ...nått
  33.             sta $d012
  34.             cli
  35. this:   jmp this   
  36.    
  37.     //-- end of stable code -----
  38.    
  39.     lda #<irq2
  40.     sta $fffe
  41.     lda #>irq2
  42.     sta $ffff
  43.     lda #$01
  44.     sta $d019
  45.     pla
  46.     tay
  47.     pla
  48.     tax
  49.     pla
  50.     rti
  51.  
  52.    
  53. irq1:  
  54.  
  55.     :Stable()
  56.  
  57.             asl $d019
  58.             :SetBorderColor(3)
  59.            
  60.  
  61.      lda #<irq2 // set adress to my second code inside the interrupt vector
  62.      ldx #>irq2
  63.      sta $0314
  64.      stx $0315
  65.      
  66.      ldy #60  // sätt interrupt vektorn vid linje $160..
  67.      sty $d012
  68.      
  69.      asl $d019 // clear pending interrupt..hmm
  70.      
  71.     // 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! 
  72.            
  73.             pla
  74.             tay
  75.             pla
  76.             tax
  77.             pla
  78.             rti
  79.    
  80.    
  81. irq2: :SetBorderColor(5)        
  82.       lda #<irq1
  83.       ldx #>irq1
  84.       sta $0314
  85.       stx $0315
  86.      
  87.       ldy #$00  // raster line 0
  88.       sty $d012
  89.      
  90.       asl $d019  // interrupt register 53273 ($D019) is turned ON
  91.       jmp $ea81    
  92.    
  93.    
  94.    
  95.  
  96. // A little macro
  97. .macro SetBorderColor(color) {
  98.     lda #color
  99.     sta $d020
  100.     sta $d021
  101. }
  102.  
  103.  
  104. // Define macro
  105. .macro Stable () {
  106.  
  107.     lda #<WedgeIRQ
  108.     sta $fffe
  109.     lda #>WedgeIRQ
  110.     sta $ffff
  111.    
  112.    
  113.     // Set the Raster IRQ to trigger on the next line
  114.     inc $d012
  115.    
  116.     // Acknowlege current raster IRQ
  117.     lda #$01
  118.     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!
  119.    
  120. /*  When the raster register is written to (including the MSB) the number
  121.     written to is saved for use with the raster compare function. When the
  122.     actual raster value becomes the same as the number written to the raster
  123.     register, a bit in the VIC-II chip interrupt register 53273 ($D019) is
  124.     turned ON by setting it to 1.
  125.    
  126.     Man spara ett rastervärde i ett register
  127.    
  128.     Sen finns det en funktion som säger till när det riktiga rastervärdet blir den samma som i rastervärds-registret
  129. */
  130.  
  131.     tsx // Store current Stack Pointer, will be messed up pretty soon :-)
  132.    
  133.     cli // Allow IRQ to happen (Remember the interrupt flag is set by the Interrupt Handler)
  134.    
  135.     // Kör NOP till man bytt rasterline å Raster IRQ har triggats ..    
  136.     nop
  137.     nop
  138.     nop
  139.     nop
  140.     nop
  141.     nop
  142.     nop
  143.     nop
  144.     // lägg till en extra nop för 65 cykels NTSC maskiner..
  145.    
  146.     // CYCLECOUNT 64 - 71
  147.    
  148. WedgeIRQ:  // Nu är triggas nästa Raster Compare IRQ och jitter är max 1 cykel..
  149.  
  150.     txs // Restore stack pointer, ignore last stack manipulation by the IRQ
  151.    
  152.    
  153.     // PAL 63 cykles
  154.    
  155.     ldx #$08
  156.    
  157.     dex
  158.    
  159.     bne *-1
  160.    
  161.     bit $00
  162.    
  163.     lda $d012
  164.     cmp $d012
  165.    
  166.     beq *+2    
  167.    
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement