Estex-DSS/DSS/API/diskINF.asm
Anatoliy Belyanskiy 0312779217 Preparing for FAT32
2024-03-12 03:51:04 +10:00

156 lines
2.7 KiB
NASM
Raw Blame History

;/////////////////////////////////////////////////////////////////////
; [ ] ­®¢ ï ¯®¤äã­ªæ¨ï á ¡¨â®¬ 7 ¢ ॣ. €
; ‚®§¢à é ¥â ¨­ä®à¬ æ¨î ®¡ ®¡é¥¬ ¨ ᢮¡®¤­®¬ ¯à®áâà ­á⢥ ¤¨áª®¢®£®
; ãáâனá⢠.
;
; ¢å®¤: A - ­®¬¥à ¤¨áª  (0=A,1=B .. 25=Z. #FF-⥪ã騩)
; <09>ਠA bit7 = 1:
; HL - ¡ãä¥à (256 ¡ ©â®¢) ¤«ï à áè¨à¥­­ëå ¤ ­­ëå:
; B != 0 - áç¨â âì ᢮¡®¤­®¥ ¬¥áâ®
; ;
; à §¬¥à ¯®«ï - 1 ¡ ©â
; ” ©«®¢ ï á¨á⥬ 
; ;
; à §¬¥à ¯®«ï - 1 ¡ ©â
; ‘¥à¨©­ë© ­®¬¥à ¤¨áª 
; ;
; à §¬¥à ¯®«ï - 1 ¡ ©â
; Œ¥âª  ¤¨áª 
; ;
; à §¬¥à ¯®«ï - 1 ¡ ©â
; 䨧¨ç¥áª¨© ­®¬¥à ¤¨áª , ­®¬¥à à §¤¥« 
; ;
; à §¬¥à ¯®«ï - 1 ¡ ©â
; § à¥§¥à¢¨à®¢ ­®
; ;
; A and #7F - ­®¬¥à ¤¨áª 
;
; ¢ë室: A - à §¬¥à ª« áâ¥à  ¢ ᥪâ®à å, ¥á«¨ CF=0
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
; DE - ᢮¡®¤­ëå ª« áâ¥à®¢
; BC - à §¬¥à ᥪâ®à  ¢ ¡ ©â å
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
DISKINF:; [ ] 22/11/23 ¯®¤äã­ªæ¨ï á ¤®¯.¨­ä®©
LD C,B
LD B,1
;
CP #80
JR C,.CustomDisk
CP #FF
JR Z,.CurrentDisk
; more info
LD B,C
AND %0111'1111
PUSH HL
PUSH AF
CALL .CustomDisk
POP IX
JR C,.error
;
EX (SP),HL
PUSH DE
PUSH AF
PUSH BC
;;;;
;
EX DE,HL
LD HL,CORE_BUFFERS.BootSector.ID_FAT
LD A,8 ;!HARDCODE _sBOOT_SECTOR_PARAMS.ID_FAT.length
CALL .mCOPY_LOOP
;
LD HL,CORE_BUFFERS.BootSector.BPB_SERIAL_NUMBER
LD A,4 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_SERIAL_NUMBER
CALL .mCOPY_LOOP
;
LD HL,CORE_BUFFERS.BootSector.BPB_LABEL
LD A,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL
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
LD (DE),A
;;;;
POP BC
POP AF
POP DE
.error: POP HL
RET
;
;CP #FF ; !FIXIT WorkDirectory
;!TEST Current Dir
;JR Z,CURRDS ;R06
.CurrentDisk:
LD A,(CurrentPath)
SUB 'A'
LD HL,FatBuffer.DRIVE
CP (HL)
JR Z,.CheckFreeSpace
;
.CustomDisk:
PUSH BC
CALL CHNDISK ;R06
POP BC
RET C
;
.CheckFreeSpace:
XOR A
OR B
CALL NZ,.CURRDS
;
;.FRESP2:
LD D,B
LD E,C
LD HL,(FAT_Max_Cluster_L)
DEC HL
LD BC,(CORE_BUFFERS.BootSector.B_P_S)
LD A,(CORE_BUFFERS.BootSector.S_P_C)
AND A
RET
;
.CURRDS:
LD HL,2
LD BC,0
.FRESP: PUSH BC
CALL READ_FROM_FAT
POP BC
CP DSS_Error.sys.DISK_FULL
RET Z
LD A,E
OR D
JR NZ,.skip
INC BC
.skip: INC HL
JP .FRESP
;
; [ ] 22/11/23 ¯®¤äã­ªæ¨ï á ¤®¯.¨­ä®©
.mCOPY_LOOP:
LD C,A
LD B,0
LD (DE),A
INC DE
LDIR
RET
;
;