title Test der schnelle Sortierroutine fuer Z-80 name ('TEST') ; Testprogramm fuer schnelle Sortierroutine ; Copyleft W.Cirsovius OS equ 0000h BDOS equ 0005h TPATOP equ BDOS+1 .conout equ 2 .string equ 9 null equ 00h lf equ 0ah cr equ 0dh eot equ '$' eox equ -1 ext sort,stadr,enadr ld sp,(TPATOP) ; Stack laden ; ld hl,ST ld de,VORHER call MPrint ; Ausgabe der unsortierten Daten ; ld hl,ST ld (stadr),hl ; Zeiger auf das erste Zeichen im ersten Text ld hl,EN ld (enadr),hl ; Zeiger hinter die NULL des letzten Textes call sort ; Sortieren ; ld a,-1 ld (EN),a ; ld hl,ST ld de,NACHHER call MPrint ; Ausgabe der sortierten Daten ; ld de,ENDE call string ; Abschluss ausgeben jp OS ; ; Text ausgeben ; EIN Register HL zeigt auf Textanfang ; Register DE zeigt auf Meldung ; MPrint: call string ; Meldung ausgeben Print: ld a,(hl) ; Zeichen laden inc hl or a ; Test ob Ende ret m ; Totales Ende jr z,NL ; Textende call conout ; Zeichen ausgeben jr Print NL: ld a,cr call conout ; Neue Zeile ausgeben ld a,lf call conout jr Print ; Naechster Text ; ; Meldung auf Konsole ausgeben ; EIN Reg DE haelt Adresse ; string: push hl ld c,.string call BDOS ; Meldung ausgeben pop hl ret ; ; Zeichen auf Konsole ausgeben ; EIN Akku haelt Zeichen ; conout: push hl ld e,a ; Zeichen umpacken ld c,.conout call BDOS ; Ausgabe pop hl ret dseg VORHER: db '################### NICHT SORTIERT ###################' db cr,lf,eot NACHHER: db '###################### SORTIERT ######################' db cr,lf,eot ENDE: db '######################################################' db cr,lf,eot ; ; --------------------------------------------- ; db null ; NICHT AENDERN ; ; ++++++++++ Zu sortierender Text ++++++++++ ; ST: db 'Kurzer Name',null db 'Nun ein langer Name',null db 'Aber',null db 'Nicht immer sinnvoll',null db 'Bloss ein Test',null ; ; ++++++++++++++++++++++++++++++++++++++++++ ; EN: db eox ; NICHT AENDERN ; ; --------------------------------------------- ; end