735 lines
11 KiB
Plaintext
735 lines
11 KiB
Plaintext
|
|
; LAST UPDATE: 28.05.2025 savelij
|
|
|
|
MAX_LEVEL_DIR EQU 21
|
|
|
|
;[]----------------------------------------------------------[]
|
|
ReadTreeR PUSH IY
|
|
POP HL
|
|
LD BC,PANEL.EFL
|
|
ADD HL,BC
|
|
LD B,PANEL.FILEMASK - PANEL.EFL
|
|
.LL1 LD (HL),0
|
|
INC HL
|
|
DJNZ .LL1
|
|
LD HL,BegDIR
|
|
PUSH IY
|
|
SPDSS DSSF.CHDIR
|
|
POP IY
|
|
LD HL,TreeName
|
|
PUSH IY
|
|
SPDSS DSSF.OPEN,,0
|
|
POP IY
|
|
JP NC,LoadTreeR
|
|
; ä ©« á ¤¥à¥¢®¬ ª â «®£®¢ ¥ ©¤¥, ᪠¨à㥬 ¨ á®§¤ ¥¬
|
|
.ScanTree
|
|
GETPORT WINSP.CPU1
|
|
LD C,A
|
|
GETPORT WINSP.CPU3
|
|
LD B,A
|
|
PUSH BC
|
|
LD A,(RAMPAGES.BuffPg3)
|
|
SETPORT WINSP.CPU1,,0
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L1
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L1
|
|
SETPORT WINSP.CPU3,,0
|
|
PUSH IY
|
|
MAKEWINDOW WINSUBOBJ.STORE
|
|
W_MAIN 240,96,160,40
|
|
W_FILL 4,2,152,10,COLORI.BLACK
|
|
W_TEXT 44,3,COLORI.WHITE,"Scanning tree"
|
|
W_TEXT 32,20,COLORP.HIGHGRAY,"Directories:"
|
|
W_END
|
|
LD (.TreeSP1),SP
|
|
SUB A
|
|
LD (CurTree),A
|
|
LD SP,STACKTREE
|
|
LD HL,0
|
|
PUSH HL
|
|
LD (LoadItemDIRR.CurTAdr),HL
|
|
LD HL,CPU3 + TreeHead_Size
|
|
LD (EndTree),HL
|
|
LD B,0x10
|
|
SUB A
|
|
.L2 LD (HL),A
|
|
INC HL
|
|
DJNZ .L2
|
|
LD HL,1
|
|
LD (TreeDIRS),HL
|
|
CALL LoadItemDIRR
|
|
JR NC,.TreeExit ; NC - ¥â ¤¨à¥ªâ®à¨©
|
|
.TreeLoop PUSH HL
|
|
SPDSS DSSF.SCANKEY
|
|
LD A,E
|
|
SUB 0x1B
|
|
POP HL
|
|
JP Z,AbortTree
|
|
LD A,(CurTree)
|
|
INC A
|
|
CP MAX_LEVEL_DIR
|
|
JR Z,.DIRSend
|
|
LD (CurTree),A
|
|
LD DE,(TreeDIRS)
|
|
BIT 2,D ; DE >= 1024
|
|
JR NZ,.TreeExit
|
|
PUSH HL
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,.DIRSend
|
|
LD (LoadItemDIRR.CurTAdr),HL
|
|
SPDSS DSSF.CHDIR
|
|
CALL LoadItemDIRR
|
|
JR C,.TreeLoop ; C - ¥áâì ¤¨à¥ªâ®à¨¨
|
|
.DIRSend
|
|
SPDSS DSSF.SCANKEY
|
|
LD A,E
|
|
SUB 0x1B
|
|
JP Z,AbortTree
|
|
POP HL
|
|
LD A,H
|
|
OR L
|
|
JR Z,.TreeExit
|
|
PUSH HL
|
|
LD HL,CurTree
|
|
DEC (HL)
|
|
LD HL,UpDIR
|
|
SPDSS DSSF.CHDIR
|
|
POP HL
|
|
LD DE,0x000F
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
INC HL
|
|
INC A
|
|
JR NZ,.TreeLoop
|
|
JR .DIRSend
|
|
|
|
.TreeExit
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD SP,STACKTREE
|
|
LD IX,0
|
|
PUSH IX
|
|
LD HL,CPU1
|
|
LD DE,TreeHead
|
|
LD BC,TreeHead_Size
|
|
EX DE,HL
|
|
LDIR ; § ¥á«¨ § £®«®¢®ª ¤¥à¥¢ ª â «®£®¢ FN
|
|
LD HL,(TreeDIRS)
|
|
DEC HL
|
|
LD A,H
|
|
OR L
|
|
JR Z,.TreeExit1
|
|
LD HL,CPU3 + TreeHead_Size
|
|
.TreeEndLp INC IXL
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,IXL
|
|
CP IXH
|
|
JR C,.L3
|
|
LD IXH,A
|
|
.L3 LD (DE),A
|
|
INC DE
|
|
SUB A
|
|
LD (DE),A
|
|
INC DE
|
|
LD BC,0x000C
|
|
LDIR
|
|
LD (DE),A
|
|
INC DE
|
|
LD (DE),A
|
|
INC DE
|
|
INC HL
|
|
LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
INC HL
|
|
LD A,(HL)
|
|
AND 0x80
|
|
POP HL
|
|
OR (HL)
|
|
LD (HL),A
|
|
LD L,C
|
|
LD H,B
|
|
LD A,H
|
|
OR L
|
|
JR NZ,.TreeEndLp
|
|
.TreeEndLp1 DEC IXL
|
|
POP HL
|
|
LD A,H
|
|
OR L
|
|
JR Z,.TreeExit1
|
|
LD BC,0x000F
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
INC HL
|
|
INC A
|
|
JR NZ,.TreeEndLp
|
|
JR .TreeEndLp1
|
|
|
|
.TreeExit1 LD (EndTree),DE
|
|
DEC DE
|
|
LD A,0xFF
|
|
LD (DE),A
|
|
LD SP,0
|
|
.TreeSP1 EQU $-2
|
|
POP IY
|
|
RES VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
|
|
LD A,IXH
|
|
CP 0x0B
|
|
JR C,.L4
|
|
SET VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
|
|
.L4
|
|
GETPORT WINSP.CPU3
|
|
LD (RAMPAGES.BuffPg3),A
|
|
GETPORT WINSP.CPU1
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD HL,RAMPAGES.LEFTPANEL
|
|
JR Z,.L5
|
|
LD HL,RAMPAGES.RIGHTPANEL
|
|
.L5 LD (HL),A
|
|
WINDOWCLOSE
|
|
POP BC
|
|
LD A,B
|
|
SETPORT WINSP.CPU3,,0
|
|
LD A,C
|
|
SETPORT WINSP.CPU1,,0
|
|
LD HL,(TreeDIRS)
|
|
LD (IY+PANEL.EFL),L ; EQUIP FIL
|
|
LD (IY+PANEL.EFH),H
|
|
PUSH IY
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L6
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L6
|
|
SETPORT WINSP.CPU3,,0
|
|
LD HL,BegDIR
|
|
SPDSS DSSF.CHDIR
|
|
LD HL,TreeName
|
|
SPDSS DSSF.CREATE,,0
|
|
JR C,.TreeErr
|
|
PUSH AF
|
|
LD HL,CPU3
|
|
LD DE,(EndTree)
|
|
RES 6,D
|
|
SPDSS DSSF.WRITE
|
|
POP AF
|
|
SPDSS DSSF.CLOSE
|
|
.TreeErr LD A,1
|
|
LD (CPU3 + 1),A
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
POP IY
|
|
JP LoadTreeR.TreeOkey
|
|
|
|
; § £à㧪 ¤¥à¥¢ ª â «®£®¢ ¨§ ä ©«
|
|
LoadTreeR EX AF,AF'
|
|
PUSH IY
|
|
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
|
|
EX AF,AF'
|
|
PUSH AF
|
|
LD HL,CPU3
|
|
LD DE,0x4000
|
|
SPDSS DSSF.READ
|
|
EX AF,AF'
|
|
LD HL,CPU3
|
|
LD DE,WorkBuffer
|
|
LD BC,0x0010
|
|
LDIR
|
|
POP AF
|
|
SPDSS DSSF.CLOSE
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
POP IY
|
|
EX AF,AF'
|
|
JP C,ReadTreeR.ScanTree ; Error
|
|
LD HL,WorkBuffer + 2
|
|
LD DE,TreeHead + 2
|
|
LD B,TreeHead_Size - 3
|
|
.L2 LD A,(DE)
|
|
CP (HL)
|
|
JP NZ,ReadTreeR.ScanTree ; Error
|
|
INC HL
|
|
INC DE
|
|
DJNZ .L2
|
|
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
|
|
LD HL,CPU3
|
|
LD DE,0x000E
|
|
LD BC,0
|
|
LD IXH,0
|
|
.LoadTr1 LD A,(HL)
|
|
AND 0x7F
|
|
CP IXH
|
|
JR C,.L4
|
|
LD IXH,A
|
|
.L4 INC HL
|
|
LD (HL),0
|
|
INC BC
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
INC HL
|
|
INC A
|
|
JR NZ,.LoadTr1
|
|
RES VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
|
|
LD A,IXH
|
|
CP 0x0B
|
|
JR C,.L5
|
|
SET VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
|
|
.L5 LD (IY+PANEL.EFL),C ; EQUIP FILES
|
|
LD (IY+PANEL.EFH),B
|
|
BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
|
|
LD A,1
|
|
JR NZ,.L6
|
|
LD A,3
|
|
.L6 LD (CPU3 + 1),A
|
|
POP AF
|
|
SETPORT WINSP.CPU3,,0
|
|
.TreeOkey PUSH IY
|
|
POP HL
|
|
LD DE,PANEL.CURRPATH
|
|
ADD HL,DE
|
|
INC HL
|
|
INC HL
|
|
JP FindTreeDIRR
|
|
|
|
AbortTree LD SP,(ReadTreeR.TreeSP1)
|
|
POP IY
|
|
POP BC
|
|
LD A,B
|
|
SETPORT WINSP.CPU3,,0
|
|
LD A,C
|
|
SETPORT WINSP.CPU1,,0
|
|
RES VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
|
|
RES VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
|
WINDOWCLOSE
|
|
LD HL,InitPanels
|
|
EX (SP),HL
|
|
SUB A
|
|
RET
|
|
|
|
TreeName DZ FILENAME.FNTREE_FLN
|
|
TreeHead DB 0,0,0x5C,0,0,0,0xAE,"FlexTree",0
|
|
TreeHead_Size EQU $ - TreeHead
|
|
BegDIR DB 0x5C,0
|
|
UpDIR DB "..",0
|
|
CurTree DB 0
|
|
TreeDIRS DW 0 ; ª®«¨ç¥á⢮ ©¤¥ëå ¤¨à
|
|
EndTree DW 0 ; ⥪ã騩 ¤à¥á ¢ â ¡«¨æ¥ ¤¨à¥ªâ®à¨©
|
|
|
|
; ç⥨¥ ®¯¨á ⥫¥© ¤¨à¥ªâ®à¨©
|
|
LoadItemDIRR: LD DE,(EndTree)
|
|
PUSH DE
|
|
LD IX,0
|
|
LD HL,NORMmask
|
|
LD DE,WorkBuffer
|
|
LD A,(FileAtribut)
|
|
AND DIR.M_Archive + \
|
|
DIR.M_Dir + \
|
|
DIR.M_System + \
|
|
DIR.M_Hidden + \
|
|
DIR.M_ReadOnly
|
|
PUSH IX
|
|
PUSH DE
|
|
SPDSS DSSF.F_FIRST,1
|
|
POP HL
|
|
POP IX
|
|
JR C,.FndFLtrE ; ¨ç¥£® ¥ ©¤¥®? ¢ë室
|
|
.FndFLtr LD A,(WorkBuffer + 0x20)
|
|
AND DIR.M_Dir ; íâ® ¤¨à ?
|
|
CALL NZ,.ADD_DIR ; ¥á«¨ ¤ â® ¤®¡ ¢«ï¥¬
|
|
JR C,.FndFLtrE ; ®è¨¡ª ¤®¡ ¢«¥¨ï? ¢ë室¨¬
|
|
; ç¨â ¥¬ á«¥¤ãî騩 ®¯¨á ⥫ì
|
|
LD DE,WorkBuffer
|
|
PUSH IX
|
|
PUSH DE
|
|
SPDSS DSSF.F_NEXT
|
|
POP HL
|
|
POP IX
|
|
JR NC,.FndFLtr
|
|
; § ¢¥à襨¥ á®§¤ ¨ï ¤¥à¥¢
|
|
.FndFLtrE LD HL,(EndTree)
|
|
DEC HL
|
|
LD (HL),0xFF
|
|
LD C,IXL
|
|
LD B,IXH
|
|
LD HL,(TreeDIRS)
|
|
ADD HL,BC
|
|
LD (TreeDIRS),HL
|
|
POP HL
|
|
LD A,B
|
|
OR C
|
|
RET Z
|
|
PUSH HL
|
|
CALL .PRT_NUM_DIR ; ®¡®¢«ï¥¬ ª®«¨ç¥á⢮ ©¤¥ëå ¤¨à
|
|
POP HL
|
|
LD DE,0
|
|
.CurTAdr EQU $-2
|
|
LD A,D
|
|
OR E
|
|
SCF
|
|
RET Z
|
|
EX DE,HL
|
|
LD BC,0x000D
|
|
ADD HL,BC
|
|
LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
EX DE,HL
|
|
SCF
|
|
RET
|
|
|
|
; § ¥á¥¨¥ ¢ â ¡«¨æã í«¥¬¥â ¤¨à¥ªâ®à¨¨
|
|
.ADD_DIR EX DE,HL
|
|
LD HL,(EndTree)
|
|
LD BC,0x0010
|
|
ADD HL,BC
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
RET C
|
|
LD BC,FFIRST.Name
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
CP '.' ; ¯¥à¢ë© ᨬ¢®« ¨¬¥¨ â®çª ?
|
|
RET Z
|
|
LD C,0x10 ; ¤«¨ í«¥¬¥â ¢ â ¡«¨æ¥
|
|
SUB A
|
|
; ¯¥à¥®á ¨¬¥¨ ¤® 0
|
|
.L1 LDI
|
|
CP (HL)
|
|
JR NZ,.L1
|
|
LD B,C
|
|
; ®áâ ⮪ § ¯®«ï¥¬ ã«¥¬
|
|
.L2 LD (DE),A
|
|
INC DE
|
|
DJNZ .L2
|
|
LD (EndTree),DE
|
|
INC IX
|
|
RET
|
|
|
|
; ª®¢¥àá¨ï ¨ ¯¥ç âì ç¨á« ª®«¨ç¥á⢠¤¨à¥ªâ®à¨© ¢ ¤¥à¥¢¥
|
|
.PRT_NUM_DIR LD HL,(TreeDIRS)
|
|
DEC HL
|
|
LD DE,.CurDNumb
|
|
PUSH DE
|
|
LD B,4
|
|
LD A,' '
|
|
.L3 LD (DE),A
|
|
INC DE
|
|
DJNZ .L3
|
|
POP DE
|
|
EXX
|
|
LD C,0
|
|
EXX
|
|
LD BC,1000 ; 1'000
|
|
CALL .GetN16
|
|
LD BC,100 ; 100
|
|
CALL .GetN16
|
|
LD BC,10 ; 10
|
|
CALL .GetN16
|
|
LD A,L
|
|
ADD A,'0'
|
|
LD (DE),A
|
|
LD HL,.CurDNumb
|
|
LD DE,336 ; X pos
|
|
LD BC,116 ; Y pos
|
|
LD A,COLORP.HIGHGRAY
|
|
JP PrnTxtLnIFF
|
|
|
|
.GetN16 LD A,'0' - 1
|
|
OR A
|
|
.L4 INC A
|
|
SBC HL,BC
|
|
JR NC,.L4
|
|
ADD HL,BC
|
|
CP '0'
|
|
JR Z,.L5
|
|
EXX
|
|
SET 0,C
|
|
EXX
|
|
.L5 EXX
|
|
BIT 0,C
|
|
EXX
|
|
RET Z
|
|
LD (DE),A
|
|
INC DE
|
|
RET
|
|
|
|
.CurDNumb DEFB " ",0
|
|
|
|
;[]=========================================================[]
|
|
TestTreeR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
|
RET Z
|
|
LD B,0x28
|
|
.TstTree PUSH BC
|
|
SPMOUSE MOUSEF.READ_STATE
|
|
POP BC
|
|
OR A
|
|
RET NZ
|
|
PUSH BC
|
|
SPDSS DSSF.TESTKEY
|
|
POP BC
|
|
RET NZ
|
|
HALT
|
|
DJNZ .TstTree
|
|
IFNDEF TREE_DIR_ENTER
|
|
LD A,E
|
|
CP 0x0D ; ᬥ ¤¨à¥ªâ®à¨¨ ¨§ ¤¥à¥¢ ⮫쪮 ¯® ENTER
|
|
RET NZ
|
|
ENDIF
|
|
.TestTreeBeg
|
|
GETPORT WINSP.CPU1
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L14
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L14
|
|
SETPORT WINSP.CPU1,,0
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
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
|
|
SET 6,H
|
|
INC HL
|
|
BIT 0,(HL)
|
|
JR NZ,.L2
|
|
EX DE,HL
|
|
LD HL,CPU1
|
|
LD BC,0x000E
|
|
.L1 INC HL
|
|
RES 0,(HL)
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
INC HL
|
|
INC A
|
|
JR NZ,.L1
|
|
EX DE,HL
|
|
SET 0,(HL)
|
|
CALL PrintDIR
|
|
CALL SetInvert
|
|
CALL MakeTreePathR
|
|
PUSH IY
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD IY,RightPanel
|
|
JR Z,.L3
|
|
LD IY,LeftPanel
|
|
.L3 CALL NewDIRECTORY
|
|
POP IY
|
|
.L2 POP AF
|
|
SETPORT WINSP.CPU1,,0
|
|
RET
|
|
|
|
;[]==========================================================[]
|
|
MakeTreePathR
|
|
GETPORT WINSP.CPU1
|
|
PUSH AF
|
|
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR Z,.L5
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L5
|
|
SETPORT WINSP.CPU1,,0
|
|
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
|
|
SET 6,H
|
|
LD DE,WorkBuffer+0xFF
|
|
LD BC,0x0010
|
|
SUB A
|
|
LD (DE),A
|
|
DEC DE
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,.L4
|
|
AND 0x7F
|
|
INC A
|
|
LD IXL,A
|
|
ADD HL,BC
|
|
INC DE
|
|
.L3 SBC HL,BC
|
|
PUSH HL
|
|
LD A,(HL)
|
|
INC HL
|
|
AND 0x7F
|
|
CP IXL
|
|
JR NC,.L2
|
|
LD IXL,A
|
|
LD B,0xFF
|
|
SUB A
|
|
.L6 INC B
|
|
INC HL
|
|
CP (HL)
|
|
JR NZ,.L6
|
|
.L1 DEC HL
|
|
DEC DE
|
|
LD A,(HL)
|
|
LD (DE),A
|
|
DJNZ .L1
|
|
DEC DE
|
|
LD A,'\\'
|
|
LD (DE),A
|
|
.L2 POP HL
|
|
LD A,(HL)
|
|
AND 0x7F
|
|
CP 2
|
|
JR NC,.L3
|
|
.L4 EX DE,HL
|
|
LD (HL),'\\'
|
|
POP AF
|
|
SETPORT WINSP.CPU1,,0
|
|
RET
|
|
|
|
;[]==========================================================[]
|
|
FindTreeDIRR
|
|
GETPORT WINSP.CPU1
|
|
PUSH AF
|
|
SETPORT WINSP.Y_PORT,0xC0
|
|
LD IX,LeftPanel
|
|
BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG)
|
|
LD A,(RAMPAGES.LEFTPANEL)
|
|
JR NZ,.L14
|
|
LD A,(RAMPAGES.RIGHTPANEL)
|
|
.L14
|
|
SETPORT WINSP.CPU1,,0
|
|
LD DE,CPU1
|
|
LD BC,0
|
|
.L1 LD A,(DE)
|
|
AND 0x7F
|
|
LD IXL,A
|
|
.L2 PUSH HL
|
|
PUSH DE
|
|
LD A,(DE)
|
|
AND 0x7F
|
|
CP IXL
|
|
JR NZ,.L4
|
|
INC DE
|
|
INC DE
|
|
.L3 LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,.L4
|
|
INC HL
|
|
INC DE
|
|
LD A,(DE)
|
|
OR A
|
|
JR Z,.L6
|
|
LD A,(HL)
|
|
CP '\\'
|
|
JR NZ,.L3
|
|
.L4 POP HL
|
|
LD DE,0x000F
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
POP HL
|
|
INC BC
|
|
LD A,(DE)
|
|
INC DE
|
|
INC A
|
|
JR NZ,.L2
|
|
.L5 POP AF
|
|
SETPORT WINSP.CPU1,,0
|
|
SCF
|
|
RET
|
|
|
|
.L6 LD A,IXL
|
|
OR A
|
|
JR Z,.L7
|
|
LD A,(HL)
|
|
INC HL
|
|
CP '\\'
|
|
JR Z,.L7
|
|
DEC HL
|
|
OR A
|
|
JR NZ,.L4
|
|
.L7 POP DE
|
|
INC SP
|
|
INC SP
|
|
LD A,E
|
|
ADD A,0x0F
|
|
LD E,A
|
|
JR NC,.L15
|
|
INC D
|
|
.L15 INC BC
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,.L8
|
|
LD A,(DE)
|
|
INC DE
|
|
INC A
|
|
JR Z,.L5
|
|
JR .L1
|
|
|
|
.L8 DEC BC
|
|
PUSH BC
|
|
LD HL,CPU1
|
|
LD BC,0x000E
|
|
.L9 INC HL
|
|
LD (HL),B
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
INC HL
|
|
INC A
|
|
JR NZ,.L9
|
|
POP HL
|
|
LD A,E
|
|
SUB 0x0E
|
|
LD E,A
|
|
JR NC,.L10
|
|
DEC D
|
|
.L10 LD IX,LeftPanel
|
|
BIT VIEWFLAG.B_TREE,(IX+PANEL.VIEWFLAG)
|
|
JR NZ,.L11
|
|
LD IX,RightPanel
|
|
.L11 BIT PANELFLAG.B_PRNDOSPATH,(IX+PANEL.PANELFLAG)
|
|
LD A,1
|
|
JR NZ,.L12
|
|
LD A,3
|
|
.L12 LD (DE),A
|
|
POP AF
|
|
SETPORT WINSP.CPU1,,0
|
|
LD E,L
|
|
LD D,H
|
|
LD BC,4
|
|
OR A
|
|
SBC HL,BC
|
|
JR NC,.L13
|
|
LD HL,0
|
|
.L13 LD (IX+PANEL.FFL),L
|
|
LD (IX+PANEL.FFH),H
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,DE
|
|
LD (IX+PANEL.CFL),L
|
|
LD (IX+PANEL.CFH),H
|
|
OR A
|
|
RET
|