; 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