|
|
|
@ -106,18 +106,18 @@ FD_CFGTBL: |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB FDMEDIA ; MEDIA TYPE |
|
|
|
.DB $FF ; CURRENT TRACK |
|
|
|
.DB 0 ; HOST TRACK |
|
|
|
.DW 0 ; HOST TRACK |
|
|
|
.DB 0 ; HOST SECTOR |
|
|
|
.DW 0 ; HOST HEAD |
|
|
|
.DB 0 ; HOST HEAD |
|
|
|
#IF (FD_DEVCNT >= 2) |
|
|
|
; DEVICE 1, PRIMARY SLAVE |
|
|
|
.DB 1 ; DRIVER DEVICE NUMBER |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB FDMEDIA ; MEDIA TYPE |
|
|
|
.DB $FF ; CURRENT TRACK |
|
|
|
.DB 0 ; HOST TRACK |
|
|
|
.DW 0 ; HOST TRACK |
|
|
|
.DB 0 ; HOST SECTOR |
|
|
|
.DW 0 ; HOST HEAD |
|
|
|
.DB 0 ; HOST HEAD |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF ($ - FD_CFGTBL) != (FD_DEVCNT * FD_CFGSIZ) |
|
|
|
@ -615,7 +615,7 @@ FD_GEOM: |
|
|
|
LD A,(HL) ; GET TRACKS |
|
|
|
INC HL ; POINT TO HEADS |
|
|
|
LD D,(HL) ; GET HEADS |
|
|
|
;SET 7,D ; SET LBA CAPABILITY BIT (FUTURE) |
|
|
|
SET 7,D ; SET LBA CAPABILITY BIT |
|
|
|
INC HL ; POINT TO SECTORS |
|
|
|
LD E,(HL) ; GET SECTORS |
|
|
|
LD L,A ; L := TRACKS |
|
|
|
@ -811,6 +811,36 @@ FD_DRIVERESET: |
|
|
|
; |
|
|
|
; |
|
|
|
FD_SEEK: |
|
|
|
; DE:HL CONTAINS EITHER LBA OR CHS |
|
|
|
BIT 7,D ; TEST LBA BIT |
|
|
|
JR Z,FD_SEEK9 ; IF NOT LBA, JUST SAVE INCOMING VALUE |
|
|
|
; NEED TO CONVERT LBA IN DE:HL TO CHS |
|
|
|
; NOTE: FLOPPY LBA WILL NEVER EXCEED 16 BITS, SO WE IGNORE DE ENTIRELY |
|
|
|
PUSH HL ; SAVE HL |
|
|
|
CALL FD_GEOM ; E := SPT, D := HDS |
|
|
|
POP HL ; RESTORE HL |
|
|
|
RET NZ ; BAIL OUT ON ERROR |
|
|
|
RES 7,D ; MAKE SURE LBA BIT IS CLEARED |
|
|
|
LD (FD_CURGEOM),DE ; SAVE AS FD_CURSPT & FD_CURHDS |
|
|
|
LD A,(FD_CURSPT) ; A := SECTORS PER TRACK |
|
|
|
LD D,0 ; DE := SPT |
|
|
|
LD E,A |
|
|
|
CALL DIV16 ; DIVIDE, REMAINDER (SECTOR #) IN HL |
|
|
|
PUSH HL ; SAVE SECTOR # |
|
|
|
PUSH BC ; CYLINDERS AND HEADS BACK TO HL |
|
|
|
POP HL |
|
|
|
LD A,(FD_CURHDS) ; A := HEADS PER CYLINDER |
|
|
|
LD D,0 ; DE : = HEADS PER CYLINDER |
|
|
|
LD E,A |
|
|
|
CALL DIV16 ; DIVIDE, BC := TRACK, REMAINDER (HEAD #) IN HL |
|
|
|
PUSH HL ; SAVE HEAD # |
|
|
|
PUSH BC ; COPY TRACK # TO HL |
|
|
|
POP HL |
|
|
|
POP BC ; RECOVER HEAD # |
|
|
|
LD D,C ; HEAD # TO D |
|
|
|
POP BC ; RECOVER SECTOR # |
|
|
|
LD E,C ; SECTOR # TO E |
|
|
|
FD_SEEK9: ; NOT LBA, JUST SAVE THE CHS VALUE IN CFG ENTRY |
|
|
|
PUSH HL ; SAVE INCOMING HL TO (SP) |
|
|
|
LD A,FD_HST ; A := HST OFFSET IN CFG ENTRY |
|
|
|
CALL LDHLIYA ; HL := HST VALUE ADR |
|
|
|
|