The Cricket!: Reset SSC ACIA before probing/setting

... and don't bother saving/restoring registers during install,
as this will only follow a boot or OS restart.

Suggested by @frankmilliron

Also inhibit interrupts in the SET.XXX utilities for good measure.
This commit is contained in:
Joshua Bell 2023-06-25 12:06:40 -07:00
parent c01d26042a
commit caeb237321
4 changed files with 50 additions and 16 deletions

View File

@ -77,10 +77,12 @@ ssc_not_found:
init_ssc: init_ssc:
php php
sei sei
lda COMMAND ; save status of SSC registers
sta saved_command ;; Reset SSC
lda CONTROL sta KBDSTRB ; Port 2 DSR line connected to KBDSTRB
sta saved_control lda #0
sta COMMAND
sta CONTROL
;; Configure SSC ;; Configure SSC
lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low
@ -114,12 +116,10 @@ digit: cmp #HI('0') ; < '0' ?
bcc :- bcc :-
cricket_found: cricket_found:
jsr restore_cmd_ctl
plp plp
jmp install_driver jmp install_driver
cricket_not_found: cricket_not_found:
jsr restore_cmd_ctl
plp plp
;; fall through... ;; fall through...
@ -135,16 +135,6 @@ not_found:
sec ; failure sec ; failure
rts rts
restore_cmd_ctl:
lda saved_control
sta CONTROL
lda saved_command
sta COMMAND
rts
saved_command: .byte 0
saved_control: .byte 0
.endproc .endproc
;; Write byte in A ;; Write byte in A

View File

@ -21,6 +21,15 @@
jsr GETLN2 jsr GETLN2
php
sei
;; Reset SSC
sta KBDSTRB ; Port 2 DSR line connected to KBDSTRB
lda #0
sta COMMAND
sta CONTROL
;; Configure SSC ;; Configure SSC
lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low
sta COMMAND sta COMMAND
@ -43,6 +52,8 @@ loop: lda INPUT_BUFFER,x
cmp #HI(ASCII_CR) cmp #HI(ASCII_CR)
bne loop bne loop
plp
rts rts
.endproc .endproc

View File

@ -24,6 +24,15 @@
jsr GETLN2 jsr GETLN2
php
sei
;; Reset SSC
sta KBDSTRB ; Port 2 DSR line connected to KBDSTRB
lda #0
sta COMMAND
sta CONTROL
;; Configure SSC ;; Configure SSC
lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low
sta COMMAND sta COMMAND
@ -46,6 +55,8 @@
cmp #HI(ASCII_CR) cmp #HI(ASCII_CR)
bne :- bne :-
plp
;; -------------------------------------------------- ;; --------------------------------------------------
;; Time ;; Time
@ -55,6 +66,15 @@
jsr GETLN2 jsr GETLN2
php
sei
;; Reset SSC
sta KBDSTRB ; Port 2 DSR line connected to KBDSTRB
lda #0
sta COMMAND
sta CONTROL
;; Configure SSC ;; Configure SSC
lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low
sta COMMAND sta COMMAND
@ -77,6 +97,8 @@
cmp #HI(ASCII_CR) cmp #HI(ASCII_CR)
bne :- bne :-
plp
rts rts
.endproc .endproc

View File

@ -21,6 +21,15 @@
jsr GETLN2 jsr GETLN2
php
sei
;; Reset SSC
sta KBDSTRB ; Port 2 DSR line connected to KBDSTRB
lda #0
sta COMMAND
sta CONTROL
;; Configure SSC ;; Configure SSC
lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low lda #%00001011 ; no parity/echo/interrupts, RTS low, DTR low
sta COMMAND sta COMMAND
@ -43,6 +52,8 @@ loop: lda INPUT_BUFFER,x
cmp #HI(ASCII_CR) cmp #HI(ASCII_CR)
bne loop bne loop
plp
rts rts
.endproc .endproc