mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
...
This commit is contained in:
parent
8a1abd44ab
commit
615d9cb2e2
@ -547,7 +547,7 @@ ADD_DE2 DJNZ ADD_DE1
|
||||
RET
|
||||
|
||||
;-----------------
|
||||
|
||||
;!TODO сЄЅЋ ть этЎ Ќ ЊрЎс ЌЈ ЈЋЈ ЈЊЋюЄ ЌЈ уЈЂЅрс ЋьыЌЈ. ЏЎЂтЎряются Ђ ЄЎсЅ Ј Ѕщё ЃЄЅ-тЎ
|
||||
; HL - CLUSTER
|
||||
; DE - (CLUSTER)
|
||||
R_F_FAT: PUSH HL
|
||||
|
||||
101
DSS/DOS_FM.ASM
101
DSS/DOS_FM.ASM
@ -174,12 +174,12 @@ BLOKRD0 POP BC
|
||||
;HL:DE - FP (in sectors)
|
||||
; B - Amount sectors
|
||||
BLOK_RD: PUSH BC
|
||||
LD (READMEM),IX
|
||||
LD (READ.MEM),IX
|
||||
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
|
||||
LD C,A
|
||||
LD B,0
|
||||
LD B,0 ;!FIXIT
|
||||
;HL:DE / BC => DE:IX HL-OSTATOK
|
||||
CALL DIV_for_SPC ;!FIXIT § ¬¥¨âì ¢ë§®¢ HLDE/BC HLDE/C
|
||||
CALL DIV_for_SPC
|
||||
;!FIXIT ¤ «¥¥ § â®çª â®, çâ® ¢ DE ¢á¥£¤ 0 - à §¤¥« ¥ ¡®«ìè¥ 2Gb
|
||||
LD B,XH
|
||||
LD C,XL
|
||||
@ -272,19 +272,19 @@ BLOKRD3 LD A,B ; /
|
||||
ADD IX,DE
|
||||
JR NC,BLOKRD4
|
||||
INC HL
|
||||
BLOKRD4 LD DE,(READMEM)
|
||||
BLOKRD4 LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Read
|
||||
RST ToDSS.DRV
|
||||
JP C,BLOKRD0
|
||||
POP BC
|
||||
LD HL,(READMEM)
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(BootSector.B_P_S)
|
||||
BLOKRD5 ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,BLOKRD5
|
||||
LD (READMEM),HL
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
LD A,B
|
||||
OR A
|
||||
@ -309,19 +309,19 @@ BLOKRD7 EX DE,HL
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
CALL NSECTOR
|
||||
LD DE,(READMEM)
|
||||
LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Read
|
||||
RST ToDSS.DRV
|
||||
JP C,BLOKRD0
|
||||
POP BC
|
||||
LD HL,(READMEM)
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(BootSector.B_P_S)
|
||||
BLOKRD8 ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,BLOKRD8
|
||||
LD (READMEM),HL
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
JR BLOKRD6
|
||||
|
||||
@ -344,7 +344,7 @@ BLOKWR0 POP BC
|
||||
;HL:DE - FP (in sectors)
|
||||
; B - Amount sectors
|
||||
BLOK_WR PUSH BC
|
||||
LD (READMEM),IX
|
||||
LD (READ.MEM),IX
|
||||
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
|
||||
LD C,A
|
||||
LD B,0
|
||||
@ -457,19 +457,19 @@ BLOKWR3 LD A,B
|
||||
ADD IX,DE
|
||||
JR NC,BLOKWR4
|
||||
INC HL
|
||||
BLOKWR4 LD DE,(READMEM)
|
||||
BLOKWR4 LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
JP C,BLOKWR0
|
||||
POP BC
|
||||
LD HL,(READMEM)
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(BootSector.B_P_S)
|
||||
BLOKWR5 ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,BLOKWR5
|
||||
LD (READMEM),HL
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
LD A,B
|
||||
OR A
|
||||
@ -499,19 +499,19 @@ BLOKWR9 POP BC
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
CALL NSECTOR
|
||||
LD DE,(READMEM)
|
||||
LD DE,(READ.MEM)
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
LD B,C
|
||||
LD C,Dss.DRV.Write
|
||||
RST ToDSS.DRV
|
||||
JP C,BLOKWR0
|
||||
POP BC
|
||||
LD HL,(READMEM)
|
||||
LD HL,(READ.MEM)
|
||||
LD DE,(BootSector.B_P_S)
|
||||
BLOKWR8 ADD HL,DE
|
||||
DEC C
|
||||
JR NZ,BLOKWR8
|
||||
LD (READMEM),HL
|
||||
LD (READ.MEM),HL
|
||||
POP DE
|
||||
JR BLOKWR6
|
||||
|
||||
@ -521,7 +521,7 @@ BLOKWRA POP BC
|
||||
RET
|
||||
|
||||
TSTSIZE XOR A
|
||||
LD (READCOD),A
|
||||
LD (READ.COD),A
|
||||
LD L,(IY+32) ;FP LOW _sFM.F_POSITION
|
||||
LD H,(IY+33)
|
||||
ADD HL,DE
|
||||
@ -545,25 +545,24 @@ TSTSIZE XOR A
|
||||
SBC HL,DE ;VERY BIG
|
||||
EX DE,HL
|
||||
LD A,#FF
|
||||
LD (READCOD),A
|
||||
LD (READ.COD),A
|
||||
RET
|
||||
|
||||
; HL - ADDRESS
|
||||
; DE - SIZE
|
||||
; A - FM
|
||||
READ: LD (R_POINT),HL
|
||||
LD (S_POINT),HL
|
||||
LD (.S_POINT),HL
|
||||
CALL SET_FM
|
||||
RET C
|
||||
CALL TSTSIZE
|
||||
LD A,D
|
||||
OR E
|
||||
JP Z,NOREAD ;!FIXIT ¬®¦® ¯¥à¥¥á⨠¢ ç «® ¯à®æ¥¤ãàë
|
||||
JP Z,.NOREAD ;!FIXIT ¬®¦® ¯¥à¥¥á⨠¢ ç «® ¯à®æ¥¤ãàë
|
||||
PUSH DE
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
;
|
||||
JP C,RPERR1
|
||||
JP C,.ERR_1
|
||||
;<3B> áçñâ á¬¥é¥¨ï ¢ ᥪâ®à å
|
||||
; LD C,(IY+_sFM.F_POSITION)
|
||||
; LD E,(IY+_sFM.F_POSITION+1)
|
||||
@ -594,18 +593,18 @@ READ: LD (R_POINT),HL
|
||||
;
|
||||
;LD A,B
|
||||
OR C
|
||||
JP NZ,ROV1
|
||||
ROV4: POP BC
|
||||
JP NZ,.ROV1
|
||||
.ROV4: POP BC
|
||||
PUSH BC
|
||||
SRL B
|
||||
JR Z,ROV2
|
||||
LD (SECTORH),HL
|
||||
LD (SECTORL),DE
|
||||
JR Z,.ROV2
|
||||
LD (.SECTORH),HL
|
||||
LD (.SECTORL),DE
|
||||
LD IX,(R_POINT)
|
||||
CALL BLOK_RD
|
||||
JP C,RPERR1
|
||||
JP C,.ERR_1
|
||||
LD DE,(R_POINT)
|
||||
READMEM+1: LD HL,0 // LD HL,(READMEM)
|
||||
.MEM+1: LD HL,0 // LD HL,(READMEM)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD C,H
|
||||
@ -613,18 +612,18 @@ READMEM+1: LD HL,0 // LD HL,(READMEM)
|
||||
ADD HL,DE
|
||||
LD (R_POINT),HL
|
||||
SRL C
|
||||
SECTORL+1: LD HL,0 // LD HL,(SECTORL)
|
||||
.SECTORL+1: LD HL,0 // LD HL,(SECTORL)
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
SECTORH+1: LD HL,0 // LD HL,(SECTORH)
|
||||
.SECTORH+1: LD HL,0 // LD HL,(SECTORH)
|
||||
LD C,B
|
||||
ADC HL,BC
|
||||
ROV2: POP BC
|
||||
.ROV2: POP BC
|
||||
LD A,B
|
||||
AND #01
|
||||
LD B,A
|
||||
OR C
|
||||
JP Z,ROV6
|
||||
JP Z,.ROV6
|
||||
PUSH BC
|
||||
LD IX,BUFFER+#C000
|
||||
LD B,1
|
||||
@ -636,14 +635,14 @@ ROV2: POP BC
|
||||
POP BC
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
JP C,RPERR1
|
||||
JP C,.ERR_1
|
||||
LD HL,BUFFER
|
||||
LD DE,(R_POINT)
|
||||
POP BC
|
||||
LDIR
|
||||
LD (R_POINT),DE
|
||||
ROV6:
|
||||
S_POINT+1: LD HL,0
|
||||
.ROV6:
|
||||
.S_POINT+1: LD HL,0
|
||||
LD DE,(R_POINT)
|
||||
EX DE,HL
|
||||
AND A
|
||||
@ -655,12 +654,11 @@ S_POINT+1: LD HL,0
|
||||
LD HL,0
|
||||
CALL MOVE_FP.F_current
|
||||
POP DE
|
||||
NOREAD:
|
||||
READCOD+1: LD A,0
|
||||
.NOREAD:
|
||||
.COD+1: LD A,0
|
||||
OR A
|
||||
RET
|
||||
|
||||
ROV1: PUSH BC
|
||||
.ROV1: PUSH BC
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD IX,BUFFER+#C000
|
||||
@ -674,7 +672,7 @@ ROV1: PUSH BC
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
POP HL
|
||||
JP C,RPERR3
|
||||
JP C,.ERR_3
|
||||
LD BC,1
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
@ -691,23 +689,22 @@ ROV1: PUSH BC
|
||||
POP HL
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JR NC,ROV3
|
||||
JR NC,.ROV3
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD HL,0
|
||||
ROV3: PUSH HL
|
||||
.ROV3: PUSH HL
|
||||
LD HL,BUFFER
|
||||
ADD HL,DE
|
||||
LD DE,(R_POINT)
|
||||
LDIR
|
||||
LD (R_POINT),DE
|
||||
EXX
|
||||
JP ROV4
|
||||
|
||||
RPERR3: POP HL
|
||||
RPERR2: POP HL
|
||||
RPERR1: POP BC
|
||||
JP .ROV4
|
||||
.ERR_3: POP HL
|
||||
.ERR_2: POP HL
|
||||
.ERR_1: POP BC
|
||||
SCF
|
||||
RET
|
||||
|
||||
@ -726,7 +723,7 @@ RD_ONLY: POP DE
|
||||
; DE - SIZE
|
||||
; A - FM
|
||||
WRITE: LD (R_POINT),HL
|
||||
LD (S_POINT),HL
|
||||
LD (READ.S_POINT),HL
|
||||
PUSH DE
|
||||
CALL SET_FM
|
||||
JP C,PWERR1
|
||||
@ -818,7 +815,7 @@ WOV2: POP BC
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
RET C
|
||||
WOV6: LD DE,(S_POINT)
|
||||
WOV6: LD DE,(READ.S_POINT)
|
||||
LD HL,(R_POINT)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
@ -922,8 +919,8 @@ WOV3: PUSH HL
|
||||
; ADC HL,DE
|
||||
; RET
|
||||
/////////////////////////////////////
|
||||
; HL - CLUSTER
|
||||
; HL:IX - SECTOR
|
||||
; in: HL - CLUSTER
|
||||
; out: HL:IX - SECTOR
|
||||
NSECTOR: DEC HL
|
||||
DEC HL
|
||||
LD DE,0
|
||||
|
||||
@ -289,27 +289,39 @@ RD_BPB: LD C,SLOT3
|
||||
LD (FatBuffer.DIR_S_S),A
|
||||
ADD HL,BC ; Start DATA area
|
||||
LD (FatBuffer.DAT_FRM),HL
|
||||
;LD HL,0
|
||||
LD H,B ; âãâ ¢ B ®«ì ¤®«¦¥ ¡ëâì
|
||||
LD L,B
|
||||
LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sector
|
||||
LD B,(IY+_sBOOT_SEC.B_P_S+1)
|
||||
LD A,(BootSector.S_P_C)
|
||||
|
||||
;!TODO ¥ ¨á¯®«ì§ãîâáï § ç¥¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ï¥¬ë¥ ¢ FatBuffer
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
IF COMPILE_UNUSED_CODE
|
||||
;!TODO ¥ ¨á¯®«ì§ãîâáï § ç¥¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ï¥¬ë¥ ¢ FatBuffer
|
||||
;NEXTAD3
|
||||
.loop3: ADD HL,BC ; calc. cluster size
|
||||
DEC A
|
||||
JR NZ,.loop3
|
||||
;LD HL,0
|
||||
|
||||
;LD H,B ; âãâ ¢ B ®«ì ¤®«¦¥ ¡ëâì
|
||||
;LD L,B
|
||||
;LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sector
|
||||
;LD B,(IY+_sBOOT_SEC.B_P_S+1)
|
||||
LD L,(IY+_sBOOT_SEC.B_P_S) ; Size sector
|
||||
LD H,(IY+_sBOOT_SEC.B_P_S+1)
|
||||
LD A,(BootSector.S_P_C)
|
||||
|
||||
;NEXTAD3
|
||||
; .loop3: ADD HL,BC ; calc. cluster size
|
||||
; DEC A
|
||||
; JR NZ,.loop3
|
||||
;!TODO ¯à®¢¥à¨âì ¯à ¢¨«ì® «¨ áç¨â ¥â
|
||||
XOR 1 ; calc. cluster size
|
||||
JR Z,.loop3.end
|
||||
RRA
|
||||
.loop3: ADD HL,HL
|
||||
RRCA
|
||||
JP NC,.loop3
|
||||
.loop3.end:
|
||||
;
|
||||
|
||||
LD (FatBuffer.CLU_LEN),HL
|
||||
EX DE,HL
|
||||
LD HL,#3FFF ;!TODO FATcacheSize
|
||||
XOR A
|
||||
;NEXTAD4
|
||||
;XOR A
|
||||
; A = 0
|
||||
;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤ ¯® ¤®¡¨âáï
|
||||
.loop4: INC A
|
||||
JP Z,DOS_X_Error.UnknownBPB
|
||||
SBC HL,DE
|
||||
@ -346,6 +358,11 @@ RD_BPB: LD C,SLOT3
|
||||
.BPB_FAT:
|
||||
LD (FatBuffer.FAT_TYP),A
|
||||
LD (FatBuffer.ENDCLUS),HL
|
||||
|
||||
;!TODO ¥ ¨á¯®«ì§ãîâáï § ç¥¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ï¥¬ë¥ ¢ FatBuffer
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
IF COMPILE_UNUSED_CODE
|
||||
|
||||
LD HL,0
|
||||
LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
|
||||
LD B,(IY+_sBOOT_SEC.S_P_T+1)
|
||||
@ -355,6 +372,8 @@ RD_BPB: LD C,SLOT3
|
||||
DEC A
|
||||
JR NZ,.BPB_L1
|
||||
LD (FatBuffer.S_X_H),HL
|
||||
ENDIF
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LD DE,(FatBuffer.DAT_FRM)
|
||||
; LD E,(IY+#1C) ;Hidden sec
|
||||
|
||||
@ -50,8 +50,8 @@ INC_FA2 CALL R_F_FAT
|
||||
|
||||
;R01
|
||||
|
||||
; HL - CLUSTER
|
||||
; DE - (CLUSTER)
|
||||
; IN: HL - CLUSTER
|
||||
; OUT: DE - (CLUSTER)
|
||||
;!FIXIT ¤ ŤĽĽ § âŽçŞ âŽ, ç⎠˘ DE ˘áĽŁ¤ 0 - ŕ §¤ĽŤ Ľ ĄŽŤěčĽ 2Gb
|
||||
R_F_FAT:
|
||||
EX DE,HL
|
||||
@ -85,8 +85,13 @@ R_F_F16:
|
||||
;
|
||||
AND #0F ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
||||
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
|
||||
;!TEST
|
||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||
CP C
|
||||
//LD C,A
|
||||
//LD A,(FATCASH.Block)
|
||||
//CP C
|
||||
;
|
||||
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
|
||||
LD DE,FAT
|
||||
ADD HL,DE
|
||||
|
||||
@ -1 +1 @@
|
||||
275
|
||||
280
|
||||
@ -1 +1 @@
|
||||
Subproject commit cf19a287a2cfe1946de5c1d50a255c43ae4fc390
|
||||
Subproject commit b593cb606636c961e49597b9b1e5b6ee72d191c9
|
||||
Loading…
Reference in New Issue
Block a user