mirror of
https://github.com/gungwald/alarm-clock-6502.git
synced 2024-05-28 03:48:24 +00:00
516 lines
5.9 KiB
ArmAsm
516 lines
5.9 KiB
ArmAsm
;
|
|
; File generated by cc65 v 2.15 - Git 6f24c07
|
|
;
|
|
.fopt compiler,"cc65 v 2.15 - Git 6f24c07"
|
|
.setcpu "65C02"
|
|
.smart on
|
|
.autoimport on
|
|
.case on
|
|
.debuginfo off
|
|
.importzp sp, sreg, regsave, regbank
|
|
.importzp tmp1, tmp2, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4
|
|
.macpack longbranch
|
|
.forceimport __STARTUP__
|
|
.import _printf
|
|
.import _puts
|
|
.import _toupper
|
|
.import _clrscr
|
|
.import _kbhit
|
|
.import _cgetc
|
|
.import _read_interactively
|
|
.import _load_system_time
|
|
.import _add_one_second
|
|
.import _print_time
|
|
.import _reprint_time
|
|
.import _ClockFreq
|
|
.import _Ticks
|
|
.export _read_inputs
|
|
.export _elapse_one_second
|
|
.export _run_clock
|
|
.export _main
|
|
|
|
.segment "RODATA"
|
|
|
|
L0009:
|
|
.byte $25,$63,$25,$63,$2E,$25,$63,$25,$63,$25,$63,$25,$63,$25,$63,$25
|
|
.byte $63,$20,$4D,$48,$7A,$0A,$00
|
|
L001F:
|
|
.byte $0A,$41,$6C,$61,$72,$6D,$20,$54,$69,$6D,$65,$3A,$20,$20,$20,$00
|
|
L0024:
|
|
.byte $0A,$43,$75,$72,$72,$65,$6E,$74,$20,$54,$69,$6D,$65,$3A,$20,$00
|
|
L002C:
|
|
.byte $43,$75,$72,$72,$65,$6E,$74,$20,$54,$69,$6D,$65,$00
|
|
L0031:
|
|
.byte $41,$6C,$61,$72,$6D,$20,$54,$69,$6D,$65,$00
|
|
L004B := L0009+22
|
|
|
|
.segment "BSS"
|
|
|
|
_curr_time:
|
|
.res 5,$00
|
|
_alarm_time:
|
|
.res 5,$00
|
|
|
|
; ---------------------------------------------------------------
|
|
; void __near__ read_inputs (void)
|
|
; ---------------------------------------------------------------
|
|
|
|
.segment "CODE"
|
|
|
|
.proc _read_inputs: near
|
|
|
|
.segment "CODE"
|
|
|
|
lda #<(_curr_time)
|
|
ldx #>(_curr_time)
|
|
jsr _load_system_time
|
|
jsr bnega
|
|
jeq L0028
|
|
lda #<(L002C)
|
|
ldx #>(L002C)
|
|
jsr _puts
|
|
lda #<(_curr_time)
|
|
ldx #>(_curr_time)
|
|
jsr _read_interactively
|
|
L0028: lda #<(L0031)
|
|
ldx #>(L0031)
|
|
jsr _puts
|
|
lda #<(_alarm_time)
|
|
ldx #>(_alarm_time)
|
|
jsr _read_interactively
|
|
rts
|
|
|
|
.endproc
|
|
|
|
; ---------------------------------------------------------------
|
|
; void __near__ elapse_one_second (void)
|
|
; ---------------------------------------------------------------
|
|
|
|
.segment "CODE"
|
|
|
|
.proc _elapse_one_second: near
|
|
|
|
.segment "CODE"
|
|
|
|
jsr decsp4
|
|
ldx #$07
|
|
lda #$FE
|
|
ldy #$00
|
|
jsr staxysp
|
|
ldx #$00
|
|
lda #$00
|
|
ldy #$02
|
|
jsr staxysp
|
|
L0050: ldy #$03
|
|
jsr ldaxysp
|
|
jsr pushax
|
|
ldy #$03
|
|
jsr ldaxysp
|
|
jsr tosltax
|
|
jne L0053
|
|
jmp L0051
|
|
L0053: nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
ldy #$02
|
|
ldx #$00
|
|
lda #$01
|
|
jsr addeqysp
|
|
jmp L0050
|
|
L0051: jsr incsp4
|
|
rts
|
|
|
|
.endproc
|
|
|
|
; ---------------------------------------------------------------
|
|
; void __near__ run_clock (void)
|
|
; ---------------------------------------------------------------
|
|
|
|
.segment "CODE"
|
|
|
|
.proc _run_clock: near
|
|
|
|
.segment "CODE"
|
|
|
|
jsr decsp1
|
|
lda #<(_curr_time)
|
|
ldx #>(_curr_time)
|
|
jsr _print_time
|
|
jmp L003A
|
|
L0038: jsr _elapse_one_second
|
|
lda #<(_curr_time)
|
|
ldx #>(_curr_time)
|
|
jsr _add_one_second
|
|
lda #<(_curr_time)
|
|
ldx #>(_curr_time)
|
|
jsr _reprint_time
|
|
jsr _kbhit
|
|
tax
|
|
jeq L003A
|
|
jsr _cgetc
|
|
ldy #$00
|
|
sta (sp),y
|
|
ldy #$00
|
|
ldx #$00
|
|
lda (sp),y
|
|
cmp #$1B
|
|
jsr booleq
|
|
jne L0046
|
|
ldy #$00
|
|
ldx #$00
|
|
lda (sp),y
|
|
ldx #$00
|
|
jsr _toupper
|
|
cpx #$00
|
|
bne L0048
|
|
cmp #$51
|
|
L0048: jsr booleq
|
|
jne L0046
|
|
ldy #$00
|
|
ldx #$00
|
|
lda (sp),y
|
|
cmp #$03
|
|
jsr booleq
|
|
jne L0046
|
|
ldx #$00
|
|
lda #$00
|
|
jeq L0049
|
|
L0046: ldx #$00
|
|
lda #$01
|
|
L0049: jeq L003A
|
|
lda #<(L004B)
|
|
ldx #>(L004B)
|
|
jsr _puts
|
|
jmp L0039
|
|
L003A: jmp L0038
|
|
L0039: jsr incsp1
|
|
rts
|
|
|
|
.endproc
|
|
|
|
; ---------------------------------------------------------------
|
|
; void __near__ main (void)
|
|
; ---------------------------------------------------------------
|
|
|
|
.segment "CODE"
|
|
|
|
.proc _main: near
|
|
|
|
.segment "CODE"
|
|
|
|
ldy #$00
|
|
jsr _ClockFreq
|
|
lda #<(L0009)
|
|
ldx #>(L0009)
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks
|
|
ldx #$00
|
|
and #$70
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks
|
|
ldx #$00
|
|
and #$07
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks+1
|
|
ldx #$00
|
|
and #$70
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks+1
|
|
ldx #$00
|
|
and #$07
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks+2
|
|
ldx #$00
|
|
and #$70
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks+2
|
|
ldx #$00
|
|
and #$07
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks+3
|
|
ldx #$00
|
|
and #$70
|
|
jsr pushax
|
|
ldx #$00
|
|
lda _Ticks+3
|
|
ldx #$00
|
|
and #$07
|
|
jsr pushax
|
|
ldy #$12
|
|
jsr _printf
|
|
jsr _clrscr
|
|
jsr _read_inputs
|
|
jsr _clrscr
|
|
lda #<(L001F)
|
|
ldx #>(L001F)
|
|
jsr pushax
|
|
ldy #$02
|
|
jsr _printf
|
|
lda #<(_alarm_time)
|
|
ldx #>(_alarm_time)
|
|
jsr _print_time
|
|
lda #<(L0024)
|
|
ldx #>(L0024)
|
|
jsr pushax
|
|
ldy #$02
|
|
jsr _printf
|
|
jsr _run_clock
|
|
rts
|
|
|
|
.endproc
|
|
|