702 lines
10 KiB
Plaintext
702 lines
10 KiB
Plaintext
|
||
; LAST UPDATE: 24.06.2025 savelij
|
||
|
||
;[]----------------------------------------------------------[]
|
||
ReadDIR BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
|
||
IF TREE_REZID
|
||
JP NZ,RESIDENT.ReadTree
|
||
ELSE
|
||
JP NZ,ReadTreeR
|
||
ENDIF
|
||
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
|
||
PUSH IY
|
||
POP HL
|
||
LD BC,PANEL.EFL
|
||
ADD HL,BC
|
||
LD B,PANEL.FILEMASK - PANEL.EFL
|
||
.L5 LD (HL),0
|
||
INC HL
|
||
DJNZ .L5
|
||
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.EFL),E ;EQUIP FIL
|
||
LD (IY + PANEL.EFH),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);+0x20)
|
||
AND DIR.M_Dir;0x10
|
||
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;0x20
|
||
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
|
||
; <20><EFBFBD>ઠ <20><> <20><><EFBFBD><EFBFBD><EFBFBD>४<EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD>
|
||
CP '.'
|
||
JR NZ,InsF1
|
||
LD A,' '
|
||
SUB C
|
||
JR NZ,InsF1
|
||
; <20>ய<EFBFBD><E0AEAF><EFBFBD> <20> <20><><EFBFBD> "."
|
||
InsFext POP HL
|
||
OR A
|
||
RET
|
||
|
||
InsF1 BIT DIR.B_Dir,B ; <20><>४<EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 䠩<>?
|
||
JR NZ,InsF2
|
||
; <20><><EFBFBD> 䠩<>
|
||
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
|
||
|
||
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
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 ; <20><>
|
||
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 ; <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,B
|
||
SRL A
|
||
ADD A,80
|
||
.L1 SUB 100
|
||
JR NC,.L1
|
||
ADD A,100 ; <20><><EFBFBD>
|
||
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 ; <20><><EFBFBD><EFBFBD>
|
||
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 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
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><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD>४樨 <20>㪢<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>쪮<EFBFBD> <20>㪢<EFBFBD>
|
||
CorrBigChar: CP 'A'
|
||
RET C
|
||
CP 'Z' + 1
|
||
JR NC,.CheckRUS
|
||
.Dec: ADD A,0x20
|
||
RET
|
||
|
||
.CheckRUS: CP '<27>'
|
||
RET C
|
||
CP '<27>'+1
|
||
JR C,.Dec
|
||
|
||
.BGUPPER: CP '<27>'
|
||
RET C
|
||
CP '<27>' + 1
|
||
JR NC,.HGUPPER
|
||
ADD A,0x50
|
||
RET
|
||
|
||
.HGUPPER: CP '<27>' ; <20><><EFBFBD>᪠<EFBFBD> <20>㪢<EFBFBD> <20>, <20><><EFBFBD> #F1
|
||
RET NZ
|
||
INC A
|
||
RET
|
||
|
||
; <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD>४樨 <20>㪢<EFBFBD> <20> <20><><EFBFBD><EFBFBD>让 <20>㪢<EFBFBD>
|
||
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
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L1
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L1
|
||
SETPORT WINSP.CPU1,,0
|
||
LD A,(RAMPAGES.BuffPg3)
|
||
SETPORT WINSP.CPU3,,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 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> Name CTRL+F3
|
||
JR C,.SortBeg
|
||
RRA
|
||
LD HL,SortExt ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> Extension CTRL+F4
|
||
JR C,.SortBeg
|
||
RRA
|
||
LD HL,SortData ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> Date CTRL+F5
|
||
JR C,.SortBeg
|
||
LD HL,SortSize ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> Size CTRL+F6
|
||
.SortBeg LD (.Scall1),HL
|
||
LD (.Scall2),HL
|
||
LD (.Scall3),HL
|
||
LD IX,CPU1 + 1
|
||
LD HL,CPU1 + 1
|
||
; <20><EFBFBD>ઠ <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>४<EFBFBD><E0A5AA>ਨ
|
||
BIT DIR.B_Dir,(IX + FileHDR.Attr - 1)
|
||
JR Z,.SortStart
|
||
; <20> <20><><EFBFBD><EFBFBD><EFBFBD>४<EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD>ઠ <20><> <20><><EFBFBD> ".."
|
||
LD A,(HL)
|
||
CP '.'
|
||
JR NZ,.SortStart
|
||
INC HL
|
||
LD A,(HL)
|
||
DEC HL
|
||
CP '.'
|
||
JR NZ,.SortStart
|
||
; <20><><EFBFBD><EFBFBD>ᨬ <20><><EFBFBD><EFBFBD> ".."
|
||
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
|
||
; <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20>ᥣ<EFBFBD> <20><>⠫쭮<E2A0AB><ECADAE>
|
||
.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 ; <20><EFBFBD>ઠ <20><><EFBFBD> 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 ; <20><EFBFBD>ઠ <20><><EFBFBD> 䠩<><E4A0A9>
|
||
.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
|
||
GETPORT WINSP.CPU1
|
||
LD (RAMPAGES.BuffPg3),A
|
||
GETPORT WINSP.CPU3
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD HL,RAMPAGES.LEFTPANEL
|
||
JR Z,.L2
|
||
LD HL,RAMPAGES.RIGHTPANEL
|
||
.L2 LD (HL),A
|
||
POP BC
|
||
LD A,B
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,C
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
BegSort DEFW 0x0000
|
||
EndSort DEFW 0x0000
|
||
|
||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> 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
|
||
|
||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> 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
|
||
|
||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> 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
|
||
|
||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><> 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,MoveBytesUp
|
||
POP DE
|
||
POP HL
|
||
LD BC,FileHDR.SIZE
|
||
LDIR
|
||
RET
|