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