Ecco qua: chiedo scusa per la rozzezza del codice (sarebbe stato meglio mettere tutto in un loop e fare riferimento a una timing table per i delays..) però cosi' è stato piu' facile fare le prove. sono andato avanti finchè non ho incontrato una badline, e ho cambiato il timing value. poi ho disegnato un ulteriore riga "standard".
;prova doppio interrupt nested
    *=$0801
    include basicline.s
	
  	sei  
  	jsr $e544;screen clear
  	lda #<irqpre
  	ldx #>irqpre
  	sta $0314
  	stx $0315
  	
  	lda #$01
      sta $d01a   ; Turn on raster interrupts
  	
  	lda #$34    
  	sta $d012
  	lda #$1b    
  	sta $d011
  	lda #$7f
  	sta $dc0d
  	sta $dd0d	
  	
  	LDA $DC0D; Acknowledge CIA IRQ
  	LDA $DD0D; Acknowledge CIA NMI
  	LSR $D019; Acknowledge VIC IRQ
  	cli
	
hold
  	jmp hold
	
	
;FINO A QUI  X + 7 + 29 cicli. 
;ricorda che 2<=X<=9 e X è la
;durata dell'ultima istruzione eseguita 
;prima dell'interrupt	
;quindi lsr $d019 viene seguita dopo 29+X+7
;caso peggiore 45 cicli, ne ho solo  18
irqpre  
  	lda #<irq  ;2
  	sta $0314  ;4
  	sta $d019;4 rispetto ad una inc scendo di 2 cicli
  	inc $d012  ;6    	
  	cli  ;2
;---FINO A QUI MAX 18 CICLI (cosiderato caso peggiore)
  	
  ;Aggiungo una serie di nop per "non fare nulla" intanto che 
           ;l'altro interrupt viene eseguito
  	nop
  	nop
  	nop
  	nop
  	nop;5 nop per totale di 10 cicli, sono sicuro in tutti i casi
  	;(considerando anche il caso migliore)
  	brk 
  	align 2
  	*=*+1;
  ;la routine verrà eseguita con un ritardo di 2/3+7+29=38/39 cicli.
irq
  	nop	;41
  	nop	;43
  	nop	;45
  	nop	;47
  	nop	;49
  	bit $24;52
  	
  	asl $d019;6 = 58
  	lda #$35   ;2 = 60
  	cmp $d012  ;4 =  64 - siamo a 0 o 1 cicli
  	
  	beq start  ;3 con questo branch allineo l'ultimo
start                  ;ciclo di insicurezza
  ;QUI SIAMO SICURAMENTE a 3.
  	jsr rasterbars;9 
        
  ;Tolgo i 6 bytes inseriti nello stack
  ;facendo push nell'accumulatore 6 volte	
  	pla
  	pla
  	pla
  	pla
  	pla
  	pla
  	
  	ldy #<irqpre;Punto di nuovo al primo interrupt
  	sty $0314
  	
  ;rimetto apposto anche il registro $d012 
  	lda #$34 
  	sta $d012
  
  	jmp $ea31
  	
rasterbars  	
    lda colors;13
;ora devo perdere tempo in modo da esaurire i 63-(13-4) = 46 cicli
     
    ldx #$09;2  2+2+(x-1)*5+2 => 4+8*5+2 = 46
    dex ;2	
    bne *-1;2/3
      
  	;Finisco di disegnare la riga proprio al 63°esimo ciclo
    sta $d020;(63) Fine riga
    sta $d021;4° ciclo riga successiva
;NUOVA LINEA!  
  	;Ora devo aspettare altri 63-4 cicli prima di 
  	;resettare il colore del background
    ldx #$0a;51 stessa formula di sopra
    dex 
    bne *-1 
  	
  	; 51+4=55
  	
  	;e siamo a... 55
    lda colors+2;59
    sta $d020;(63) fine riga
    sta $d021;4° ciclo nuova riga
;NUOVA LINEA!  - mancano 59 cicli
    ldx #$0a;51 stessa formula di sopra
    dex 
    bne *-1 
    
    lda colors+3	
    sta $d020
    sta $d021
;NUOVA LINEA!  - mancano 59 cicli    
    
    ldx #$0a;51 stessa formula di sopra
    dex 
    bne *-1 
  	
    lda colors+4;59
    sta $d020;(63) fine riga
    sta $d021;4° ciclo nuova riga
;NUOVA LINEA!  - mancano 59 cicli    
    
    ldx #$0a;51 stessa formula di sopra
    dex 
    bne *-1 
    
    lda colors+5	
    sta $d020;
    sta $d021;4° ciclo nuova riga BADLINE
    
;NUOVA LINEA! BADLINE!! siccome l'ultima istruzione eseguita è una STA allora
; ho solo 22 cicli, di cui 4 ne ho gia consumati. ne restano 18      	
    ldx #$01;6 
    dex 
    bne *-1 
    nop
    lda colors+6;10
    sta $d020;14 
    sta $d021;22 
  
;NUOVA LINEA!  (non badline)  
    
    ldx #$0a
    dex 
    bne *-1 
    
    lda colors+5	
    sta $d020
    sta $d021	
    
    nop;allineo timings!
    
    ldx #$0a;51 stessa formula di sopra
    dex 
    bne *-1 
  	
    lda #$0
    sta $d020
    sta $d021
  	
    rts
  	
colors
         .byte $06,$02,$03,$04,$05,$08
         .byte $07,$08,$04,$01,$00,$06
         .byte $0e,$03,$03,$0e,$03,$03
         .byte $03,$01,$03,$01,$01,$03
         .byte $01,$01,$01,$03,$01,$01
         .byte $03,$01,$03,$03,$03,$0e
         .byte $03,$03,$0e,$03,$0e,$0e
         .byte $0e,$06,$0e,$0e,$06,$0e
         .byte $06,$06,$06,$06,$06,$06