home *** CD-ROM | disk | FTP | other *** search
-
- * Maxon C++ Library:
- * Modul "binsearch"
- * Jens Gelhar 18.03.93
-
- xdef _bsearch,bsearch__PCvPCvUiUiPFiPCvPCvp
-
- xref uintmult
-
- _bsearch:
- bsearch__PCvPCvUiUiPFiPCvPCvp:
- ; Stack-Parameter: 0 Zeiger auf Key
- ; 4 Vector
- ; 8 Anzahl
- ; 12 Elementgröße
- ; 16 Vergleichfunktion
- movem.l d1-d3/a0-a2/a6,-(a7)
- move.l 7*4+4+0(a7),a2 ; Key
- move.l 7*4+4+4(a7),a0 ; Vector
- move.l 7*4+4+8(a7),d3 ; Anzahl
- move.l 7*4+4+12(a7),d2 ; Größe
- move.l 7*4+4+16(a7),a6 ; Function
- cmp.l #2,d2
- bls.b Loop
- addq.l #1,d2
- and.w #$FFFE,d2 ; Alignment
- Loop tst.l d3
- beq.b nix ; nicht gefunden
- move.l d3,d1
- lsr.l #1,d1
- move.l d2,d0
- jsr uintmult
- add.l a0,d0
- move.l d0,a1
- movem.l d1/a0/a1,-(a7)
- move.l d0,-(a7)
- move.l a2,-(a7)
- jsr (a6)
- addq.l #8,a7
- movem.l (a7)+,d1/a0/a1
- tst.l d0
- beq.b jau
- bmi.b links
- ; rechts von a1 suchen:
- move.l a1,a0
- add.l d2,a0
- move.l d3,d1
- lsr.l #1,d1
- addq.l #1,d1
- sub.l d1,d3
- bra.b Loop
- links ; links von a1 suchen:
- lsr.l #1,d3
- bra.b Loop
- jau ; gefunden:
- move.l a1,d0
- bra.b end
- nix moveq #0,d0
- end movem.l (a7)+,d1-d3/a0-a2/a6
- rts
-
- end
-
-