asm-test/shift2.asm

75 lines
1.4 KiB
NASM

; -*-asm-*-
BRA r :reset ; RESB
BRA r :irq ; IRQB
irq: PHA s
LDA a %10000000
STA a 800d
PLA s
RTI s
;; reset stack
reset: SEI i
LDX # ff
TXS i
;; xxxSSSxx
LDA # 18
STA a 800b
LDA # %10000000
STA a 8001
;; CS SCLK DO x x x x x
LDA # %11100000
STA a 8003
;; LDA # %01111111
;; STA a 800e
;; LDA # %10000100
;; STA a 800e
;; low byte
LDX # %11000000 ; write conf
LDY # %00000001
JSR a :spi16
LDX # %10000000 ; write data
LDY # 6c
JSR a :spi16
forever: BRA r :forever
;; CS low
spi16: LDA # %00000000
STA a 8001
STX zp 2
STY zp 1
LDX # 2
_spi_next: LDY # 8
_spi_8: CLC i
ASL zp,x 0
LDA # %00000000 ; clear DO
BCC r :_spi_z
ORA # %00100000 ; set DO
_spi_z: STA a 8001
NOP i
ORA # %01000000 ; set SCLK
STA a 8001
AND # %10111111 ; clear SCLK
STA a 8001
DEY i
BNE r :_spi_8
DEX i
BNE r :_spi_next
;; CS high
LDA # %10000000
STA a 8001
RTS s