User Tools

Site Tools


base:nmi_lock_without_kernal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

base:nmi_lock_without_kernal [2016-10-05 12:05] (current)
sokrates created
Line 1: Line 1:
 +====== NMI Lock Without Kernal ======
  
 +Modification of the example given at [[base:​nmi_lock|NMI lock]]. The NMI is locked without using kernal routines and without using RAM at $0318/​$0319.
 +
 +<​code>​
 +  ; '​Disable NMI' without using kernal and $0318/$0319 by Sokrates
 +
 +  sei  ;; switch off interrupt
 +  lda #$35 ;; all RAM except D000-Dfff ​
 +  sta $01  ;; write to $FFFA/$FFFB now possible
 +  lda #<​nmiRoutine ;; change nmi vector to nmiRoutine
 +  sta $FFFA  ​    
 +  lda #>​nmiRoutine
 +  sta $FFFB
 +  lda #$00  ;; stop Timer A
 +  sta $DD0E 
 +  sta $DD04 ;; set Timer A to 0, after starting
 +  sta $DD05 ;; NMI will occur immediately
 +  lda #​$81  ​
 +  sta $DD0D ;; set Timer A as source for NMI 
 +  lda #​$01  ​
 +  sta $DD0E ;; start Timer A -> NMI
 +  ;; from here on NMI is disabled
 +  ...
 +
 +nmiRoutine
 +  rti ;; exit interrupt not acknowledged ​
 +</​code>​
base/nmi_lock_without_kernal.txt ยท Last modified: 2016-10-05 12:05 by sokrates