This commit is contained in:
Tolik 2024-07-03 02:03:49 +10:00
parent 9c14f06b9c
commit 95e6385690
9 changed files with 147 additions and 162 deletions

View File

@ -216,7 +216,7 @@ ID_Version: DW BIOS_ver_hex
ID_SPRINTER: DB 'Firmware v'
.BIOS_ver: DB BIOS_ver_string,' '
IF BETA_BUILD
DB 'BETA 2'
DB BETA_str_ver
ELSE
DB '[',BUILD_DATE,']'
ENDIF

View File

@ -26,40 +26,39 @@
FDD_5x_GETMED:
;!TEST FDD 720/1440
IF FDD_NormalCount
LD IY,FDD_INI_TABLE.FDD_0
DEC A
JR C,.getParams
LD IY,FDD_INI_TABLE.FDD_1
LD IY,FDD_INI_TABLE.FDD_0
DEC A
JR C,.getParams
LD IY,FDD_INI_TABLE.FDD_1
.getParams:
ENDIF
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
;!TEST FDD 720/1440
IF FDD_NormalCount
LD L,(IY+1) ;SECTORS
LD H,(IY+2) ;HEADS
LD E,(IY+3) ;CYLINDL
LD D,(IY+4) ;CYLINDH
LD A,(IY+5) ;B_P_S low
LD XL,A
LD A,(IY+6) ;B_P_S High
LD XH,A
LD A,(IY+0) ;F144/720
LD L,(IY+1) ;SECTORS
LD H,(IY+2) ;HEADS
LD E,(IY+3) ;CYLINDL
LD D,(IY+4) ;CYLINDH
LD A,(IY+5) ;B_P_S low
LD XL,A
LD A,(IY+6) ;B_P_S High
LD XH,A
LD A,(IY+0) ;F144/720
ELSE
LD HL,(FDD_INI_TABLE.FDD_0.SECTORS)
LD DE,(FDD_INI_TABLE.FDD_0.CYLINDL)
LD IX,(FDD_INI_TABLE.FDD_0.BytesPerSector)
LD A,(FDD_INI_TABLE.FDD_0.F144)
LD HL,(FDD_INI_TABLE.FDD_0.SECTORS)
LD DE,(FDD_INI_TABLE.FDD_0.CYLINDL)
LD IX,(FDD_INI_TABLE.FDD_0.BytesPerSector)
LD A,(FDD_INI_TABLE.FDD_0.F144)
ENDIF
LD B,A
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
AND A
RET
LD B,A
EX AF,AF'
OUT (SLOT3),A
;EX AF,AF'
AND A
RET
;[]===========================================================[]
;Function: Set Current Media Parameters
@ -149,9 +148,9 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
XOR A
OUT (FDC_93.Track),A
IN A,(FDC_93.Command)
LD C,A
;LD C,A
CALL SET_DOS_OFF
LD A,C
;LD A,C
AND A
JP SAVE_INTERRUPTS.restore
;RET
@ -164,7 +163,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
OUT (FDC_93.DrvCTRL),A
CALL SET_DOS_OFF
; CF=1
LD A,4 ;NOT READY /NO DISK/
LD A,BIOS.Error.NotReady
;POP AF
JP SAVE_INTERRUPTS.restore
@ -208,7 +207,7 @@ FDD_5x_LONG_READ:
PUSH BC
CALL SET_DOS_ON
CALL S_FDD
CALL SPEED
CALL SET_SPEED
CALL NTRACK
POP BC
EX DE,HL
@ -233,7 +232,7 @@ FDD_5x_LONG_READ:
PUSH BC
PUSH HL
CALL READ_SECTOR
JP C,ERRDOS
JR C,ERRDOS
LD D,YH
LD E,YL
POP HL
@ -256,7 +255,7 @@ FDD_5x_LONG_READ:
LD A,C
INC E
CP E
JP NZ,.NINC_T
JR NZ,.NINC_T
LD E,0
INC D
.NINC_T: DJNZ .DSK_LP
@ -353,7 +352,7 @@ FDD_5x_LONG_WRITE:
PUSH BC
CALL SET_DOS_ON
CALL S_FDD
CALL SPEED
CALL SET_SPEED
CALL NTRACK
POP BC
EX DE,HL
@ -378,7 +377,7 @@ FDD_5x_LONG_WRITE:
PUSH BC
PUSH HL
CALL WR_SEC
JP C,ERRDOS
JR C,ERRDOS
LD D,YH
LD E,YL
POP HL
@ -401,7 +400,7 @@ FDD_5x_LONG_WRITE:
LD A,C
INC E
CP E
JP NZ,.NINC_T2
JR NZ,.NINC_T2
LD E,0
INC D
.NINC_T2: DJNZ .DSK_LP2
@ -441,9 +440,10 @@ READ_SECTOR: LD D,5 ;RETRY COUNT
EX AF,AF'
LD A,XH
OUT (SLOT3),A
LD B,4
;
LD B,4 ; áçñâ稪
LD C,FDC_93.Data
LD A,#80 ;COMMAND READ
LD A,#80 ;!HARDCODE COMMAND READ
OUT (FDC_93.Command),A
.FDR001: IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ
AND #C0
@ -472,7 +472,7 @@ READ_SECTOR: LD D,5 ;RETRY COUNT
;R01 ; JP C,ERRRD ;READ ERROR
; !TEST 29/06/2024
;JP C,.ERR_XRD
JP NC,.NO_ERR_XRD
JR NC,.NO_ERR_XRD
DEC D
JR Z,.RSTOP
JR .RRETRY
@ -482,7 +482,7 @@ READ_SECTOR: LD D,5 ;RETRY COUNT
RET Z
BIT 2,C
JR NZ,.ERDATA
LD A,5 ;SEEK ERROR
LD A,BIOS.Error.Seek
DEC D
JR Z,.RSTOP
PUSH DE
@ -494,7 +494,7 @@ READ_SECTOR: LD D,5 ;RETRY COUNT
;
.ERDATA: DEC D ; POTERIA DANNYH
JR NZ,.RRETRY
.ERRRD: LD A,9 ;READ ERROR
.ERRRD: LD A,BIOS.Error.Read
.RSTOP: EX AF,AF'
LD A,#D0
OUT (FDC_93.Command),A ;STOP OPERATION
@ -502,7 +502,7 @@ READ_SECTOR: LD D,5 ;RETRY COUNT
BIT 0,C
SCF
RET Z
LD A,6 ;SECTOR NOT FOUND /NO DISK/
LD A,BIOS.Error.SectorNotFound
RET
; ; ;
@ -554,18 +554,17 @@ WR_SEC: LD D,5 ;RETRY COUNT
IN A,(FDC_93.Command)
LD C,A
;R01
JP C,.ERR_XWR
; JP C,ERRWR ;WRITE ERROR
JR C,.ERR_XWR
AND #7F
RET Z
BIT 6,C
LD A,8 ;WRITE PROTECT
LD A,BIOS.Error.WriteProtect
JR NZ,.WSTOP
BIT 2,C
JR NZ,.EWDATA
LD A,5 ;SEEK ERROR
LD A,BIOS.Error.Seek
DEC D
JP Z,.WSTOP
JR Z,.WSTOP
.ERR_XWR:
PUSH DE
CALL RESWG ; RESET_WG
@ -576,7 +575,7 @@ WR_SEC: LD D,5 ;RETRY COUNT
.EWDATA:
DEC D ; POTERIA DANNYH
JR NZ,.WRETRY
.ERRWR: LD A,10 ;WRITE ERROR
.ERRWR: LD A,BIOS.Error.Write
.WSTOP: EX AF,AF'
LD A,#D0
OUT (FDC_93.Command),A ;STOP OPERATION
@ -584,7 +583,7 @@ WR_SEC: LD D,5 ;RETRY COUNT
BIT 0,C
SCF
RET Z
LD A,6 ;SECTOR NOT FOUND /NO DISK/
LD A,BIOS.Error.SectorNotFound
RET
@ -605,21 +604,6 @@ SET_DOS_OFF:
OUT (SYS_PORT.ROM),A ; - CLOSE
EX AF,AF'
RET
;
;
FDD.SET720:
LD A,FDD_Density.SET_720
OUT (FDD_Density),A
RET
;
;
FDD.SET1440:
LD A,FDD_Density.SET_1440
OUT (FDD_Density),A
RET
;
;
S_FDD: PUSH BC
@ -656,85 +640,81 @@ S_FDD: PUSH BC
;
;
TURNSPD:
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(FDD_INI_TABLE.FDD_0.F144)
XOR #80
LD (FDD_INI_TABLE.FDD_0.F144),A
AND #80
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
JP Z,FDD.SET720
JP FDD.SET1440 ;NZ
CHANGE_SPEED: IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(FDD_INI_TABLE.FDD_0.F144)
XOR #80
LD (FDD_INI_TABLE.FDD_0.F144),A
AND #80
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
JR Z,FDD.SET720
;JP FDD.SET1440 ;ZF=0
FDD.SET1440: LD A,FDD_Density.SET_1440
OUT (FDD_Density),A
RET
;
;
SPEED: IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(FDD_INI_TABLE.FDD_0.F144)
AND #80
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
JP Z,FDD.SET720
JP FDD.SET1440 ;NZ
;
SET_SPEED: IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(FDD_INI_TABLE.FDD_0.F144)
AND #80
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
JR NZ,FDD.SET1440
;JR FDD.SET720 ;ZF=1
FDD.SET720: LD A,FDD_Density.SET_720
OUT (FDD_Density),A
RET
; ¯à¥à뢠­¨ï ¤®«¦­ë ¡ëâì ®âª«î祭ë
DISK_ID:
;DI
EXX
CALL SPEED
IN A,(FDC_93.Track)
OUT (FDC_93.Data),A
LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ­¤ë ‚ƒ ;SEARCH ; !HARDCODE
CALL EXECOM
LD C,4
.ID_LP0:
LD A,#C0
OUT (FDC_93.Command),A
LD HL,#F000
.ID_LP1:
IN A,(FDC_93.DrvCTRL)
AND #C0
JR Z,.ID_LP4
.ID_LP2:
IN A,(FDC_93.Data)
.ID_LP3:
IN A,(FDC_93.DrvCTRL)
AND #C0
JR Z,.ID_LP3
JP P,.ID_LP2
EXX
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(FDD_INI_TABLE.FDD_0.F144)
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
AND #80
;EI
RET
.ID_LP4:
DEC HL
LD A,H
OR L
JP NZ,.ID_LP1
CALL TURNSPD
DEC C
JP NZ,.ID_LP0
EXX
SCF
;EI
RET
DISK_ID: EXX
CALL SET_SPEED
IN A,(FDC_93.Track)
OUT (FDC_93.Data),A
LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ­¤ë ‚ƒ ;SEARCH ; !HARDCODE
CALL EXECOM
LD C,4 ; áçñâ稪
.loop_reg_C: LD A,#C0
OUT (FDC_93.Command),A
LD HL,#F000 ; áçñâ稪
.loop_reg_HL: IN A,(FDC_93.DrvCTRL)
AND #C0
JR Z,.ID_LP4
;
.ID_LP2: IN A,(FDC_93.Data)
.ID_LP3: IN A,(FDC_93.DrvCTRL)
AND #C0
JR Z,.ID_LP3
JP P,.ID_LP2
EXX
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(FDD_INI_TABLE.FDD_0.F144)
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
AND #80
RET
;
.ID_LP4: DEC HL
LD A,H
OR L
JR NZ,.loop_reg_HL
CALL CHANGE_SPEED
DEC C
JR NZ,.loop_reg_C
EXX
SCF
RET
;
;
@ -793,16 +773,17 @@ P50ms: LD A,12
;
RESWG: LD A,8
EXECOM: OUT (FDC_93.Command),A
LD HL,#0000
LD HL,#0000 ; áçñâ稪
.WREST: DEC HL
LD A,H
OR L
SCF
RET Z
;
IN A,(FDC_93.DrvCTRL)
AND #80
JR Z,.WREST
AND A
;AND A
RET
;

View File

@ -1,5 +1,5 @@
;[ ] 18/12/2023. ¤®¡ ¢«¥­¨¥/¤®¯¨«¨¢ ­¨¥ API CD-ROM (ATAPI)
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;CD ROM DRIVE DRIVER
;---------------------------------------------------------------
;Rev Date Name Description
@ -156,6 +156,7 @@ TRAY_FN:
;----------------------------------------------------------------------;
; INPUT: HL - AP paket (12bytes)
; RETURN: CF - ERROR
; !TODO CD ERRORS to INCLUDES
; #01 - RECOVERED ERROR
; #02 - NOT READY
; #03 - MEDIUM ERROR
@ -284,7 +285,7 @@ AP_COM: EXX
IN A,(C)
AND #02
;CP #02
JP NZ,.FROM_CD
JR NZ,.FROM_CD
;.TO_CD:
LD BC,IDE.Read.Data
.WR_T_CD:

View File

@ -112,10 +112,10 @@ HDD_5x_GETMED:
LD E,(IY+IDE.HDD_INIT_TABLE.CylinderNumberLow)
LD D,(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh)
LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
LD IX,512
LD IX,512 ;!HARDCODE sector size
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
;EX AF,AF'
AND A
RET
;[]================================================================[#58]
@ -144,7 +144,7 @@ HDD_5x_SETMED:
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),B
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
;EX AF,AF'
AND A
RET
;[]================================================================[#59]
@ -184,7 +184,7 @@ HDD_5x_LONG_READ:
PUSH HL
CALL RDS000
EX DE,HL
JP C,HERRRD0
JR C,HERRRD0
LD A,XH
EX AF,AF'
POP HL
@ -645,7 +645,7 @@ WAITPRT:
DEC L
JR NZ,.loop
;
.error: LD A,BIOS.Error.WaitPort
.error: LD A,BIOS.Error.NotReady
SCF
RET
.ok: POP HL

View File

@ -18,7 +18,7 @@ SELECT_DRIVE:
LD IY,IDE.INIT_TBL_IDE3
;
JR Z,.channel
LD A,BIOS.Error.BadDrvNumber
LD A,BIOS.Error.BadNumber
SCF
RET
;
@ -46,7 +46,7 @@ SELECT_DRIVE:
CP C
EXX
SCF
LD A,BIOS.Error.BadDrvNumber
LD A,BIOS.Error.BadNumber
RET NZ
;
LD A,B
@ -96,5 +96,5 @@ DRV_DETECT:
OUT (C),B
RET Z
SCF
.error: LD A,BIOS.Error.BadDrvNumber
.error: LD A,BIOS.Error.BadNumber
RET

View File

@ -53,7 +53,7 @@ RMD_5x_GETMED:
JR NC,.loop
; CF==1, A==0 - ®è¨¡ª , A==#FF - ok
INC A
RET NZ ; ¥á«¨ ¢ë室¨â, â® á 䤠£ ¬¨ CF==1, ZF==1
RET NZ ; ¥á«¨ ¢ë室¨â, â® á ä« £ ¬¨ CF==1, ZF==1
LD E,B
LD B,C

View File

@ -19,7 +19,7 @@ EMM.GetMemSize:
JR NZ,.loop
INC C
JR .loop
.exit: LD HL,#100
.exit: LD HL,#100 ;!HARDCODE max mem pages
LD A,B
LD B,0
OUT (SLOT1),A
@ -31,7 +31,7 @@ EMM.GetMemSize:
; á⥪®¬, â ¬ ¬®¦¥â ¡ëâì SP ¢ ०¨¬¥ ᯥªâà㬠
;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
;----------------------------------------------------------------------;
; ˆ­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨.
EMM.InitMem:
PUSH BC
@ -116,7 +116,7 @@ RESERVED_PAGES:
;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
;----------------------------------------------------------------------;
; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes,
; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
@ -262,7 +262,7 @@ EMM_F3M_L1:
EMM_FN3M_ERR:
EX AF,AF'
OUT (SLOT3),A
LD A,2 ;!HARDCODE error code
LD A,BIOS.Error.BadNumber
SCF
RET
;----------------------------------------------------------------------;
@ -956,7 +956,7 @@ GET_RAMD_ST:
;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
;----------------------------------------------------------------------;
; RAM-Disk A, BLK - B
BLK_TO_RAMD:
CP SYS_PAGE.RAMD_KEYS.NUM
@ -1000,7 +1000,7 @@ BLK_BUSY:
;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
;----------------------------------------------------------------------;
; RAM-Disk A
RAMD_CLEAR:
CP SYS_PAGE.RAMD_KEYS.NUM
@ -1035,7 +1035,7 @@ RAMD_CLEAR:
;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
;----------------------------------------------------------------------;
; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠­  ¤¢  ¡«®ª 
; A - ¡«®ª, B - ¤«¨­  ¯¥à¢®£® ¡«®ª  ¯®á«¥ à §¤¥«¥­¨ï
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
@ -1073,7 +1073,7 @@ EMM.DivMemBlocks:
;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
;----------------------------------------------------------------------;
; ᫨âì ¤¢  ¡«®ª  ¯ ¬ï⨠¢ ®¤¨­
; € - ¡«®ª 1, B - ¡«®ª 2
; ¢ë室: € - ¡«®ª

View File

@ -1,6 +1,9 @@
;
;---------[All shared defines]----------
DEFINE BETA_BUILD 1 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
IF BETA_BUILD
DEFINE BETA_str_ver 'BETA 3'
ENDIF
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_Loader_Flag #0107
DEFINE IDE_Optimization 1 ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD

Binary file not shown.