From a6831e5ca3b9a3e9ab0e5cc3255e3bd3999931c3 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Sun, 27 Oct 2024 00:43:21 +1000 Subject: [PATCH] ... --- DSS/API/Find.asm | 83 ++++++++++++++++++--------------------- DSS/API/GetMem.asm | 2 - DSS/API/Read.asm | 2 + DSS/DSS-MAIN.ASM | 4 +- DSS/VIDEO.ASM | 4 +- SHELL/Commands/Reboot.asm | 2 +- Shared_Includes | 2 +- 7 files changed, 47 insertions(+), 52 deletions(-) diff --git a/DSS/API/Find.asm b/DSS/API/Find.asm index b25fa19..6b06b7e 100644 --- a/DSS/API/Find.asm +++ b/DSS/API/Find.asm @@ -39,50 +39,45 @@ F_FIRST: CALL .INIT_VARS CALL SEARCH.Custom RET C LD HL,MASKARE -.DTABUF+1: - LD DE,0 - LD BC,11 ;!HARDCODE - LDIR -.TMP+1: LD A,0 - LD (DE),A -.FIND_S: - INC DE - ;!TODO лучше тут использовать как в record index для перебора каталога > #4000 bytes - LD BC,FAT_DIRECTORY_RECORD - ADD IX,BC - LD (F_NEXT.CURHND),IX - LD HL,HANDBUF+12 ;!HARDCODE - LD BC,HANDBUF.SIZE-12 ;????? метку вместо числа? - LDIR - LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT) - LD (DE),A - INC DE - LD HL,HANDBUF -.FNDMODE+1: - LD A,0 - OR A - JR NZ,.FIND_M2 - LD BC,11 ;!HARDCODE - LDIR -.exit: LD A,F_NEXT.NO_NEXT.NO - LD (F_NEXT.NO_NEXT),A - XOR A - RET -.FIND_M2: - ;!TODO LFN - ;CP 2 - ;CALL NC,GetName_LFN - ;CALL C,GetName - ; - CALL GetName - JR .exit - ; -.INIT_VARS: - LD (.TMP),A - LD (.DTABUF),DE - LD A,B - LD (.FNDMODE),A - RET +.DTABUF+1: LD DE,0 + LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; копируем .NAME и .EXT + LDIR +.TMP+1: LD A,0 + LD (DE),A +.FIND_S: INC DE + ;!TODO лучше тут использовать как в record index для перебора каталога > #4000 bytes + LD BC,FAT_DIRECTORY_RECORD + ADD IX,BC + LD (F_NEXT.CURHND),IX + LD HL,HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT + LD BC,HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT + LDIR + LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT) + LD (DE),A + INC DE + LD HL,HANDBUF +.FNDMODE+1: LD A,0 + OR A + JR NZ,.FIND_M2 + LD BC,11 ;!HARDCODE + LDIR +.exit: LD A,F_NEXT.NO_NEXT.NO + LD (F_NEXT.NO_NEXT),A + XOR A + RET +.FIND_M2: ;!TODO LFN + ;CP 2 + ;CALL NC,GetName_LFN + ;CALL C,GetName + ; + CALL GetName + JR .exit + ; +.INIT_VARS: LD (.TMP),A + LD (.DTABUF),DE + LD A,B + LD (.FNDMODE),A + RET //////////////////////////////////////////////////////////////////////// ; ; diff --git a/DSS/API/GetMem.asm b/DSS/API/GetMem.asm index 9d30112..42e5ff3 100644 --- a/DSS/API/GetMem.asm +++ b/DSS/API/GetMem.asm @@ -11,11 +11,9 @@ GETMEM: LD C,BIOS.GetMem LD A,DSS_Error.sys.NOT_ENOUGH_MEMORY RET C LD D,#00 - ;LD HL,MEMTAB ; массив списка выдел. страниц LD HL,CORE_BUFFERS.MemoryTable ; массив списка выдел. страниц ADD HL,DE LD A,(TASK) ; уровень текущей программы LD (HL),A LD A,E - ;AND A RET \ No newline at end of file diff --git a/DSS/API/Read.asm b/DSS/API/Read.asm index 9ca4bae..de82ab2 100644 --- a/DSS/API/Read.asm +++ b/DSS/API/Read.asm @@ -22,6 +22,7 @@ READ: LD (.R_POINT),HL PUSH BC SRL B JR Z,.ROV2 + ; чтение сразу в буфер пользователя LD (.SECTORH),HL LD (.SECTORL),DE .R_POINT+2: LD IX,0 @@ -49,6 +50,7 @@ READ: LD (.R_POINT),HL LD B,A OR C JP Z,.ROV6 + ; чтение через буфер DSS, если размер данных < 512 PUSH BC LD IX,CORE_BUFFERS.BUFFER+#C000 LD B,1 diff --git a/DSS/DSS-MAIN.ASM b/DSS/DSS-MAIN.ASM index 6b2f37a..e3ba28f 100644 --- a/DSS/DSS-MAIN.ASM +++ b/DSS/DSS-MAIN.ASM @@ -421,10 +421,10 @@ CHECK_64kb_CLUSTER: ;!FIXIT к буферам ; Массив лог. номеров банок расширения DSS -BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 для COREPAGE +BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 для COREPAGE HANDBUF: BLOCK HANDBUF.SIZE,0 ; - +; ; FAT_DIRECTORY_RECORD ; !HARDCODE MASKARE: BLOCK 8,0 ; имя файла BLOCK 3,0 ; расш. BLOCK 21,0 ; 11+21=32 diff --git a/DSS/VIDEO.ASM b/DSS/VIDEO.ASM index 9aa6285..f1bdb0a 100644 --- a/DSS/VIDEO.ASM +++ b/DSS/VIDEO.ASM @@ -658,7 +658,7 @@ BACKTXT: PUSH AF .VMODE+1: LD A,#00 ;BIT 7,A CP %1000'0000 - JR C,NOBACKT + JR C,.NOBACKT ; PUSH BC PUSH DE @@ -688,7 +688,7 @@ BACKTXT: PUSH AF POP HL POP DE POP BC -NOBACKT: POP AF +.NOBACKT: POP AF RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; diff --git a/SHELL/Commands/Reboot.asm b/SHELL/Commands/Reboot.asm index d2a8d66..334eca3 100644 --- a/SHELL/Commands/Reboot.asm +++ b/SHELL/Commands/Reboot.asm @@ -2,7 +2,7 @@ cmd_reboot: DI LD C,BIOS.FullInit RST ToBIOS - LD BC,2*256 + BIOS.REINIT + LD BC,BIOS.REINIT.SOFT_RESET RST ToBIOS DI diff --git a/Shared_Includes b/Shared_Includes index e73e9f8..45fe79a 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit e73e9f8d4f4e72de4f6b54abaec159684fdcebe1 +Subproject commit 45fe79a0873c933a549e7f1764a6f1f6607f6fb1