текст ошибки "Unknown Error". - исправлена ошибка приводящая к вылету при копировании нескольких файлов на уже существующие и выборе отмены от продолжения копирования.
664 lines
13 KiB
Plaintext
664 lines
13 KiB
Plaintext
|
|
; LAST UPDATE: 07.09.2025 savelij
|
|
|
|
;[]==========================================================[]
|
|
MarkFileR LD A,(IY+PANEL.FILES_ALL)
|
|
OR (IY+PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
|
RET NZ
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU3,,0
|
|
LD A,HIGH (CPU3)
|
|
CALL GET_HANDLE_ADR
|
|
LD E,(HL) ; FileHDR.Flag
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
BIT FileHDR.B_MARK,E
|
|
PUSH AF
|
|
CALL Z,SelectFile
|
|
POP AF
|
|
CALL NZ,UnSelectFile
|
|
CALL CursDown
|
|
CALL PrnFileInfo
|
|
LD B,0x07
|
|
.L2 PUSH BC
|
|
SPMOUSE MOUSEF.READ_STATE
|
|
POP BC
|
|
BIT 1,A
|
|
RET Z
|
|
HALT
|
|
DJNZ .L2
|
|
RET
|
|
|
|
;[]==========================================================[]
|
|
SelectFile: LD IXL,0x01
|
|
JR UnSelectFile.L1
|
|
|
|
UnSelectFile: LD IXL,0x00
|
|
.L1
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L2
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L2
|
|
SETPORT WINSP.CPU3,,0
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD A,HIGH (CPU3)
|
|
CALL GET_HANDLE_ADR
|
|
PUSH HL
|
|
LD DE,FileHDR.Attr
|
|
ADD HL,DE
|
|
LD C,(HL) ; FileHDR.Attr (ä« £¨ ®¯¨á ⥫ï FAT ä ©« )
|
|
POP HL
|
|
BIT DIR.B_Dir,C ; íâ® ¤¨à ?
|
|
IF MARK_DIR
|
|
PUSH HL
|
|
PUSH BC
|
|
CALL NZ,RESIDENT.CalcDirSize ; ¨§¬¥à¥¨¥ à §¬¥à ¤¨àë
|
|
POP BC
|
|
POP HL
|
|
ELSE
|
|
JR NZ,.MrFile1 ; ¤¨à¥ªâ®à¨¨ ª®¯¨à®¢ âì ¥ 㬥¥¬, ⮫쪮 ä ©«ë
|
|
ENDIF
|
|
; íâ® ä ©«
|
|
LD B,(HL) ; áâ ஥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©«
|
|
LD A,IXL
|
|
LD (HL),A ; ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©«
|
|
LD A,C
|
|
LD DE,WorkBuffer
|
|
PUSH BC
|
|
LD BC,FileHDR.SIZE
|
|
LDIR
|
|
IF MARK_DIR
|
|
BIT DIR.B_Dir,A ; ä ©« ¨«¨ ¤¨à
|
|
JR Z,.L8
|
|
; ª®¯¨à㥬 à §¬¥à ¢ ¡ ©â å ¢ à §¬¥à ¤¨àë
|
|
LD HL,JUMPS.FILES_BYTES
|
|
LD DE,WorkBuffer + FileHDR.SizeBytes
|
|
LD BC,DWORD
|
|
LDIR
|
|
ENDIF
|
|
.L8 POP BC
|
|
.MrFile1 POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
IF MARK_DIR = 0
|
|
BIT DIR.B_Dir,C
|
|
RET NZ ; ¢ë室 ¥á«¨ ¤¨à
|
|
ENDIF
|
|
LD A,B
|
|
CP IXL
|
|
RET Z ; ¢ë室 ¥á«¨ áâ ஥ ¨ ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ᮢ¯ «¨
|
|
BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
|
|
JR NZ,.MarkFull
|
|
; ¯à¨ ªà ⪮¬ ¯®ª §¥ ä ©«®¢
|
|
LD L,(IY+PANEL.CURR_FILE)
|
|
LD H,(IY+PANEL.CURR_FILE + 1)
|
|
LD E,L
|
|
LD D,H
|
|
ADD HL,HL
|
|
ADD HL,DE
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD DE,PositTABLeft
|
|
JR Z,.L3
|
|
LD DE,PositTABRight
|
|
.L3 ADD HL,DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
INC HL
|
|
LD C,(HL)
|
|
LD B,0x00
|
|
EX DE,HL
|
|
LD A,IXL
|
|
OR A
|
|
PUSH AF
|
|
LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
|
|
JR NZ,.L4
|
|
LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK)
|
|
.L4 LD IX,8 << 8 + 48
|
|
DEC HL
|
|
DEC HL
|
|
CALL ReplaceColorRectan
|
|
POP AF
|
|
JR NZ,.MarkExit1
|
|
JR .MarkExit2
|
|
|
|
; ¯à¨ ¯®«®¬ ¯®ª §¥ ä ©«®¢
|
|
.MarkFull LD L,(IY+PANEL.CURR_FILE)
|
|
LD H,(IY+PANEL.CURR_FILE + 1)
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
LD BC,0x003F
|
|
ADD HL,BC
|
|
LD C,L
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD HL,6
|
|
JR Z,.L5
|
|
LD HL,326
|
|
.L5 LD A,IXL
|
|
OR A
|
|
PUSH AF
|
|
LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
|
|
JR NZ,.L6
|
|
LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK)
|
|
.L6 LD IX,8 << 8 + 146
|
|
CALL ReplaceColorRectan
|
|
POP AF
|
|
JR Z,.MarkExit2
|
|
; ãáâ ®¢ª ¢ë¡®à ä ©«
|
|
.MarkExit1 LD IX,WorkBuffer
|
|
LD L,(IY + PANEL.FILES_MARK)
|
|
LD H,(IY + PANEL.FILES_MARK + 1)
|
|
INC HL
|
|
LD (IY + PANEL.FILES_MARK),L
|
|
LD (IY + PANEL.FILES_MARK + 1),H ; ®¡®¢«¥¨¥ ª®«¨ç¥á⢠¯®¬¥ç¥ëå ä ©«®¢
|
|
LD L,(IX + FileHDR.SizeBytes)
|
|
LD H,(IX + FileHDR.SizeBytes + 1)
|
|
LD E,(IY + PANEL.BYTES_MARK)
|
|
LD D,(IY + PANEL.BYTES_MARK + 1)
|
|
XOR A ; [ ] fat32
|
|
ADD HL,DE
|
|
LD (IY + PANEL.BYTES_MARK),L
|
|
LD (IY + PANEL.BYTES_MARK + 1),H ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 15-0
|
|
LD L,(IX + FileHDR.SizeBytes + 2)
|
|
LD H,(IX + FileHDR.SizeBytes + 3)
|
|
; [ ] fat32
|
|
LD E,(IY + PANEL.BYTES_MARK + 2)
|
|
LD D,(IY + PANEL.BYTES_MARK + 3)
|
|
ADC HL,DE
|
|
; [ ] fat32
|
|
ADC A,(IY + PANEL.BYTES_MARK_H)
|
|
LD (IY + PANEL.BYTES_MARK_H),A ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 32-39
|
|
LD (IY + PANEL.BYTES_MARK + 2),L
|
|
LD (IY + PANEL.BYTES_MARK + 3),H ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 31-15
|
|
RET
|
|
|
|
; áï⨥ ¢ë¡®à ä ©«
|
|
.MarkExit2 LD IX,WorkBuffer
|
|
LD L,(IY + PANEL.FILES_MARK)
|
|
LD H,(IY + PANEL.FILES_MARK + 1)
|
|
DEC HL
|
|
LD (IY + PANEL.FILES_MARK),L
|
|
LD (IY + PANEL.FILES_MARK + 1),H
|
|
LD L,(IY + PANEL.BYTES_MARK)
|
|
LD H,(IY + PANEL.BYTES_MARK + 1)
|
|
LD E,(IX + FileHDR.SizeBytes)
|
|
LD D,(IX + FileHDR.SizeBytes + 1)
|
|
XOR A
|
|
SBC HL,DE
|
|
LD (IY + PANEL.BYTES_MARK),L
|
|
LD (IY + PANEL.BYTES_MARK + 1),H
|
|
LD L,(IY + PANEL.BYTES_MARK + 2)
|
|
LD H,(IY + PANEL.BYTES_MARK + 3)
|
|
LD E,(IX + FileHDR.SizeBytes + 2)
|
|
LD D,(IX + FileHDR.SizeBytes + 3)
|
|
SBC HL,DE
|
|
; [ ] fat32
|
|
ADC A,(IY + PANEL.BYTES_MARK_H)
|
|
LD (IY + PANEL.BYTES_MARK_H),A
|
|
LD (IY + PANEL.BYTES_MARK + 2),L
|
|
LD (IY + PANEL.BYTES_MARK + 3),H
|
|
RET
|
|
|
|
;[]==========================================================[]
|
|
UnMarkGroupR: CALL ResInvert
|
|
UnMarkGroupRN: LD HL,SetInvert
|
|
PUSH HL
|
|
SUB A
|
|
JR SelectGroup
|
|
|
|
MarkGroupR: CALL ResInvert
|
|
MarkGroupRN: LD HL,SetInvert
|
|
PUSH HL
|
|
LD A,0x01
|
|
SelectGroup: LD (SelMode),A
|
|
LD A,(IY+PANEL.FILES_ALL)
|
|
OR (IY+PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
|
RET NZ
|
|
MAKEWINDOW WINSUBOBJ.STORE
|
|
W_MAIN 208,81,224,62
|
|
W_FILL 4,2,216,10,COLORI.BLACK
|
|
W_TEXT 82,3,COLORI.WHITE,"Select mask"
|
|
W_BUTTON 32,42,72,14
|
|
W_TEXT 60,45,COLORP.HIGHGRAY,"Ok"
|
|
W_BUTTON 120,42,72,14
|
|
W_TEXT 140,45,COLORP.HIGHGRAY,"Cancel"
|
|
W_TEXT 10,25,COLORP.HIGHGRAY,"Mark mask:"
|
|
W_BORDER 70,22,134,12
|
|
W_FILL 72,23,130,10,COLORI.WHITE
|
|
W_END
|
|
LD IX,SMaskStr
|
|
LD HL,REZ3TAB.SMaskTab
|
|
CALL InputLine
|
|
WINDOWCLOSE
|
|
RET C
|
|
LD A,(MaskLen)
|
|
OR A
|
|
RET Z
|
|
LD B,A
|
|
LD HL,CrSMask
|
|
CorMask
|
|
IF CORR_FILENAME
|
|
LD A,(HL)
|
|
CALL CorrBigChar
|
|
LD (HL),A
|
|
ENDIF
|
|
INC HL
|
|
DJNZ CorMask
|
|
LD HL,CrSMask
|
|
LD DE,SelMask
|
|
CALL MakeMask
|
|
JR C,MarkGNext
|
|
LD HL,NORMmask
|
|
LD DE,CrSMask
|
|
LD BC,MASK_SIZE
|
|
LDIR
|
|
LD HL,CrSMask
|
|
LD DE,SelMask
|
|
JP MakeMask
|
|
|
|
MarkGNext
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU3,,0
|
|
;!FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®® ¨«¨ ¥â SAFE_PORTY
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD IX,CPU3
|
|
LD HL,0xC000
|
|
LD DE,SelMask
|
|
EX AF,AF' ; [ ] fat32
|
|
EXX
|
|
LD L,(IY+PANEL.BYTES_MARK)
|
|
LD H,(IY+PANEL.BYTES_MARK + 1)
|
|
LD E,(IY+PANEL.BYTES_MARK + 2)
|
|
LD D,(IY+PANEL.BYTES_MARK + 3)
|
|
LD A,(IY+PANEL.BYTES_MARK_H) ; [ ] FAT32
|
|
LD C,(IY+PANEL.FILES_MARK)
|
|
LD B,(IY+PANEL.FILES_MARK + 1)
|
|
EXX
|
|
EX AF,AF' ; [ ] fat32
|
|
PUSH IY
|
|
LD IYL,0x00
|
|
SelMode EQU $-1
|
|
LD IYH,0x00
|
|
Select1 PUSH DE
|
|
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
|
JR NZ,Select8
|
|
LD A,IYL
|
|
CP (HL)
|
|
JR Z,Select8
|
|
PUSH HL
|
|
INC HL
|
|
LD B,8
|
|
Select2 LD A,(DE)
|
|
CP '?'
|
|
JR Z,Select3
|
|
CP (HL)
|
|
JR NZ,Select6
|
|
Select3 INC HL
|
|
INC DE
|
|
DJNZ Select2
|
|
INC HL
|
|
LD B,03
|
|
Select4 LD A,(DE)
|
|
CP '?'
|
|
JR Z,Select5
|
|
CP (HL)
|
|
JR NZ,Select6
|
|
Select5 INC HL
|
|
INC DE
|
|
DJNZ Select4
|
|
Select6 POP HL
|
|
JR NZ,Select8
|
|
LD IYH,0x01
|
|
LD A,IYL
|
|
LD (HL),A
|
|
OR A
|
|
CALL Z,SUB_SIZE
|
|
CALL NZ,ADD_SIZE
|
|
Select8: LD DE,FileHDR.SIZE
|
|
ADD HL,DE
|
|
ADD IX,DE
|
|
POP DE
|
|
LD A,(IX + FileHDR.Name)
|
|
OR A
|
|
JR NZ,Select1
|
|
LD A,IYH
|
|
EX AF,AF'
|
|
POP IY
|
|
EXX
|
|
LD (IY+PANEL.BYTES_MARK),L
|
|
LD (IY+PANEL.BYTES_MARK + 1),H
|
|
LD (IY+PANEL.BYTES_MARK + 2),E
|
|
LD (IY+PANEL.BYTES_MARK + 3),D
|
|
LD (IY+PANEL.BYTES_MARK_H),A ; [ ] FAT32
|
|
LD (IY+PANEL.FILES_MARK),C
|
|
LD (IY+PANEL.FILES_MARK + 1),B
|
|
EXX
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
EX AF,AF'
|
|
OR A
|
|
RET Z
|
|
CALL PrintDIR
|
|
JP PrnFileInfo
|
|
|
|
SMaskStr: DEFB 0x0C,0x00,0x00,0x00
|
|
MaskLen: DEFB 0x03
|
|
DEFW 282,106
|
|
DEFW 104
|
|
DEFB 0xF0
|
|
CrSMask: DEFB "*.*"
|
|
DB 10 DUP 0
|
|
SelMask: DEFB "???????????"
|
|
|
|
MakeMask LD BC,0x0902
|
|
SMaskLp LD A,(HL)
|
|
CP '!'
|
|
RET C
|
|
CP '\"'
|
|
RET Z
|
|
CP '*'
|
|
JR Z,SMask1
|
|
CP '+'
|
|
RET Z
|
|
CP ','
|
|
RET Z
|
|
CP '.'
|
|
JR Z,SMask2
|
|
CP '/'
|
|
RET Z
|
|
CP ':'
|
|
RET Z
|
|
CP ';'
|
|
RET Z
|
|
CP '<'
|
|
RET Z
|
|
CP '='
|
|
RET Z
|
|
CP '>'
|
|
RET Z
|
|
CP '['
|
|
RET Z
|
|
CP '\\'
|
|
RET Z
|
|
CP ']'
|
|
RET Z
|
|
CP '|'
|
|
RET Z
|
|
IF CORR_FILENAME
|
|
CALL CorrBigChar
|
|
ENDIF
|
|
LD (DE),A
|
|
INC HL
|
|
INC DE
|
|
DJNZ SMaskLp
|
|
AND A
|
|
RET
|
|
|
|
SMask1 LD A,'?'
|
|
INC HL
|
|
DJNZ SMask11
|
|
AND A
|
|
RET
|
|
|
|
SMask11 LD (DE),A
|
|
INC DE
|
|
DJNZ SMask11
|
|
INC B
|
|
JR SMaskLp
|
|
|
|
SMask2 LD A,' '
|
|
INC HL
|
|
DJNZ SMask21
|
|
LD B,0x04
|
|
DEC C
|
|
JR NZ,SMaskLp
|
|
AND A
|
|
RET
|
|
|
|
SMask21 LD (DE),A
|
|
INC DE
|
|
DJNZ SMask21
|
|
LD B,0x04
|
|
DEC C
|
|
JR NZ,SMaskLp
|
|
AND A
|
|
RET
|
|
|
|
;[]==========================================================[]
|
|
SelectAllR: CALL ResInvert
|
|
SelectAllRN: LD HL,SetInvert
|
|
PUSH HL
|
|
LD A,(IY + PANEL.FILES_ALL)
|
|
OR (IY + PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
RET NZ
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU3,,0
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD IX,CPU3
|
|
LD BC,FileHDR.SIZE
|
|
EX AF,AF' ; [ ] fat32
|
|
SUB A
|
|
LD L,A
|
|
LD H,L
|
|
LD E,L
|
|
LD D,H
|
|
EXX
|
|
LD L,A
|
|
LD H,L
|
|
EXX
|
|
EX AF,AF' ; [ ] fat32
|
|
.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE DIRECTORY
|
|
JR NZ,.SelAll1
|
|
; ¬ ન஢ª ⮫쪮 ä ©«®¢
|
|
PUSH BC
|
|
SET FileHDR.B_MARK,(IX + FileHDR.Flag)
|
|
LD C,(IX + FileHDR.SizeBytes)
|
|
LD B,(IX + FileHDR.SizeBytes + 1)
|
|
EX AF,AF' ; [ ] fat32
|
|
ADD HL,BC
|
|
LD C,(IX + FileHDR.SizeBytes + 2)
|
|
LD B,(IX + FileHDR.SizeBytes + 3)
|
|
EX DE,HL
|
|
ADC HL,BC
|
|
EX DE,HL
|
|
ADC A,0
|
|
EX AF,AF' ; [ ] fat32
|
|
EXX
|
|
INC HL
|
|
EXX
|
|
; LD BC,FileHDR.SIZE
|
|
POP BC
|
|
.SelAll1: ADD IX,BC
|
|
LD A,(IX + FileHDR.Name)
|
|
OR A
|
|
JR NZ,.loop
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
EXX
|
|
LD E,(IY+PANEL.FILES_MARK)
|
|
LD D,(IY+PANEL.FILES_MARK + 1)
|
|
OR A
|
|
SBC HL,DE
|
|
RET Z
|
|
ADD HL,DE
|
|
LD (IY+PANEL.FILES_MARK),L
|
|
LD (IY+PANEL.FILES_MARK + 1),H
|
|
EXX
|
|
LD (IY+PANEL.BYTES_MARK),L
|
|
LD (IY+PANEL.BYTES_MARK + 1),H
|
|
LD (IY+PANEL.BYTES_MARK + 2),E
|
|
LD (IY+PANEL.BYTES_MARK + 3),D
|
|
; [ ] FAT32
|
|
EX AF,AF'
|
|
LD (IY + PANEL.BYTES_MARK_H),A
|
|
CALL PrintDIR
|
|
JP PrnFileInfo
|
|
|
|
;[]==========================================================[]
|
|
UnSelectAllR: CALL ResInvert
|
|
UnSelectAllRN: LD HL,SetInvert
|
|
PUSH HL
|
|
LD A,(IY + PANEL.FILES_ALL)
|
|
OR (IY + PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
RET NZ
|
|
LD A,(IY + PANEL.FILES_MARK)
|
|
OR (IY + PANEL.FILES_MARK + 1)
|
|
RET Z
|
|
PUSH IY
|
|
POP HL
|
|
LD BC,PANEL.FILES_MARK
|
|
ADD HL,BC
|
|
LD B,PANEL.FILE_MASK - PANEL.FILES_MARK
|
|
.L2 LD (HL),0
|
|
INC HL
|
|
DJNZ .L2
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU3,,0
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD HL,CPU3
|
|
LD BC,FileHDR.SIZE + 1
|
|
UnSelA1: RES 0,(HL)
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
DEC HL
|
|
OR A
|
|
JR NZ,UnSelA1
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
CALL PrintDIR
|
|
JP PrnFileInfo
|
|
|
|
;[]==========================================================[]
|
|
InvertSelectR: CALL ResInvert
|
|
InvertSelectRN: LD HL,SetInvert
|
|
PUSH HL
|
|
LD A,(IY+PANEL.FILES_ALL)
|
|
OR (IY+PANEL.FILES_ALL + 1)
|
|
RET Z
|
|
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
|
RET NZ
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU3,,0
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD IX,0xC000
|
|
LD DE,FileHDR.SIZE
|
|
LD B,0x00
|
|
EX AF,AF' ; [ ] fat32
|
|
EXX
|
|
LD L,(IY + PANEL.BYTES_MARK)
|
|
LD H,(IY + PANEL.BYTES_MARK + 1)
|
|
LD E,(IY + PANEL.BYTES_MARK + 2)
|
|
LD D,(IY + PANEL.BYTES_MARK + 3)
|
|
LD A,(IY + PANEL.BYTES_MARK_H) ; [ ] FAT32
|
|
LD C,(IY + PANEL.FILES_MARK)
|
|
LD B,(IY + PANEL.FILES_MARK + 1)
|
|
EXX
|
|
EX AF,AF' ; [ ] fat32
|
|
.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE Dir
|
|
JR NZ,.InvSel3
|
|
LD B,FileHDR.M_MARK
|
|
LD A,(IX + FileHDR.Flag)
|
|
XOR B
|
|
LD (IX + FileHDR.Flag),A
|
|
CALL Z,SUB_SIZE
|
|
CALL NZ,ADD_SIZE
|
|
.InvSel3: ADD IX,DE
|
|
LD A,(IX + FileHDR.Name)
|
|
OR A
|
|
JR NZ,.loop
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
EX AF,AF' ; [ ] fat32
|
|
EXX
|
|
LD (IY + PANEL.BYTES_MARK),L
|
|
LD (IY + PANEL.BYTES_MARK + 1),H
|
|
LD (IY + PANEL.BYTES_MARK + 2),E
|
|
LD (IY + PANEL.BYTES_MARK + 3),D
|
|
LD (IY + PANEL.BYTES_MARK_H),A ; [ ] FAT32
|
|
LD (IY + PANEL.FILES_MARK),C
|
|
LD (IY + PANEL.FILES_MARK + 1),B
|
|
EXX
|
|
LD A,B
|
|
OR A
|
|
RET Z
|
|
CALL PrintDIR
|
|
JP PrnFileInfo
|
|
|
|
ADD_SIZE: EX AF,AF' ; [ ] fat32
|
|
EXX
|
|
PUSH BC
|
|
LD C,(IX + FileHDR.SizeBytes)
|
|
LD B,(IX + FileHDR.SizeBytes + 1)
|
|
ADD HL,BC
|
|
LD C,(IX + FileHDR.SizeBytes + 2)
|
|
LD B,(IX + FileHDR.SizeBytes + 3)
|
|
EX DE,HL
|
|
ADC HL,BC
|
|
EX DE,HL
|
|
ADC A,0 ; [ ] fat32
|
|
POP BC
|
|
INC BC
|
|
EXX
|
|
EX AF,AF' ; [ ] fat32
|
|
RET
|
|
|
|
SUB_SIZE: EX AF,AF' ; [ ] fat32
|
|
EXX
|
|
PUSH BC
|
|
LD C,(IX + FileHDR.SizeBytes)
|
|
LD B,(IX + FileHDR.SizeBytes + 1)
|
|
OR A
|
|
SBC HL,BC
|
|
LD C,(IX + FileHDR.SizeBytes + 2)
|
|
LD B,(IX + FileHDR.SizeBytes + 3)
|
|
EX DE,HL
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
SBC A,0 ; [ ] fat32
|
|
POP BC
|
|
DEC BC
|
|
EXX
|
|
EX AF,AF'
|
|
RET
|