; 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