
qsortl		macro
		ifnd	\1int
		no_long
		end
		endc
		movem.l	d2/d3/a2,-(sp)
		addrin	\1,a2
		varin	\2,d2
		jsr	qsortlcd(pc)
		movem.l	(sp)+,d2/d3/a2
		ifnd	Qsortid
		bra	qsortovr
qsortlcd
302$		move.l	#0,d1		;count
		move.l	#0,d3		;flag
		move.l	a2,a0
		subq.l	#1,d2
		beq	303$
300$		move.l	(a0)+,d0
		cmp.l	(a0),d0
		ble	301$
		move.l	(a0),-(a0)
		add.l	#4,a0
		move.l	d0,(a0)
		addq.l	#1,d3		;flag
301$		addq.l	#1,d1
		cmp.l	d2,d1
		bne	300$
		cmp.l	#1,d3
		bge	302$
303$		rts
Qsortid		set	1
qsortovr
		endc
		endm

qsortw		macro
		ifnd	\1short
		no_short
		end
		endc
		movem.l	d2/d3/a2,-(sp)
		addrin	\1,a2
		varin	\2,d2
		jsr	qsortwcd(pc)
		movem.l	(sp)+,d2/d3/a2
		ifnd	Qsortwid
		bra	qsortwovr
qsortwcd
302$		move.l	#0,d1		;count
		move.l	#0,d3		;flag
		move.l	a2,a0
		subq.l	#1,d2
		beq	303$
300$		move.w	(a0)+,d0
		cmp.w	(a0),d0
		ble	301$
		move.w	(a0),-(a0)
		addq.l	#2,a0
		move.w	d0,(a0)
		addq.l	#1,d3		;flag
301$		addq.l	#1,d1
		cmp.l	d2,d1
		bne	300$
		cmp.l	#1,d3
		bge	302$
303$		rts
Qsortwid		set	1
qsortwovr
		endc
		endm

qsortb		macro
		ifnd	\1char
		no_char
		end
		endc
		movem.l	d2/d3/a2,-(sp)
		addrin	\1,a2
		varin	\2,d2
		jsr	qsortbcd(pc)
		movem.l	(sp)+,d2/d3/a2
		ifnd	Qsortbid
		bra	qsortbovr
qsortbcd
302$		move.l	#0,d1		;count
		move.l	#0,d3		;flag
		move.l	a2,a0
		subq.l	#1,d2
		beq	303$
300$		move.b	(a0)+,d0
		cmp.b	(a0),d0
		ble	301$
		move.b	(a0),-(a0)
		add.l	#1,a0
		move.b	d0,(a0)
		addq.l	#1,d3		;flag
301$		addq.l	#1,d1
		cmp.l	d2,d1
		bne	300$
		cmp.l	#1,d3
		bge	302$
303$		rts
Qsortbid		set	1
qsortbovr
		endc
		endm