a2d/desk.acc/date.s

838 lines
18 KiB
ArmAsm
Raw Normal View History

2017-09-11 03:40:32 +00:00
.org $800
.setcpu "65C02"
2017-09-11 03:40:32 +00:00
.include "apple2.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
2017-09-11 03:40:32 +00:00
.include "a2d.inc"
ROMIN2 := $C082
DATELO := $BF90
DATEHI := $BF91
2017-09-13 07:04:21 +00:00
KEY_ENTER := $0D
KEY_ESCAPE := $1B
KEY_LEFT := $08
KEY_DOWN := $0A
KEY_UP := $0B
KEY_RIGHT := $15
L0000 := $0000
L0020 := $0020
L1000 := $1000
L4021 := $4021
2017-09-11 03:40:32 +00:00
2017-09-13 07:04:21 +00:00
;;; ==================================================
jmp copy2aux
2017-09-13 05:01:45 +00:00
stash_stack: .byte $00
PASCAL_STRING "MD.SYSTEM" ; ??
.byte $03,$04,$08,$00,$09
L0813: .byte $00,$02
L0815: .byte $00,$03,$00,$00,$04
L081A: .byte $00,$23,$08,$02,$00,$00,$00,$01
L0822: .byte $00
L0823: .byte $00
2017-09-13 05:01:45 +00:00
L0824: .byte $00
2017-09-11 03:40:32 +00:00
2017-09-13 07:04:21 +00:00
;;; ==================================================
.proc copy2aux
start := start_da
end := last
tsx
2017-09-13 05:01:45 +00:00
stx stash_stack
sta ALTZPOFF
lda ROMIN2
lda DATELO
2017-09-13 05:01:45 +00:00
sta datelo
lda DATEHI
2017-09-13 05:01:45 +00:00
sta datehi
lda #<start
2017-09-11 03:40:32 +00:00
sta STARTLO
lda #>start
2017-09-11 03:40:32 +00:00
sta STARTHI
lda #<end
2017-09-11 03:40:32 +00:00
sta ENDLO
lda #>end
2017-09-11 03:40:32 +00:00
sta ENDHI
lda #<start
2017-09-11 03:40:32 +00:00
sta DESTINATIONLO
lda #>start
2017-09-11 03:40:32 +00:00
sta DESTINATIONHI
sec
jsr AUXMOVE
lda #<start
sta XFERSTARTLO
lda #>start
sta XFERSTARTHI
php
pla
ora #$40 ; set overflow: aux zp/stack
pha
plp
sec ; control main>aux
jmp XFER
.endproc
2017-09-13 07:04:21 +00:00
;;; ==================================================
L086B: sta ALTZPON
sta L0823
2017-09-13 05:01:45 +00:00
stx L0824
lda LCBANK1
lda LCBANK1
lda L0823
beq L08B3
ldy #$C8
lda #$0E
ldx #$08
jsr L4021
bne L08B3
lda L0813
sta L0815
sta L081A
sta L0822
ldy #$CE
lda #$14
ldx #$08
jsr L4021
bne L08AA
ldy #$CB
lda #$19
ldx #$08
jsr L4021
L08AA: ldy #$CC
lda #$21
ldx #$08
jsr L4021
2017-09-13 05:01:45 +00:00
L08B3: ldx stash_stack
txs
rts
2017-09-13 07:04:21 +00:00
;;; ==================================================
start_da:
sta ALTZPON
lda LCBANK1
lda LCBANK1
jmp L0986
2017-09-13 07:04:21 +00:00
;;; ==================================================
;;; Param blocks
2017-09-13 04:27:27 +00:00
ok_button_rect:
2017-09-13 05:01:45 +00:00
.word $6A,$2E,$B5,$39
2017-09-13 04:27:27 +00:00
cancel_button_rect:
2017-09-13 05:01:45 +00:00
.word $10,$2E,$5A,$39
2017-09-13 04:27:27 +00:00
up_arrow_rect:
.word $AA,$0A,$B4,$14
down_arrow_rect:
2017-09-13 05:01:45 +00:00
.word $AA,$1E,$B4,$28
2017-09-13 04:27:27 +00:00
fill_rect_params3:
2017-09-13 05:01:45 +00:00
.word $25,$14,$3B,$1E
fill_rect_params7:
.word $51,$14,$6F,$1E
fill_rect_params6:
.word $7F,$14,$95,$1E
2017-09-13 04:27:27 +00:00
L08FC: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $FF
.proc white_pattern
.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.endproc
.byte $FF
2017-09-13 05:01:45 +00:00
selected_field:
.byte 0
datelo: .byte $00
datehi: .byte $00
day: .byte 26 ; Feb 26, 1985
month: .byte 2 ; The date this was written?
year: .byte 85
spaces_string:
A2D_DEFSTRING " "
day_pos:
.word $2B,$1E
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
L0937: .byte $00
L0938: .byte $00
L0939: .byte $00
L093A: .byte $00
L093B: .byte $00
.endproc
L093C: .byte $00
L093D: .byte $00
L093E: .byte $64
L093F: .byte $00
L0940: .byte $00
L0941: .byte $00
L0942: .byte $00
L0943: .byte $00,$00,$00,$00
L0947: .byte $64,$00,$01
.proc fill_mode_params
mode: .byte $02
.endproc
.byte $06
.proc create_window_params
id: .byte $64
flags: .byte $01
title: .addr 0
hscroll:.byte 0
vscroll:.byte 0
hsmax: .byte 0
hspos: .byte 0
vsmax: .byte 0
vspos: .byte 0
.byte 0, 0 ; ???
w1: .word 100
h1: .word 100
w2: .word $1F4
h2: .word $1F4
.proc box
left: .word $B4
top: .word $32
saddr: .addr A2D_SCREEN_ADDR
stride: .word A2D_SCREEN_STRIDE
hoff: .word 0
voff: .word 0
width: .word $C7
height: .word $40
.endproc
.endproc
;; ???
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $FF,$00,$00,$00,$00,$00,$04,$02
.byte $00,$7F,$00,$88,$00,$00
2017-09-11 03:40:32 +00:00
2017-09-13 07:04:21 +00:00
;;; ==================================================
L0986: jsr L0E00
2017-09-13 05:01:45 +00:00
lda datehi
lsr a
2017-09-13 05:01:45 +00:00
sta year
lda datelo
and #$1F
2017-09-13 05:01:45 +00:00
sta day
lda datehi
ror a
2017-09-13 05:01:45 +00:00
lda datelo
ror a
lsr a
lsr a
lsr a
lsr a
2017-09-13 05:01:45 +00:00
sta month
A2D_CALL A2D_CREATE_WINDOW, create_window_params
2017-09-13 05:01:45 +00:00
lda #0
sta selected_field
jsr L0CF0
2017-09-11 03:40:32 +00:00
A2D_CALL $2B
2017-09-13 07:04:21 +00:00
;;; ==================================================
;;; Input loop
input_loop:
A2D_CALL A2D_GET_INPUT, get_input_params
lda get_input_params::L0937
2017-09-13 07:04:21 +00:00
cmp #A2D_INPUT_DOWN
bne :+
jsr L0A45
2017-09-13 07:04:21 +00:00
jmp input_loop
: cmp #A2D_INPUT_KEY
bne input_loop
2017-09-13 07:04:21 +00:00
on_key:
lda get_input_params::L0939
2017-09-13 07:04:21 +00:00
bne input_loop
lda get_input_params::L0938
2017-09-13 07:04:21 +00:00
cmp #KEY_ENTER
bne :+
jmp L0A92
2017-09-13 07:04:21 +00:00
: cmp #KEY_ESCAPE
bne :+
jmp on_cancel
: cmp #KEY_LEFT
beq on_key_left
cmp #KEY_RIGHT
beq on_key_right
cmp #KEY_DOWN
beq on_key_down
cmp #KEY_UP
bne input_loop
on_key_up:
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_FILL_RECT, up_arrow_rect
lda #$03
sta L0B50
jsr L0B17
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_FILL_RECT, up_arrow_rect
2017-09-13 07:04:21 +00:00
jmp input_loop
2017-09-13 07:04:21 +00:00
on_key_down:
A2D_CALL A2D_FILL_RECT, down_arrow_rect
lda #$04
sta L0B50
jsr L0B17
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_FILL_RECT, down_arrow_rect
2017-09-13 07:04:21 +00:00
jmp input_loop
2017-09-13 07:04:21 +00:00
on_key_left:
sec
2017-09-13 05:01:45 +00:00
lda selected_field
sbc #1
bne L0A3F
2017-09-13 05:01:45 +00:00
lda #3
jmp L0A3F
2017-09-13 07:04:21 +00:00
on_key_right:
clc
2017-09-13 05:01:45 +00:00
lda selected_field
adc #1
cmp #4
bne L0A3F
2017-09-13 05:01:45 +00:00
lda #1
L0A3F: jsr L0DB4
2017-09-13 07:04:21 +00:00
jmp input_loop
;;; ==================================================
L0A45: A2D_CALL A2D_QUERY_TARGET, get_input_params::L0938
A2D_CALL A2D_SET_FILL_MODE, fill_mode_params
A2D_CALL A2D_SET_PATTERN, white_pattern
lda L093D
cmp #$64
bne L0A63
lda L093C
bne L0A64
L0A63: rts
L0A64: cmp #$02
bne L0A63
jsr L0C54
cpx #$00
beq L0A63
txa
sec
sbc #$01
asl a
tay
lda L0A84,y
sta L0A82
2017-09-13 07:04:21 +00:00
lda L0A84+1,y
sta L0A83
L0A82 := * + 1
L0A83 := * + 2
jmp L1000
2017-09-13 07:04:21 +00:00
;; jump table for... ?
L0A84: .addr L0A92,on_cancel,on_up,on_down
.addr $0AE5,$0AE5,$0AE5
L0A92:
A2D_CALL A2D_FILL_RECT, ok_button_rect
sta RAMWRTOFF
2017-09-13 05:01:45 +00:00
lda month
asl a
asl a
asl a
asl a
asl a
2017-09-13 05:01:45 +00:00
ora day
sta DATELO
2017-09-13 05:01:45 +00:00
lda year
rol a
sta DATEHI
sta RAMWRTON
lda #$01
sta L0C1A
jmp L0C1B
2017-09-13 07:04:21 +00:00
;;; ==================================================
on_cancel:
A2D_CALL A2D_FILL_RECT, cancel_button_rect
lda #$00
sta L0C1A
jmp L0C1B
2017-09-13 07:04:21 +00:00
on_up:
txa
pha
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_FILL_RECT, up_arrow_rect
pla
tax
jsr L0AEC
rts
2017-09-13 07:04:21 +00:00
on_down:
txa
pha
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_FILL_RECT, down_arrow_rect
pla
tax
jsr L0AEC
rts
txa
sec
sbc #$04
jmp L0DB4
L0AEC: stx L0B50
L0AEF: A2D_CALL A2D_GET_INPUT, get_input_params
lda get_input_params::L0937
cmp #$02
beq L0B02
jsr L0B17
jmp L0AEF
L0B02: lda L0B50
cmp #$03
beq L0B10
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_FILL_RECT, down_arrow_rect
rts
2017-09-13 04:27:27 +00:00
L0B10: A2D_CALL A2D_FILL_RECT, up_arrow_rect
rts
L0B17: jsr L0DF2
lda L0B50
cmp #$03
beq L0B2C
lda #$59
sta $07
lda #$0B
sta $08
jmp L0B34
L0B2C: lda #$51
sta $07
lda #$0B
sta $08
2017-09-13 05:01:45 +00:00
L0B34: lda selected_field
asl a
tay
lda ($07),y
sta L0B45
iny
lda ($07),y
sta L0B46
L0B45 := * + 1
L0B46 := * + 2
jsr L1000
2017-09-11 03:40:32 +00:00
A2D_CALL $0C, L08FC
jmp L0D73
2017-09-13 07:04:21 +00:00
;;; ==================================================
L0B50: .byte $00
.byte $00,$00
.addr increment_day,increment_month,increment_year
.byte $00,$00
.addr decrement_day,decrement_month,decrement_year
increment_day:
clc
2017-09-13 05:01:45 +00:00
lda day
2017-09-13 07:04:21 +00:00
adc #1
cmp #32
bne :+
lda #1
: sta day
2017-09-13 05:01:45 +00:00
jmp prepare_day_string
2017-09-13 07:04:21 +00:00
increment_month:
clc
2017-09-13 05:01:45 +00:00
lda month
2017-09-13 07:04:21 +00:00
adc #1
cmp #13
bne :+
lda #1
: sta month
2017-09-13 05:01:45 +00:00
jmp prepare_month_string
2017-09-13 07:04:21 +00:00
increment_year:
clc
2017-09-13 05:01:45 +00:00
lda year
2017-09-13 07:04:21 +00:00
adc #1
cmp #100
bne :+
lda #0
: sta year
2017-09-13 05:01:45 +00:00
jmp prepare_year_string
2017-09-13 07:04:21 +00:00
decrement_day:
2017-09-13 05:01:45 +00:00
dec day
2017-09-13 07:04:21 +00:00
bne :+
lda #31
2017-09-13 05:01:45 +00:00
sta day
2017-09-13 07:04:21 +00:00
: jmp prepare_day_string
2017-09-13 07:04:21 +00:00
decrement_month:
2017-09-13 05:01:45 +00:00
dec month
2017-09-13 07:04:21 +00:00
bne :+
lda #12
2017-09-13 05:01:45 +00:00
sta month
2017-09-13 07:04:21 +00:00
: jmp prepare_month_string
2017-09-13 07:04:21 +00:00
decrement_year:
2017-09-13 05:01:45 +00:00
dec year
2017-09-13 07:04:21 +00:00
bpl :+
lda #99
2017-09-13 05:01:45 +00:00
sta year
2017-09-13 07:04:21 +00:00
: jmp prepare_year_string
;;; ==================================================
2017-09-13 05:01:45 +00:00
.proc prepare_day_string
lda day
jsr div_by_10_then_ascii
2017-09-13 05:01:45 +00:00
sta day_string+3 ; first char
stx day_string+4 ; second char
rts
2017-09-13 05:01:45 +00:00
.endproc
2017-09-13 05:01:45 +00:00
.proc prepare_month_string
lda month ; month * 3 - 1
asl a
clc
2017-09-13 05:01:45 +00:00
adc month
tax
dex
2017-09-13 05:01:45 +00:00
ptr := $07
str := month_string + 3
lda #<str
sta ptr
lda #>str
sta ptr+1
ldy #2
loop: lda month_name_table,x
sta (ptr),y
dex
dey
2017-09-13 05:01:45 +00:00
bpl loop
rts
2017-09-13 05:01:45 +00:00
.endproc
2017-09-13 05:01:45 +00:00
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
2017-09-13 05:01:45 +00:00
sta year_string+3
stx year_string+4
rts
2017-09-13 07:04:21 +00:00
;;; ==================================================
L0C1A: .byte 0
2017-09-11 03:40:32 +00:00
L0C1B: A2D_CALL A2D_DESTROY_WINDOW, L0947
jsr UNKNOWN_CALL
.byte $0C
.addr L0000
ldx #$09
L0C29: lda L0C4B,x
sta L0020,x
dex
bpl L0C29
lda L0C1A
beq L0C48
2017-09-13 05:01:45 +00:00
lda month
asl a
asl a
asl a
asl a
asl a
2017-09-13 05:01:45 +00:00
ora day
tay
2017-09-13 05:01:45 +00:00
lda year
rol a
tax
tya
L0C48: jmp L0020
L0C4B: sta RAMRDOFF
sta RAMWRTOFF
jmp L086B
2017-09-13 07:04:21 +00:00
;;; ==================================================
L0C54: lda get_input_params::L0938
sta L093F
lda get_input_params::L0939
sta L0940
lda get_input_params::L093A
sta L0941
lda get_input_params::L093B
sta L0942
2017-09-11 03:40:32 +00:00
A2D_CALL A2D_MAP_COORDS, L093E
A2D_CALL A2D_SET_POS, L0943
ldx #$01
lda #$C4
sta L0C8A
lda #$08
sta L0C8A+1
L0C84: txa
pha
2017-09-11 03:40:32 +00:00
A2D_CALL A2D_TEST_BOX, $1000, L0C8A
bne L0CA6
clc
lda L0C8A
adc #$08
sta L0C8A
bcc L0C9C
inc L0C8A+1
L0C9C: pla
tax
inx
cpx #$08
bne L0C84
ldx #$00
rts
L0CA6: pla
tax
rts
2017-09-13 07:04:21 +00:00
;;; ==================================================
;;; Params for the display
2017-09-13 04:27:27 +00:00
border_rect: .byte $04,$00,$02,$00,$C0,$00,$3D,$00
date_rect: .byte $20,$00,$0F,$00,$9A,$00,$23,$00
label_ok:
A2D_DEFSTRING {"OK ",$0D} ; ends with newline
label_cancel:
A2D_DEFSTRING "Cancel ESC"
label_uparrow:
A2D_DEFSTRING $0B ; up arrow
label_downarrow:
A2D_DEFSTRING $0A ; down arrow
label_cancel_pos:
.word $15,$38
label_ok_pos:
.word $6E,$38
label_uparrow_pos:
.word $AC,$13
label_downarrow_pos:
.word $AC,$27
;; Params for $0A call
L0CEE: .byte $01,$01
2017-09-13 04:27:27 +00:00
2017-09-13 07:04:21 +00:00
;;; ==================================================
;;; Render the window contents
L0CF0: A2D_CALL A2D_SET_BOX1, create_window_params::box
2017-09-13 04:27:27 +00:00
A2D_CALL A2D_DRAW_RECT, border_rect
A2D_CALL $0A, L0CEE ; ????
A2D_CALL A2D_DRAW_RECT, date_rect
A2D_CALL A2D_DRAW_RECT, ok_button_rect
A2D_CALL A2D_DRAW_RECT, cancel_button_rect
A2D_CALL A2D_SET_POS, label_ok_pos
A2D_CALL A2D_DRAW_TEXT, label_ok
A2D_CALL A2D_SET_POS, label_cancel_pos
A2D_CALL A2D_DRAW_TEXT, label_cancel
A2D_CALL A2D_SET_POS, label_uparrow_pos
A2D_CALL A2D_DRAW_TEXT, label_uparrow
A2D_CALL A2D_DRAW_RECT, up_arrow_rect
A2D_CALL A2D_SET_POS, label_downarrow_pos
A2D_CALL A2D_DRAW_TEXT, label_downarrow
A2D_CALL A2D_DRAW_RECT, down_arrow_rect
2017-09-13 05:01:45 +00:00
jsr prepare_day_string
jsr prepare_month_string
jsr prepare_year_string
jsr draw_day
jsr draw_month
jsr draw_year
A2D_CALL A2D_SET_FILL_MODE, fill_mode_params
A2D_CALL A2D_SET_PATTERN, white_pattern
2017-09-13 05:01:45 +00:00
lda #1
jmp L0DB4
2017-09-13 05:01:45 +00:00
L0D73: lda selected_field
cmp #1
beq draw_day
cmp #2
beq draw_month
jmp draw_year
2017-09-13 05:01:45 +00:00
draw_day:
A2D_CALL A2D_SET_POS, day_pos
A2D_CALL A2D_DRAW_TEXT, day_string
rts
2017-09-13 05:01:45 +00:00
draw_month:
A2D_CALL A2D_SET_POS, month_pos
A2D_CALL A2D_DRAW_TEXT, spaces_string ; variable width, so clear first
A2D_CALL A2D_SET_POS, month_pos
A2D_CALL A2D_DRAW_TEXT, month_string
rts
2017-09-13 05:01:45 +00:00
draw_year:
A2D_CALL A2D_SET_POS, year_pos
A2D_CALL A2D_DRAW_TEXT, year_string
rts
2017-09-13 07:04:21 +00:00
;;; ==================================================
L0DB4: pha
2017-09-13 05:01:45 +00:00
lda selected_field
beq L0DD1
2017-09-13 05:01:45 +00:00
cmp #1
bne L0DC4
jsr L0DE4
jmp L0DD1
2017-09-13 05:01:45 +00:00
L0DC4: cmp #2
bne L0DCE
jsr L0DEB
jmp L0DD1
L0DCE: jsr L0DDD
L0DD1: pla
2017-09-13 05:01:45 +00:00
sta selected_field
cmp #1
beq L0DE4
2017-09-13 05:01:45 +00:00
cmp #2
beq L0DEB
2017-09-13 04:27:27 +00:00
L0DDD: A2D_CALL A2D_FILL_RECT, fill_rect_params6
rts
2017-09-13 04:27:27 +00:00
L0DE4: A2D_CALL A2D_FILL_RECT, fill_rect_params3
rts
2017-09-13 04:27:27 +00:00
L0DEB: A2D_CALL A2D_FILL_RECT, fill_rect_params7
rts
L0DF2: lda #$FF
sec
L0DF5: pha
L0DF6: sbc #$01
bne L0DF6
pla
sbc #$01
bne L0DF5
rts
2017-09-13 07:04:21 +00:00
;;; ==================================================
;; save ZP
L0E00: ldx #$00
L0E02: lda L0000,x
2017-09-13 07:04:21 +00:00
sta zp_buffer,x
dex
bne L0E02
rts
2017-09-13 07:04:21 +00:00
;; restore ZP
ldx #$00
2017-09-13 07:04:21 +00:00
L0E0D: lda zp_buffer,x
sta L0000,x
dex
bne L0E0D
rts
2017-09-13 07:04:21 +00:00
zp_buffer:
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
2017-09-13 07:04:21 +00:00
.byte $00,$00,$00,$00,$00,$00,$00,$00
;;; ==================================================
2017-09-11 03:40:32 +00:00
.proc div_by_10_then_ascii ; A = A / 10, X = remainder, results in ASCII form
2017-09-13 05:03:23 +00:00
ldy #0
loop: cmp #10 ; Y = A / 10
bcc :+
sec
2017-09-13 05:03:23 +00:00
sbc #10
iny
jmp loop
: clc ; then convert to ASCII
2017-09-13 04:27:27 +00:00
adc #'0'
tax
tya
clc
2017-09-13 04:27:27 +00:00
adc #'0'
rts ; remainder in X, result in A
.endproc
rts ; ???
last := *