title Routine zum BINARY SORT fuer CP/M name ('BINARY') maclib base80 ; File : BINARY.MAC ; ===== Externe Referenzen ==== ext curline,ass1,ass2,ass3,cmpxdm ext ptr.1,ptr.2,ptr.3,ptr.4,ptr.5 entry BINARY ; Sortieren der Elemente ; Routine fuehrt den Binary Sort Algorithmus aus ; basierend auf einem Artikel in MC 1'81 ; BINARY: ld hl,2 ; Index setzen ld (ptr.1),hl next.1: ld hl,1 ; Werte setzen ld (ptr.2),hl ld hl,(ptr.1) dec hl ld (ptr.3),hl inc hl call ass1 ; Element laden bin.1: ld hl,(ptr.2) ld de,(ptr.3) push hl push de inc de or a sbc hl,de ; Zeiger testen pop de pop hl jr nc,bin.3 add hl,de srl h ; .. durch zwei dividieren rr l ld (ptr.4),hl push hl call cmpxdm pop hl jr c,bin.. jr nz,bin.2 bin..: inc hl ld (ptr.2),hl ; Neuen Zeiger setzen jr bin.1 bin.2: dec hl ld (ptr.3),hl jr bin.1 bin.3: ld hl,(ptr.1) dec hl ld (ptr.5),hl ; Schleife laden jr bin.loop ; Durchlauf beginnen next.2: ld hl,(ptr.5) call ass3 ; Platz schaffen ld hl,(ptr.5) dec hl ld (ptr.5),hl bin.loop: ld de,(ptr.2) or a sbc hl,de jr nc,next.2 ex de,hl call ass2 ; Leerstelle fuellen ld hl,(ptr.1) inc hl ; Durchlauf ld (ptr.1),hl ld de,(curline) inc de or a sbc hl,de jr c,next.1 ret end