Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.bg
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "u-wo za zapis na danni"
.define res_string_card_type_network "mrevowa karta"
.define res_string_card_type_mockingboard "MOCKINGBOARD"
.define res_string_card_type_phasor "PHASOR"
.define res_string_card_type_z80 "Z-80 SOFTCARD"
.define res_string_card_type_uthernet2 "UTHERNET II"
.define res_string_card_type_passport "PASSPORT MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.da
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Masselagring"
.define res_string_card_type_network "Netv{rkskort"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Z-80 SoftCard"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.de
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Massenspeicher"
.define res_string_card_type_network "Netzwerkkarte"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Z-80 SoftCard"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.en
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Mass Storage"
.define res_string_card_type_network "Network Card"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Z-80 SoftCard"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.es
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Dispositivo de Almacenamiento"
.define res_string_card_type_network "Tarjeta de Red"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Tarjeta Z-80"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.fr
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "M{moire de masse"
.define res_string_card_type_network "Carte r{seau"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Carte Z-80"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.it
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Memoria di massa"
.define res_string_card_type_network "Scheda di rete"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Scheda Z-80"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.nl
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Massa-opslag"
.define res_string_card_type_network "Netwerk kaart"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Z-80 SoftCard"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.pt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Dispositivo de armazenamento"
.define res_string_card_type_network "Placa de Rede"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Placa Z-80"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
1 change: 1 addition & 0 deletions src/desk_acc/res/this.apple.res.sv
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
.define res_string_card_type_storage "Masslagring"
.define res_string_card_type_network "N{tverkskort"
.define res_string_card_type_mockingboard "Mockingboard"
.define res_string_card_type_phasor "Phasor"
.define res_string_card_type_z80 "Z-80 Kort"
.define res_string_card_type_uthernet2 "Uthernet II"
.define res_string_card_type_passport "Passport MIDI"
Expand Down
9 changes: 8 additions & 1 deletion src/desk_acc/this.apple.s
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,7 @@ str_audio: PASCAL_STRING res_string_card_type_audio
str_storage: PASCAL_STRING res_string_card_type_storage
str_network: PASCAL_STRING res_string_card_type_network
str_mockingboard: PASCAL_STRING res_string_card_type_mockingboard
str_phasor: PASCAL_STRING res_string_card_type_phasor
str_z80: PASCAL_STRING res_string_card_type_z80
str_uthernet2: PASCAL_STRING res_string_card_type_uthernet2
str_passport: PASCAL_STRING res_string_card_type_passport
Expand Down Expand Up @@ -1700,7 +1701,12 @@ sigtable_xdrive: .byte 4, $07, $3C, $0B, $B0, $0C, $01, $F0, $CA

CALL WithInterruptsDisabled, AX=#DetectMockingboard
IF CS
RETURN AX=#str_mockingboard
CALL WithInterruptsDisabled, AX=#DetectPhasor
IF CS
RETURN AX=#str_phasor
END_IF

RETURN C=1, AX=#str_mockingboard
END_IF

CALL WithInterruptsDisabled, AX=#DetectZ80
Expand Down Expand Up @@ -1927,6 +1933,7 @@ write: sta $C080,x ; self-modified to $C0n0
.endproc ; DetectPassportMIDI

.include "../lib/detect_mockingboard.s"
.include "../lib/detect_phasor.s"
.include "../lib/detect_thecricket.s"

;;; ============================================================
Expand Down
82 changes: 82 additions & 0 deletions src/lib/detect_phasor.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
;;; ============================================================
;;; Detect Phasor
;;;
;;; A Phasor will also be detected as a Mockingboard, so first
;;; detect the Mockingboard, and if successful detect the Phasor
;;;
;;; Inputs: $06 points at $Cs00
;;; Outputs: C=1 if detected, C=0 otherwise
;;; Assert: Interrupts disabled
;;; ============================================================

.proc DetectPhasor
ptr := $06

txa
pha ; preserve caller's X

lda ptr+1 ; $Cs00 high byte
and #$07 ; slot
asl
asl
asl
asl ; X offset = slot * 16
tax

;; Force Phasor native mode: $C0(8+s)D
lda $C08D,X

;; In native mode, $Cs04 should no longer be VIA0.
ldy #$04
jsr ProbeViaTimerPreserveX
bcs fail_restore

;; In native mode, VIA0 timer-low appears at $Cs14.
ldy #$14
jsr ProbeViaTimerPreserveX
bcc fail_restore

;; Restore Mockingboard-compatible mode: $C0(8+s)8
lda $C088,X

pla
tax
RETURN C=1

fail_restore:
lda $C088,X

pla
tax
RETURN C=0
.endproc

.proc ProbeViaTimerPreserveX
ptr := $06
tmp := $08

txa
pha

ldx #2

loop: lda (ptr),Y
sta tmp
lda (ptr),Y

sec
sbc tmp
cmp #($100 - 8)
bne fail

dex
bne loop

pla
tax
RETURN C=1

fail: pla
tax
RETURN C=0
.endproc