mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
убраны баги в rescandrv, sys.exe, diskINF
This commit is contained in:
parent
43b8683575
commit
1c2f824e48
@ -276,7 +276,7 @@ write_boot_loader:
|
|||||||
; pop hl ; ¢®ááâ. ¡ « á á⥪
|
; pop hl ; ¢®ááâ. ¡ « á á⥪
|
||||||
; call close_device
|
; call close_device
|
||||||
cp #F8 ; ¢¨â
|
cp #F8 ; ¢¨â
|
||||||
jr z,write_to_hard_disk
|
jp z,write_to_hard_disk
|
||||||
scf ; ¥§ ª®¬ë© ä®à¬ â
|
scf ; ¥§ ª®¬ë© ä®à¬ â
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -350,7 +350,21 @@ write_to_: ld a,(disk) ;
|
|||||||
ret z ; !TODO § £à㧪 á à áè¨à¥®£® à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
ret z ; !TODO § £à㧪 á à áè¨à¥®£® à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||||
dec c
|
dec c
|
||||||
push bc ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
|
push bc ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
|
||||||
|
; [ ] 02/02/2024 ¯à®¢¥àª ¢«¥§ ¥¬®áâì § £àã§ç¨ª (ç⮡ ¥ ¯®¯®àâ¨âì ä â)
|
||||||
|
LD HL,0
|
||||||
|
LD IX,0
|
||||||
|
LD DE,buffer
|
||||||
|
LD BC,1*256 + BIOS.DRV_READ
|
||||||
|
RST ToBIOS
|
||||||
|
POP BC
|
||||||
|
LD HL,(buffer + _sBOOT_SEC.RESERVE)
|
||||||
|
LD DE,04 ;!HARDCODE ¬¨¨¬ «ì®¥ à ááâ®ï¨¥ ¤à ©¢¥ ®â ã«¥¢®£® ᥪâ®à ¤® ä â (¤«¨ § £àã§ç¨ª + 1)
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
RET C
|
||||||
;
|
;
|
||||||
|
push bc
|
||||||
|
ld a,b
|
||||||
ld hl,0 ; áâ. à §àï¤ «®£. ᥪâ®à
|
ld hl,0 ; áâ. à §àï¤ «®£. ᥪâ®à
|
||||||
ld ix,1 ; ¬«. à §àï¤
|
ld ix,1 ; ¬«. à §àï¤
|
||||||
ld de,code_loader ; ®âªã¤ (ª®¤ § £àã§ç¨ª )
|
ld de,code_loader ; ®âªã¤ (ª®¤ § £àã§ç¨ª )
|
||||||
|
|||||||
@ -27,9 +27,23 @@ SCANDRV:
|
|||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
LD (LDRIVE),A
|
LD (LDRIVE),A
|
||||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||||
; 4. ¢ë室
|
; 4. ˘áďŞ¨Š áŤăç Š ŻĽŕĽç¨âë˘ ĽŹ ¤¨ŕ༪âŽŕ¨î
|
||||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||||
POP AF
|
LD A,(CurrentPath)
|
||||||
|
SUB 'A'
|
||||||
|
CALL CHNDISK
|
||||||
|
;
|
||||||
|
LD HL,CurrentDirectory
|
||||||
|
CALL CHDIR
|
||||||
|
JR NC,.exit
|
||||||
|
LD HL,CurrentDirectory
|
||||||
|
LD (HL),0
|
||||||
|
; LD HL,CurrentPath
|
||||||
|
; CALL CHDIR
|
||||||
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||||
|
; 5. ˘ë厤
|
||||||
|
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||||
|
.exit: POP AF
|
||||||
RET PO
|
RET PO
|
||||||
EI
|
EI
|
||||||
RET
|
RET
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
; ‚®§¢à é ¥â ®¬¥à ¤¨áª , c ª®â®à®£® § £à㦥 á¨á⥬ .
|
; ‚®§¢à é ¥â ®¬¥à ¤¨áª , c ª®â®à®£® § £à㦥 á¨á⥬ .
|
||||||
;
|
;
|
||||||
; <20>ਠB = 0 (GET)
|
; <20>ਠB = 0 (GET)
|
||||||
; ’ε<E28099>€: B = 0 (01h - ¨α―. boot-§ £ΰγ§η¨ͺ α¨αβ₯¬λ)
|
|
||||||
; ¢ë室: A - ®¬¥à á¨á⥬®£® ¤¨áª (0=A,1=B,..)
|
; ¢ë室: A - ®¬¥à á¨á⥬®£® ¤¨áª (0=A,1=B,..)
|
||||||
; <20>ਠB = 1 (SET - ¨á¯. boot-§ £àã§ç¨ª á¨á⥬ë, ¯®á«¥ 祣® äãªæ¨ï ¥¤®áâ㯠)
|
; <20>ਠB = 1 (SET - ¨á¯. boot-§ £àã§ç¨ª á¨á⥬ë, ¯®á«¥ 祣® äãªæ¨ï ¥¤®áâ㯠)
|
||||||
; ¢å®¤: A - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
; ¢å®¤: A - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||||||
|
|||||||
@ -7,20 +7,24 @@
|
|||||||
; <09>ਠA bit7 = 1:
|
; <09>ਠA bit7 = 1:
|
||||||
; HL - ¡ãä¥à (256 ¡ ©â®¢) ¤«ï à áè¨à¥ëå ¤ ëå:
|
; HL - ¡ãä¥à (256 ¡ ©â®¢) ¤«ï à áè¨à¥ëå ¤ ëå:
|
||||||
; B != 0 - áç¨â âì ᢮¡®¤®¥ ¬¥áâ®
|
; B != 0 - áç¨â âì ᢮¡®¤®¥ ¬¥áâ®
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
; ” ©«®¢ ï á¨á⥬
|
; ” ©«®¢ ï á¨á⥬
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
; Œ¥âª ¤¨áª
|
; Œ¥âª ¤¨áª
|
||||||
; ;
|
; ;
|
||||||
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
; ‡ १¥à¢¨à®¢ ®...
|
; 䨧¨ç¥áª¨© ®¬¥à ¤¨áª , ®¬¥à à §¤¥«
|
||||||
; ;
|
; ;
|
||||||
; A xor #80 - ®¬¥à ¤¨áª
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
|
; § १¥à¢¨à®¢ ®
|
||||||
|
; ;
|
||||||
|
|
||||||
|
; A and #7F - ®¬¥à ¤¨áª
|
||||||
;
|
;
|
||||||
; ¢ë室: A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å, ¥á«¨ CF=0
|
; ¢ë室: A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å, ¥á«¨ CF=0
|
||||||
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||||||
@ -28,15 +32,6 @@
|
|||||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
|
||||||
MACRO _mCOPY_LOOP
|
|
||||||
LD C,A
|
|
||||||
LD B,0
|
|
||||||
LD (DE),A
|
|
||||||
INC DE
|
|
||||||
LDIR
|
|
||||||
ENDM
|
|
||||||
;
|
|
||||||
DISKINF:; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
DISKINF:; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||||
LD C,B
|
LD C,B
|
||||||
LD B,1
|
LD B,1
|
||||||
@ -47,37 +42,56 @@ DISKINF:; [ ] 22/11/23
|
|||||||
JR Z,.CurrentDisk
|
JR Z,.CurrentDisk
|
||||||
; more info
|
; more info
|
||||||
LD B,C
|
LD B,C
|
||||||
PUSH HL
|
|
||||||
AND %0111'1111
|
AND %0111'1111
|
||||||
|
PUSH HL
|
||||||
|
PUSH AF
|
||||||
CALL .CustomDisk
|
CALL .CustomDisk
|
||||||
|
POP IX
|
||||||
JR C,.error
|
JR C,.error
|
||||||
;
|
;
|
||||||
EX (SP),HL
|
EX (SP),HL
|
||||||
PUSH AF
|
|
||||||
PUSH DE
|
PUSH DE
|
||||||
|
PUSH AF
|
||||||
PUSH BC
|
PUSH BC
|
||||||
;;;;
|
;;;;
|
||||||
;
|
;
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,CORE_BUFFERS.BootSector.ID_FAT
|
LD HL,CORE_BUFFERS.BootSector.ID_FAT
|
||||||
LD A,8 ;!HARDCODE _sBOOT_SEC.ID_FAT.length
|
LD A,8 ;!HARDCODE _sBOOT_SEC.ID_FAT.length
|
||||||
_mCOPY_LOOP
|
CALL .mCOPY_LOOP
|
||||||
;
|
;
|
||||||
LD HL,CORE_BUFFERS.BootSector.BPB_SERIAL_NUMBER
|
LD HL,CORE_BUFFERS.BootSector.BPB_SERIAL_NUMBER
|
||||||
LD A,4 ;!HARDCODE _sBOOT_SEC.BPB_SERIAL_NUMBER
|
LD A,4 ;!HARDCODE _sBOOT_SEC.BPB_SERIAL_NUMBER
|
||||||
_mCOPY_LOOP
|
CALL .mCOPY_LOOP
|
||||||
;
|
;
|
||||||
LD HL,CORE_BUFFERS.BootSector.BPB_LABEL
|
LD HL,CORE_BUFFERS.BootSector.BPB_LABEL
|
||||||
LD A,11 ;!HARDCODE _sBOOT_SEC.BPB_LABEL
|
LD A,11 ;!HARDCODE _sBOOT_SEC.BPB_LABEL
|
||||||
_mCOPY_LOOP
|
CALL .mCOPY_LOOP
|
||||||
;
|
;
|
||||||
|
PUSH DE
|
||||||
|
LD A,XH
|
||||||
|
LD DE,Dss.DRV.GenIOCTL.Enter
|
||||||
|
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||||
|
RST ToDSS.DRV
|
||||||
|
POP DE
|
||||||
|
JR C,.error_drv
|
||||||
|
LD A,2 ;!HARDCODE ¤«¨ ¯®«ï ü4 2 ¡ ©â : 䨧 ®¬¥à ¤¨áª , ®¬¥à à §¤¥« ¤¨áª
|
||||||
|
LD (DE),A
|
||||||
|
INC DE
|
||||||
|
EX AF,AF'
|
||||||
|
LD (DE),A ;䨧 ®¬¥à ¤¨áª
|
||||||
|
INC DE
|
||||||
|
LD A,C
|
||||||
|
LD (DE),A ;®¬¥à à §¤¥« ¤¨áª
|
||||||
|
INC DE
|
||||||
|
;
|
||||||
|
.error_drv:
|
||||||
XOR A
|
XOR A
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
;;;;
|
;;;;
|
||||||
POP BC
|
POP BC
|
||||||
POP DE
|
|
||||||
POP AF
|
POP AF
|
||||||
|
POP DE
|
||||||
.error: POP HL
|
.error: POP HL
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
@ -96,7 +110,7 @@ DISKINF:; [ ] 22/11/23
|
|||||||
PUSH BC
|
PUSH BC
|
||||||
CALL CHNDISK ;R06
|
CALL CHNDISK ;R06
|
||||||
POP BC
|
POP BC
|
||||||
RET C ;R06
|
RET C
|
||||||
;
|
;
|
||||||
.CheckFreeSpace:
|
.CheckFreeSpace:
|
||||||
;
|
;
|
||||||
@ -130,4 +144,14 @@ DISKINF:; [ ] 22/11/23
|
|||||||
INC BC
|
INC BC
|
||||||
.skip: INC HL
|
.skip: INC HL
|
||||||
JP .FRESP
|
JP .FRESP
|
||||||
;
|
;
|
||||||
|
; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||||
|
.mCOPY_LOOP:
|
||||||
|
LD C,A
|
||||||
|
LD B,0
|
||||||
|
LD (DE),A
|
||||||
|
INC DE
|
||||||
|
LDIR
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|||||||
@ -191,7 +191,7 @@ A0066: JP DRV_PAGE.NMI ;
|
|||||||
;
|
;
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||||
; <[DRIVE PAGE SWITCH]> ;
|
; <[DRIVE PAGE SWITCH]> ;
|
||||||
_mInfoBLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
|
BLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
|
||||||
PORTAL.out_DRV: PUSH BC ;
|
PORTAL.out_DRV: PUSH BC ;
|
||||||
.RETBANK+2: LD BC,SLOT0 + 0*256; ;!!!!! ReScnDRV ¨á¯®«ì§ã¥â íâ® § 票¥
|
.RETBANK+2: LD BC,SLOT0 + 0*256; ;!!!!! ReScnDRV ¨á¯®«ì§ã¥â íâ® § 票¥
|
||||||
.switch: OUT (C),B ;
|
.switch: OUT (C),B ;
|
||||||
|
|||||||
@ -387,6 +387,18 @@ HARD_DRV:
|
|||||||
JR NZ,.skip
|
JR NZ,.skip
|
||||||
LD A,(IY+LOGDRV.SECTOR_OFFSET+3)
|
LD A,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||||
CP (IX+LOGDRV.SECTOR_OFFSET+3)
|
CP (IX+LOGDRV.SECTOR_OFFSET+3)
|
||||||
|
JR NZ,.skip
|
||||||
|
LD A,(IY+LOGDRV.SIZE_IN_SECTORS)
|
||||||
|
CP (IX+LOGDRV.SIZE_IN_SECTORS)
|
||||||
|
JR NZ,.skip
|
||||||
|
LD A,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||||
|
CP (IX+LOGDRV.SIZE_IN_SECTORS+1)
|
||||||
|
JR NZ,.skip
|
||||||
|
LD A,(IY+LOGDRV.SIZE_IN_SECTORS+2)
|
||||||
|
CP (IX+LOGDRV.SIZE_IN_SECTORS+2)
|
||||||
|
JR NZ,.skip
|
||||||
|
LD A,(IY+LOGDRV.SIZE_IN_SECTORS+3)
|
||||||
|
CP (IX+LOGDRV.SIZE_IN_SECTORS+3)
|
||||||
JR Z,.found
|
JR Z,.found
|
||||||
;
|
;
|
||||||
.skip: ADD IX,DE
|
.skip: ADD IX,DE
|
||||||
@ -414,8 +426,7 @@ HARD_DRV:
|
|||||||
;-----[]
|
;-----[]
|
||||||
; ‚•Ž„: HL - ⥪ãé ï § ¯¨áì ¢ â ¡«¨æ¥ DEVICE
|
; ‚•Ž„: HL - ⥪ãé ï § ¯¨áì ¢ â ¡«¨æ¥ DEVICE
|
||||||
; B - è £ ®¡é¥£® 横«
|
; B - è £ ®¡é¥£® 横«
|
||||||
KILL_FM:
|
KILL_FM:;
|
||||||
;
|
|
||||||
LD A,DSS_MAX_DRIVES_AMOUNT
|
LD A,DSS_MAX_DRIVES_AMOUNT
|
||||||
SUB B
|
SUB B
|
||||||
LD C,A
|
LD C,A
|
||||||
|
|||||||
@ -250,8 +250,8 @@ FDDRIVE:
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
|
||||||
; HL:DE - SECTORS ON LOGICAL DISK
|
; HL:DE - SECTORS ON LOGICAL DISK
|
||||||
|
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
; HL' - CYLINDERS ON PHISICAL DISK
|
; HL' - CYLINDERS ON PHISICAL DISK
|
||||||
; DE' - HEADS ON PHISICAL DISK
|
; DE' - HEADS ON PHISICAL DISK
|
||||||
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
||||||
|
|||||||
@ -275,7 +275,7 @@ DRVCLC: ; INC A
|
|||||||
; ;+05 DWORD SIZE IN SECTORS
|
; ;+05 DWORD SIZE IN SECTORS
|
||||||
; ;+09 FREE
|
; ;+09 FREE
|
||||||
; ;+15
|
; ;+15
|
||||||
; LOGDRV: BLOCK .TBL_Entry * LD_DSK,0 ;!FIXIT ¯¥à¥¥á⨠ª ¡ãä¥à ¬ ¢ ª®¥æ áâà ¨æë
|
; LOGDRV: BLOCK .TBL_Entry * LD_DSK,0
|
||||||
; .TBL_Entry EQU 16
|
; .TBL_Entry EQU 16
|
||||||
; .Size EQU $-LOGDRV
|
; .Size EQU $-LOGDRV
|
||||||
|
|
||||||
@ -349,8 +349,8 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR. if #FF - then not supported ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
|
||||||
; HL:DE - SECTORS ON LOGICAL DISK
|
; HL:DE - SECTORS ON LOGICAL DISK
|
||||||
|
; C - PARTITION RECORD NUMBER IN DRIVE MBR. if #FF - then not supported ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
; HL' - CYLINDERS ON PHISICAL DISK
|
; HL' - CYLINDERS ON PHISICAL DISK
|
||||||
; DE' - HEADS ON PHISICAL DISK
|
; DE' - HEADS ON PHISICAL DISK
|
||||||
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
||||||
|
|||||||
@ -508,9 +508,8 @@ IOCTL_RD:
|
|||||||
RL D
|
RL D
|
||||||
RRA
|
RRA
|
||||||
JR NC,.loopShift
|
JR NC,.loopShift
|
||||||
|
;
|
||||||
.end:
|
.end: EX AF,AF'
|
||||||
EX AF,AF'
|
|
||||||
POP AF
|
POP AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
XOR A
|
XOR A
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
843
|
880
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e
|
Subproject commit b5606d6db7c0eecf2e3b3da53040af2432a40569
|
||||||
Loading…
Reference in New Issue
Block a user