changeset 1826:316b175a40e4

Added call to AltIRQ, to call a cursor flash routine in COxx module
author afra
date Sun, 24 Apr 2005 21:16:35 +0000
parents f6a8c676b8bb
children e965abd3e0be
files level1/modules/ccio.asm
diffstat 1 files changed, 44 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/level1/modules/ccio.asm	Sun Apr 24 21:15:39 2005 +0000
+++ b/level1/modules/ccio.asm	Sun Apr 24 21:16:35 2005 +0000
@@ -21,6 +21,13 @@
 * Integrated changes needed for the co51 driver from Dragon Data
 * OS-9.
 *
+* 2005/04/24, P.Harvey-Smith.
+* Added cursor flash call to AltIRQ routine, this decrements a
+* counter and when zero calls the routine contained in V.Flash
+* ccio initialises this to point to an rts, the individual COxx 
+* routine can over-ride this in it's init, this should point to
+* a routine to flash the cursor which should end in an rts.
+*
 
          nam   CCIO
          ttl   OS-9 Level One V2 CoCo I/O driver
@@ -78,6 +85,10 @@
 L002E    sta   ,x+		clear mem
          decb			decrement counter
          bne   L002E		continue if more
+	 
+	leax	FlashCursor,pcr	* Point to dummy cursor flash
+	stx	V.Flash,u	* Setup cursor flash
+	 
          coma			A = $FF
          comb			B = $FF
          stb   <V.Caps,u
@@ -92,7 +103,7 @@
          leax  >XY2Addr,pcr	get address of XY2Addr
          stx   <V.CnvVct,u
          ldd   <IT.PAR,y	get parity and baud
-         lbra  SetupTerm		process them
+         lbra  SetupTerm	process them
 
 * Term
 *
@@ -120,9 +131,10 @@
 *    CC = carry set on error
 *    B  = error code
 *
-Read    pshs	y
-	ldy	#$aa57
-	puls	y
+Read   
+*	pshs	y
+*	ldy	#$aa57
+*	puls	y
 
 	leax   V.InBuf,u		point X to input buffer
          ldb   V.IBufT,u	get tail pointer
@@ -159,7 +171,13 @@
 *
 * IRQ routine for keyboard
 *
-AltIRQ   ldu   >D.KbdSta	get keyboard static
+AltIRQ  
+*        pshs	y
+*	ldy	#$aa58
+*	puls	y
+
+
+	ldu   >D.KbdSta	get keyboard static
          ldb   <V.CFlg1,u	graphics screen currently being displayed?
          beq   L00B7		branch if not
          ldb   <V.Alpha,u	alpha mode?
@@ -188,7 +206,19 @@
          comb  
          sta   <V.2Key1,u
          std   <V.2Key2,u
-L00E4    jmp   [>D.Clock]	jump into clock module
+
+CheckFlash
+	dec	V.FlashCount,u	Get flash counter
+	beq	FlashTime	count zero, flash cursor
+	bra	AltIRQEnd	Otherwise just call clock module
+	
+FlashTime	
+	jsr	[V.Flash,u]	Call flash routine
+	lda	#CFlash50hz	Re-init count
+	sta	V.FlashCount,u	
+
+AltIRQEnd    
+	jmp   [>D.Clock]	jump into clock module
 
 L00E8    comb
          stb   $02,x		strobe one column
@@ -209,7 +239,8 @@
          beq   L010A
          decb
 L0105    stb   <V.ClkCnt,u
-         bra   L00E4
+*         bra   AltIRQEnd
+	bra	CheckFlash
 L010A    ldb   #$05
          bra   L011A
 L010E    sta   <V.6F,u
@@ -246,7 +277,7 @@
 L0153    beq   L0158		branch if none
          os9   F$Send		else send wakeup signal
 L0158    clr   V.WAKE,u		clear process to wake flag
-         bra   L00E4		and move along
+         bra   AltIRQEnd	and move along
 
 L015C    clra
          clrb
@@ -1223,6 +1254,11 @@
          bne   L0805
          rts
 
+* Dummy flash cursor routine, can be replaced by COxx module.
+
+FlashCursor
+	rts		
+
          emod
 eom      equ   *
          end