add msbasic
This commit is contained in:
1 parent
d37d434228
commit
c5a028c8c6
104 files changed
+25598
-13802
No files matched your search
@@ -0,0 +1,92 @@
|
||||
.segment "EXTRA"
|
||||
.export MONRDKEY_NB, MONRDKEY, MONCOUT, INITUSBSERIAL
|
||||
|
||||
VIA_USB_REG_DDRB := $7FE2
|
||||
VIA_USB_REG_DDRA := $7FE3
|
||||
VIA_USB_REG_PORTB := $7FE0
|
||||
VIA_USB_REG_PORTA := $7FE1
|
||||
VIA_USB_NRD := %00001000 ; make RD# high to not output data from FTDI
|
||||
VIA_USB_WR := %00000100 ; make WR high to output data from FTDI
|
||||
VIA_USB_nRXF := %00000010
|
||||
VIA_USB_DDRB_INIT := (VIA_USB_NRD+VIA_USB_WR)
|
||||
|
||||
; INIT: Set up outputs and block reading characters from FTDI
|
||||
INITUSBSERIAL:
|
||||
lda #(VIA_USB_NRD+VIA_USB_WR) ; Make these outputs
|
||||
sta VIA_USB_REG_DDRB ; to DDRB
|
||||
lda #VIA_USB_NRD ; Block RD, no WR
|
||||
sta VIA_USB_REG_PORTB ; to REGB
|
||||
rts
|
||||
|
||||
MONRDKEY_NB:
|
||||
READCHAR:
|
||||
lda VIA_USB_REG_PORTB
|
||||
and #VIA_USB_nRXF
|
||||
|
||||
bne READCHAR_NOTHINGTOREAD ; Z=0 -> had no result
|
||||
|
||||
; Reset DDRA as input
|
||||
lda #$00 ; 0x00
|
||||
sta VIA_USB_REG_DDRA ; to Directory Data (all in)
|
||||
|
||||
lda #0 ; DO RD, no WR
|
||||
sta VIA_USB_REG_PORTB ; to REGB
|
||||
|
||||
|
||||
lda VIA_USB_REG_PORTA
|
||||
|
||||
; Save on stack temporrily
|
||||
pha
|
||||
|
||||
lda #VIA_USB_NRD ; Block RD, no WR
|
||||
sta VIA_USB_REG_PORTB ; to REGB
|
||||
|
||||
; Get character back
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
|
||||
READCHAR_NOTHINGTOREAD:
|
||||
clc
|
||||
rts
|
||||
|
||||
MONRDKEY:
|
||||
php
|
||||
@MONRDKEYREREAD:
|
||||
jsr MONRDKEY_NB
|
||||
bcc @MONRDKEYREREAD
|
||||
; Enable to echo back
|
||||
; jsr SENDCHAR
|
||||
plp
|
||||
rts
|
||||
|
||||
MONCOUT:
|
||||
; TXE SHOULD be read before sending, but since the USB connection is
|
||||
; running full speed this buffer has not been seen filling up.
|
||||
|
||||
; Save A for when returning
|
||||
pha
|
||||
|
||||
; Output character
|
||||
sta VIA_USB_REG_PORTA ; to data
|
||||
|
||||
lda #VIA_USB_NRD ; Block RD, no WR
|
||||
sta VIA_USB_REG_PORTB ; to REGB
|
||||
|
||||
lda #$FF
|
||||
sta VIA_USB_REG_DDRA ; (all out)
|
||||
|
||||
; Pulse WR
|
||||
lda #(VIA_USB_NRD+VIA_USB_WR) ; Block RD, DO WR
|
||||
sta VIA_USB_REG_PORTB ; to REGB
|
||||
lda #VIA_USB_NRD ; Block RD, no WR
|
||||
sta VIA_USB_REG_PORTB ; to REGB
|
||||
|
||||
; Reset DDRA as input
|
||||
lda #$00
|
||||
sta VIA_USB_REG_DDRA ; to Directory Data (all in)
|
||||
|
||||
; Restore Accumulator
|
||||
pla
|
||||
rts
|
||||
|
||||
Reference in new issue
Block a user