mirror of
https://github.com/a2stuff/prodos-drivers.git
synced 2025-01-20 08:31:31 +00:00
Prevent hang probing for The Cricket! in MAME on IIc/IIc+
In MAME, for the SSC in Slot 2, the STATUS flag never comes back with
ready-to-send, so the probe would hang. Introduce a timer, same as on
the receiving side, and timeout instead of hanging.
Similar to 14e72b7384
This commit is contained in:
parent
18a73004c4
commit
01175cf573
@ -89,6 +89,7 @@ init_ssc:
|
|||||||
;; Read Cricket ID code: 00 ($00)
|
;; Read Cricket ID code: 00 ($00)
|
||||||
lda #0
|
lda #0
|
||||||
jsr sendbyte
|
jsr sendbyte
|
||||||
|
bcs cricket_not_found ; timeout
|
||||||
|
|
||||||
;; "The Cricket will return a "C" (195, $C3) followed by a
|
;; "The Cricket will return a "C" (195, $C3) followed by a
|
||||||
;; version number (in ASCII) and a carriage return (141, $8D)."
|
;; version number (in ASCII) and a carriage return (141, $8D)."
|
||||||
@ -168,12 +169,33 @@ saved_control: .byte 0
|
|||||||
|
|
||||||
;; Write byte in A
|
;; Write byte in A
|
||||||
.proc sendbyte
|
.proc sendbyte
|
||||||
|
tries := $100 * read_delay_hi
|
||||||
|
counter := $A5
|
||||||
|
|
||||||
pha
|
pha
|
||||||
: lda STATUS
|
|
||||||
|
lda #<tries
|
||||||
|
sta counter
|
||||||
|
lda #>tries
|
||||||
|
sta counter+1
|
||||||
|
|
||||||
|
check: lda STATUS
|
||||||
and #(1 << 4) ; transmit register empty? (bit 4)
|
and #(1 << 4) ; transmit register empty? (bit 4)
|
||||||
beq :- ; nope, keep waiting
|
bne ready ; yes, ready to write
|
||||||
|
|
||||||
|
dec counter
|
||||||
|
bne check
|
||||||
|
dec counter+1
|
||||||
|
bne check
|
||||||
|
|
||||||
|
pla
|
||||||
|
sec ; failed
|
||||||
|
rts
|
||||||
|
|
||||||
|
ready:
|
||||||
pla
|
pla
|
||||||
sta TDREG
|
sta TDREG
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user