314 lines
5.1 KiB
Plaintext
314 lines
5.1 KiB
Plaintext
|
|
; LAST UPDATE: 27.04.2025 savelij
|
|
|
|
;[]----------------------------------------------------------[]
|
|
BegDIRECTORY LD HL,BegDIR
|
|
NewDIRECTORY PUSH HL
|
|
CALL ResInvert
|
|
POP HL
|
|
CALL SetClock
|
|
PUSH IY
|
|
SPDSS DSSF.CHDIR
|
|
POP IY
|
|
CALL C,DOSError
|
|
PUSH IY
|
|
SPDSS DSSF.CURDISK
|
|
POP IY
|
|
PUSH IY
|
|
POP HL
|
|
LD DE,PANEL.CURRPATH
|
|
ADD HL,DE
|
|
ADD A,'A'
|
|
CP (HL)
|
|
PUSH AF
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),':'
|
|
INC HL
|
|
PUSH IY
|
|
SPDSS DSSF.CURDIR
|
|
POP IY
|
|
POP AF
|
|
JR Z,NewDIRECT1
|
|
LD A,(TreeFlag)
|
|
OR A
|
|
JP Z,InitPanel
|
|
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
JP NZ,InitPanel
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD HL,LeftPanel + PANEL.CURRPATH
|
|
LD DE,RightPanel + PANEL.CURRPATH
|
|
JR Z,NewDIR0
|
|
LD HL,RightPanel + PANEL.CURRPATH
|
|
LD DE,LeftPanel + PANEL.CURRPATH
|
|
NewDIR0 SUB A
|
|
.L1 LDI
|
|
CP (HL)
|
|
JR NZ,.L1
|
|
LD (DE),A
|
|
JP InitPanels
|
|
|
|
NewDIRECT1 BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
PUSH AF
|
|
CALL NZ,NewDIRTree
|
|
POP AF
|
|
CALL Z,ReadDIR
|
|
CALL PrintPath
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
|
|
CALL NZ,PrintDOSPath
|
|
CALL PrintDIR
|
|
CALL SetInvert
|
|
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
|
|
JP SetMouse
|
|
|
|
NewDIRTree PUSH IY
|
|
POP HL
|
|
LD DE,PANEL.CURRPATH
|
|
ADD HL,DE
|
|
INC HL
|
|
INC HL
|
|
IF TREE_REZID
|
|
CALL RESIDENT.FindTreeDIR
|
|
CALL RESIDENT.MakeTreePath
|
|
ELSE
|
|
CALL FindTreeDIRR
|
|
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
|
|
|
|
;[]----------------------------------------------------------[]
|
|
RefreshDIR BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
|
JR NZ,RfDIRn1
|
|
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
|
|
RfDIRn1 LD HL,LeftPanel + PANEL.CURRPATH
|
|
LD DE,RightPanel + PANEL.CURRPATH
|
|
RefrDIR LD A,(DE)
|
|
CP (HL)
|
|
RET NZ
|
|
INC HL
|
|
INC DE
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,RefrDIR
|
|
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,RefrDex
|
|
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
|
|
RefrDex POP IY
|
|
RET
|
|
|
|
;[]----------------------------------------------------------[]
|
|
FindPrevFile LD A,(IY + PANEL.EFL)
|
|
OR (IY + PANEL.EFH)
|
|
RET Z
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
|
|
RET Z
|
|
GETPORT WINSP.CPU1
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU1,,0
|
|
LD IX,0x4000
|
|
LD HL,0x4001
|
|
LD BC,0x0000
|
|
FndPrFile0 PUSH HL
|
|
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
|
JR NZ,FndPrFileNxt
|
|
LD DE,WorkBuffer
|
|
PUSH DE
|
|
PUSH BC
|
|
CALL MakeDOSname
|
|
POP BC
|
|
POP HL
|
|
LD DE,PrevFile
|
|
FndPrFile1 LD A,(DE)
|
|
OR A
|
|
JR Z,FndPrFileE
|
|
CP (HL)
|
|
JR NZ,FndPrFileNxt
|
|
INC HL
|
|
INC DE
|
|
JR FndPrFile1
|
|
|
|
FndPrFileNxt POP HL
|
|
LD DE,FileHDR.SIZE
|
|
ADD HL,DE
|
|
ADD IX,DE
|
|
INC BC
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrFile0
|
|
JP FndTreeExt
|
|
|
|
FndPrFileE LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrFileNxt
|
|
JR FndTree
|
|
|
|
PrevFile DB 13 DUP 0
|
|
|
|
;[]----------------------------------------------------------[]
|
|
FindPrevDIR LD A,(IY + PANEL.EFL)
|
|
OR (IY + PANEL.EFH)
|
|
RET Z
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
|
|
RET Z
|
|
GETPORT WINSP.CPU1
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU1,,0
|
|
LD IX,0x4000
|
|
LD HL,0x4001
|
|
LD BC,0x0000
|
|
FndPrDIR0 PUSH HL
|
|
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
|
JR Z,FndPrDIRnxt
|
|
LD DE,WorkBuffer
|
|
PUSH DE
|
|
PUSH BC
|
|
CALL MakeDOSname
|
|
POP BC
|
|
POP HL
|
|
LD DE,PrevDIR
|
|
FndPrDIR1 LD A,(DE)
|
|
OR A
|
|
JR Z,FndPrDIRe
|
|
CP (HL)
|
|
JR NZ,FndPrDIRnxt
|
|
INC HL
|
|
INC DE
|
|
JR FndPrDIR1
|
|
|
|
FndPrDIRnxt POP HL
|
|
LD DE,FileHDR.SIZE
|
|
ADD HL,DE
|
|
ADD IX,DE
|
|
INC BC
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrDIR0
|
|
JR FndTreeExt
|
|
|
|
FndPrDIRe LD A,(HL)
|
|
OR A
|
|
JR NZ,FndPrDIRnxt
|
|
FndTree INC SP
|
|
INC SP
|
|
LD L,C
|
|
LD H,B
|
|
LD C,(IY + PANEL.FPL)
|
|
LD B,(IY + PANEL.FPH)
|
|
LD DE,0x0000
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
.L1 EX DE,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,BC
|
|
JR NC,.L1
|
|
ADD HL,BC
|
|
LD (IY + PANEL.CFL),L
|
|
LD (IY + PANEL.CFH),H
|
|
LD (IY + PANEL.FFL),E
|
|
LD (IY + PANEL.FFH),D
|
|
FndTreeExt POP AF
|
|
SETPORT WINSP.CPU1,,0
|
|
RET
|
|
|
|
PrevDIR DB 13 DUP 0
|
|
|
|
;[]----------------------------------------------------------[]
|
|
MakeDOSname LD BC,0x0820
|
|
.L1 LD A,(HL)
|
|
CP C
|
|
JR Z,.L2
|
|
INC HL
|
|
LD (DE),A
|
|
INC DE
|
|
DJNZ .L1
|
|
JR .L5
|
|
|
|
.L2
|
|
; LD A,B
|
|
; OR A
|
|
; JR Z,.L5
|
|
INC HL
|
|
DJNZ .L2
|
|
.L5 LD B,0x03
|
|
INC HL
|
|
LD A,(HL)
|
|
CP C
|
|
JR Z,.L4
|
|
LD A,'.'
|
|
LD (DE),A
|
|
INC DE
|
|
.L3 LD A,(HL)
|
|
INC HL
|
|
LD (DE),A
|
|
INC DE
|
|
DJNZ .L3
|
|
.L4 SUB A
|
|
LD (DE),A
|
|
RET
|