Date: strings

This commit is contained in:
Joshua Bell 2017-09-12 22:01:45 -07:00
parent 7b98c5e996
commit a65459124c
2 changed files with 153 additions and 121 deletions

View File

@ -352,7 +352,7 @@ A2D_CWS_SCROLL_NORMAL := A2D_CWS_SCROLL_ENABLED | A2D_CWS_SCROLL_THUMB | A2D_CW
.endif .endif
.endmacro .endmacro
.macro A2D_DEFSTRING str ; String definition, for use with A2D_TEXT .macro A2D_DEFSTRING str, label ; String definition, for use with A2D_TEXT
.local data ; Call as A2D_DEFSTRING "abc" .local data ; Call as A2D_DEFSTRING "abc"
.local end ; Can include control chars by using: .local end ; Can include control chars by using:
.addr data ; A2D_DEFSTRING {"abc",$0D,"def"} .addr data ; A2D_DEFSTRING {"abc",$0D,"def"}

View File

@ -19,28 +19,30 @@ L4021 := $4021
jmp copy2aux jmp copy2aux
L0803: .byte $00,$09,$4D,$44,$2E,$53,$59,$53 stash_stack: .byte $00
.byte $54,$45,$4D,$03,$04,$08,$00,$09
PASCAL_STRING "MD.SYSTEM" ; ??
.byte $03,$04,$08,$00,$09
L0813: .byte $00,$02 L0813: .byte $00,$02
L0815: .byte $00,$03,$00,$00,$04 L0815: .byte $00,$03,$00,$00,$04
L081A: .byte $00,$23,$08,$02,$00,$00,$00,$01 L081A: .byte $00,$23,$08,$02,$00,$00,$00,$01
L0822: .byte $00 L0822: .byte $00
L0823: .byte $00 L0823: .byte $00
L0824: .byte $00
stash_stack: .byte $00
.proc copy2aux .proc copy2aux
start := start_da start := start_da
end := last end := last
tsx tsx
stx L0803 stx stash_stack
sta ALTZPOFF sta ALTZPOFF
lda ROMIN2 lda ROMIN2
lda DATELO lda DATELO
sta L090F sta datelo
lda DATEHI lda DATEHI
sta L0910 sta datehi
lda #<start lda #<start
sta STARTLO sta STARTLO
lda #>start lda #>start
@ -71,7 +73,7 @@ stash_stack: .byte $00
L086B: sta ALTZPON L086B: sta ALTZPON
sta L0823 sta L0823
stx stash_stack stx L0824
lda LCBANK1 lda LCBANK1
lda LCBANK1 lda LCBANK1
lda L0823 lda L0823
@ -98,7 +100,7 @@ L08AA: ldy #$CC
lda #$21 lda #$21
ldx #$08 ldx #$08
jsr L4021 jsr L4021
L08B3: ldx L0803 L08B3: ldx stash_stack
txs txs
rts rts
@ -109,19 +111,21 @@ start_da:
jmp L0986 jmp L0986
ok_button_rect: ok_button_rect:
.byte $6A,$00,$2E,$00,$B5,$00,$39,$00 .word $6A,$2E,$B5,$39
cancel_button_rect: cancel_button_rect:
.byte $10,$00,$2E,$00,$5A,$00,$39,$00 .word $10,$2E,$5A,$39
up_arrow_rect: up_arrow_rect:
.word $AA,$0A,$B4,$14 .word $AA,$0A,$B4,$14
down_arrow_rect: down_arrow_rect:
.byte $AA,$00,$1E,$00,$B4,$00,$28,$00 .word $AA,$1E,$B4,$28
fill_rect_params3:
.byte $25,$00,$14,$00,$3B,$00,$1E,$00 fill_rect_params3:
fill_rect_params7: .byte $51,$00,$14,$00,$6F,$00,$1E,$00 .word $25,$14,$3B,$1E
fill_rect_params7:
.word $51,$14,$6F,$1E
fill_rect_params6:
.word $7F,$14,$95,$1E
fill_rect_params6: .byte $7F,$00,$14,$00,$95,$00,$1E,$00
L08FC: .byte $00,$00,$00,$00,$00,$00,$00,$00 L08FC: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $FF .byte $FF
@ -129,23 +133,34 @@ L08FC: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.endproc .endproc
.byte $FF .byte $FF
L090E: .byte $00
L090F: .byte $00 selected_field:
L0910: .byte $00 .byte 0
L0911: .byte $1A
L0912: .byte $02 datelo: .byte $00
L0913: .byte $55 datehi: .byte $00
L0914: .byte $17,$09,$04,$20,$20,$20,$20
L091B: .byte $2B,$00,$1E,$00 day: .byte 26 ; Feb 26, 1985
L091F: .byte $22,$09,$02 month: .byte 2 ; The date this was written?
L0922: .byte $20 year: .byte 85
L0923: .byte $20
L0924: .byte $57,$00,$1E,$00 spaces_string:
L0928: .byte $2B,$09,$03,$20,$20,$20 A2D_DEFSTRING " "
L092E: .byte $85,$00,$1E,$00
L0932: .byte $35,$09,$02 day_pos:
L0935: .byte $20 .word $2B,$1E
L0936: .byte $20 day_string:
A2D_DEFSTRING " "
month_pos:
.word $57,$1E
month_string:
A2D_DEFSTRING " "
year_pos:
.word $85,$1E
year_string:
A2D_DEFSTRING " "
.proc get_input_params .proc get_input_params
L0937: .byte $00 L0937: .byte $00
@ -202,24 +217,24 @@ height: .word $40
.byte $00,$7F,$00,$88,$00,$00 .byte $00,$7F,$00,$88,$00,$00
L0986: jsr L0E00 L0986: jsr L0E00
lda L0910 lda datehi
lsr a lsr a
sta L0913 sta year
lda L090F lda datelo
and #$1F and #$1F
sta L0911 sta day
lda L0910 lda datehi
ror a ror a
lda L090F lda datelo
ror a ror a
lsr a lsr a
lsr a lsr a
lsr a lsr a
lsr a lsr a
sta L0912 sta month
A2D_CALL A2D_CREATE_WINDOW, create_window_params A2D_CALL A2D_CREATE_WINDOW, create_window_params
lda #$00 lda #0
sta L090E sta selected_field
jsr L0CF0 jsr L0CF0
A2D_CALL $2B A2D_CALL $2B
L09BB: A2D_CALL A2D_GET_INPUT, get_input_params L09BB: A2D_CALL A2D_GET_INPUT, get_input_params
@ -265,18 +280,18 @@ L0A0F: A2D_CALL A2D_FILL_RECT, down_arrow_rect
jmp L09BB jmp L09BB
L0A26: sec L0A26: sec
lda L090E lda selected_field
sbc #$01 sbc #1
bne L0A3F bne L0A3F
lda #$03 lda #3
jmp L0A3F jmp L0A3F
L0A33: clc L0A33: clc
lda L090E lda selected_field
adc #$01 adc #1
cmp #$04 cmp #4
bne L0A3F bne L0A3F
lda #$01 lda #1
L0A3F: jsr L0DB4 L0A3F: jsr L0DB4
jmp L09BB jmp L09BB
@ -313,15 +328,15 @@ L0A85: .byte $0A,$BB,$0A,$C9,$0A,$D7,$0A,$E5
.byte $0A,$E5,$0A,$E5,$0A .byte $0A,$E5,$0A,$E5,$0A
L0A92: A2D_CALL A2D_FILL_RECT, ok_button_rect L0A92: A2D_CALL A2D_FILL_RECT, ok_button_rect
sta RAMWRTOFF sta RAMWRTOFF
lda L0912 lda month
asl a asl a
asl a asl a
asl a asl a
asl a asl a
asl a asl a
ora L0911 ora day
sta DATELO sta DATELO
lda L0913 lda year
rol a rol a
sta DATEHI sta DATEHI
sta RAMWRTON sta RAMWRTON
@ -386,7 +401,7 @@ L0B2C: lda #$51
sta $07 sta $07
lda #$0B lda #$0B
sta $08 sta $08
L0B34: lda L090E L0B34: lda selected_field
asl a asl a
tay tay
lda ($07),y lda ($07),y
@ -404,80 +419,93 @@ L0B50: .byte $00,$00,$00,$61,$0B,$73,$0B,$85
.byte $0B,$00,$00,$97,$0B,$A4,$0B,$B1 .byte $0B,$00,$00,$97,$0B,$A4,$0B,$B1
.byte $0B .byte $0B
clc clc
lda L0911 lda day
adc #$01 adc #$01
cmp #$20 cmp #$20
bne L0B6D bne L0B6D
lda #$01 lda #$01
L0B6D: sta L0911 L0B6D: sta day
jmp L0BBE jmp prepare_day_string
clc clc
lda L0912 lda month
adc #$01 adc #$01
cmp #$0D cmp #$0D
bne L0B7F bne L0B7F
lda #$01 lda #$01
L0B7F: sta L0912 L0B7F: sta month
jmp L0BCB jmp prepare_month_string
clc clc
lda L0913 lda year
adc #$01 adc #$01
cmp #$64 cmp #$64
bne L0B91 bne L0B91
lda #$00 lda #$00
L0B91: sta L0913 L0B91: sta year
jmp L0C0D jmp prepare_year_string
dec L0911 dec day
bne L0BA1 bne L0BA1
lda #$1F lda #$1F
sta L0911 sta day
L0BA1: jmp L0BBE L0BA1: jmp prepare_day_string
dec L0912 dec month
bne L0BAE bne L0BAE
lda #$0C lda #$0C
sta L0912 sta month
L0BAE: jmp L0BCB L0BAE: jmp prepare_month_string
dec L0913 dec year
bpl L0BBB bpl L0BBB
lda #$63 lda #$63
sta L0913 sta year
L0BBB: jmp L0C0D L0BBB: jmp prepare_year_string
L0BBE: lda L0911 .proc prepare_day_string
lda day
jsr div_by_10_then_ascii jsr div_by_10_then_ascii
sta L0922 sta day_string+3 ; first char
stx L0923 stx day_string+4 ; second char
rts rts
.endproc
L0BCB: lda L0912 .proc prepare_month_string
lda month ; month * 3 - 1
asl a asl a
clc clc
adc L0912 adc month
tax tax
dex dex
lda #$2B
sta $07 ptr := $07
lda #$09 str := month_string + 3
sta $08
ldy #$02 lda #<str
L0BDF: lda L0BE9,x sta ptr
sta ($07),y lda #>str
sta ptr+1
ldy #2
loop: lda month_name_table,x
sta (ptr),y
dex dex
dey dey
bpl L0BDF bpl loop
rts
L0BE9: .byte "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug" rts
.byte "Sep","Oct","Nov","Dec" .endproc
L0C0D: lda L0913
month_name_table:
.byte "Jan","Feb","Mar","Apr","May","Jun"
.byte "Jul","Aug","Sep","Oct","Nov","Dec"
prepare_year_string:
lda year
jsr div_by_10_then_ascii jsr div_by_10_then_ascii
sta L0935 sta year_string+3
stx L0936 stx year_string+4
rts rts
L0C1A: brk L0C1A: brk
@ -492,15 +520,15 @@ L0C29: lda L0C4B,x
bpl L0C29 bpl L0C29
lda L0C1A lda L0C1A
beq L0C48 beq L0C48
lda L0912 lda month
asl a asl a
asl a asl a
asl a asl a
asl a asl a
asl a asl a
ora L0911 ora day
tay tay
lda L0913 lda year
rol a rol a
tax tax
tya tya
@ -593,57 +621,61 @@ L0CF0: A2D_CALL A2D_SET_BOX1, create_window_params::box
A2D_CALL A2D_DRAW_TEXT, label_downarrow A2D_CALL A2D_DRAW_TEXT, label_downarrow
A2D_CALL A2D_DRAW_RECT, down_arrow_rect A2D_CALL A2D_DRAW_RECT, down_arrow_rect
jsr L0BBE jsr prepare_day_string
jsr L0BCB jsr prepare_month_string
jsr L0C0D jsr prepare_year_string
jsr L0D81
jsr L0D8E jsr draw_day
jsr L0DA7 jsr draw_month
jsr draw_year
A2D_CALL A2D_SET_FILL_MODE, fill_mode_params A2D_CALL A2D_SET_FILL_MODE, fill_mode_params
A2D_CALL A2D_SET_PATTERN, white_pattern A2D_CALL A2D_SET_PATTERN, white_pattern
lda #$01 lda #1
jmp L0DB4 jmp L0DB4
L0D73: lda L090E L0D73: lda selected_field
cmp #$01 cmp #1
beq L0D81 beq draw_day
cmp #$02 cmp #2
beq L0D8E beq draw_month
jmp L0DA7 jmp draw_year
L0D81: A2D_CALL A2D_SET_POS, L091B draw_day:
A2D_CALL A2D_DRAW_TEXT, L091F A2D_CALL A2D_SET_POS, day_pos
A2D_CALL A2D_DRAW_TEXT, day_string
rts rts
L0D8E: A2D_CALL A2D_SET_POS, L0924 draw_month:
A2D_CALL A2D_DRAW_TEXT, L0914 A2D_CALL A2D_SET_POS, month_pos
A2D_CALL A2D_SET_POS, L0924 A2D_CALL A2D_DRAW_TEXT, spaces_string ; variable width, so clear first
A2D_CALL A2D_DRAW_TEXT, L0928 A2D_CALL A2D_SET_POS, month_pos
A2D_CALL A2D_DRAW_TEXT, month_string
rts rts
L0DA7: A2D_CALL A2D_SET_POS, L092E draw_year:
A2D_CALL A2D_DRAW_TEXT, L0932 A2D_CALL A2D_SET_POS, year_pos
A2D_CALL A2D_DRAW_TEXT, year_string
rts rts
L0DB4: pha L0DB4: pha
lda L090E lda selected_field
beq L0DD1 beq L0DD1
cmp #$01 cmp #1
bne L0DC4 bne L0DC4
jsr L0DE4 jsr L0DE4
jmp L0DD1 jmp L0DD1
L0DC4: cmp #$02 L0DC4: cmp #2
bne L0DCE bne L0DCE
jsr L0DEB jsr L0DEB
jmp L0DD1 jmp L0DD1
L0DCE: jsr L0DDD L0DCE: jsr L0DDD
L0DD1: pla L0DD1: pla
sta L090E sta selected_field
cmp #$01 cmp #1
beq L0DE4 beq L0DE4
cmp #$02 cmp #2
beq L0DEB beq L0DEB
L0DDD: A2D_CALL A2D_FILL_RECT, fill_rect_params6 L0DDD: A2D_CALL A2D_FILL_RECT, fill_rect_params6
rts rts