Mercurial > hg > Members > kono > nitros9-code
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