876 lines
16 KiB
Plaintext
876 lines
16 KiB
Plaintext
|
|
; LAST UPDATE: 02.06.2025 savelij
|
|
|
|
;[]==========================================================[]
|
|
MarkFileR LD A,(IY+PANEL.EFL)
|
|
OR (IY+PANEL.EFH)
|
|
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.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 ; *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.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 ; *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,COUNTING_DIR
|
|
ELSE
|
|
JR NZ,.MrFile1
|
|
ENDIF
|
|
; íâ® ä ©«
|
|
LD B,(HL) ; áâ ஥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©«
|
|
LD A,IXL
|
|
LD (HL),A ; ®¢®¥ á®áâ®ï¨¥ ¯®¬¥âª¨ ä ©«
|
|
LD DE,WorkBuffer
|
|
PUSH BC
|
|
LD BC,FileHDR.SIZE
|
|
LDIR
|
|
IF MARK_DIR
|
|
LD HL,COUNTING_DIR.FILES_SIZE
|
|
LD DE,WorkBuffer + FileHDR.SizeBytes
|
|
LD BC,DWORD
|
|
LDIR
|
|
ENDIF
|
|
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.CFL)
|
|
LD H,(IY+PANEL.CFH)
|
|
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 InvertRectan
|
|
POP AF
|
|
JR NZ,.MarkExit1
|
|
JR .MarkExit2
|
|
|
|
; ¯à¨ ¯®«®¬ ¯®ª §¥ ä ©«®¢
|
|
.MarkFull LD L,(IY+PANEL.CFL)
|
|
LD H,(IY+PANEL.CFH)
|
|
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 InvertRectan
|
|
POP AF
|
|
JR Z,.MarkExit2
|
|
; ãáâ ®¢ª ¢ë¡®à ä ©«
|
|
.MarkExit1 LD IX,WorkBuffer
|
|
LD L,(IY + PANEL.MFL)
|
|
LD H,(IY + PANEL.MFH)
|
|
INC HL
|
|
LD (IY + PANEL.MFL),L
|
|
LD (IY + PANEL.MFH),H ; ®¡®¢«¥¨¥ ª®«¨ç¥á⢠¯®¬¥ç¥ëå ä ©«®¢
|
|
LD L,(IX + FileHDR.SizeBytes)
|
|
LD H,(IX + FileHDR.SizeBytes + 1)
|
|
LD E,(IY + PANEL.MBL1)
|
|
LD D,(IY + PANEL.MBH1)
|
|
XOR A ; [ ] fat32
|
|
ADD HL,DE
|
|
LD (IY + PANEL.MBL1),L
|
|
LD (IY + PANEL.MBH1),H ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 15-0
|
|
LD L,(IX + FileHDR.SizeBytes + 2)
|
|
LD H,(IX + FileHDR.SizeBytes + 3)
|
|
; [ ] fat32
|
|
LD E,(IY + PANEL.MBL2)
|
|
LD D,(IY + PANEL.MBH2)
|
|
ADC HL,DE
|
|
; [ ] fat32
|
|
ADC A,(IY + PANEL.MBL3)
|
|
LD (IY + PANEL.MBL3),A ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 32-39
|
|
LD (IY + PANEL.MBL2),L
|
|
LD (IY + PANEL.MBH2),H ; ®¡®¢«¥¨¥ à §¬¥à ¯®¬¥ç¥ëå ä ©«®¢ ¡¨âë 31-15
|
|
RET
|
|
|
|
; áï⨥ ¢ë¡®à ä ©«
|
|
.MarkExit2 LD IX,WorkBuffer
|
|
LD L,(IY + PANEL.MFL)
|
|
LD H,(IY + PANEL.MFH)
|
|
DEC HL
|
|
LD (IY + PANEL.MFL),L
|
|
LD (IY + PANEL.MFH),H
|
|
LD L,(IY + PANEL.MBL1)
|
|
LD H,(IY + PANEL.MBH1)
|
|
LD E,(IX + FileHDR.SizeBytes)
|
|
LD D,(IX + FileHDR.SizeBytes + 1)
|
|
XOR A
|
|
SBC HL,DE
|
|
LD (IY + PANEL.MBL1),L
|
|
LD (IY + PANEL.MBH1),H
|
|
LD L,(IY + PANEL.MBL2)
|
|
LD H,(IY + PANEL.MBH2)
|
|
LD E,(IX + FileHDR.SizeBytes + 2)
|
|
LD D,(IX + FileHDR.SizeBytes + 3)
|
|
SBC HL,DE
|
|
; [ ] fat32
|
|
ADC A,(IY + PANEL.MBL3)
|
|
LD (IY + PANEL.MBL3),A
|
|
LD (IY + PANEL.MBL2),L
|
|
LD (IY + PANEL.MBH2),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.EFL)
|
|
OR (IY+PANEL.EFH)
|
|
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.MBL1)
|
|
LD H,(IY+PANEL.MBH1)
|
|
LD E,(IY+PANEL.MBL2)
|
|
LD D,(IY+PANEL.MBH2)
|
|
LD A,(IY+PANEL.MBL3) ; [ ] FAT32
|
|
LD C,(IY+PANEL.MFL)
|
|
LD B,(IY+PANEL.MFH)
|
|
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.MBL1),L
|
|
LD (IY+PANEL.MBH1),H
|
|
LD (IY+PANEL.MBL2),E
|
|
LD (IY+PANEL.MBH2),D
|
|
LD (IY+PANEL.MBL3),A ; [ ] FAT32
|
|
LD (IY+PANEL.MFL),C
|
|
LD (IY+PANEL.MFH),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.EFL)
|
|
OR (IY+PANEL.EFH)
|
|
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.MFL)
|
|
LD D,(IY+PANEL.MFH)
|
|
OR A
|
|
SBC HL,DE
|
|
RET Z
|
|
ADD HL,DE
|
|
LD (IY+PANEL.MFL),L
|
|
LD (IY+PANEL.MFH),H
|
|
EXX
|
|
LD (IY+PANEL.MBL1),L
|
|
LD (IY+PANEL.MBH1),H
|
|
LD (IY+PANEL.MBL2),E
|
|
LD (IY+PANEL.MBH2),D
|
|
; [ ] FAT32
|
|
EX AF,AF'
|
|
LD (IY+PANEL.MBL3),A
|
|
CALL PrintDIR
|
|
JP PrnFileInfo
|
|
|
|
;[]==========================================================[]
|
|
UnSelectAllR: CALL ResInvert
|
|
UnSelectAllRN: LD HL,SetInvert
|
|
PUSH HL
|
|
LD A,(IY+PANEL.EFL)
|
|
OR (IY+PANEL.EFH)
|
|
RET Z
|
|
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
|
RET NZ
|
|
LD A,(IY+PANEL.MFL)
|
|
OR (IY+PANEL.MFH)
|
|
RET Z
|
|
PUSH IY
|
|
POP HL
|
|
LD BC,PANEL.MFL
|
|
ADD HL,BC
|
|
LD B,PANEL.FILEMASK - PANEL.MFL
|
|
.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.EFL)
|
|
OR (IY+PANEL.EFH)
|
|
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.MBL1)
|
|
LD H,(IY + PANEL.MBH1)
|
|
LD E,(IY + PANEL.MBL2)
|
|
LD D,(IY + PANEL.MBH2)
|
|
LD A,(IY + PANEL.MBL3) ; [ ] FAT32
|
|
LD C,(IY + PANEL.MFL)
|
|
LD B,(IY + PANEL.MFH)
|
|
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.MBL1),L
|
|
LD (IY + PANEL.MBH1),H
|
|
LD (IY + PANEL.MBL2),E
|
|
LD (IY + PANEL.MBH2),D
|
|
LD (IY + PANEL.MBL3),A ; [ ] FAT32
|
|
LD (IY + PANEL.MFL),C
|
|
LD (IY + PANEL.MFH),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
|
|
; ¯®¤áç¥â ¢ ¡ ©â å à §¬¥à ®â¬¥ç¥®© ¤¨à¥ªâ®à¨¨
|
|
COUNTING_DIR PUSH IX
|
|
PUSH IY
|
|
PUSH HL
|
|
PUSH BC
|
|
GETPORT WINSP.CPU3
|
|
PUSH AF
|
|
PUSH HL
|
|
XOR A
|
|
LD H,A
|
|
LD L,A
|
|
LD IXH,A ; ®¡ã«¥¨¥ ãà®¢ï ¢å®¦¤¥¨ï ¢ ¤¨àë
|
|
LD (.FILES_SIZE),HL
|
|
LD (.FILES_SIZE + 2),HL ; ®¡ã«¥¨¥ à §¬¥à ¤¨àë
|
|
LD HL,CPU3
|
|
LD (.CURR_DIRNAME),HL
|
|
; á®åà ¥¨¥ ⥪ã饣® ¯ã⨠¤«ï ¢®§¢à â
|
|
SPDSS DSSF.CURDISK
|
|
LD HL,WorkBuffer + 0x300 ; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â
|
|
ADD A,'A'
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),':'
|
|
INC HL
|
|
SPDSS DSSF.CURDIR
|
|
POP DE
|
|
JR 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,WorkBuffer + 0x300 ; á®åà ¥ë© ¯ãâì ¤«ï ¢®§¢à â
|
|
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,WorkBuffer + 0x200
|
|
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,.L4
|
|
; ¤«ï ¤¨àë ª®¯¨à㥬 ¨¬ï ¢ â ¡«¨çªã
|
|
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
|
|
|
|
; ¤«ï ä ©« ¤®¡ ¢«ï¥¬ ¤«¨ã
|
|
.L4 LD DE,FFIRST.FileSize
|
|
ADD HL,DE
|
|
CALL GET_DWORD ; ¢§ïâì à §¬¥à ¨§ ®¯¨á ⥫ï
|
|
LD HL,.FILES_SIZE
|
|
PUSH HL
|
|
CALL BCDEHLP ; ¤®¡ ¢¨«¨ ª ⥪ã饬ã à §¬¥àã
|
|
POP HL
|
|
CALL SET_DWORD ; ¯®«®¦¨«¨ ®¡à â®
|
|
.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,WorkBuffer + 0x300
|
|
PUSH DE
|
|
PUSH IX
|
|
SPDSS DSSF.F_FIRST,0
|
|
POP IX
|
|
POP HL
|
|
RET
|
|
|
|
; ¯®¨áª á«¥¤ãî饣® ®¯¨á ⥫ï
|
|
.F_NEXT LD DE,WorkBuffer + 0x300
|
|
PUSH DE
|
|
PUSH IX
|
|
SPDSS DSSF.F_NEXT
|
|
POP IX
|
|
POP HL
|
|
RET
|
|
|
|
.FILES_SIZE DD 0
|
|
.FILES_MASK DZ "*.*"
|
|
.RET_DIR DZ ".. "
|
|
.DIR_NAME DZ " "
|
|
.CURR_DIRNAME DW 0
|
|
|
|
GetDirSizeR CALL COUNTING_DIR
|
|
LD HL,COUNTING_DIR.FILES_SIZE
|
|
JP GET_DWORD
|
|
ENDIF
|