alarm-clock-6502/alarmclk.s
Bill Chatfield 6648236fb6 Added stuff
2015-08-24 02:40:05 -04:00

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