mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-16 01:41:17 +03:00
+ загрузка с любого активного Primary раздела
This commit is contained in:
parent
f58a3d681b
commit
22efbb84c7
@ -35,12 +35,12 @@ DRIVE: _mSYSID
|
||||
BIT 7,A
|
||||
JR Z,GOOD_DRIVE
|
||||
EX DE,HL
|
||||
LD DE,2*256 + 21 ;!HARDCODE ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
||||
LD DE,2*256 + 21 ;!HARDCODE ¥á«¨ ¢¥àá¨ï ¨¦¥ 2.21, â® ®è¨¡ª
|
||||
SBC HL,DE
|
||||
LD A,INCORR
|
||||
JR C,FAIL
|
||||
GOOD_DRIVE:
|
||||
LD DE,#8200
|
||||
LD DE,#8200 ;!HARDCODE
|
||||
LD HL,0
|
||||
LD IX,2
|
||||
LD BC,2*256 + BIOS.DRV_READ
|
||||
@ -174,8 +174,11 @@ CONTINUE:
|
||||
|
||||
;DOS LOADED
|
||||
IF UNIVERSAL_BOOT
|
||||
|
||||
LD A,(DRIVE)
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD A,(DRIVE+1) ; ®¬¥à à §¤¥«
|
||||
LD L,A
|
||||
;
|
||||
LD A,(DRIVE) ; ®¬¥à ãáâனáâ¢
|
||||
LD C,Dss.Version
|
||||
RST ToDSS
|
||||
jp c,XFAIL.fail
|
||||
@ -187,7 +190,8 @@ CONTINUE:
|
||||
LD BC,Dss.BootDSK.Set
|
||||
RST ToDSS
|
||||
|
||||
LD B,high Dss.BootDSK.Get
|
||||
;LD B,high Dss.BootDSK.Get
|
||||
LD BC,Dss.BootDSK.Get
|
||||
ELSE
|
||||
|
||||
IF ORIGINAL_DSS
|
||||
@ -198,6 +202,7 @@ CONTINUE:
|
||||
LD C,Dss.Version
|
||||
RST ToDSS
|
||||
jp c,XFAIL.fail
|
||||
LD C,Dss.BootDSK
|
||||
ENDIF
|
||||
|
||||
LD A,STARTDO
|
||||
@ -208,15 +213,17 @@ CONTINUE:
|
||||
LD BC,Dss.BootDSK.Set
|
||||
RST ToDSS
|
||||
|
||||
LD B,high Dss.BootDSK.Get
|
||||
;LD B,high Dss.BootDSK.Get
|
||||
LD B‘,Dss.BootDSK.Get
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
LD C,Dss.BootDSK
|
||||
;LD C,Dss.BootDSK
|
||||
RST ToDSS
|
||||
|
||||
ADD A,"A"
|
||||
|
||||
|
||||
LD HL,ROOT
|
||||
LD (HL),A
|
||||
LD C,Dss.ChDir
|
||||
@ -250,23 +257,31 @@ PART_TB: PUSH BC
|
||||
SBC HL,DE
|
||||
JR NZ,ERRP
|
||||
LD IX,BOOT+#01BE
|
||||
LD B,4
|
||||
LD B,4 ;!HARDCODE áç¥â稪 § ¯¨á¥© ¯ àâ¨æ¨© ¢ MBR
|
||||
DOSAGA: LD A,(IX+4)
|
||||
CP #0E
|
||||
CP PartitionSysTypes.FAT16_LBA
|
||||
JR Z,YEPDOS
|
||||
CP 6
|
||||
CP PartitionSysTypes.FAT16
|
||||
JR Z,YEPDOS
|
||||
CP 4
|
||||
CP PartitionSysTypes.FAT16_32Mb
|
||||
JR Z,YEPDOS
|
||||
CP 1
|
||||
CP PartitionSysTypes.FAT12
|
||||
JR Z,YEPDOS
|
||||
LD DE,#10
|
||||
.next: LD DE,#10
|
||||
ADD IX,DE
|
||||
DJNZ DOSAGA
|
||||
ERRP: LD A,ERRPART
|
||||
JP FAIL
|
||||
|
||||
YEPDOS: LD E,(IX+08)
|
||||
YEPDOS: ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD A,#80
|
||||
CP (IX+0)
|
||||
JR NZ,DOSAGA.next
|
||||
LD A,4 ;!HARDCODE áç¥â稪 § ¯¨á¥© ¯ àâ¨æ¨© ¢ MBR
|
||||
SUB B
|
||||
PUSH AF ; ®¬¥à § £à㧮箣® à §¤¥«
|
||||
;
|
||||
LD E,(IX+08)
|
||||
LD D,(IX+09)
|
||||
LD L,(IX+10)
|
||||
LD H,(IX+11)
|
||||
@ -278,8 +293,13 @@ YEPDOS: LD E,(IX+08)
|
||||
LD DE,BOOT
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
RST ToBIOS_18
|
||||
POP BC
|
||||
LD A,C
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
POP AF
|
||||
POP BC
|
||||
LD L,A ; ®¬¥à § £à㧮箣® à §¤¥«
|
||||
LD A,C
|
||||
;LD A,C
|
||||
;
|
||||
RET
|
||||
|
||||
SET_PRM: PUSH BC
|
||||
@ -311,6 +331,9 @@ GET_BPB: LD IX,#0000
|
||||
JR NZ,NX1
|
||||
CALL PART_TB ;HDD
|
||||
RET C
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD (DRIVE+1),HL
|
||||
;
|
||||
NX1: CP #00
|
||||
JR NZ,NX2
|
||||
CALL SET_PRM ;FDD
|
||||
|
||||
111
BOOT/boot.asm
111
BOOT/boot.asm
@ -64,16 +64,24 @@ BEGIN: in a,(SLOT3)
|
||||
ld c,Dss.Version ; ã§ âì ¢¥àá¨î „Ž‘
|
||||
RST ToDSS
|
||||
ex de,hl ; hl=⥪. ¢¥àá¨ï
|
||||
ld de,#013C ; 1.60 d=¢¥àá¨ï, e=¬®¤¨ä¨ª æ¨ï, bc - ®¬¥à ᡮન. de = #013E, bc = #0064 dos ver 1.62.100
|
||||
ld de,#0146 ; 1.70.810 d=¢¥àá¨ï, e=¬®¤¨ä¨ª æ¨ï, bc - ®¬¥à ᡮન. de = #0146, bc = 810 dos ver 1.70.810
|
||||
and a
|
||||
sbc hl,de
|
||||
jr nc,version_ok
|
||||
pop hl
|
||||
ld a,11 ; ¨¤¥ªá áâப¨ "Error: Need DSS version 1.60..."
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
;jr nc,version_ok
|
||||
jr z,.check_build ; ¥á«¨ ®¬¥à ¢¥àᨨ 1.70
|
||||
jr nc,version_ok ; ¥á«¨ ®¬¥à ¢¥àᨨ ¡®«ìè¥ 1.70
|
||||
;
|
||||
.old_ver: pop hl
|
||||
ld a,11 ; ¨¤¥ªá áâப¨ "Error: Need DSS version 1.70..."
|
||||
call print_string
|
||||
ld a,-1
|
||||
jp exit
|
||||
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
.check_build: ld hl,810 ; 1.70.810 d=¢¥àá¨ï, e=¬®¤¨ä¨ª æ¨ï, bc - ®¬¥à ᡮન. de = #0146, bc = 810 dos ver 1.70.810
|
||||
sbc hl,bc
|
||||
jr nc,BEGIN.old_ver
|
||||
;
|
||||
version_ok: xor a ; ¨¤¥ªá áâப¨ â¨â«
|
||||
call print_string
|
||||
pop hl ; ª®¬-áâப
|
||||
@ -82,7 +90,7 @@ version_ok: xor a ;
|
||||
jp c,help ; ¥â ¯ à ¬¥â஢
|
||||
ld (disk),a ; § ¤ ë© ®¬¥à ¤¨áª
|
||||
; ã§ âì ®¬¥à boot-¤¨áª á¨á⥬ë
|
||||
ld bc,0009h
|
||||
ld bc,Dss.BootDSK.Get
|
||||
RST ToDSS
|
||||
ld (boot_disk),a ; ¤¨áª (A=0,B=1,..)
|
||||
; ¯à®¢¥à¨âì ᮢ¯ ¤¥¨¥ ¤¨áª®¢
|
||||
@ -258,16 +266,16 @@ write_boot_loader:
|
||||
rst 18h
|
||||
ret c ; ®è¨¡ª ç⥨ï
|
||||
ld a,(buffer+21) ; ¡ ©â ä®à¬ â
|
||||
cp 0F0h ; 1.44Mb
|
||||
cp #F0 ; 1.44Mb
|
||||
ret c ; ¥§ ª®¬ë© ä®à¬ â
|
||||
jr z,write_to_floppy
|
||||
cp 0F9h ; 720kB
|
||||
cp #F9 ; 720kB
|
||||
jr z,write_to_floppy
|
||||
cp 0FAh ; RAM disk
|
||||
cp #FA ; RAM disk
|
||||
jr z,write_to_ram_disk
|
||||
; pop hl ; ¢®ááâ. ¡ « á á⥪
|
||||
; call close_device
|
||||
cp 0F8h ; ¢¨â
|
||||
cp #F8 ; ¢¨â
|
||||
jr z,write_to_hard_disk
|
||||
scf ; ¥§ ª®¬ë© ä®à¬ â
|
||||
ret
|
||||
@ -329,22 +337,77 @@ overwrite_floppy:
|
||||
; ¢å®¤: ¥â
|
||||
; ¢ë室: CF-®è¨¡ª § ¯¨á¨
|
||||
;-------------------------------------------------
|
||||
|
||||
write_to_ram_disk:
|
||||
write_to_hard_disk:
|
||||
ld a,(disk) ; ®¬¥à § ¤ ®£® ¤¨áª
|
||||
write_to_: ld a,(disk) ; ®¬¥à § ¤ ®£® ¤¨áª
|
||||
ld de,#55AA
|
||||
ld bc,0 * 256 + 8
|
||||
rst #18
|
||||
ex af,af'
|
||||
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
ld b,a
|
||||
inc c
|
||||
scf
|
||||
ret z ; !TODO § £à㧪 á à áè¨à¥®£® à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
dec c
|
||||
push bc ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
|
||||
;
|
||||
ld hl,0 ; áâ. à §àï¤ «®£. ᥪâ®à
|
||||
ld ix,1 ; ¬«. à §àï¤
|
||||
ld de,code_loader ; ®âªã¤ (ª®¤ § £àã§ç¨ª )
|
||||
ld bc,3*256 + BIOS.DRV_WRITE ; § ¯¨á âì 3 ᥪâ®à (à §¬¥à § £à.)
|
||||
rst 08h
|
||||
rst ToBIOS
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
pop bc
|
||||
;
|
||||
ret
|
||||
|
||||
write_to_hard_disk:
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
CALL write_to_
|
||||
RET C
|
||||
;
|
||||
PUSH BC ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
|
||||
LD A,B
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
LD DE,buffer
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
RST ToBIOS
|
||||
; check signature
|
||||
LD HL,(buffer+510) ;!HARDCODE Signature word
|
||||
LD DE,#AA55
|
||||
AND A
|
||||
SBC HL,DE
|
||||
POP BC ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
|
||||
SCF
|
||||
RET NZ
|
||||
PUSH BC
|
||||
; set active in buffer
|
||||
INC C
|
||||
LD HL,buffer + #01BE + #30 ;!HARDCODE MBR: Offset of last record of partition table in the MBR
|
||||
LD DE,#10 ; à §¬¥à ®¤®© § ¯¨á¨ MBR
|
||||
LD B,4 ;!HARDCODE MBR: Number of entries in the partition table
|
||||
.loop: XOR A
|
||||
LD (HL),A
|
||||
;
|
||||
LD A,C
|
||||
CP B
|
||||
JR NZ,.next
|
||||
;
|
||||
LD A,#80
|
||||
LD (HL),A
|
||||
;
|
||||
.next: AND A
|
||||
SBC HL,DE
|
||||
DJNZ .loop
|
||||
; save buffer to disk
|
||||
POP BC ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
|
||||
ld a,b
|
||||
ld hl,0 ; áâ. à §àï¤ «®£. ᥪâ®à
|
||||
ld ix,0 ; ¬«. à §àï¤
|
||||
ld de,buffer ; ®âªã¤ (ª®¤ § £àã§ç¨ª )
|
||||
ld bc,1*256 + BIOS.DRV_WRITE ; § ¯¨á âì 3 ᥪâ®à (à §¬¥à § £à.)
|
||||
JP ToBIOS
|
||||
;
|
||||
;-------------------------------------------------
|
||||
; ‚뤥«¨âì § ¤ ë© ¤¨áª ¨§ ª®¬-áâப¨
|
||||
;
|
||||
@ -467,14 +530,14 @@ lett2: db "X:",0Dh,0Ah
|
||||
lett3: db "X:",0Dh,0Ah
|
||||
db "and strike any key when ready ...",0Dh,0Ah,0Ah,0
|
||||
;
|
||||
db "Can't install boot on this disk",0Dh,0Ah,0Ah,0 ;7
|
||||
db "Invalid drive specification",0Dh,0Ah,0Ah,0 ;8
|
||||
db " Error: Can't open file",0Dh,0Ah,0Ah,0 ;9
|
||||
db " Error: Can't allocate memory",0Dh,0Ah,0Ah,0 ;10
|
||||
db " Error: Need DOS version 1.60 or higher",0Dh,0Ah,0Ah,0;11
|
||||
db " Error: Reading error",0Dh,0Ah,0Ah,0 ;12
|
||||
db " Error: Can't create file",0Dh,0Ah,0Ah,0 ;13
|
||||
db " Error: Writing error",0Dh,0Ah,0Ah,0 ;14
|
||||
db "Can't install boot on this disk",0Dh,0Ah,0Ah,0 ;7
|
||||
db "Invalid drive specification",0Dh,0Ah,0Ah,0 ;8
|
||||
db " Error: Can't open file",0Dh,0Ah,0Ah,0 ;9
|
||||
db " Error: Can't allocate memory",0Dh,0Ah,0Ah,0 ;10
|
||||
db " Error: Need DOS version 1.70.811 or higher",0Dh,0Ah,0Ah,0 ;11
|
||||
db " Error: Reading error",0Dh,0Ah,0Ah,0 ;12
|
||||
db " Error: Can't create file",0Dh,0Ah,0Ah,0 ;13
|
||||
db " Error: Writing error",0Dh,0Ah,0Ah,0 ;14
|
||||
endmess: db 0
|
||||
|
||||
|
||||
|
||||
@ -20,18 +20,33 @@ BOOTDSK:
|
||||
RET
|
||||
; ‘®®¡é¨âì DSS á ª ª®£® ¤¨áª § £à㦠¥âáï á¨á⥬ .
|
||||
; ˆá¯. § £àã§ç¨ª á¨áâ¥¬ë ¤«ï ¨¨æ. ï祩ª¨ "boot_disk".
|
||||
.SET: LD B,A ;SET BOOT DISK
|
||||
LD C,0
|
||||
|
||||
.SET: ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
;LD B,A ;SET BOOT DISK
|
||||
;LD C,0
|
||||
LD B,A
|
||||
LD C,0
|
||||
LD (.part),HL
|
||||
;
|
||||
.loop: PUSH BC
|
||||
LD A,C
|
||||
LD DE,#55AA
|
||||
LD BC,256*0 + Dss.DRV.GenIOCTL
|
||||
RST ToDSS.DRV
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD A,C ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
;
|
||||
POP BC
|
||||
JR C,.NoSupport
|
||||
EX AF,AF' ;PHISICAL DRIVE NUMBER
|
||||
CP B
|
||||
JR NZ,.NoSupport
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
EX AF,AF' ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
.part+1: LD HL,0
|
||||
CP L
|
||||
JR NZ,.NoSupport
|
||||
;
|
||||
;R13
|
||||
LD A,#38 ; opcode for JR C,addr
|
||||
LD (BOOTDSK.chg),A
|
||||
|
||||
@ -200,7 +200,7 @@ PORTAL.out_DRV: PUSH BC ;
|
||||
LD (.RETBANK),A ;
|
||||
POP BC ;
|
||||
POP AF ;
|
||||
ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||||
.ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||||
JP PORTAL.out_DRV ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
@ -224,7 +224,7 @@ DRV_PAGE.LDRIVE: DB #00
|
||||
|
||||
DISPATCH:
|
||||
LD HL,INTDISK
|
||||
LD (ADCALL),HL
|
||||
LD (PORTAL.out_DRV.ADCALL),HL
|
||||
INITDVC_RET_DRIVE:
|
||||
CALL INITDVC
|
||||
LD A,(DRV_PAGE.LDRIVE)
|
||||
@ -251,11 +251,17 @@ DEVICE EQU $
|
||||
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
;+01 LONG SECTOR OFFSET
|
||||
;+05 LONG SIZE IN SECTORS
|
||||
;+09 BYTE PARTITION RECORD NUMBER (in drive MBR)
|
||||
;+09 FREE
|
||||
;+15
|
||||
LOGDRV EQU DEVICE + DEVICE.End
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||
LOGDRV EQU DEVICE + DEVICE.End
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||
;!TODO ᤥ« âì áâàãªâãன
|
||||
.PHISICAL_DRV_NUMBER EQU 0
|
||||
.SECTOR_OFFSET EQU 1
|
||||
.SIZE_IN_SECTORS EQU 5
|
||||
.PARTITION_RECORD_NUM EQU 9
|
||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
||||
|
||||
@ -265,7 +265,11 @@ PORTAL.out_MAIN: ;
|
||||
|
||||
; <20>¥à¢ë© áâ àâ á¨á⥬ë, ¯®á«¥ ¨¨æ¨ «¨§ 樨 ¤à¥á ¢ â ¡«¨æ¥ ¬¥ï¥âáï VERSION
|
||||
F_START: DI
|
||||
LD (.saveDRV),A
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
;LD (.saveDRV),A
|
||||
LD H,A
|
||||
LD (.saveDRV),HL ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||||
;
|
||||
|
||||
;R12
|
||||
LD C,BIOS.DRV_VERSION
|
||||
@ -297,10 +301,12 @@ F_START: DI
|
||||
RST ToDSS.DRV
|
||||
LD (LDRIVE),A
|
||||
;R05
|
||||
|
||||
.saveDRV+1: LD A,0
|
||||
;LD BC,1*256 + Dss.BootDSK
|
||||
;RST ToDSS
|
||||
.saveDRV+1:
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD HL,0 ; H - ®¬¥à ãáâனá⢠, L - ®¬¥à à §¤¥« ãáâனá⢥
|
||||
LD A,H
|
||||
;LD A,0
|
||||
;
|
||||
LD B,1
|
||||
CALL BOOTDSK
|
||||
|
||||
|
||||
@ -649,18 +649,17 @@ READ_M: IN A,(PORT_MOUSE.Ctrl)
|
||||
CCF
|
||||
RET Z
|
||||
|
||||
;!TEST mouse freeeeezzzz
|
||||
;[x] mouse freeeeezzzz
|
||||
LD BC,#2000
|
||||
;
|
||||
TST_01: IN A,(PORT_MOUSE.Ctrl)
|
||||
RRCA
|
||||
;!TEST mouse freeeeezzzz
|
||||
;[x] mouse freeeeezzzz
|
||||
JR C,.NXT
|
||||
DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,TST_01
|
||||
SCF
|
||||
RET
|
||||
;JR NC,TST_01
|
||||
;
|
||||
@ -671,12 +670,12 @@ TST_01: IN A,(PORT_MOUSE.Ctrl)
|
||||
CCF
|
||||
RET NZ
|
||||
|
||||
;[x] mouse freeeeezzzz !TEST
|
||||
;[x] mouse freeeeezzzz
|
||||
LD BC,#2000
|
||||
;
|
||||
TST_02: IN A,(PORT_MOUSE.Ctrl)
|
||||
RRCA
|
||||
;[x] mouse freeeeezzzz !TEST
|
||||
;[x] mouse freeeeezzzz
|
||||
JR C,.NXT
|
||||
DEC BC
|
||||
LD A,B
|
||||
|
||||
@ -41,7 +41,6 @@ ReScanDRV:
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
|
||||
; [¨é¥¬ çâ® § ¤à ©¢]
|
||||
EX DE,HL
|
||||
; FDD?
|
||||
@ -276,6 +275,7 @@ Find_Record:
|
||||
|
||||
;-----------------------[]
|
||||
ERROR_BOOTDRV_DIES:
|
||||
DI
|
||||
LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default
|
||||
LD E,1
|
||||
RST ToBIOS
|
||||
@ -370,25 +370,31 @@ HARD_DRV:
|
||||
LD DE,LOGDRV.TBL_Entry
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
;
|
||||
.loop: LD A,(IY+0)
|
||||
.loop: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
;CP #FF
|
||||
;JR Z,.skip
|
||||
CP (IX+0)
|
||||
CP (IX+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
JR NZ,.skip
|
||||
;
|
||||
LD A,(IY+1)
|
||||
CP (IX+1)
|
||||
;
|
||||
LD A,(IY+LOGDRV.SECTOR_OFFSET)
|
||||
CP (IX+LOGDRV.SECTOR_OFFSET)
|
||||
JR NZ,.skip
|
||||
LD A,(IY+2)
|
||||
CP (IX+2)
|
||||
LD A,(IY+LOGDRV.SECTOR_OFFSET+1)
|
||||
CP (IX+LOGDRV.SECTOR_OFFSET+1)
|
||||
JR NZ,.skip
|
||||
LD A,(IY+LOGDRV.SECTOR_OFFSET+2)
|
||||
CP (IX+LOGDRV.SECTOR_OFFSET+2)
|
||||
JR NZ,.skip
|
||||
LD A,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||
CP (IX+LOGDRV.SECTOR_OFFSET+3)
|
||||
JR Z,.found
|
||||
;
|
||||
;
|
||||
.skip: ADD IX,DE
|
||||
DJNZ .loop
|
||||
; ‡€<E280A1>ˆ‘œ <20>… <20>€‰„…<E2809E>€
|
||||
; ƒà®å ¥¬ áâ àãî § ¯¨áì ¢ OLD_TABLES.LOGDRV
|
||||
LD A,#FF
|
||||
LD (IY+0),A
|
||||
LD (IY+LOGDRV.PHISICAL_DRV_NUMBER),A
|
||||
; „®áâ ñ¬ ¯®«®¦¥¨¥ ¢ OLD_TABLES.DEVICE
|
||||
POP HL
|
||||
; „®áâ ñ¬ è £ ®¡é¥£® 横« ¤«ï ¯®«ãç¥¨ï «®£.®¬¥à ¤à ©¢ ¢ KILL_FM
|
||||
@ -400,7 +406,7 @@ HARD_DRV:
|
||||
JP ReScanDRV.nextN2
|
||||
;
|
||||
.found: ; § â¨à ¥¬ ¢ ®¢®© â ¡«¨æ¥ ᮢ¯ ¢è¨© ¤à ©¢ (ç⮡ «¥£ç¥ ¡ë«® ¯ àá¨âì ®á⠢襥áï)
|
||||
LD (IX+0),#FF
|
||||
LD (IX+LOGDRV.PHISICAL_DRV_NUMBER),#FF
|
||||
JP ReScanDRV.nextN
|
||||
;
|
||||
; CD_ROM:
|
||||
|
||||
@ -250,6 +250,7 @@ FDDRIVE:
|
||||
RET
|
||||
|
||||
|
||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
; HL:DE - SECTORS ON LOGICAL DISK
|
||||
; HL' - CYLINDERS ON PHISICAL DISK
|
||||
; DE' - HEADS ON PHISICAL DISK
|
||||
@ -312,6 +313,7 @@ FDDRIVE:
|
||||
LD H,B
|
||||
EX DE,HL
|
||||
EXX
|
||||
LD C,0 ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
AND A
|
||||
RET
|
||||
|
||||
|
||||
@ -210,9 +210,10 @@ RESR_H LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
;--------------------------------------------------------------------[v]
|
||||
; c=0 Initialization
|
||||
INIT_H: PUSH IY
|
||||
;!TEST ;[ ]
|
||||
;!TEST ;[ ] ¤«ï rescanDRV
|
||||
XOR A
|
||||
LD (DRVCLC.count),A
|
||||
;
|
||||
LD HL,LOGDRV
|
||||
LD (OFFSECT),HL
|
||||
|
||||
@ -348,6 +349,7 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET
|
||||
|
||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR. if #FF - then not supported ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
; HL:DE - SECTORS ON LOGICAL DISK
|
||||
; HL' - CYLINDERS ON PHISICAL DISK
|
||||
; DE' - HEADS ON PHISICAL DISK
|
||||
@ -377,7 +379,7 @@ HGETPRM:
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
PUSH IY
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
@ -393,13 +395,16 @@ HGETPRM:
|
||||
LD B,D
|
||||
EXX
|
||||
; SECTORS ON LOGICAL DISK
|
||||
LD E,(IY+5)
|
||||
LD D,(IY+6)
|
||||
LD L,(IY+7)
|
||||
LD H,(IY+8)
|
||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
|
||||
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
|
||||
;
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
;
|
||||
EX AF,AF'
|
||||
LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
EX AF,AF'
|
||||
;
|
||||
AND A
|
||||
@ -525,18 +530,32 @@ HIGHDOS:
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD IX,(OFFSECT)
|
||||
LD (IX+1),E ;BPB SECTOR
|
||||
LD (IX+2),D
|
||||
LD (IX+3),L
|
||||
LD (IX+4),H
|
||||
LD (IX+LOGDRV.SECTOR_OFFSET+0),E ;BPB SECTOR
|
||||
LD (IX+LOGDRV.SECTOR_OFFSET+1),D
|
||||
LD (IX+LOGDRV.SECTOR_OFFSET+2),L
|
||||
LD (IX+LOGDRV.SECTOR_OFFSET+3),H
|
||||
LD E,(IY+12)
|
||||
LD D,(IY+13)
|
||||
LD L,(IY+14)
|
||||
LD H,(IY+15)
|
||||
LD (IX+5),E ;SIZE DISK
|
||||
LD (IX+6),D
|
||||
LD (IX+7),L
|
||||
LD (IX+8),H
|
||||
LD (IX+LOGDRV.SIZE_IN_SECTORS+0),E ;SIZE DISK
|
||||
LD (IX+LOGDRV.SIZE_IN_SECTORS+1),D
|
||||
LD (IX+LOGDRV.SIZE_IN_SECTORS+2),L
|
||||
LD (IX+LOGDRV.SIZE_IN_SECTORS+3),H
|
||||
;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
ExtendedPartitionFlag+1:
|
||||
LD A,0
|
||||
OR A ; !TODO § £à㧪 á à áè¨à¥®£® à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
LD A,#FF
|
||||
JR NZ,.not_supported ; ¥á«¨ à áè¨à¥ë© à §¤¥«, â® ®¡«®¬
|
||||
;
|
||||
POP BC
|
||||
PUSH BC
|
||||
LD A,4 ;!HARDCODE MBR: Number of entries in the partition table
|
||||
SUB B
|
||||
.not_supported:
|
||||
LD (IX+LOGDRV.PARTITION_RECORD_NUM),A
|
||||
;
|
||||
;!TEST <09>®¤áâà 客ª ®â ¯¥à¥¯®«¥¨ï â ¡«¨æë LOGDRV
|
||||
LD A,(DRVCLC.count)
|
||||
INC A
|
||||
@ -545,17 +564,18 @@ HIGHDOS:
|
||||
LD (DRVCLC.count),A
|
||||
;
|
||||
LD A,(DRV_NUM)
|
||||
LD (IX+0),A
|
||||
LD (IX+LOGDRV.PHISICAL_DRV_NUMBER),A
|
||||
LD DE,LOGDRV.TBL_Entry ;DSKITEM
|
||||
ADD IX,DE
|
||||
LD (OFFSECT),IX
|
||||
NXTPART:
|
||||
LD DE,#10 ;!HARDCODE SZ_PTE - Size of a partition table entry
|
||||
ADD IY,DE
|
||||
POP BC
|
||||
DJNZ DOSAGA
|
||||
AND A
|
||||
RET
|
||||
JP NXTPART
|
||||
; NXTPART:
|
||||
; LD DE,#10 ;!HARDCODE SZ_PTE - Size of a partition table entry
|
||||
; ADD IY,DE
|
||||
; POP BC
|
||||
; DJNZ DOSAGA
|
||||
; AND A
|
||||
; RET
|
||||
|
||||
|
||||
;
|
||||
@ -564,17 +584,18 @@ NOEXTDS:
|
||||
JR Z,HIGHDOS
|
||||
CP PartitionSysTypes.FAT16_LBA
|
||||
JR Z,HIGHDOS
|
||||
CP PartitionSysTypes.FAT16_32M
|
||||
CP PartitionSysTypes.FAT16_32Mb
|
||||
JR Z,MEDIDOS
|
||||
CP PartitionSysTypes.FAT12
|
||||
JR Z,EASYDOS
|
||||
CP PartitionSysTypes.Win_Ext_LBA
|
||||
JR Z,SUBLEV
|
||||
;[x] 17/12/23 ¯à®¯ãáª à §¤¥«®¢ á ¥¨§¢¥áâ묨 ”‘, ®¯â¨¬¨§ æ¨ï ¤¥â¥ªâ
|
||||
OR A ;PartitionSysTypes.Empty
|
||||
JR NZ,NXTPART
|
||||
POP BC ; ¡ « á á⥪
|
||||
RET
|
||||
;OR A ;PartitionSysTypes.Empty
|
||||
;JR NZ,NXTPART
|
||||
JR NXTPART ; à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
;POP BC ; ¡ « á á⥪
|
||||
;RET
|
||||
;POP BC
|
||||
;OR A
|
||||
;RET Z
|
||||
@ -583,7 +604,6 @@ NOEXTDS:
|
||||
;RET
|
||||
;
|
||||
|
||||
|
||||
PARTIT: IN A,(SLOT3)
|
||||
PUSH AF
|
||||
LD A,SHARED_PAGE
|
||||
@ -623,14 +643,30 @@ SUBLEV: PUSH IY
|
||||
LD IX,(CURSECH)
|
||||
PUSH DE
|
||||
PUSH IX
|
||||
;[ ] 17/12/23 ¯à®¯ãáª à §¤¥«®¢ á ¥¨§¢¥áâ묨 ”‘, ®¯â¨¬¨§ æ¨ï ¯¥à¥¡®à à §¤¥«®¢
|
||||
LD A,(ExtendedPartitionFlag)
|
||||
INC A
|
||||
LD (ExtendedPartitionFlag),A ; !TODO § £à㧪 á à áè¨à¥®£® à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
;
|
||||
CALL EXTDOS
|
||||
;[ ] 17/12/23 ¯à®¯ãáª à §¤¥«®¢ á ¥¨§¢¥áâ묨 ”‘, ®¯â¨¬¨§ æ¨ï ¯¥à¥¡®à à §¤¥«®¢
|
||||
LD A,(ExtendedPartitionFlag)
|
||||
DEC A
|
||||
LD (ExtendedPartitionFlag),A ; !TODO § £à㧪 á à áè¨à¥®£® à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
;
|
||||
POP IX
|
||||
POP DE
|
||||
LD (CURSECL),DE
|
||||
LD (CURSECH),IX
|
||||
CALL LOADSEC
|
||||
POP IY
|
||||
JP NXTPART
|
||||
NXTPART:
|
||||
LD DE,#10 ;!HARDCODE SZ_PTE - Size of a partition table entry
|
||||
ADD IY,DE
|
||||
POP BC
|
||||
DJNZ DOSAGA
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
EXTDOS: LD HL,(EXTDOSL)
|
||||
LD DE,(EXTDOSH)
|
||||
|
||||
@ -455,6 +455,7 @@ IOCTL_RD:
|
||||
SCF
|
||||
RET
|
||||
|
||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
; HL:DE - SECTORS ON LOGICAL DISK
|
||||
; HL' - CYLINDERS ON PHISICAL DISK
|
||||
; DE' - HEADS ON PHISICAL DISK
|
||||
@ -515,6 +516,7 @@ IOCTL_RD:
|
||||
XOR A
|
||||
LD L,A
|
||||
LD H,L
|
||||
LD C,A ;[ ] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD A,%10100000
|
||||
RET
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
810
|
||||
825
|
||||
@ -70,6 +70,11 @@ cmd_dir:
|
||||
call MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
ld c,Dss.WaitKey
|
||||
rst ToDSS
|
||||
dec d
|
||||
jr nz,.skip_esc
|
||||
xor a
|
||||
ld (.key_p),a ; ®â¬¥ï¥¬ ESC
|
||||
.skip_esc:
|
||||
ld a,32-1
|
||||
.skip_wait:
|
||||
PUSH AF
|
||||
@ -135,9 +140,9 @@ cmd_dir:
|
||||
.next: ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
ld c,Dss.F_Next ; ¯®¨áª á«¥¤.
|
||||
RST ToDSS
|
||||
jr nc,.loop ; § ¤ ¢ 横«, ¥á«¨ ¥ ª®¥æ ᯨáª
|
||||
pop af ; «¨è¥¥
|
||||
|
||||
jp nc,.loop ; § ¤ ¢ 横«, ¥á«¨ ¥ ª®¥æ ᯨáª
|
||||
;
|
||||
pop af ; ¡ « á á⥪
|
||||
; „¥áïâ¨çë© ¢ë¢®¤
|
||||
.print: ld hl,(D88DC)
|
||||
ld ix,PRM1 ; ¡ãä¥à
|
||||
|
||||
@ -1 +1 @@
|
||||
289
|
||||
295
|
||||
@ -1 +1 @@
|
||||
Subproject commit b9ca4f484d074cc80c221ad37a2a40e7ee670a16
|
||||
Subproject commit f112b1359045d7fe7aa47f843011fddc5e03eba2
|
||||
Loading…
Reference in New Issue
Block a user