драйвер мышки перенесён в страницу драйверов. для 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
; 丟咧 郊膉删陋, 漅 <E295B3><E59D8E>布摬 睼<> 栽芥<E6A0BD> 能刻咧
PUSH AF
LD HL,CurrentDirectory
LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR
POP AF
RET

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -318,17 +318,17 @@ FINDDIR:
LD A,(IX + FAT_DIRECTORY_RECORD.NAME + 1)
CP "."
JP NZ,.IT_DIR
LD HL,WorkDirectory
LD HL,CORE_BUFFERS.WorkDirectory
LD D,H
LD E,L
INC HL
LD BC,WorkDirectory.DEPTH
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
XOR A
CPIR
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª  ­  ¢ë室 §  £à ­¨æë
DEC HL ;R009
DEC HL
LD BC,WorkDirectory.DEPTH
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH
LD A,'\'
CPDR
INC HL
@ -353,8 +353,8 @@ FINDDIR:
RET
;
.ADDSPEC:
LD HL,WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1
LD HL,CORE_BUFFERS.WorkDirectory+1
LD BC,CORE_BUFFERS.WorkDirectory.DEPTH-1
CALL .CHECK_SLASH
JR C,.error
;R011
@ -458,7 +458,7 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE
CALL LOADDIR
; CF=0
LD HL,WorkDirectory
LD HL,CORE_BUFFERS.WorkDirectory
LD (HL),'\'
INC HL
LD (HL),#00
@ -712,7 +712,6 @@ RD_BPB: ; LD C,SLOT3
LD (CORE_BUFFERS.FatBuffer.SectorsPerCluster),A
; calc. first sector FAT
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.FAT2_SEC_L),HL ; low word first sector FAT #2
;[ ] fat32
@ -735,8 +734,8 @@ RD_BPB: ; LD C,SLOT3
LD (CORE_BUFFERS.FatBuffer.SectorsPerFAT_H),A
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerFAT32)
.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 (CORE_BUFFERS.FatBuffer.Number_Of_FATs),A
CP 1
JR Z,.one_FAT
DEC A
@ -951,10 +950,37 @@ RD_BPB: ; LD C,SLOT3
LD A,FAT_TYPE.x12
JR .set_vars
;
.its_FAT32: EXX
LD HL,CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.LABEL
.its_FAT32: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.MainFATnumber)
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
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
;
.fat_calc_loop: ADD HL,DE
EXX
ADC HL,DE
EXX
DJNZ .fat_calc_loop
;
.first_FAT_active:
LD (CORE_BUFFERS.FatBuffer.FAT1_SEC_L),HL
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
;
.mirrored_FATs: ;
LD HL,CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT32.LABEL
;
EXX
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster)
LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_L),HL
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster+2)
@ -982,7 +1008,7 @@ RD_BPB: ; LD C,SLOT3
LD DE,CORE_BUFFERS.FatBuffer.BPB_LABEL
LD BC,11 ;!HARDCODE
LDIR
;
SET_PAGE_X FATPAGE
PUSH AF
LD DE,0
@ -1006,43 +1032,7 @@ RD_BPB: ; LD C,SLOT3
XOR A
RET
;
.set_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
.set_FSinfo: CALL READ_FSinfo
; !FIXIT ¯à®¢¥àª  ­  ®è¨¡ªã
;
; ¯à®¢¥àª  ®¤­®© ¨§ á®â­¨ áà ­ëå ᨣ­ âãà
@ -1101,7 +1091,6 @@ RD_BPB: ; LD C,SLOT3
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh)
SBC HL,DE
RET
ENDIF
;;;;;;;;
; --> BC:HL - Sector

View File

@ -647,11 +647,7 @@ WRITE_FAT_TABLE:
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
CALL GET_SECTOR_OF_FAT
; B=0, C:HL - ᬥ饭¨¥ ¢ ᥪâ®à å ¢­ãâਠ⠡«¨æë FAT ­  ­ ç «® ¡«®ª 
; [x] fat32 ;!FIXIT
LD (.save_hl),HL
;LD B,H
;LD C,L
;
LD (.save_offset_HL),HL
LD DE,FAT_CACHE.Sectors_32
LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
CP FAT_TYPE.x32
@ -675,7 +671,7 @@ WRITE_FAT_TABLE:
.sub_A+1: SBC A,0
JR C,.WALLFAT ; F=1: ­¥ ¢ë室¨â
OR A
JR NZ,.ERR
JP NZ,.ERR
;
EX DE,HL
; DE - ­  ᪮«ìª® ᥪâ®à®¢ ª®­¥æ ¡«®ª  ¢ë室¨â §  ¯à¥¤¥«ë â ¡«¨æë.
@ -686,18 +682,12 @@ WRITE_FAT_TABLE:
JR C,.ERR ;!TODO ¯à®¢¥à¨âì
LD B,L ; ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè
.WALLFAT: ;
.save_hl+1: LD HL,0
;LD H,B
;LD L,C
;PUSH HL
;
.pop_offset_HL+1:
LD HL,0
; B = ç¨á«® ᥪâ®à®¢
LD IX,(CORE_BUFFERS.FatBuffer.FAT1_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.FAT1_SEC_L)
;LD B,A
;LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
PUSH BC
;
; á®å࠭塞 ¯¥à¢ãî ª®¯¨î FAT. ‚室 IX:DE - ­ ç «® â ¡«¨æë FAT
; C:HL - ᬥ饭¨¥ ¢­ãâਠ⠡«¨æë
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢
@ -715,12 +705,51 @@ WRITE_FAT_TABLE:
SBC HL,DE
JR Z,.only_one_FAT
;
; á®å࠭塞 ¢â®àãî ª®¯¨î FAT
.not_one_FAT: LD IX,(CORE_BUFFERS.FatBuffer.FAT2_SEC_H)
LD DE,(CORE_BUFFERS.FatBuffer.FAT2_SEC_L)
LD HL,(.save_hl)
.not_one_FAT: LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
CP FAT_TYPE.x32
JR NZ,.fat_num_2
;
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
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: ;
.ERR: LD A,0
LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
@ -729,7 +758,6 @@ WRITE_FAT_TABLE:
; C:HL - ᬥ饭¨¥ ¢ â ¡«¨æ¥ ¢ ᥪâ®à å
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢
.SAVE_FAT_XX: ADD HL,DE
;EX DE,HL
JR NC,.no_inc_C
INC C
; ­®¬¥à «®£. ᥪâ®à 
@ -1539,17 +1567,5 @@ GET_OFFSET_IN_SECTORS:
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
;[END]

View File

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

View File

@ -1,7 +1,7 @@
;
STRUCT _sStack ; 256 bytes
.buffer BLOCK 256,0
.SPoint BYTE 0
;.SPoint BYTE 0
ENDS
;
@ -76,23 +76,24 @@
;
STRUCT _sFatBuffer
.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
.CacheUpdated: BYTE #00
;.SectorsPerBank: BYTE #00
.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_H: WORD #0000 ; [ ] fat32
.FAT1_SEC_H: WORD #0000 ; fat32
.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_H BYTE #00
.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
.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
.END_CHAIN_CLUSTER_L: WORD #FFFF
.END_CHAIN_CLUSTER_H: WORD #0FFF ; [ ] fat3
@ -123,5 +124,8 @@
.Stack _sStack ; 256 bytes
.Buffer BLOCK 512,0 ; FOR BUFFER & SECTOR_BUFFER
.MemoryTable BLOCK 256,0 ; 256 bytes
.CurrentPath WORD 0
.CurrentDirectory BLOCK DIRECTORY_PATH_LENGTH,0
.WorkDirectory BLOCK DIRECTORY_PATH_LENGTH,0
ENDS
;

View File

@ -1 +1 @@
982
983

View File

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

View File

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