Firstly, am I right to say Fig 2.13.3 should refer to "CB2 OUTPUT DATA" and not "CB2 INPUT DATA"? My code is here...
Code: Select all
; sr_test.a65
; Send $0F and $F0 to shift register in infinite loop.
;
; ******************************************************************************
; Define VIA 65C22 address lines.
; ******************************************************************************
SR = $600A ; Shift Register.
ACR = $600B ; Auxillary Control Register.
PCR = $600C ; Peripheral control Register.
IFR = $600D ; Interrupt Flag Register.
IER = $600E ; Interrupt Enable Register.
; ******************************************************************************
; Bit manipulation values.
; ******************************************************************************
SBIT0 = %00000001
SBIT1 = %00000010
SBIT2 = %00000100
SBIT3 = %00001000
SBIT4 = %00010000
SBIT5 = %00100000
SBIT6 = %01000000
SBIT7 = %10000000
CBIT0 = %11111110
CBIT1 = %11111101
CBIT2 = %11111011
CBIT3 = %11110111
CBIT4 = %11101111
CBIT5 = %11011111
CBIT6 = %10111111
CBIT7 = %01111111
; Programme start.
.org $0400
; Code goes here...
app_start:
lda ACR ; Get current value of Auxillary Control Register.
and #CBIT2 ; Clear bit 2.
ora #(SBIT4 | SBIT3) ; Set bits 4 & 3.
sta ACR ; Store new value in Auxillary Control Register.
loop:
lda #$0F
sta SR ; Write to shift register.
lda IFR
and #CBIT2
sta IFR ; Clear IFR2.
lda #$F0
sta SR ; Write to shift register.
lda IFR
and #CBIT2
sta IFR
bra loop
; Return to the monitor.
rtsThanks.
Dave
EDIT
Still tinkering, I tried just...
Code: Select all
loop:
lda #$0F
sta SR ; Write to shift register.
lda #$F0
sta SR ; Write to shift register.
bra loop