changeset 2252:41a797492324

Updated
author boisy
date Sat, 26 Dec 2009 19:04:46 +0000
parents e53b8d577cca
children b8f190607a7f
files level1/modules/kernel/krn.asm level1/modules/scdwt.asm
diffstat 2 files changed, 15 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/level1/modules/kernel/krn.asm	Sat Dec 26 15:17:20 2009 +0000
+++ b/level1/modules/kernel/krn.asm	Sat Dec 26 19:04:46 2009 +0000
@@ -141,14 +141,17 @@
 * OS-9 Genesis!
 
 OS9Cold  equ   *
-* clear out system globals from $0020-$0400
-         ldx   #D.FMBM
+* clear out system globals from $0000-$0400
+*         ldx   #D.FMBM
+         ldx   #$0000
          IFNE  H6309
-         ldw   #$400-D.FMBM
+*         ldw   #$400-D.FMBM
+         ldw   #$400
          leay  Zoro,pc
          tfm   y,x+
          ELSE
-         ldy   #$400-D.FMBM
+*         ldy   #$400-D.FMBM
+         ldy   #$400
          clra
          clrb
 L007F    std   ,x++
--- a/level1/modules/scdwt.asm	Sat Dec 26 15:17:20 2009 +0000
+++ b/level1/modules/scdwt.asm	Sat Dec 26 19:04:46 2009 +0000
@@ -131,10 +131,10 @@
          	bcs   	Term.Err	;go report error...
 DumpIRQ
 			ldx     #D.DWVIRQPkt
+			tfr     x,u
          	leax  	Vi.Stat,x	;fake VIRQ status register
          	tfr   	x,d			;copy address...
          	ldx   	#$0000		;code to remove IRQ entry
-			ldu     #D.DWSTATS  ;ISR doesn't use static storage, so set to $0000
          	leay  	IRQSvc,pc	;IRQ service routine
          	os9   	F$IRQ
 Term.Err    rts
@@ -167,6 +167,7 @@
 *
             
 Init		equ		*
+ clr $0016
 			pshs  cc        save IRQ/Carry status
 
 * link to subroutine module
@@ -205,14 +206,14 @@
 * Install the IRQ/VIRQ entry 
 InstIRQ
 			ldx     #D.DWVIRQPkt
+            pshs    u
+			tfr     x,u
 		    leax  	Vi.Stat,x		;fake VIRQ status register
          	lda   	#$80			;VIRQ flag clear, repeated VIRQs
          	sta   	,x				;set it while we're here...
          	tfr   	x,d				;copy fake VIRQ status register address
          	leax  	IRQPckt,pcr		;IRQ polling packet
          	leay  	IRQSvc,pcr  	;IRQ service entry
-            pshs    u
-			ldu     #D.DWSTATS
          	os9   	F$IRQ			;install
 			puls    u
          	bcs   	InitEx   		;exit with error
@@ -249,7 +250,7 @@
 			lda     #OP_SERSETSTAT 	; command 
 			pshs   	d      			; command + port # on stack
 			leax    ,s     			; point X to stack 
-			ldy     #3          	; 2 bytes to send
+			ldy     #3          	; 3 bytes to send
 			
 			IFGT  Level-1
 			ldu   	<D.DWSUB
@@ -359,11 +360,10 @@
 			pshs  	cc,dp 		;save system cc,DP
 			orcc	#$50		;mask interrupts
 			
-			* mark VIRQ handled
-			ldx     #D.DWVIRQPkt
-			lda   	Vi.Stat,x	;VIRQ status register
+			* mark VIRQ handled (note U is pointer to our VIRQ packet in DP)
+			lda   	Vi.Stat,u	;VIRQ status register
 			anda  	#^Vi.IFlag 	;clear flag in VIRQ status register
-			sta   	Vi.Stat,x	;save it...
+			sta   	Vi.Stat,u	;save it...
 			
 			* poll server for incoming serial data
  			
@@ -401,7 +401,6 @@
 * here we set U to the static storage area of the device we are working with
 			ldx     #D.DWSTATS
 			lda     a,x
-			tfr     a,dp		;put in DP
 			clrb
 			tfr     d,u