текст ошибки "Unknown Error". - исправлена ошибка приводящая к вылету при копировании нескольких файлов на уже существующие и выборе отмены от продолжения копирования.
710 lines
10 KiB
Plaintext
710 lines
10 KiB
Plaintext
|
||
; LAST UPDATE: 07.09.2025 savelij
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; <20> ¢å®¤¥:
|
||
; A - ®¬¥à áâà ¨æë ¤«ï à ¡®âë ¥á«¨ ¡¨â PANELFLAG.B_DIRPAGE ãáâ ®¢«¥
|
||
; ¨ ç¥ ¥ âॡã¥âáï
|
||
ReadDIR BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
JR NZ,.RD1
|
||
.RD2 BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.RD1
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.RD1 LD (.DIRPAGE),A
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JP NZ,ReadTreeR
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD A,(IY + PANEL.SORTFLAG)
|
||
AND SORTFLAG.MASK
|
||
JR Z,.L6
|
||
; á á®àâ¨à®¢ª®© £à㧨¬ ¢ ᢮¡®¤ãî ¯ £ã
|
||
LD A,(RAMPAGES.BuffPg4)
|
||
JR .L1
|
||
|
||
; ¡¥§ á®àâ¨à®¢ª¨ £à㧨¬ ¢ áâà ¨æã ¯ ¥«¨
|
||
.L6 LD A,0
|
||
.DIRPAGE EQU $-1
|
||
.L1
|
||
SETPORT WINSP.CPU3,,0
|
||
PUSH IY
|
||
POP HL
|
||
LD D,H
|
||
LD E,L
|
||
LD BC,PANEL.FILE_MASK
|
||
ADD HL,BC
|
||
BIT PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
JR NZ,.L8
|
||
EX DE,HL
|
||
LD BC,PANEL.FILES_ALL
|
||
ADD HL,BC
|
||
LD B,PANEL.FILE_MASK - PANEL.FILES_ALL
|
||
.L5 LD (HL),0
|
||
INC HL
|
||
DJNZ .L5
|
||
.L8 RES PANELFLAG.B_DIRPAGE,(IY + PANEL.PANELFLAG)
|
||
BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG)
|
||
JR NZ,.L2
|
||
LD HL,NORMmask
|
||
.L2 LD DE,FILEmask
|
||
LD C,MASK_SIZE
|
||
LDIR
|
||
LD IX,0x0000
|
||
LD HL,CPU3
|
||
LD (AdrNxtFile),HL
|
||
LD B,0x08
|
||
SUB A
|
||
.L3 LD (HL),A
|
||
INC HL
|
||
DJNZ .L3
|
||
CALL FindFILES
|
||
LD E,IXL
|
||
LD D,IXH
|
||
LD HL,(AdrNxtFile)
|
||
LD B,0x08
|
||
SUB A
|
||
.L4 LD (HL),A
|
||
INC HL
|
||
DJNZ .L4
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
LD (IY + PANEL.FILES_ALL),E ;EQUIP FIL
|
||
LD (IY + PANEL.FILES_ALL + 1),D
|
||
LD A,(IY + PANEL.SORTFLAG)
|
||
AND SORTFLAG.MASK
|
||
JP NZ,SortDIR
|
||
RET
|
||
|
||
AdrNxtFile DEFW 0x0000
|
||
FileAtribut DB DIR.M_Archive + \
|
||
DIR.M_Dir + \
|
||
DIR.M_System + \
|
||
DIR.M_Hidden + \
|
||
DIR.M_ReadOnly
|
||
NORMmask DEFB "*.*"
|
||
DB MASK_SIZE - STRLEN("*.*") DUP 0
|
||
FILEmask DB MASK_SIZE DUP 0
|
||
|
||
FindFILES BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG)
|
||
JR NZ,FindFILESm
|
||
LD HL,FILEmask
|
||
LD DE,WorkBuffer
|
||
LD A,(FileAtribut)
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH DE
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
RET C
|
||
FndFILE CALL InsFileInfo
|
||
RET C
|
||
LD DE,WorkBuffer
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH DE
|
||
SPDSS DSSF.F_NEXT
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
JR NC,FndFILE
|
||
RET
|
||
|
||
FindFILESm 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 IY
|
||
PUSH IX
|
||
PUSH DE
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
RET C
|
||
FFILEm1 LD A,(WorkBuffer + FFIRST.Attr)
|
||
AND DIR.M_Dir
|
||
CALL NZ,InsFileInfo
|
||
RET C
|
||
LD DE,WorkBuffer
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH DE
|
||
SPDSS DSSF.F_NEXT
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
JR NC,FFILEm1
|
||
LD HL,FILEmask
|
||
LD DE,WorkBuffer
|
||
LD A,(FileAtribut)
|
||
AND DIR.M_Archive + \
|
||
DIR.M_System + \
|
||
DIR.M_Hidden + \
|
||
DIR.M_ReadOnly
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH DE
|
||
SPDSS DSSF.F_FIRST,0
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
RET C
|
||
FFILEm2 CALL InsFileInfo
|
||
RET C
|
||
LD DE,WorkBuffer
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH DE
|
||
SPDSS DSSF.F_NEXT
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
JR NC,FFILEm2
|
||
RET
|
||
|
||
InsFileInfo EX DE,HL
|
||
LD HL,(AdrNxtFile)
|
||
LD BC,FileHDR.SIZE
|
||
ADD HL,BC
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
RET C
|
||
SUB A
|
||
LD (DE),A
|
||
INC DE
|
||
PUSH HL
|
||
LD BC,FFIRST.Attr
|
||
ADD HL,BC
|
||
LD B,(HL) ; FFIRST.Attr
|
||
INC HL
|
||
LD A,B
|
||
EX AF,AF'
|
||
LD A,(HL) ; FFIRST.Name
|
||
INC HL
|
||
LD C,(HL) ; FFIRST.Name + 1
|
||
DEC HL
|
||
; ¯à®¢¥àª ¯®¤¤¨à¥ªâ®à¨î
|
||
CP '.'
|
||
JR NZ,InsF1
|
||
LD A,' '
|
||
SUB C
|
||
JR NZ,InsF1
|
||
; ¯à®¯ã᪠¥á«¨ ¨¬ï "."
|
||
InsFext POP HL
|
||
OR A
|
||
RET
|
||
|
||
InsF1 BIT DIR.B_Dir,B ; ¤¨à¥ªâ®à¨ï ¨«¨ ä ©«?
|
||
JR NZ,InsF2
|
||
; íâ® ä ©«
|
||
OR A
|
||
BIT SORTFLAG.B_EXEC,(IY + PANEL.SORTFLAG)
|
||
CALL NZ,TestExe
|
||
JR C,InsFext
|
||
IF CORR_FILENAME
|
||
LD B,DIR.Name_Size
|
||
.L1 LD A,(HL)
|
||
CALL CorrBigChar
|
||
LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ .L1
|
||
LD A,0x01
|
||
LD (DE),A
|
||
INC DE
|
||
LD B,DIR.Ext_Size
|
||
.L2 LD A,(HL)
|
||
CALL CorrBigChar
|
||
LD (DE),A
|
||
INC HL
|
||
INC DE
|
||
DJNZ .L2
|
||
JR InsF3
|
||
ENDIF ; CORR_FILENAME
|
||
|
||
; íâ® ¤¨à
|
||
InsF2 LD BC,DIR.Name_Size
|
||
LDIR
|
||
LD A,0x01
|
||
LD (DE),A
|
||
INC DE
|
||
LD C,DIR.Ext_Size
|
||
LDIR
|
||
InsF3 SUB A
|
||
LD (DE),A
|
||
INC DE
|
||
EX AF,AF'
|
||
LD (DE),A ; DIR.Attr
|
||
INC DE
|
||
POP HL
|
||
PUSH HL
|
||
LD BC,DIR.FileSize
|
||
ADD HL,BC
|
||
LD C,DIR.FileSize_Size
|
||
LDIR
|
||
POP HL
|
||
PUSH HL
|
||
LD C,DIR.WrtDate
|
||
ADD HL,BC
|
||
LD A,(HL)
|
||
AND 0x1F ; —¨á«®
|
||
LD (DE),A
|
||
INC DE
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,(HL)
|
||
LD H,B
|
||
LD L,C
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
LD A,H
|
||
AND 0x0F ; Œ¥áïæ
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,B
|
||
SRL A
|
||
ADD A,80
|
||
.L1 SUB 100
|
||
JR NC,.L1
|
||
ADD A,100 ; ƒ®¤
|
||
LD (DE),A
|
||
INC DE
|
||
POP HL
|
||
LD BC,DIR.WrtTime
|
||
ADD HL,BC
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,(HL)
|
||
LD A,B
|
||
AND 0xF8
|
||
RRA
|
||
RRA
|
||
RRA
|
||
LD (DE),A ; — áë
|
||
INC DE
|
||
LD H,B
|
||
LD L,C
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
LD A,H
|
||
AND 0x3F
|
||
LD (DE),A ; Œ¨ãâë
|
||
INC DE
|
||
LD (AdrNxtFile),DE
|
||
INC IX
|
||
RET
|
||
|
||
TestExe PUSH HL
|
||
LD A,L
|
||
ADD A,8
|
||
LD L,A
|
||
JR NC,.L1
|
||
INC H
|
||
.L1 LD A,(HL)
|
||
INC HL
|
||
CP 'E'
|
||
JR NZ,TestExe1
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 'X'
|
||
JR NZ,TestExe1
|
||
LD A,(HL)
|
||
CP 'E'
|
||
JR NZ,TestExe1
|
||
POP HL
|
||
OR A
|
||
RET
|
||
|
||
TestExe1 POP HL
|
||
PUSH HL
|
||
LD A,L
|
||
ADD A,8
|
||
LD L,A
|
||
JR NC,.L1
|
||
INC H
|
||
.L1 LD A,(HL)
|
||
INC HL
|
||
CP 'T'
|
||
JR NZ,TestExeC
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 'R'
|
||
JR NZ,TestExeC
|
||
LD A,(HL)
|
||
CP 'D'
|
||
JR NZ,TestExeC
|
||
POP HL
|
||
OR A
|
||
RET
|
||
|
||
TestExeC POP HL
|
||
SCF
|
||
RET
|
||
|
||
IF CORR_FILENAME
|
||
; <20>à®æ¥¤ãà ª®à४樨 ¡ãª¢ë ª ¬ «¥ìª®© ¡ãª¢¥
|
||
CorrBigChar: CP 'A'
|
||
RET C
|
||
CP 'Z' + 1
|
||
JR NC,.CheckRUS
|
||
.Dec: ADD A,0x20
|
||
RET
|
||
|
||
.CheckRUS: CP '€'
|
||
RET C
|
||
CP '<27>'+1
|
||
JR C,.Dec
|
||
|
||
.BGUPPER: CP '<27>'
|
||
RET C
|
||
CP 'Ÿ' + 1
|
||
JR NC,.HGUPPER
|
||
ADD A,0x50
|
||
RET
|
||
|
||
.HGUPPER: CP 'ð' ; àãááª ï ¡ãª¢ ñ, ª®¤ #F1
|
||
RET NZ
|
||
INC A
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà ª®à४樨 ¡ãª¢ë ª ¡®«ì让 ¡ãª¢¥
|
||
CorrSmallChar CP 'a'
|
||
RET C
|
||
CP 'z' + 1
|
||
JR NC,.CorrCh2
|
||
RES 5,A
|
||
RET
|
||
|
||
.CorrCh2 CP 0xA0
|
||
RET C
|
||
CP 0xB0
|
||
JR NC,.CorrCh3
|
||
SUB 0x20
|
||
RET
|
||
|
||
.CorrCh3 CP 0xE0
|
||
RET C
|
||
SUB 0x50
|
||
RET
|
||
ENDIF ; CORR_FILENAME
|
||
|
||
;[]----------------------------------------------------------[]
|
||
SortDIR
|
||
GETPORT WINSP.CPU1
|
||
LD C,A
|
||
GETPORT WINSP.CPU3
|
||
LD B,A
|
||
PUSH BC
|
||
LD A,(ReadDIR.DIRPAGE)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,(RAMPAGES.BuffPg4)
|
||
SETPORT WINSP.CPU1,,0
|
||
LD HL,CPU3
|
||
LD (EndSort),HL
|
||
SUB A
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),A
|
||
LD (BegSort),HL
|
||
LD A,(IY + PANEL.SORTFLAG)
|
||
RRA
|
||
LD HL,SortABC ; á®àâ¨à®¢ª ¯® Name CTRL+F3
|
||
JR C,.SortBeg
|
||
RRA
|
||
LD HL,SortExt ; á®àâ¨à®¢ª ¯® Extension CTRL+F4
|
||
JR C,.SortBeg
|
||
RRA
|
||
LD HL,SortData ; á®àâ¨à®¢ª ¯® Date CTRL+F5
|
||
JR C,.SortBeg
|
||
LD HL,SortSize ; á®àâ¨à®¢ª ¯® Size CTRL+F6
|
||
.SortBeg LD (.Scall1),HL
|
||
LD (.Scall2),HL
|
||
LD (.Scall3),HL
|
||
LD IX,CPU1 + 1
|
||
LD HL,CPU1 + 1
|
||
; ¯à®¢¥àª çâ® ¢ ¯®¤¤¨à¥ªâ®à¨¨
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr - 1)
|
||
JR Z,.SortStart
|
||
; ¥á«¨ ¯®¤¤¨à¥ªâ®à¨ï â® ¯à®¢¥àª ¨¬ï ".."
|
||
LD A,(HL)
|
||
CP '.'
|
||
JR NZ,.SortStart
|
||
INC HL
|
||
LD A,(HL)
|
||
DEC HL
|
||
CP '.'
|
||
JR NZ,.SortStart
|
||
; § ®á¨¬ ¤¨àã ".."
|
||
PUSH HL
|
||
CALL 0
|
||
.Scall3 EQU $-2
|
||
LD BC,FileHDR.SIZE
|
||
LD HL,CPU3
|
||
ADD HL,BC
|
||
LD (EndSort),HL
|
||
LD (HL),0
|
||
INC HL
|
||
LD (HL),0
|
||
LD (BegSort),HL
|
||
POP HL
|
||
ADD IX,BC
|
||
ADD HL,BC
|
||
; ç «® á®àâ¨à®¢ª¨ ¢á¥£® ®á⠫쮣®
|
||
.SortStart PUSH IX
|
||
PUSH HL
|
||
.SortDIRlp1 LD A,(HL)
|
||
OR A
|
||
JR Z,.SortDIRnxt
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr - 1)
|
||
PUSH HL
|
||
CALL NZ,0x0000 ; ¯à®¢¥àª ¤«ï DIR
|
||
.Scall1 EQU $-2
|
||
POP HL
|
||
LD BC,FileHDR.SIZE
|
||
ADD IX,BC
|
||
ADD HL,BC
|
||
JR .SortDIRlp1
|
||
|
||
.SortDIRnxt LD HL,(EndSort)
|
||
SUB A
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),A
|
||
LD (BegSort),HL
|
||
POP HL
|
||
POP IX
|
||
.SortDIRlp2 LD A,(HL)
|
||
OR A
|
||
JR Z,.SortDIRext
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr - 1)
|
||
PUSH HL
|
||
CALL Z,0x0000 ; ¯à®¢¥àª ¤«ï ä ©«
|
||
.Scall2 EQU $-2
|
||
POP HL
|
||
LD BC,FileHDR.SIZE
|
||
ADD IX,BC
|
||
ADD HL,BC
|
||
JR .SortDIRlp2
|
||
|
||
.SortDIRext LD HL,(EndSort)
|
||
LD B,0x08
|
||
SUB A
|
||
.L3 LD (HL),A
|
||
INC HL
|
||
DJNZ .L3
|
||
POP BC
|
||
LD A,B
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,C
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
BegSort DEFW 0x0000
|
||
EndSort DEFW 0x0000
|
||
|
||
; á®àâ¨à®¢ª ¯® Name CTRL+F3
|
||
SortABC EX DE,HL
|
||
LD HL,(BegSort)
|
||
.Sabc1 LD A,(HL)
|
||
OR A
|
||
JP Z,SortDIRins
|
||
PUSH DE
|
||
PUSH HL
|
||
LD B,12
|
||
.Sabc2 LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.Sabc3
|
||
INC DE
|
||
INC HL
|
||
DJNZ .Sabc2
|
||
.Sabc3 POP HL
|
||
POP DE
|
||
JP C,SortDIRins
|
||
LD BC,FileHDR.SIZE
|
||
ADD HL,BC
|
||
JR .Sabc1
|
||
|
||
; á®àâ¨à®¢ª ¯® Extension CTRL+F4
|
||
SortExt EX DE,HL
|
||
LD HL,(BegSort)
|
||
.Sext1 LD A,(HL)
|
||
OR A
|
||
JP Z,SortDIRins
|
||
PUSH DE
|
||
PUSH HL
|
||
LD BC,0x0009
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
LD B,03
|
||
.Sext2 LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.Sext4
|
||
INC DE
|
||
INC HL
|
||
DJNZ .Sext2
|
||
POP HL
|
||
POP DE
|
||
PUSH DE
|
||
PUSH HL
|
||
LD B,8
|
||
.Sext3 LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.Sext4
|
||
INC DE
|
||
INC HL
|
||
DJNZ .Sext3
|
||
.Sext4 POP HL
|
||
POP DE
|
||
JP C,SortDIRins
|
||
LD BC,FileHDR.SIZE
|
||
ADD HL,BC
|
||
JR .Sext1
|
||
|
||
; á®àâ¨à®¢ª ¯® Date CTRL+F5
|
||
SortData EX DE,HL
|
||
LD HL,(BegSort)
|
||
.Sdata1 LD A,(HL)
|
||
OR A
|
||
JP Z,SortDIRins
|
||
PUSH DE
|
||
PUSH HL
|
||
LD BC,0x0014
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SdataE
|
||
DEC DE
|
||
DEC HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SdataE
|
||
DEC DE
|
||
DEC HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SdataE
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
INC DE
|
||
INC DE
|
||
INC DE
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SdataE
|
||
INC DE
|
||
INC HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SdataE
|
||
POP HL
|
||
POP DE
|
||
PUSH DE
|
||
PUSH HL
|
||
LD B,12
|
||
.Sdata2 LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SdataE
|
||
INC DE
|
||
INC HL
|
||
DJNZ .Sdata2
|
||
.SdataE POP HL
|
||
POP DE
|
||
JR C,SortDIRins
|
||
LD BC,FileHDR.SIZE
|
||
ADD HL,BC
|
||
JR .Sdata1
|
||
|
||
; á®àâ¨à®¢ª ¯® Size CTRL+F6
|
||
SortSize EX DE,HL
|
||
LD HL,(BegSort)
|
||
.Ssize1 LD A,(HL)
|
||
OR A
|
||
JR Z,SortDIRins
|
||
PUSH DE
|
||
PUSH HL
|
||
LD BC,0x0011
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SsizeE
|
||
DEC DE
|
||
DEC HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SsizeE
|
||
DEC DE
|
||
DEC HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SsizeE
|
||
DEC DE
|
||
DEC HL
|
||
LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SsizeE
|
||
POP HL
|
||
POP DE
|
||
PUSH DE
|
||
PUSH HL
|
||
LD B,12
|
||
.Ssize2 LD A,(DE) ;(DE) < (HL) "C"
|
||
CP (HL) ;(DE) >= (HL) "NC"
|
||
JR NZ,.SsizeE
|
||
INC DE
|
||
INC HL
|
||
DJNZ .Ssize2
|
||
.SsizeE POP HL
|
||
POP DE
|
||
JR C,SortDIRins
|
||
LD BC,FileHDR.SIZE
|
||
ADD HL,BC
|
||
JR .Ssize1
|
||
|
||
SortDIRins DEC HL
|
||
DEC DE
|
||
PUSH DE
|
||
PUSH HL
|
||
EX DE,HL
|
||
LD HL,(EndSort)
|
||
PUSH HL
|
||
OR A
|
||
SBC HL,DE
|
||
LD B,H
|
||
LD C,L
|
||
POP DE
|
||
LD HL,FileHDR.SIZE
|
||
ADD HL,DE
|
||
LD (EndSort),HL
|
||
SUB A
|
||
LD (HL),A
|
||
INC HL
|
||
LD (HL),A
|
||
DEC HL
|
||
EX DE,HL
|
||
LD A,B
|
||
OR C
|
||
CALL NZ,MoveBytesDec
|
||
POP DE
|
||
POP HL
|
||
LD BC,FileHDR.SIZE
|
||
LDIR
|
||
RET
|