SORTASM	;**************************
	;*RADOR-ASSEMBLERLISTE    *
	;*                        *
	;*V 31.03.88              *
	;*                        *
	;*SORTIER ROUTINE         *
	;*                        *
	;*QUICK-SORT-VERFAHREN    *
	;**************************
	;
	;
	;
	;\[[[[[[[[[[[[[[[[[[[[[[[[\
	;\[ANTON-HELMUT PRANKE[[[[\
	;\[LTN.-LUTZ-MEIER-STR.36[\
	;\[SUHL[[[[[[[[[[[[[[[[[[[\
	;\[6024[[[[[[[[[[[[[[[[[[[\
	;\[[[[[[[[[[[[[[[[[[[[[[[[\
	;
	;
	;_________________________
	;
	;SOE   SORTIEREINSTIEG
	;
NVX	EQU 0B797H
PV	EQU 0F003H
SL	EQU 0
NS	EQU 2
NF	EQU 4
FP	EQU 6
DA	EQU 8
DNE	EQU 0AH
FEP	EQU 0CH
DNA	EQU 0EH
FK	EQU 10H
ZIEL	EQU 12H
QUEL	EQU 14H
HLR	EQU 16H
DER	EQU 18H
BCR	EQU 1AH
DRM	EQU 1CH
SL1	EQU 20H
NS1	EQU 22H
NF1	EQU 24H
FP1	EQU 26H
VZ	EQU 28H
VJL	EQU 2AH
VEB	EQU 2CH
VEE	EQU 2EH
VJR	EQU 30H
MOM	EQU 32H
FRE	EQU 34H
NMO	EQU 36H
DAM	EQU 38H
NFM	EQU 3AH
LA1	EQU 3CH
LH2	EQU 3EH
LB1	EQU 40H
LB2	EQU 42H
NK	EQU 44H
DK	EQU 46H
FP2	EQU 48H
SCH	EQU 4AH
SZ	EQU 4CH
ANF	EQU 4EH
VGB	EQU 50H
ANG	EQU 52H
VSU	EQU 54H
VGK	EQU 56H
VIL	EQU 58H
VIR	EQU 5AH
GRU	EQU 60H
	ORG 1BC2H
	DEFW 0DEDEH
	DEFM 'SORT'
	DEFB 1
	LD E,5
	LD L,0
	CALL COL
	CALL VET	;VEKTORREFRESH
	CALL LOE
	CALL PV
	DEFB 23H
	DEFM '*SORTIEREN NACH MERKMAL'
	DEFW 0A19H
	DEFM '*WELCHE DATEI?'
	DEFW 0A19H
	DEFB 0
	CALL ERO	;DATEISUCHE
	JP NC MERE	;NEIN->RETURN
	LD HL,(DNE)	;NAME ENDE
	LD A,0DDH
	LD BC,30H
	CPDR
	INC HL
	INC HL
	LD DNA,HL	;NAME ANFANG
SOE	LD E,7
	LD L,0
	CALL COL
	CALL LOE
	CALL SAN	;ANZAHLTEST
	JP C MERE
UU	LD A,(NS)	;ANZAHL=1?
	DEC A
	OR A
	JP Z MERE	;JA->RETURN
W1	LD HL,3A00H	;MERKER
	LD VGB,HL	;MERKZEIGER
	LD A,0
	LD ANF,A
	CALL PV
	DEFB 23H
	DEFM '*DATEI:\'
	DEFB 0
	LD E,2
	LD L,7
	CALL COL
	LD HL,(DNA)
	CALL HLA	;NAME AUSGABE
	LD E,7
	LD L,0
	CALL COL
	CALL PV
	DEFB 23H
	DEFM '\'
	DEFW 0A19H
	DEFM '*SORTIEREN NACH:'
	DEFW 0A19H
	DEFB 0
A1	CALL OUT	;FELDEINGABE
	LD A,(DRM)
	CP 1		;ALLE?
	JR NZ KES	;NEIN->KES
	CALL PV		;JA->A1
	DEFB 23H
	DEFB 19H
	DEFB 0
	LD A,0
	LD ANF,A
	JR A1
KES	LD HL,3A04H
	LD E,M
	INC HL
	LD D,M
	INC HL
	LD NF1,DE	;LAENGE
	LD E,M
	INC HL
	LD D,M
	LD VSU,DE	;VORSUMME
A7	LD A,(MOM)
	LD 05EH,A	;5EH=MODULNUM.
	LD L,A
	LD A,1
	CALL PV
	DEFB 26H
	LD A,E
	LD 62H,A	;62H=STEUERBYTE
	CALL LOE
	CALL PV
	DEFB 23H
	DEFM '*DATEI:\'
	DEFB 0
	LD E,1
	LD L,7
	CALL COL
	LD HL,(DNA)
	CALL HLA	;NAME AUSGABE
	LD E,3
	LD L,7
	CALL COL
	CALL PV
	DEFB 23H
	DEFM '\'
	DEFW 0A19H
	DEFB 0
	LD HL,(DA)	;DATENANFANG
	LD DE,(SL)	;SATZLAENGE
	AND A
	SBC HL,DE
	LD DK,HL	;POINTER
	LD HL,0		;NULL IN
	PUSH HL		;STACK
	PUSH HL		;STACK
	LD HL,2A00H	;VEKTORBEGINN
	PUSH HL		;IN STACK
	LD HL,(NS)
	AND A
	ADC HL,HL
	LD DE,29FEH
	AND A
	ADC HL,DE	;VEKTORENDE
	PUSH HL		;IN STACK
QUIK	POP HL		;INDEX HOLEN
	LD VJR,HL	;INDEX RECHTS
	LD VIR,HL
	EX DE,HL
	POP HL		;INDEX HOLEN
	LD VJL,HL	;INDEX LINKS
	LD VIL,HL
	AND A
	ADC HL,DE	;BEIDE=NULL?
	JP Z EOF	;JA->EOF
	CALL RIGHT	;RECHTSLAUF
	LD HL,(VIL)
	LD DE,(VZ)	;ZEIGER AM
	AND A		;LINKEN RAND?
	SBC HL,DE
	JR Z Q1		;JA->Q1
	LD HL,(VIL)
	INC HL
	INC HL
	LD DE,(VZ)	;ZEIGER FAST
	AND A		;AM LINKEN
	SBC HL,DE	;RAND?
	JR Z Q1		;JA->Q1
	LD HL,(VIR)
	LD DE,(VZ)	;ZEIGER AM
	AND A		;RECHTEN
	SBC HL,DE	;RAND?
	JR Z Q2		;JA->Q2
	LD HL,(VIR)	;ZEIGER FAST
	DEC HL		;AM RECHTEN
	DEC HL		;RAND?
	LD DE,(VZ)
	AND A
	SBC HL,DE
	JR Z Q2		;JA->Q2
	LD HL,(VZ)
	INC HL
	INC HL
	PUSH HL		;NEUES IL
	LD HL,(VIR)	;ALTER RECHTER
	PUSH HL		;RAND BLEIBT
Q2	LD HL,(VIL)	;ALTER LINKER
	PUSH HL		;RAND BLEIBT
	LD HL,(VZ)
	DEC HL
	DEC HL
	PUSH HL		;NEUER RECHTER
Q3	JR QUIK		;RAND->SORTIE
Q1	LD DE,(VIR)	;ZEIGER AM
	LD HL,(VZ)	;RECHTEN RAND?
	AND A
	SBC HL,DE
	JP Z QUIK	;JA->QUIK
	LD DE,(VIR)	;ZEIGER FAST
	DEC DE		;AM RECHTEN
	DEC DE		;RAND?
	LD HL,(VZ)
	AND A
	SBC HL,DE
	JP Z QUIK	;JA->QUIK
	LD HL,(VZ)
	INC HL
	INC HL
	PUSH HL		;NEUER RECHTER
	LD HL,(VIR)	;RAND
	PUSH HL
	JR Q3		;->QUIK
EOF	CALL PV
	DEFB 23H
	DEFW 0A19H
	DEFM '*BEENDET!'
	DEFW 000AH
	JP MERE
LINK	CALL MSA	;MODULSCHALTER
	LD HL,(VJL)	;LINKER INDEX
	LD VZ,HL
	LD DE,(VJR)	;GLEICH RECHTER
	AND A
	SBC HL,DE	;INDEX?
	RET Z		;JA->RETURN
	LD HL,(VJL)	;NEIN
	LD C,M		;BC=SATZNUMMER
	INC HL
	LD B,M
	LD HL,(DK)	;POINTER
	LD DE,(SL)	;SATZLAENGE
L2	AND A
	ADC HL,DE
	PUSH DE
	PUSH BC
	PUSH AF
	PUSH HL
	LD A,M
	CP 0DEH		;UEBERTRAG?
	JR NZ L4	;NEIN->L4
	POP HL
	CALL MOD	;SCHALTEN
	LD HL,4000H	;POINTER
	PUSH HL
L4	POP HL
	POP AF
	POP BC
	POP DE
	CPI
	DEC HL		;WEITER
	JP PE L2	;JA->L2
	LD DE,(VSU)	;VORSUMME
	AND A
	ADC HL,DE
	LD NS1,HL	;DATENPOINTER
	LD BC,(NF1)
	LD DE,3A00H	;VERGLEICH-
L5	PUSH BC		;POINTER
	LD A,(DE)	;ZEICHEN
	CP M		;GLEICH?
	JR Z L6		;JA->L6
	JR C L7		;KELINER->L7
	POP BC
L8	LD HL,(VJL)	;NEUER INDEX
	INC HL
	INC HL
	LD VJL,HL
	JR LINK
L6	POP BC		;NOCH ZEICHEN?
	CPI
	INC DE
	JP PE L5	;JA->L5
	JR L8		;NEUER INDEX
L7	POP BC		;LINKER
	LD HL,(VJL)	;UND RECHTER
	LD E,M		;INDEX TAUSCH
	INC HL
	LD D,M
	PUSH DE
	LD HL,(VJR)
	LD E,M
	INC HL
	LD D,M
	LD HL,(VJL)
	LD M,E
	INC HL
	LD M,D
	POP DE
	LD HL,(VJR)
	LD M,E
	INC HL
	LD M,D
	JP R8
RIGHT	LD HL,(VJL)	;LINKER INDEX
	LD E,M
	INC HL
	LD D,M		;SATZNUMMER
	PUSH DE
	POP BC
	LD HL,(DK)	;DATENPOINTER
	LD DE,(SL)	;SATZLAENGE
S1	AND A
	ADC HL,DE
	PUSH BC
	PUSH DE
	PUSH AF
	PUSH HL
	LD A,M
	CP 0DEH		;UEBERTRAG?
	JR NZ S3	;NEIN->S3
	POP HL
	CALL MOD	;SCHALTEN
	LD HL,4000H	;NEUER POINTER
	PUSH HL
S3	POP HL
	POP AF
	POP DE
	POP BC
	CPI		;WEITER
	DEC HL		;ADDIEREN?
	JP PE S1	;JA->S1
	LD DE,(VSU)	;VORSUMME
	AND A
	ADC HL,DE	;HL=POINTER
	LD DE,3A00H	;MERKER
	LD BC,(NF1)	;LAENGE
	LDIR		;IN MERKER
S4	CALL MSA	;MODULSCHALTER
	LD HL,(VJR)	;RECHTER
	LD VZ,HL	;UND LINKER
	LD DE,(VJL)	;INDEX GLEICH?
	AND A
	SBC HL,DE
	RET Z		;JA->RETURN
	LD HL,(VJR)
	LD C,M		;RECHTE
	INC HL		;SATZNUMMER
	LD B,M
	LD HL,(DK)	;DATENPOINTER
	LD DE,(SL)	;SATZLAENGE
R2	AND A
	ADC HL,DE
	PUSH BC
	PUSH DE
	PUSH AF
	PUSH HL
	LD A,M
	CP 0DEH		;UEBERTRAG?
	JR NZ R4	;NEIN->R4
	POP HL
	CALL MOD	;SCHALTEN
	LD HL,4000H	;NEUER POINTER
	PUSH HL
R4	POP HL
	POP AF
	POP DE
	POP BC
	CPI		;WEITER
	DEC HL		;ADDIEREN?
	JP PE R2	;JA->R2
	LD DE,(VSU)	;VORSUMME
	AND A
	ADC HL,DE
	LD NS1,HL	;POINTER
	LD DE,3A00H	;VERGLEICHS-
	LD BC,(NF1)	;LAENGE
R5	PUSH BC
	LD A,(DE)	;ZEICHEN
	CP M		;GLEICH?
	JR Z R6		;JA->R6
	JR NC R7	;GROESSER->R7
	POP BC
R8	LD HL,(VJR)	;NEUER RECHTER
	DEC HL
	DEC HL		;INDEX
	LD VJR,HL
	LD VZ,HL	;ZEIGER=IR
	JP S4
R6	POP BC		;NOCH ZEICHEN?
	CPI
	INC DE
	JP PE R5	;JA->R5
	JR R8		;NEIN->R8
R7	POP BC
	LD HL,(VJL)
	LD E,M		;INDEXTAUSCH
	INC HL
	LD D,M
	PUSH DE
	LD HL,(VJR)
	LD E,M
	INC HL
	LD D,M
	LD HL,(VJL)
	LD M,E
	INC HL
	LD M,D
	POP DE
	LD HL,(VJR)
	LD M,E
	INC HL
	LD M,D
	JP L8
	;UPTABELLE
LOE1	EQU 200H
LOE	EQU 20DH
COL	EQU 23DH	;COLOR
MOD	EQU 247H	;MODUL HOCHSCH.
MOR	EQU 2AAH	;MOD. RUNTERSCH.
MOD0	EQU 30EH	;GRUNDMODUL AUS
MOD8	EQU 31BH	;GRUNDMODUL EIN
KALT	EQU 33EH	;KALTSTART
MOLO	EQU 3BEH	;MODUL LOESCHEN
MEN	EQU 3DFH	;MENU
VK	EQU 42DH	;VERZEICHNIS
MERE	EQU 509H	;RETURN->MENU
DS	EQU 516H	;DATEISUCHE
ERR	EQU 53DH	;FEHLERAUSGABE
DIH	EQU 56FH	;DEZ IN HEX
HID	EQU 596H	;HEX IN DEZ
OLB	EQU 5AAH	;BLOCKAUSWAHL
VET	EQU 5E9H	;VEKTOR REFRESH
PIN	EQU 5FAH	;INPUT
HOS	EQU 66FH	;HOCHSCHALTEN
RUS	EQU 67DH	;RUNTERSCHALTEN
PAGE	EQU 68BH	;FENSTERREAKTION
MSA	EQU 69BH	;MODULUMSCHALTEN
HLA	EQU 6B9H	;(HL)AUSGABE
KOR	EQU 6C3H	;KORREKTUR
DEL	EQU 951H	;LOESCHEN
ERO	EQU 0A80H	;DATEISUCHE
SAN	EQU 0AABH	;SATZANZAHLTEST
OUT	EQU 0AD1H	;FELDNAME TEST
KOZE	EQU 0B9CH	;KOPFZEILE
WEND	EQU 0C06H	;FENSTERREAKTION
NOF	EQU 16A0H
	;LISTENENDE
ےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےے