- переделано отображение даты/времени, в режиме 1 (формат 02.08.2025) неправильно конвертило год. - обновлено описание Flex Navigator API до версии 0.5. - удален один джамп из таблицы за ненадобностью. - большое перименование меток, пересборка всего для проверки.
1103 lines
22 KiB
Plaintext
1103 lines
22 KiB
Plaintext
|
||
; LAST UPDATE: 01.08.2025 savelij
|
||
|
||
;[]==========================================================[]
|
||
MarkFileR LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
RET NZ
|
||
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
|
||
ADD HL,HL ; *2
|
||
ADD HL,HL ; *4
|
||
ADD HL,HL ; *8
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL ; *16
|
||
ADD HL,DE ; *18
|
||
SET 6,H
|
||
SET 7,H ; | 0xC000
|
||
LD E,(HL) ; FileHDR.Flag
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
BIT FileHDR.B_MARK,E
|
||
PUSH AF
|
||
CALL Z,SelectFile
|
||
POP AF
|
||
CALL NZ,UnSelectFile
|
||
CALL CursDown
|
||
CALL PrnFileInfo
|
||
LD B,0x07
|
||
.L2 PUSH BC
|
||
SPMOUSE MOUSEF.READ_STATE
|
||
POP BC
|
||
BIT 1,A
|
||
RET Z
|
||
HALT
|
||
DJNZ .L2
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
SelectFile: LD IXL,0x01
|
||
JR UnSelectFile.L1
|
||
|
||
UnSelectFile: LD IXL,0x00
|
||
.L1
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L2
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L2
|
||
SETPORT WINSP.CPU3,,0
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
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
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL ; *16
|
||
ADD HL,DE ; *18 - FileHDR.SIZE
|
||
SET 6,H
|
||
SET 7,H ; | 0xC000
|
||
PUSH HL
|
||
LD DE,FileHDR.Attr
|
||
ADD HL,DE
|
||
LD C,(HL) ; FileHDR.Attr (ä« £¨ ®¯¨á ⥫ï FAT ä ©« )
|
||
POP HL
|
||
BIT DIR.B_Dir,C ; íâ® ¤¨à ?
|
||
IF MARK_DIR
|
||
CALL NZ,CountingDirR ; ¨§¬¥à¥¨¥ à §¬¥à ¤¨àë
|
||
ELSE
|
||
JR NZ,.MrFile1 ; ¤¨à¥ª®à¨¨ ª®¯¨à®¢ âì ¥ 㬥¥¬, ⮫쪮 ä ©«ë
|
||
ENDIF
|
||
; íâ® ä ©«
|
||
LD B,(HL) ; áâ ஥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©«
|
||
LD A,IXL
|
||
LD (HL),A ; ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©«
|
||
LD A,C
|
||
LD DE,WorkBuffer
|
||
PUSH BC
|
||
LD BC,FileHDR.SIZE
|
||
LDIR
|
||
BIT DIR.B_Dir,A ; ä ©« ¨«¨ ¤¨à
|
||
JR Z,.L8
|
||
IF MARK_DIR
|
||
; ª®¯¨à㥬 à §¬¥à ¢ ¡ ©â å ¨§ à §¬¥à ¤¨àë
|
||
LD HL,JUMPS.FILES_BYTES
|
||
LD DE,WorkBuffer + FileHDR.SizeBytes
|
||
LD BC,DWORD
|
||
LDIR
|
||
ENDIF
|
||
.L8 POP BC
|
||
.MrFile1 POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
IF MARK_DIR = 0
|
||
BIT DIR.B_Dir,C
|
||
RET NZ ; ¢ë室 ¥á«¨ ¤¨à
|
||
ENDIF
|
||
LD A,B
|
||
CP IXL
|
||
RET Z ; ¢ë室 ¥á«¨ áâ ஥ ¨ ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ᮢ¯ «¨
|
||
BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
|
||
JR NZ,.MarkFull
|
||
; ¯à¨ ªà ⪮¬ ¯®ª §¥ ä ©«®¢
|
||
LD L,(IY+PANEL.CURR_FILE)
|
||
LD H,(IY+PANEL.CURR_FILE + 1)
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL
|
||
ADD HL,DE
|
||
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
||
LD DE,PositTABLeft
|
||
JR Z,.L3
|
||
LD DE,PositTABRight
|
||
.L3 ADD HL,DE
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
LD C,(HL)
|
||
LD B,0x00
|
||
EX DE,HL
|
||
LD A,IXL
|
||
OR A
|
||
PUSH AF
|
||
LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
|
||
JR NZ,.L4
|
||
LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK)
|
||
.L4 LD IX,8 << 8 + 48
|
||
DEC HL
|
||
DEC HL
|
||
CALL ReplaceColorRectan
|
||
POP AF
|
||
JR NZ,.MarkExit1
|
||
JR .MarkExit2
|
||
|
||
; ¯à¨ ¯®«®¬ ¯®ª §¥ ä ©«®¢
|
||
.MarkFull LD L,(IY+PANEL.CURR_FILE)
|
||
LD H,(IY+PANEL.CURR_FILE + 1)
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
LD BC,0x003F
|
||
ADD HL,BC
|
||
LD C,L
|
||
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
|
||
LD HL,6
|
||
JR Z,.L5
|
||
LD HL,326
|
||
.L5 LD A,IXL
|
||
OR A
|
||
PUSH AF
|
||
LD DE,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
|
||
JR NZ,.L6
|
||
LD DE,(COLORP.INVERTPAPER + COLORI.INVSELFILES) << 8 | (COLORP.INVERTPAPER + COLORI.INVERTINK)
|
||
.L6 LD IX,8 << 8 + 146
|
||
CALL ReplaceColorRectan
|
||
POP AF
|
||
JR Z,.MarkExit2
|
||
; ãáâ ®¢ª ¢ë¡®à ä ©«
|
||
.MarkExit1 LD IX,WorkBuffer
|
||
LD L,(IY + PANEL.FILES_MARK)
|
||
LD H,(IY + PANEL.FILES_MARK + 1)
|
||
INC HL
|
||
LD (IY + PANEL.FILES_MARK),L
|
||
LD (IY + PANEL.FILES_MARK + 1),H ; ®¡®¢«¥¨¥ ª®«¨ç¥á⢠¯®¬¥ç¥ëå ä ©«®¢
|
||
LD L,(IX + FileHDR.SizeBytes)
|
||
LD H,(IX + FileHDR.SizeBytes + 1)
|
||
LD E,(IY + PANEL.BYTES_MARK)
|
||
LD D,(IY + PANEL.BYTES_MARK + 1)
|
||
XOR A ; [ ] fat32
|
||
ADD HL,DE
|
||
LD (IY + PANEL.BYTES_MARK),L
|
||
LD (IY + PANEL.BYTES_MARK + 1),H ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 15-0
|
||
LD L,(IX + FileHDR.SizeBytes + 2)
|
||
LD H,(IX + FileHDR.SizeBytes + 3)
|
||
; [ ] fat32
|
||
LD E,(IY + PANEL.BYTES_MARK + 2)
|
||
LD D,(IY + PANEL.BYTES_MARK + 3)
|
||
ADC HL,DE
|
||
; [ ] fat32
|
||
ADC A,(IY + PANEL.BYTES_MARK_H)
|
||
LD (IY + PANEL.BYTES_MARK_H),A ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 32-39
|
||
LD (IY + PANEL.BYTES_MARK + 2),L
|
||
LD (IY + PANEL.BYTES_MARK + 3),H ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 31-15
|
||
RET
|
||
|
||
; áï⨥ ¢ë¡®à ä ©«
|
||
.MarkExit2 LD IX,WorkBuffer
|
||
LD L,(IY + PANEL.FILES_MARK)
|
||
LD H,(IY + PANEL.FILES_MARK + 1)
|
||
DEC HL
|
||
LD (IY + PANEL.FILES_MARK),L
|
||
LD (IY + PANEL.FILES_MARK + 1),H
|
||
LD L,(IY + PANEL.BYTES_MARK)
|
||
LD H,(IY + PANEL.BYTES_MARK + 1)
|
||
LD E,(IX + FileHDR.SizeBytes)
|
||
LD D,(IX + FileHDR.SizeBytes + 1)
|
||
XOR 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)
|
||
LD E,(IX + FileHDR.SizeBytes + 2)
|
||
LD D,(IX + FileHDR.SizeBytes + 3)
|
||
SBC HL,DE
|
||
; [ ] fat32
|
||
ADC A,(IY + PANEL.BYTES_MARK_H)
|
||
LD (IY + PANEL.BYTES_MARK_H),A
|
||
LD (IY + PANEL.BYTES_MARK + 2),L
|
||
LD (IY + PANEL.BYTES_MARK + 3),H
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
UnMarkGroupR: CALL ResInvert
|
||
UnMarkGroupRN: LD HL,SetInvert
|
||
PUSH HL
|
||
SUB A
|
||
JR SelectGroup
|
||
|
||
MarkGroupR: CALL ResInvert
|
||
MarkGroupRN: LD HL,SetInvert
|
||
PUSH HL
|
||
LD A,0x01
|
||
SelectGroup: LD (SelMode),A
|
||
LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
RET NZ
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 208,81,224,62
|
||
W_FILL 4,2,216,10,COLORI.BLACK
|
||
W_TEXT 82,3,COLORI.WHITE,"Select mask"
|
||
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 10,25,COLORP.HIGHGRAY,"Mark mask:"
|
||
W_BORDER 70,22,134,12
|
||
W_FILL 72,23,130,10,COLORI.WHITE
|
||
W_END
|
||
LD IX,SMaskStr
|
||
LD HL,SMaskTab
|
||
CALL InputLine
|
||
WINDOWCLOSE
|
||
RET C
|
||
LD A,(MaskLen)
|
||
OR A
|
||
RET Z
|
||
LD B,A
|
||
LD HL,CrSMask
|
||
CorMask
|
||
IF CORR_FILENAME
|
||
LD A,(HL)
|
||
CALL CorrBigChar
|
||
LD (HL),A
|
||
ENDIF
|
||
INC HL
|
||
DJNZ CorMask
|
||
LD HL,CrSMask
|
||
LD DE,SelMask
|
||
CALL MakeMask
|
||
JR C,MarkGNext
|
||
LD HL,NORMmask
|
||
LD DE,CrSMask
|
||
LD BC,MASK_SIZE
|
||
LDIR
|
||
LD HL,CrSMask
|
||
LD DE,SelMask
|
||
JP MakeMask
|
||
|
||
MarkGNext
|
||
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
|
||
;!FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®® ¨«¨ ¥â SAFE_PORTY
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD IX,CPU3
|
||
LD HL,0xC000
|
||
LD DE,SelMask
|
||
EX AF,AF' ; [ ] fat32
|
||
EXX
|
||
LD L,(IY+PANEL.BYTES_MARK)
|
||
LD H,(IY+PANEL.BYTES_MARK + 1)
|
||
LD E,(IY+PANEL.BYTES_MARK + 2)
|
||
LD D,(IY+PANEL.BYTES_MARK + 3)
|
||
LD A,(IY+PANEL.BYTES_MARK_H) ; [ ] FAT32
|
||
LD C,(IY+PANEL.FILES_MARK)
|
||
LD B,(IY+PANEL.FILES_MARK + 1)
|
||
EXX
|
||
EX AF,AF' ; [ ] fat32
|
||
PUSH IY
|
||
LD IYL,0x00
|
||
SelMode EQU $-1
|
||
LD IYH,0x00
|
||
Select1 PUSH DE
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr)
|
||
JR NZ,Select8
|
||
LD A,IYL
|
||
CP (HL)
|
||
JR Z,Select8
|
||
PUSH HL
|
||
INC HL
|
||
LD B,8
|
||
Select2 LD A,(DE)
|
||
CP '?'
|
||
JR Z,Select3
|
||
CP (HL)
|
||
JR NZ,Select6
|
||
Select3 INC HL
|
||
INC DE
|
||
DJNZ Select2
|
||
INC HL
|
||
LD B,03
|
||
Select4 LD A,(DE)
|
||
CP '?'
|
||
JR Z,Select5
|
||
CP (HL)
|
||
JR NZ,Select6
|
||
Select5 INC HL
|
||
INC DE
|
||
DJNZ Select4
|
||
Select6 POP HL
|
||
JR NZ,Select8
|
||
LD IYH,0x01
|
||
LD A,IYL
|
||
LD (HL),A
|
||
OR A
|
||
CALL Z,SUB_SIZE
|
||
CALL NZ,ADD_SIZE
|
||
Select8: LD DE,FileHDR.SIZE
|
||
ADD HL,DE
|
||
ADD IX,DE
|
||
POP DE
|
||
LD A,(IX + FileHDR.Name)
|
||
OR A
|
||
JR NZ,Select1
|
||
LD A,IYH
|
||
EX AF,AF'
|
||
POP IY
|
||
EXX
|
||
LD (IY+PANEL.BYTES_MARK),L
|
||
LD (IY+PANEL.BYTES_MARK + 1),H
|
||
LD (IY+PANEL.BYTES_MARK + 2),E
|
||
LD (IY+PANEL.BYTES_MARK + 3),D
|
||
LD (IY+PANEL.BYTES_MARK_H),A ; [ ] FAT32
|
||
LD (IY+PANEL.FILES_MARK),C
|
||
LD (IY+PANEL.FILES_MARK + 1),B
|
||
EXX
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
EX AF,AF'
|
||
OR A
|
||
RET Z
|
||
CALL PrintDIR
|
||
JP PrnFileInfo
|
||
|
||
SMaskStr: DEFB 0x0C,0x00,0x00,0x00
|
||
MaskLen: DEFB 0x03
|
||
DEFW 282,106
|
||
DEFW 104
|
||
DEFB 0xF0
|
||
CrSMask: DEFB "*.*"
|
||
DB 10 DUP 0
|
||
SelMask: DEFB "???????????"
|
||
|
||
MakeMask LD BC,0x0902
|
||
SMaskLp LD A,(HL)
|
||
CP '!'
|
||
RET C
|
||
CP '\"'
|
||
RET Z
|
||
CP '*'
|
||
JR Z,SMask1
|
||
CP '+'
|
||
RET Z
|
||
CP ','
|
||
RET Z
|
||
CP '.'
|
||
JR Z,SMask2
|
||
CP '/'
|
||
RET Z
|
||
CP ':'
|
||
RET Z
|
||
CP ';'
|
||
RET Z
|
||
CP '<'
|
||
RET Z
|
||
CP '='
|
||
RET Z
|
||
CP '>'
|
||
RET Z
|
||
CP '['
|
||
RET Z
|
||
CP '\\'
|
||
RET Z
|
||
CP ']'
|
||
RET Z
|
||
CP '|'
|
||
RET Z
|
||
IF CORR_FILENAME
|
||
CALL CorrBigChar
|
||
ENDIF
|
||
LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ SMaskLp
|
||
AND A
|
||
RET
|
||
|
||
SMask1 LD A,'?'
|
||
INC HL
|
||
DJNZ SMask11
|
||
AND A
|
||
RET
|
||
|
||
SMask11 LD (DE),A
|
||
INC DE
|
||
DJNZ SMask11
|
||
INC B
|
||
JR SMaskLp
|
||
|
||
SMask2 LD A,' '
|
||
INC HL
|
||
DJNZ SMask21
|
||
LD B,0x04
|
||
DEC C
|
||
JR NZ,SMaskLp
|
||
AND A
|
||
RET
|
||
|
||
SMask21 LD (DE),A
|
||
INC DE
|
||
DJNZ SMask21
|
||
LD B,0x04
|
||
DEC C
|
||
JR NZ,SMaskLp
|
||
AND A
|
||
RET
|
||
|
||
;[]==========================================================[]
|
||
SelectAllR: CALL ResInvert
|
||
SelectAllRN: LD HL,SetInvert
|
||
PUSH HL
|
||
LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
RET NZ
|
||
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
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD IX,CPU3
|
||
LD BC,FileHDR.SIZE
|
||
EX AF,AF' ; [ ] fat32
|
||
SUB A
|
||
LD L,A
|
||
LD H,L
|
||
LD E,L
|
||
LD D,H
|
||
EXX
|
||
LD L,A
|
||
LD H,L
|
||
EXX
|
||
EX AF,AF' ; [ ] fat32
|
||
.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE DIRECTORY
|
||
JR NZ,.SelAll1
|
||
SET FileHDR.B_MARK,(IX + FileHDR.Flag)
|
||
LD C,(IX + FileHDR.SizeBytes)
|
||
LD B,(IX + FileHDR.SizeBytes + 1)
|
||
EX AF,AF' ; [ ] fat32
|
||
ADD HL,BC
|
||
LD C,(IX + FileHDR.SizeBytes + 2)
|
||
LD B,(IX + FileHDR.SizeBytes + 3)
|
||
EX DE,HL
|
||
ADC HL,BC
|
||
EX DE,HL
|
||
ADC A,0
|
||
EX AF,AF' ; [ ] fat32
|
||
EXX
|
||
INC HL
|
||
EXX
|
||
LD BC,FileHDR.SIZE
|
||
.SelAll1: ADD IX,BC
|
||
LD A,(IX + FileHDR.Name)
|
||
OR A
|
||
JR NZ,.loop
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
EXX
|
||
LD E,(IY+PANEL.FILES_MARK)
|
||
LD D,(IY+PANEL.FILES_MARK + 1)
|
||
OR A
|
||
SBC HL,DE
|
||
RET Z
|
||
ADD HL,DE
|
||
LD (IY+PANEL.FILES_MARK),L
|
||
LD (IY+PANEL.FILES_MARK + 1),H
|
||
EXX
|
||
LD (IY+PANEL.BYTES_MARK),L
|
||
LD (IY+PANEL.BYTES_MARK + 1),H
|
||
LD (IY+PANEL.BYTES_MARK + 2),E
|
||
LD (IY+PANEL.BYTES_MARK + 3),D
|
||
; [ ] FAT32
|
||
EX AF,AF'
|
||
LD (IY+PANEL.BYTES_MARK_H),A
|
||
CALL PrintDIR
|
||
JP PrnFileInfo
|
||
|
||
;[]==========================================================[]
|
||
UnSelectAllR: CALL ResInvert
|
||
UnSelectAllRN: LD HL,SetInvert
|
||
PUSH HL
|
||
LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
RET NZ
|
||
LD A,(IY+PANEL.FILES_MARK)
|
||
OR (IY+PANEL.FILES_MARK + 1)
|
||
RET Z
|
||
PUSH IY
|
||
POP HL
|
||
LD BC,PANEL.FILES_MARK
|
||
ADD HL,BC
|
||
LD B,PANEL.FILE_MASK - PANEL.FILES_MARK
|
||
.L2 LD (HL),0
|
||
INC HL
|
||
DJNZ .L2
|
||
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
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD HL,CPU3
|
||
LD BC,FileHDR.SIZE + 1
|
||
UnSelA1: RES 0,(HL)
|
||
ADD HL,BC
|
||
LD A,(HL)
|
||
DEC HL
|
||
OR A
|
||
JR NZ,UnSelA1
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
CALL PrintDIR
|
||
JP PrnFileInfo
|
||
|
||
;[]==========================================================[]
|
||
InvertSelectR: CALL ResInvert
|
||
InvertSelectRN: LD HL,SetInvert
|
||
PUSH HL
|
||
LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
RET Z
|
||
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
RET NZ
|
||
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
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD IX,0xC000
|
||
LD DE,FileHDR.SIZE
|
||
LD B,0x00
|
||
EX AF,AF' ; [ ] fat32
|
||
EXX
|
||
LD L,(IY + PANEL.BYTES_MARK)
|
||
LD H,(IY + PANEL.BYTES_MARK + 1)
|
||
LD E,(IY + PANEL.BYTES_MARK + 2)
|
||
LD D,(IY + PANEL.BYTES_MARK + 3)
|
||
LD A,(IY + PANEL.BYTES_MARK_H) ; [ ] FAT32
|
||
LD C,(IY + PANEL.FILES_MARK)
|
||
LD B,(IY + PANEL.FILES_MARK + 1)
|
||
EXX
|
||
EX AF,AF' ; [ ] fat32
|
||
.loop: BIT DIR.B_Dir,(IX + FileHDR.Attr) ;!HARDCODE Dir
|
||
JR NZ,.InvSel3
|
||
LD B,FileHDR.M_MARK
|
||
LD A,(IX + FileHDR.Flag)
|
||
XOR B
|
||
LD (IX + FileHDR.Flag),A
|
||
CALL Z,SUB_SIZE
|
||
CALL NZ,ADD_SIZE
|
||
.InvSel3: ADD IX,DE
|
||
LD A,(IX + FileHDR.Name)
|
||
OR A
|
||
JR NZ,.loop
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
EX AF,AF' ; [ ] fat32
|
||
EXX
|
||
LD (IY + PANEL.BYTES_MARK),L
|
||
LD (IY + PANEL.BYTES_MARK + 1),H
|
||
LD (IY + PANEL.BYTES_MARK + 2),E
|
||
LD (IY + PANEL.BYTES_MARK + 3),D
|
||
LD (IY + PANEL.BYTES_MARK_H),A ; [ ] FAT32
|
||
LD (IY + PANEL.FILES_MARK),C
|
||
LD (IY + PANEL.FILES_MARK + 1),B
|
||
EXX
|
||
LD A,B
|
||
OR A
|
||
RET Z
|
||
CALL PrintDIR
|
||
JP PrnFileInfo
|
||
|
||
ADD_SIZE: EX AF,AF' ; [ ] fat32
|
||
EXX
|
||
PUSH BC
|
||
LD C,(IX + FileHDR.SizeBytes)
|
||
LD B,(IX + FileHDR.SizeBytes + 1)
|
||
ADD HL,BC
|
||
LD C,(IX + FileHDR.SizeBytes + 2)
|
||
LD B,(IX + FileHDR.SizeBytes + 3)
|
||
EX DE,HL
|
||
ADC HL,BC
|
||
EX DE,HL
|
||
ADC A,0 ; [ ] fat32
|
||
POP BC
|
||
INC BC
|
||
EXX
|
||
EX AF,AF' ; [ ] fat32
|
||
RET
|
||
|
||
SUB_SIZE: EX AF,AF' ; [ ] fat32
|
||
EXX
|
||
PUSH BC
|
||
LD C,(IX + FileHDR.SizeBytes)
|
||
LD B,(IX + FileHDR.SizeBytes + 1)
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,(IX + FileHDR.SizeBytes + 2)
|
||
LD B,(IX + FileHDR.SizeBytes + 3)
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
SBC A,0 ; [ ] fat32
|
||
POP BC
|
||
DEC BC
|
||
EXX
|
||
EX AF,AF'
|
||
RET
|
||
|
||
IF MARK_DIR
|
||
; ¯®¤áç¥â ¢ ¡ ©â å à §¬¥à ®â¬¥ç¥®© ¤¨à¥ªâ®à¨¨
|
||
; HL - ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ¬¥àïâì
|
||
CountingDirR
|
||
|
||
.OLDPATH EQU WorkBuffer + 0x300 ; á®åà ¥ë© â¥ªã騩 ¯ãâì
|
||
.CURRPATH EQU WorkBuffer + 0x200 ; ¢à¥¬¥®© ⥪ã騩 ¯ãâì
|
||
|
||
PUSH IX
|
||
PUSH IY
|
||
PUSH HL
|
||
PUSH BC
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF ; ⥪ã騩 ®¬¥à áâà ¨æë
|
||
PUSH HL
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L1
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L1 ; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ¥«¨
|
||
SETPORT WINSP.CPU3,,0
|
||
XOR A
|
||
LD H,A
|
||
LD L,A
|
||
LD IXH,A ; ®¡ã«¥¨¥ ãà®¢ï ¢å®¦¤¥¨ï ¢ ¤¨àë
|
||
LD (JUMPS.FILES_BYTES),HL
|
||
LD (JUMPS.FILES_BYTES + 2),HL ; ®¡ã«¥¨¥ à §¬¥à ¤¨àë
|
||
LD (JUMPS.FILES_COUNT),HL ; ®¡ã«¥¨¥ ª®«¨ç¥áâ¢ ä ©«®¢
|
||
LD HL,CPU3
|
||
LD (.CURR_DIRNAME),HL
|
||
; á®åà ¥¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â
|
||
SPDSS DSSF.CURDISK
|
||
LD HL,.OLDPATH ; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â
|
||
ADD A,'A'
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),':'
|
||
INC HL
|
||
SPDSS DSSF.CURDIR
|
||
POP DE
|
||
JP C,.END_COUNT
|
||
; ¢å®¤ ¢ ¤¨à¥ªâ®à¨î
|
||
LD HL,FileHDR.Name
|
||
ADD HL,DE
|
||
LD DE,.DIR_NAME
|
||
PUSH DE
|
||
LD BC,FileHDR.Name_Size
|
||
LDIR ; § ¡à «¨ ¨¬ï ¤¨àë ¤«ï ¨§¬¥à¥¨ï
|
||
LD A,(RAMPAGES.FLX)
|
||
SETPORT WINSP.CPU3,,0
|
||
CALL .ADD_2DOT ; ¤«ï ¢®§¢à â ¢ ¯à¥¤ë¤ãéãî ¤¨àã
|
||
POP HL
|
||
LD DE,(.CURR_DIRNAME)
|
||
LD BC,FileHDR.Name_Size
|
||
LDIR ; ¨¬ï ¤¨àë ¤«ï ¢å®¤
|
||
LD (.CURR_DIRNAME),DE
|
||
XOR A
|
||
LD (DE),A
|
||
CALL .SET_PATH ; ãáâ ®¢ª ⥪ã饣® ¯ãâ¨
|
||
INC IXH ; á«¥¤ãî騩 ã஢¥ì ¤¨àë
|
||
.CONTINUE CALL .ADD_2DOT ; ¤«ï ¢®§¢à â ¢ ¯à¥¤ë¤ãéãî ¤¨àã
|
||
CALL .COUNT_FILES
|
||
LD A,IXL
|
||
AND A ; §¤¥áì ¤¨àë ¥áâì?
|
||
JR Z,.PREV_DIR ; ¤¨àë ¥ ©¤¥ë
|
||
CALL .SET_PATH ; ¢å®¤ ¢ ¤¨àã ¨§ ᯨáª
|
||
INC IXH ; á«¥¤ãî騩 ã஢¥ì ¤¨àë
|
||
JR .CONTINUE
|
||
|
||
; ¢ë室 ¢ ¯à¥¤ë¤ãéãî ¤¨àã
|
||
.PREV_DIR CALL .OUT_DIR
|
||
LD A,IXH ; ã஢¥ì ¤¨àë?
|
||
AND A
|
||
JR Z,.END_COUNT
|
||
CALL .GET_NAME
|
||
CALL .GET_NAME
|
||
LD HL,(.CURR_DIRNAME)
|
||
LD DE,-FileHDR.Name_Size
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
CP '.'
|
||
JR Z,.PREV_DIR
|
||
CALL .SET_PATH
|
||
INC IXH ; á«¥¤ãî騩 ã஢¥ì ¤¨àë
|
||
JR .CONTINUE
|
||
|
||
; ¢®§¢à â ⥪ã饣® ¯ãâ¨
|
||
.END_COUNT POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,.OLDPATH ; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â
|
||
SPDSS DSSF.CHDIR
|
||
POP BC
|
||
POP HL
|
||
POP IY
|
||
POP IX
|
||
RET
|
||
|
||
; ¢ë室 ¢ ¯à¥¤ë¤ãéãî ¤¨àã
|
||
.GET_NAME LD HL,(.CURR_DIRNAME)
|
||
LD (HL),0
|
||
LD DE,-FileHDR.Name_Size
|
||
ADD HL,DE
|
||
LD (.CURR_DIRNAME),HL
|
||
RET
|
||
|
||
.OUT_DIR DEC IXH ; ¯à¥¤ë¤ã騩 ã஢¥ì ¤¨àë
|
||
LD HL,.RET_DIR
|
||
JR .SP1
|
||
|
||
; ¯¥à¥å®¤ ¢ ¤¨àã ¨§ ᯨáª
|
||
.SET_PATH LD HL,(.CURR_DIRNAME)
|
||
LD DE,-FileHDR.Name_Size
|
||
ADD HL,DE
|
||
LD DE,.DIR_NAME
|
||
PUSH DE
|
||
LD BC,FFIRST.Name_Size
|
||
LDIR
|
||
POP HL
|
||
.SP1 PUSH IX
|
||
SPDSS DSSF.CHDIR
|
||
SPDSS DSSF.CURDISK
|
||
LD HL,.CURRPATH
|
||
ADD A,'A'
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),':'
|
||
INC HL
|
||
SPDSS DSSF.CURDIR
|
||
POP IX
|
||
RET
|
||
|
||
; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ".." ¤«ï ¢ë室 ¢ ¯à¥¤ë¤ãéãî ¤¨àã
|
||
.ADD_2DOT PUSH HL
|
||
LD HL,.RET_DIR
|
||
LD DE,(.CURR_DIRNAME)
|
||
LD BC,FFIRST.Name_Size
|
||
LDIR
|
||
LD (.CURR_DIRNAME),DE
|
||
POP HL
|
||
RET
|
||
|
||
; ¯¥à¥áç¨âë¢ ¥¬ à §¬¥àë ä ©«®¢ ¢ ⥪ã饩 ¤¨à¥ªâ®à¨¨
|
||
; ¨ ¢ë£à¥¡ ¥¬ ¨¬¥ ¤¨à ¢ â ¡«¨çªã
|
||
.COUNT_FILES LD IXL,0 ; ª®«¨ç¥á⢮ ¤¨à ¢ ⥪ã饩 ¤¨à¥
|
||
CALL .F_FIRST ; ¨é¥¬ ¯¥à¢ë© ®¯¨á ⥫ì
|
||
RET C ; ¢ë室 ¥á«¨ ¨ç¥£® ¥ ©¤¥®
|
||
.L2 LD DE,FFIRST.Attr
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
SBC HL,DE
|
||
BIT DIR.B_Dir,A
|
||
JR Z,.ADD_FILES_BYTES
|
||
; ¤«ï ¤¨àë ª®¯¨à㥬 ¨¬ï ¢ â ¡«¨çªã
|
||
LD DE,FFIRST.Name
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
CP '.' ; . ¨ .. ¯à®¯ã᪠¥¬
|
||
JR Z,.L5
|
||
; ¤«ï ¤¨àë ª®¯¨à㥬 ¨¬ï ¢ â ¡«¨çªã
|
||
LD DE,(.CURR_DIRNAME)
|
||
LD BC,FFIRST.Name_Size
|
||
LDIR
|
||
LD (.CURR_DIRNAME),DE
|
||
INC IXL
|
||
JR .L5
|
||
|
||
; ¤«ï ä ©« ¤®¡ ¢«ï¥¬ ¤«¨ã
|
||
.ADD_FILES_BYTES:
|
||
LD DE,FFIRST.FileSize
|
||
ADD HL,DE
|
||
CALL GET_DWORD ; ¢§ïâì à §¬¥à ¨§ ®¯¨á ⥫ï
|
||
LD HL,JUMPS.FILES_BYTES
|
||
PUSH HL
|
||
CALL BCDEHLP ; ¤®¡ ¢¨«¨ ª ⥪ã饬ã à §¬¥àã
|
||
POP HL
|
||
CALL SET_DWORD ; ¯®«®¦¨«¨ ®¡à â®
|
||
LD HL,(JUMPS.FILES_COUNT)
|
||
INC HL
|
||
LD (JUMPS.FILES_COUNT),HL ; ¨ªà¥¬¥â ª®«¨ç¥áâ¢ ä ©«®¢
|
||
; ¨é¥¬ á«¥¤ãî騩 ®¯¨á ⥫ì
|
||
.L5 CALL .F_NEXT
|
||
JR NC,.L2
|
||
RET
|
||
|
||
; ¯®¨áª ¯¥à¢®£® ®¯¨á ⥫ï
|
||
.F_FIRST LD A, DIR.M_Archive + \
|
||
DIR.M_System + \
|
||
DIR.M_Hidden + \
|
||
DIR.M_ReadOnly + \
|
||
DIR.M_Dir
|
||
.FFF1 LD HL,.FILES_MASK
|
||
LD DE,.OLDPATH
|
||
PUSH DE
|
||
PUSH IX
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP IX
|
||
POP HL
|
||
RET
|
||
|
||
; ¯®¨áª á«¥¤ãî饣® ®¯¨á ⥫ï
|
||
.F_NEXT LD DE,.OLDPATH
|
||
PUSH DE
|
||
PUSH IX
|
||
SPDSS DSSF.F_NEXT
|
||
POP IX
|
||
POP HL
|
||
RET
|
||
|
||
;.FILES_SIZE DD 0
|
||
;.FILES_COUNT DW 0
|
||
.FILES_MASK DZ "*.*"
|
||
.RET_DIR DZ ".. "
|
||
.DIR_NAME DZ " "
|
||
.CURR_DIRNAME DW 0
|
||
|
||
; ¯®¤áç¥â à §¬¥à ¤¨à¥ªâ®à¨¨
|
||
; <20> ¢å®¤¥:
|
||
; HL - ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ¬¥àïâì
|
||
; <20> ¢ë室¥:
|
||
; BCDE' - à §¬¥à ¢ ¡ ©â å
|
||
;GetDirSizeR CALL CountingDirR
|
||
; LD HL,JUMPS.FILES_BYTES
|
||
; CALL GET_DWORD
|
||
; EXX
|
||
; RET
|
||
|
||
; á®§¤ ¨¥ ¯ ¯®ª ¯à¨¥¬¨ª¥
|
||
; HL - ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ª®¯¨à®¢ âì
|
||
MkdirsDstR
|
||
|
||
.OLDPATH EQU WorkBuffer + 0x300 ; á®åà ¥ë© â¥ªã騩 ¯ãâì
|
||
.CURRPATHSRC EQU WorkBuffer + 0x200 ; ¢à¥¬¥®© ⥪ã騩 ¯ãâì ¨áâ®ç¨ª
|
||
.CURRPATHDST EQU WorkBuffer + 0x100 ; ¢à¥¬¥®© ⥪ã騩 ¯ãâì ¯à¨¥¬¨ª
|
||
.FINDBUF EQU WorkBuffer
|
||
|
||
PUSH IX
|
||
PUSH IY
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD (.OLDSP),SP
|
||
PUSH HL
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD DE,RightPanel ; ¤«ï ¯ã⨠ªã¤ ª®¯¨à®¢ âì
|
||
LD A,(RAMPAGES.LEFTPANEL) ; ¨§ ª ª®© áâà ¨æë ¯ ¥«¨ ¡à âì ¯ãâì
|
||
JR Z,.L1
|
||
LD DE,LeftPanel ; ¤«ï ¯ã⨠ªã¤ ª®¯¨à®¢ âì
|
||
LD A,(RAMPAGES.RIGHTPANEL) ; ¨§ ª ª®© áâà ¨æë ¯ ¥«¨ ¡à âì ¯ãâì
|
||
.L1
|
||
; ¢ª«îç ¥¬ ¯ £ã á ¤¨à¥ªâ®à¨¥© ⥪ã饩 ¯ ¥«¨
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,PANEL.CURR_PATH
|
||
ADD HL,DE ; ®âªã¤ ¯ãâì ¯à¨¥¬¨ª ¢§ïâì
|
||
LD DE,.CURRPATHDST ; ¡ãä¥à ¯ã⨠¯à¨¥¬¨ª
|
||
CALL .COPYNAME2PATH
|
||
LD (.ENDPATHDST),DE ; ¤à¥á 墮áâ ¯ã⨠¯à¨¥¬¨ª
|
||
; á®åà ¥¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â
|
||
SPDSS DSSF.CURDISK
|
||
LD HL,.OLDPATH ; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â
|
||
ADD A,'A'
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),':'
|
||
INC HL
|
||
SPDSS DSSF.CURDIR
|
||
POP DE ; ¤à¥á ®¯¨á â¥«ï ¤¨àë ¢ áâà ¨æ¥ ¯ ¥«¨ ª®â®àãî ª®¯¨à®¢ âì
|
||
; JP C,ERROR ;CountingDirR.END_COUNT
|
||
; ª®¯¨à®¢ ¨¥ ¨¬¥¨ ¤¨à¥ªâ®à¨¨ ¤«ï ª®¯¨à®¢ ¨ï
|
||
LD HL,FileHDR.Name
|
||
ADD HL,DE
|
||
LD DE,CountingDirR.DIR_NAME
|
||
LD BC,FileHDR.Name_Size
|
||
LDIR ; § ¡à «¨ ¨¬ï ¤¨àë ¤«ï ª®¯¨à®¢ ¨ï
|
||
EX DE,HL
|
||
CALL .CUTOFFSPACES ; ®âá¥ç¥¨¥ ¯à®¡¥«®¢
|
||
; ¯¥à¥®á ⥪ã饣® ¯ã⨠¨áâ®ç¨ª
|
||
LD HL,.OLDPATH
|
||
LD DE,.CURRPATHSRC
|
||
CALL .COPYNAME2PATH ; ᪮¯¨à®¢ «¨ ¯ãâì ¨áâ®ç¨ª
|
||
LD (.ENDPATHSRC),DE ; ¤à¥á 墮áâ ¯ã⨠¨áâ®ç¨ª
|
||
; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ¤«ï ª®¯¨à®¢ ¨ï ¢ ¯ãâì ¨áâ®ç¨ª
|
||
LD HL,(.ENDPATHSRC)
|
||
LD DE,CountingDirR.DIR_NAME
|
||
CALL .ADDNAME2PATH
|
||
LD (.ENDPATHSRC),DE ; ¤à¥á 墮áâ ¯ã⨠¨áâ®ç¨ª
|
||
; ¤®¡ ¢«¥¨¥ ¨¬¥¨ ¤¨àë ¤«ï ª®¯¨à®¢ ¨ï ¢ ¯ãâì ¯à¨¥¬¨ª
|
||
LD HL,(.ENDPATHDST)
|
||
LD DE,CountingDirR.DIR_NAME
|
||
CALL .ADDNAME2PATH
|
||
LD (.ENDPATHDST),DE
|
||
|
||
; á®§¤ ¨¥ ¤¨àë ¢ ¯à¨¥¬¨ª¥
|
||
LD HL,.CURRPATHDST
|
||
SPDSS DSSF.MKDIR ; á®§¤ «¨ ¤¨à㠯ਥ¬¨ª
|
||
JR NC,.L3
|
||
CP ERR_DSS.DIR_EXISTS ; ¥á«¨ ¤¨à 㦥 ¥áâì ¨£®à¨¬ ®è¨¡ªã
|
||
; JP C,ERROR
|
||
.L3
|
||
|
||
; TODO 横«¨ç¥áª¨© ¯®¨áª ¤¨à¥ªâ®à¨© á á®§¤ ¨¥¬ ¯à¨¥¬¨ª¥
|
||
LD HL,.CURRPATHSRC
|
||
SPDSS DSSF.CHDIR ; ¢å®¤ ¢ ¤¨àã ¨áâ®ç¨ª
|
||
CALL .FINDFIRSTSRCDIR ; ¯®¨áª ¯¥à¢®£® ®¯¨á ⥫ï
|
||
JP C,.ENDCOPY ; ¡®«ìè¥ ¤¨à¥ªâ®à¨© ¥â, ¢ë室¨¬
|
||
; ¯®¨áª ¤¨à¥ªâ®à¨©
|
||
.L2 CALL .FINDNEXTSRCDIR ; ¯®¨áª á«¥¤ãî饣® ®¯¨á ⥫ï
|
||
JP C,.ENDFINDNEXT ; ¯®¨áª ®ª®ç¥?
|
||
LD HL,.FINDBUF + FFIRST.Name
|
||
LD A,(HL)
|
||
CP '.' ; ®¯¨á ⥫¨ "." ¨ ".." ¨£®à¨¬
|
||
JR Z,.L2
|
||
LD DE,.TMPNAMEDIR
|
||
PUSH DE
|
||
CALL .COPYNAME2PATH
|
||
LD HL,(.ENDPATHDST)
|
||
POP DE
|
||
CALL .ADDNAME2PATH
|
||
LD HL,.CURRPATHDST
|
||
SPDSS DSSF.MKDIR ; á®§¤ ¥¬ ¤¨à㠯ਥ¬¨ª¥
|
||
; JP C,ERROR
|
||
LD HL,.CURRPATHSRC
|
||
SPDSS DSSF.CHDIR ; ¢®§¢à é ¥¬ ¯ãâì ¨áâ®ç¨ª
|
||
; JP C,ERROR
|
||
JR .L2 ; ¨é¥¬ á«¥¤ãî騩
|
||
|
||
; § ¢¥à襨¥ ¨ ¢ë室
|
||
JP CountingDirR.END_COUNT;RestoreDIR
|
||
|
||
; LD A,(RAMPAGES.FLX)
|
||
; SETPORT WINSP.CPU3,,0
|
||
|
||
.ENDFINDNEXT
|
||
JR $
|
||
|
||
; ¯®¨áª ¯¥à¢®© ¤¨àë ¢ ⥪ã饩 ¯®¤¤¨à¥ªâ®à¨¨
|
||
.FINDFIRSTSRCDIR
|
||
LD HL,CountingDirR.FILES_MASK
|
||
LD DE,.FINDBUF
|
||
SPDSS DSSF.F_FIRST,1,DIR.M_Dir
|
||
RET
|
||
|
||
.FINDNEXTSRCDIR
|
||
LD DE,.FINDBUF
|
||
SPDSS DSSF.F_NEXT
|
||
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
|
||
|
||
.NAME2DIRNAME
|
||
|
||
; ¯à®¢¥àª 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
|
||
|
||
; ®âá¥ç¥¨¥ ¨¬¥¨ ¤¨àë ¢ áâப¥ ¯ãâ¨
|
||
.DELNAME2PATH LD A,'\\'
|
||
.COB1 DEC HL
|
||
CP (HL)
|
||
JR NZ,.COB1
|
||
LD (HL),0
|
||
RET
|
||
|
||
; ¢ë室 ¨§ ª®¯¨à®¢ ¨ï ¤¨à¥ªâ®à¨©
|
||
.ENDCOPY LD SP,0
|
||
.OLDSP EQU $-2
|
||
LD HL,.OLDPATH
|
||
SPDSS DSSF.CHDIR
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP IY
|
||
POP IX
|
||
RET
|
||
|
||
.ENDPATHSRC DW 0 ; ¤à¥á 墮áâ ¯ã⨠¨áâ®ç¨ª
|
||
.ENDPATHDST DW 0 ; ¤à¥á 墮áâ ¯ã⨠¯à¨¥¬¨ª
|
||
.TMPNAMEDIR DB 8 DUP 0
|
||
ENDIF
|
||
|
||
; C:/DEV/
|
||
; /CAMEL401
|
||
; /DEMON
|
||
; /MASM80
|
||
; /OASM028
|
||
; /SOLID
|
||
; /DOC
|
||
; /EXAMPLES
|
||
; /INCLUDE
|
||
; /SRC
|
||
; /CLIB
|
||
; /BUILD
|
||
; /SPFORTH
|
||
; /F83
|
||
; /F99
|
||
; /TASM
|