hide cursor when drawing, minor other fixes
This commit is contained in:
1 parent
c46a4aa1dd
commit
415d5a94bb
3 files changed
+58
-3
No files matched your search
@@ -0,0 +1,51 @@
|
|||||||
|
;; We have the following variables:
|
||||||
|
;; cursor_blink_disable
|
||||||
|
;; cursor_blink_countdown
|
||||||
|
;; cursor_saved_character
|
||||||
|
;; cursor_is_visible
|
||||||
|
;; colour_under_cursor
|
||||||
|
|
||||||
|
blink_cursor:
|
||||||
|
;; Is the cursor enabled?
|
||||||
|
bit cursor_blink_disable
|
||||||
|
bne no_blink_cursor
|
||||||
|
|
||||||
|
;; Do we need to redraw things?
|
||||||
|
dec cursor_blink_countdown
|
||||||
|
bpl no_blink_cursor
|
||||||
|
|
||||||
|
;; XXX - Save character colour also!
|
||||||
|
|
||||||
|
;; Check if cursor was visible or not, and toggle
|
||||||
|
lda cursor_is_visible
|
||||||
|
bne undraw_cursor
|
||||||
|
draw_cursor:
|
||||||
|
ldy current_screen_x
|
||||||
|
lda (current_screen_line_ptr),y
|
||||||
|
sta cursor_saved_character
|
||||||
|
eor #$80
|
||||||
|
sta (current_screen_line_ptr),y
|
||||||
|
lda #1
|
||||||
|
sta cursor_is_visible
|
||||||
|
jmp reset_blink_timer
|
||||||
|
|
||||||
|
undraw_cursor:
|
||||||
|
lda cursor_saved_character
|
||||||
|
ldy current_screen_x
|
||||||
|
sta (current_screen_line_ptr),y
|
||||||
|
lda #0
|
||||||
|
sta cursor_is_visible
|
||||||
|
;; Fall through
|
||||||
|
reset_blink_timer:
|
||||||
|
;; Rest blink counter
|
||||||
|
;; (Compute's Mapping the 64, p39-40)
|
||||||
|
lda #20
|
||||||
|
sta cursor_blink_countdown
|
||||||
|
no_blink_cursor:
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
hide_cursor_if_visible:
|
||||||
|
bit cursor_is_visible
|
||||||
|
bne undraw_cursor
|
||||||
|
rts
|
||||||
+3
-1
@@ -11,10 +11,12 @@ chrout:
|
|||||||
pha
|
pha
|
||||||
tya
|
tya
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
jsr hide_cursor_if_visible
|
||||||
|
|
||||||
lda last_printed_character_ascii
|
lda last_printed_character_ascii
|
||||||
tax
|
tax
|
||||||
|
|
||||||
|
|
||||||
;; Check for special characters
|
;; Check for special characters
|
||||||
|
|
||||||
;; Linefeed (simply ignored)
|
;; Linefeed (simply ignored)
|
||||||
|
|||||||
@@ -21,8 +21,10 @@ irq_handler:
|
|||||||
;; (but only if initialised)
|
;; (but only if initialised)
|
||||||
lda $0314
|
lda $0314
|
||||||
ora $0315
|
ora $0315
|
||||||
beq no_handler_installed
|
beq default_irq_handler
|
||||||
jmp ($0314)
|
jmp ($0314)
|
||||||
no_handler_installed:
|
default_irq_handler:
|
||||||
|
|
||||||
|
jsr blink_cursor
|
||||||
|
|
||||||
jmp return_from_interrupt
|
jmp return_from_interrupt
|
||||||
Reference in new issue
Block a user