мелкие оптимизации

This commit is contained in:
Tolik 2025-04-25 01:58:57 +10:00
parent fdad365528
commit 69c73382a2
7 changed files with 161 additions and 296 deletions

@ -1 +1 @@
Subproject commit be6067585059da92ec2674091bedf341e9219f09 Subproject commit e0dd54cb5615a23ea55bd217578aab57481fcf77

View File

@ -1068,11 +1068,11 @@ PORTS_INIT:
OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C" OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C"
PUSH HL ; ¤«ï § ¤¥à¦ª¨ PUSH HL ; ¤«ï § ¤¥à¦ª¨
POP HL ; ¤«ï § ¤¥à¦ª¨ POP HL ; ¤«ï § ¤¥à¦ª¨
LD A,#3C ;!HARDCODE ª®¬ ­¤  ¤«ï ƒ93 LD A,#3C ;!HARDCODE
OUT (FDC_93.DrvCTRL),A OUT (FDC_93.DrvCTRL),A
PUSH HL ; ¤«ï § ¤¥à¦ª¨ PUSH HL ; ¤«ï § ¤¥à¦ª¨
POP HL ; ¤«ï § ¤¥à¦ª¨ POP HL ; ¤«ï § ¤¥à¦ª¨
XOR A XOR A ;!HARDCODE CMD Š<>1818<38>93
OUT (FDC_93.Command),A OUT (FDC_93.Command),A
; ‚몫îç¨âì ¤®áâ㯠ª ª®­â஫«¥àã ¤¨áª  ; ‚몫îç¨âì ¤®áâ㯠ª ª®­â஫«¥àã ¤¨áª 
LD A,CNF_PORT.CNF_0+ROM.BIOS LD A,CNF_PORT.CNF_0+ROM.BIOS

View File

@ -25,38 +25,20 @@
; IX - Capacity sector in bytes ; IX - Capacity sector in bytes
; B - Flags ; B - Flags
; D7 - "1" - High Density, "0" - Double Density ; D7 - "1" - High Density, "0" - Double Density
; D0 - FDD drv number
; A - D0 - "1" - Removable media
;[]===========================================================[] ;[]===========================================================[]
;!FIXIT ¢á¥£¤  ¨¤¥â à ¡®â  á ¤ ­­ë¬¨ ¤«ï ¤¨áª  € ;!FIXIT ¢á¥£¤  ¨¤¥â à ¡®â  á ¤ ­­ë¬¨ ¤«ï ¤¨áª  €
FDD_5x_GET_PAR: FDD_5x_GET_PAR:
;!TEST FDD 720/1440
IF FDD_NormalCount
LD IY,FDD_INIT_TABLE.FDD_0
DEC A
JR C,.getParams
LD IY,FDD_INIT_TABLE.FDD_1
.getParams:
ENDIF
IN A,(SLOT3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;!TEST FDD 720/1440 ;
IF FDD_NormalCount LD HL,(SYS_PAGE.FDD_TABLE.SECTORS)
LD L,(IY+1) ;SECTORS LD DE,(SYS_PAGE.FDD_TABLE.CYLINDL)
LD H,(IY+2) ;HEADS LD IX,(SYS_PAGE.FDD_TABLE.BytesPerSector)
LD E,(IY+3) ;CYLINDL LD A,(SYS_PAGE.FDD_TABLE.DISK)
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_INIT_TABLE.FDD_0.SECTORS)
LD DE,(FDD_INIT_TABLE.FDD_0.CYLINDL)
LD IX,(FDD_INIT_TABLE.FDD_0.BytesPerSector)
LD A,(FDD_INIT_TABLE.FDD_0.F144)
ENDIF
LD B,A LD B,A
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
@ -76,51 +58,22 @@ FDD_5x_GET_PAR:
;Return: None ;Return: None
;[]===========================================================[] ;[]===========================================================[]
FDD_5x_SET_PAR: ;!TEST FDD 720/1440 FDD_5x_SET_PAR: ;!TEST FDD 720/1440
IF FDD_NormalCount IN A,(SLOT3)
LD IY,FDD_INIT_TABLE.FDD_0
DEC A
JR C,.setParams
LD IY,FDD_INIT_TABLE.FDD_1
ENDIF
;
.setParams: IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
; ;
;!TEST FDD 720/1440
IF FDD_NormalCount
LD (IY+1),L ;SECTORS
LD (IY+2),H ;HEADS
LD (IY+3),E ;CYLINDL
LD (IY+4),D ;CYLINDH
LD A,XL
LD (IY+5),A ;B_P_S low
LD A,XH
LD (IY+6),A ;B_P_S High
LD (IY+0),B ;F144/720
LD A,B LD A,B
ELSE LD (SYS_PAGE.FDD_TABLE.SECTORS),HL
LD A,B LD (SYS_PAGE.FDD_TABLE.CYLINDL),DE
LD (FDD_INIT_TABLE.FDD_0.SECTORS),HL LD (SYS_PAGE.FDD_TABLE.BytesPerSector),IX
LD (FDD_INIT_TABLE.FDD_0.CYLINDL),DE LD (SYS_PAGE.FDD_TABLE.DISK),A
LD (FDD_INIT_TABLE.FDD_0.BytesPerSector),IX
LD (FDD_INIT_TABLE.FDD_0.F144),A
ENDIF
; ;
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
;
;!TEST FDD 720/1440
IF FDD_NormalCount
AND 1
JP Z,FN_TURBO.SET_FDD_720
JP FN_TURBO..SET_FDD_1440
ELSE
AND A AND A
RET RET
ENDIF
;[]===========================================================[] ;[]===========================================================[]
;Function: Detect Disk Density ;Function: Detect Disk Density
@ -156,7 +109,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
OUT (SLOT3),A OUT (SLOT3),A
LD H,B LD H,B
LD L,0 LD L,0
LD (FDD_INIT_TABLE.FDD_0.BytesPerSector),HL LD (SYS_PAGE.FDD_TABLE.BytesPerSector),HL
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
; ;
@ -164,7 +117,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
JR C,.MOTOR_OFF JR C,.MOTOR_OFF
; ;
CALL RESWG CALL RESWG
XOR A XOR A ;!HARDCODE CMD Š<>1818ƒ93
OUT (FDC_93.Track),A OUT (FDC_93.Track),A
IN A,(FDC_93.Command) IN A,(FDC_93.Command)
;LD C,A ;LD C,A
@ -174,7 +127,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
JP SAVE_INTERRUPTS.restore JP SAVE_INTERRUPTS.restore
;RET ;RET
.MOTOR_OFF: ;PUSH AF .MOTOR_OFF: ;PUSH AF
LD A,#D0 LD A,#D0 ;!HARDCODE CMD Š<>1818ƒ93
OUT (FDC_93.Command),A ;STOP OPERATION OUT (FDC_93.Command),A ;STOP OPERATION
LD A,#00 LD A,#00
OUT (FDC_93.DrvCTRL),A OUT (FDC_93.DrvCTRL),A
@ -212,7 +165,7 @@ FDD_5x_READ: EX AF,AF'
;[]===========================================================[] ;[]===========================================================[]
FDD_5x_LONG_READ: FDD_5x_LONG_READ:
EXX EXX
LD B,#80 ; COMMAND READ LD B,#80 ; COMMAND READ ;!HARDCODE CMD Š<>1818ƒ93
EXX EXX
; ;
.RW_Shared: CALL SAVE_INTERRUPTS.switch_off .RW_Shared: CALL SAVE_INTERRUPTS.switch_off
@ -238,9 +191,9 @@ FDD_5x_LONG_READ:
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD IY,(FDD_INIT_TABLE.FDD_0.BytesPerSector) LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector)
LD XH,C ; Memory Page Number LD XH,C ; Memory Page Number
LD A,(FDD_INIT_TABLE.FDD_0.SECTORS) LD A,(SYS_PAGE.FDD_TABLE.SECTORS)
LD C,A LD C,A
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
@ -360,7 +313,7 @@ FDD_5x_WRITE: EX AF,AF'
;[]===========================================================[] ;[]===========================================================[]
FDD_5x_LONG_WRITE: FDD_5x_LONG_WRITE:
EXX EXX
LD B,#A0 ;COMMAND WRITE LD B,#A0 ;COMMAND WRITE ;!HARDCODE CMD Š<>1818ƒ93
EXX EXX
JP FDD_5x_LONG_READ.RW_Shared JP FDD_5x_LONG_READ.RW_Shared
; ;
@ -400,7 +353,7 @@ FDD_RW_SECTOR: LD D,5 ;RETRY COUNT
.RW_PROC: EXX .RW_PROC: EXX
BIT 5,B BIT 5,B
EXX EXX
; [ ] 15/04/25 à §¬¥à ᥪâ®à  ¡®«ìè¥, 祬 ãáâ ­®¢«¥­® ¢ FDD_INIT_TABLE.FDD_0.BytesPerSector ¢ë§®¢¥â ®è¨¡ªã ; [ ] 15/04/25 à §¬¥à ᥪâ®à  ¡®«ìè¥, 祬 ãáâ ­®¢«¥­® ¢ SYS_PAGE.FDD_TABLE.BytesPerSector ¢ë§®¢¥â ®è¨¡ªã
LD D,YH LD D,YH
LD E,YL LD E,YL
INC DE INC DE
@ -466,7 +419,7 @@ FDD_RW_SECTOR: LD D,5 ;RETRY COUNT
LD A,BIOS.Error.Write ; Error Write LD A,BIOS.Error.Write ; Error Write
; ;
.error_exit: EX AF,AF' .error_exit: EX AF,AF'
LD A,#D0 LD A,#D0 ;!HARDCODE CMD Š<>1818ƒ93
OUT (FDC_93.Command),A ;STOP OPERATION OUT (FDC_93.Command),A ;STOP OPERATION
EX AF,AF' EX AF,AF'
BIT 0,C BIT 0,C
@ -526,44 +479,32 @@ S_FDD: PUSH BC
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(FDD_INIT_TABLE.FDD_0.DISK) LD A,(SYS_PAGE.FDD_TABLE.DISK)
AND #FE AND #FE
OR B OR B
LD (FDD_INIT_TABLE.FDD_0.DISK),A LD (SYS_PAGE.FDD_TABLE.DISK),A
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
POP BC POP BC
RET RET
; ;
;
; MOTOR_OFF:
; PUSH AF
; LD A,#D0
; OUT (FDC_93.Command),A ;STOP OPERATION
; LD A,#00
; OUT (FDC_93.DrvCTRL),A
; LD A,#3C
; OUT (FDC_93.DrvCTRL),A
; CALL SET_DOS_OFF
; POP AF
; RET
;
; ;
CHANGE_SPEED: IN A,(SLOT3) CHANGE_SPEED: IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(FDD_INIT_TABLE.FDD_0.F144) LD A,(SYS_PAGE.FDD_TABLE.DISK)
XOR #80 XOR #80
LD (FDD_INIT_TABLE.FDD_0.F144),A LD (SYS_PAGE.FDD_TABLE.DISK),A
AND #80 ;AND #80
RLA
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
JR Z,FDD.SET720 ;JR Z,FDD.SET720
;JP FDD.SET1440 ;ZF=0 JR NC,FDD.SET720
;JP FDD.SET1440 ;CF=1
FDD.SET1440: LD A,FDD_Density.SET_1440 FDD.SET1440: LD A,FDD_Density.SET_1440
OUT (FDD_Density),A OUT (FDD_Density),A
RET RET
@ -573,28 +514,30 @@ SET_SPEED: IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(FDD_INIT_TABLE.FDD_0.F144) LD A,(SYS_PAGE.FDD_TABLE.DISK)
AND #80 ;AND #80
RLA
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
JR NZ,FDD.SET1440 ;JR NZ,FDD.SET1440
;JR FDD.SET720 ;ZF=1 JR C,FDD.SET1440
;JR FDD.SET720 ;CF=0
FDD.SET720: LD A,FDD_Density.SET_720 FDD.SET720: LD A,FDD_Density.SET_720
OUT (FDD_Density),A OUT (FDD_Density),A
RET RET
; ¯à¥à뢠­¨ï ¤®«¦­ë ¡ëâì ®âª«î祭ë ; ¯à¥à뢠­¨ï ¤®«¦­ë ¡ëâì ®âª«î祭ë
; ¢ë室: A - FDD_INIT_TABLE.F144, B - sector size high byte ; ¢ë室: A - FDD_INIT_TABLE.DISK, B - sector size high byte
DISK_ID: EXX DISK_ID: EXX
CALL SET_SPEED CALL SET_SPEED
IN A,(FDC_93.Track) IN A,(FDC_93.Track)
OUT (FDC_93.Data),A OUT (FDC_93.Data),A
LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ­¤ë ‚ƒ ;SEARCH ; !HARDCODE LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ­¤ë ‚ƒ ;SEARCH ;!HARDCODE CMD Š<>1818ƒ93
CALL EXECOM CALL EXECOM
LD C,4 ; áçñâ稪 LD C,4 ; áçñâ稪
.loop_reg_C: LD A,#C0 .loop_reg_C: LD A,#C0 ;!HARDCODE CMD Š<>1818ƒ93
OUT (FDC_93.Command),A OUT (FDC_93.Command),A
LD HL,#F000 ; áçñâ稪 LD HL,#F000 ; áçñâ稪
.loop_reg_HL: IN A,(FDC_93.DrvCTRL) .loop_reg_HL: IN A,(FDC_93.DrvCTRL)
@ -635,20 +578,13 @@ DISK_ID: EXX
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;LD A,L LD A,(SYS_PAGE.FDD_TABLE.DISK)
;LD (FDD_INIT_TABLE.FDD_0.BytesPerSector + 1),A
LD A,(FDD_INIT_TABLE.FDD_0.F144)
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
AND #80 AND #80
RET RET
; ;
SEEK: LD XL,A SEEK: LD XL,A
LD C,A LD C,A
@ -656,7 +592,7 @@ SEEK: LD XL,A
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(FDD_INIT_TABLE.FDD_0.DISK) LD A,(SYS_PAGE.FDD_TABLE.DISK)
AND 1 AND 1
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
@ -669,24 +605,20 @@ SEEK: LD XL,A
OUT (FDC_93.DrvCTRL),A OUT (FDC_93.DrvCTRL),A
IN A,(FDC_93.Track) IN A,(FDC_93.Track)
CP C CP C
;PUSH BC
CALL NZ,P50ms CALL NZ,P50ms
;POP BC
LD A,C LD A,C
OUT (FDC_93.Data),A OUT (FDC_93.Data),A
IN A,(FDC_93.Track) IN A,(FDC_93.Track)
CP C CP C
EX AF,AF' ;R.TRACK==PHISICAL TRACK EX AF,AF' ;R.TRACK==PHISICAL TRACK
LD A,#18 LD A,#18 ;!HARDCODE CMD Š<>1818ƒ93
CALL EXECOM CALL EXECOM
RET C RET C
EX AF,AF' EX AF,AF'
LD A,C LD A,C
OUT (FDC_93.Track),A OUT (FDC_93.Track),A
RET Z RET Z
.STOL: ;PUSH BC .STOL: CALL P50ms
CALL P50ms
;POP BC
RET RET
; ;
;P750ms LD B,3 ;P750ms LD B,3
@ -706,7 +638,7 @@ P50ms: PUSH BC
; ;
; ;
RESWG: LD A,8 RESWG: LD A,8 ;!HARDCODE CMD Š<>1818ƒ93
; ;
EXECOM: OUT (FDC_93.Command),A EXECOM: OUT (FDC_93.Command),A
LD HL,#0000 ; áçñâ稪 LD HL,#0000 ; áçñâ稪
@ -734,7 +666,7 @@ NTRACK: PUSH HL
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(FDD_INIT_TABLE.FDD_0.SECTORS) LD A,(SYS_PAGE.FDD_TABLE.SECTORS)
LD C,A LD C,A
LD B,0 LD B,0
EX AF,AF' EX AF,AF'

View File

@ -22,49 +22,31 @@ DRV_VERSION:
LD DE,Disk_subsystem_ver_hex LD DE,Disk_subsystem_ver_hex
AND A AND A
RET RET
;
;
DRV_LIST: DRV_LIST:
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
PUSH IY PUSH IY
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன
XOR A
LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE
LD (IX+1),#00 ; DB 0 ;FDD COUNT ;LD (IX+1),A ; DB 0 ;FDD COUNT
LD (IX+2),#00 ; DB 0 ;HDD COUNT LD (IX+1),#02 ; DB 0 ;FDD COUNT
LD (IX+3),#00 ; DB 0 ;CDROM COUNT LD (IX+2),A ; DB 0 ;HDD COUNT
LD (IX+3),A ; DB 0 ;CDROM COUNT
; ; BLOCK 13,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ? ; ; BLOCK 13,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
LD (IX+4),#00 ; END FLAG LD (IX+4),A ; END FLAG
DEC A
;Calculating FDD devices ;Calculating FDD devices
LD A,#FF ; A=#FF
LD HL,FDD_INIT_TABLE.FDD_0 ; LD HL,SYS_PAGE.FDD_TABLE
CALL .CHECK_FDD ; CALL .CHECK_FDD
LD HL,FDD_INIT_TABLE.FDD_1 ; LD HL,SYS_PAGE.FDD_1_TABLE
CALL .CHECK_FDD ; CALL .CHECK_FDD
; INC (IX+1)
; LD B,8
; LD A,#FF
; .TFD0:
; CP (HL)
; INC HL
; JR NZ,.YYYFD0
; DJNZ .TFD0
; DEC (IX+1)
; .YYYFD0:
; LD HL,FDD_INIT_TABLE.FDD_1
; INC (IX+1)
; LD B,8
; LD A,#FF
; .TFD1:
; CP (HL)
; INC HL
; JR NZ,.YYYFD1
; DJNZ .TFD1
; DEC (IX+1)
; .YYYFD1:
; A=#FF ; A=#FF
;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM ;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM
LD IY,IDE.INIT_TBL_IDE0 LD IY,IDE.INIT_TBL_IDE0
@ -84,57 +66,7 @@ DRV_LIST:
.NEXT_IDE: .NEXT_IDE:
ADD IY,DE ADD IY,DE
DJNZ .CHECK_IDE DJNZ .CHECK_IDE
;
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.ABSIDE0
; CP IDE.Device.HDD
; JR NZ,.NOT_HD0
; INC (IX+2)
; .NOT_HD0:
; CP IDE.Device.ATAPI
; JR NZ,.NOT_CD0
; INC (IX+3)
; .NOT_CD0:
; .ABSIDE0:
; LD IY,IDE.INIT_TBL_IDE1
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.ABSIDE1
; CP IDE.Device.HDD
; JR NZ,.NOT_HD1
; INC (IX+2)
; .NOT_HD1:
; CP IDE.Device.ATAPI
; JR NZ,.NOT_CD1
; INC (IX+3)
; .NOT_CD1:
; .ABSIDE1:
; LD IY,IDE.INIT_TBL_IDE2
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.ABSIDE2
; CP IDE.Device.HDD
; JR NZ,.NOT_HD2
; INC (IX+2)
; .NOT_HD2:
; CP IDE.Device.ATAPI
; JR NZ,.NOT_CD2
; INC (IX+3)
; .NOT_CD2:
; .ABSIDE2:
; LD IY,IDE.INIT_TBL_IDE3
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.check_exit
; CP IDE.Device.HDD
; JR NZ,.NOT_HD3
; INC (IX+2)
; .NOT_HD3:
; CP IDE.Device.ATAPI
; JR NZ,.check_exit
; INC (IX+3)
.check_exit: .check_exit:
POP IY POP IY
POP AF POP AF
@ -143,16 +75,16 @@ DRV_LIST:
RET RET
; ;
; A=#FF ; A=#FF
.CHECK_FDD: ; .CHECK_FDD:
INC (IX+1) ; INC (IX+1)
LD B,8 ; LD B,8
.TFD0: CP (HL) ; .TFD0: CP (HL)
INC HL ; INC HL
RET NZ ; RET NZ
DJNZ .TFD0 ; DJNZ .TFD0
DEC (IX+1) ; DEC (IX+1)
RET ; RET
; ; ;
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm' INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm' INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'

View File

@ -1191,56 +1191,58 @@ MOVE1: LD HL,#8000 ; !HARDCODE
SYSID: DZ "Starting..." SYSID: DZ "Starting..."
.length EQU $-SYSID .length EQU $-SYSID
;!FIXIT ¯¥à¥¤¥« âì ¯®¤ áâàãªâãàã ¤«ï ¯¥à¥¬¥­­ëå FDD, ®â¤¥«ì­ë¥ ¯¥à¥¬¥­­ë¥ ¯®¤ A ¨ B
FD144A: DB #80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD ;FD144A: DB #80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
.Size EQU $ - FD144A ; .Size EQU $ - FD144A
FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD ; FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
.Size EQU $ - FD720A ; .Size EQU $ - FD720A
FDD_INIT_TABLE: FDD_1440_TABLE
FDD_INSTAL: IN A,(SLOT3) FDD_INSTAL: IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD HL,FDD_INIT_TABLE.FDD_0 LD HL,SYS_PAGE.FDD_TABLE
LD BC,SYS_PAGE.FDD_TBL.Size*256 + #FF ; table_size*256 + fill_byte LD BC,SYS_PAGE.FDD_TABLE.Size*256 + #FF ; table_size*256 + fill_byte
.FILLFDD: LD (HL),C .FILLFDD: LD (HL),C
INC HL INC HL
DJNZ .FILLFDD DJNZ .FILLFDD
; ;
EX AF,AF' ;EX AF,AF'
OUT (SLOT3),A ;OUT (SLOT3),A
LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311 ;LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311
CALL GET_CMOS_VALUE ;CALL GET_CMOS_VALUE
LD HL,FD720A ;LD HL,FD720A
OR A ;OR A
JR Z,.SETFD0 ;JR Z,.SETFD0
LD HL,FD144A LD HL,FDD_INIT_TABLE
DEC A ;DEC A
JR NZ,.NOFDD0 ;JR NZ,.NOFDD0
.SETFD0: IN A,(SLOT3) ;.SETFD0: ;IN A,(SLOT3)
EX AF,AF' ;EX AF,AF'
LD A,SYS_PAGE ;LD A,SYS_PAGE
OUT (SLOT3),A ;OUT (SLOT3),A
LD DE,FDD_INIT_TABLE.FDD_0 LD DE,SYS_PAGE.FDD_TABLE
LD BC,FD144A.Size ; !HARDCODE ; B=0
LDIR LD C,SYS_PAGE.FDD_TABLE.Size
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)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD DE,FDD_INIT_TABLE.FDD_1
LD BC,FD144A.Size ; !HARDCODE
LDIR 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)
;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' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
.NOFDD1: RET .NOFDD1: RET

View File

@ -1,6 +1,6 @@
;=======================[All shared EQUs]=======================; ;=======================[All shared EQUs]=======================;
BETA_BUILD EQU 40 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥ BETA_BUILD EQU 40 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
BETA_RC EQU 0 ; BETA_RC EQU 2 ;
;======================[All shared defines]=====================; ;======================[All shared defines]=====================;
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®? DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_Loader_Flag #0107 ; DEFINE SP2000_Loader_Flag #0107 ;
@ -21,7 +21,6 @@ BETA_RC EQU 0 ;
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ì᪮£® INT DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ì᪮£® INT
DEFINE NEW_FEATURE 0 ; !TODO ¯ã­ªâë ¢ á¥â ¯ DEFINE NEW_FEATURE 0 ; !TODO ¯ã­ªâë ¢ á¥â ¯
;DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª  ¤«ï ä㭪権 5x ;DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª  ¤«ï ä㭪権 5x
DEFINE FDD_NormalCount 0 ; !TODO
DEFINE UnusedSettingsFeatures 0 ; DEFINE UnusedSettingsFeatures 0 ;
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ; ;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
DEFINE BIG_ENDIAN_STR_PRINT 1 ; DEFINE BIG_ENDIAN_STR_PRINT 1 ;

Binary file not shown.