FIXED BUGS

This commit is contained in:
Anatoliy Belyanskiy 2023-07-12 04:04:37 +10:00
parent d8e13bc4b5
commit 1b8bd30582
15 changed files with 213 additions and 218 deletions

View File

@ -1,12 +1,23 @@
;ˆ§¬¥­¥­¨ï ¯®á«¥ ¢¥àᨨ 1.70 !TODO
‚ ¦­®¥: ‚ ¦­®¥:
‘।­¥¥: ‘।­¥¥:
[ ] ¯¥à¥¤ à¥áª ­®¬ ¤à ©¢®¢ ¯à®¢¥àïâì ®âªàëâë¥ åí­¤«ë ¨ ¥á«¨ ¡ãª¢  ¤¨áª  ¬¥­ï¥âáï, â® ¬¥­ïâì ¤à ©¢ ¢ åí­¤«¥
[ ] ­ ç âì à ¡®â âì á äã­ªæ¨ï¬¨ REMOVABLE ¨ MEDIA CHECK rst #18. ‚®§¢à é âì §­ ç¥­¨¥ #FF, ¥á«¨ ¯®à冷ª ¡ãª¢ ¨§¬¥­¨«áï
‚®®¡é¥ ­¥ ¢ ¦­®¥: ‚®®¡é¥ ­¥ ¢ ¦­®¥:
¨á¯à ¢¨âì ¢ë室 ¨§ ä㭪樨 #41 ¯à¨ ¢®§¬®¦­®¬ 㢥«¨ç¥­¨¨ ­®¬¥à  â áª¨ ­  1 ¯à¨ 255 [ ] ¨á¯à ¢¨âì ¢ë室 ¨§ ä㭪樨 #41 ¯à¨ ¢®§¬®¦­®¬ 㢥«¨ç¥­¨¨ ­®¬¥à  â áª¨ ­  1 ¯à¨ 255
-------------------------------
; TEST DSS 1.70.2
ˆ§¬¥­¥­¨ï ¯®á«¥ ¢¥àᨨ 1.70
[+] ¯à¨ ç⥭¨¨/§ ¯¨á¨ ä ©«  ­¥ ¯à®¨á室¨â ¨§¡ëâ®ç­®¥ ¯¥à¥ç¨â뢠­¨¥ ª« áâ¥à®¢ ®â ­ ç «  ä ©« 
[+] ¯¥à¥ç¨â뢠­¨¥ BPB ⥯¥àì ¤¥« ¥âáï ­¥ ­  ª ¦¤ë© ç¨å,   ª®£¤  ­ ¤® (¨ ¡ £  ¯à¨ § £à㧪¥ á ¤¨áª  "B:" ­¥â :-P )
[+] ¨§¬¥­¥­  à ¡®â  á RAM DISK, ⥯¥àì ®­ ¬®¦¥â ¡ëâì § £àã§®ç­ë¬
[+] ¯¥à¥å®¤ ­  ¤à㣮© ¤¨áª ¯à®¨á室¨â ¡¥§ ¡ £  á ¤¨à¥ªâ®à¨¥© ®â áâ à®£® ¤¨áª 
[+] ¨á¯à ¢«¥­ë ¡ £¨ á ®¡à ¡®âª®© ¡ãä¥à®¢ ª®¬ ­¤­®© áâப¨
[+] ¨á¯à ¢«¥­ë ¡ £¨ ¢ äã­ªæ¨ïå: WINCOPY, WINREST, SCROLL, SETVMOD, SELPAGE
[+] ¬¥«ª¨¥ ¨ ­¥ ®ç¥­ì ®¯â¨¬¨§ æ¨¨
;ˆ§¬¥­¥­¨ï ¯®á«¥ ¢¥àᨨ 1.60 ;ˆ§¬¥­¥­¨ï ¯®á«¥ ¢¥àᨨ 1.60
10.02.2003 - „®¡ ¢«¥­  ¢¨§ã «¨§ æ¨ï ªãàá®à  ¢ ä㭪樨 ECHOKEY. 10.02.2003 - „®¡ ¢«¥­  ¢¨§ã «¨§ æ¨ï ªãàá®à  ¢ ä㭪樨 ECHOKEY.

View File

@ -137,7 +137,7 @@ FIHND1 LD (HL),C
JP OPEN ;R08 JP OPEN ;R08
; INPUT: HL - "filename.ext",#00 without simbols * ? ; INPUT: HL - "filename.ext",#00 without simbols * ?
DELETE LD DE,MASKARE DELETE: LD DE,MASKARE
CALL MASK CALL MASK
RET C RET C
LD HL,MASKARE LD HL,MASKARE
@ -642,8 +642,7 @@ GETWORD:
SUB #20 SUB #20
.next: SUB 'A' .next: SUB 'A'
PUSH HL PUSH HL
;!TEST CHNDISK OPENDSK CALL OPENDSK
CALL OPENDSK
; ;
POP HL POP HL
JP NC,GETWORD JP NC,GETWORD
@ -655,8 +654,8 @@ TMPNAME: DB ' ',#00 ; 12
; RestoreDIR: ; RestoreDIR:
CHNDISK: CHNDISK:
;!TEST ;!TEST
CALL OPENDSK ;CALL OPENDSK
;CALL OPENDSK.force CALL OPENDSK.force
; ;
;????? R10 ;????? R10
RET C RET C
@ -682,7 +681,7 @@ CHNDISK:
; ;
;????? R10 ;????? R10
OPENDSK: OPENDSK:
;!TEST ;!TEST DRV.Open ŽĄĺŽ¤
LD C,A LD C,A
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE)
CP C CP C
@ -770,11 +769,8 @@ SUBDIR3:
; FIND "MASKAREA" IN DIRECTORY ; FIND "MASKAREA" IN DIRECTORY
FINDDIR: FINDDIR:
;!TEST SET_PAGE_X DIRPAGE
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF PUSH AF
LD IX,DIR LD IX,DIR
.F_01: LD A,(IX+00) .F_01: LD A,(IX+00)
@ -918,11 +914,9 @@ LOADDIR:
LD IX,0 LD IX,0
LD B,A LD B,A
CALL MOVE_FP CALL MOVE_FP
;!TEST
;LD A,DIRPAGE SET_PAGE_X DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF PUSH AF
;!TEST no ldir ;!TEST no ldir
;LD HL,#C000 ;LD HL,#C000
@ -970,11 +964,9 @@ SAVEDIR XOR A
LD IX,0 LD IX,0
LD B,0 LD B,0
CALL MOVE_FP CALL MOVE_FP
;!TEST
;LD A,DIRPAGE SET_PAGE_X DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF PUSH AF
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE)
LD (IY+_sFM.DRIVE),A LD (IY+_sFM.DRIVE),A
@ -1054,73 +1046,19 @@ BANKTBL: BLOCK USING_MEMPAGES+1,#FF
; CALL BANK ; CALL BANK
; EX DE,HL ; EX DE,HL
; LD DE,HANDTA ; LD DE,HANDTA
;
; DUP 32
; LDI ; LDI
; LDI ; EDUP
; LDI ;
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; EXX ; EXX
; OUT (SLOT3),A ; OUT (SLOT3),A
; LD HL,HANDTA ; LD HL,HANDTA
;
; DUP 32
; LDI ; LDI
; LDI ; EDUP
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; LDI
; EXX ; EXX
; POP BC ; POP BC
; DEC BC ; DEC BC
@ -1130,8 +1068,8 @@ BANKTBL: BLOCK USING_MEMPAGES+1,#FF
; PUSH BC ; PUSH BC
; JP G_HAND4 ; JP G_HAND4
;HANDTA DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;HANDTA BLOCK 32,0
; DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
MASKARE: BLOCK 32,0 ;!HARDCODE ŻŽçĽŹă 32? MASKARE: BLOCK 32,0 ;!HARDCODE ŻŽçĽŹă 32?
; HL - MASK "file*.t??" ; HL - MASK "file*.t??"

View File

@ -108,57 +108,50 @@ MOVE_FP CALL SET_FM
LD A,DSS_Error.sys.INVALID_FUNCTION LD A,DSS_Error.sys.INVALID_FUNCTION
SCF SCF
RET RET
;from Start File ;from Start File
.F_start: .F_start:
; B=0 ; B=0
LD C,B LD C,B
LD D,B LD D,B
LD E,B LD E,B
JR MOVE_F1 JP .DO
;from End File ;from End File
.B_end: LD C,(IY+28) .B_end: LD C,(IY+_sFM.F_SIZE)
LD B,(IY+29) LD B,(IY+_sFM.F_SIZE+1)
LD E,(IY+30) LD E,(IY+_sFM.F_SIZE+2)
LD D,(IY+31) LD D,(IY+_sFM.F_SIZE+3)
JR MOVE_F1 JP .DO
;from Current Position ;from Current Position
.F_current: .F_current:
LD C,(IY+32) LD C,(IY+_sFM.F_POSITION)
LD B,(IY+33) LD B,(IY+_sFM.F_POSITION+1)
LD E,(IY+34) LD E,(IY+_sFM.F_POSITION+2)
LD D,(IY+35) LD D,(IY+_sFM.F_POSITION+3)
MOVE_F1 ADD IX,BC .DO: ADD IX,BC
ADC HL,DE ADC HL,DE
LD D,XH LD D,XH
LD E,XL LD E,XL
LD (IY+32),E LD (IY+_sFM.F_POSITION),E
LD (IY+33),D LD (IY+_sFM.F_POSITION+1),D
LD (IY+34),L LD (IY+_sFM.F_POSITION+2),L
LD (IY+35),H LD (IY+_sFM.F_POSITION+3),H
XOR A XOR A
;!TEST SAVE CLUSTER AFTER READ
;LD (IY+_sFM.RESERVED_L),A
;LD (IY+_sFM.RESERVED_L+1),A
;
RET RET
;FP COMPARE ;FP COMPARE
; CY - FILE POINTER > SIZE ; CY - FILE POINTER > SIZE
; NC - FILE POINTER < SIZE ; NC - FILE POINTER < SIZE
MOVE_CP:
MOVE_CP LD L,(IY+28) LD L,(IY+_sFM.F_SIZE)
LD H,(IY+29) LD H,(IY+_sFM.F_SIZE+1)
LD E,(IY+32) LD E,(IY+_sFM.F_POSITION)
LD D,(IY+33) LD D,(IY+_sFM.F_POSITION+1)
AND A AND A
SBC HL,DE SBC HL,DE
LD L,(IY+30) LD L,(IY+_sFM.F_SIZE+2)
LD H,(IY+31) LD H,(IY+_sFM.F_SIZE+3)
LD E,(IY+34) LD E,(IY+_sFM.F_POSITION+2)
LD D,(IY+35) LD D,(IY+_sFM.F_POSITION+3)
SBC HL,DE SBC HL,DE
RET RET
@ -204,8 +197,8 @@ BLOK_RD: PUSH BC
.testFunc: .testFunc:
;!TEST SAVE CLUSTER AFTER READ ;!TEST SAVE CLUSTER AFTER READ
LD E,(IY+_sFM.RESERVED_L) LD E,(IY+_sFM.KnownCluster_L)
LD D,(IY+_sFM.RESERVED_H) LD D,(IY+_sFM.KnownCluster_H)
LD A,D LD A,D
OR E OR E
JR Z,BLOKRD2 JR Z,BLOKRD2
@ -213,8 +206,8 @@ BLOK_RD: PUSH BC
PUSH DE PUSH DE
PUSH HL PUSH HL
PUSH BC PUSH BC
LD E,(IY+_sFM.RESERVED_CL) LD E,(IY+_sFM.KnownOffset_L)
LD D,(IY+_sFM.RESERVED_CH) LD D,(IY+_sFM.KnownOffset_H)
LD A,D LD A,D
OR E OR E
JR Z,.noOptimization_1 JR Z,.noOptimization_1
@ -247,20 +240,17 @@ BLOKRD1:
JR C,ECL2 ;R01 JR C,ECL2 ;R01
EX DE,HL EX DE,HL
DEC BC DEC BC
BLOKRD2: BLOKRD2:
LD A,B ; - ᬥ饭¨¥ ¢­ãâਠ䠩«  ¢ ª« áâ¥à å LD A,B ; - ᬥ饭¨¥ ¢­ãâਠ䠩«  ¢ ª« áâ¥à å
OR C OR C
JR NZ,BLOKRD1 JR NZ,BLOKRD1
;!TEST SAVE CLUSTER AFTER READ ;!TEST SAVE CLUSTER AFTER READ
LD (IY+_sFM.RESERVED_L),L LD (IY+_sFM.KnownCluster_L),L
LD (IY+_sFM.RESERVED_H),H LD (IY+_sFM.KnownCluster_H),H
POP BC POP BC
LD (IY+_sFM.RESERVED_CL),C LD (IY+_sFM.KnownOffset_L),C
LD (IY+_sFM.RESERVED_CH),B LD (IY+_sFM.KnownOffset_H),B
; ;
POP DE POP DE
@ -340,7 +330,11 @@ ECL1 AND A
;-------------------- ;--------------------
BLOKWRC POP BC BLOKWRC:
POP BC
;!TEST SAVE CLUSTER AFTER WRITE
POP BC
;
BLOKWR0 POP BC BLOKWR0 POP BC
POP DE POP DE
SCF SCF
@ -349,33 +343,77 @@ BLOKWR0 POP BC
;WRITE SECTORS OF FILE ;WRITE SECTORS OF FILE
;HL:DE - FP (in sectors) ;HL:DE - FP (in sectors)
; B - Amount sectors ; B - Amount sectors
BLOK_WR PUSH BC BLOK_WR PUSH BC
LD (READMEM),IX LD (READMEM),IX
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
LD C,A LD C,A
LD B,0 LD B,0
;HL:DE / BC => DE:IX HL-OSTATOK
CALL DIV32 CALL DIV32
LD B,XH LD B,XH
LD C,XL LD C,XL
PUSH HL ;RESIDUE PUSH HL ;RESIDUE
LD L,(IY+26) ;START CLUSTER LD L,(IY+_sFM.ST_CLUSTER) ;START CLUSTER
LD H,(IY+27) LD H,(IY+_sFM.ST_CLUSTER+1)
LD A,H LD A,H
OR L OR L
JR NZ,BLOKWR2 ;!TEST SAVE CLUSTER AFTER WRITE
;JR NZ,BLOKWR2
PUSH BC
JR NZ,.testFunc
;
PUSH BC PUSH BC
CALL G_CLUST CALL G_CLUST
JR C,BLOKWRC JR C,BLOKWRC
LD (IY+26),L LD (IY+_sFM.ST_CLUSTER),L
LD (IY+27),H LD (IY+_sFM.ST_CLUSTER+1),H
LD DE,(FatBuffer.ENDCLUS) LD DE,(FatBuffer.ENDCLUS)
CALL W_T_FAT CALL W_T_FAT
PUSH HL PUSH HL
CALL WR_FAT CALL WR_FAT
POP HL POP HL
POP BC POP BC
JR BLOKWR2 JP BLOKWR2
.testFunc:
;!TEST SAVE CLUSTER AFTER WRITE
LD E,(IY+_sFM.KnownCluster_L)
LD D,(IY+_sFM.KnownCluster_H)
LD A,D
OR E
JR Z,BLOKWR2
PUSH DE
PUSH HL
PUSH BC
LD E,(IY+_sFM.KnownOffset_L)
LD D,(IY+_sFM.KnownOffset_H)
LD A,D
OR E
JR Z,.noOptimization_1
POP HL
AND A
SBC HL,DE
JR C,.noOptimization_2
LD C,L
LD B,H
POP HL
POP DE
EX DE,HL
JP BLOKWR2
;
.noOptimization_1:
POP BC
.noOptimization_2:
POP HL
POP DE
JP BLOKWR2
BLOKWR1 PUSH BC BLOKWR1 PUSH BC
CALL R_F_FAT CALL R_F_FAT
JR NC,BLOKWRB JR NC,BLOKWRB
@ -390,6 +428,15 @@ BLOKWRB POP BC
BLOKWR2 LD A,B BLOKWR2 LD A,B
OR C OR C
JR NZ,BLOKWR1 JR NZ,BLOKWR1
;!TEST SAVE CLUSTER AFTER WRITE
LD (IY+_sFM.KnownCluster_L),L
LD (IY+_sFM.KnownCluster_H),H
POP BC
LD (IY+_sFM.KnownOffset_L),C
LD (IY+_sFM.KnownOffset_H),B
;
POP DE POP DE
POP BC POP BC
LD A,(BootSector.S_P_C) LD A,(BootSector.S_P_C)
@ -513,8 +560,7 @@ READ: LD (R_POINT),HL
JP Z,NOREAD ;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë JP Z,NOREAD ;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë
PUSH DE PUSH DE
LD A,(IY+_sFM.DRIVE) LD A,(IY+_sFM.DRIVE)
;!TEST CHNDISK OPENDSK CALL OPENDSK
CALL OPENDSK
; ;
JP C,RPERR1 JP C,RPERR1
;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å
@ -584,7 +630,7 @@ ROV2: POP BC
LDIR LDIR
LD (R_POINT),DE LD (R_POINT),DE
ROV6: ROV6:
S_POINT+1: LD HL,0 // LD HL,(S_POINT) S_POINT+1: LD HL,0
LD DE,(R_POINT) LD DE,(R_POINT)
EX DE,HL EX DE,HL
AND A AND A
@ -597,7 +643,7 @@ S_POINT+1: LD HL,0 // LD HL,(S_POINT)
CALL MOVE_FP.F_current CALL MOVE_FP.F_current
POP DE POP DE
NOREAD: NOREAD:
READCOD+1: LD A,0 // LD A,(READCOD) READCOD+1: LD A,0
OR A OR A
RET RET
@ -666,7 +712,6 @@ RD_ONLY: POP DE
; HL - ADDRESS ; HL - ADDRESS
; DE - SIZE ; DE - SIZE
; A - FM ; A - FM
WRITE: LD (R_POINT),HL WRITE: LD (R_POINT),HL
LD (S_POINT),HL LD (S_POINT),HL
PUSH DE PUSH DE
@ -678,24 +723,22 @@ WRITE: LD (R_POINT),HL
SET 7,(IY+_sFM.ACCESS_MODE) SET 7,(IY+_sFM.ACCESS_MODE)
SET 5,(IY+_sFM.ATTRIBUT) SET 5,(IY+_sFM.ATTRIBUT)
LD A,(IY+_sFM.DRIVE) LD A,(IY+_sFM.DRIVE)
;!TEST CHNDISK OPENDSK CALL OPENDSK
CALL OPENDSK
;
JP C,PWERR1 JP C,PWERR1
LD C,(IY+32) LD C,(IY+_sFM.F_POSITION)
LD A,(IY+33) LD A,(IY+_sFM.F_POSITION+1)
LD E,A LD E,A
AND #01 AND #01
LD B,A LD B,A
LD D,(IY+34) LD D,(IY+_sFM.F_POSITION+2)
LD L,(IY+35) LD L,(IY+_sFM.F_POSITION+3)
LD H,0 LD H,0
OR A OR A
RR L RR L
RR D RR D
RR E RR E
; HL:DE FP (in sectors) ; HL:DE - FP (in sectors)
; BC FP residue (in bytes) ; BC - FP residue (in bytes)
LD A,B LD A,B
OR C OR C
JP NZ,WOV1 JP NZ,WOV1

View File

@ -134,7 +134,7 @@ CURRDS: LD HL,2
FRESP: PUSH BC FRESP: PUSH BC
CALL R_F_FAT CALL R_F_FAT
POP BC POP BC
CP 10 CP DSS_Error.sys.DISK_FULL
JR Z,FRESP2 JR Z,FRESP2
LD A,E LD A,E
@ -185,7 +185,7 @@ TESTDSK LD A,(FatBuffer.DRIVE)
RST ToDSS.DRV RST ToDSS.DRV
OR A OR A
RET Z RET Z
RD_BPB LD C,SLOT3 RD_BPB: LD C,SLOT3
IN B,(C) IN B,(C)
PUSH BC PUSH BC
@ -309,7 +309,7 @@ R_BPBL1
INC HL INC HL
INC DE INC DE
DJNZ R_BPBL1 DJNZ R_BPBL1
FID LD A,(HL) FID: LD A,(HL)
INC HL INC HL
CP ' ' CP ' '
JR Z,FID JR Z,FID
@ -322,7 +322,7 @@ FID LD A,(HL)
CP '2' ; FAT12 CP '2' ; FAT12
JP NZ,ERR_BPB JP NZ,ERR_BPB
LD HL,#0FFF LD HL,#0FFF
BPB_FAT BPB_FAT:
LD (FatBuffer.FAT_TYP),A LD (FatBuffer.FAT_TYP),A
LD (FatBuffer.ENDCLUS),HL LD (FatBuffer.ENDCLUS),HL
LD HL,0 LD HL,0
@ -415,7 +415,7 @@ ERR_BPB:
SCF SCF
RET RET
RDERR1: LD A,DSS_Error.sys.NOT_READY RDERR1: LD A,DSS_Error.sys.NOT_READY
SCF ;SCF
RET RET
; ;
@ -424,7 +424,7 @@ FatBuffer:
.READ_PG: DB #00 .READ_PG: DB #00
.BLOCK: DB #00 .BLOCK: DB #00
.DIR_CLU: DW #0000 .DIR_CLU: DW #0000
.DRIVE: DB #01 .DRIVE: DB #FF
.FAT_FRM: .FAT_FRM:
.FAT1_XX: DW #0000 ; MSD_FAT_SEC first sector FAT .FAT1_XX: DW #0000 ; MSD_FAT_SEC first sector FAT
.FAT2_XX: DW #0000 .FAT2_XX: DW #0000
@ -522,8 +522,8 @@ BACK_CUR_PATH:
SCANDRV: SCANDRV:
;!TEST ¢ DRV-MAIN ¬®£ãâ ¡ëâì ¯à®¡«¥¬ë á ¯à¥à뢠­¨ï¬¨ ;!TEST ¢ DRV-MAIN ¬®£ãâ ¡ëâì ¯à®¡«¥¬ë á ¯à¥à뢠­¨ï¬¨
;DI ;DI
LD A,Dss.DRV.RescanDRV LD A,Dss.DRV.RescanDRV
LD C,Dss.DRV.RescanDRV LD C,Dss.DRV.RescanDRV
RST ToDSS.DRV RST ToDSS.DRV
LD (LDRIVE),A LD (LDRIVE),A
;EI ;EI

View File

@ -224,12 +224,12 @@ DISPATCH:
LDRIVE DB #00 LDRIVE DB #00
INCLUDE 'disk_x.asm' INCLUDE 'dss/media_drivers/Shared.asm'
INCLUDE 'ide_drv0.asm' INCLUDE 'dss/media_drivers/ide.asm'
INCLUDE 'fdd_drv0.asm' INCLUDE 'dss/media_drivers/fdd.asm'
INCLUDE 'ram_drv1.asm' INCLUDE 'dss/media_drivers/ram_disk.asm'
DB 0 ; DB 0
ENDMODULE ENDMODULE
; OUTEND ; OUTEND

View File

@ -17,7 +17,7 @@ G_CLUST:
.num+1: LD HL,#0001 .num+1: LD HL,#0001
G_CLUS1: INC HL G_CLUS1: INC HL
CALL R_F_FAT CALL R_F_FAT
CP 10 CP DSS_Error.sys.DISK_FULL
SCF SCF
RET Z RET Z
LD A,D LD A,D
@ -53,12 +53,13 @@ INC_FA2 CALL R_F_FAT
; HL - CLUSTER ; HL - CLUSTER
; DE - (CLUSTER) ; DE - (CLUSTER)
;!FIXIT ¤ «¥¥ § â®çª  ­  â®, çâ® ¢ DE ¢á¥£¤  0 - à §¤¥« ­¥ ¡®«ìè¥ 2Gb ;!FIXIT ¤ «¥¥ § â®çª  ­  â®, çâ® ¢ DE ¢á¥£¤  0 - à §¤¥« ­¥ ¡®«ìè¥ 2Gb
R_F_FAT: EX DE,HL R_F_FAT:
EX DE,HL
LD HL,(MAX_CLU) LD HL,(MAX_CLU)
AND A AND A
SBC HL,DE SBC HL,DE
EX DE,HL EX DE,HL
LD A,10 LD A,DSS_Error.sys.DISK_FULL
RET C RET C
EXX EXX
@ -69,8 +70,9 @@ R_F_FAT: EX DE,HL
PUSH AF PUSH AF
LD A,(FatBuffer.FAT_TYP) LD A,(FatBuffer.FAT_TYP)
CP "2" CP "2"
JP Z,R_F_F12 JR Z,R_F_F12
R_F_F16 LD A,H R_F_F16:
LD A,H
LD B,A LD B,A
AND #0F AND #0F
LD H,A LD H,A
@ -187,7 +189,7 @@ R_F_F12 LD D,H
LD A,D LD A,D
AND #0F AND #0F
LD D,A LD D,A
JR R_F_F02 JP R_F_F02
R_F_F01 LD A,E R_F_F01 LD A,E
AND #F0 AND #F0
@ -217,7 +219,7 @@ W_T_FAT PUSH DE
SBC HL,DE SBC HL,DE
EX DE,HL EX DE,HL
POP DE POP DE
LD A,10 LD A,10 ;!HARDCODE error number
RET C RET C
EXX EXX
@ -230,7 +232,7 @@ W_T_FAT PUSH DE
LD (FATCASH.Update),A LD (FATCASH.Update),A
LD A,(FatBuffer.FAT_TYP) LD A,(FatBuffer.FAT_TYP)
CP "2" CP "2"
JP Z,W_T_F12 JR Z,W_T_F12
W_T_F16: W_T_F16:
PUSH DE PUSH DE
LD A,H LD A,H
@ -345,7 +347,7 @@ RE_FAT: PUSH HL
WR_FAT: EXX WR_FAT: EXX
SET_PAGE_X FATPAGE SET_PAGE_X FATPAGE
;
EXX EXX
PUSH AF PUSH AF
CALL WR_FAT_ CALL WR_FAT_

View File

@ -1,12 +1,13 @@
+ function WINCOPY & WINREST не запрещают прерывания перед вызовом BIOS (используется вывод стеком!). FIXED:
+ function WINCOPY & WINREST ­¥ § ¯à¥é îâ ¯à¥à뢠­¨ï ¯¥à¥¤ ¢ë§®¢®¬ BIOS (¨á¯®«ì§ã¥âáï ¢ë¢®¤ á⥪®¬!).
- при выводе на консоль длинного текста, экран не скролируется. Проверять на достижение 80 позиции! - ¯à¨ ¢ë¢®¤¥ ­  ª®­á®«ì ¤«¨­­®£® ⥪áâ , íªà ­ ­¥ áªà®«¨àã¥âáï. <20>஢¥àïâì ­  ¤®á⨦¥­¨¥ 80 ¯®§¨æ¨¨!
+ ошибка в функции SCROLL A=0. + ®è¨¡ª  ¢ ä㭪樨 SCROLL A=0.
+ ошибка при просмотре каталога в функциях установки атрибутов пропускаются системные файлы. п/п SEARCH MASK=#23 + ®è¨¡ª  ¯à¨ ¯à®á¬®âॠª â «®£  ¢ äã­ªæ¨ïå ãáâ ­®¢ª¨  âਡã⮢ ¯à®¯ã᪠îâáï á¨á⥬­ë¥ ä ©«ë. ¯/¯ SEARCH MASK=#23
- игнорирование ошибок при записи системных областей FAT/DIR, невозможность отработать ошибку write-protect, так как она теряется при попытке записать измененный каталог на диск. Но возникает ошибка file not found так как сразо после создания система открывает файл. - ¨£­®à¨à®¢ ­¨¥ ®è¨¡®ª ¯à¨ § ¯¨á¨ á¨á⥬­ëå ®¡« á⥩ FAT/DIR, ­¥¢®§¬®¦­®áâì ®âà ¡®â âì ®è¨¡ªã write-protect, â ª ª ª ®­  â¥àï¥âáï ¯à¨ ¯®¯ë⪥ § ¯¨á âì ¨§¬¥­¥­­ë© ª â «®£ ­  ¤¨áª. <20>® ¢®§­¨ª ¥â ®è¨¡ª  file not found â ª ª ª áà §ã ¯®á«¥ á®§¤ ­¨ï á¨á⥬  ®âªà뢠¥â ä ©«.
- ошибка разбора допустимого имени файла, если оно состоит из "." так как подрузомевается пробелы точка пробелы. - ®è¨¡ª  à §¡®à  ¤®¯ãá⨬®£® ¨¬¥­¨ ä ©« , ¥á«¨ ®­® á®á⮨⠨§ "." â ª ª ª ¯®¤àã§®¬¥¢ ¥âáï ¯à®¡¥«ë â®çª  ¯à®¡¥«ë.

View File

@ -1,6 +1,6 @@
; Disk Driver Specification ver. 2.00 ; Disk Driver Specification ver. 2.00
;[]===========================================================[] ;[]===========================================================[0]
;Procedure : Initialization ;Procedure : Initialization
; ;
;Function : Initialization device(s) ;Function : Initialization device(s)
@ -10,7 +10,7 @@
;Output : A = Amount drive support ;Output : A = Amount drive support
; HL = Size driver ; HL = Size driver
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[1]
;Procedure : Open ;Procedure : Open
; ;
;Function : Open disk ;Function : Open disk
@ -20,7 +20,7 @@
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[2]
;Procedure : Close ;Procedure : Close
; ;
;Function : Close disk ;Function : Close disk
@ -30,7 +30,7 @@
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[3]
;Procedure : Media check ;Procedure : Media check
; ;
;Function : Checking change line ;Function : Checking change line
@ -41,7 +41,7 @@
; A = 0FFh disk changed ; A = 0FFh disk changed
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[4]
;Procedure : Get BPB ;Procedure : Get BPB
; ;
;Function : Get Block Parameters BIOS ;Function : Get Block Parameters BIOS
@ -51,7 +51,7 @@
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[5]
;Procedure : Input ;Procedure : Input
; ;
;Function : Input from disk ;Function : Input from disk
@ -63,7 +63,7 @@
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[6]
;Procedure : Output ;Procedure : Output
; ;
;Function : Output to disk ;Function : Output to disk
@ -75,7 +75,7 @@
;Output : None ;Output : None
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[7]
;Procedure : Removable ;Procedure : Removable
; ;
;Function : Checking change line ;Function : Checking change line
@ -86,7 +86,7 @@
; A = FFh Nonremovable ; A = FFh Nonremovable
; ;
;[]===========================================================[] ;[]===========================================================[]
;[]===========================================================[] ;[]===========================================================[8]
;Procedure : Generic IOCTL ;Procedure : Generic IOCTL
; ;
;Function : Generic Input Output Control ;Function : Generic Input Output Control
@ -162,7 +162,7 @@ FDDRIVE:
AND A AND A
RET RET
.RESE: LD C,#51 .RESE: LD C,BIOS.DRV_RESET
RST ToBIOS RST ToBIOS
RET RET
@ -174,12 +174,11 @@ FDDRIVE:
RET RET
;DE - ADDRESS ;DE - ADDRESS
.GBPB: LD IX,0 .GBPB: LD IX,0
LD HL,0 LD HL,0
PUSH DE PUSH DE
PUSH AF PUSH AF
LD BC,#0155 LD BC,1*256 + BIOS.DRV_READ
RST ToBIOS RST ToBIOS
POP DE POP DE
POP HL POP HL
@ -189,14 +188,14 @@ FDDRIVE:
LD E,(HL) LD E,(HL)
PUSH DE PUSH DE
LD A,D LD A,D
LD C,#58 LD C,BIOS.DRV_GET_PAR
RST ToBIOS RST ToBIOS
LD A,H LD A,H
POP HL POP HL
PUSH HL PUSH HL
LD H,A LD H,A
POP AF POP AF
LD C,#59 LD C,BIOS.DRV_SET_PAR
RST ToBIOS RST ToBIOS
XOR A XOR A
RET RET
@ -204,12 +203,12 @@ FDDRIVE:
XOR A XOR A
RET RET
.READD: LD C,#55 .READD: LD C,BIOS.DRV_READ
RST ToBIOS RST ToBIOS
RET RET
.WRITED: .WRITED:
LD C,#56 LD C,BIOS.DRV_WRITE
RST ToBIOS RST ToBIOS
RET RET

View File

@ -21,26 +21,26 @@ RESERVED2 BLOCK 490,0
; ;
;File Manipulator (FM) ;File Manipulator (FM)
STRUCT _sFM ; 44 bytes STRUCT _sFM ; 44 bytes
.NAME: TEXT 8,{". "," "} ;+00 NAME .NAME: TEXT 8,{". "," "} ;+00 NAME
.EXT: TEXT 3,{" "," "} ;+08 EXT .EXT: TEXT 3,{" "," "} ;+08 EXT
.ATTRIBUT: BYTE #10 ;+11 ATTRIBUT .ATTRIBUT: BYTE #10 ;+11 ATTRIBUT
.RESERVED_L: BYTE 0 ;+12 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï ç⥭¨ï .KnownCluster_L: BYTE 0 ;+12 Œ« ¤è¨© ¡ ©â ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.RESERVED_H: BYTE 0 ;+13 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨ .KnownCluster_H: BYTE 0 ;+13 ‘â à訩 ¡ ©â ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.RESERVED_CL: BYTE 0 ;+14 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨ .KnownOffset_L: BYTE 0 ;+14 Œ« ¤è¨© ¡ ©â ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
.RESERVED_CH: BYTE 0 ;+15 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨ .KnownOffset_H: BYTE 0 ;+15 ‘â à訩 ¡ ©â ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
.RESERVED_X: BLOCK 6,0 ;+16 RESERVED .RESERVED_X: BLOCK 6,0 ;+16 RESERVED
.TIME: WORD #0000 ;+22 TIME .TIME: WORD #0000 ;+22 TIME
.DATE: WORD #0000 ;+24 DATE .DATE: WORD #0000 ;+24 DATE
.ST_CLUSTER: WORD #0000 ;+26 START CLUSTER .ST_CLUSTER: WORD #0000 ;+26 START CLUSTER
.F_SIZE: DWORD #0000 ;+28 SIZE FILE .F_SIZE: DWORD #0000 ;+28 SIZE FILE
.F_POSITION: DWORD #0000 ;+32 FILE POSITION (FP) .F_POSITION: DWORD #0000 ;+32 FILE POSITION (FP)
.DIR_CLUSTER: WORD #0000 ;+36 DIRECTORY CLUSTER .DIR_CLUSTER: WORD #0000 ;+36 DIRECTORY CLUSTER
.HANDLE: WORD #0000 ;+38 HANDLE NUMBER .HANDLE: WORD #0000 ;+38 HANDLE NUMBER
.DRIVE: BYTE #00 ;+40 DRIVE OR CURRENT .DRIVE: BYTE #00 ;+40 DRIVE OR CURRENT
.ACCESS_MODE: BYTE #00 ;+41 ACCESS MODE .ACCESS_MODE: BYTE #00 ;+41 ACCESS MODE
.TASK_NUM: BYTE #00 ;+42 TASK .TASK_NUM: BYTE #00 ;+42 TASK
.EMPTY: BYTE #00 ;+43 EMPTY .EMPTY: BYTE #00 ;+43 EMPTY
ENDS ENDS
; ;
; NAM EQU 0 ; LEN4 EQU 31 ; NAM EQU 0 ; LEN4 EQU 31

View File

@ -2,7 +2,7 @@
; DSS Version ; DSS Version
VERS EQU 01 ;Version Number (XX.) VERS EQU 01 ;Version Number (XX.)
MODF EQU 70 ;Modification (.xx) MODF EQU 70 ;Modification (.xx)
BUILD EQU 1 BUILD EQU 2
; ;
; Release Types ; Release Types

View File

@ -6,6 +6,7 @@
;--------------------------------------------------------------- ;---------------------------------------------------------------
;Rev Date Name Description ;Rev Date Name Description
;--------------------------------------------------------------- ;---------------------------------------------------------------
;R03 04-04-2023 BAO FIXED BUGS IN FN WINCOPY, WINREST, SCROLL, SETVMOD, SELPAGE
;R02 07-11-2002 DNS CORRECT FN. WINCOPY & WINREST, ADD "DI+EI" ;R02 07-11-2002 DNS CORRECT FN. WINCOPY & WINREST, ADD "DI+EI"
;R01 07-11-2002 DNS FIX BUG WITH SCROLLUP FN. (A=0) ;R01 07-11-2002 DNS FIX BUG WITH SCROLLUP FN. (A=0)
;--------------------------------------------------------------- ;---------------------------------------------------------------