; -*-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