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 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ