убраны баги в rescandrv, sys.exe, diskINF

This commit is contained in:
Anatoliy Belyanskiy 2024-02-02 01:18:47 +10:00
parent 43b8683575
commit 1c2f824e48
11 changed files with 108 additions and 47 deletions

View File

@ -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 ; ®âªã¤  (ª®¤ § £àã§ç¨ª )

View File

@ -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

View File

@ -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 - ­®¬¥à à §¤¥«  ­  ãáâனá⢥

View File

@ -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
;
; ;

View File

@ -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 ;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
843 880

@ -1 +1 @@
Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e Subproject commit b5606d6db7c0eecf2e3b3da53040af2432a40569