mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-26 23:29:11 +00:00
Date DA: Read-only if system has clock. Fixes #39
This commit is contained in:
parent
0dfddfd629
commit
8fe7243e7d
@ -44,6 +44,11 @@ write_buffer:
|
|||||||
stx stash_stack
|
stx stash_stack
|
||||||
sta ALTZPOFF
|
sta ALTZPOFF
|
||||||
lda ROMIN2
|
lda ROMIN2
|
||||||
|
|
||||||
|
lda MACHID
|
||||||
|
and #%00000001 ; bit 0 = clock card
|
||||||
|
sta clock_flag
|
||||||
|
|
||||||
lda DATELO
|
lda DATELO
|
||||||
sta datelo
|
sta datelo
|
||||||
lda DATEHI
|
lda DATEHI
|
||||||
@ -77,6 +82,9 @@ write_buffer:
|
|||||||
lda write_buffer ; Dialog committed?
|
lda write_buffer ; Dialog committed?
|
||||||
beq skip
|
beq skip
|
||||||
|
|
||||||
|
;; If there is a system clock, don't write out the date.
|
||||||
|
ldx clock_flag
|
||||||
|
bne skip
|
||||||
|
|
||||||
ldy #OPEN ; open the file
|
ldy #OPEN ; open the file
|
||||||
ldax #open_params
|
ldax #open_params
|
||||||
@ -155,6 +163,9 @@ backcolor: .byte 0 ; black
|
|||||||
selected_field: ; 1 = day, 2 = month, 3 = year, 0 = none (init)
|
selected_field: ; 1 = day, 2 = month, 3 = year, 0 = none (init)
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|
||||||
|
clock_flag:
|
||||||
|
.byte 0
|
||||||
|
|
||||||
datelo: .byte 0
|
datelo: .byte 0
|
||||||
datehi: .byte 0
|
datehi: .byte 0
|
||||||
|
|
||||||
@ -258,6 +269,11 @@ nextwinfo: .addr 0
|
|||||||
init_window:
|
init_window:
|
||||||
jsr save_zp
|
jsr save_zp
|
||||||
|
|
||||||
|
;; If null date, just leave the baked in default
|
||||||
|
lda datelo
|
||||||
|
ora datehi
|
||||||
|
beq :+
|
||||||
|
|
||||||
;; Crack the date bytes. Format is:
|
;; Crack the date bytes. Format is:
|
||||||
;; | DATEHI | DATELO |
|
;; | DATEHI | DATELO |
|
||||||
;; |7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0|
|
;; |7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0|
|
||||||
@ -281,7 +297,7 @@ init_window:
|
|||||||
lsr a
|
lsr a
|
||||||
sta month
|
sta month
|
||||||
|
|
||||||
MGTK_CALL MGTK::OpenWindow, winfo
|
: MGTK_CALL MGTK::OpenWindow, winfo
|
||||||
lda #0
|
lda #0
|
||||||
sta selected_field
|
sta selected_field
|
||||||
jsr draw_window
|
jsr draw_window
|
||||||
@ -311,7 +327,11 @@ init_window:
|
|||||||
bne :+
|
bne :+
|
||||||
jmp on_ok
|
jmp on_ok
|
||||||
|
|
||||||
: cmp #CHAR_ESCAPE
|
;; If there is a system clock, only the first button is active
|
||||||
|
: ldx clock_flag
|
||||||
|
bne input_loop
|
||||||
|
|
||||||
|
cmp #CHAR_ESCAPE
|
||||||
bne :+
|
bne :+
|
||||||
jmp on_cancel
|
jmp on_cancel
|
||||||
: cmp #CHAR_LEFT
|
: cmp #CHAR_LEFT
|
||||||
@ -661,9 +681,17 @@ loop: txa
|
|||||||
MGTK_CALL MGTK::InRect, $1000, test_addr
|
MGTK_CALL MGTK::InRect, $1000, test_addr
|
||||||
bne done
|
bne done
|
||||||
|
|
||||||
clc
|
;; If there is a system clock, only the first button is active
|
||||||
|
ldx clock_flag
|
||||||
|
beq next
|
||||||
|
pla
|
||||||
|
ldx #0
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
next: clc
|
||||||
lda test_addr
|
lda test_addr
|
||||||
adc #8 ; size of 4 words
|
adc #.sizeof(MGTK::Rect)
|
||||||
sta test_addr
|
sta test_addr
|
||||||
bcc :+
|
bcc :+
|
||||||
inc test_addr+1
|
inc test_addr+1
|
||||||
@ -717,17 +745,21 @@ penheight: .byte 1
|
|||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
;;; Render the window contents
|
;;; Render the window contents
|
||||||
|
|
||||||
draw_window:
|
.proc draw_window
|
||||||
MGTK_CALL MGTK::SetPort, winfo::port
|
MGTK_CALL MGTK::SetPort, winfo::port
|
||||||
MGTK_CALL MGTK::FrameRect, border_rect
|
MGTK_CALL MGTK::FrameRect, border_rect
|
||||||
MGTK_CALL MGTK::SetPenSize, setpensize_params
|
MGTK_CALL MGTK::SetPenSize, setpensize_params
|
||||||
MGTK_CALL MGTK::FrameRect, date_rect
|
MGTK_CALL MGTK::FrameRect, date_rect
|
||||||
MGTK_CALL MGTK::FrameRect, ok_button_rect
|
|
||||||
MGTK_CALL MGTK::FrameRect, cancel_button_rect
|
|
||||||
|
|
||||||
|
MGTK_CALL MGTK::FrameRect, ok_button_rect
|
||||||
MGTK_CALL MGTK::MoveTo, label_ok_pos
|
MGTK_CALL MGTK::MoveTo, label_ok_pos
|
||||||
MGTK_CALL MGTK::DrawText, label_ok
|
MGTK_CALL MGTK::DrawText, label_ok
|
||||||
|
|
||||||
|
;; If there is a system clock, only draw the OK button.
|
||||||
|
ldx clock_flag
|
||||||
|
bne :+
|
||||||
|
|
||||||
|
MGTK_CALL MGTK::FrameRect, cancel_button_rect
|
||||||
MGTK_CALL MGTK::MoveTo, label_cancel_pos
|
MGTK_CALL MGTK::MoveTo, label_cancel_pos
|
||||||
MGTK_CALL MGTK::DrawText, label_cancel
|
MGTK_CALL MGTK::DrawText, label_cancel
|
||||||
|
|
||||||
@ -739,17 +771,24 @@ draw_window:
|
|||||||
MGTK_CALL MGTK::DrawText, label_downarrow
|
MGTK_CALL MGTK::DrawText, label_downarrow
|
||||||
MGTK_CALL MGTK::FrameRect, down_arrow_rect
|
MGTK_CALL MGTK::FrameRect, down_arrow_rect
|
||||||
|
|
||||||
jsr prepare_day_string
|
: jsr prepare_day_string
|
||||||
jsr prepare_month_string
|
jsr prepare_month_string
|
||||||
jsr prepare_year_string
|
jsr prepare_year_string
|
||||||
|
|
||||||
jsr draw_day
|
jsr draw_day
|
||||||
jsr draw_month
|
jsr draw_month
|
||||||
jsr draw_year
|
jsr draw_year
|
||||||
MGTK_CALL MGTK::SetPenMode, penmode_params
|
|
||||||
|
;; If there is a system clock, don't draw the highlight.
|
||||||
|
ldx clock_flag
|
||||||
|
beq :+
|
||||||
|
rts
|
||||||
|
|
||||||
|
: MGTK_CALL MGTK::SetPenMode, penmode_params
|
||||||
MGTK_CALL MGTK::SetPattern, white_pattern
|
MGTK_CALL MGTK::SetPattern, white_pattern
|
||||||
lda #1
|
lda #1
|
||||||
jmp highlight_selected_field
|
jmp highlight_selected_field
|
||||||
|
.endproc
|
||||||
|
|
||||||
.proc draw_selected_field
|
.proc draw_selected_field
|
||||||
lda selected_field
|
lda selected_field
|
||||||
|
Loading…
x
Reference in New Issue
Block a user