драйвер мышки перенесён в страницу драйверов. для FAT32 добавлена работа с BPB_ExtFlags

This commit is contained in:
Anatoliy Belyanskiy 2024-05-05 04:00:30 +10:00
parent 4083da9fa5
commit f135083519
24 changed files with 268 additions and 256 deletions

View File

@ -20,7 +20,7 @@ CHDIR_FN:
JP NC,DIR_PATH_CHANGE.FullCurrent JP NC,DIR_PATH_CHANGE.FullCurrent
; 丟咧 郊膉删陋, 漅 <E295B3><E59D8E>布摬 睼<> 栽芥<E6A0BD> 能刻咧 ; 丟咧 郊膉删陋, 漅 <E295B3><E59D8E>布摬 睼<> 栽芥<E6A0BD> 能刻咧
PUSH AF PUSH AF
LD HL,CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR CALL CHDIR
POP AF POP AF
RET RET

View File

@ -14,7 +14,7 @@ CHNDISK:;[x]
; ;
;R010 ;R010
RET C RET C
LD HL,WorkDirectory LD HL,CORE_BUFFERS.WorkDirectory
LD (HL),0 LD (HL),0
PUSH AF PUSH AF
CALL OPENDIR CALL OPENDIR

View File

@ -4,10 +4,10 @@
; ¢å®¤: HL - ¡ãä¥à ¢ ¯ ¬ï⨠256 ¡ ©â ; ¢å®¤: HL - ¡ãä¥à ¢ ¯ ¬ï⨠256 ¡ ©â
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1 ; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CURRDIR: LD DE,WorkDirectory CURRDIR: LD DE,CORE_BUFFERS.WorkDirectory
JR CURRDIR_FN.skip JR CURRDIR_FN.skip
CURRDIR_FN: CURRDIR_FN:
LD DE,CurrentDirectory LD DE,CORE_BUFFERS.CurrentDirectory
.skip: EX DE,HL .skip: EX DE,HL
LD BC,DIRECTORY_PATH_LENGTH ;[x] 15/11/2023 ¬®£«® ¢ë©â¨ §  ¯à¥¤¥«ë ¡ãä¥à  LD BC,DIRECTORY_PATH_LENGTH ;[x] 15/11/2023 ¬®£«® ¢ë©â¨ §  ¯à¥¤¥«ë ¡ãä¥à 
XOR A XOR A

View File

@ -416,7 +416,7 @@ _TST_PROC_2: LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
PUSH HL PUSH HL
;!TEST Current Dir ;[x] 15/10/23 ;!TEST Current Dir ;[x] 15/10/23
PUSH IX PUSH IX
LD HL,CurrentPath LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.EXEBUFF.VERSION) LD A,(CORE_BUFFERS.EXEBUFF.VERSION)
OR A OR A
JR NZ,.set_path JR NZ,.set_path
@ -522,7 +522,7 @@ ErrorLevel: DB #00 ;
EXE_FM: DB #00 ; ¤¥áªà. ä ©«  EXE_FM: DB #00 ; ¤¥áªà. ä ©« 
EXE_MEM: DB #00 ; ¨¤¥­â¨ä¨ª â®à ¡«®ª  ¯ ¬ï⨠EXE_MEM: DB #00 ; ¨¤¥­â¨ä¨ª â®à ¡«®ª  ¯ ¬ïâ¨
CMDLINE: DW #0000 CMDLINE: DW #0000
EXSTACK: DW CORE_BUFFERS.XSTACK ;  ¤ŕĽá á⼪  EXSTACK: DW CORE_BUFFERS.XSTACK.Spoint ;  ¤à¥á á⥪ 
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
@ -703,7 +703,7 @@ FINDPATH:
.GOTO_CURDIR: .GOTO_CURDIR:
PUSH AF PUSH AF
PUSH HL PUSH HL
LD HL,CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR CALL CHDIR
POP HL POP HL
POP AF POP AF

View File

@ -20,7 +20,7 @@ MKDIR:
RET C RET C
CALL .START CALL .START
PUSH AF PUSH AF
LD HL,CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR CALL CHDIR
POP AF POP AF
RET RET

View File

@ -15,7 +15,7 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
RET C RET C
CALL .START CALL .START
PUSH AF PUSH AF
LD HL,CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR CALL CHDIR
CALL DIR_PATH_CHANGE.Current CALL DIR_PATH_CHANGE.Current
POP AF POP AF

View File

@ -35,13 +35,13 @@ SCANDRV:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 4. ­  ˘áďŞ¨Š áŤăç Š ŻĽŕĽç¨â뢠ĽŹ ¤¨ŕ༪âŽŕ¨î ; 4. ­  ˘áďŞ¨Š áŤăç Š ŻĽŕĽç¨â뢠ĽŹ ¤¨ŕ༪âŽŕ¨î
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
LD A,(CurrentPath) LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
CALL OPENDSK CALL OPENDSK
LD HL,CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR CALL CHDIR
JR NC,.exit JR NC,.exit
LD HL,CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory
LD (HL),0 LD (HL),0
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 5. ˘ë厤 ; 5. ˘ë厤

View File

@ -8,7 +8,7 @@
CURDISK_FN: CURDISK_FN:
LD A,(LDRIVE) LD A,(LDRIVE)
LD C,A LD C,A
LD A,(CurrentPath) LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
RET NC RET NC
LD A,DSS_Error.sys.INVALID_DRIVE LD A,DSS_Error.sys.INVALID_DRIVE

View File

@ -119,7 +119,7 @@ DISKINF: LD C,B
CP #FF ; !FIXIT WorkDirectory CP #FF ; !FIXIT WorkDirectory
;!TEST Current Dir ;!TEST Current Dir
;JR Z,CURRDS ;R06 ;JR Z,CURRDS ;R06
.CurrentDisk: LD A,(CurrentPath) .CurrentDisk: LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
LD HL,CORE_BUFFERS.FatBuffer.DRIVE LD HL,CORE_BUFFERS.FatBuffer.DRIVE
CP (HL) CP (HL)

View File

@ -359,16 +359,16 @@ MASK: LD HL,TMPNAME
DIR_PATH_CHANGE: DIR_PATH_CHANGE:
.FullCurrent: LD A,(CORE_BUFFERS.FatBuffer.DRIVE) .FullCurrent: LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
ADD 'A' ADD 'A'
LD (CurrentPath),A LD (CORE_BUFFERS.CurrentPath),A
; ;
.Current: LD HL,CurrentDirectory .Current: LD HL,CORE_BUFFERS.CurrentDirectory
JP CURRDIR JP CURRDIR
; ;
.FullWork: LD A,(CurrentPath) .FullWork: LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FatBuffer.DRIVE),A
; ;
.Work: LD HL,WorkDirectory .Work: LD HL,CORE_BUFFERS.WorkDirectory
JP CURRDIR_FN JP CURRDIR_FN
; ;
DIR_PATH_CHECK: LD A,(HL) DIR_PATH_CHECK: LD A,(HL)
@ -377,7 +377,7 @@ DIR_PATH_CHECK: LD A,(HL)
; ;
CALL .checkDrive CALL .checkDrive
RET Z RET Z
LD A,(CurrentPath) LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' SUB 'A'
JP OPENDSK JP OPENDSK
; ;
@ -387,18 +387,18 @@ DIR_PATH_CHECK: LD A,(HL)
RET Z RET Z
; ;
.forceCheck: ;LD HL,CurrentDirectory+1 .forceCheck: ;LD HL,CurrentDirectory+1
LD BC,CurrentDirectory.DEPTH-1 LD BC,CORE_BUFFERS.CurrentDirectory.DEPTH-1
CALL .checkDrive CALL .checkDrive
JR Z,.checkDir JR Z,.checkDir
; ;
LD HL,CurrentPath LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
ADD 'A' ADD 'A'
CP (HL) CP (HL)
JR NZ,.gotoPath JR NZ,.gotoPath
; ;
.checkDir: LD HL,CurrentDirectory+1 .checkDir: LD HL,CORE_BUFFERS.CurrentDirectory+1
LD DE,WorkDirectory+1 LD DE,CORE_BUFFERS.WorkDirectory+1
; áçñâ稪 ; áçñâ稪
LD A,B LD A,B
LD B,C LD B,C
@ -424,14 +424,14 @@ DIR_PATH_CHECK: LD A,(HL)
CALL FINDDIR.CHECK_SLASH CALL FINDDIR.CHECK_SLASH
LD A,DSS_Error.sys.PATH_NOT_FOUND LD A,DSS_Error.sys.PATH_NOT_FOUND
RET C RET C
LD HL,CurrentPath LD HL,CORE_BUFFERS.CurrentPath
JP GETWORD JP GETWORD
; ;
.end: CP (HL) .end: CP (HL)
RET Z RET Z
JR .gotoPath JR .gotoPath
; ;
.checkDrive: LD HL,CurrentPath .checkDrive: LD HL,CORE_BUFFERS.CurrentPath
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
ADD 'A' ADD 'A'
CP (HL) CP (HL)

View File

@ -26,11 +26,11 @@
;===============; ;===============;
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[NOT USED]> ; ; <[NOT USED]>
A0000: JP RST_00 ; A0000: JP RST_00
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
; ;
RST_00: RST_00:
@ -39,49 +39,47 @@ RST_00:
RET RET
; ;
; ////////////////////////////////////////////////////////////////////////
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ; <[BIOS API]>
; <[BIOS API]> ; BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode
BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode A0008: PUSH AF
A0008: PUSH AF ; LD A,SYS_PORT.PAGE8
LD A,SYS_PORT.PAGE8; OUT (SYS_PORT.ON),A
OUT (SYS_PORT.ON),A ; POP AF
POP AF ; RET
RET ; ////////////////////////////////////////////////////////////////////////
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;
;!FIXIT ;!FIXIT
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[DSS API]> ; ; <[DSS API]>
BLOCK #10-$,#C7 ; #C7 - "RST 0" opcode BLOCK #10-$,#C7 ; #C7 - "RST 0" opcode
A0010: ;JP DRV_PAGE.RST_10 ; A0010: ;JP DRV_PAGE.RST_10
DI : HALT ; DI : HALT
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[DRIVE API]> ; ; <[DRIVE API]>
BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
;A0018 JP INTDISK ; ;A0018 JP INTDISK
A0018: ;PUSH AF ; A0018: ;PUSH AF
;PUSH BC ; ;PUSH BC
SCF SCF
RET RET
DRV_PAGE.MAIN_PAGE_NUMBER+2: ; DRV_PAGE.MAIN_PAGE_NUMBER+2:
LD BC,0*256 + SLOT0 ; !FIXIT á ­¥ ¤®«¦­ë ¢áâ ¢«ïâìáï ­®¬¥à  ¢ë¤¥«¥­­ëå áâà ­¨æ? LD BC,0*256 + SLOT0 ; !FIXIT á ­¥ ¤®«¦­ë ¢áâ ¢«ïâìáï ­®¬¥à  ¢ë¤¥«¥­­ëå áâà ­¨æ?
;JP PORTAL.outDRV ; ;JP PORTAL.outDRV
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[NOT USED]> ; ; <[NOT USED]>
BLOCK #20-$,#C7 ; #C7 - "RST 0" opcode BLOCK #20-$,#C7 ; #C7 - "RST 0" opcode
A0020: JP DRV_PAGE.RST_20 ; A0020: JP DRV_PAGE.RST_20
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
; ;
DRV_PAGE.RST_20: DRV_PAGE.RST_20:
@ -91,12 +89,12 @@ DRV_PAGE.RST_20:
; ;
;!TODO ;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[NOT USED]> ; ; <[NOT USED]>
BLOCK #28-$,#C7 ; #C7 - "RST 0" opcode BLOCK #28-$,#C7 ; #C7 - "RST 0" opcode
A0028: JP DRV_PAGE.RST_28 ; A0028: JP DRV_PAGE.RST_28
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
; ;
DRV_PAGE.RST_28: DRV_PAGE.RST_28:
@ -105,23 +103,16 @@ DRV_PAGE.RST_28:
RET RET
; ;
;!TODO ////////////////////////////////////////////////////////////////////////
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; BLOCK #30-$,#C7 ; #C7 - "RST 0" opcode
; <[NOT USED]> ; RST_30: JP MOUSE_DRV.API
BLOCK #30-$,#C7 ; .RET: OUT (SLOT0),A
A0030: JP RST_30 ; JP MOUSE_HANDLER
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
;
RST_30:
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
;
;!FIXIT ;!FIXIT
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[MAIN INT]> ; ; <[MAIN INT]> ;
BLOCK #38-$,#C7 ; BLOCK #38-$,#C7 ;
A0038: ; A0038: ;
@ -188,21 +179,21 @@ A0038: ;
ENDIF ENDIF
EI ; EI ;
RETI ; RETI ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
; ;
DRV_PAGE.KEYSCAN: RET ;!FIXIT DRV_PAGE.KEYSCAN: RET ;!FIXIT
; ;
;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[ NMI ]> ; ; <[ NMI ]> ;
DRV_PAGE.NMI: RETN ; DRV_PAGE.NMI: RETN ;
BLOCK #66-$,#C7; BLOCK #66-$,#C7;
A0066: JP DRV_PAGE.NMI ; A0066: JP DRV_PAGE.NMI ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
;-------------------------------; ;-------------------------------;
@ -220,8 +211,8 @@ A0066: JP DRV_PAGE.NMI ;
; EX (SP),HL ; EX (SP),HL
; RET ; RET
;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
; <[DRIVE PAGE SWITCH]> ; ; <[DRIVE PAGE SWITCH]> ;
BLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7 BLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
PORTAL.out_DRV: PUSH BC ; PORTAL.out_DRV: PUSH BC ;
@ -234,22 +225,20 @@ PORTAL.out_DRV: PUSH BC ;
POP AF ; POP AF ;
.ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK .ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK
JP PORTAL.out_DRV ; JP PORTAL.out_DRV ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ////////////////////////////////////////////////////////////////////////
;
;!FIXIT çñâ ­¥ â® âãâ ////////////////////////////////////////////////////////////////////////
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; MOUSE_HANDLER: POP AF
; LD B,#00; ; CALL MOUSE_DRV.API
; OUT (C),A ; PUSH AF
;--- ; .CorePage EQU $$$ + 1
; POP BC ; LD A,#FF
; RET ; JP RST_30.RET
;PORTAL.outDRV: ; ////////////////////////////////////////////////////////////////////////
; RET ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;
DRV_PAGE.LDRIVE: DB #00 DRV_PAGE.LDRIVE: DB #00
@ -263,11 +252,11 @@ INITDVC_RET_DRIVE:
AND A AND A
RET RET
INCLUDE 'dss/media_drivers/shared-drv.asm' INCLUDE 'dss/Drivers/media/shared-drv.asm'
INCLUDE 'dss/media_drivers/ide-drv.asm' INCLUDE 'dss/Drivers/media/ide-drv.asm'
INCLUDE 'dss/media_drivers/fdd-drv.asm' INCLUDE 'dss/Drivers/media/fdd-drv.asm'
INCLUDE 'dss/media_drivers/ram_disk-drv.asm' INCLUDE 'dss/Drivers/media/ram_disk-drv.asm'
INCLUDE "dss/Drivers/input/MOUSE.ASM"
/////////////////////////// [ DRIVE TABLES ] \\\\\\\\\\\\\\\\\\\\\\\\\\\; /////////////////////////// [ DRIVE TABLES ] \\\\\\\\\\\\\\\\\\\\\\\\\\\;
; ;
;------------------------[shared-drv.asm table]------------------------; ;------------------------[shared-drv.asm table]------------------------;

View File

@ -128,7 +128,11 @@ RST_0x28: JP RST_28 ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[MOUSE API]> ; ; <[MOUSE API]> ;
_mInfoBLOCK #30-$,#FF ; _mInfoBLOCK #30-$,#FF ;
RST_0x30: JP INTMOUS ; RST_0x30: PUSH AF
.drv_page+1: LD A,#FF
OUT (SLOT0),A
POP AF
RET
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
@ -151,7 +155,9 @@ INT_: PUSH AF
PUSH IX PUSH IX
PUSH IY PUSH IY
CALL KEYSCAN CALL KEYSCAN
CALL M_INT LD C,Dss.Mouse.GetPackets
RST ToDSS.Mouse
;CALL M_INT
IFN CLASSIC_CURSOR IFN CLASSIC_CURSOR
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à  ;!!!!! VASIL CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à  ;!!!!! VASIL
ENDIF ENDIF
@ -248,10 +254,10 @@ CLEAR_BUFFER_AND_INIT_PROC:
LD (HL),A LD (HL),A
LDIR LDIR
LD HL,':'*256 + 'X' LD HL,':'*256 + 'X'
LD (CurrentPath),HL LD (CORE_BUFFERS.CurrentPath),HL
LD A,'\' ; LD A,'\' ;
LD (CurrentDirectory),A LD (CORE_BUFFERS.CurrentDirectory),A
LD (WorkDirectory),A LD (CORE_BUFFERS.WorkDirectory),A
; ;
LD A,#FF LD A,#FF
LD (CORE_BUFFERS.FatBuffer.DRIVE),A LD (CORE_BUFFERS.FatBuffer.DRIVE),A
@ -370,8 +376,6 @@ ADRST10: ;DS 512 ;,0
INCLUDE "FS/FAT/FAT.ASM" INCLUDE "FS/FAT/FAT.ASM"
INCLUDE "FS/FAT/FAT_X.ASM" INCLUDE "FS/FAT/FAT_X.ASM"
INCLUDE "DOS_FM.ASM" INCLUDE "DOS_FM.ASM"
;INCLUDE "EXECUTE.ASM"
INCLUDE "INTMOUSE.ASM"
INCLUDE "Procedures.asm" INCLUDE "Procedures.asm"
INCLUDE "Kernel_Panic.asm" INCLUDE "Kernel_Panic.asm"
@ -414,30 +418,36 @@ WorkDirectory: DB '\'
CLEAR_ZONE.start EQU $ CLEAR_ZONE.start EQU $
MODULE CORE_BUFFERS MODULE CORE_BUFFERS
BUFFERSplace _sBuffers=$ BUFFERSplace _sBuffers=$
FM_BUF _sFM = BUFFERSplace.FileManipulator FM_BUF _sFM = BUFFERSplace.FileManipulator
.Size EQU _sFM .Size EQU _sFM
.FullSize EQU FMCOUNT*FM_BUF.Size .FullSize EQU FMCOUNT*FM_BUF.Size
;BootSector _sBOOT_SECTOR_PARAMS = BUFFERSplace.BootSector ; [ ] fat32 ;!FIXIT CORE_BUFFERS.BootSector à §­®© ¤«¨­ë FatBuffer _sFatBuffer = BUFFERSplace.FatBuffer
FatBuffer _sFatBuffer = BUFFERSplace.FatBuffer EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header
EXEBUFF _sEXE_HEADER = BUFFERSplace.EXE_Header XSTACK _sStack = BUFFERSplace.Stack
XSTACK EQU BUFFERSplace.Stack.SPoint .Spoint EQU XSTACK + _sStack
BUFFER EQU BUFFERSplace.Buffer BUFFER EQU BUFFERSplace.Buffer
SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER
MemoryTable EQU BUFFERSplace.MemoryTable MemoryTable EQU BUFFERSplace.MemoryTable
CurrentPath EQU BUFFERSplace.CurrentPath
CurrentDirectory EQU BUFFERSplace.CurrentDirectory
.DEPTH EQU DIRECTORY_PATH_LENGTH
WorkDirectory EQU BUFFERSplace.WorkDirectory
.DEPTH EQU DIRECTORY_PATH_LENGTH
ENDMODULE ENDMODULE
; ;
CurrentPath EQU CORE_BUFFERS.BUFFERSplace + _sBuffers ; CurrentPath EQU CORE_BUFFERS.BUFFERSplace + _sBuffers
CurrentDirectory EQU CurrentPath + 2 ; CurrentDirectory EQU CurrentPath + 2
.DEPTH: EQU DIRECTORY_PATH_LENGTH ; .DEPTH: EQU DIRECTORY_PATH_LENGTH
; ; ;
WorkDirectory EQU CurrentDirectory + 1 + CurrentDirectory.DEPTH ; WorkDirectory EQU CurrentDirectory + 1 + CurrentDirectory.DEPTH
.DEPTH: EQU DIRECTORY_PATH_LENGTH ; .DEPTH: EQU DIRECTORY_PATH_LENGTH
; ;
CLEAR_ZONE.size EQU _sBuffers CLEAR_ZONE.size EQU _sBuffers
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0" ASSERT (CLEAR_ZONE.start + _sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
DISPLAY "--- --- --- --- --- --- --- ---" DISPLAY "--- --- --- --- --- --- --- ---"
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size DISPLAY "CLEAR_ZONE.Size ", /H, CLEAR_ZONE.size
@ -599,6 +609,10 @@ DEPLOY: ;Allocate memory
LD HL,BANKTBL + COREPAGE LD HL,BANKTBL + COREPAGE
IN A,(SLOT0) IN A,(SLOT0)
LD (HL),A LD (HL),A
; ¤«ï API ¤à ©¢¥à  ¬ë誨
LD (MOUSE_HANDLER.CorePage),A
LD A,(BANKTBL + DRVPAGE)
LD (RST_0x30.drv_page),A
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A

View File

@ -318,17 +318,17 @@ FINDDIR:
LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1) LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1)
CP "." CP "."
JP NZ,.IT_DIR JP NZ,.IT_DIR
LD HL,WorkDirectory LD HL,CORE_BUFFERS.WorkDirectory
LD D,H LD D,H
LD E,L LD E,L
INC HL INC HL
LD BC,WorkDirectory.DEPTH LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
XOR A XOR A
CPIR CPIR
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª  ­  ¢ë室 §  £à ­¨æë JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª  ­  ¢ë室 §  £à ­¨æë
DEC HL ;R009 DEC HL ;R009
DEC HL DEC HL
LD BC,WorkDirectory.DEPTH LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
LD A,'\' LD A,'\'
CPDR CPDR
INC HL INC HL
@ -353,8 +353,8 @@ FINDDIR:
RET RET
; ;
.ADDSPEC: .ADDSPEC:
LD HL,WorkDirectory+1 LD HL,CORE_BUFFERS.WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1 LD BC,CORE_BUFFERS.WorkDirectory.DEPTH-1
CALL .CHECK_SLASH CALL .CHECK_SLASH
JR C,.error JR C,.error
;R011 ;R011
@ -458,7 +458,7 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE
CALL LOADDIR CALL LOADDIR
; CF=0 ; CF=0
LD HL,WorkDirectory LD HL,CORE_BUFFERS.WorkDirectory
LD (HL),'\' LD (HL),'\'
INC HL INC HL
LD (HL),#00 LD (HL),#00
@ -712,7 +712,6 @@ RD_BPB: ; LD C,SLOT3
LD (CORE_BUFFERS.FatBuffer.SectorsPerCluster),A LD (CORE_BUFFERS.FatBuffer.SectorsPerCluster),A
; calc. first sector FAT ; calc. first sector FAT
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RESERVED_SECTORS) LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RESERVED_SECTORS)
;!FIXIT ¤«ï fat32 ¢â몠âì á ᥪâ®à   ªâ¨¢­®© â ¡«¨æë
LD (CORE_BUFFERS.FatBuffer.FAT1_SEC_L),HL ; low word first sector FAT #1 LD (CORE_BUFFERS.FatBuffer.FAT1_SEC_L),HL ; low word first sector FAT #1
LD (CORE_BUFFERS.FatBuffer.FAT2_SEC_L),HL ; low word first sector FAT #2 LD (CORE_BUFFERS.FatBuffer.FAT2_SEC_L),HL ; low word first sector FAT #2
;[ ] fat32 ;[ ] fat32
@ -735,8 +734,8 @@ RD_BPB: ; LD C,SLOT3
LD (CORE_BUFFERS.FatBuffer.SectorsPerFAT_H),A LD (CORE_BUFFERS.FatBuffer.SectorsPerFAT_H),A
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerFAT32) LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerFAT32)
.skip_high: LD (CORE_BUFFERS.FatBuffer.SectorsPerFAT_L),DE .skip_high: LD (CORE_BUFFERS.FatBuffer.SectorsPerFAT_L),DE
;!TODO ¢ë¡®à  ªâ¨¢­®© FAT ¤«ï fat32
LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.Number_of_FATs) ; amount FATs LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.Number_of_FATs) ; amount FATs
LD (CORE_BUFFERS.FatBuffer.Number_Of_FATs),A
CP 1 CP 1
JR Z,.one_FAT JR Z,.one_FAT
DEC A DEC A
@ -951,38 +950,65 @@ RD_BPB: ; LD C,SLOT3
LD A,FAT_TYPE.x12 LD A,FAT_TYPE.x12
JR .set_vars JR .set_vars
; ;
.its_FAT32: EXX .its_FAT32: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.MainFATnumber)
LD HL,CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.LABEL CP #80
JR C,.mirrored_FATs ;¥á«¨ ¢á¥ ª®¯¨¨ FAT ¨á¯®«ì§ãîâáï
; ¨á¯®«ì§ã¥âáï ⮫쪮 ®¤­  ª®¯¨ï FAT
LD HL,(CORE_BUFFERS.FatBuffer.FAT1_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H)
LD D,0
EXX EXX
LD HL,(CORE_BUFFERS.FatBuffer.FAT1_SEC_L)
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L)
AND #0F
JR Z,.first_FAT_active
LD B,A
; ;
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster) .fat_calc_loop: ADD HL,DE
LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_L),HL EXX
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster+2) ADC HL,DE
LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_H),BC EXX
DJNZ .fat_calc_loop
; ;
CALL CLUSTER_TO_SECTOR .first_FAT_active:
LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_L),HL LD (CORE_BUFFERS.FatBuffer.FAT1_SEC_L),HL
LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_H),BC LD (CORE_BUFFERS.FatBuffer.FAT2_SEC_L),HL
EXX
LD (CORE_BUFFERS.FatBuffer.FAT1_SEC_H),HL
LD (CORE_BUFFERS.FatBuffer.FAT2_SEC_H),HL
; ;
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FSINFO_Sector) .mirrored_FATs: ;
LD (CORE_BUFFERS.FatBuffer.FSINFO_Sector),HL LD HL,CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.LABEL
; ;
LD A,FAT_TYPE.x32 EXX
LD HL,#0FFF LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster)
LD (CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_H),HL LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_L),HL
LD H,L LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster+2)
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.SERIAL_NUMBER) LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_H),BC
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.SERIAL_NUMBER+2) ;
; CALL CLUSTER_TO_SECTOR
.SET_VARS: LD (CORE_BUFFERS.FatBuffer.FAT_TYPE),A LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_L),HL
LD (CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L),HL LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_H),BC
LD (CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER),DE ;
LD (CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER+2),BC LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FSINFO_Sector)
LD (CORE_BUFFERS.FatBuffer.FSINFO_Sector),HL
;
LD A,FAT_TYPE.x32
LD HL,#0FFF
LD (CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_H),HL
LD H,L
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.SERIAL_NUMBER)
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.SERIAL_NUMBER+2)
;
.SET_VARS: LD (CORE_BUFFERS.FatBuffer.FAT_TYPE),A
LD (CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L),HL
LD (CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER),DE
LD (CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER+2),BC
EXX EXX
LD DE,CORE_BUFFERS.FatBuffer.BPB_LABEL LD DE,CORE_BUFFERS.FatBuffer.BPB_LABEL
LD BC,11 ;!HARDCODE LD BC,11 ;!HARDCODE
LDIR LDIR
;
SET_PAGE_X FATPAGE SET_PAGE_X FATPAGE
PUSH AF PUSH AF
LD DE,0 LD DE,0
@ -1006,43 +1032,7 @@ RD_BPB: ; LD C,SLOT3
XOR A XOR A
RET RET
; ;
.set_FSinfo: ; .set_FSinfo: CALL READ_FSinfo
IFN USE_FSINFO_FAT32
CALL READ_FSinfo
; !FIXIT ¯à®¢¥àª  ­  ®è¨¡ªã
;
LD A,#FF
; ¯à®¢¥àª  ®¤­®© ¨§ á®â­¨ áà ­ëå ᨣ­ âãà
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.DATA_SIGNATURE)
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.DATA_SIGNATURE + 2)
LD BC,#7272
SBC HL,BC
JR NZ,.error_sig
EX DE,HL
LD DE,#6141
SBC HL,DE
JR NZ,.error_sig
;
LD HL,CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT
LD B,8 ; 2 x DWORD
LD A,#FF
;
.fsinfo_loop: AND (HL)
INC HL
DJNZ .fsinfo_loop
;
.error_sig: XOR #FF
LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
;
XOR A
LD H,A
LD L,2
LD (G_CLUST.low),HL
LD L,H
LD (G_CLUST.high),HL
RET
ELSE
CALL READ_FSinfo
; !FIXIT ¯à®¢¥àª  ­  ®è¨¡ªã ; !FIXIT ¯à®¢¥àª  ­  ®è¨¡ªã
; ;
; ¯à®¢¥àª  ®¤­®© ¨§ á®â­¨ áà ­ëå ᨣ­ âãà ; ¯à®¢¥àª  ®¤­®© ¨§ á®â­¨ áà ­ëå ᨣ­ âãà
@ -1101,7 +1091,6 @@ RD_BPB: ; LD C,SLOT3
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh) LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh)
SBC HL,DE SBC HL,DE
RET RET
ENDIF
;;;;;;;; ;;;;;;;;
; --> BC:HL - Sector ; --> BC:HL - Sector

View File

@ -647,11 +647,7 @@ WRITE_FAT_TABLE:
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT ;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
CALL GET_SECTOR_OF_FAT CALL GET_SECTOR_OF_FAT
; B=0, C:HL - ᬥ饭¨¥ ¢ ᥪâ®à å ¢­ãâਠ⠡«¨æë FAT ­  ­ ç «® ¡«®ª  ; B=0, C:HL - ᬥ饭¨¥ ¢ ᥪâ®à å ¢­ãâਠ⠡«¨æë FAT ­  ­ ç «® ¡«®ª 
; [x] fat32 ;!FIXIT LD (.save_offset_HL),HL
LD (.save_hl),HL
;LD B,H
;LD C,L
;
LD DE,FAT_CACHE.Sectors_32 LD DE,FAT_CACHE.Sectors_32
LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE) LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
CP FAT_TYPE.x32 CP FAT_TYPE.x32
@ -675,7 +671,7 @@ WRITE_FAT_TABLE:
.sub_A+1: SBC A,0 .sub_A+1: SBC A,0
JR C,.WALLFAT ; F=1: ­¥ ¢ë室¨â JR C,.WALLFAT ; F=1: ­¥ ¢ë室¨â
OR A OR A
JR NZ,.ERR JP NZ,.ERR
; ;
EX DE,HL EX DE,HL
; DE - ­  ᪮«ìª® ᥪâ®à®¢ ª®­¥æ ¡«®ª  ¢ë室¨â §  ¯à¥¤¥«ë â ¡«¨æë. ; DE - ­  ᪮«ìª® ᥪâ®à®¢ ª®­¥æ ¡«®ª  ¢ë室¨â §  ¯à¥¤¥«ë â ¡«¨æë.
@ -686,23 +682,17 @@ WRITE_FAT_TABLE:
JR C,.ERR ;!TODO ¯à®¢¥à¨âì JR C,.ERR ;!TODO ¯à®¢¥à¨âì
LD B,L ; ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè LD B,L ; ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè
.WALLFAT: ; .WALLFAT: ;
.save_hl+1: LD HL,0 .pop_offset_HL+1:
;LD H,B LD HL,0
;LD L,C
;PUSH HL
;
; B = ç¨á«® ᥪâ®à®¢ ; B = ç¨á«® ᥪâ®à®¢
LD IX,(CORE_BUFFERS.FatBuffer.FAT1_SEC_H) LD IX,(CORE_BUFFERS.FatBuffer.FAT1_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.FAT1_SEC_L) LD DE,(CORE_BUFFERS.FatBuffer.FAT1_SEC_L)
;LD B,A
;LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
PUSH BC PUSH BC
;
; á®å࠭塞 ¯¥à¢ãî ª®¯¨î FAT. ‚室 IX:DE - ­ ç «® â ¡«¨æë FAT ; á®å࠭塞 ¯¥à¢ãî ª®¯¨î FAT. ‚室 IX:DE - ­ ç «® â ¡«¨æë FAT
; C:HL - ᬥ饭¨¥ ¢­ãâਠ⠡«¨æë ; C:HL - ᬥ饭¨¥ ¢­ãâਠ⠡«¨æë
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢
CALL .SAVE_FAT_XX CALL .SAVE_FAT_XX
; [x] ¥á«¨ ¢á¥£® ®¤­  â ¡«¨æ  FAT, â® ¯®¢â®à­®© § ¯¨á¨ ­¥ ¯à®¨á室¨â 13/03/2024 ; [x] ¥á«¨ ¢á¥£® ®¤­  â ¡«¨æ  FAT, â® ¯®¢â®à­®© § ¯¨á¨ ­¥ ¯à®¨á室¨â 13/03/2024
POP BC ; B = ç¨á«® ᥪâ®à®¢, C = áâ à訩 ¡ ©â ᬥ饭¨ï ¢ ᥪâ®à å POP BC ; B = ç¨á«® ᥪâ®à®¢, C = áâ à訩 ¡ ©â ᬥ饭¨ï ¢ ᥪâ®à å
LD HL,(CORE_BUFFERS.FatBuffer.FAT1_SEC_H) LD HL,(CORE_BUFFERS.FatBuffer.FAT1_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.FAT2_SEC_H) LD DE,(CORE_BUFFERS.FatBuffer.FAT2_SEC_H)
@ -715,12 +705,51 @@ WRITE_FAT_TABLE:
SBC HL,DE SBC HL,DE
JR Z,.only_one_FAT JR Z,.only_one_FAT
; ;
; á®å࠭塞 ¢â®àãî ª®¯¨î FAT .not_one_FAT: LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
.not_one_FAT: LD IX,(CORE_BUFFERS.FatBuffer.FAT2_SEC_H) CP FAT_TYPE.x32
LD DE,(CORE_BUFFERS.FatBuffer.FAT2_SEC_L) JR NZ,.fat_num_2
LD HL,(.save_hl) ;
LD A,(CORE_BUFFERS.FatBuffer.Number_Of_FATs)
CP 2
JR Z,.fat_num_2
; á®å࠭塞 ¡®«ìè¥ ¤¢ãå ª®¯¨© FAT
LD HL,(CORE_BUFFERS.FatBuffer.FAT2_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H)
LD D,0
EXX
LD HL,(CORE_BUFFERS.FatBuffer.FAT2_SEC_L)
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L)
DEC A
.many_fat_loop: EXX
PUSH HL
PUSH HL
POP IX
EXX
PUSH HL
PUSH BC
EX DE,HL
LD HL,(.pop_offset_HL)
CALL .SAVE_FAT_XX CALL .SAVE_FAT_XX
AND A ;!TODO ­¥â ª®­âà®«ï ®è¨¡®ª POP BC
POP HL
;
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L)
ADD HL,DE
EXX
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H)
POP HL
ADC HL,DE
EXX
DEC A
JR NZ,.many_fat_loop
JR .norm_exit
;
; á®å࠭塞 ¢â®àãî ª®¯¨î FAT
.fat_num_2: LD IX,(CORE_BUFFERS.FatBuffer.FAT2_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.FAT2_SEC_L)
LD HL,(.pop_offset_HL)
CALL .SAVE_FAT_XX
.norm_exit: AND A ;!TODO ­¥â ª®­âà®«ï ®è¨¡®ª
.only_one_FAT: ; .only_one_FAT: ;
.ERR: LD A,0 .ERR: LD A,0
LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
@ -729,7 +758,6 @@ WRITE_FAT_TABLE:
; C:HL - ᬥ饭¨¥ ¢ â ¡«¨æ¥ ¢ ᥪâ®à å ; C:HL - ᬥ饭¨¥ ¢ â ¡«¨æ¥ ¢ ᥪâ®à å
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢
.SAVE_FAT_XX: ADD HL,DE .SAVE_FAT_XX: ADD HL,DE
;EX DE,HL
JR NC,.no_inc_C JR NC,.no_inc_C
INC C INC C
; ­®¬¥à «®£. ᥪâ®à  ; ­®¬¥à «®£. ᥪâ®à 
@ -1539,17 +1567,5 @@ GET_OFFSET_IN_SECTORS:
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;!TODO fat32
;=======================================================================
;BPB
;LD (CORE_BUFFERS.FatBuffer.FAT2_SEC_L),HL
;LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_L),HL ; first sector DIR
;BPB32
;LD HL,(CORE_BUFFERS.BootSector+#2C) ;fat32 <20>¥à¢ë© ª« áâ¥à ª®à­¥¢®£® ª â «®£  (®¡ëç­® 2) 4 ¡ ©â 
;FAT Max Cluster
;LD (CORE_BUFFERS.FatBuffer.MaxClusterLow),HL
;=======================================================================
;//MODULE: FAT_X ;//MODULE: FAT_X
;[END] ;[END]

View File

@ -1,4 +1,5 @@
; MODULE KEYINTER
;[BEGIN] ;[BEGIN]
;//MODULE: KEYINTER Keyboard Scan Codes: Set 2 ;//MODULE: KEYINTER Keyboard Scan Codes: Set 2
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov ;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
@ -1271,3 +1272,4 @@ SHF2RUS DB #F1,Esc,"!",#22,"#","$",":",#2C,".",";","?","%","_","+",Bcs
;//MODULE: KEYINTER ;//MODULE: KEYINTER
;[END] ;[END]
; ENDMODULE

View File

@ -1,7 +1,7 @@
; ;
STRUCT _sStack ; 256 bytes STRUCT _sStack ; 256 bytes
.buffer BLOCK 256,0 .buffer BLOCK 256,0
.SPoint BYTE 0 ;.SPoint BYTE 0
ENDS ENDS
; ;
@ -76,23 +76,24 @@
; ;
STRUCT _sFatBuffer STRUCT _sFatBuffer
.DRIVE: BYTE #FF .DRIVE: BYTE #FF
.FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; [x] fat32 .FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; fat32
.CacheBlock: WORD #0000 .CacheBlock: WORD #0000
.CacheUpdated: BYTE #00 .CacheUpdated: BYTE #00
;.SectorsPerBank: BYTE #00 ;.SectorsPerBank: BYTE #00
.RootDirStartCluster_L: WORD #0000 .RootDirStartCluster_L: WORD #0000
.RootDirStartCluster_H: WORD #0000 ; [ ] fat32 .RootDirStartCluster_H: WORD #0000 ; fat32
.FAT1_SEC_L: WORD #0000 ; MSD_FAT_SEC first sector FAT (FAT_FRM) .FAT1_SEC_L: WORD #0000 ; MSD_FAT_SEC first sector FAT (FAT_FRM)
.FAT1_SEC_H: WORD #0000 ; [ ] fat32 .FAT1_SEC_H: WORD #0000 ; fat32
.FAT2_SEC_L: WORD #0000 .FAT2_SEC_L: WORD #0000
.FAT2_SEC_H: WORD #0000 ; [ ] fat32 .FAT2_SEC_H: WORD #0000 ; fat32
.Number_Of_FATs BYTE #02
.SectorsPerFAT_L WORD #0000 .SectorsPerFAT_L WORD #0000
.SectorsPerFAT_H BYTE #00 .SectorsPerFAT_H BYTE #00
.RootDirFirstSector_L: WORD #0000 ; MSD_CAT_SEC first sector DIR .RootDirFirstSector_L: WORD #0000 ; MSD_CAT_SEC first sector DIR
.RootDirFirstSector_H: WORD #0000 ; MSD_CAT_SEC first sector DIR ; !TODO ®£à ­¨ç¥­¨¥ ¢ 32 ƒ¨£  ;!FIXIT ­¥ ¨á¯®«ì§ã¥âáï .RootDirFirstSector_H: WORD #0000 ; MSD_CAT_SEC first sector DIR
.DirSizeInSectors: BYTE #00 ; DIR_SEC_SIZE .DirSizeInSectors: BYTE #00 ; DIR_SEC_SIZE
.FirstDataSector_L: WORD #0000 ; MSD_DAT_SEC low .FirstDataSector_L: WORD #0000 ; MSD_DAT_SEC low
.FirstDataSector_H: WORD #0000 ; MSD_DAT_SEC high ; [ ] fat32 ¡ë«® ®£à ­¨ç¥­¨¥ ¢ 32 ƒ¨£  .FirstDataSector_H: WORD #0000 ; MSD_DAT_SEC high
.BytesPerCluster: WORD #0000 ; CLUSTER_LEN .BytesPerCluster: WORD #0000 ; CLUSTER_LEN
.END_CHAIN_CLUSTER_L: WORD #FFFF .END_CHAIN_CLUSTER_L: WORD #FFFF
.END_CHAIN_CLUSTER_H: WORD #0FFF ; [ ] fat3 .END_CHAIN_CLUSTER_H: WORD #0FFF ; [ ] fat3
@ -123,5 +124,8 @@
.Stack _sStack ; 256 bytes .Stack _sStack ; 256 bytes
.Buffer BLOCK 512,0 ; FOR BUFFER & SECTOR_BUFFER .Buffer BLOCK 512,0 ; FOR BUFFER & SECTOR_BUFFER
.MemoryTable BLOCK 256,0 ; 256 bytes .MemoryTable BLOCK 256,0 ; 256 bytes
.CurrentPath WORD 0
.CurrentDirectory BLOCK DIRECTORY_PATH_LENGTH,0
.WorkDirectory BLOCK DIRECTORY_PATH_LENGTH,0
ENDS ENDS
; ;

View File

@ -1 +1 @@
982 983

View File

@ -27,9 +27,8 @@
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥ ;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////
DEFINE USE_FSINFO_FAT32 1 ; ­¥¤®¤¥« ­®. ­ã¦­® «¨?
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1 DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
DEFINE FAST_FAT_CASHE 1 ; !FIXIT ¡ £¨ ¯à¨ áâ¨à ­¨¨ DEFINE FAST_FAT_CASHE 1
SERVICE_SECTORS: SERVICE_SECTORS:
.FAT12 EQU #0FEF .FAT12 EQU #0FEF

View File

@ -1,6 +1,6 @@
MODULE MOUSE_DRV
;[BEGIN] ;[BEGIN]
;//MODULE: INTMOUSE ;//MODULE: MOUSE_DRV
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov ;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
;//UPDATE: 24-10-1999 DNS Restore module ;//UPDATE: 24-10-1999 DNS Restore module
@ -102,8 +102,7 @@ PORT_MOUSE.Data EQU Z84.SIO.Ch_B.Data
; 4 - CURSOR OFF (UZHE) ; 4 - CURSOR OFF (UZHE)
; 5 - CURSOR IMAGE VERY BIG ; 5 - CURSOR IMAGE VERY BIG
INTMOUS: API: BIT 7,C
BIT 7,C
JR NZ,EMOUSE JR NZ,EMOUSE
INC C INC C
DEC C DEC C
@ -340,7 +339,7 @@ MS_BCUR:
POP BC POP BC
POP HL POP HL
LD A,5 LD A,5
JR C,NOSAVEM JR C,.NOSAVEM
LD DE,M_IMAGE LD DE,M_IMAGE
EX DE,HL EX DE,HL
DI DI
@ -355,7 +354,7 @@ MS_BCUR:
LD D,C LD D,C
LD BC,0 LD BC,0
XOR A XOR A
NOSAVEM: .NOSAVEM:
EI EI
RET RET
@ -1032,6 +1031,6 @@ M_IMAGE:
BLOCK 256-($-M_IMAGE),0 BLOCK 256-($-M_IMAGE),0
.Size EQU $-M_IMAGE .Size EQU $-M_IMAGE
;//MODULE: INTMOUSE ;//MODULE: MOUSE_DRV
;[END] ;[END]
ENDMODULE