[A83] Re: cursor-lock with interrupt program


[Prev][Next][Index][Thread]

[A83] Re: cursor-lock with interrupt program




_vputs enables interrupts and when a new interrupt occurs (when there's 
still one running), it messes up the shadow regs. I suppose you can fix 
this by using the stack instead. You could also use a test bit and check 
this bit at the start of your interrupt handler. When it's set, return. 
Then set the bit before you call _vputs and reset it again when you've 
DIed after the call.

SUCKER [Pieter Van Nuffel] wrote:
> Also with the open-menu thing, I'm making a program that displayes "xxxx is 
> the best" with _vputs on the home screen. It's an interrupt program. But the 
> cursor sometimes stops blinking... How can I help this? It's not the 
> 'curlock'-flag I found out already but the calculator (83-) doesn't clear 
> the 'curon' and 'curable' flags anymore when it happens... But when I press 
> [CLEAR] it sometimes is back to normal.
> 
> I tried to save the entire byte from 'curflags' right before I do the _vputs 
> and then put it back, but it doesn't help, it makes things ever worse! Any 
> help here?
> (the program works fine but the cursor should blink!)
> 
>       SUCKER [Pieter Van Nuffel]
> 
> P.S. There is no APD control in this piece of code but it will be there in a 
> final version.
> 
> 
> 
> interrupt_start:
>         di    ;don't care if needed or not...
>         ex      af,af'
>         exx
> 
> 	in a,(2)
> 	push af
> 	in a,(0)
> 	push af
> 	ld a,$8C
> 	out (2),a
> 	ld a,$D0
> 	out (0),a
> 
> 	bit indicrun,(iy+indicflags)
> 	jp nz,out-interrupt_start+$8484
> 	ld a,($815B) ;on home screen?
> 	cp $40
> 	jp nz,out-interrupt_start+$8484
> 	ld a,(819Fh) ;menu open?
> 	or a
> 	jp nz,out-interrupt_start+$8484
> 	ld a,($8265)
> 	inc a
> 	ld ($8265),a
> 	cp 40 ;do not display it every interrupt
> 	jp nz,out-interrupt_start+$8484
> 	xor a
> 	ld ($8265),a
> 	ld bc,58*256+22
> 	ld (pencol),bc
> 	ld hl,besttxt-interrupt_start+$8484
> 	call _vputs
> 	res curlock,(iy+curflags)
> 
> out:
> 	pop af
> 	out (0),a
> 	pop af
> 	out (2),a
> 	jp $003A
> 
> 
> besttxt: .db "xxxx is the best!!",0
> 
> interrupt_end:
> 
> 
> _________________________________________________________________
> Chat with friends online, try MSN Messenger: http://messenger.msn.com
> 





References: