From ec7682cf21d4fb3c2c7eb379aaa3a445969218ba Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Tue, 9 Jan 2024 00:06:14 +1000 Subject: [PATCH] -fixed 2 bugs with attributes and directories --- DSS/API/Create.asm | 9 +++++ DSS/API/Open.asm | 4 +-- DSS/DSS-MAIN.ASM | 7 +--- DSS/FS/FAT/FAT.asm | 24 +++++++------ DSS/FS/FAT/FAT12_16.asm | 78 ----------------------------------------- DSS/INTMOUSE.ASM | 46 ++++++++++++------------ DSS/Procedures.asm | 2 +- DSS/build.txt | 2 +- DSS/defines.inc | 1 - Shared_Includes | 2 +- 10 files changed, 52 insertions(+), 123 deletions(-) diff --git a/DSS/API/Create.asm b/DSS/API/Create.asm index d0aa86e..4e234b9 100644 --- a/DSS/API/Create.asm +++ b/DSS/API/Create.asm @@ -1,14 +1,19 @@ //////////////////////////////////////////////////////////////////////// ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 +; A - File attribute ; OUTPUT: A - FM //////////////////////////////////////////////////////////////////////// CREATE_FN: AND FAT_ATTR.NoVolID ; [x] 2/12/23 временный фикс для volume ID CREATE: ;!TEST Current Dir ;[x] 15/10/23 PUSH HL + LD C,A + PUSH BC CALL DIR_PATH_CHECK + POP BC POP HL RET C + LD A,C ; CALL .Prepare RET C @@ -20,9 +25,13 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 AND FAT_ATTR.NoVolID ; [x] 2/12/23 временный фикс для volume ID .NEW: ;!TEST Current Dir ;[x] 15/10/23 PUSH HL + LD C,A + PUSH BC CALL DIR_PATH_CHECK + POP BC POP HL RET C + LD A,C ; CALL .Prepare RET C diff --git a/DSS/API/Open.asm b/DSS/API/Open.asm index 3bcf788..cb344cd 100644 --- a/DSS/API/Open.asm +++ b/DSS/API/Open.asm @@ -15,11 +15,11 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23 CALL DIR_PATH_CHECK.forceCheck POP HL RET C - JR .start + ;JR .start ;!FIXIT сделать как в mkdir или rmdir? ;R008 ; ;OPEN: ; - LD (.TMP),A ; enter point from CREATE + ;LD (.TMP),A ; enter point from CREATE .start: CALL GETWORD RET C CALL MASK ; enter point from OPEN_FN diff --git a/DSS/DSS-MAIN.ASM b/DSS/DSS-MAIN.ASM index b70ede6..b0c8375 100644 --- a/DSS/DSS-MAIN.ASM +++ b/DSS/DSS-MAIN.ASM @@ -441,7 +441,7 @@ ADRST10: ;DS 512 ;,0 ;---------------------------------------------------------------------------------------------------------------------------------------------------------------; ;[INCLUDE] ;!TODO заменить по-максимому всё в KEYINTER.ASM на вызовы биоса - INCLUDE "KEYINTER.ASM" ;!FIXIT из-за буфера с выравниванием align 256 в начале приходится ADRST10 добивать нулями в конце + INCLUDE "KEYINTER.ASM" INCLUDE "VIDEO.ASM" INCLUDE "API.ASM" INCLUDE "DOS_Proc.asm" @@ -474,14 +474,9 @@ CurrentDirectory: DB '\' .DEPTH: EQU DIRECTORY_PATH_LENGTH BLOCK CurrentDirectory.DEPTH,0 ; не .DEPTH-1 чтоб был 0 в конце ; - IF SAVE_PATH_CODE WorkDirectory: DB '\' .DEPTH: EQU DIRECTORY_PATH_LENGTH BLOCK WorkDirectory.DEPTH,0 ; не .DEPTH-1 чтоб был 0 в конце - ELSE -WorkDirectory EQU CurrentDirectory -.DEPTH EQU CurrentDirectory.DEPTH - ENDIF ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ; diff --git a/DSS/FS/FAT/FAT.asm b/DSS/FS/FAT/FAT.asm index be8f6b8..3778428 100644 --- a/DSS/FS/FAT/FAT.asm +++ b/DSS/FS/FAT/FAT.asm @@ -388,19 +388,22 @@ LOADDIR: WRT_HND: SET_PAGE_X DIRPAGE EX AF,AF' ; - LD IX,DIRPAGE.buffer + ;LD IX,DIRPAGE.buffer + LD HL,DIRPAGE.buffer ;TEST 9/11/23 ; EXX ; LD DE,0 ; EXX ; -.loop: LD A,(IX+00) + LD BC,#0020 +.loop: ;LD A,(IX+00) + LD A,(HL) OR A JR Z,.WRT_HN2 CP #E5 JR Z,.WRT_HN2 - LD BC,#0020 - ADD IX,BC + ;ADD IX,BC + ADD HL,BC JR NC,.loop ; EX AF,AF' @@ -409,8 +412,9 @@ WRT_HND: SET_PAGE_X DIRPAGE SCF RET .WRT_HN2: - LD D,XH - LD E,XL + ;LD D,XH + ;LD E,XL + EX DE,HL LD HL,HANDBUF LD BC,HANDBUF.SIZE LDIR @@ -617,7 +621,7 @@ RD_BPB: LD C,SLOT3 LD (FatBuffer.DAT_FRM),HL ;!TODO не используются значения вычисляемые и сохраняемые в FatBuffer //////////////////////////////////////////////////////////////////////// - IF COMPILE_UNUSED_CODE + ;IF COMPILE_UNUSED_CODE ;LD HL,0 ;LD H,B ; тут в B ноль должен быть @@ -654,7 +658,7 @@ RD_BPB: LD C,SLOT3 SBC HL,DE JR NC,.loop4 LD (FatBuffer.C_P_B),A ; A - Clusters per bank (16k) - ENDIF + ;ENDIF //////////////////////////////////////////////////////////////////////// LD HL,CORE_BUFFERS.BootSector.ID_FAT ;!!!!! а если IY используется для переменного BootSector, то будет бага @@ -688,7 +692,7 @@ RD_BPB: LD C,SLOT3 ;!TODO не используются значения вычисляемые и сохраняемые в FatBuffer //////////////////////////////////////////////////////////////////////// - IF COMPILE_UNUSED_CODE + ;IF COMPILE_UNUSED_CODE LD HL,0 @@ -702,7 +706,7 @@ RD_BPB: LD C,SLOT3 DEC A JR NZ,.BPB_L1 LD (FatBuffer.S_X_H),HL - ENDIF + ;ENDIF //////////////////////////////////////////////////////////////////////// LD DE,(FatBuffer.DAT_FRM) diff --git a/DSS/FS/FAT/FAT12_16.asm b/DSS/FS/FAT/FAT12_16.asm index 338612a..6ea9706 100644 --- a/DSS/FS/FAT/FAT12_16.asm +++ b/DSS/FS/FAT/FAT12_16.asm @@ -88,25 +88,6 @@ R_F_FAT: JR Z,R_F_F12 ; fat16, просто читать след. номер R_F_F16: - ; LD A,H - ; LD B,H - ; ;AND #0F - ; AND FAT_CACHE.Size_Mask_16 - ; LD H,A - ; LD A,B - ; ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES) - ; DUP FAT_CACHE.Degree_16 - ; RRCA - ; EDUP - ; ;AND #0F - ; AND FAT_CACHE.Part_Mask_16 - ; ; - ; ADD HL,HL ; HL - FAT OFFSET (FROM CASH) - ; LD BC,(FatCache) ; C - BLOCK FAT IN CASH - ; CP C - ; CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT - ; LD DE,FATPAGE.cache ; начало кеша FAT-а - ; ADD HL,DE ; на ячейку FAT CALL GET_FAT16_CELL LD E,(HL) ; прочитать номер кластера INC HL @@ -122,33 +103,6 @@ R_F_F16: ; R_F_F12: CALL GET_FAT12_CELL - ; LD D,H - ; LD E,L - ; RR H - ; RR L ; сдвиг вправо через CF - ; PUSH AF ; сохр. флаг - ; ADD HL,DE ; CLUSTER * 1.5 - ; ; - ; ;!FIXIT оптимизировать - ; ;IF COMPILE_UNUSED_CODE - ; LD A,H - ; LD B,H - ; AND #1F - ; LD H,A - ; LD A,B - ; RLCA - ; RLCA - ; RLCA - ; AND #07 - ; LD BC,(FatCache) ; C - BLOCK FAT IN CASH - ; CP C - ; CALL NZ,READ_FAT ; прочитать в кеш 16 секторов FAT-а - ; ;ENDIF - ; ; - ; LD DE,FATPAGE.cache ; начало кеша FAT-а - ; ADD HL,DE ; на ячейку FAT - ; POP AF ; восст. флаг - LD E,(HL) INC HL LD D,(HL) @@ -249,38 +203,6 @@ W_T_F16: ; fat12 W_T_F12: ;!FIXIT переделать на переменные FAT_CACHE PUSH DE - ; LD D,H - ; LD E,L - ; ; ADD HL,HL - ; ; ADD HL,DE - ; ; RR H - ; ; RR L ;CLUSTER * 1.5 - ; ; PUSH AF - ; RR H - ; RR L ; сдвиг вправо через CF - ; PUSH AF ; сохр. флаг - ; ADD HL,DE ; CLUSTER * 1.5 - ; ; - ; ;!FIXIT оптимизировать - ; ;IF COMPILE_UNUSED_CODE - ; LD A,H - ; LD B,H - ; AND #1F - ; LD H,A - ; LD A,B - ; RLCA - ; RLCA - ; RLCA - ; AND #07 - ; LD BC,(FatCache) ; C - BLOCK FAT IN CASH - ; CP C - ; CALL NZ,READ_FAT ; прочитать в кеш 16 секторов FAT-а - ; ;ENDIF - ; ; - ; LD DE,FATPAGE.cache - ; ADD HL,DE - ; POP AF - CALL GET_FAT12_CELL POP DE JR C,W_T_F01 ; номер нечётный diff --git a/DSS/INTMOUSE.ASM b/DSS/INTMOUSE.ASM index 62f1244..835a3cf 100644 --- a/DSS/INTMOUSE.ASM +++ b/DSS/INTMOUSE.ASM @@ -909,34 +909,34 @@ REDY+1: LD A,#00 LD (REDY),A RET -MODE_M DB #03 +MODE_M: DB #03 -PIX_X DW 160 -PIX_Y DW 128 +PIX_X: DW 160 +PIX_Y: DW 128 -MX DB #00 -MY DB #00 -MB DB #00 -MB_OLD DB #00 ; !FIXIT - не нужно? -MIN_X DW 0 -MAX_X DW 319 -MIN_Y DW 0 -MAX_Y DW 255 -SENSEXY -SENSE_X DB 0 -SENSE_Y DB 0 +MX: DB #00 +MY: DB #00 +MB: DB #00 +;MB_OLD DB #00 ; !FIXIT - не нужно? +MIN_X: DW 0 +MAX_X: DW 319 +MIN_Y: DW 0 +MAX_Y: DW 255 +SENSEXY: +.X: DB 0 +.Y: DB 0 -XHOT_SP DW 0 -YHOT_SP DW 0 +XHOT_SP: DW 0 +YHOT_SP: DW 0 -ANDXORS DW #FF00 -ANDXORA DW #FF77 +ANDXORS: DW #FF00 +ANDXORA: DW #FF77 -M_XSIZE DB 10 -M_YSIZE DB 14 -SKIPXF DW 0 -REALXS DW 0 -REALYS DW 0 +M_XSIZE: DB 10 +M_YSIZE: DB 14 +SKIPXF: DW 0 +REALXS: DW 0 +REALYS: DW 0 ; Xx EQU #00 ; Ww EQU #FE diff --git a/DSS/Procedures.asm b/DSS/Procedures.asm index 0760807..92310fd 100644 --- a/DSS/Procedures.asm +++ b/DSS/Procedures.asm @@ -163,7 +163,7 @@ BCD2HEX: ;!TODO hardware ;----------------------------------------------------------------------; -;!FIXIT переделать по доке на Даллас и заись в ячейки часов +;!FIXIT переделать по доке на Даллас и запись в ячейки часов ; Запись регистров CMOS ; вход: d=номер регистра WCMOS: CALL HEX2BCD diff --git a/DSS/build.txt b/DSS/build.txt index cb22560..8f5f232 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -827 \ No newline at end of file +831 \ No newline at end of file diff --git a/DSS/defines.inc b/DSS/defines.inc index 1590968..a9ce9c7 100644 --- a/DSS/defines.inc +++ b/DSS/defines.inc @@ -47,7 +47,6 @@ DSS_MAX_DRIVES_AMOUNT EQU 26 DEFINE TABisSPACES 0 DEFINE EnoughtOnly_LF 0 DEFINE CLASSIC_CURSOR 0 - DEFINE SAVE_PATH_CODE 1 DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55 DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - тормознее, но безопаснее ; diff --git a/Shared_Includes b/Shared_Includes index 54298bf..a6dee8e 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 54298bfb52826572bda5ccd0609320a9418d08c9 +Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3