flex_nav/rez2_fnfunct.a80
savelij13 499aa7968d - исправлена проверка запускаемого файла по расширению.
- доки переведены на UTF8 кодировку.
- поправлена CorrBigChar.
2025-06-24 21:36:47 +03:00

2425 lines
40 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; LAST UPDATE: 16.05.2025 savelij
;[]==========================================================[]
CopyFilesR LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
RET Z
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
RET NZ
SETPORT WINSP.Y_PORT,0xC0
LD A,(IY + PANEL.MFL)
OR (IY + PANEL.MFH)
JR 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 L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
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
LD (AdrCopyFile),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,COPY_DIR
ELSE
RET NZ
ENDIF
LD HL,0
LD (ECopyFiles),HL
LD L,(IX + FileHDR.SizeBytes)
LD H,(IX + FileHDR.SizeBytes + 1)
LD (ECopyBytes),HL
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
LD (ECopyBytes + 2),DE
CALL ConvLenToBank
JP CopyNxt
IF MARK_DIR
; ª®¯¨à®¢ ­¨¥ ¤¨àë á® ¢á¥¬ ᮤ¥à¦¨¬ë¬
COPY_DIR PUSH IX
PUSH IY
CALL RESIDENT.GetDirSize ; ¯à®¬¥à塞 ¤¨àã ¯® à §¬¥àã
LD HL,FileHDR.SizeBytes
CALL SET_DWORD ; § ­¥á«¨ à §¬¥à ¤¨àë ¢ ¡ ©â å ¢ ®¯¨á â¥«ì
LD HL,0
LD (ECopyFiles),HL
EX DE,HL
LD D,B
LD E,C
CALL ConvLenToBank
POP IY
POP IX
RET
ENDIF
; ª®¯¨à®¢ ­¨¥ ¯®¬¥ç¥­­ëå ä ©«®¢
CopyMark LD L,(IY + PANEL.MFL)
LD H,(IY + PANEL.MFH)
LD (ECopyFiles),HL
LD L,(IY + PANEL.MBL1)
LD H,(IY + PANEL.MBH1)
LD (ECopyBytes),HL
LD L,(IY + PANEL.MBL2)
LD H,(IY + PANEL.MBH2)
LD (ECopyBytes + 2),HL
; [ ] fat32
LD A,(IY + PANEL.MBL3)
LD (ECopyBytes + 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 (AdrCopyFile),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 ConvLenToBank
LD C,L
LD B,H
POP HL
ADD HL,BC
LD C,E
LD B,D
POP DE
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
CopyNxt LD IX,ProcessAll
ADD HL,HL
EX DE,HL
ADC HL,HL
EX DE,HL
LD (IX + PROC.MAXL1),L
LD (IX + PROC.MAXH1),H
LD (IX + PROC.MAXL2),E
LD (IX + PROC.MAXH2),D
CALL InitProcess
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.CURRPATH
ADD HL,DE
LD DE,CurPath
SUB A
LD C,A
.L2 LDI
CP (HL)
JR NZ,.L2
LD (DE),A
SUB A
SUB C
LD (PathLen),A
LD IX,PathStr
LD HL,PathTab
CALL InputLine
WINDOWCLOSE
RET C
LD A,(PathLen)
OR A
RET Z
PUSH IY
SPDSS DSSF.INFOMEM
POP IY
LD (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
SUB A
LD (OverWriteFlg),A
LD HL,LeftPanel
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
JR Z,.L4
LD HL,RightPanel
.L4 LD BC,PANEL.CURRPATH
ADD HL,BC
LD (CopyFrom),HL
LD HL,CurPath
LD (CopyTo),HL
CALL SetClock
PUSH IY
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
CopyNextFile CALL PrnFromTo
LD IX,(AdrCopyFile)
LD L,(IX + FileHDR.SizeBytes)
LD H,(IX + FileHDR.SizeBytes + 1)
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
LD (ReadLen),HL
LD (ReadLen + 2),DE
LD (WriteLen),HL
LD (WriteLen + 2),DE
CALL ConvLenToBank
LD (.FileBnL),HL
LD (.FileBnH),DE
LD IX,ProcessOne
ADD HL,HL
EX DE,HL
ADC HL,HL
EX DE,HL
LD (IX + PROC.MAXL1),L
LD (IX + PROC.MAXH1),H
LD (IX + PROC.MAXL2),E
LD (IX + PROC.MAXH2),D
CALL InitProcess
CALL PrnProcess
LD HL,(FreeBanks)
LD DE,0x0000
.FileBnH EQU $-2
LD A,D
OR E
JR NZ,.CopyLp1
LD DE,0x0000
.FileBnL 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 (MemIndef),A
LD HL,PagesList
SPBIOS BIOSF.GETMEMBLKPAGES
LD HL,(CopyFrom) ;Žâªà뢠¥¬ ä ©« ¨áâ®ç­¨ª
SPDSS DSSF.CHDIR
JP C,CopyError1
LD HL,(AdrCopyFile)
INC HL
LD DE,WorkBuffer
PUSH DE
CALL MakeDOSname
POP HL
SPDSS DSSF.OPEN,,1
JP C,CopyError1
LD (FHandle1),A
LD HL,(CopyTo) ;Žâªà뢠¥¬ ä ©« ¯à¨¥¬­¨ª
SPDSS DSSF.CHDIR
JP C,CopyError2
LD IX,(AdrCopyFile)
LD HL,(AdrCopyFile)
INC HL
LD DE,WorkBuffer
PUSH DE
CALL MakeDOSname
POP HL
LD A,(OverWriteFlg)
OR A
LD C,DSSF.CREAT_N ;0x0B
JR Z,.L2
LD C,DSSF.CREATE ;0x0A
.L2 LD A,(IX + FileHDR.Attr)
SPDSS
JR NC,CopyLp2
CP 0x07
JP NZ,CopyError2
CALL OverWrite
CopyLp2 LD (FHandle2),A
LD HL,(ReadLen)
LD A,H
OR L
LD HL,(ReadLen+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,(ReadLen)
LD DE,(ReadLen + 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 (ReadLen),HL
LD (ReadLen + 2),DE
LD HL,0xC000
LD DE,0x4000
LD A,(FHandle1)
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,(ReadLen)
LD A,D
OR E
JR Z,.L1
LD A,(FHandle1)
SPDSS DSSF.READ
CALL NextProcess
.L1 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,(WriteLen)
LD DE,(WriteLen + 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 (WriteLen),HL
LD (WriteLen + 2),DE
LD HL,0xC000
LD DE,0x4000
LD A,(FHandle2)
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,(ReadLen)
LD A,H
OR L
LD HL,(ReadLen + 2)
OR H
OR L
JR Z,CloseFiles
JP ReadFile
; !FIXIT ᤥ« âì â ª:
WriteEnd: LD HL,0xC000
LD DE,(WriteLen)
LD A,D
OR E
JR Z,.L1
LD A,(FHandle2)
SPDSS DSSF.WRITE
JP C,CopyError3
CALL NextProcess
.L1 POP HL
POP AF
SETPORT WINSP.CPU3,,0
CloseFiles LD A,(FHandle1)
SPDSS DSSF.GET_D_T
LD A,(FHandle2)
SPDSS DSSF.PUT_D_T
LD A,(FHandle2)
SPDSS DSSF.CLOSE
CloseFile1 LD A,(FHandle1)
SPDSS DSSF.CLOSE
LD A,(MemIndef)
SPDSS DSSF.FREEMEM
LD IX,(AdrCopyFile)
RES FileHDR.B_MARK,(IX + FileHDR.Flag)
LD HL,(ECopyBytes)
LD E,(IX + FileHDR.SizeBytes)
LD D,(IX + FileHDR.SizeBytes + 1)
OR A
SBC HL,DE
LD (ECopyBytes),HL
LD HL,(ECopyBytes+2)
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
SBC HL,DE
LD (ECopyBytes+2),HL
LD HL,(ECopyFiles)
LD A,H
OR L
JR Z,CopyEnd
DEC HL
LD (ECopyFiles),HL
LD A,H
OR L
JR Z,CopyEnd
LD HL,(AdrCopyFile)
LD DE,FileHDR.SIZE
.L1 ADD HL,DE
BIT FileHDR.B_MARK,(HL)
JR Z,.L1
LD (AdrCopyFile),HL
JP CopyNextFile
CopyEnd POP AF
SETPORT WINSP.CPU3,,0
POP IY
WINDOWCLOSE
LD HL,(ECopyFiles)
LD (IY + PANEL.MFL),L
LD (IY + PANEL.MFH),H
LD HL,(ECopyBytes)
LD (IY + PANEL.MBL1),L
LD (IY + PANEL.MBH1),H
LD HL,(ECopyBytes+2)
LD (IY + PANEL.MBL2),L
LD (IY + PANEL.MBH2),H
; [ ] fat32
LD A,(ECopyBytes+4)
LD (IY + PANEL.MBL3),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.CURRPATH
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.CURRPATH
ADD HL,DE
PUSH IY
SPDSS DSSF.CHDIR
POP IY
JP C,BegDIRECTORY
CALL PrintDIR
CALL PrnFileInfo
JP SetMouse
CopyError3: ; …᫨ ­¥â ¬¥áâ  ­  ¤¨áª¥ ¤«ï ª®¯¨à®¢ ­¨ï ;!FIXIT ®¯â¨¬¨§¨à®¢ âì
POP HL ; á­¨¬ ¥¬ «¨è­¥¥
POP DE ; âãâ «¥¦¨â AF
PUSH AF
LD A,D
SETPORT WINSP.CPU3,,0
LD A,(FHandle2)
SPDSS DSSF.CLOSE
CALL CopyErrorFileDelete
POP AF
CopyError2 PUSH AF
LD A,(FHandle1)
SPDSS DSSF.CLOSE
POP AF
CopyError1 PUSH AF
LD A,(MemIndef)
SPDSS DSSF.FREEMEM
POP AF
CALL DOSError
JP CopyEnd
CopyBreak POP HL
POP AF
SETPORT WINSP.CPU3,,0
LD A,(FHandle2)
SPDSS DSSF.CLOSE
LD A,(FHandle1)
SPDSS DSSF.CLOSE
LD A,(MemIndef)
SPDSS DSSF.FREEMEM
CALL CopyErrorFileDelete
JP CopyEnd
CopyErrorFileDelete:
LD IX,(AdrCopyFile)
LD HL,(AdrCopyFile)
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 CALL SetMouse
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,(CopyTo)
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,(AdrCopyFile)
INC HL
CALL MakeDOSname
LD IX,0x00F8
LD HL,WorkBuffer
LD DE,320
LD BC,114
LD A,COLORP.HIGHGRAY + COLORI.BLACK
CALL PrnRangPathC
OvWrtLp LD IX,OverWrtTab
CALL TestCoords
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 (OverWriteFlg),A
OverWrtFile CALL SetClock
LD IX,(AdrCopyFile)
LD HL,(AdrCopyFile)
INC HL
LD DE,WorkBuffer
PUSH DE
CALL MakeDOSname
POP HL
LD A,(IX + FileHDR.Attr)
SPDSS DSSF.CREATE
RET
OverSkip CALL SetClock
LD IX,(AdrCopyFile)
LD L,(IX + FileHDR.SizeBytes)
LD H,(IX + FileHDR.SizeBytes + 1)
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
CALL ConvLenToBank
ADD HL,HL
EX DE,HL
ADC HL,HL
EX DE,HL
LD IX,ProcessAll
LD C,(IX + PROC.CURL1)
LD B,(IX + PROC.CURH1)
ADD HL,BC
LD (IX + PROC.CURL1),L
LD (IX + PROC.CURH1),H
LD C,(IX + PROC.CURL2)
LD B,(IX + PROC.CURH2)
EX DE,HL
ADC HL,BC
LD (IX + PROC.CURL2),L
LD (IX + PROC.CURH2),H
CALL PrnProcess
LD HL,CloseFile1
EX (SP),HL
RET
OverExit INC SP
INC SP
LD IX,(AdrCopyFile)
BIT 0,(IX + 0x00)
JP Z,CloseFile1
LD A,(FHandle1)
SPDSS DSSF.CLOSE
LD A,(MemIndef)
SPDSS DSSF.FREEMEM
POP IY
JP CopyEnd
;--------------------------------------------------------------
AdrCopyFile DW 0x0000 ; €¤à¥á ®¯¨á â¥«ï ⥪ã饣® ä ©« 
CopyFrom DW 0x0000 ; €¤à¥á ¯ã⨠®âªã¤ 
CopyTo DW 0x0000 ; €¤à¥á ¯ã⨠ªã¤ 
ECopyFiles DW 0x0000 ; Š®«-¢® ª®¯¨à㥬ëå ä ©«®¢
ECopyBytes DB 5 DUP 0 ; Š®«-¢® ª®¯¨à㥬ëå ¡ ©â®¢
OverWriteFlg DB 0x00 ; ”« £ ¯¥à¥§ ¯¨á¨ ä ©«®¢
FreeBanks DW 0x0000 ; Š®«-¢® ᢮¡®¤­ëå ¡ ­ª®¢
ReadLen DD 0 ; „«¨­  ç¨â ¥¬®£® ä ©« 
WriteLen DD 0 ; „«¨­  § ¯¨á뢠¥¬®£® ä ©« 
FHandle1 DB 0x00 ; ” ©« ¨áâ®ç­¨ª
FHandle2 DB 0x00 ; ” ©« ¯à¨¥¬­¨ª
MemIndef DB 0x00 ; ˆ­¤¥ä¨ª.¯ ¬ï⨠¯®¤ ª®¯¨à®¢ ­¨¥
;--------------------------------------------------------------
; DEHL - ª®«¨ç¥á⢮ ¡ ©â
; 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
ConvLenToBank LD A,H
LD H,L
LD L,0x00
SLA A
RL E
RL D
RL L ; LDEA * 2
SLA A
RL E
RL D
RL L ; LDEA * 2
OR H
LD H,0x00
EX DE,HL
JR Z,.L1
INC HL
.L1 LD A,H
OR L
RET NZ
INC DE
RET
PrnFromTo LD HL,(CopyFrom)
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,(AdrCopyFile)
INC HL
CALL MakeDOSname
LD HL,(CopyTo)
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,(AdrCopyFile)
INC HL
CALL MakeDOSname
MAKEWINDOW WINSUBOBJ.WOBIND
W_FILL 204,97,256,18,COLORI.HIGHGRAY
W_END
LD IX,0x0100
LD HL,WorkBuffer
LD DE,204
LD BC,97
LD A,COLORP.HIGHGRAY + COLORI.BLACK
CALL PrnRangPathL
LD IX,0x0100
LD HL,WorkBuffer+0x100
LD DE,204
LD BC,107
LD A,COLORP.HIGHGRAY + COLORI.BLACK
JP PrnRangPathL
NextProcess LD IX,ProcessAll
LD L,(IX + PROC.CURL1)
LD H,(IX + PROC.CURH1)
INC HL
LD (IX + PROC.CURL1),L
LD (IX + PROC.CURH1),H
LD A,H
OR L
JR NZ,.L1
LD L,(IX + PROC.CURL2)
LD H,(IX + PROC.CURH2)
INC HL
LD (IX + PROC.CURL2),L
LD (IX + PROC.CURH2),H
.L1 CALL PrnProcess
LD IX,ProcessOne
LD L,(IX + PROC.CURL1)
LD H,(IX + PROC.CURH1)
INC HL
LD (IX + PROC.CURL1),L
LD (IX + PROC.CURH1),H
LD A,H
OR L
JR NZ,.L2
LD L,(IX + PROC.CURL2)
LD H,(IX + PROC.CURH2)
INC HL
LD (IX + PROC.CURL2),L
LD (IX + PROC.CURH2),H
.L2 JP PrnProcess
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; 0x4F
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 0x80,0x00,0x00,0x00
PathLen DB 0x00
DW 170,106,324
DB 0xF0
CurPath DB 0x81 DUP 0
;[]==========================================================[]
ReNameR LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
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.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
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
; LD A,H
; OR 0xC0
; LD H,A
SET 6,H
SET 7,H
INC HL
INC HL
LD DE,CurName
LD BC,0x000D
LDIR
LD A,DIR.M_Dir;0x10
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
; LD A,H
; OR 0xC0
; LD H,A
SET 6,H
SET 7,H ; | 0xC000
PUSH HL
INC HL
LD DE,CurName
CALL MakeDOSname
POP HL
LD BC,FileHDR.Attr;0x000E
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,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 SetClock
LD HL,SetMouse
EX (SP),HL
PUSH HL
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JR Z,ReName0
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
ReName1 LD HL,LeftPanel + PANEL.CURRPATH
LD DE,RightPanel + PANEL.CURRPATH
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
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.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
ADD HL,HL ; *10
; LD A,H
; OR 0xC0
; LD H,A
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.CURRPATH
ADD HL,DE
INC HL
INC HL
IF TREE_REZID
CALL FindTreeDIRR
ELSE
CALL FindTreeDIRR
ENDIF
JP C,ReNameT
LD HL,0xC001 - 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.EFL)
LD H,(IY + PANEL.EFH)
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
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.BARXL
ADD IX,DE
CALL PrnVScrBar
POP IY
RET
ReNameExt1 INC SP
INC SP
CALL PrintDIR
CALL PrnFileInfo
CALL SetInvert
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
CALL PrnVScrBar
IF TREE_REZID
CALL TestTreeR.TestTreeBeg
ELSE
CALL TestTreeR.TestTreeBeg
ENDIF
PUSH IY
IF TREE_REZID
CALL MakeTreePathR
ELSE
CALL MakeTreePathR
ENDIF
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.CURRPATH
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
LD HL,LeftPanel + PANEL.CURRPATH
LD DE,RightPanel + PANEL.CURRPATH
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
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,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 SetClock
LD HL,SetMouse
PUSH HL
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JR Z,MkDIR0
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
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.EFH)
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.CURRPATH
ADD HL,DE
INC HL
INC HL
IF TREE_REZID
CALL FindTreeDIRR
ELSE
CALL FindTreeDIRR
ENDIF
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.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
; LD A,H
; OR 0xC0
; LD H,A
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.EFL)
LD H,(IY + PANEL.EFH)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
; LD A,H
; OR 0xC0
; LD H,A
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.EFL)
LD H,(IY + PANEL.EFH)
INC HL
LD (IY + PANEL.EFL),L
LD (IY + PANEL.EFH),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.EFL)
LD H,(IY + PANEL.EFH)
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
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.CURRPATH
LD DE,RightPanel + PANEL.CURRPATH
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
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.EFL)
OR (IY + PANEL.EFH)
RET Z
SETPORT WINSP.Y_PORT,0xC0
LD A,(IY + PANEL.MFL)
OR (IY + PANEL.MFH)
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.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
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
; LD A,H
; OR 0xC0
; LD H,A
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
; LD A,H
; OR 0xC0
; LD H,A
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.CURRPATH
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,0x00F8
LD HL,WorkBuffer
LD DE,320
LD BC,106
LD A,COLORP.HIGHGRAY + COLORI.BLACK
CALL PrnRangPathC
DelLoop LD IX,DeleteTab
CALL TestCoords
SPDSS DSSF.SCANKEY
JR Z,DelLoop
LD A,B
OR A
JR NZ,DelLoop
LD A,E
CP 0x1B
LD HL,DelExit
JR Z,DelJump
CP 0x0D
LD HL,DelDelete
JR Z,DelJump
RES 5,A
CP 'D'
LD HL,DelDelete
JR Z,DelJump
CP 'A'
LD HL,DelAll
JR Z,DelJump
CP 'S'
LD HL,DelSkip
JR Z,DelJump
CP 'C'
JR NZ,DelLoop
LD HL,DelExit
DelJump
WINDOWCLOSE
JP (HL)
AdrDelFile DEFW 0x0000
DeleteFlag DEFB 0x00
MakeDELname LD HL,(AdrDelFile)
INC HL
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
; JR NZ,MakeDELn1
JP Z,MakeDOSname
;MakeDELn1
INC HL
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
LD (DE),A
RET
;--------------------------------------------------------------
DelSkip LD C,(IY + PANEL.MFL)
LD B,(IY + PANEL.MFH)
LD A,B
OR C
JP Z,DelExit
LD IX,(AdrDelFile)
RES 0,(IX + 0x00)
LD L,(IY + PANEL.MBL1)
LD H,(IY + PANEL.MBH1)
LD E,(IX + FileHDR.SizeBytes)
LD D,(IX + FileHDR.SizeBytes + 1)
OR A
SBC HL,DE
LD (IY + PANEL.MBL1),L
LD (IY + PANEL.MBH1),H
LD L,(IY + PANEL.MBL2)
LD H,(IY + PANEL.MBH2)
; [ ] FAT32
LD A,(IY + PANEL.MBL3)
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
SBC HL,DE
; [ ] fat32
SBC A,0
LD (IY + PANEL.MBL3),A
LD (IY + PANEL.MBL2),L
LD (IY + PANEL.MBH2),H
DEC BC
LD (IY + PANEL.MFL),C
LD (IY + PANEL.MFH),B
LD A,B
OR C
JP Z,DelExit
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
DelDelete CALL SetClock
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JR Z,DelDel0
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
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,DelExit
DelDel0 LD IX,(AdrDelFile)
LD DE,WorkBuffer
PUSH DE
CALL MakeDELname
POP HL
LD C,DSSF.RMDIR ;0x1C ;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 ;0x0E ;DELETE
DelDel1 PUSH IY
SPDSS
POP IY
JR NC,DelDel2
CALL DOSError
OR A
CALL NZ,BegDIRECTORY
JP DelExit
DelDel2 LD A,0x01
LD (DeleteFlag),A
CALL SetMouse
JP DelSkip
DelAll BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JR NZ,DelDelete
LD A,0x01
LD (DeleteFlag),A
CALL SetClock
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.CURRPATH
ADD HL,DE
LD (DelFrom),HL
LD IX,ProcessDel
LD L,(IY + PANEL.MFL)
LD H,(IY + PANEL.MFH)
LD A,H
OR L
JR NZ,.L1
INC HL
.L1 LD (IX + PROC.MAXL1),L
LD (IX + PROC.MAXH1),H
SUB A
LD (IX + PROC.MAXL2),A
LD (IX + PROC.MAXH2),A
CALL InitProcess
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,0x0100
LD HL,WorkBuffer
LD DE,208
LD BC,104
LD A,COLORP.HIGHGRAY + COLORI.BLACK
CALL PrnRangPathL
SPDSS DSSF.SCANKEY
LD HL,SC.ESC << 8 | 0x1B
OR A
SBC HL,DE
JP Z,DelAllExit
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 ;0x0E ;DELETE
JR Z,.L3
LD C,DSSF.RMDIR ;0x1C ;RMDIR
.L3 PUSH IY
SPDSS
POP IY
JR NC,DelA1
CALL DOSError
OR A
CALL NZ,BegDIRECTORY
JP DelAllExit
DelA1 LD IX,ProcessDel
LD L,(IX + PROC.CURL1)
LD H,(IX + PROC.CURH1)
INC HL
LD (IX + PROC.CURL1),L
LD (IX + PROC.CURH1),H
CALL PrnProcess
LD C,(IY + PANEL.MFL)
LD B,(IY + PANEL.MFH)
LD A,B
OR C
JP Z,DelAllExit
LD IX,(AdrDelFile)
RES FileHDR.B_MARK,(IX + FileHDR.Flag)
LD L,(IY + PANEL.MBL1)
LD H,(IY + PANEL.MBH1)
LD E,(IX + FileHDR.SizeBytes)
LD D,(IX + FileHDR.SizeBytes + 1)
OR A
SBC HL,DE
LD (IY + PANEL.MBL1),L
LD (IY + PANEL.MBH1),H
LD L,(IY + PANEL.MBL2)
LD H,(IY + PANEL.MBH2)
; [ ] FAT32
LD A,(IY + PANEL.MBL3)
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
SBC HL,DE
; [ ] fat32
SBC A,0
LD (IY + PANEL.MBL3),A
LD (IY + PANEL.MBL2),L
LD (IY + PANEL.MBH2),H
DEC BC
LD (IY + PANEL.MFL),C
LD (IY + PANEL.MFH),B
LD A,B
OR C
JP Z,DelAllExit
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
DW 117
DW 284
DW 0
DW 0
DW 0
DW 0
DW 0
DW 0
DB COLORP.BLUE + COLORI.WHITE
DelAllExit HALT
WINDOWCLOSE
DelExit 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,SetMouse
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 SetClock
LD HL,SetMouse
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.CURRPATH
ADD HL,DE
INC HL
INC HL
IF TREE_REZID
CALL FindTreeDIRR
ELSE
CALL FindTreeDIRR
ENDIF
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.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
; LD A,H
; OR 0xC0
; LD H,A
SET 6,H
SET 7,H
DelTree2 LD E,(HL)
INC HL
LD A,(HL)
LD BC,FileHDR.Attr;0x000E
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.EFL)
LD H,(IY + PANEL.EFH)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
; LD A,H
; OR 0xC0
; LD H,A
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.EFL)
LD H,(IY + PANEL.EFH)
DEC HL
LD (IY + PANEL.EFL),L
LD (IY + PANEL.EFH),H
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
LD A,H
OR L
JR Z,DelTree4
DEC HL
LD (IY + PANEL.FFL),L
LD (IY + PANEL.FFH),H
ADD HL,DE
LD C,(IY + PANEL.EFL)
LD B,(IY + PANEL.EFH)
INC HL
SBC HL,BC
JR NC,DelTree4
INC DE
DelTree4 LD (IY + PANEL.CFL),E
LD (IY + PANEL.CFH),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.EFL)
LD H,(IY + PANEL.EFH)
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.BARXL
ADD IX,DE
CALL InitScrollBar
LD A,(IY + PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
PUSH AF
CALL Z,PrnHScrBar
POP AF
CALL NZ,PrnVScrBar
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.BARXL
ADD IX,DE
CALL PrnVScrBar
POP IY
RET
DeleteExt1 INC SP
INC SP
CALL PrintDIR
CALL PrnFileInfo
CALL SetInvert
PUSH IY
POP IX
LD DE,PANEL.BARXL
ADD IX,DE
CALL InitScrollBar
CALL PrnVScrBar
IF TREE_REZID
CALL MakeTreePathR
ELSE
CALL MakeTreePathR
ENDIF
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
;[]==========================================================[]
QuitConfirmWin
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 208,88,224,50
W_FILL 4,2,216,10,COLORI.BLACK
W_TEXT 104,3,COLORI.WHITE,"Quit"
W_TEXT 28,19,COLORP.HIGHGRAY,"Do you want quit Flex Navigator ?"
W_BUTTON 32,32,72,14
W_TEXT 58,35,COLORP.HIGHGRAY,"Yes"
W_BUTTON 120,32,72,14
W_TEXT 150,35,COLORP.HIGHGRAY,"No"
W_END
.Loop LD IX,QuitTab
CALL TestCoords
SPDSS DSSF.SCANKEY
JR Z,.Loop
LD A,B
OR A
JR NZ,.Loop
LD A,E
CP 0x1B
JR Z,.Abort
CP 0x0D
JR Z,.OK
RES 5,A
CP 'Y'
JR Z,.OK
CP 'N'
JR NZ,.Loop
.Abort
WINDOWCLOSE
SCF
RET
.OK
WINDOWCLOSE
OR A
RET