mirror of
https://github.com/Tolik-Trek/Sprinter-BIOS.git
synced 2026-06-15 01:11:47 +03:00
Подумать чё делать с FDD_5x_GET_PAR, FDD_5x_LONG_READ.RW_Shared
Изменения в SETUP: 3.5 и 5.25
This commit is contained in:
parent
fd285cae0f
commit
faabf5c8b7
@ -29,12 +29,13 @@
|
||||
; A - D0 - "1" - Removable media
|
||||
;[]===========================================================[]
|
||||
;!FIXIT ¢á¥£¤ ¨¤¥â à ¡®â á ¤ 묨 ¤«ï ¤¨áª €
|
||||
;!FIXIT ç¨â âì ¤ ë¥ á ã«¥¢®© ¤®à®¦ª¨? <20>ਤ㬠âì çâ® ¤¥« âì á £¥®¬¥âਥ© ä«®¯ ३
|
||||
FDD_5x_GET_PAR: IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD HL,(SYS_PAGE.FDD_TABLE.SECTORS)
|
||||
LD HL,(SYS_PAGE.FDD_TABLE.SECTORS) ; L - Sectors, H - Heads
|
||||
LD DE,(SYS_PAGE.FDD_TABLE.CYLINDL)
|
||||
LD IX,(SYS_PAGE.FDD_TABLE.BytesPerSector)
|
||||
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||
@ -98,7 +99,7 @@ FDD_5x_DETECT: CALL SAVE_INTERRUPTS.switch_off
|
||||
;[]===========================================================[]
|
||||
FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
|
||||
CALL SET_DOS_ON
|
||||
CALL S_FDD
|
||||
CALL SET_FDD
|
||||
CALL DISK_ID
|
||||
JR C,.int
|
||||
; [ ] à §¬¥à ᥪâ®à
|
||||
@ -181,7 +182,7 @@ FDD_5x_LONG_READ:
|
||||
EX AF,AF'
|
||||
PUSH BC
|
||||
CALL SET_DOS_ON
|
||||
CALL S_FDD
|
||||
CALL SET_FDD
|
||||
CALL SET_SPEED
|
||||
CALL NTRACK
|
||||
POP BC
|
||||
@ -190,12 +191,13 @@ FDD_5x_LONG_READ:
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector)
|
||||
LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector) ; ãáâ ¢«¨¢ âì ®â¤¥«ì® ¯¥à¥¬¥ãî current BytesPerSector?
|
||||
LD XH,C ; Memory Page Number
|
||||
LD A,(SYS_PAGE.FDD_TABLE.SECTORS)
|
||||
LD C,A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
.DSK_LP: LD A,D
|
||||
EXX
|
||||
PUSH BC
|
||||
@ -215,17 +217,18 @@ FDD_5x_LONG_READ:
|
||||
POP HL
|
||||
POP BC
|
||||
ADD HL,DE
|
||||
;
|
||||
CALL C,CHANGE_MEM_BLK
|
||||
;
|
||||
.THISRD: POP DE
|
||||
;.THISRD
|
||||
POP DE
|
||||
LD A,C
|
||||
INC E
|
||||
CP E
|
||||
JR NZ,.NINC_T
|
||||
;
|
||||
LD E,0
|
||||
INC D
|
||||
.NINC_T: DJNZ .DSK_LP
|
||||
;
|
||||
.RETDOS: CALL SET_DOS_OFF
|
||||
LD A,XH ; Memory Page Number
|
||||
EX AF,AF'
|
||||
@ -240,6 +243,7 @@ FDD_5x_LONG_READ:
|
||||
DEC B
|
||||
LD B,0
|
||||
JR NZ,.ADD8BIT
|
||||
;
|
||||
INC B
|
||||
.ADD8BIT: ADD IX,BC
|
||||
;!TEST
|
||||
@ -471,12 +475,33 @@ SET_DOS_OFF: EX AF,AF'
|
||||
EX AF,AF'
|
||||
RET
|
||||
|
||||
;
|
||||
S_FDD: PUSH BC
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; <20>… ƒ<>Ž•€’œ. ‚¥àá¨ï ¤«ï FDD AUTO ®¤¨¬ ¡ãä¥à®¬ FDD_TABLE
|
||||
; SET_FDD: PUSH BC
|
||||
; AND 1
|
||||
; LD B,A
|
||||
; OR #3C
|
||||
; OUT (FDC_93.DrvCTRL),A
|
||||
; IN A,(SLOT3)
|
||||
; EX AF,AF'
|
||||
; LD A,SYS_PAGE
|
||||
; OUT (SLOT3),A
|
||||
; LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||
; AND #FE
|
||||
; OR B
|
||||
; LD (SYS_PAGE.FDD_TABLE.DISK),A
|
||||
; EX AF,AF'
|
||||
; OUT (SLOT3),A
|
||||
; POP BC
|
||||
; RET
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
SET_FDD: PUSH BC
|
||||
AND 1
|
||||
LD B,A
|
||||
OR #3C
|
||||
OUT (FDC_93.DrvCTRL),A
|
||||
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
@ -489,7 +514,8 @@ S_FDD: PUSH BC
|
||||
OUT (SLOT3),A
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; CHANGE_SPEED: IN A,(SLOT3)
|
||||
@ -532,9 +558,7 @@ CHANGE_SPEED: IN A,(SLOT3)
|
||||
XOR #80
|
||||
LD (SYS_PAGE.FDD_TABLE.DISK),A
|
||||
JR SET_SPEED.set
|
||||
|
||||
;
|
||||
;
|
||||
SET_SPEED: IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
@ -561,9 +585,11 @@ WAIT_FDD_FOR_SEARCH_TRACK:
|
||||
CALL .LOOP
|
||||
POP BC
|
||||
RET NC
|
||||
;
|
||||
CALL CHANGE_SPEED
|
||||
DEC C
|
||||
JR NZ,WAIT_FDD_FOR_SEARCH_TRACK
|
||||
;
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
@ -580,6 +606,7 @@ WAIT_FDD_FOR_SEARCH_TRACK:
|
||||
DJNZ .LOOP
|
||||
SCF
|
||||
RET
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -592,11 +619,11 @@ DISK_ID: EXX
|
||||
LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ¤ë ‚ƒ ;SEARCH ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||
CALL EXECOM
|
||||
; ªã᮪ ¤«ï ¡ëáâàëå ä«®¯¯ ३
|
||||
LD BC,#0104 ; 1 - áçñâ稪
|
||||
LD BC,#0104 ; áçñâ稪¨
|
||||
CALL WAIT_FDD_FOR_SEARCH_TRACK
|
||||
JR NC,.Read_Index
|
||||
; ªã᮪ ¤«ï â®à¬®§ëå ä«®¯¯ ३
|
||||
LD BC,#0504 ; 1 - áçñâ稪
|
||||
LD BC,#0804 ; áçñâ稪¨
|
||||
CALL WAIT_FDD_FOR_SEARCH_TRACK
|
||||
JR NC,.Read_Index
|
||||
EXX
|
||||
|
||||
@ -676,6 +676,7 @@ WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error) + I
|
||||
AND D
|
||||
CP E
|
||||
JR Z,.ok
|
||||
;
|
||||
DEC HL
|
||||
LD A,L
|
||||
OR H
|
||||
@ -684,8 +685,8 @@ WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error) + I
|
||||
POP HL
|
||||
DEC L
|
||||
JR NZ,.loop
|
||||
;
|
||||
.error: LD A,BIOS.Error.NotReady
|
||||
; error
|
||||
LD A,BIOS.Error.NotReady
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
|
||||
@ -89,89 +89,63 @@ RAM_DRV_READ_WRITE:
|
||||
LD L,B
|
||||
IN A,(SLOT3)
|
||||
LD H,A
|
||||
|
||||
; LD A,H
|
||||
; OR L
|
||||
; JR NZ,.error_stack2 ; if sector_high > 0
|
||||
; POP AF
|
||||
|
||||
POP AF
|
||||
EX (SP),HL
|
||||
PUSH AF
|
||||
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,.error_stack2 ; if sector_high > 0
|
||||
POP AF
|
||||
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,.error_stack2 ; if sector_high > 0
|
||||
;
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,C ; ¢ ॣ C ª®¬ ¤ çâ¥¨ï ¨«¨ § ¯¨á¨
|
||||
EX AF,AF'
|
||||
; A' = command
|
||||
|
||||
; A' = command
|
||||
PUSH BC ; Sector_counter
|
||||
PUSH DE ; Address
|
||||
PUSH IX ; Sector_low
|
||||
|
||||
AND #0F ;®¬¥à à ¬¤¨áª
|
||||
;LD C,BIOS.GET_RAMD_ST
|
||||
;RST_to_BIOS
|
||||
CALL GET_RAMD_ST
|
||||
; A = Memory Block ID
|
||||
|
||||
; A = Memory Block ID
|
||||
POP DE ; Sector_low
|
||||
POP HL ; Address
|
||||
POP BC ; Sector_counter
|
||||
JR C,.error_stack1
|
||||
|
||||
;
|
||||
SLA E
|
||||
RL D ; Sector_low * 2
|
||||
JR C,.error_stack1
|
||||
|
||||
|
||||
;
|
||||
PUSH BC
|
||||
SLA B ; Sector_counter * 2 - ⨯ ã ¤¨áª¥âë ᥪâ®à 512 ¡ ©â®¢
|
||||
JR C,.error_stack2
|
||||
|
||||
;
|
||||
PUSH DE
|
||||
//PUSH BC
|
||||
;LD C,BIOS.BLK_RD_WR
|
||||
;RST_to_BIOS
|
||||
CALL BLK_RD_WR
|
||||
JR C,.error_stack3
|
||||
; hl = address + Sector_low * 256 * Sector_counter
|
||||
|
||||
//POP BC
|
||||
//SRL B
|
||||
|
||||
;
|
||||
; hl = address + Sector_low * 256 * Sector_counter
|
||||
POP DE
|
||||
; de = Sector_low * 2
|
||||
|
||||
; de = Sector_low * 2
|
||||
SRL D
|
||||
RR E
|
||||
; de = Sector_low
|
||||
|
||||
; de = Sector_low
|
||||
POP BC
|
||||
; b = Sector_counter
|
||||
|
||||
; b = Sector_counter
|
||||
LD A,E
|
||||
ADD A,B
|
||||
LD E,A
|
||||
LD A,D
|
||||
ADC A,0
|
||||
LD D,A
|
||||
; de = Sector_counter + Sector_low
|
||||
|
||||
; de = Sector_counter + Sector_low
|
||||
PUSH DE
|
||||
POP IX
|
||||
; ix = Sector_counter + Sector_low
|
||||
|
||||
; ix = Sector_counter + Sector_low
|
||||
EX DE,HL
|
||||
; de = address + Sector_low * 256 * Sector_counter
|
||||
|
||||
; de = address + Sector_low * 256 * Sector_counter
|
||||
LD HL,0
|
||||
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
@ -179,6 +153,7 @@ RAM_DRV_READ_WRITE:
|
||||
; HL:IX - Sector + Sector counter
|
||||
; DE - Address + (Sector counter * Size sector)
|
||||
RET
|
||||
;
|
||||
.error_stack3:
|
||||
POP BC
|
||||
.error_stack2:
|
||||
|
||||
@ -1201,56 +1201,109 @@ SYSID: DZ "Starting..."
|
||||
; .Size EQU $ - FD144A
|
||||
; FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
|
||||
; .Size EQU $ - FD720A
|
||||
FDD_INIT_TABLE: FDD_1440_TABLE
|
||||
|
||||
|
||||
FDD_INIT_TABLE_35: FDD_TABLE_s {
|
||||
#80, ;.DISK
|
||||
#12, ;.SECTORS
|
||||
#02, ;.HEADS
|
||||
#50, ;.CYLINDL
|
||||
#00, ;.CYLINDH
|
||||
#0200, ;.BytesPerSector
|
||||
#03 ;.ID
|
||||
}
|
||||
;
|
||||
FDD_INIT_TABLE_525: FDD_TABLE_s {
|
||||
#00 ;.DISK
|
||||
#09 ;.SECTORS
|
||||
#02 ;.HEADS
|
||||
#50 ;.CYLINDL
|
||||
#00 ;.CYLINDH
|
||||
#0200 ;.BytesPerSector
|
||||
#03 ;.ID
|
||||
}
|
||||
|
||||
FDD_INSTAL: IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD HL,SYS_PAGE.FDD_TABLE
|
||||
LD BC,SYS_PAGE.FDD_TABLE.Size*256 + #FF ; table_size*256 + fill_byte
|
||||
LD BC,2*(SYS_PAGE.FDD_TABLE.Size*256) + #FF ; table_size*256 + fill_byte
|
||||
.FILLFDD: LD (HL),C
|
||||
INC HL
|
||||
DJNZ .FILLFDD
|
||||
;
|
||||
;EX AF,AF'
|
||||
;OUT (SLOT3),A
|
||||
;LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311
|
||||
;CALL GET_CMOS_VALUE
|
||||
;LD HL,FD720A
|
||||
;OR A
|
||||
;JR Z,.SETFD0
|
||||
LD HL,FDD_INIT_TABLE
|
||||
;DEC A
|
||||
;JR NZ,.NOFDD0
|
||||
;.SETFD0: ;IN A,(SLOT3)
|
||||
;
|
||||
LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311
|
||||
CALL .Choose_FDD_Type
|
||||
JR NZ,.next_FDD
|
||||
;
|
||||
LD DE,SYS_PAGE.FDD_TABLE
|
||||
LD BC,SYS_PAGE.FDD_TABLE.Size
|
||||
LDIR
|
||||
.next_FDD: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11
|
||||
CALL .Choose_FDD_Type
|
||||
JR NZ,.NOFDD1
|
||||
;
|
||||
LD DE,SYS_PAGE.FDD_1_TABLE
|
||||
LD BC,SYS_PAGE.FDD_1_TABLE.Size
|
||||
LDIR
|
||||
.NOFDD1: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
;
|
||||
.Choose_FDD_Type:
|
||||
CALL GET_CMOS_VALUE
|
||||
LD HL,FDD_INIT_TABLE_35
|
||||
OR A
|
||||
RET Z
|
||||
;
|
||||
LD HL,FDD_INIT_TABLE_525
|
||||
DEC A
|
||||
RET
|
||||
/*
|
||||
LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311
|
||||
CALL GET_CMOS_VALUE
|
||||
LD HL,FDD_INIT_TABLE_525
|
||||
OR A
|
||||
JR Z,.SETFD0
|
||||
;
|
||||
LD HL,FDD_INIT_TABLE_35
|
||||
DEC A
|
||||
JR NZ,.NOFDD0
|
||||
;
|
||||
.SETFD0: ;
|
||||
;IN A,(SLOT3)
|
||||
;EX AF,AF'
|
||||
;LD A,SYS_PAGE
|
||||
;OUT (SLOT3),A
|
||||
LD DE,SYS_PAGE.FDD_TABLE
|
||||
; B=0
|
||||
LD C,SYS_PAGE.FDD_TABLE.Size
|
||||
LD BC,SYS_PAGE.FDD_TABLE.Size
|
||||
LDIR
|
||||
;EX AF,AF'
|
||||
;OUT (SLOT3),A
|
||||
;.NOFDD0: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11
|
||||
;CALL GET_CMOS_VALUE
|
||||
;LD HL,FD720A
|
||||
;OR A
|
||||
;JR Z,.SETFD1
|
||||
;LD HL,FD144A
|
||||
;DEC A
|
||||
;JR NZ,.NOFDD1
|
||||
;.SETFD1: IN A,(SLOT3)
|
||||
.NOFDD0: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11
|
||||
CALL GET_CMOS_VALUE
|
||||
LD HL,FDD_INIT_TABLE_525
|
||||
OR A
|
||||
JR Z,.SETFD1
|
||||
;
|
||||
LD HL,FDD_INIT_TABLE_35
|
||||
DEC A
|
||||
JR NZ,.NOFDD1
|
||||
;
|
||||
.SETFD1: ;
|
||||
;IN A,(SLOT3)
|
||||
;EX AF,AF'
|
||||
;LD A,SYS_PAGE
|
||||
;OUT (SLOT3),A
|
||||
;LD DE,SYS_PAGE.FDD_1_TABLE
|
||||
;LD BC,FD144A.Size
|
||||
;LDIR
|
||||
EX AF,AF'
|
||||
LD DE,SYS_PAGE.FDD_1_TABLE
|
||||
LD BC,FD144A.Size
|
||||
LDIR
|
||||
.NOFDD1: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
.NOFDD1: RET
|
||||
RET
|
||||
*/
|
||||
|
||||
|
||||
PIDNUM: LD HL,memBUFFER.ID
|
||||
|
||||
@ -279,22 +279,28 @@ SettingsItemsTabs:
|
||||
IF NEW_FEATURE : DB paramLine : ENDIF
|
||||
DB columnNum,lineNum
|
||||
DB paramName
|
||||
DW CMOS_CELL.DrivesSetup_1.Mask.FirstFDD : DB %0000'0000
|
||||
DB msgStrings.valAuto
|
||||
DW CMOS_CELL.DrivesSetup_1.Mask.FirstFDD : DB %0000'0010
|
||||
DB msgStrings.val35
|
||||
DB msgStrings.val525
|
||||
DB msgStrings.valDash6
|
||||
; DB msgStrings.valAuto
|
||||
; DB msgStrings.val720
|
||||
; DB msgStrings.val1440
|
||||
; DB msgStrings.valDash6
|
||||
; DB msgStrings.val1200
|
||||
|
||||
_mSETitemParams FddSecond
|
||||
DW OnChangeAction.nothing
|
||||
IF NEW_FEATURE : DB paramLine : ENDIF
|
||||
DB columnNum,lineNum
|
||||
DB paramName
|
||||
DW CMOS_CELL.DrivesSetup_1.Mask.SecondFDD : DB %0000'0000
|
||||
DB msgStrings.valAuto
|
||||
DW CMOS_CELL.DrivesSetup_1.Mask.SecondFDD : DB %0000'1000
|
||||
DB msgStrings.val35
|
||||
DB msgStrings.val525
|
||||
DB msgStrings.valDash6
|
||||
; DB msgStrings.valAuto
|
||||
; DB msgStrings.val720
|
||||
; DB msgStrings.val1440
|
||||
; DB msgStrings.valDash6
|
||||
; DB msgStrings.val1200
|
||||
|
||||
_mSETitemParams PriIdeMA
|
||||
DW OnChangeAction.nothing
|
||||
@ -653,6 +659,8 @@ msgStrings:
|
||||
_mSetStr valAuto, tmp_Counter : DZ 'Auto '
|
||||
; _mSetStr val720, tmp_Counter : DZ '720K '
|
||||
; _mSetStr val1440, tmp_Counter : DZ '1.44M '
|
||||
_mSetStr val35, tmp_Counter : DZ '3.5" '
|
||||
_mSetStr val525, tmp_Counter : DZ '5.25" '
|
||||
_mSetStr valDash6, tmp_Counter : DZ '------'
|
||||
_mSetStr parFddSecond, tmp_Counter : DZ 'FDD second : '
|
||||
_mSetStr parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : '
|
||||
@ -832,6 +840,8 @@ msgRusStrings:
|
||||
_mSetStrRus valAuto, tmp_Counter : DZ '€¢â® '
|
||||
; _mSetStrRus val720, tmp_Counter : DZ '720K '
|
||||
; _mSetStrRus val1440, tmp_Counter : DZ '1.44M '
|
||||
_mSetStrRus val35, tmp_Counter : DZ '3.5" '
|
||||
_mSetStrRus val525, tmp_Counter : DZ '5.25" '
|
||||
_mSetStrRus valDash6, tmp_Counter : DZ '------'
|
||||
_mSetStrRus parFddSecond, tmp_Counter : DZ 'FDD ¢â®à®© : '
|
||||
_mSetStrRus parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : '
|
||||
|
||||
Loading…
Reference in New Issue
Block a user