текст ошибки "Unknown Error". - исправлена ошибка приводящая к вылету при копировании нескольких файлов на уже существующие и выборе отмены от продолжения копирования.
2817 lines
52 KiB
Plaintext
2817 lines
52 KiB
Plaintext
|
||
; LAST UPDATE: 22.01.2026 savelij
|
||
|
||
;[]==========================================================[]
|
||
CopyFilesR LD A,(IY + PANEL.FILES_ALL)
|
||
OR (IY + PANEL.FILES_ALL + 1)
|
||
RET Z ; ä ©«®¢ ¥â
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
RET NZ ; ०¨¬ ®â®¡à ¦¥¨ï ¯ ¥«¨ - ¤¥à¥¢®
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD A,(IY + PANEL.FILES_MARK)
|
||
OR (IY + PANEL.FILES_MARK + 1)
|
||
JP NZ,CopyMark ; ¥áâì ¯®¬¥ç¥ë¥ ä ©«ë
|
||
; ª®¯¨à®¢ ¨¥ ä ©« /¤¨àë ¯®¤ ªãàá®à®¬, ¡¥§ ¯®¬¥âª¨
|
||
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 IX,WorkBuffer
|
||
LD A,HIGH (CPU3)
|
||
CALL GET_HANDLE_ADR
|
||
LD (COPY.PathCurrFile),HL
|
||
LD DE,WorkBuffer
|
||
LD BC,FileHDR.SIZE
|
||
LDIR
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
||
IF MARK_DIR
|
||
JP NZ,.InitCopyDir
|
||
ELSE
|
||
RET NZ
|
||
ENDIF
|
||
LD HL,0
|
||
LD (COPY.CopyFiles),HL
|
||
LD L,(IX + FileHDR.SizeBytes)
|
||
LD H,(IX + FileHDR.SizeBytes + 1)
|
||
LD (COPY.CopyBytes),HL
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
LD (COPY.CopyBytes + 2),DE
|
||
CALL ConvBytes2Pages
|
||
JP CopyNxt
|
||
|
||
IF MARK_DIR
|
||
; ª®¯¨à®¢ ¨¥ ¤¨àë á® ¢á¥¬ ᮤ¥à¦¨¬ë¬ ¯®¤ ªãàá®à®¬
|
||
.InitCopyDir LD HL,(COPY.PathCurrFile)
|
||
PUSH HL
|
||
CALL CalcDirSizeR ; ¨§¬¥à¥¨¥ à §¬¥à ¤¨à¥ªâ®à¨¨ á ä ©« ¬¨
|
||
POP HL
|
||
LD (COPY.PathCurrFile),HL
|
||
LD HL,JUMPS.FILES_BYTES
|
||
LD DE,COPY.CopyBytes
|
||
LD BC,DWORD + 1
|
||
LDIR ; § ¡à «¨ à §¬¥à ¤¨à¥ªâ®à¨¨
|
||
LD (COPY.CopyFiles),BC ; ª®«¨ç¥á⢮ 㦥 ᪮¯¨à®¢ ëå ä ©«®¢
|
||
CALL StorePaths ; á®åà ¥¨¥ ⥪ã騩 ¯ã⥩ ¯ ¥«¥©
|
||
LD HL,(COPY.CopyBytes)
|
||
LD DE,(COPY.CopyBytes + 2)
|
||
CALL ConvBytes2Pages ; ¯¥à¥áç¥â ¢ ª®«¨ç¥á⢮ áâà ¨æ ¤«ï ª®¯¨à®¢ ¨ï
|
||
JP CopyNxt
|
||
ENDIF
|
||
|
||
; ª®¯¨à®¢ ¨¥ ¯®¬¥ç¥ëå ä ©«®¢
|
||
CopyMark LD L,(IY + PANEL.FILES_MARK)
|
||
LD H,(IY + PANEL.FILES_MARK + 1)
|
||
LD (COPY.CopyFiles),HL
|
||
LD L,(IY + PANEL.BYTES_MARK)
|
||
LD H,(IY + PANEL.BYTES_MARK + 1)
|
||
LD (COPY.CopyBytes),HL
|
||
LD L,(IY + PANEL.BYTES_MARK + 2)
|
||
LD H,(IY + PANEL.BYTES_MARK + 3)
|
||
LD (COPY.CopyBytes + 2),HL
|
||
; [ ] fat32
|
||
LD A,(IY + PANEL.BYTES_MARK_H)
|
||
LD (COPY.CopyBytes + 4),A
|
||
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 HL,CPU3 - FileHDR.SIZE
|
||
LD BC,FileHDR.SIZE
|
||
.L2 ADD HL,BC
|
||
BIT FileHDR.B_MARK,(HL)
|
||
JR Z,.L2
|
||
LD (COPY.PathCurrFile),HL
|
||
PUSH HL
|
||
POP IX
|
||
SUB A
|
||
LD L,A
|
||
LD H,A
|
||
LD E,L
|
||
LD D,H
|
||
CopyLp0 BIT FileHDR.B_MARK,(IX + FileHDR.Flag)
|
||
JR Z,CopyNx2
|
||
PUSH BC
|
||
PUSH DE
|
||
PUSH HL
|
||
LD L,(IX + FileHDR.SizeBytes)
|
||
LD H,(IX + FileHDR.SizeBytes + 1)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
CALL ConvBytes2Pages
|
||
POP BC
|
||
ADD HL,BC
|
||
POP BC
|
||
EX DE,HL
|
||
ADC HL,BC
|
||
EX DE,HL
|
||
POP BC
|
||
CopyNx2 ADD IX,BC
|
||
LD A,(IX + FileHDR.Name)
|
||
OR A
|
||
JR NZ,CopyLp0
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
; DEHL - ª®«¨ç¥á⢮ áâà ¨æ ª®¯¨à®¢ ¨ï
|
||
CopyNxt LD IX,ProcessAll
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
ADC HL,HL
|
||
EX DE,HL
|
||
LD (IX + PROGRESSBAR.MAX_PAGES),L
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 1),H
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 2),E
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 3),D
|
||
CALL InitProgressBar
|
||
CALL ResInvert
|
||
LD HL,SetInvert
|
||
PUSH HL
|
||
; § ¯à®á ¯ã⨠ª®¯¨à®¢ ¨ï
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 96,81,448,62
|
||
W_FILL 4,2,440,10,COLORI.BLACK
|
||
W_TEXT 210,3,COLORI.WHITE,"Copy"
|
||
W_BUTTON 144,42,72,14
|
||
W_TEXT 172,45,COLORP.HIGHGRAY,"Ok"
|
||
W_BUTTON 232,42,72,14
|
||
W_TEXT 252,45,COLORP.HIGHGRAY,"Cancel"
|
||
W_TEXT 22,25,COLORP.HIGHGRAY,"Copy to:"
|
||
W_BORDER 70,22,332,12
|
||
W_FILL 72,23,328,10,COLORI.WHITE
|
||
W_END
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,LeftPanel
|
||
JR NZ,.L1
|
||
LD HL,RightPanel
|
||
.L1 LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
LD (.NEWPATH),HL ; ªã¤ ¢®§¢à é âì ®â। ªâ¨à®¢ ë© ¯ãâì
|
||
LD DE,CurPath
|
||
SUB A
|
||
LD C,A
|
||
.L2 LDI
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
LD (DE),A
|
||
SUB C
|
||
LD (PathLen),A
|
||
LD IX,PathStr
|
||
LD HL,REZ2TAB.PathTab
|
||
CALL InputLine
|
||
WINDOWCLOSE
|
||
RET C
|
||
LD A,(PathLen)
|
||
OR A
|
||
RET Z
|
||
PUSH IY
|
||
SPDSS DSSF.INFOMEM
|
||
POP IY
|
||
LD (COPY.FreeBanks),BC
|
||
LD A,B
|
||
OR C
|
||
LD A,ERR_DSS.NOT_ENOUGH_MEMORY
|
||
JP Z,DOSError ;!!!!!!!!!!!! <20>¥â ¯ ¬ïâ¨
|
||
; ¨¤¨ª æ¨ï ¯à®æ¥áá ª®¯¨à®¢ ¨ï
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 160,81,320,78
|
||
W_FILL 4,2,312,10,COLORI.BLACK
|
||
W_TEXT 148,3,COLORI.WHITE,"Copy"
|
||
W_TEXT 8,16,COLORP.HIGHGRAY,"From:"
|
||
W_TEXT 22,26,COLORP.HIGHGRAY,"to:"
|
||
W_BORDER 16,38,288,12
|
||
W_FILL 18,39,284,10,COLORI.WHITE
|
||
W_BORDER 16,56,288,12
|
||
W_FILL 18,57,284,10,COLORI.WHITE
|
||
W_END
|
||
XOR A
|
||
LD (COPY.OverWriteFlg),A
|
||
LD HL,CurPath
|
||
LD DE,0 ; ¤à¥á ®â। ªâ¨à®¢ ®£® ¯ã⨠¯à¨¥¬¨ª
|
||
.NEWPATH EQU $-2
|
||
.NP1 LDI
|
||
CP (HL)
|
||
JR NZ,.NP1
|
||
LD (DE),A
|
||
CALL DIRLIST.InitCopyDirs
|
||
CALL PointerMouseClock
|
||
PUSH IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD (CopyDir.CURR_PANEL),IY ; ¯à¨ ª®¯¨à®¢ ¨¨ ä ©« ¯®àâ¨âáï
|
||
IF MARK_DIR
|
||
; ⥪ãéãî ¤¨à¥ªâ®à¨î £à㧨¬ ¢ ᢮¡®¤ãî áâà ¨æã
|
||
LD A,(RAMPAGES.BuffPg3)
|
||
SETPORT WINSP.CPU3,,0
|
||
SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
CALL ReadDIR
|
||
ELSE
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L3
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L3
|
||
SETPORT WINSP.CPU3,,0
|
||
ENDIF
|
||
; ª®¯¨à®¢ ¨¥ ä ©«®¢/¤¨à¥ªâ®à¨©
|
||
CopyNextFile LD IX,(COPY.PathCurrFile)
|
||
IF MARK_DIR
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
||
JR Z,.CopyFile
|
||
; § ®á¨¬ ¨¬ï ¤¨àë ¢ ᯨ᮪ ¤«ï ¤ «ì¥©è¥£® ª®¯¨à®¢ ¨ï
|
||
CALL DIRLIST.ADD_DIRNAME
|
||
JP .NextHandle
|
||
ENDIF
|
||
|
||
; ª®¯¨à®¢ ¨¥ ä ©« /¤¨à¥ªâ®à¨¨
|
||
.CopyFile PUSH IX
|
||
CALL PrintSrcDst
|
||
POP IX
|
||
LD L,(IX + FileHDR.SizeBytes)
|
||
LD H,(IX + FileHDR.SizeBytes + 1)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
LD (COPY.CurrReadBytes),HL
|
||
LD (COPY.CurrReadBytes + 2),DE
|
||
LD (COPY.CurrWriteBytes),HL
|
||
LD (COPY.CurrWriteBytes + 2),DE
|
||
CALL ConvBytes2Pages
|
||
LD (.PagesLow),HL
|
||
LD (.PagesHigh),DE
|
||
LD IX,ProcessOne
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
ADC HL,HL
|
||
EX DE,HL
|
||
LD (IX + PROGRESSBAR.MAX_PAGES),L
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 1),H
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 2),E
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 3),D
|
||
CALL InitProgressBar
|
||
CALL DrawProgressBar
|
||
LD HL,(COPY.FreeBanks)
|
||
LD DE,0x0000
|
||
.PagesHigh EQU $-2
|
||
LD A,D
|
||
OR E
|
||
JR NZ,.CopyLp1
|
||
LD DE,0x0000
|
||
.PagesLow EQU $-2
|
||
OR A
|
||
SBC HL,DE
|
||
JR NC,.L1
|
||
ADD HL,DE
|
||
.CopyLp1 EX DE,HL
|
||
.L1 LD B,E
|
||
SPDSS DSSF.GETMEM
|
||
LD (COPY.MemID),A
|
||
LD HL,PagesList
|
||
SPBIOS BIOSF.GETMEMBLKPAGES
|
||
LD HL,(COPY.PathSrc) ; ®âªàë¢ ¥¬ ä ©« ¨áâ®ç¨ª
|
||
SPDSS DSSF.CHDIR
|
||
JP C,CopyError1
|
||
LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
CALL MakeDOSname
|
||
POP HL
|
||
SPDSS DSSF.OPEN,,FILEMODE.R ; ®âªàë⨥ ç⥨¥
|
||
JP C,CopyError1
|
||
LD (COPY.FHandleSrc),A
|
||
LD HL,(COPY.PathDst) ; ¬¥ï¥¬ ¯ãâì ¯ãâì ªã¤ ª®¯¨à®¢ âì
|
||
SPDSS DSSF.CHDIR
|
||
JP C,CopyError2
|
||
LD IX,(COPY.PathCurrFile)
|
||
LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
CALL MakeDOSname
|
||
POP HL
|
||
LD A,(COPY.OverWriteFlg)
|
||
OR A
|
||
LD C,DSSF.CREAT_N
|
||
JR Z,.L2
|
||
LD C,DSSF.CREATE
|
||
.L2 LD A,(IX + FileHDR.Attr)
|
||
SPDSS ; á®§¤ ¨¥ ä ©«
|
||
LD (COPY.FHandleDst),A
|
||
JR NC,.CopyLp2
|
||
CP ERR_DSS.FILE_EXISTS
|
||
JP NZ,CopyError2
|
||
CALL OverWrite ; ä ©« áãé¥áâ¢ã¥â, § ¯à®á ¯¥à¥§ ¯¨áì
|
||
AND A ; OverWrite.REWRITE
|
||
JR Z,.CopyLp2 ; ¯à®¤®«¦ âì á ¯¥à¥§ ¯¨áìî
|
||
DEC A ; OverWrite.SKIP
|
||
JP Z,CopyNextFile.CloseFile1 ; ¯à®¯ã᪠ª®¯¨à®¢ ¨ï
|
||
; ¯à¥àë¢ ¨¥ ª®¯¨à®¢ ¨ï OverWrite.BREAK
|
||
LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.CLOSE
|
||
LD A,(COPY.MemID)
|
||
SPDSS DSSF.FREEMEM
|
||
JP CopyEnd
|
||
|
||
; ¯¥à¥§ ¯¨áì ä ©« ¨ ¯à®¤®«¦¥¨¥
|
||
.CopyLp2 LD HL,(COPY.CurrReadBytes)
|
||
LD A,H
|
||
OR L
|
||
LD HL,(COPY.CurrReadBytes + 2)
|
||
OR H
|
||
OR L
|
||
JP Z,.CloseFiles
|
||
.ReadFile
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD HL,PagesList
|
||
LD A,(HL)
|
||
.ReadLp1 INC HL
|
||
PUSH HL
|
||
SETPORT WINSP.CPU3,,0
|
||
SPDSS DSSF.SCANKEY
|
||
LD HL,SC.ESC << 8 | 0x1B
|
||
OR A
|
||
SBC HL,DE
|
||
JP Z,CopyBreak
|
||
LD HL,(COPY.CurrReadBytes)
|
||
LD DE,(COPY.CurrReadBytes + 2)
|
||
LD BC,0x4000
|
||
OR A
|
||
SBC HL,BC
|
||
LD B,0x00
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
JR C,.ReadEnd
|
||
LD (COPY.CurrReadBytes),HL
|
||
LD (COPY.CurrReadBytes + 2),DE
|
||
LD HL,0xC000
|
||
LD DE,0x4000
|
||
LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.READ
|
||
CALL NextProcess
|
||
POP HL
|
||
LD A,(HL)
|
||
CP 0xFF
|
||
JR NZ,.ReadLp1
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
JR .WriteFile
|
||
|
||
; !FIXIT ᤥ« âì â ª:
|
||
.ReadEnd: LD HL,0xC000
|
||
LD DE,(COPY.CurrReadBytes)
|
||
LD A,D
|
||
OR E
|
||
JR Z,.L3
|
||
LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.READ
|
||
CALL NextProcess
|
||
.L3 POP HL
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
.WriteFile
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD HL,PagesList
|
||
LD A,(HL)
|
||
.WriteL1 INC HL
|
||
PUSH HL
|
||
SETPORT WINSP.CPU3,,0
|
||
SPDSS DSSF.SCANKEY
|
||
LD HL,SC.ESC << 8 | 0x1B
|
||
OR A
|
||
SBC HL,DE
|
||
JP Z,CopyBreak
|
||
LD HL,(COPY.CurrWriteBytes)
|
||
LD DE,(COPY.CurrWriteBytes + 2)
|
||
LD BC,0x4000
|
||
OR A
|
||
SBC HL,BC
|
||
LD B,0x00
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
JR C,.WriteEnd
|
||
LD (COPY.CurrWriteBytes),HL
|
||
LD (COPY.CurrWriteBytes + 2),DE
|
||
LD HL,0xC000
|
||
LD DE,0x4000
|
||
LD A,(COPY.FHandleDst)
|
||
SPDSS DSSF.WRITE
|
||
JP C,CopyError3
|
||
CALL NextProcess
|
||
POP HL
|
||
LD A,(HL)
|
||
CP 0xFF
|
||
JR NZ,.WriteL1
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,(COPY.CurrReadBytes)
|
||
LD A,H
|
||
OR L
|
||
LD HL,(COPY.CurrReadBytes + 2)
|
||
OR H
|
||
OR L
|
||
JR Z,.CloseFiles
|
||
JP .ReadFile
|
||
|
||
; !FIXIT ᤥ« âì â ª:
|
||
.WriteEnd: LD HL,0xC000
|
||
LD DE,(COPY.CurrWriteBytes)
|
||
LD A,D
|
||
OR E
|
||
JR Z,.L4
|
||
LD A,(COPY.FHandleDst)
|
||
SPDSS DSSF.WRITE
|
||
JP C,CopyError3
|
||
CALL NextProcess
|
||
.L4 POP HL
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
.CloseFiles LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.GET_D_T
|
||
LD A,(COPY.FHandleDst)
|
||
SPDSS DSSF.PUT_D_T
|
||
LD A,(COPY.FHandleDst)
|
||
SPDSS DSSF.CLOSE
|
||
.CloseFile1 LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.CLOSE
|
||
LD A,(COPY.MemID)
|
||
SPDSS DSSF.FREEMEM
|
||
.NextHandle LD IX,(COPY.PathCurrFile)
|
||
RES FileHDR.B_MARK,(IX + FileHDR.Flag)
|
||
LD HL,(COPY.CopyBytes)
|
||
LD E,(IX + FileHDR.SizeBytes)
|
||
LD D,(IX + FileHDR.SizeBytes + 1)
|
||
OR A
|
||
SBC HL,DE
|
||
LD (COPY.CopyBytes),HL
|
||
LD HL,(COPY.CopyBytes + 2)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
SBC HL,DE
|
||
LD (COPY.CopyBytes + 2),HL
|
||
LD HL,(COPY.CopyFiles)
|
||
LD A,H
|
||
OR L
|
||
IF MARK_DIR
|
||
JR Z,CopyDir ; ä ©«ë ª®ç¨«¨áì?
|
||
ELSE
|
||
JP Z,CopyEnd
|
||
ENDIF
|
||
DEC HL
|
||
LD (COPY.CopyFiles),HL
|
||
LD A,H
|
||
OR L
|
||
IF MARK_DIR
|
||
JR Z,CopyDir ; ä ©«ë ª®ç¨«¨áì?
|
||
ELSE
|
||
JP Z,CopyEnd
|
||
ENDIF
|
||
LD HL,(COPY.PathCurrFile)
|
||
LD DE,FileHDR.SIZE
|
||
.L5 ADD HL,DE ; á«¥¤ãî騩 ®¯¨á ⥫ì
|
||
BIT FileHDR.B_MARK,(HL)
|
||
JR Z,.L5
|
||
LD (COPY.PathCurrFile),HL
|
||
JP CopyNextFile
|
||
|
||
; ª®¯¨à®¢ ¨¥ ¤¨à¥ªâ®à¨¨
|
||
CopyDir LD IY,0
|
||
.CURR_PANEL EQU $-2
|
||
CALL DIRLIST.GET_DIRNAME ; ¯®«ã票¥ ¨¬¥¨ ¤¨àë, ¥á«¨ ¥áâì
|
||
JP C,CopyEnd ; C=1 ⥪ãé ï ¤¨à ª®ç¨« áì ¨«¨ ¨å ¥â
|
||
CALL DIRLIST.ADD_DIRLEVEL ; ¤®¡ ¢«¥¨¥ ᯨ᪠¤¨àë
|
||
PUSH IY
|
||
LD HL,(COPY.PathDst)
|
||
SPDSS DSSF.MKDIR ; á®§¤ ¨¥ ¤¨àë ¯à¨¥¬¨ª¥
|
||
; CALL C,DOSError
|
||
LD HL,(COPY.PathSrc)
|
||
SPDSS DSSF.CHDIR ; ᬥ ⥪ã饣® ¯ãâ¨
|
||
; CALL C,DOSError
|
||
POP IY
|
||
LD A,(RAMPAGES.BuffPg3)
|
||
SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
CALL ReadDIR
|
||
CALL DIRLIST.MARK_ALL ; ¬ ન஢ª ¢á¥å ä ©«®¢/¤¨à
|
||
LD HL,0xC000 + FileHDR.SIZE
|
||
LD (COPY.PathCurrFile),HL
|
||
JP CopyNextFile
|
||
|
||
BUF_MARKDIR
|
||
.DIR_NAME DZ " " ; ¨¬ï ⥪ã饩 ¤¨à¥ªâ®à¨¨
|
||
|
||
DIRLIST
|
||
; ¯®¬¥âª ¢á¥å ä ©«®¢/¤¨à
|
||
.MARK_ALL LD IX,0xC000 - FileHDR.SIZE
|
||
LD HL,0
|
||
LD (COPY.CopyFiles),HL
|
||
LD BC,FileHDR.SIZE
|
||
.MLNEXT ADD IX,BC
|
||
LD A,(IX + FileHDR.Name)
|
||
AND A
|
||
RET Z
|
||
CP '.'
|
||
JR Z,.MLNEXT
|
||
SET FileHDR.B_MARK,(IX + FileHDR.Flag)
|
||
EXX
|
||
LD HL,COPY.CopyBytes
|
||
LD E,(IX + FileHDR.SizeBytes)
|
||
LD D,(IX + FileHDR.SizeBytes + 1)
|
||
LD C,(IX + FileHDR.SizeBytes + 2)
|
||
LD B,(IX + FileHDR.SizeBytes + 3)
|
||
CALL HLPBCDE
|
||
LD HL,(COPY.CopyFiles)
|
||
INC HL
|
||
LD (COPY.CopyFiles),HL
|
||
EXX
|
||
JR .MLNEXT
|
||
|
||
; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ¢ ᯨ᮪, á®§¤ ¨¥ ¤¨àë ¯à¨¥¬¨ª¥
|
||
.ADD_DIRNAME PUSH IX
|
||
POP HL
|
||
INC HL
|
||
LD DE,BUF_MARKDIR.DIR_NAME
|
||
LD BC,8
|
||
LDIR ; § ¡à «¨ ¨¬ï ¤¨àë ¤® ¯¥à¥ª«îç¥¨ï ¯ £
|
||
LD A,(RAMPAGES.FLX)
|
||
LD C,WINSP.CPU3
|
||
IN B,(C)
|
||
PUSH BC
|
||
OUT (C),A
|
||
LD HL,0xC000
|
||
.ANNEXT CALL GET_DWORD
|
||
LD A,B
|
||
OR C
|
||
JR Z,.ANFOUND
|
||
LD H,B
|
||
LD L,C
|
||
JR .ANNEXT
|
||
|
||
.ANFOUND PUSH HL
|
||
LD HL,BUF_MARKDIR.DIR_NAME
|
||
LD BC,8
|
||
LDIR ; § ¥á«¨ ¨¬ï ¤¨àë ¢ ᯨ᮪
|
||
POP HL
|
||
DEC HL
|
||
DEC HL
|
||
LD (HL),D
|
||
DEC HL
|
||
LD (HL),E
|
||
POP BC
|
||
OUT (C),B
|
||
RET
|
||
|
||
.ADDNAME2PATH8 CALL .CHECK_BSLASH
|
||
LD (HL),'\\'
|
||
INC HL
|
||
EX DE,HL
|
||
LD BC,8
|
||
LDIR
|
||
XOR A
|
||
LD (DE),A
|
||
RET
|
||
|
||
; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¢ áâப㠯ãâ¨
|
||
; HL - ªã¤ ¤®¡ ¢«ïâì (墮áâ ⥪ã饣® ¯ãâ¨)
|
||
; DE - ®âªã¤ ¨¬ï ¡à âì
|
||
.ADDNAME2PATH CALL .CHECK_BSLASH
|
||
LD (HL),'\\'
|
||
INC HL
|
||
EX DE,HL
|
||
; ª®¯¨à®¢ ¨¥ ¨¬¥¨ ¨§ ¡ãä¥à
|
||
.COPYNAME2PATH XOR A
|
||
.CNP2 CP (HL)
|
||
JR Z,.CNP1
|
||
LDI
|
||
JR .CNP2
|
||
|
||
.CNP1 LD (DE),A
|
||
RET
|
||
|
||
; ¯à®¢¥àª BACKSLASH
|
||
.CHECK_BSLASH DEC HL
|
||
LD A,(HL)
|
||
CP '\\'
|
||
RET Z
|
||
INC HL
|
||
RET
|
||
|
||
; ®âá¥ç¥¨¥ ¯à®¡¥«®¢ ¢ ¨¬¥¨
|
||
.CUTOFFSPACES LD A,' '
|
||
.COS2 DEC HL
|
||
CP (HL)
|
||
JR Z,.COS2
|
||
INC HL
|
||
LD (HL),0
|
||
RET
|
||
|
||
; ¤®¡ ¢«¥¨¥ ãà®¢ï ¤«ï ¤¨à
|
||
.ADD_DIRLEVEL LD A,(RAMPAGES.FLX)
|
||
LD C,WINSP.CPU3
|
||
IN B,(C)
|
||
PUSH BC
|
||
OUT (C),A
|
||
LD HL,0xC000
|
||
.ALNEXT CALL GET_DWORD
|
||
LD A,B
|
||
OR C
|
||
JR Z,.ALFOUND
|
||
LD H,B
|
||
LD L,C
|
||
JR .ALNEXT
|
||
|
||
.ALFOUND LD (HL),D
|
||
DEC HL
|
||
LD (HL),E
|
||
LD H,D
|
||
LD L,E
|
||
INC DE
|
||
INC DE
|
||
INC DE
|
||
INC DE
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD (HL),0
|
||
INC HL
|
||
LD (HL),0
|
||
POP BC
|
||
OUT (C),B
|
||
RET
|
||
|
||
; ¯®«ã票¥ ¨¬¥¨ ¤¨àë á 㤠«¥¨¥¬ ¨§ ᯨáª
|
||
.GET_DIRNAME LD A,(RAMPAGES.FLX)
|
||
LD C,WINSP.CPU3
|
||
IN B,(C)
|
||
PUSH BC
|
||
OUT (C),A
|
||
.GNRESTART LD HL,0xC000
|
||
.GNNEXT CALL GET_DWORD
|
||
LD A,B
|
||
OR C
|
||
JR Z,.GNFOUND
|
||
DEC HL
|
||
LD (.GNEL1),HL
|
||
LD H,B
|
||
LD L,C
|
||
JR .GNNEXT
|
||
|
||
.GNFOUND INC HL
|
||
EX DE,HL
|
||
AND A
|
||
SBC HL,DE
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
SRL H
|
||
RR L
|
||
LD B,H
|
||
LD C,L
|
||
EX DE,HL
|
||
LD DE,8
|
||
AND A
|
||
SBC HL,DE
|
||
INC BC
|
||
.GNNEXT_FIND DEC BC
|
||
LD A,B
|
||
OR C
|
||
JR Z,.GNEND_LEVEL
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
AND A
|
||
JR Z,.GNNEXT_FIND
|
||
PUSH HL
|
||
EX DE,HL
|
||
PUSH DE
|
||
LD HL,(COPY.PathSrcEnd)
|
||
CALL .ADDNAME2PATH8
|
||
EX DE,HL
|
||
CALL .CUTOFFSPACES
|
||
LD (COPY.PathSrcEnd),HL
|
||
POP DE
|
||
LD HL,(COPY.PathDstEnd)
|
||
CALL .ADDNAME2PATH8
|
||
EX DE,HL
|
||
CALL .CUTOFFSPACES
|
||
LD (COPY.PathDstEnd),HL
|
||
POP HL
|
||
LD (HL),0
|
||
POP BC
|
||
OUT (C),B
|
||
AND A
|
||
RET
|
||
|
||
.GNEND_LEVEL LD HL,0
|
||
.GNEL1 EQU $-2
|
||
LD A,H
|
||
OR L
|
||
JR Z,.GNEL2
|
||
XOR A
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),A
|
||
LD DE,0xC000 + DWORD - 1
|
||
EX DE,HL
|
||
SBC HL,DE
|
||
EX DE,HL
|
||
JR Z,.GNEL2
|
||
LD HL,(COPY.PathSrcEnd)
|
||
CALL .GNEL4
|
||
LD (COPY.PathSrcEnd),HL
|
||
LD HL,(COPY.PathDstEnd)
|
||
CALL .GNEL4
|
||
LD (COPY.PathDstEnd),HL
|
||
JP .GNRESTART
|
||
|
||
.GNEL4 DEC HL
|
||
LD A,'\\'
|
||
.GNEL3 DEC HL
|
||
CP (HL)
|
||
JR NZ,.GNEL3
|
||
INC HL
|
||
LD (HL),0
|
||
RET
|
||
|
||
.GNEL2 POP BC
|
||
OUT (C),B
|
||
SCF
|
||
RET
|
||
|
||
; ¨¨æ¨ «¨§ æ¨ï ª®¯¨à®¢ ¨ï ¤¨à¥ªâ®à¨¨ á ᮤ¥à¦¨¬ë¬
|
||
.InitCopyDirs BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,LeftPanel + PANEL.CURR_PATH ; ¤«ï ¯ã⨠®âªã¤ ª®¯¨à®¢ âì
|
||
LD DE,RightPanel + PANEL.CURR_PATH ; ¤«ï ¯ã⨠ªã¤ ª®¯¨à®¢ âì
|
||
JR Z,.L1
|
||
EX DE,HL
|
||
; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ¥«¨
|
||
.L1 LD (COPY.PathSrc),HL
|
||
EX DE,HL
|
||
LD (COPY.PathDst),HL
|
||
.L2 INC HL
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
LD (COPY.PathDstEnd),HL
|
||
EX DE,HL
|
||
XOR A
|
||
.L3 INC HL
|
||
CP (HL)
|
||
JR NZ,.L3
|
||
LD (COPY.PathSrcEnd),HL
|
||
; ¨¨â ¢ áâà ¨æ¥ á¯¨áª®¢ ¤¨à¥ªâ®à¨©
|
||
GETPORT WINSP.CPU3
|
||
EX AF,AF'
|
||
LD A,(RAMPAGES.FLX)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,0xC000
|
||
LD (HL),LOW (0xC000 + DWORD)
|
||
INC HL
|
||
LD (HL),HIGH (0xC000 + DWORD)
|
||
INC HL
|
||
LD D,H
|
||
LD E,L
|
||
INC DE
|
||
LD BC,FileHDR.Name_Size * 2
|
||
LD (HL),B
|
||
LDIR
|
||
EX AF,AF'
|
||
SETPORT WINSP.CPU3,,0
|
||
RET
|
||
|
||
; á®åà ¥¨¥ ¯ã⥩ ¯ ¥«¥©
|
||
StorePaths LD HL,LeftPanel + PANEL.CURR_PATH
|
||
LD DE,REZ2_BUFFERS.OLDLEFTPANEL
|
||
LD BC,PANEL.CURR_PATH_Size
|
||
LDIR
|
||
LD HL,RightPanel + PANEL.CURR_PATH
|
||
LD DE,REZ2_BUFFERS.OLDRIGHTPANEL
|
||
LD BC,PANEL.CURR_PATH_Size
|
||
LDIR
|
||
RET
|
||
|
||
; ¢®ááâ ®¢«¥¨¥ ¯ã⥩ ¯ ¥«¥©
|
||
RestorePaths LD HL,REZ2_BUFFERS.OLDLEFTPANEL
|
||
LD DE,LeftPanel + PANEL.CURR_PATH
|
||
LD BC,PANEL.CURR_PATH_Size
|
||
LDIR
|
||
LD HL,REZ2_BUFFERS.OLDRIGHTPANEL
|
||
LD DE,RightPanel + PANEL.CURR_PATH
|
||
LD BC,PANEL.CURR_PATH_Size
|
||
LDIR
|
||
RET
|
||
|
||
; ¯®¤áç¥â ¢ ¡ ©â å à §¬¥à ®â¬¥ç¥®© ¤¨à¥ªâ®à¨¨
|
||
CalcDirSizeR: PUSH IX
|
||
PUSH IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF ; ⥪ã騩 ®¬¥à áâà ¨æë
|
||
LD (.CURR_PANEL),IY
|
||
LD A,(RAMPAGES.BuffPg3)
|
||
SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
CALL ReadDIR
|
||
LD A,(RAMPAGES.BuffPg3)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,HIGH (CPU3)
|
||
CALL GET_HANDLE_ADR
|
||
LD (COPY.PathCurrFile),HL
|
||
XOR A
|
||
LD H,A
|
||
LD L,A
|
||
LD (JUMPS.FILES_BYTES),HL
|
||
LD (JUMPS.FILES_BYTES + 2),HL ; ®¡ã«¥¨¥ à §¬¥à ¤¨àë
|
||
LD (JUMPS.FILES_COUNT),HL ; ®¡ã«¥¨¥ ª®«¨ç¥áâ¢ ä ©«®¢
|
||
LD (COPY.CopyFiles),HL
|
||
CALL StorePaths
|
||
CALL DIRLIST.InitCopyDirs
|
||
.NextDirFile LD IX,(COPY.PathCurrFile)
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
||
JR Z,.NextFile
|
||
; § ®á¨¬ ¨¬ï ¤¨àë ¢ ᯨ᮪ ¤«ï ¤ «ì¥©è¥£® ¨á¯®«ì§®¢ ¨ï
|
||
CALL DIRLIST.ADD_DIRNAME
|
||
JP .NextHandle
|
||
|
||
; ¤«ï ä ©« ¤®¡ ¢«ï¥¬ ¥£® à §¬¥à ¨ ª®«¨ç¥á⢮ +1
|
||
.NextFile LD HL,(JUMPS.FILES_COUNT)
|
||
INC HL
|
||
LD (JUMPS.FILES_COUNT),HL ; ¨ªà¥¬¥â ª®«¨ç¥áâ¢ ä ©«®¢
|
||
PUSH IX
|
||
POP DE
|
||
LD HL,FileHDR.SizeBytes
|
||
ADD HL,DE
|
||
CALL GET_DWORD
|
||
LD HL,JUMPS.FILES_BYTES
|
||
CALL HLPBCDE ; ¤®¡ ¢¨«¨ ª ⥪ã饬ã à §¬¥àã
|
||
; ¯à®¢¥àª ®ª®ç ¨¥ ®¯¨á ⥫¥©
|
||
.NextHandle LD HL,(COPY.CopyFiles)
|
||
LD A,H
|
||
OR L
|
||
JR Z,.ENDDIR
|
||
DEC HL
|
||
LD A,H
|
||
OR L
|
||
JR Z,.ENDDIR
|
||
LD (COPY.CopyFiles),HL
|
||
LD HL,(COPY.PathCurrFile)
|
||
LD DE,FileHDR.SIZE
|
||
.L5 ADD HL,DE ; á«¥¤ãî騩 ®¯¨á ⥫ì
|
||
BIT FileHDR.B_MARK,(HL)
|
||
JR Z,.L5
|
||
LD (COPY.PathCurrFile),HL
|
||
JP .NextDirFile
|
||
|
||
.ENDDIR LD IY,0
|
||
.CURR_PANEL EQU $-2
|
||
CALL DIRLIST.GET_DIRNAME ; ¯®«ã票¥ ¨¬¥¨ ¤¨àë, ¥á«¨ ¥áâì
|
||
JP C,.CalcEnd ; C=1 ⥪ãé ï ¤¨àë ª®ç¨« áì ¨«¨ ¨å ¥â
|
||
CALL DIRLIST.ADD_DIRLEVEL ; ¤®¡ ¢«¥¨¥ ᯨ᪠¤¨àë
|
||
PUSH IY
|
||
LD HL,(COPY.PathSrc)
|
||
SPDSS DSSF.CHDIR ; ᬥ ⥪ã饣® ¯ãâ¨
|
||
; CALL C,DOSError
|
||
POP IY
|
||
LD A,(RAMPAGES.BuffPg3)
|
||
SET PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
CALL ReadDIR
|
||
CALL DIRLIST.MARK_ALL ; ¬ ન஢ª ¢á¥å ä ©«®¢/¤¨à
|
||
LD HL,0xC000 + FileHDR.SIZE
|
||
LD (COPY.PathCurrFile),HL
|
||
JP .NextDirFile
|
||
|
||
.CalcEnd CALL RestorePaths
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,LeftPanel + PANEL.CURR_PATH
|
||
JR Z,.CD1
|
||
LD HL,RightPanel + PANEL.CURR_PATH
|
||
.CD1
|
||
; LD HL,(COPY.PathSrc)
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
POP IX
|
||
RET
|
||
|
||
; § ¢¥à襨¥ ª®¯¨à®¢ ¨ï
|
||
CopyEnd
|
||
IF MARK_DIR
|
||
CALL RestorePaths
|
||
ENDIF
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP IY
|
||
WINDOWCLOSE
|
||
LD HL,(COPY.CopyFiles)
|
||
LD (IY + PANEL.FILES_MARK),L
|
||
LD (IY + PANEL.FILES_MARK + 1),H
|
||
LD HL,(COPY.CopyBytes)
|
||
LD (IY + PANEL.BYTES_MARK),L
|
||
LD (IY + PANEL.BYTES_MARK + 1),H
|
||
LD HL,(COPY.CopyBytes + 2)
|
||
LD (IY + PANEL.BYTES_MARK + 2),L
|
||
LD (IY + PANEL.BYTES_MARK + 3),H
|
||
; [ ] fat32
|
||
LD A,(COPY.CopyBytes + 4)
|
||
LD (IY + PANEL.BYTES_MARK_H),A
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
; ®¡®¢«¥¨¥ ¯ ¥«¨ ¯à¨¥¬¨ª
|
||
.L1 PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
CALL NC,RefreshDIR
|
||
POP IY
|
||
; ®¡®¢«¥¨¥ ¯ ¥«¨ ¨áâ®ç¨ª
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
PUSH AF
|
||
CALL NC,RefreshDIR
|
||
POP AF
|
||
JP C,BegDIRECTORY
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
JP PointerMousePointer
|
||
|
||
; !FIXIT ®¯â¨¬¨§¨à®¢ âì
|
||
CopyError3: ; …᫨ ¥â ¬¥áâ ¤¨áª¥ ¤«ï ª®¯¨à®¢ ¨ï
|
||
POP HL ; ᨬ ¥¬ «¨è¥¥
|
||
POP DE ; âãâ «¥¦¨â AF
|
||
PUSH AF
|
||
LD A,D
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,(COPY.FHandleDst)
|
||
SPDSS DSSF.CLOSE
|
||
CALL CopyErrorFileDelete
|
||
POP AF
|
||
CopyError2 PUSH AF
|
||
LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.CLOSE
|
||
POP AF
|
||
CopyError1 PUSH AF
|
||
LD A,(COPY.MemID)
|
||
SPDSS DSSF.FREEMEM
|
||
POP AF
|
||
CALL DOSError
|
||
JP CopyEnd
|
||
|
||
CopyBreak POP HL
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,(COPY.FHandleDst)
|
||
SPDSS DSSF.CLOSE
|
||
LD A,(COPY.FHandleSrc)
|
||
SPDSS DSSF.CLOSE
|
||
LD A,(COPY.MemID)
|
||
SPDSS DSSF.FREEMEM
|
||
CALL CopyErrorFileDelete
|
||
JP CopyEnd
|
||
|
||
CopyErrorFileDelete:
|
||
LD IX,(COPY.PathCurrFile)
|
||
LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
CALL MakeDOSname
|
||
POP HL
|
||
LD A,(IX + FileHDR.Attr)
|
||
PUSH IY
|
||
SPDSS DSSF.DELETE
|
||
POP IY
|
||
RET
|
||
|
||
;--------------------------------------------------------------
|
||
; ‡ ¯à®á ¯à¨ ª®¯¨à®¢ ¨¨ ¢ áãé¥áâ¢ãî騩 ä ©« ¯à®¤®«¦¥¨¥.
|
||
OverWrite
|
||
_INIT_VAR
|
||
_SETVAR .REWRITE ; ¯¥à¥§ ¯¨áì ä ©«
|
||
_SETVAR .SKIP ; ¯à®¯ã᪠ª®¯¨à®¢ ¨ï
|
||
_SETVAR .BREAK ; ¯à¥ªà 饨¥ ª®¯¨à®¢ ¨ï
|
||
|
||
CALL PointerMousePointer
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 180,88,280,56
|
||
W_FILL 4,2,272,10,COLORI.GREEN
|
||
W_TEXT 116,3,COLORI.WHITE + COLORP.GREEN,"Message"
|
||
W_TEXT 80,16,COLORP.HIGHGRAY,"The following file EXISTS:"
|
||
W_BUTTON 16,38,56,14
|
||
W_TEXT 22,41,COLORP.HIGHGRAY,"OverWrite"
|
||
W_BUTTON 80,38,56,14
|
||
W_TEXT 102,41,COLORP.HIGHGRAY,"All"
|
||
W_BUTTON 144,38,56,14
|
||
W_TEXT 162,41,COLORP.HIGHGRAY,"Skip"
|
||
W_BUTTON 208,38,56,14
|
||
W_TEXT 220,41,COLORP.HIGHGRAY,"Cancel"
|
||
W_END
|
||
LD HL,(COPY.PathDst)
|
||
LD DE,WorkBuffer
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JR Z,.L2
|
||
LD (DE),A
|
||
INC DE
|
||
.L2 LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
CALL MakeDOSname
|
||
LD IX,0x00F8
|
||
LD HL,WorkBuffer
|
||
LD DE,320
|
||
LD BC,114
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintPathCentr
|
||
.OvWrtLp LD IX,REZ2TAB.OverWrtTab
|
||
CALL CheckCoordsMouse
|
||
SPDSS DSSF.SCANKEY
|
||
JR Z,.OvWrtLp
|
||
LD A,B
|
||
OR A
|
||
JR NZ,.OvWrtLp
|
||
LD A,E
|
||
CP 0x1B
|
||
LD HL,OverExit
|
||
JR Z,OvrJump
|
||
CP 0x0D
|
||
LD HL,OverWrtFile
|
||
JR Z,OvrJump
|
||
RES 5,A
|
||
CP 'O'
|
||
LD HL,OverWrtFile
|
||
JR Z,OvrJump
|
||
CP 'A'
|
||
LD HL,OverWrtAll
|
||
JR Z,OvrJump
|
||
CP 'S'
|
||
LD HL,OverSkip
|
||
JR Z,OvrJump
|
||
CP 'C'
|
||
JR NZ,.OvWrtLp
|
||
LD HL,OverExit
|
||
OvrJump
|
||
WINDOWCLOSE
|
||
JP (HL)
|
||
|
||
OverWrtAll LD A,0x01
|
||
LD (COPY.OverWriteFlg),A
|
||
OverWrtFile CALL PointerMouseClock
|
||
LD IX,(COPY.PathCurrFile)
|
||
LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
CALL MakeDOSname
|
||
POP HL
|
||
LD A,(IX + FileHDR.Attr)
|
||
SPDSS DSSF.CREATE
|
||
LD (COPY.FHandleDst),A ; ¯à¨ ¯¥à¥§ ¯¨á¨ ®¡®¢«ï¥¬ 奤«¥à ¢ë室®£® ä ©«
|
||
LD_A OverWrite.REWRITE ; ¢ë室 á ¯¥à¥§ ¯¨áìî ä ©«
|
||
RET
|
||
|
||
OverSkip CALL PointerMouseClock
|
||
LD IX,(COPY.PathCurrFile)
|
||
LD L,(IX + FileHDR.SizeBytes)
|
||
LD H,(IX + FileHDR.SizeBytes + 1)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
CALL ConvBytes2Pages
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
ADC HL,HL
|
||
EX DE,HL
|
||
LD IX,ProcessAll
|
||
LD C,(IX + PROGRESSBAR.CURR_PAGE)
|
||
LD B,(IX + PROGRESSBAR.CURR_PAGE + 1)
|
||
ADD HL,BC
|
||
LD (IX + PROGRESSBAR.CURR_PAGE),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 1),H
|
||
LD C,(IX + PROGRESSBAR.CURR_PAGE + 2)
|
||
LD B,(IX + PROGRESSBAR.CURR_PAGE + 3)
|
||
EX DE,HL
|
||
ADC HL,BC
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 2),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 3),H
|
||
CALL DrawProgressBar
|
||
; LD HL,CopyNextFile.CloseFile1
|
||
; EX (SP),HL
|
||
LD A,OverWrite.SKIP ; ¢ë室 á ¯à®¯ã᪮¬ ª®¯¨à®¢ ¨ï
|
||
RET
|
||
|
||
OverExit LD A,OverWrite.BREAK ; ¢ë室 á ¯à¥ªà 饨¥¬ ª®¯¨à®¢ ¨ï
|
||
RET
|
||
; INC SP
|
||
; INC SP
|
||
; LD IX,(COPY.PathCurrFile)
|
||
; BIT FileHDR.B_MARK,(IX + FileHDR.Flag)
|
||
; JP Z,CopyNextFile.CloseFile1
|
||
; LD A,(COPY.FHandleSrc)
|
||
; SPDSS DSSF.CLOSE
|
||
; LD A,(COPY.MemID)
|
||
; SPDSS DSSF.FREEMEM
|
||
; POP IY
|
||
; JP CopyEnd
|
||
|
||
; Š®¢¥àá¨ï à §¬¥à ¢ ¡ ©â å ¢ ª®«¨ç¥á⢮ áâà ¨æ
|
||
; <20> ¢å®¤¥:
|
||
; DEHL - ª®«¨ç¥á⢮ ¡ ©â
|
||
; <20> ¢ë室¥:
|
||
; HL - ª®«¨ç¥á⢮ áâà ¨æ 4294967295=FFFFFFFF
|
||
; 1028975 FB36F
|
||
; 231 E7 1
|
||
; 59232 E760 4
|
||
; 21 15 1
|
||
; 14119 3727 1
|
||
; 916055 DFA57 38
|
||
; 12652 316C 1
|
||
; 14119 3727 1
|
||
; 12546 3102 1
|
||
; DEHL -> (((DEHL / 100) * 4) / 0x100) + ((L != 0) ? DE++ : DE)
|
||
ConvBytes2Pages:
|
||
LD A,H
|
||
LD H,L
|
||
LD L,0
|
||
ADD A,A
|
||
RL E
|
||
RL D
|
||
RL L
|
||
ADD A,A
|
||
RL E
|
||
RL D
|
||
RL L
|
||
OR H
|
||
LD H,0
|
||
EX DE,HL
|
||
JR Z,.L1
|
||
INC HL
|
||
.L1 LD A,H
|
||
OR L
|
||
RET NZ
|
||
INC DE
|
||
RET
|
||
|
||
; ¯¥ç âì ¯ã⥩/ä ©«®¢ ¯à¨ ª®¯¨à®¢ ¨¨
|
||
PrintSrcDst LD HL,(COPY.PathSrc)
|
||
LD DE,WorkBuffer
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JR Z,.L2
|
||
LD (DE),A
|
||
INC DE
|
||
.L2 LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
CALL MakeDOSname
|
||
LD HL,(COPY.PathDst)
|
||
LD DE,WorkBuffer+0x100
|
||
SUB A
|
||
.L3 LDI
|
||
CP (HL)
|
||
JR NZ,.L3
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JR Z,.L4
|
||
LD (DE),A
|
||
INC DE
|
||
.L4 LD HL,(COPY.PathCurrFile)
|
||
INC HL
|
||
CALL MakeDOSname
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_FILL 204,97,256,18,COLORI.HIGHGRAY
|
||
W_END
|
||
LD IX,256
|
||
LD HL,WorkBuffer
|
||
LD DE,204
|
||
LD BC,97
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintPathLeft
|
||
LD IX,256
|
||
LD HL,WorkBuffer + 0x100
|
||
LD DE,204
|
||
LD BC,107
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
JP PrintPathLeft
|
||
|
||
NextProcess LD IX,ProcessAll
|
||
LD L,(IX + PROGRESSBAR.CURR_PAGE)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 1)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 1),H
|
||
LD A,H
|
||
OR L
|
||
JR NZ,.L1
|
||
LD L,(IX + PROGRESSBAR.CURR_PAGE + 2)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 3)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 2),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 3),H
|
||
.L1 CALL DrawProgressBar
|
||
LD IX,ProcessOne
|
||
LD L,(IX + PROGRESSBAR.CURR_PAGE)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 1)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 1),H
|
||
LD A,H
|
||
OR L
|
||
JR NZ,.L2
|
||
LD L,(IX + PROGRESSBAR.CURR_PAGE + 2)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 3)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 2),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 3),H
|
||
.L2 JP DrawProgressBar
|
||
|
||
ProcessAll DW 178 ; X ¯®§¨æ¨ï
|
||
DW 138 ; Y ¯®§¨æ¨ï
|
||
DW 284 ; „«¨ X
|
||
DW 0 ; Š®íä䍿¨¥â ¤«ï ¯à®æ¥áá
|
||
DW 0 ; Š®à४æ¨ï ª®í䍿¨¥â
|
||
DW 0 ; Œ ªá¨¬ã¬
|
||
DW 0
|
||
DW 0 ; ’¥ªã饥
|
||
DW 0
|
||
DB COLORP.BLUE + COLORI.WHITE
|
||
|
||
ProcessOne DW 178 ; X ¯®§¨æ¨ï
|
||
DW 120 ; Y ¯®§¨æ¨ï
|
||
DW 284 ; „«¨ X
|
||
DW 0 ; Š®íä䍿¨¥â ¤«ï ¯à®æ¥áá
|
||
DW 0 ; Š®à४æ¨ï ª®í䍿¨¥â
|
||
DW 0 ; Œ ªá¨¬ã¬
|
||
DW 0
|
||
DW 0 ; ’¥ªã饥
|
||
DW 0
|
||
DB COLORP.BLUE + COLORI.WHITE
|
||
|
||
; ®¯¨á ⥫ì áâப¨
|
||
PathStr DB 255 ; +00 Œ ªá¨¬ «ì ï ¤«¨ áâப¨
|
||
DB 0 ; +01 ”« £ £®â®¢®áâ¨
|
||
DB 0 ; +02 ⥪ãé ï X ¯®§¨æ¨ï ªãàá®à
|
||
DB 0 ; +03 ⥪ãé ï AddX
|
||
PathLen DB 0 ; +04 ª®«¨ç¥á⢮ ¢¢¥¤¥ëå ᨬ¢®«®¢
|
||
DW 170 ; +05 X ¯®§¨æ¨ï áâப¨ íªà ¥
|
||
DW 106 ; +07 Y ¯®§¨æ¨ï áâப¨ íªà ¥
|
||
DW 324 ; +09 X ¤«¨ áâப¨ íªà ¥
|
||
DB COLORP.WHITE + COLORI.BLACK ; +0B –¢¥â áâப¨
|
||
CurPath DB 256 DUP 0 ; +0C ...á ¬ áâப
|
||
|
||
;[]==========================================================[]
|
||
ReNameR LD A,(IY + PANEL.FILES_ALL)
|
||
OR (IY + PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
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 L,(IY + PANEL.FIRST_FILE)
|
||
LD H,(IY + PANEL.FIRST_FILE + 1)
|
||
LD E,(IY + PANEL.CURR_FILE)
|
||
LD D,(IY + PANEL.CURR_FILE + 1)
|
||
ADD HL,DE
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR Z,ReNameNr
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
SET 7,H
|
||
INC HL
|
||
INC HL
|
||
LD DE,CurName
|
||
LD BC,0x000D
|
||
LDIR
|
||
LD A,DIR.M_Dir
|
||
LD (CurAttrib),A
|
||
JR ReNameN
|
||
|
||
ReNameNr ADD HL,HL ; *2
|
||
ADD HL,HL ; *4
|
||
ADD HL,HL ; *8
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL ; *10
|
||
ADD HL,DE ; *18
|
||
SET 6,H
|
||
SET 7,H ; | 0xC000
|
||
PUSH HL
|
||
INC HL
|
||
LD DE,CurName
|
||
CALL MakeDOSname
|
||
POP HL
|
||
LD BC,FileHDR.Attr
|
||
ADD HL,BC
|
||
LD A,(HL)
|
||
LD (CurAttrib),A
|
||
ReNameN POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,CurName
|
||
LD A,(HL)
|
||
CP '.'
|
||
RET Z
|
||
CP '\\'
|
||
RET Z
|
||
LD DE,Name
|
||
LD C,0
|
||
LD A,' '
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR C,.L1
|
||
LD A,C
|
||
NEG
|
||
LD (NameLen),A
|
||
CALL ResInvert
|
||
LD HL,SetInvert
|
||
PUSH HL
|
||
LD HL,CurName
|
||
LD DE,RNfile
|
||
LD C,0x0C
|
||
SUB A
|
||
.L2 LDI
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
OR C
|
||
JR Z,RNnxt
|
||
LD B,C
|
||
LD A,' '
|
||
.L3 LD (DE),A
|
||
INC DE
|
||
DJNZ .L3
|
||
RNnxt
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 208,81,224,62
|
||
W_FILL 4,2,216,10,COLORI.BLACK
|
||
W_TEXT 94,3,COLORI.WHITE,"Rename"
|
||
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 14,17,COLORP.HIGHGRAY,"Rename: "
|
||
RNfile EQU $ - STRLEN(" ") - 2
|
||
W_TEXT 40,29,COLORP.HIGHGRAY,"To:"
|
||
W_BORDER 60,26,134,12
|
||
W_FILL 62,27,130,10,COLORI.WHITE
|
||
W_END
|
||
LD IX,NameStr
|
||
LD HL,REZ2TAB.ReNameTab
|
||
CALL InputLine
|
||
WINDOWCLOSE
|
||
RET C
|
||
LD A,(NameLen)
|
||
OR A
|
||
RET Z
|
||
; [ ] -¡ £ ¯à¨ ¯¥à¥¨¬¥®¢ ¨¨ ä ©« ¢ ¡ãä¥à¥ Name ¢ ª®æ¥ ¨¬¥¨
|
||
; ä ©« ¥ ¢á¥£¤ áâ®ï« § ªàë¢ î騩 0 ª®£¤ ¤®. ILDel1
|
||
LD HL,Name
|
||
LD E,A
|
||
LD D,0
|
||
ADC HL,DE
|
||
LD (HL),0
|
||
CALL PointerMouseClock
|
||
LD HL,PointerMousePointer
|
||
EX (SP),HL
|
||
PUSH HL
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR Z,ReName0
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
EX DE,HL
|
||
LD A,'\\'
|
||
.L2 DEC HL
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
INC HL
|
||
LD (HL),0x00
|
||
POP HL
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
RET C
|
||
ReName0 LD HL,CurName
|
||
LD DE,Name
|
||
PUSH IY
|
||
SPDSS DSSF.RENAME
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
RET C
|
||
LD A,(CurAttrib)
|
||
BIT DIR.B_Dir,A
|
||
JP NZ,ReNameDIR
|
||
LD HL,Name
|
||
LD DE,PrevFile
|
||
LD A,(NameLen)
|
||
LD B,A
|
||
.L1 LD A,(HL)
|
||
IF CORR_FILENAME
|
||
CALL CorrBigChar
|
||
ENDIF
|
||
LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ .L1
|
||
SUB A
|
||
LD (DE),A
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,ReName1
|
||
CALL ReadDIR
|
||
CALL FindPrevFile
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
ReName1 LD HL,LeftPanel + PANEL.CURR_PATH
|
||
LD DE,RightPanel + PANEL.CURR_PATH
|
||
ReName2 LD A,(DE)
|
||
CP (HL)
|
||
RET NZ
|
||
INC HL
|
||
INC DE
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,ReName2
|
||
LD A,(DE)
|
||
OR A
|
||
RET NZ
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,ReNameE
|
||
CALL ReadDIR
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
ReNameE POP IY
|
||
RET
|
||
|
||
ReNameDIR LD HL,Name
|
||
LD DE,PrevDIR
|
||
LD A,(NameLen)
|
||
LD B,A
|
||
.L1 LD A,(HL)
|
||
IF CORR_FILENAME
|
||
CALL CorrSmallChar
|
||
ENDIF
|
||
LD (HL),A
|
||
LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ .L1
|
||
SUB A
|
||
LD (DE),A
|
||
LD A,(TreeFlag)
|
||
OR A
|
||
JP Z,ReNameExit
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
EX AF,AF'
|
||
PUSH IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD IY,LeftPanel
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,.L2
|
||
LD IY,RightPanel
|
||
.L2 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L3
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L3
|
||
SETPORT WINSP.CPU3,,0
|
||
EX AF,AF'
|
||
JR Z,ReNameTree
|
||
LD L,(IY + PANEL.FIRST_FILE)
|
||
LD H,(IY + PANEL.FIRST_FILE + 1)
|
||
LD E,(IY + PANEL.CURR_FILE)
|
||
LD D,(IY + PANEL.CURR_FILE + 1)
|
||
ADD HL,DE
|
||
ADD HL,HL ; *2
|
||
ADD HL,HL ; *4
|
||
ADD HL,HL ; *8
|
||
ADD HL,HL ; *10
|
||
SET 6,H
|
||
SET 7,H
|
||
EX DE,HL
|
||
JR ReNameEx
|
||
|
||
ReNameTree BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,LeftPanel
|
||
JR NZ,.L1
|
||
LD HL,RightPanel
|
||
.L1 LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
CALL FindTreeDIRR
|
||
JP C,ReNameT
|
||
LD HL,0xC000 + 1 - 0x10
|
||
LD BC,0x0010
|
||
.L2 ADD HL,BC
|
||
BIT 0,(HL)
|
||
JR Z,.L2
|
||
ADD HL,BC
|
||
DEC HL
|
||
FRName1 PUSH HL
|
||
LD DE,CurName
|
||
INC HL
|
||
INC HL
|
||
FRName2 LD A,(DE)
|
||
OR A
|
||
JR Z,FRName4
|
||
CP (HL)
|
||
JR NZ,FRName3
|
||
INC HL
|
||
INC DE
|
||
JR FRName2
|
||
|
||
FRName3 POP HL
|
||
BIT 7,(HL)
|
||
JR NZ,ReNameT
|
||
ADD HL,BC
|
||
JR FRName1
|
||
|
||
FRName4 LD A,(HL)
|
||
OR A
|
||
JR NZ,FRName3
|
||
POP DE
|
||
ReNameEx LD HL,Name
|
||
INC DE
|
||
INC DE
|
||
LD C,0x0D
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
LD B,C
|
||
.L2 LD (DE),A
|
||
INC DE
|
||
DJNZ .L2
|
||
LD HL,WorkBuffer
|
||
PUSH IY
|
||
SPDSS DSSF.CURDIR
|
||
POP IY
|
||
LD HL,BegDIR
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
JR C,ReNameC
|
||
LD HL,TreeName
|
||
LD DE,WorkBuffer + 0x100
|
||
LD A,(FileAtribut)
|
||
PUSH IY
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP IY
|
||
JR C,ReNameC
|
||
LD HL,TreeName
|
||
PUSH IY
|
||
SPDSS DSSF.CREATE,,0
|
||
POP IY
|
||
JR C,ReNameC
|
||
LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
LD HL,0xC000
|
||
PUSH AF
|
||
SPDSS DSSF.WRITE
|
||
POP AF
|
||
SPDSS DSSF.CLOSE
|
||
ReNameC LD HL,WorkBuffer
|
||
SPDSS DSSF.CHDIR
|
||
ReNameT POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP IY
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,ReNameExt1
|
||
CALL ReadDIR
|
||
CALL FindPrevDIR
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL DrawVScrollBar
|
||
POP IY
|
||
RET
|
||
|
||
ReNameExt1 INC SP
|
||
INC SP
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
CALL SetInvert
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL DrawVScrollBar
|
||
CALL TestTreeR.TestTreeBeg
|
||
PUSH IY
|
||
CALL MakeTreePathR
|
||
EX DE,HL
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 PUSH IY
|
||
POP HL
|
||
LD BC,PANEL.CURR_PATH
|
||
ADD HL,BC
|
||
INC HL
|
||
INC HL
|
||
EX DE,HL
|
||
SUB A
|
||
.L2 LDI
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
LD (DE),A
|
||
CALL PrintPath
|
||
POP IY
|
||
RET
|
||
|
||
ReNameExit CALL ReadDIR
|
||
CALL FindPrevDIR
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
LD HL,LeftPanel + PANEL.CURR_PATH
|
||
LD DE,RightPanel + PANEL.CURR_PATH
|
||
RNameE1 LD A,(DE)
|
||
CP (HL)
|
||
RET NZ
|
||
INC HL
|
||
INC DE
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,RNameE1
|
||
LD A,(DE)
|
||
OR A
|
||
RET NZ
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,RNameE2
|
||
CALL ReadDIR
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
RNameE2 POP IY
|
||
RET
|
||
|
||
CurAttrib DB 0x00
|
||
CurName DB 0x0D DUP 0x00
|
||
NameStr DB 0x0C,0x00,0x00,0x00
|
||
NameLen DB 0x00
|
||
DW 272,110,104
|
||
DB COLORP.WHITE + COLORI.BLACK
|
||
Name DB 0x0D DUP 0x00
|
||
|
||
;[]==========================================================[]
|
||
MakeDIRR CALL ResInvert
|
||
LD HL,SetInvert
|
||
PUSH HL
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 200,81,240,62
|
||
W_FILL 4,2,232,10,COLORI.BLACK
|
||
W_TEXT 84,3,COLORI.WHITE,"Make directory"
|
||
W_BUTTON 40,42,72,14
|
||
W_TEXT 68,45,COLORP.HIGHGRAY,"Ok"
|
||
W_BUTTON 128,42,72,14
|
||
W_TEXT 148,45,COLORP.HIGHGRAY,"Cancel"
|
||
W_TEXT 12,25,COLORP.HIGHGRAY,"New directory:"
|
||
W_BORDER 86,22,134,12
|
||
W_FILL 88,23,130,10,COLORI.WHITE
|
||
W_END
|
||
LD IX,MakeDIRStr
|
||
LD HL,REZ2TAB.MakeDIRTab
|
||
CALL InputLine
|
||
WINDOWCLOSE
|
||
RET C
|
||
LD A,(MDIRLen)
|
||
OR A
|
||
RET Z
|
||
LD HL,NewDIR
|
||
LD B,A
|
||
MkDIRlp LD A,(HL)
|
||
INC HL
|
||
CP ':'
|
||
RET Z
|
||
CP '\\'
|
||
RET Z
|
||
DJNZ MkDIRlp
|
||
CALL PointerMouseClock
|
||
LD HL,PointerMousePointer
|
||
PUSH HL
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
JR Z,MkDIR0
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
RET C
|
||
MkDIR0 LD HL,NewDIR
|
||
PUSH IY
|
||
SPDSS DSSF.MKDIR
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
RET C
|
||
LD HL,NewDIR
|
||
LD DE,PrevDIR
|
||
LD A,(MDIRLen)
|
||
LD B,A
|
||
.L1 LD A,(HL)
|
||
IF CORR_FILENAME
|
||
CALL CorrSmallChar
|
||
ENDIF
|
||
LD (HL),A
|
||
LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ .L1
|
||
SUB A
|
||
LD (DE),A
|
||
LD A,(TreeFlag)
|
||
OR A
|
||
JP Z,MkDIRnxt1
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
EX AF,AF'
|
||
PUSH IY
|
||
LD IY,LeftPanel
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,.L2
|
||
LD IY,RightPanel
|
||
.L2 LD A,(IY + PANEL.FILES_ALL + 1)
|
||
BIT 2,A
|
||
JP NZ,MkDIRn0
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L3
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L3
|
||
SETPORT WINSP.CPU3,,0
|
||
EX AF,AF'
|
||
JR NZ,FnTree1
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,LeftPanel
|
||
JR NZ,.L4
|
||
LD HL,RightPanel
|
||
.L4 LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
CALL FindTreeDIRR
|
||
JP C,MkDIRn
|
||
LD HL,0xC001 - 0x10
|
||
LD BC,0x0010
|
||
.L5 ADD HL,BC
|
||
BIT 0,(HL)
|
||
JR Z,.L5
|
||
DEC HL
|
||
JR FnTree2
|
||
FnTree1 LD L,(IY + PANEL.FIRST_FILE)
|
||
LD H,(IY + PANEL.FIRST_FILE + 1)
|
||
LD E,(IY + PANEL.CURR_FILE)
|
||
LD D,(IY + PANEL.CURR_FILE + 1)
|
||
ADD HL,DE
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
SET 7,H
|
||
FnTree2 LD E,(HL)
|
||
LD BC,0x000F
|
||
ADD HL,BC
|
||
LD D,(HL)
|
||
LD (HL),B
|
||
INC HL
|
||
INC E
|
||
LD A,D
|
||
INC A
|
||
JR Z,MkDIRend
|
||
LD A,E
|
||
AND 0x7F
|
||
LD IXL,A
|
||
LD A,(HL)
|
||
AND 0x7F
|
||
CP IXL
|
||
JR NZ,MkDIRend
|
||
MkDIR10 LD A,(HL)
|
||
AND 0x7F
|
||
CP IXL
|
||
JR Z,MkDIR11
|
||
ADD HL,BC
|
||
INC HL
|
||
JR MkDIR10
|
||
|
||
MkDIR11 LD A,(HL)
|
||
RES 7,(HL)
|
||
ADD HL,BC
|
||
LD D,(HL)
|
||
LD (HL),B
|
||
INC HL
|
||
BIT 7,A
|
||
JR Z,MkDIR10
|
||
MkDIR12 LD A,(HL)
|
||
AND 0x7F
|
||
CP IXL
|
||
JR C,MkDIRend
|
||
ADD HL,BC
|
||
LD D,(HL)
|
||
LD (HL),B
|
||
INC HL
|
||
LD A,D
|
||
INC A
|
||
JR NZ,MkDIR12
|
||
MkDIRend PUSH HL
|
||
PUSH DE
|
||
LD C,L
|
||
LD B,H
|
||
LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
SET 7,H
|
||
PUSH HL
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
POP HL
|
||
LD A,L
|
||
LD D,H
|
||
ADD A,0x10
|
||
LD E,A
|
||
JR NC,.L1
|
||
INC D
|
||
.L1 LD A,B
|
||
OR C
|
||
JR Z,.L2
|
||
DEC HL
|
||
DEC DE
|
||
LDDR
|
||
.L2 POP BC
|
||
POP DE
|
||
LD A,B
|
||
EX AF,AF'
|
||
LD A,C
|
||
SET 7,A
|
||
LD (DE),A
|
||
INC DE
|
||
SUB A
|
||
LD (DE),A
|
||
INC DE
|
||
LD HL,NewDIR
|
||
LD C,0x0D
|
||
.L3 LDI
|
||
CP (HL)
|
||
JR NZ,.L3
|
||
LD B,C
|
||
.L4 LD (DE),A
|
||
INC DE
|
||
DJNZ .L4
|
||
EX AF,AF'
|
||
LD (DE),A
|
||
LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
INC HL
|
||
LD (IY + PANEL.FILES_ALL),L
|
||
LD (IY + PANEL.FILES_ALL + 1),H
|
||
LD HL,WorkBuffer
|
||
PUSH IY
|
||
SPDSS DSSF.CURDIR
|
||
POP IY
|
||
LD HL,BegDIR
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
JR C,MkDIR2
|
||
LD HL,TreeName
|
||
LD DE,WorkBuffer+0x100
|
||
LD A,(FileAtribut)
|
||
PUSH IY
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP IY
|
||
JR C,MkDIR2
|
||
LD HL,TreeName
|
||
PUSH IY
|
||
SPDSS DSSF.CREATE,,0
|
||
POP IY
|
||
JR C,MkDIR2
|
||
LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
LD HL,0xC000
|
||
PUSH AF
|
||
SPDSS DSSF.WRITE
|
||
POP AF
|
||
SPDSS DSSF.CLOSE
|
||
MkDIR2 LD HL,WorkBuffer
|
||
SPDSS DSSF.CHDIR
|
||
MkDIRn POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
MkDIRn0 POP IY
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,MkDIRn1
|
||
MkDIRnxt1 CALL ReadDIR
|
||
CALL FindPrevDIR
|
||
MkDIRn1 CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,MkDIRn2
|
||
LD HL,LeftPanel + PANEL.CURR_PATH
|
||
LD DE,RightPanel + PANEL.CURR_PATH
|
||
MkDIRrf LD A,(DE)
|
||
CP (HL)
|
||
JR NZ,MkDIRex
|
||
INC HL
|
||
INC DE
|
||
LD A,(HL)
|
||
OR A
|
||
JR NZ,MkDIRrf
|
||
LD A,(DE)
|
||
OR A
|
||
JR NZ,MkDIRex
|
||
CALL ReadDIR
|
||
MkDIRn2 CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
MkDIRex POP IY
|
||
RET
|
||
|
||
MakeDIRStr DB 0x0C,0x00,0x00,0x00
|
||
MDIRLen DB 0x00
|
||
DW 290,106,104
|
||
DB COLORP.WHITE + COLORI.BLACK
|
||
NewDIR DB 0x0D DUP 0x00
|
||
|
||
;[]==========================================================[]
|
||
DeleteFilesR LD A,(IY + PANEL.FILES_ALL)
|
||
OR (IY + PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD A,(IY + PANEL.FILES_MARK)
|
||
OR (IY + PANEL.FILES_MARK + 1)
|
||
JR NZ,DeleteMark
|
||
; 㤠«¥¨¥ ¯®¤ ªãàá®à®¬ ä ©« /¤¨à¥ªâ®à¨¨
|
||
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 L,(IY + PANEL.FIRST_FILE)
|
||
LD H,(IY + PANEL.FIRST_FILE + 1)
|
||
LD E,(IY + PANEL.CURR_FILE)
|
||
LD D,(IY + PANEL.CURR_FILE + 1)
|
||
ADD HL,DE
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR Z,DelFile
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
SET 7,H
|
||
LD (AdrDelFile),HL
|
||
INC HL
|
||
JR DelFil1
|
||
|
||
DelFile ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL
|
||
ADD HL,DE
|
||
SET 6,H
|
||
SET 7,H
|
||
LD (AdrDelFile),HL
|
||
DelFil1 INC HL
|
||
LD E,(HL)
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,E
|
||
CP '.' ; ¢ ¨¬¥¨ ä ©« ¢ ®¯¨á ⥫¥? áâà ï ¯à®¢¥àª
|
||
RET Z
|
||
CP '\\' ; ¢ ¨¬¥¨ ä ©« ¢ ®¯¨á ⥫¥? ¥é¥ áâà ¥©
|
||
RET Z
|
||
JR DelNext
|
||
|
||
; 㤠«¥¨¥ ¬ ન஢ ëå ä ©«®¢/¤¨à¥ªâ®à¨©
|
||
DeleteMark
|
||
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 HL,0xC000 - FileHDR.SIZE
|
||
LD BC,FileHDR.SIZE
|
||
.L2 ADD HL,BC
|
||
BIT FileHDR.B_MARK,(HL)
|
||
JR Z,.L2
|
||
LD (AdrDelFile),HL
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
DelNext CALL ResInvert
|
||
LD HL,SetInvert
|
||
PUSH HL
|
||
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
|
||
SUB A
|
||
LD (DeleteFlag),A
|
||
DeleteMain
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 180,80,280,56
|
||
W_FILL 4,2,272,10,COLORI.BLACK
|
||
W_TEXT 116,3,COLORI.WHITE,"Delete file"
|
||
W_TEXT 56,16,COLORP.HIGHGRAY,"The following file will be DELETED:"
|
||
W_BUTTON 16,38,56,14
|
||
W_TEXT 28,41,COLORP.HIGHGRAY,"Delete"
|
||
W_BUTTON 80,38,56,14
|
||
W_TEXT 102,41,COLORP.HIGHGRAY,"All"
|
||
W_BUTTON 144,38,56,14
|
||
W_TEXT 162,41,COLORP.HIGHGRAY,"Skip"
|
||
W_BUTTON 208,38,56,14
|
||
W_TEXT 220,41,COLORP.HIGHGRAY,"Cancel"
|
||
W_END
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
LD DE,WorkBuffer
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
LD (DE),A
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,.DelLp0
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JR Z,.L2
|
||
LD (DE),A
|
||
INC DE
|
||
.L2 CALL MakeDELname
|
||
.DelLp0 LD IX,248
|
||
LD HL,WorkBuffer
|
||
LD DE,320
|
||
LD BC,106
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintPathCentr
|
||
DelLoop LD IX,REZ2TAB.DeleteTab
|
||
CALL CheckCoordsMouse
|
||
SPDSS DSSF.SCANKEY
|
||
JR Z,DelLoop
|
||
LD A,B
|
||
OR A
|
||
JR NZ,DelLoop
|
||
LD A,E
|
||
CP 0x1B
|
||
LD HL,DeleteExit
|
||
JR Z,DelJump
|
||
CP 0x0D
|
||
LD HL,DeleteOne
|
||
JR Z,DelJump
|
||
RES 5,A
|
||
CP 'D'
|
||
LD HL,DeleteOne
|
||
JR Z,DelJump
|
||
CP 'A'
|
||
LD HL,DeleteAll
|
||
JR Z,DelJump
|
||
CP 'S'
|
||
LD HL,DeleteSkip
|
||
JR Z,DelJump
|
||
CP 'C'
|
||
JR NZ,DelLoop
|
||
LD HL,DeleteExit
|
||
DelJump
|
||
WINDOWCLOSE
|
||
JP (HL)
|
||
|
||
AdrDelFile DEFW 0x0000
|
||
DeleteFlag DEFB 0x00
|
||
|
||
MakeDELname LD HL,(AdrDelFile)
|
||
INC HL
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JP Z,MakeDOSname
|
||
INC HL
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
LD (DE),A
|
||
RET
|
||
|
||
;--------------------------------------------------------------
|
||
; ¯à®¯ã᪠㤠«¥¨ï
|
||
DeleteSkip LD C,(IY + PANEL.FILES_MARK)
|
||
LD B,(IY + PANEL.FILES_MARK + 1)
|
||
LD A,B
|
||
OR C
|
||
JP Z,DeleteExit
|
||
LD IX,(AdrDelFile)
|
||
RES 0,(IX + 0x00)
|
||
LD L,(IY + PANEL.BYTES_MARK)
|
||
LD H,(IY + PANEL.BYTES_MARK + 1)
|
||
LD E,(IX + FileHDR.SizeBytes)
|
||
LD D,(IX + FileHDR.SizeBytes + 1)
|
||
OR 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)
|
||
; [ ] FAT32
|
||
LD A,(IY + PANEL.BYTES_MARK_H)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
SBC HL,DE
|
||
; [ ] fat32
|
||
SBC A,0
|
||
LD (IY + PANEL.BYTES_MARK_H),A
|
||
LD (IY + PANEL.BYTES_MARK + 2),L
|
||
LD (IY + PANEL.BYTES_MARK + 3),H
|
||
DEC BC
|
||
LD (IY + PANEL.FILES_MARK),C
|
||
LD (IY + PANEL.FILES_MARK + 1),B
|
||
LD A,B
|
||
OR C
|
||
JP Z,DeleteExit
|
||
LD HL,(AdrDelFile)
|
||
LD DE,FileHDR.SIZE
|
||
.L1 ADD HL,DE
|
||
BIT FileHDR.B_MARK,(HL)
|
||
JR Z,.L1
|
||
LD (AdrDelFile),HL
|
||
CALL PrintDIR
|
||
JP DeleteMain
|
||
|
||
; 㤠«¥¨¥ ®¤®£® ä ©« /¤¨àë
|
||
DeleteOne CALL PointerMouseClock
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR Z,DelDel0
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
EX DE,HL
|
||
LD A,'\\'
|
||
.L2 DEC HL
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
INC HL
|
||
LD (HL),0x00
|
||
POP HL
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
PUSH AF
|
||
CALL C,DOSError
|
||
POP AF
|
||
JP C,DeleteExit
|
||
DelDel0 LD IX,(AdrDelFile)
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
CALL MakeDELname
|
||
POP HL
|
||
LD C,DSSF.RMDIR
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
JR NZ,DelDel1
|
||
LD A,(IX + FileHDR.Attr)
|
||
BIT DIR.B_Dir,A
|
||
JR NZ,DelDel1
|
||
LD C,DSSF.DELETE
|
||
DelDel1 PUSH IY
|
||
SPDSS
|
||
POP IY
|
||
JR NC,DelDel2
|
||
CALL DOSError
|
||
OR A
|
||
CALL NZ,BegDIRECTORY
|
||
JP DeleteExit
|
||
|
||
DelDel2 LD A,0x01
|
||
LD (DeleteFlag),A
|
||
CALL PointerMousePointer
|
||
JP DeleteSkip
|
||
|
||
DeleteAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
JR NZ,DeleteOne
|
||
LD A,0x01
|
||
LD (DeleteFlag),A
|
||
CALL PointerMouseClock
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 160,88,320,48
|
||
W_FILL 4,2,312,10,COLORI.BLACK
|
||
W_TEXT 132,3,COLORI.WHITE,"Delete files"
|
||
W_TEXT 8,16,COLORP.HIGHGRAY,"Delete:"
|
||
W_BORDER 16,28,288,12
|
||
W_FILL 18,29,284,10,COLORI.WHITE
|
||
W_END
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
LD (DelFrom),HL
|
||
LD IX,ProcessDel
|
||
LD L,(IY + PANEL.FILES_MARK)
|
||
LD H,(IY + PANEL.FILES_MARK + 1)
|
||
LD A,H
|
||
OR L
|
||
JR NZ,.L1
|
||
INC HL
|
||
.L1 LD (IX + PROGRESSBAR.MAX_PAGES),L
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 1),H
|
||
SUB A
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 2),A
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 3),A
|
||
CALL InitProgressBar
|
||
DeleteAllLp LD HL,0x0000
|
||
DelFrom EQU $-2
|
||
LD DE,WorkBuffer
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JR Z,.L2
|
||
LD (DE),A
|
||
INC DE
|
||
.L2 CALL MakeDELname
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_FILL 208,104,256,8,COLORI.HIGHGRAY
|
||
W_END
|
||
LD IX,256
|
||
LD HL,WorkBuffer
|
||
LD DE,208
|
||
LD BC,104
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintPathLeft
|
||
SPDSS DSSF.SCANKEY
|
||
LD HL,SC.ESC << 8 | 0x1B
|
||
OR A
|
||
SBC HL,DE
|
||
JP Z,DeleteAllExit
|
||
LD IX,(AdrDelFile)
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
CALL MakeDELname
|
||
POP HL
|
||
LD A,(IX + FileHDR.Attr)
|
||
BIT DIR.B_Dir,A
|
||
LD C,DSSF.DELETE ; 㤠«¥¨¥ ä ©«
|
||
JR Z,.L3
|
||
LD C,DSSF.RMDIR ; 㤠«¥¨¥ ¤¨à¥ªâ®à¨¨
|
||
.L3 PUSH IY
|
||
SPDSS
|
||
POP IY
|
||
JR NC,DelA1
|
||
CALL DOSError
|
||
OR A
|
||
CALL NZ,BegDIRECTORY
|
||
JP DeleteAllExit
|
||
|
||
DelA1 LD IX,ProcessDel
|
||
LD L,(IX + PROGRESSBAR.CURR_PAGE)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 1)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 1),H
|
||
CALL DrawProgressBar
|
||
LD C,(IY + PANEL.FILES_MARK)
|
||
LD B,(IY + PANEL.FILES_MARK + 1)
|
||
LD A,B
|
||
OR C
|
||
JP Z,DeleteAllExit
|
||
LD IX,(AdrDelFile)
|
||
RES FileHDR.B_MARK,(IX + FileHDR.Flag)
|
||
LD L,(IY + PANEL.BYTES_MARK)
|
||
LD H,(IY + PANEL.BYTES_MARK + 1)
|
||
LD E,(IX + FileHDR.SizeBytes)
|
||
LD D,(IX + FileHDR.SizeBytes + 1)
|
||
OR 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)
|
||
; [ ] FAT32
|
||
LD A,(IY + PANEL.BYTES_MARK_H)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
SBC HL,DE
|
||
; [ ] fat32
|
||
SBC A,0
|
||
LD (IY + PANEL.BYTES_MARK_H),A
|
||
LD (IY + PANEL.BYTES_MARK + 2),L
|
||
LD (IY + PANEL.BYTES_MARK + 3),H
|
||
DEC BC
|
||
LD (IY + PANEL.FILES_MARK),C
|
||
LD (IY + PANEL.FILES_MARK + 1),B
|
||
LD A,B
|
||
OR C
|
||
JP Z,DeleteAllExit
|
||
LD HL,(AdrDelFile)
|
||
LD DE,FileHDR.SIZE
|
||
.L1 ADD HL,DE
|
||
BIT FileHDR.B_MARK,(HL)
|
||
JR Z,.L1
|
||
LD (AdrDelFile),HL
|
||
JP DeleteAllLp
|
||
|
||
ProcessDel DW 178,117,284,0,0,0,0,0,0
|
||
DB COLORP.BLUE + COLORI.WHITE
|
||
|
||
DeleteAllExit HALT
|
||
WINDOWCLOSE
|
||
DeleteExit BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,DelTreeDIR1
|
||
LD IX,(AdrDelFile)
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
||
JR NZ,DelTreeDIR
|
||
DelExt1 POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,PointerMousePointer
|
||
PUSH HL
|
||
LD A,(DeleteFlag)
|
||
OR A
|
||
JP NZ,RefreshDIR
|
||
CALL PrintDIR
|
||
JP PrnFileInfo
|
||
|
||
DelTreeDIR LD A,(TreeFlag)
|
||
OR A
|
||
JR Z,DelExt1
|
||
DelTreeDIR1 LD A,(DeleteFlag)
|
||
OR A
|
||
JR Z,DelExt1
|
||
LD DE,DelName
|
||
CALL MakeDELname
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
CALL PointerMouseClock
|
||
LD HL,PointerMousePointer
|
||
EX (SP),HL
|
||
PUSH HL
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
EX AF,AF'
|
||
PUSH IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD IY,LeftPanel
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,.L1
|
||
LD IY,RightPanel
|
||
.L1 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L2
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L2
|
||
SETPORT WINSP.CPU3,,0
|
||
EX AF,AF'
|
||
JR NZ,DelTree1
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,LeftPanel
|
||
JR NZ,.L3
|
||
LD HL,RightPanel
|
||
.L3 LD DE,PANEL.CURR_PATH
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
CALL FindTreeDIRR
|
||
JP C,DelDIRn
|
||
LD HL,0xC001-0x10
|
||
LD BC,0x0010
|
||
.L4 ADD HL,BC
|
||
BIT 0,(HL)
|
||
JR Z,.L4
|
||
DEC HL
|
||
LD A,(HL)
|
||
AND 0x7F
|
||
INC A
|
||
LD IXL,A
|
||
ADD HL,BC
|
||
DlTree1 LD A,(HL)
|
||
AND 0x7F
|
||
CP IXL
|
||
JR NZ,DlTr31
|
||
PUSH HL
|
||
LD DE,DelName
|
||
INC HL
|
||
INC HL
|
||
DlTree2 LD A,(DE)
|
||
OR A
|
||
JR Z,DlTree4
|
||
CP (HL)
|
||
JR NZ,DlTree3
|
||
INC HL
|
||
INC DE
|
||
JR DlTree2
|
||
DlTree3 POP HL
|
||
BIT 7,(HL)
|
||
JP NZ,DelDIRn
|
||
DlTr31 ADD HL,BC
|
||
JR DlTree1
|
||
|
||
DlTree4 LD A,(HL)
|
||
OR A
|
||
JR NZ,DlTree3
|
||
POP HL
|
||
JR DelTree2
|
||
|
||
DelTree1 LD L,(IY + PANEL.FIRST_FILE)
|
||
LD H,(IY + PANEL.FIRST_FILE + 1)
|
||
LD E,(IY + PANEL.CURR_FILE)
|
||
LD D,(IY + PANEL.CURR_FILE + 1)
|
||
ADD HL,DE
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
SET 7,H
|
||
DelTree2 LD E,(HL)
|
||
INC HL
|
||
LD A,(HL)
|
||
LD BC,FileHDR.Attr
|
||
ADD HL,BC
|
||
LD D,(HL)
|
||
INC HL
|
||
EX AF,AF'
|
||
PUSH DE
|
||
PUSH HL
|
||
LD C,L
|
||
LD B,H
|
||
LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
SET 7,H
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
POP HL
|
||
LD D,H
|
||
LD A,L
|
||
SUB 0x10
|
||
LD E,A
|
||
JR NC,.L1
|
||
DEC D
|
||
.L1 PUSH DE
|
||
LD A,B
|
||
OR C
|
||
JR Z,.L2
|
||
LDIR
|
||
.L2 POP HL
|
||
POP DE
|
||
DEC HL
|
||
LD (HL),D
|
||
LD A,L
|
||
SUB 0x0E
|
||
LD L,A
|
||
JR NC,.L3
|
||
DEC H
|
||
.L3 EX AF,AF'
|
||
OR A
|
||
JR Z,.L4
|
||
LD (HL),A
|
||
.L4 DEC HL
|
||
BIT 7,E
|
||
JR Z,DelTree3
|
||
RES 7,E
|
||
LD BC,0x0010
|
||
ADD HL,BC
|
||
DelTr1 SBC HL,BC
|
||
LD A,(HL)
|
||
AND 0x7F
|
||
CP E
|
||
JR C,DelTree3
|
||
JR NZ,DelTr1
|
||
.L1 SET 7,(HL)
|
||
DelTree3 LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
DEC HL
|
||
LD (IY + PANEL.FILES_ALL),L
|
||
LD (IY + PANEL.FILES_ALL + 1),H
|
||
LD L,(IY + PANEL.FIRST_FILE)
|
||
LD H,(IY + PANEL.FIRST_FILE + 1)
|
||
LD E,(IY + PANEL.CURR_FILE)
|
||
LD D,(IY + PANEL.CURR_FILE + 1)
|
||
LD A,H
|
||
OR L
|
||
JR Z,DelTree4
|
||
DEC HL
|
||
LD (IY + PANEL.FIRST_FILE),L
|
||
LD (IY + PANEL.FIRST_FILE + 1),H
|
||
ADD HL,DE
|
||
LD C,(IY + PANEL.FILES_ALL)
|
||
LD B,(IY + PANEL.FILES_ALL + 1)
|
||
INC HL
|
||
SBC HL,BC
|
||
JR NC,DelTree4
|
||
INC DE
|
||
DelTree4 LD (IY + PANEL.CURR_FILE),E
|
||
LD (IY + PANEL.CURR_FILE + 1),D
|
||
LD HL,WorkBuffer
|
||
PUSH IY
|
||
SPDSS DSSF.CURDIR
|
||
POP IY
|
||
LD HL,BegDIR
|
||
PUSH IY
|
||
SPDSS DSSF.CHDIR
|
||
POP IY
|
||
JR C,DelDIR2
|
||
LD HL,TreeName
|
||
LD DE,WorkBuffer + 0x100
|
||
LD A,(FileAtribut)
|
||
PUSH IY
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP IY
|
||
JR C,DelDIR2
|
||
LD HL,TreeName
|
||
PUSH IY
|
||
SPDSS DSSF.CREATE,,0
|
||
POP IY
|
||
JR C,DelDIR2
|
||
LD L,(IY + PANEL.FILES_ALL)
|
||
LD H,(IY + PANEL.FILES_ALL + 1)
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
LD HL,0xC000
|
||
PUSH AF
|
||
SPDSS DSSF.WRITE
|
||
POP AF
|
||
SPDSS DSSF.CLOSE
|
||
DelDIR2 LD HL,WorkBuffer
|
||
SPDSS DSSF.CHDIR
|
||
DelDIRn POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP IY
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR NZ,DeleteExt1
|
||
CALL ReadDIR
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
LD A,(IY + PANEL.VIEWFLAG)
|
||
AND VIEWFLAG.MASK
|
||
PUSH AF
|
||
CALL Z,DrawHScrollBar
|
||
POP AF
|
||
CALL NZ,DrawVScrollBar
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL DrawVScrollBar
|
||
POP IY
|
||
RET
|
||
|
||
DeleteExt1 INC SP
|
||
INC SP
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
CALL SetInvert
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BAR_X
|
||
ADD IX,DE
|
||
CALL InitScrollBar
|
||
CALL DrawVScrollBar
|
||
CALL MakeTreePathR
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,RightPanel
|
||
JR Z,.L1
|
||
LD IY,LeftPanel
|
||
.L1 CALL NewDIRECTORY
|
||
POP IY
|
||
RET
|
||
|
||
DelName DB 13 DUP 0
|
||
|
||
;--------------------------------------------------------------
|
||
COPY
|
||
.PathCurrFile DW 0 ; €¤à¥á ®¯¨á ⥫ï ⥪ã饣® ä ©« /¤¨àë
|
||
.PathSrc DW 0 ; €¤à¥á ¯ã⨠¨áâ®ç¨ª
|
||
.PathDst DW 0 ; €¤à¥á ¯ã⨠¯à¨¥¬¨ª
|
||
.PathSrcEnd DW 0 ; €¤à¥á 墮áâ ¯ã⨠¨áâ®ç¨ª
|
||
.PathDstEnd DW 0 ; €¤à¥á 墮áâ ¯ã⨠¯à¨¥¬¨ª
|
||
.CopyFiles DW 0 ; Š®«¨ç¥á⢮ ª®¯¨à㥬ëå ä ©«®¢
|
||
.CopyBytes DB 5 DUP 0 ; Š®«¨ç¥á⢮ ª®¯¨à㥬ëå ¡ ©â®¢
|
||
.OverWriteFlg DB 0 ; ”« £ ¯¥à¥§ ¯¨á¨ ä ©«®¢
|
||
.FreeBanks DW 0 ; Š®«¨ç¥á⢮ ᢮¡®¤ëå ¡ ª®¢
|
||
.CurrReadBytes DD 0 ; „«¨ ç¨â ¥¬®£® ä ©«
|
||
.CurrWriteBytes DD 0 ; „«¨ § ¯¨áë¢ ¥¬®£® ä ©«
|
||
.FHandleSrc DB 0 ; ” ©« ¨áâ®ç¨ª
|
||
.FHandleDst DB 0 ; ” ©« ¯à¨¥¬¨ª
|
||
.MemID DB 0 ; ˆ¤¥â¨ä¨ª â®à ¯ ¬ï⨠¯®¤ ª®¯¨à®¢ ¨¥
|
||
;--------------------------------------------------------------
|