Before I go to bed - I want to post the latest status:
(These are my first steps. Please don't hit me!) and the OPHIS Assembler doesn't know STZ BRA PLX ...
Code: Select all
.org $8600
.alias ACIA $4080
.alias ACIA_DATA ACIA+0
.alias ACIA_STAT ACIA+1
.alias ACIA_COMM ACIA+2
.alias ACIA_CTRL ACIA+3
.alias VIA $4010
.alias VIA_DATA_B VIA+$0
.alias VIA_DATA_A VIA+$1
.alias VIA_DDR_B VIA+$2
.alias VIA_DDR_A VIA+$3
.alias VIA_T1CL VIA+$4
.alias VIA_T1CH VIA+$5
.alias VIA_T1LL VIA+$6
.alias VIA_T1LH VIA+$7
.alias VIA_T2CL VIA+$8
.alias VIA_T2CH VIA+$9
.alias VIA_SR VIA+$A
.alias VIA_ACR VIA+$B
.alias VIA_PCR VIA+$C
.alias VIA_IFR VIA+$D
.alias VIA_IER VIA+$E
.alias VIA_ORA VIA+$F ; without handshake
SET_STACK: LDX #$FF ;reset stack
TXS
SET_ACIA: LDA #$00 ;reset status ACIA
STA ACIA_STAT
LDA ACIA_DATA ;unclear if neccessary
LDA #%00011110 ;set 9600 N 1
STA ACIA_CTRL
LDA #%00001011 ;set ACIA no parity no interrupt
STA ACIA_COMM
SET_VIA: LDA #%11111111
STA VIA_DDR_B
STA VIA_DDR_A
LDA #%00000000
STA VIA_ACR
STA VIA_PCR
STA VIA_IER
STA VIA_IFR
START: ldx #$00
OUTPUT: lda hello, x
sta ACIA_DATA
sta VIA_DATA_A
pha
stx $0001
jsr DELAY
ldx $0001
pla
beq INPUT
inx
bne OUTPUT
INPUT: lda ACIA_DATA
sta VIA_DATA_A
beq INPUT ; if no data try again
ECHO: sta ACIA_DATA
sta VIA_DATA_A
lda #$00
beq START
Delay: LDX #$11
LDY #$FF
StartOuterLoop: DEY
StartInnerLoop: DEX
TXA
BNE StartInnerLoop
TYA
BNE StartOuterLoop
RTS
hello: .byte "Input Please:", 0
I have used this long delay to see whats going on.
My terminal writes garbage: