75 lines
1.4 KiB
NASM
75 lines
1.4 KiB
NASM
; -*-asm-*-
|
|
include(`common.m4')
|
|
|
|
BRA r :reset ; RESB
|
|
BRA r :irq ; IRQB
|
|
|
|
irq: PHA s
|
|
LDA a %10000000
|
|
STA a IFR
|
|
PLA s
|
|
RTI s
|
|
|
|
;; reset stack
|
|
reset: SEI i
|
|
|
|
LDX # ff
|
|
TXS i
|
|
|
|
;; xxxSSSxx
|
|
LDA # hh(ACR_SR_OUT_PHI2)
|
|
STA a ACR
|
|
|
|
LDA # %10000000
|
|
STA a PORTA
|
|
|
|
;; CS SCLK DO x x x x x
|
|
LDA # %11100000
|
|
STA a DDRA
|
|
|
|
;; LDA # %01111111
|
|
;; STA a IER
|
|
|
|
;; LDA # %10000100
|
|
;; STA a IER
|
|
|
|
;; low byte
|
|
LDX # %11000000 ; write conf
|
|
LDY # %00000001
|
|
JSR a :spi16
|
|
|
|
LDX # %10000000 ; write data
|
|
LDY # ca
|
|
JSR a :spi16
|
|
|
|
forever: BRA r :forever
|
|
|
|
;; CS low
|
|
spi16: LDA # %00000000
|
|
STA a PORTA
|
|
|
|
STX zp 1
|
|
STY zp 2
|
|
|
|
LDY # 2
|
|
_spi_next: LDX # 8
|
|
CLC i
|
|
ASL zp,y 0
|
|
LDA # %00000000 ; clear DO
|
|
BCC r :_spi_z
|
|
ORA # %00100000 ; set DO
|
|
_spi_z: STA a PORTA
|
|
NOP i
|
|
ORA # %01000000 ; set SCLK
|
|
STA a PORTA
|
|
AND # %10111111 ; clear SCLK
|
|
STA a PORTA
|
|
DEX i
|
|
BNE r :_spi_next
|
|
DEY i
|
|
BNE r :_spi_next
|
|
;; CS high
|
|
LDA # %10000000
|
|
STA a PORTA
|
|
RTS s
|