diff level1/modules/clock.asm @ 2725:c2112f93923a lwtools-port

o dwio for Atari now uses routines in ROM, so dwread/dwrite stripped of Atari o Added NMI code (as a conditional) to clock
author Boisy Pitre <boisy.pitre@nuance.com>
date Tue, 31 Jul 2012 11:54:02 -0500
parents 8399491c0821
children d9760f344c96
line wrap: on
line diff
--- a/level1/modules/clock.asm	Mon Jul 30 19:35:05 2012 -0500
+++ b/level1/modules/clock.asm	Tue Jul 31 11:54:02 2012 -0500
@@ -49,6 +49,9 @@
 rev      set   8
 edition  set   9         
                          
+         IFNE  atari
+USENMI   EQU   0
+         ENDC
                          
 *------------------------------------------------------------
 *
@@ -132,7 +135,11 @@
          stb   <D.Slice   set first time slice
          IFNE  atari
          leax  SvcIRQ,pcr set IRQ handler
+         IFNE  USENMI
+         stx   <D.NMI
+         ELSE
          stx   <D.IRQ    
+         ENDC
          ELSE
          leax  SvcIRQ,pcr set IRQ handler
          stx   <D.IRQ    
@@ -146,21 +153,27 @@
          jsr   ,y         call init entry point of Clock2
 
 * Initialize clock hardware
-          IFNE  atari
-          lda   #IRQST.TIMER1
-          pshs  cc
-	  orcc	#IntMasks
-	  ora	<D.IRQENShdw
-	  sta	<D.IRQENShdw
-	  sta   IRQEN
-          lda   #%00101001
-          sta   AUDCTL
-          clr   AUDC1
-     	  lda   #$FF
-          sta   AUDF1
-          sta   STIMER
-	  puls	cc,pc
-          ELSE
+         IFNE  atari
+         IFNE  USENMI
+         lda   #$40
+         sta   NMIEN           enable VBlank NMI
+         rts
+         ELSE
+         lda   #IRQST.TIMER1
+         pshs  cc
+	    orcc	#IntMasks
+	    ora	<D.IRQENShdw
+	    sta	<D.IRQENShdw
+	    sta   IRQEN
+         lda   #%00101001
+         sta   AUDCTL
+         clr   AUDC1
+         lda   #$FF
+         sta   AUDF1
+         sta   STIMER
+	    puls	cc,pc
+	    ENDC
+         ELSE
          ldx   #PIA0Base  point to PIA0
          clra             no error for return...
          pshs  cc         save IRQ enable status (and Carry clear)
@@ -190,7 +203,10 @@
 SvcIRQ                   
          clra            
          tfr   a,dp       set direct page to zero
-         IFNE atari
+         IFNE  atari
+         IFNE  USENMI
+         sta   NMIRES     clear NMI interrupt
+         ELSE
          lda   IRQST      get hw byte
          bita  #IRQST.TIMER1
          beq   L0032      branch if interrupt occurred
@@ -206,6 +222,7 @@
          stb   IRQEN
          stb   <D.IRQENShdw
          sta   STIMER
+         ENDC
          ELSE
          tst   PIA0Base+3 get hw byte
          bmi   L0032      branch if sync flag on