WDC-4.21: make the WDC Firmware work with ST-251-1 drives

Submitted by: kaiOr (Kai O.)
This commit is contained in:
Oliver Lehmann 2015-12-29 22:56:50 +01:00
parent e7703dbe16
commit 0f11ff363a
1 changed files with 38 additions and 33 deletions

View File

@ -9,7 +9,7 @@
begin 0 begin 0
jr entry jr entry
string text 'WDC_4.2' string text 'WDC_4.21'
sc_len equ 512 ;Laenge des Datenfeldes eines Sektors (Byte) sc_len equ 512 ;Laenge des Datenfeldes eines Sektors (Byte)
@ -791,43 +791,17 @@ rd_stp in a,(ST_PRT) ;Lesen des Statusports
ret z ;Rueckkehr ok. ret z ;Rueckkehr ok.
ld a,(dsk_c1) ld a,(dsk_c1)
set 0,a ;'ST=aktiv' set 0,a ;'ST=aktiv'
di
out (DSKC1),a out (DSKC1),a
res 0,a ;'ST=inaktiv' res 0,a ;'ST=inaktiv'
out (DSKC1),a out (DSKC1),a
ei
dec hl dec hl
ld a,h ld a,h
or l or l
jr nz,wt_see jr nz,wt_see
inc a inc a
ret ;Rueckkehr mit Fehler (nz) ret ;Rueckkehr mit Fehler (nz)
;----------------------------
; Ausfuehrung eines Schrittes
; HL: Schrittanzahl
;----------------------------
ramp ld a,(dsk_c1) ;Ausgabebyte fuer DSKC1
xor 1 ;Step-Impuls ein
out (DSKC1),a
xor 1 ;Step-Impuls aus
out (DSKC1),a
dec hl
ld a,h
or l
jr nz,ramp
ret
si_step ld a,(dsk_c1) ;Ausgabebyte fuer DSKC1
xor 1 ;Step-Impuls ein
out (DSKC1),a
xor 1 ;Step-Impuls aus
out (DSKC1),a
dec hl
ld a,h
or l
ret z
ld de,150
call time
jr si_step
;--- cy_pos --------------------------------------------- ;--- cy_pos ---------------------------------------------
; Bestimmung der Position in 'cy_tab' ; Bestimmung der Position in 'cy_tab'
@ -1608,12 +1582,41 @@ mv0 push hl ;Step-Anzahl
ld a,(rp_mod) ld a,(rp_mod)
ld c,a ld c,a
ld b,0 ld b,0
xor a
sbc hl,bc sbc hl,bc
pop hl pop hl
jr c,sngl jp z,si_step
call ramp ;Stepausfuehrung im Ramp-Mode jp nc,ramp
jr mv1
sngl call si_step ;Stepausfuehrung im Single-Step-Mode ; Stepausfuehrung im Single- und Slow-Step-Mode, HL: Schrittanzahl
si_step ld a,(dsk_c1) ;Ausgabebyte fuer DSKC1
xor 1 ;Step-Impuls ein
di
out (DSKC1),a
xor 1 ;Step-Impuls aus
out (DSKC1),a
ei
dec hl
ld a,h
or l
jr z,mv1
ld de,320
call time
jr si_step
; Stepausfuehrung im Ramp-Mode, HL: Schrittanzahl
ramp ld a,(hst_by) ;Test auf Abschluss von Host-Transfers
bit 7,a
jr nz,ramp
ld de,(dsk_c1) ;Ausgabebyte fuer DSKC1 nach e
set 0,e ;Step-Impuls an
rmp ld a,e
out (DSKC1),a
xor 1 ;Step-Impuls aus
out (DSKC1),a
dec hl
ld a,h
or l
jp nz,rmp
mv1 in a,(ST_PRT) ;Lesen des Status-Ports mv1 in a,(ST_PRT) ;Lesen des Status-Ports
bit 3,a ;'SEEKC=aktiv' ? bit 3,a ;'SEEKC=aktiv' ?
jr nz,mv1 jr nz,mv1
@ -2335,9 +2338,11 @@ step1 ld a,(dsk_c1) ;Ausgabebyte fuer DSKC1
set 3,a ;SD nach innen set 3,a ;SD nach innen
out (DSKC1),a out (DSKC1),a
xor 1 ;ST ein xor 1 ;ST ein
di
out (DSKC1),a out (DSKC1),a
xor 1 ;ST aus xor 1 ;ST aus
out (DSKC1),a out (DSKC1),a
ei
step11 in a,(ST_PRT) step11 in a,(ST_PRT)
bit 3,a bit 3,a
jr nz,step11 jr nz,step11