Init rtc and pic in kernel
This commit is contained in:
78
sw/kernel/devices/rtc.s
Normal file
78
sw/kernel/devices/rtc.s
Normal file
@@ -0,0 +1,78 @@
|
||||
.MACPACK generic
|
||||
|
||||
.importzp tmp1
|
||||
|
||||
.export _init_rtc
|
||||
.export _handle_rtc
|
||||
|
||||
RTC_CMD = $effe
|
||||
RTC_DAT = $efff
|
||||
|
||||
RTC_THRESHOLD = $00
|
||||
RTC_INCREMENT = $10
|
||||
RTC_IRQ_THRESHOLD = $20
|
||||
RTC_OUTPUT = $30
|
||||
RTC_CONTROL = $30
|
||||
|
||||
; void init_rtc(void);
|
||||
; Initialize rtc and generate 50ms interrupts
|
||||
.proc _init_rtc
|
||||
lda #RTC_INCREMENT+0 ; Set increment to 1
|
||||
sta RTC_CMD
|
||||
lda #$01
|
||||
sta RTC_DAT
|
||||
lda #RTC_INCREMENT+1
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
lda #RTC_INCREMENT+2
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
lda #RTC_INCREMENT+3
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
|
||||
lda #RTC_THRESHOLD+0 ; Set threshold to 4000 ($fa0)
|
||||
sta RTC_CMD
|
||||
lda #$a0
|
||||
sta RTC_DAT
|
||||
lda #RTC_THRESHOLD+1
|
||||
sta RTC_CMD
|
||||
lda #$0f
|
||||
sta RTC_DAT
|
||||
lda #RTC_THRESHOLD+2
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
lda #RTC_THRESHOLD+3
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
|
||||
lda #RTC_THRESHOLD+0 ; Set irq threshold to 50 ($32)
|
||||
sta RTC_CMD
|
||||
lda #$32
|
||||
sta RTC_DAT
|
||||
lda #RTC_THRESHOLD+1
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
lda #RTC_THRESHOLD+2
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
lda #RTC_THRESHOLD+3
|
||||
sta RTC_CMD
|
||||
lda #$00
|
||||
sta RTC_DAT
|
||||
rts
|
||||
|
||||
.endproc
|
||||
|
||||
|
||||
.proc _handle_rtc
|
||||
nop
|
||||
rti
|
||||
.endproc
|
||||
Reference in New Issue
Block a user