mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
Start of new geometry/capacity functions in HBIOS
This commit is contained in:
@@ -1276,7 +1276,7 @@ DSK_IO2:
|
||||
ADD A,D ; ADD WITH D
|
||||
LD D,A ; PUT IT BACK IN D
|
||||
LD A,(HSTOFF+1) ; MSB OF SLICE OFFSET TO A
|
||||
CALL ADDHLA ; ADD OFFSET
|
||||
CALL ADCHLA ; ADD OFFSET
|
||||
POP BC ; RECOVER FUNCTION IN B
|
||||
LD A,(HSTDU) ; GET THE DEVICE/UNIT VALUE
|
||||
LD C,A ; PUT IT IN C
|
||||
@@ -1293,61 +1293,70 @@ DSK_IO2:
|
||||
LD B,E ; UNIT TO B
|
||||
LD DE,(BUFADR) ; SET BUFFER ADDRESS
|
||||
LD HL,1 ; 1 SECTOR
|
||||
|
||||
; DISPATCH TO UBIOS
|
||||
RST 08
|
||||
CALL NZ,PANIC
|
||||
XOR A ; SET FLAGS BASED ON RESULT
|
||||
OR A ; SET FLAGS BASED ON RESULT
|
||||
RET
|
||||
|
||||
#ELSE
|
||||
|
||||
DSK_IO:
|
||||
LD A,(HSTDU) ; GET ACTIVE DEVICE/UNIT BYTE
|
||||
AND $F0 ; ISOLATE DEVICE PORTION
|
||||
CP DIODEV_FD ; FLOPPY?
|
||||
JR NZ,DSK_IO1 ; NO, USE LBA HANDLING
|
||||
; SET HL=TRACK (ADD IN TRACK OFFSET)
|
||||
LD DE,(HSTOFF) ; DE = TRACK OFFSET FOR LU SUPPORT
|
||||
LD HL,(HSTTRK) ; HL = TRACK #
|
||||
ADD HL,DE ; APPLY OFFSET FOR ACTIVE SLICE
|
||||
; SET DE=SECTOR
|
||||
LD DE,(HSTSEC) ; DE = SECTOR #
|
||||
; SET C = DEVICE/UNIT
|
||||
LD A,(HSTDU) ; LOAD DEVICE/UNIT VALUE
|
||||
LD C,A ; SAVE IN C
|
||||
; DISPATCH TO DRIVER
|
||||
RST 08
|
||||
OR A ; SET FLAGS BASED ON RESULT
|
||||
RET
|
||||
; NEW LBA HANDLING
|
||||
; COERCE TRACK/SECTOR INTO HL:DE AS 0000:TTTS
|
||||
DSK_IO1:
|
||||
PUSH BC
|
||||
LD DE,(HSTTRK) ; GET TRACK INTO HL
|
||||
LD B,4 ; PREPARE TO LEFT SHIFT BY 4 BITS
|
||||
DSK_IO2:
|
||||
SLA E ; SHIFT DE LEFT BY 4 BITS
|
||||
RL D
|
||||
DJNZ DSK_IO2 ; LOOP TILL ALL BITS DONE
|
||||
LD A,(HSTSEC) ; GET THE SECTOR INTO A
|
||||
AND $0F ; GET RID OF TOP NIBBLE
|
||||
OR E ; COMBINE WITH E
|
||||
LD E,A ; BACK IN E
|
||||
LD HL,0 ; HL:DE NOW HAS SLICE RELATIVE LBA
|
||||
; APPLY OFFSET NOW
|
||||
; OFFSET IS EXPRESSED AS NUMBER OF BLOCKS * 256 TO OFFSET!
|
||||
LD A,(HSTOFF) ; LSB OF SLICE OFFSET TO A
|
||||
ADD A,D ; ADD WITH D
|
||||
LD D,A ; PUT IT BACK IN D
|
||||
LD A,(HSTOFF+1) ; MSB OF SLICE OFFSET TO A
|
||||
CALL ADDHLA ; ADD OFFSET
|
||||
POP BC ; RECOVER FUNCTION IN B
|
||||
LD A,(HSTDU) ; GET THE DEVICE/UNIT VALUE
|
||||
LD C,A ; PUT IT IN C
|
||||
; DISPATCH TO DRIVER
|
||||
RST 08
|
||||
OR A ; SET FLAGS BASED ON RESULT
|
||||
RET
|
||||
;
|
||||
; TRANSLATE CP/M TRACK/SECTOR -> HBIOS TRACK/HEAD/SECTOR
|
||||
; NEEDS TO HANDLE FLOPPY SEPARATE FROM HARD DISK
|
||||
;
|
||||
CHS:
|
||||
LD A,(HSTDU) ; GET DEVICE/UNIT
|
||||
LD C,A ; PUT IT IN C FOR HBIOS CALL
|
||||
AND $F0
|
||||
CP DIODEV_FD ; FLOPPY?
|
||||
JR NZ,CHSHD ; IF NOT, DO HD CHS XLAT
|
||||
;
|
||||
; FLOPPY SPECIFIC TRANSLATION
|
||||
; CURRENTLY LEAVES HEAD VALUE IMBEDDED IN
|
||||
; TRACK WHICH HBIOS FD DRIVER HANDLES
|
||||
;
|
||||
|
||||
LD DE,(HSTSEC) ; SECTOR DE, HEAD(D) BECOMES ZERO
|
||||
LD HL,(HSTTRK) ; TRACK -> TRACK (LOW BIT HAS HEAD)
|
||||
JR CHS2
|
||||
;
|
||||
; HARD DISK SPECIFIC TRANSLATION
|
||||
; ASSUMES 16 HEADS PER CYLINDER AND 16 SECTORS PER TRACK
|
||||
;
|
||||
CHSHD:
|
||||
LD HL,(HSTTRK) ; GET TRACK VALUE
|
||||
LD A,L ; LSB OF TRACK TO A
|
||||
AND $0F ; ISOLATE HEAD IN LOW 4 BITS
|
||||
LD D,A ; STUFF IT IN D
|
||||
LD A,(HSTSEC) ; GET SECTOR
|
||||
LD E,A ; STUFF IT IN E
|
||||
LD A,B ; SAVE B (HBIOS FUNC)
|
||||
LD B,4 ; PREPARE TO SHIFT OUT 4 BIT HEAD VALUE
|
||||
CHSHD1:
|
||||
SRL H ; SHIFT ONE BIT OUT
|
||||
RR L ; ... OF HL
|
||||
DJNZ CHSHD1 ; DO ALL 4 BITS
|
||||
LD B,A ; RESTORE B (HBIOS FUNC)
|
||||
; FALL THRU TO CHS2
|
||||
;
|
||||
; ALL TYPES OF TRANSLATION WIND UP HERE TO
|
||||
; MAKE THE ACTUAL HBIOS CALL
|
||||
;
|
||||
CHS2:
|
||||
PUSH DE ; SAVE HEAD/SECTOR + COULD MOVE
|
||||
LD DE,(HSTOFF) ; NOW GET SLICE OFFSET | TO CHSHD,
|
||||
ADD HL,DE ; ADD IT TO TRACK VALUE | NO SLICES
|
||||
POP DE ; RECOVER HEAD/SECTOR + FOR FLOPPY
|
||||
EX DE,HL ; HL <-> DE FOR HBIOS CALL
|
||||
;
|
||||
; MAKE HBIOS CALL
|
||||
; HBIOS FUNC SHOULD STILL BE IN B
|
||||
; DEVICE/UNIT SHOULD STILL BE IN C
|
||||
;
|
||||
RST 08 ; DO IT
|
||||
OR A ; SET FLAGS
|
||||
RET ; DONE
|
||||
|
||||
#ENDIF
|
||||
;
|
||||
|
||||
@@ -183,12 +183,16 @@ STR_SP .DB " SP=$"
|
||||
JPHL: JP (HL)
|
||||
;
|
||||
; ADD HL,A
|
||||
; ADC HL,A
|
||||
;
|
||||
; A REGISTER IS DESTROYED!
|
||||
;
|
||||
|
||||
ADCHLA:
|
||||
ADC A,L
|
||||
JR ADDHLA1
|
||||
ADDHLA:
|
||||
ADD A,L
|
||||
ADDHLA1:
|
||||
LD L,A
|
||||
RET NC
|
||||
INC H
|
||||
|
||||
@@ -797,6 +797,9 @@ CIO_GETINF1:
|
||||
; ROUTE CALL TO SPECIFIED DISK I/O DRIVER
|
||||
; B: FUNCTION
|
||||
; C: DEVICE/UNIT
|
||||
; H:7: INDICATES LBA MODE
|
||||
; CHS MODE: DE:HL==TT:HS
|
||||
; LBA MODE: HL:DE==NN:NN (32 BIT ADDRESS)
|
||||
;
|
||||
DIO_DISPATCH:
|
||||
; GET THE REQUESTED FUNCTION TO SEE IF SPECIAL HANDLING
|
||||
@@ -813,8 +816,56 @@ DIO_DISPATCH:
|
||||
; ULTIMATELY, HSTTRK AND HSTSEC ARE TO BE REMOVED
|
||||
CP BF_DIOST ; BEYOND READ/WRITE FUNCTIONS ?
|
||||
JR NC,DIO_DISPATCH1 ; YES, BYPASS
|
||||
LD (HSTTRK),HL ; RECORD TRACK
|
||||
LD (HSTSEC),DE ; RECORD SECTOR
|
||||
LD (HSTSEC),HL ; RECORD HEAD/SECTOR (OR LBA HIGH)
|
||||
LD (HSTTRK),DE ; RECORD TRACK (OR LBA LOW)
|
||||
;
|
||||
; PUSH BC
|
||||
; CALL NEWLINE
|
||||
; PUSH DE
|
||||
; POP BC
|
||||
; CALL PRTHEXWORD
|
||||
; CALL PC_COLON
|
||||
; PUSH HL
|
||||
; POP BC
|
||||
; CALL PRTHEXWORD
|
||||
; POP BC
|
||||
;
|
||||
; HACK TO CONVERT INCOMING CHS TO LBA IFF HD ACCESS (NOT FLOPPY)
|
||||
; FIRST CHECK FOR FLOPPY DEVICE AND BYPASS IF SO
|
||||
LD A,C ; GET REQUEST DEVICE/UNIT FROM C
|
||||
AND $F0 ; ISOLATE THE DEVICE PORTION
|
||||
CP DIODEV_FD ; FLOPPY?
|
||||
JR Z,DIO_DISPATCH1 ; YES, BYPASS
|
||||
;
|
||||
; NOW CHECK IF INCOMING IS ALREADY LBA AND BYPASS IF SO
|
||||
BIT 7,H ; TEST HIGH BIT OF HEAD/LBA
|
||||
RES 7,H ; CLEAR LBA INDICATOR BIT
|
||||
JR NZ,DIO_DISPATCH1 ; IF NZ, ALREADY LBA, BYPASS
|
||||
;
|
||||
; WE HAVE INCOMING HARDDISK CHS, CONVERT TO LBA
|
||||
; DE=TRACK (0..N), H=HEAD (0..15), L=SECTOR (0..15)
|
||||
; XLAT DE:HL (TT:HS) --> 32 BIT LBA (LBAHI:LBALO)
|
||||
LD A,H ; HEAD TO A
|
||||
RLCA ; LEFT SHIFT TO HIGH NIBBLE
|
||||
RLCA ; ... DEPENDS ON HIGH
|
||||
RLCA ; ... NIBBLE BEING 0 SINCE
|
||||
RLCA ; ... IT ROTATES INTO LOW NIBBLE
|
||||
OR L ; COMBINE WITH SECTOR (HIGH NIBBLE MUST BE ZERO)
|
||||
LD L,A ; THIS IS LBA LOW LSB
|
||||
LD H,E ; LBA LOW MSB, E -> H
|
||||
LD (HSTLBALO),HL ; SAVE FINAL LBA LOW
|
||||
LD L,D ; LBA HIGH LSB, D -> L
|
||||
LD H,0 ; LBA HIGH MSB, ZERO FILL
|
||||
LD (HSTLBAHI),HL ; SAVE FINAL LBA HIGH
|
||||
;
|
||||
; PUSH BC
|
||||
; CALL PC_SPACE
|
||||
; LD BC,(HSTLBAHI)
|
||||
; CALL PRTHEXWORD
|
||||
; CALL PC_COLON
|
||||
; LD BC,(HSTLBALO)
|
||||
; CALL PRTHEXWORD
|
||||
; POP BC
|
||||
;
|
||||
DIO_DISPATCH1:
|
||||
; START OF THE ACTUAL DRIVER DISPATCHING LOGIC
|
||||
@@ -1680,9 +1731,30 @@ PRTD3M3:
|
||||
;
|
||||
IDLECOUNT .DB 0
|
||||
;
|
||||
HSTDSK .DB 0 ; DISK IN BUFFER
|
||||
HSTTRK .DW 0 ; TRACK IN BUFFER
|
||||
HSTSEC .DW 0 ; SECTOR IN BUFFER
|
||||
;HSTTRK .DW 0 ; TRACK IN BUFFER
|
||||
;HSTSEC .DW 0 ; SECTOR IN BUFFER
|
||||
;
|
||||
; THE HOST (HST) VALUES BELOW INDICATE THE DISK AND BLOCK CURRENTLY
|
||||
; ADDRESSED FOR READ/WRITE OPERATIONS.
|
||||
; THE 32-BIT BLOCK ADDRESS CAN BE TREADED AS EITHER CHS OR LBA, HIGH ORDER BIT ON SIGNIFIES LBA
|
||||
; CHS:
|
||||
; .DW 0 ; TRACK (0-65535)
|
||||
; .DB 0 ; SECTOR (0-255)
|
||||
; .DB 0 ; HEAD (0-127)
|
||||
;
|
||||
; LBA:
|
||||
; .DW 0 ; LBA LOW WORD
|
||||
; .DW 0 ; LBA HIGH WORD
|
||||
;
|
||||
; DISK DEVICE/UNIT ID
|
||||
HSTDSK .DB 0 ; DISK DEVICE/UNIT ID
|
||||
; LBA LOW WORD -OR- TRACK
|
||||
HSTLBALO .EQU $ ; BLOCK ADDRESS LBA LOW WORD
|
||||
HSTTRK .DW 0 ; BLOCK ADDRESS TRACK
|
||||
; LBA HIGH WORD -OR- HEAD/SECTOR
|
||||
HSTLBAHI .EQU $ ; BLOCK ADDRESS LBA HIGH WORD
|
||||
HSTSEC .DB 0 ; BLOCK ADDRESS SECTOR
|
||||
HSTHEAD .DB 0 ; BLOCK ADDRESS HEAD
|
||||
;
|
||||
DIOBUF .DW HB_BUF ; PTR TO 1024 BYTE DISK XFR BUFFER
|
||||
;
|
||||
|
||||
@@ -121,16 +121,26 @@ HDSK_RW:
|
||||
AND $0F
|
||||
LD (HDSK_DEVICE),A
|
||||
|
||||
; INCOMING TRK:SEC ACTUALLY REPRESENTS 32 BIT LBA
|
||||
; MAP TRK:SEC TO HDSK DRIVER AS TTSS:SS
|
||||
; ; INCOMING TRK:SEC ACTUALLY REPRESENTS 32 BIT LBA
|
||||
; ; MAP TRK:SEC TO HDSK DRIVER AS TTSS:SS
|
||||
;
|
||||
; LD A,(HSTTRK) ; LSB OF TRACK
|
||||
; LD (HDSK_TRK + 1),A ; MAPS TO MSB OF HDSK TRK
|
||||
; LD A,(HSTSEC + 1) ; MSB OF SECTOR
|
||||
; LD (HDSK_TRK),A ; MAPS TO LSB OF HDSK TRK
|
||||
; LD A,(HSTSEC) ; LSB OF SECTOR
|
||||
; LD (HDSK_SEC),A ; MAPS TO LSB OF HDSK SEC
|
||||
|
||||
; INCOMING ADDRESS IS LBA
|
||||
; MAP HHHH:LLLL TO HDSK DRIVER AS HHLL:LL
|
||||
|
||||
LD A,(HSTTRK) ; LSB OF TRACK
|
||||
LD A,(HSTLBAHI) ; LSB OF LBA HIGH
|
||||
LD (HDSK_TRK + 1),A ; MAPS TO MSB OF HDSK TRK
|
||||
LD A,(HSTSEC + 1) ; MSB OF SECTOR
|
||||
LD A,(HSTLBALO + 1) ; MSB OF LBA LOW
|
||||
LD (HDSK_TRK),A ; MAPS TO LSB OF HDSK TRK
|
||||
LD A,(HSTSEC) ; LSB OF SECTOR
|
||||
LD A,(HSTLBALO) ; LSB OF LBA LOW
|
||||
LD (HDSK_SEC),A ; MAPS TO LSB OF HDSK SEC
|
||||
|
||||
|
||||
; SET TRANSFER ADDRESS
|
||||
LD BC,(DIOBUF)
|
||||
LD (HDSK_DMA),BC
|
||||
|
||||
@@ -355,14 +355,14 @@ IDE_SETUP1:
|
||||
LD (IDE_DEVICE),A
|
||||
OUT (IDEDEVICE),A
|
||||
|
||||
; SEND 3 BYTES OF LBA (HSTTRK:HSTSEC) T:SS -> CYL:SEC (CC:S)
|
||||
LD A,(HSTTRK) ; HSTTRK LSB
|
||||
; SEND 3 BYTES OF LBA T:SS -> CYL:SEC (CC:S)
|
||||
LD A,(HSTLBAHI) ; LBA HIGH LSB
|
||||
LD (IDE_CYLHI),A ; SAVE IT
|
||||
OUT (IDECYLHI),A ; -> CYLINDER HI
|
||||
LD A,(HSTSEC + 1) ; HSTSEC MSB
|
||||
LD A,(HSTLBALO + 1) ; LBA LOW MSB
|
||||
LD (IDE_CYLLO),A ; SAVE IT
|
||||
OUT (IDECYLLO),A ; -> CYLINDER LO
|
||||
LD A,(HSTSEC) ; HSTSEC LSB
|
||||
LD A,(HSTLBALO) ; LBA LOW LSB
|
||||
LD (IDE_SEC),A ; SAVE IT
|
||||
OUT (IDESECTN),A ; -> SECTOR NUM
|
||||
|
||||
|
||||
@@ -110,30 +110,30 @@ MD_WRITE:
|
||||
; ASSUMES A "READ" OPERATION. HL AND DE CAN BE SWAPPED
|
||||
; AFTERWARDS TO ACHIEVE A WRITE OPERATION
|
||||
;
|
||||
; ON INPUT, WE HAVE LBA ADDRESSING IN TRK:SEC
|
||||
; ON INPUT, WE HAVE LBA ADDRESSING IN HSTLBAHI:HSTLBALO
|
||||
; BUT WE NEVER HAVE MORE THAN $FFFF BLOCKS IN A RAM/ROM DISK,
|
||||
; SO THE HIGH WORD (TRK) IS IGNORED
|
||||
; SO THE HIGH WORD (HSTLBAHI) IS IGNORED
|
||||
;
|
||||
; EACH RAM/ROM BANK IS 32K BY DEFINITION AND EACH SECTOR IS 512
|
||||
; BYTES BY DEFINITION. SO, EACH RAM/ROM BANK CONTAINS 64 SECTORS
|
||||
; (32,768 / 512 = 64). THEREFORE, YOU CAN THINK OF HSTSEC AS
|
||||
; (32,768 / 512 = 64). THEREFORE, YOU CAN THINK OF LBA AS
|
||||
; 00000BBB:BBOOOOOO IS WHERE THE 'B' BITS REPRESENT THE BANK NUMBER
|
||||
; AND THE 'O' BITS REPRESENT THE SECTOR NUMBER.
|
||||
; AND THE 'O' BITS REPRESENT THE SECTOR NUMBER WITHIN THE BANK.
|
||||
;
|
||||
; TO EXTRACT THE BANK NUMBER, WE CAN LEFT SHIFT TWICE TO GIVE US:
|
||||
; 000BBBBB:OOOOOOOO:OOOOOOO. FROM THIS WE CAN EXTRACT THE MSB OF HSTTRK
|
||||
; 000BBBBB:OOOOOOOO. FROM THIS WE CAN EXTRACT THE MSB
|
||||
; TO USE AS THE BANK NUMBER. NOTE THAT THE "RAW" BANK NUMBER MUST THEN
|
||||
; BE OFFSET TO THE START OF THE ROM/RAM BANKS.
|
||||
; ALSO NOTE THAT THE HIGH BIT OF THE BANK NUMBER REPRESENTS "RAM" SO THIS
|
||||
; BIT MUST ALSO BE SET ACCORDING TO THE UNIT BEING ADDRESSED.
|
||||
;
|
||||
; TO GET THE BYTE OFFSET, WE THEN RIGHT SHIFT THE LSB BY 1 TO GIVE US:
|
||||
; 0OOOOOOO AND EXTRACT THE LSB OF THE HSTTRK TO REPRESENT THE MSB OF
|
||||
; 0OOOOOOO AND EXTRACT THE LSB TO REPRESENT THE MSB OF
|
||||
; THE BYTE OFFSET. THE LSB OF THE BYTE OFFSET IS ALWAYS 0 SINCE WE ARE
|
||||
; DEALING WITH 512 BYTE BOUNDARIES.
|
||||
;
|
||||
MD_IOSETUP:
|
||||
LD HL,(HSTSEC) ; HL := LOW WORD OF LBA
|
||||
LD HL,(HSTLBALO) ; HL := LOW WORD OF LBA
|
||||
; ALIGN BITS TO EXTRACT BANK NUMBER FROM H
|
||||
SLA L ; LEFT SHIFT ONE BIT
|
||||
RL H ; FULL WORD
|
||||
|
||||
@@ -466,16 +466,16 @@ PPIDE_SETUP1:
|
||||
LD (PPIDEP_HEAD),A ; SAVE HEAD VALUE
|
||||
CALL PPIDE_WRITE ; WRITE IT
|
||||
|
||||
; SEND 3 BYTES OF LBA (HSTTRK:HSTSEC) T:SS -> CYL:SEC (CC:S)
|
||||
LD A,(HSTTRK) ; HSTTRK LSB
|
||||
; SEND 3 BYTES OF LBA T:SS -> CYL:SEC (CC:S)
|
||||
LD A,(HSTLBAHI) ; LBA HIGH LSB
|
||||
LD (PPIDEP_CYLHI),A ; SAVE IT
|
||||
LD C,PPIDE_CYL_MSB ; IDE CYL MSB REGISTER
|
||||
CALL PPIDE_WRITE ; -> CYLINDER HI
|
||||
LD A,(HSTSEC + 1) ; HSTSEC MSB
|
||||
LD A,(HSTLBALO + 1) ; LBA LOW MSB
|
||||
LD (PPIDEP_CYLLO),A ; SAVE IT
|
||||
LD C,PPIDE_CYL_LSB ; IDE CYL LSB REGISTER
|
||||
CALL PPIDE_WRITE ; -> CYLINDER HI
|
||||
LD A,(HSTSEC) ; HSTSEC LSB
|
||||
LD A,(HSTLBALO) ; LBA LOW LSB
|
||||
LD (PPIDEP_SEC),A ; SAVE IT
|
||||
LD C,PPIDE_SECTOR ; IDE CYL LSB REGISTER
|
||||
CALL PPIDE_WRITE ; -> CYLINDER HI
|
||||
|
||||
@@ -304,7 +304,7 @@ PPPSD_CHKCARD:
|
||||
CALL NZ,PPPSD_INITCARD ; INIT CARD IF NOT READY
|
||||
RET ; RETURN WITH STATUS IN A
|
||||
;
|
||||
; SET UP LBA BLOCK INDEX BASED ON HSTTRK AND HSTSEC
|
||||
; SET UP LBA BLOCK INDEX
|
||||
; NOTE THAT BYTE ORDER IS LITTLE ENDIAN FOR PROPLELLER!
|
||||
;
|
||||
PPPSD_SETBLK:
|
||||
@@ -319,9 +319,9 @@ PPPSD_SETBLK:
|
||||
; DEC HL ; POINT TO NEXT BYTE
|
||||
; LD A,(HSTSEC) ; A = HSTSEC:LSB
|
||||
; LD (HL),A ; LBALO:LSB = A = HSTSEC:LSB
|
||||
LD HL,(HSTSEC) ; GET SECTOR
|
||||
LD HL,(HSTLBALO) ; GET LBA LOW WORD
|
||||
LD (PPP_LBALO),HL ; SAVE IT IN LBA BUFFER LO
|
||||
LD HL,(HSTTRK) ; GET TRACK
|
||||
LD HL,(HSTLBAHI) ; GET LBA HIGH WORD
|
||||
LD (PPP_LBAHI),HL ; SAVE IT IN LBA BUFFER HI
|
||||
RET
|
||||
;
|
||||
|
||||
@@ -270,13 +270,13 @@ PRPSD_SETBLK:
|
||||
; CALL PRPSD_SETBLK1
|
||||
; XOR A ; A = 0, NOT USED
|
||||
; CALL PRPSD_SETBLK1
|
||||
LD A,(HSTSEC) ; SECTOR LSB
|
||||
LD A,(HSTLBALO) ; LBA LOW LSB
|
||||
CALL PRPSD_SETBLK1
|
||||
LD A,(HSTSEC + 1) ; SECTOR MSB
|
||||
LD A,(HSTLBALO + 1) ; LBA LOW MSB
|
||||
CALL PRPSD_SETBLK1
|
||||
LD A,(HSTTRK) ; TRACK LSB
|
||||
LD A,(HSTLBAHI) ; LBA HIGH LSB
|
||||
CALL PRPSD_SETBLK1
|
||||
LD A,(HSTTRK + 1) ; TRACK MSB
|
||||
LD A,(HSTLBAHI + 1) ; LBA HIGH MSB
|
||||
CALL PRPSD_SETBLK1
|
||||
RET
|
||||
PRPSD_SETBLK1:
|
||||
|
||||
@@ -118,9 +118,9 @@ RF_SETADR:
|
||||
LD A,(RF_IO)
|
||||
OR RF_AL
|
||||
LD C,A
|
||||
LD A,(HSTSEC)
|
||||
LD A,(HSTLBALO)
|
||||
OUT (C),A
|
||||
LD A,(HSTTRK)
|
||||
LD A,(HSTLBALO+1)
|
||||
INC C
|
||||
OUT (C),A
|
||||
RET
|
||||
|
||||
@@ -1111,8 +1111,8 @@ SD_SETADDR:
|
||||
;
|
||||
; TT:SS = BC:DE -> TS:S0, THEN LEFT SHIFT ONE BIT
|
||||
SD_SETADDRSDSC:
|
||||
LD BC,(HSTTRK)
|
||||
LD DE,(HSTSEC)
|
||||
LD BC,(HSTLBAHI)
|
||||
LD DE,(HSTLBALO)
|
||||
LD B,C
|
||||
LD C,D
|
||||
LD D,E
|
||||
@@ -1126,8 +1126,8 @@ SD_SETADDRSDSC:
|
||||
; SDHC CARDS USE SIMPLE LBA, NO TRANSLATION NEEDED
|
||||
;
|
||||
SD_SETADDRSDHC:
|
||||
LD BC,(HSTTRK) ; LBA HIGH WORD
|
||||
LD DE,(HSTSEC) ; LBA LOW WORD
|
||||
LD BC,(HSTLBAHI) ; LBA HIGH WORD
|
||||
LD DE,(HSTLBALO) ; LBA LOW WORD
|
||||
RET ; DONE
|
||||
;
|
||||
; HANDLE READY TIMEOUT ERROR
|
||||
|
||||
Reference in New Issue
Block a user