DisassembleComMakeString:
	lea	8(a0),a2
	move.l	$a0(a6),a1
	move.l	$b4(a6),d2
DisassembleComMakeString1:
	cmp.l	a1,d2
	beq.s	DisassembleComMakeString5
	move.b	(a1)+,d0
	beq.s	DisassembleComMakeString5
	cmp.b	#'s',d0
	beq.s	DisassembleComMakeString2
	cmp.b	#'c',d0
	beq.s	DisassembleComMakeString4
	cmp.b	#$40,d0
	bls.s	DisassembleComMakeString1a
	and.b	#$5f,d0
DisassembleComMakeString1a:
	move.b	d0,(a0)+
	bra.s	DisassembleComMakeString1
DisassembleComMakeString2:			;.s
	move.w	$a4(a6),d0
	moveq	#'L',d1
	cmp.w	#$0020,d0
	beq.s	DisassembleComMakeString3
	moveq	#'W',d1
	cmp.w	#$0010,d0
	beq.s	DisassembleComMakeString3
	moveq	#'B',d1
DisassembleComMakeString3:
	move.b	d1,(a0)+
	bra.s	DisassembleComMakeString5
DisassembleComMakeString4:		;Cond codes
	lea	Assemblerconditions(pc),a1
	move.w	$b2(a6),d0
	and.w	#$000f,d0
	move.w	d0,d1
	add.w	d0,d0
	add.w	d1,d0
	lea	0(a1,d0.w),a1
	bra.s	DisassembleComMakeString1

DisassembleComMakeString5:
	move.b	#$20,(a0)+
	cmp.l	a0,a2
	bne.s	DisassembleComMakeString5
	move.w	$a6(a6),d0
	move.l	$a8(a6),d1
	bsr.s	DisassembleComMakeString6
	move.w	$ac(a6),d0
	beq	DisassembleComMakeString7
	move.b	#',',(a0)+
	move.l	$ae(a6),d1
DisassembleComMakeString6:
	cmp.w	#$0001,d0
	beq	DisassembleComMakeString8
	cmp.w	#$0002,d0
	beq	DisassembleComMakeString9
	cmp.w	#$0004,d0
	beq	DisassembleComMakeString10
	cmp.w	#$0008,d0
	beq	DisassembleComMakeString11
	cmp.w	#$0010,d0
	beq	DisassembleComMakeString12
	cmp.w	#$0020,d0
	beq	DisassembleComMakeString13
	cmp.w	#$0040,d0
	beq	DisassembleComMakeString14
	cmp.w	#$0080,d0
	beq	DisassembleComMakeString17
	cmp.w	#$0100,d0
	beq	DisassembleComMakeString18
	cmp.w	#$0200,d0
	beq	DisassembleComMakeString19
	cmp.w	#$0400,d0
	beq	DisassembleComMakeString20
	cmp.w	#$0800,d0
	beq	DisassembleComMakeString23
	cmp.w	#$1000,d0
	beq	DisassembleComMakeString26
	cmp.w	#$2000,d0
	beq	DisassembleComMakeString28
	cmp.w	#$4000,d0
	beq	DisassembleComMakeString29
	cmp.w	#$8000,d0
	beq	DisassembleComMakeString30
	cmp.w	#$8002,d0
	beq	DisassembleComMakeString31
	cmp.w	#$8003,d0
	beq	DisassembleComMakeString32
DisassembleComMakeString7:
	clr.b	(a0)
	rts
DisassembleComMakeString8:		;Dn
	move.b	#'D',(a0)+
	swap	d1
	move.w	d1,d0
	bsr	DisassembleComMakeStringNib
	bra.s	DisassembleComMakeString7

DisassembleComMakeString9:		;An
	move.b	#'A',(a0)+
	swap	d1
	move.w	d1,d0
	bsr	DisassembleComMakeStringNib
	bra.s	DisassembleComMakeString7
	
DisassembleComMakeString10:		;(An)
	move.b	#'(',(a0)+
	move.b	#'A',(a0)+
	swap	d1
	move.w	d1,d0
	bsr	DisassembleComMakeStringNib
	move.b	#')',(a0)+
	bra.s	DisassembleComMakeString7

DisassembleComMakeString11:		;(An)+
	move.b	#'(',(a0)+
	move.b	#'A',(a0)+
	swap	d1
	move.w	d1,d0
	bsr	DisassembleComMakeStringNib
	move.b	#')',(a0)+
	move.b	#'+',(a0)+
	bra.s	DisassembleComMakeString7

DisassembleComMakeString12:		;-(An)
	move.b	#'-',(a0)+
	move.b	#'(',(a0)+
	move.b	#'A',(a0)+
	swap	d1
	move.w	d1,d0
	bsr	DisassembleComMakeStringNib
	move.b	#')',(a0)+
	bra.s	DisassembleComMakeString7

DisassembleComMakeString13:		;d(An)
	move.b	#'$',(a0)+
	move.w	d1,d0
	bsr	DisassembleComMakeStringWord
	move.b	#'(',(a0)+
	move.b	#'A',(a0)+
	swap	d1
	move.w	d1,d0
	bsr	DisassembleComMakeStringNib
	move.b	#')',(a0)+
	bra	DisassembleComMakeString7
	
DisassembleComMakeString14:		;d(An,Xi)
	move.b	#'$',(a0)+
	move.w	d1,d0
	bsr	DisassembleComMakeStringByte
	move.b	#'(',(a0)+
	move.b	#'A',(a0)+
	move.l	d1,d0
	swap	d0
	bsr	DisassembleComMakeStringNib
	move.b	#',',(a0)+
	moveq	#'A',d0
	tst.w	d1
	bmi.s	DisassembleComMakeString15
	moveq	#'D',d0
DisassembleComMakeString15:
	move.b	d0,(a0)+
	rol.w	#4,d1
	move.w	d1,d0
	and.w	#$0007,d0
	bsr	DisassembleComMakeStringNib
	move.b	#'.',(a0)+
	moveq	#'L',d0
	tst.w	d1
	bmi.s	DisassembleComMakeString16
	moveq	#'W',d0
DisassembleComMakeString16:
	move.b	d0,(a0)+
	move.b	#')',(a0)+
	bra	DisassembleComMakeString7
	
DisassembleComMakeString17:			;Abs.W
	move.b	#'$',(a0)+
	move.l	d1,d0
	bsr	DisassembleComMakeStringLong
	move.b	#'.',(a0)+
	move.b	#'W',(a0)+
	bra	DisassembleComMakeString7

DisassembleComMakeString18:			;Abs.L
	move.b	#'$',(a0)+
	move.l	d1,d0
	bsr	DisassembleComMakeStringLong
	bra	DisassembleComMakeString7

DisassembleComMakeString19:			;d(PC)
	move.b	#'$',(a0)+
	ext.l	d1
	add.l	$98(a6),d1
	addq.l	#2,d1
	move.l	d1,d0
	bsr	DisassembleComMakeStringLong
	move.b	#'(',(a0)+
	move.b	#'P',(a0)+
	move.b	#'C',(a0)+
	move.b	#')',(a0)+
	bra	DisassembleComMakeString7

DisassembleComMakeString20:			;d(PC,Xi)
	move.b	#'$',(a0)+
	move.l	d1,d0
	ext.w	d0
	ext.l	d0
	add.l	$98(a6),d0
	addq.l	#2,d0
	bsr	DisassembleComMakeStringLong
	move.b	#'(',(a0)+
	move.b	#'P',(a0)+
	move.b	#'C',(a0)+
	move.b	#',',(a0)+
	moveq	#'A',d0
	tst.w	d1
	bmi.s	DisassembleComMakeString21
	moveq	#'D',d0
DisassembleComMakeString21:
	move.b	d0,(a0)+
	rol.w	#4,d1
	move.w	d1,d0
	and.w	#$0007,d0
	bsr	DisassembleComMakeStringNib
	move.b	#'.',(a0)+
	moveq	#'L',d0
	tst.w	d1
	bmi.s	DisassembleComMakeString22
	moveq	#'W',d0
DisassembleComMakeString22:
	move.b	d0,(a0)+
	move.b	#')',(a0)+
	bra	DisassembleComMakeString7

DisassembleComMakeString23:			;Immediate
	move.b	#'#',(a0)+
	move.b	#'$',(a0)+
	move.w	$a4(a6),d0
	cmp.w	#$0005,d0
	beq.s	DisassembleComMakeString24
	cmp.w	#$0008,d0
	beq.s	DisassembleComMakeString24
	cmp.w	#$0010,d0
	beq.s	DisassembleComMakeString25
	move.l	d1,d0
	bsr	DisassembleComMakeStringLong
	bra	DisassembleComMakeString7
DisassembleComMakeString24:
	move.b	d1,d0
	bsr	DisassembleComMakeStringByte
	bra	DisassembleComMakeString7
DisassembleComMakeString25:
	move.w	d1,d0
	bsr	DisassembleComMakeStringWord
	bra	DisassembleComMakeString7

DisassembleComMakeString26:			;Quick
	move.b	#'#',(a0)+
	move.b	#'$',(a0)+
	move.w	$b2(a6),d0
	cmp.w	#$0004,d0
	beq.s	DisassembleComMakeString27
	move.l	d1,d0
	bsr	DisassembleComMakeStringLong
	bra	DisassembleComMakeString7
DisassembleComMakeString27:
	move.b	d1,d0
	bsr	DisassembleComMakeStringNib
	bra	DisassembleComMakeString7

DisassembleComMakeString28:			;CCR
	move.b	#'C',(a0)+
	move.b	#'C',(a0)+
	move.b	#'R',(a0)+
	bra	DisassembleComMakeString7

DisassembleComMakeString29:			;SR
	move.b	#'S',(a0)+
	move.b	#'R',(a0)+
	bra	DisassembleComMakeString7

DisassembleComMakeString30:			;PC
	move.b	#'$',(a0)+
	move.l	d1,d0
	add.l	$98(a6),d0
	addq.l	#2,d0
	bsr	DisassembleComMakeStringLong
	bra	DisassembleComMakeString7

DisassembleComMakeString31:			;USP
	move.b	#'U',(a0)+
	move.b	#'S',(a0)+
	move.b	#'P',(a0)+
	bra	DisassembleComMakeString7

DisassembleComMakeString32:			;All rea
	moveq	#$00,d3
	swap	d1
	cmp.w	#$0010,$ac(a6)			;Dest = -(An)
	bne.s	DisassembleComMakeString34
	moveq	#$0f,d0
DisassembleComMakeString33:
	lsr.w	#1,d1
	roxl.w	#1,d2
	dbf	d0,DisassembleComMakeString33
	move.w	d2,d1
DisassembleComMakeString34:
	move.b	#$ff,d2
DisassembleComMakeString35:
	moveq	#$02,d4
DisassembleComMakeString36:
	cmp.b	#$07,d2
	beq.s	DisassembleComMakeString38
	addq.b	#1,d2
	ror.w	#1,d1
	bpl.s	DisassembleComMakeString35
	tst.b	d4
	bne.s	DisassembleComMakeString37
	subq.l	#3,a0
	move.b	#'-',(a0)+
	move.b	#'D',(a0)+
	move.b	d2,d0
	bsr.s	DisassembleComMakeStringNib
	bra.s	DisassembleComMakeString36
DisassembleComMakeString37:
	subq.b	#1,d4
	tst.b	d3
	beq.s	DisassembleComMakeString37a
	move.b	#'/',(a0)+
DisassembleComMakeString37a:
	addq.b	#1,d3
	move.b	#'D',(a0)+
	move.b	d2,d0
	bsr.s	DisassembleComMakeStringNib
	bra.s	DisassembleComMakeString36
DisassembleComMakeString38:
	move.b	#$ff,d2
DisassembleComMakeString39:
	moveq	#$02,d4
DisassembleComMakeString40:		
	cmp.b	#$07,d2
	beq	DisassembleComMakeString7
	addq.b	#1,d2
	ror.w	#1,d1
	bpl.s	DisassembleComMakeString39
	tst.b	d4
	bne.s	DisassembleComMakeString41
	subq.l	#3,a0
	move.b	#'-',(a0)+
	move.b	#'A',(a0)+
	move.b	d2,d0
	bsr.s	DisassembleComMakeStringNib
	bra.s	DisassembleComMakeString40
DisassembleComMakeString41:
	subq.b	#1,d4
	tst.b	d3
	beq.s	DisassembleComMakeString41a
	move.b	#'/',(a0)+
DisassembleComMakeString41a:
	addq.b	#1,d3
	move.b	#'A',(a0)+
	move.b	d2,d0
	bsr.s	DisassembleComMakeStringNib
	bra.s	DisassembleComMakeString40

DisassembleComMakeStringNib:
	move.l	d1,-(a7)
	move.b	d0,d1
	and.b	#$000f,d1
	cmp.b	#$000a,d1
	bcs.s	DisassembleComMakeStringNib1
	addq.b	#7,d1
DisassembleComMakeStringNib1:
	add.b	#$30,d1
	move.b	d1,(a0)+
	move.l	(a7)+,d1
	rts

DisassembleComMakeStringByte:
	move.l	d1,-(a7)
	move.b	d0,d1
	lsr.b	#4,d0
	bsr.s	DisassembleComMakeStringNib
	move.b	d1,d0
	bsr.s	DisassembleComMakeStringNib
	move.l	(a7)+,d1
	rts

DisassembleComMakeStringWord:
	move.l	d1,-(a7)
	move.w	d0,d1
	lsr.w	#8,d0
	bsr.s	DisassembleComMakeStringByte
	move.w	d1,d0
	bsr.s	DisassembleComMakeStringByte
	move.l	(a7)+,d1
	rts

DisassembleComMakeStringLong:
	move.l	d1,-(a7)
	move.l	d0,d1
	swap	d0
	bsr.s	DisassembleComMakeStringWord
	move.l	d1,d0
	bsr.s	DisassembleComMakeStringWord
	move.l	(a7)+,d1
	rts

