File:  [Isaki's NoNo m68k/m88k emulator] / nono / exp / fmovemc.has
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:05:36 2026 UTC (3 months ago) by root
Branches: MAIN, Isaki
CVS tags: v027, v026, v025, v024, v023, v022, HEAD
nono 1.2.0

;
; nono
; Copyright (C) 2020 nono project
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions
; are met:
; 1. Redistributions of source code must retain the above copyright
;    notice, this list of conditions and the following disclaimer.
; 2. Redistributions in binary form must reproduce the above copyright
;    notice, this list of conditions and the following disclaimer in the
;    documentation and/or other materials provided with the distribution.
;
; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
; IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
; AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
; SUCH DAMAGE.

; How to compile:
;  > has fmovemc.has
;  > hlk fmovemc.o si_util.o

	.xref	hexstr_long
	.include doscall.mac
	.include iocscall.mac
	.list
	.cpu	68030

PRINT	.macro	msg
	pea.l	msg(pc)
	DOS	_PRINT
	addq.l	#4,sp
	.endm

	.text
	.even
start:
	bra	start2

test_fmovem_dn_to____:
	PRINT	msg_fmovem_dn_to____
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,d0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $8000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_an_to____:
	PRINT	msg_fmovem_an_to____
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $8000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anin_to____:
	PRINT	msg_fmovem_anin_to____
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f210, $8000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to____:
	PRINT	msg_fmovem_anpi_to____
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f218, $8000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to____:
	PRINT	msg_fmovem_anpd_to____
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f220, $8000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to____:
	PRINT	msg_fmovem_imm_to____
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $8000
	.dc.l $55555555
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to___I:
	PRINT	msg_fmovem_dn_to___I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,d0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l d0,fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_an_to___I:
	PRINT	msg_fmovem_an_to___I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l a0,fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anin_to___I:
	PRINT	msg_fmovem_anin_to___I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to___I:
	PRINT	msg_fmovem_anpi_to___I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to___I:
	PRINT	msg_fmovem_anpd_to___I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to___I:
	PRINT	msg_fmovem_imm_to___I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$55555555,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to__S_:
	PRINT	msg_fmovem_dn_to__S_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,d0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l d0,fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_an_to__S_:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_an_to__S_
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $8800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_anin_to__S_:
	PRINT	msg_fmovem_anin_to__S_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to__S_:
	PRINT	msg_fmovem_anpi_to__S_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to__S_:
	PRINT	msg_fmovem_anpd_to__S_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to__S_:
	PRINT	msg_fmovem_imm_to__S_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to__SI:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_dn_to__SI
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $8c00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_an_to__SI:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_an_to__SI
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $8c00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_anin_to__SI:
	PRINT	msg_fmovem_anin_to__SI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to__SI:
	PRINT	msg_fmovem_anpi_to__SI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+8(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to__SI:
	PRINT	msg_fmovem_anpd_to__SI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea+8(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to__SI:
	PRINT	msg_fmovem_imm_to__SI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,#$aaaaaaaa,fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to_C__:
	PRINT	msg_fmovem_dn_to_C__
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,d0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l d0,fpcr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_an_to_C__:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_an_to_C__
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $9000
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_anin_to_C__:
	PRINT	msg_fmovem_anin_to_C__
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpcr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to_C__:
	PRINT	msg_fmovem_anpi_to_C__
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpcr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to_C__:
	PRINT	msg_fmovem_anpd_to_C__
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpcr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to_C__:
	PRINT	msg_fmovem_imm_to_C__
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,fpcr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to_C_I:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_dn_to_C_I
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $9400
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_an_to_C_I:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_an_to_C_I
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $9400
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_anin_to_C_I:
	PRINT	msg_fmovem_anin_to_C_I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpcr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to_C_I:
	PRINT	msg_fmovem_anpi_to_C_I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpcr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+8(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to_C_I:
	PRINT	msg_fmovem_anpd_to_C_I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea+8(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpcr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to_C_I:
	PRINT	msg_fmovem_imm_to_C_I
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,#$aaaaaaaa,fpcr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	moveq.l	#0,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$aaaaaaaa,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to_CS_:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_dn_to_CS_
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $9800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_an_to_CS_:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_an_to_CS_
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $9800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_anin_to_CS_:
	PRINT	msg_fmovem_anin_to_CS_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpcr/fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to_CS_:
	PRINT	msg_fmovem_anpi_to_CS_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpcr/fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+8(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to_CS_:
	PRINT	msg_fmovem_anpd_to_CS_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	lea.l	workarea+8(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpcr/fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to_CS_:
	PRINT	msg_fmovem_imm_to_CS_
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,#$aaaaaaaa,fpcr/fpsr
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	suba.l	a1,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_dn_to_CSI:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_dn_to_CSI
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $9c00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_an_to_CSI:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_an_to_CSI
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $9c00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_anin_to_CSI:
	PRINT	msg_fmovem_anin_to_CSI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	move.l	#$33333333,workarea+8
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0),fpcr/fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$33333333,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpi_to_CSI:
	PRINT	msg_fmovem_anpi_to_CSI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	move.l	#$33333333,workarea+8
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l (a0)+,fpcr/fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+12(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$33333333,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_anpd_to_CSI:
	PRINT	msg_fmovem_anpd_to_CSI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	move.l	#$55555555,workarea
	move.l	#$aaaaaaaa,workarea+4
	move.l	#$33333333,workarea+8
	lea.l	workarea+12(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l -(a0),fpcr/fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$33333333,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_imm_to_CSI:
	PRINT	msg_fmovem_imm_to_CSI
	fmove.l	#0,fpcr
	fmove.l	#0,fpsr
	fmove.l	#0,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l #$55555555,#$aaaaaaaa,#$33333333,fpcr/fpsr/fpiar
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	fmove.l	fpcr,d0
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_cr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpsr,d0
	move.l	#$0aaaaaa8,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_sr(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	fmove.l	fpiar,a0
	move.l	#$33333333,a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_ir(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_____to_dn:
	PRINT	msg_fmovem_____to_dn
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $a000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	move.l	#$55555555,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_____to_an:
	PRINT	msg_fmovem_____to_an
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $a000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	movea.l	#$55555555,a1
	cmp.l	a1,a0
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_____to_anin:
	PRINT	msg_fmovem_____to_anin
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f210, $a000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$55555555,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_____to_anpi:
	PRINT	msg_fmovem_____to_anpi
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f218, $a000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$55555555,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_____to_anpd:
	PRINT	msg_fmovem_____to_anpd
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f220, $a000
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$55555555,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_____to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_____to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $a000
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem___I_to_dn:
	PRINT	msg_fmovem___I_to_dn
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpiar,d0
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	move.l	#$55555555,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem___I_to_an:
	PRINT	msg_fmovem___I_to_an
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpiar,a0
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	movea.l	#$55555555,a1
	cmp.l	a1,a0
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem___I_to_anin:
	PRINT	msg_fmovem___I_to_anin
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpiar,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$55555555,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem___I_to_anpi:
	PRINT	msg_fmovem___I_to_anpi
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpiar,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$55555555,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem___I_to_anpd:
	PRINT	msg_fmovem___I_to_anpd
	fmove.l	#$00000000,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$55555555,fpiar
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpiar,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$55555555,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem___I_to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem___I_to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $a400
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem__S__to_dn:
	PRINT	msg_fmovem__S__to_dn
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$00000000,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr,d0
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	move.l	#$05555550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__S__to_an:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem__S__to_an
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $a800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem__S__to_anin:
	PRINT	msg_fmovem__S__to_anin
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$05555550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__S__to_anpi:
	PRINT	msg_fmovem__S__to_anpi
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$05555550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__S__to_anpd:
	PRINT	msg_fmovem__S__to_anpd
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$05555550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__S__to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem__S__to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $a800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem__SI_to_dn:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem__SI_to_dn
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $ac00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem__SI_to_an:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem__SI_to_an
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $ac00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem__SI_to_anin:
	PRINT	msg_fmovem__SI_to_anin
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$aaaaaaaa,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr/fpiar,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$05555550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$aaaaaaaa,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__SI_to_anpi:
	PRINT	msg_fmovem__SI_to_anpi
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$aaaaaaaa,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr/fpiar,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+8(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$05555550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$aaaaaaaa,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__SI_to_anpd:
	PRINT	msg_fmovem__SI_to_anpd
	fmove.l	#$00000000,fpcr
	fmove.l	#$55555555,fpsr
	fmove.l	#$aaaaaaaa,fpiar
	lea.l	workarea+8(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpsr/fpiar,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$05555550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$aaaaaaaa,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem__SI_to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem__SI_to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $ac00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_C___to_dn:
	PRINT	msg_fmovem_C___to_dn
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$00000000,fpiar
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr,d0
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	move.l	#$00005550,d1
	cmp.l	d1,d0
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C___to_an:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_C___to_an
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $b000
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_C___to_anin:
	PRINT	msg_fmovem_C___to_anin
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C___to_anpi:
	PRINT	msg_fmovem_C___to_anpi
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+4(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C___to_anpd:
	PRINT	msg_fmovem_C___to_anpd
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea+4(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C___to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_C___to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $b000
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_C_I_to_dn:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_C_I_to_dn
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $b400
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_C_I_to_an:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_C_I_to_an
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $b400
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_C_I_to_anin:
	PRINT	msg_fmovem_C_I_to_anin
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$aaaaaaaa,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpiar,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$aaaaaaaa,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C_I_to_anpi:
	PRINT	msg_fmovem_C_I_to_anpi
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$aaaaaaaa,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpiar,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+8(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$aaaaaaaa,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C_I_to_anpd:
	PRINT	msg_fmovem_C_I_to_anpd
	fmove.l	#$55555555,fpcr
	fmove.l	#$00000000,fpsr
	fmove.l	#$aaaaaaaa,fpiar
	lea.l	workarea+8(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpiar,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$aaaaaaaa,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_C_I_to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_C_I_to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $b400
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_CS__to_dn:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_CS__to_dn
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $b800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_CS__to_an:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_CS__to_an
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $b800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_CS__to_anin:
	PRINT	msg_fmovem_CS__to_anin
	fmove.l	#$55555555,fpcr
	fmove.l	#$aaaaaaaa,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpsr,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$0aaaaaa8,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_CS__to_anpi:
	PRINT	msg_fmovem_CS__to_anpi
	fmove.l	#$55555555,fpcr
	fmove.l	#$aaaaaaaa,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpsr,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+8(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$0aaaaaa8,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_CS__to_anpd:
	PRINT	msg_fmovem_CS__to_anpd
	fmove.l	#$55555555,fpcr
	fmove.l	#$aaaaaaaa,fpsr
	fmove.l	#$00000000,fpiar
	lea.l	workarea+8(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpsr,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$0aaaaaa8,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_CS__to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_CS__to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $b800
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_CSI_to_dn:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_CSI_to_dn
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f200, $bc00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_CSI_to_an:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_CSI_to_an
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f208, $bc00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

test_fmovem_CSI_to_anin:
	PRINT	msg_fmovem_CSI_to_anin
	fmove.l	#$55555555,fpcr
	fmove.l	#$aaaaaaaa,fpsr
	fmove.l	#$33333333,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpsr/fpiar,(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$0aaaaaa8,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$33333333,d1
	cmp.l	workarea+8,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+12,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_CSI_to_anpi:
	PRINT	msg_fmovem_CSI_to_anpi
	fmove.l	#$55555555,fpcr
	fmove.l	#$aaaaaaaa,fpsr
	fmove.l	#$33333333,fpiar
	lea.l	workarea(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpsr/fpiar,(a0)+
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l workarea+12(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$0aaaaaa8,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$33333333,d1
	cmp.l	workarea+8,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+12,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_CSI_to_anpd:
	PRINT	msg_fmovem_CSI_to_anpd
	fmove.l	#$55555555,fpcr
	fmove.l	#$aaaaaaaa,fpsr
	fmove.l	#$33333333,fpiar
	lea.l	workarea+12(pc),a0
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	fmovem.l fpcr/fpsr/fpiar,-(a0)
@@:
	bsr	restore_fline
	tst.l	d7
	beq	@f
	PRINT	msg_fail_trap
	rts
@@:
	lea.l	workarea(pc),a1
	cmpa.l	a1,a0
	beq	@f
	pea.l	msg_fail_addr(pc)
	move.l	a1,-(sp)
	move.l	a0,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$00005550,d1
	cmp.l	workarea+0,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+4,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$0aaaaaa8,d1
	cmp.l	workarea+4,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+8,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	move.l	#$33333333,d1
	cmp.l	workarea+8,d1
	beq	@f
	pea.l	msg_fail_dst(pc)
	move.l	d1,-(sp)
	move.l	workarea+12,-(sp)
	bsr	result
	lea.l	12(sp),sp
@@:
	tst.l	d7
	bne	@f
	PRINT	msg_ok
@@:
	rts

test_fmovem_CSI_to_imm:
	tst.b	is_hard(pc)
	bne		@f
	rts
@@:
	PRINT	msg_fmovem_CSI_to_imm
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.w	$f23c, $bc00
@@:
	bsr	restore_fline
	tst.l	d7
	bne	@f
	PRINT	msg_fail_notrap
	rts
@@:
	PRINT	msg_oktrap
	rts

start2:
	clr.l	-(sp)
	DOS	_SUPER
	movem.l	d7/a3-a4,-(sp)
	; rough argument check
	cmpi.b	#4,(a2)+	; strlen(arg)>=4 ?
	bcs	@f
	cmpi.l	#$68617264,(a2)	; "hard"
	seq.b	is_hard
@@:
	tst.b	is_hard(pc)
	beq		disp_easy
disp_hard:
	PRINT	msg_hard
	bra		@f
disp_easy:
	PRINT	msg_easy
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_dn_to____
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_an_to____
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_anin_to____
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_anpi_to____
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_anpd_to____
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_imm_to____
@@:
	bsr	test_fmovem_dn_to___I
	bsr	test_fmovem_an_to___I
	bsr	test_fmovem_anin_to___I
	bsr	test_fmovem_anpi_to___I
	bsr	test_fmovem_anpd_to___I
	bsr	test_fmovem_imm_to___I
	bsr	test_fmovem_dn_to__S_
	bsr	test_fmovem_an_to__S_
	bsr	test_fmovem_anin_to__S_
	bsr	test_fmovem_anpi_to__S_
	bsr	test_fmovem_anpd_to__S_
	bsr	test_fmovem_imm_to__S_
	bsr	test_fmovem_dn_to__SI
	bsr	test_fmovem_an_to__SI
	bsr	test_fmovem_anin_to__SI
	bsr	test_fmovem_anpi_to__SI
	bsr	test_fmovem_anpd_to__SI
	bsr	test_fmovem_imm_to__SI
	bsr	test_fmovem_dn_to_C__
	bsr	test_fmovem_an_to_C__
	bsr	test_fmovem_anin_to_C__
	bsr	test_fmovem_anpi_to_C__
	bsr	test_fmovem_anpd_to_C__
	bsr	test_fmovem_imm_to_C__
	bsr	test_fmovem_dn_to_C_I
	bsr	test_fmovem_an_to_C_I
	bsr	test_fmovem_anin_to_C_I
	bsr	test_fmovem_anpi_to_C_I
	bsr	test_fmovem_anpd_to_C_I
	bsr	test_fmovem_imm_to_C_I
	bsr	test_fmovem_dn_to_CS_
	bsr	test_fmovem_an_to_CS_
	bsr	test_fmovem_anin_to_CS_
	bsr	test_fmovem_anpi_to_CS_
	bsr	test_fmovem_anpd_to_CS_
	bsr	test_fmovem_imm_to_CS_
	bsr	test_fmovem_dn_to_CSI
	bsr	test_fmovem_an_to_CSI
	bsr	test_fmovem_anin_to_CSI
	bsr	test_fmovem_anpi_to_CSI
	bsr	test_fmovem_anpd_to_CSI
	bsr	test_fmovem_imm_to_CSI
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_____to_dn
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_____to_an
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_____to_anin
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_____to_anpi
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_____to_anpd
@@:
	tst.b	is_hard(pc)
	beq		@f
	bsr	test_fmovem_____to_imm
@@:
	bsr	test_fmovem___I_to_dn
	bsr	test_fmovem___I_to_an
	bsr	test_fmovem___I_to_anin
	bsr	test_fmovem___I_to_anpi
	bsr	test_fmovem___I_to_anpd
	bsr	test_fmovem___I_to_imm
	bsr	test_fmovem__S__to_dn
	bsr	test_fmovem__S__to_an
	bsr	test_fmovem__S__to_anin
	bsr	test_fmovem__S__to_anpi
	bsr	test_fmovem__S__to_anpd
	bsr	test_fmovem__S__to_imm
	bsr	test_fmovem__SI_to_dn
	bsr	test_fmovem__SI_to_an
	bsr	test_fmovem__SI_to_anin
	bsr	test_fmovem__SI_to_anpi
	bsr	test_fmovem__SI_to_anpd
	bsr	test_fmovem__SI_to_imm
	bsr	test_fmovem_C___to_dn
	bsr	test_fmovem_C___to_an
	bsr	test_fmovem_C___to_anin
	bsr	test_fmovem_C___to_anpi
	bsr	test_fmovem_C___to_anpd
	bsr	test_fmovem_C___to_imm
	bsr	test_fmovem_C_I_to_dn
	bsr	test_fmovem_C_I_to_an
	bsr	test_fmovem_C_I_to_anin
	bsr	test_fmovem_C_I_to_anpi
	bsr	test_fmovem_C_I_to_anpd
	bsr	test_fmovem_C_I_to_imm
	bsr	test_fmovem_CS__to_dn
	bsr	test_fmovem_CS__to_an
	bsr	test_fmovem_CS__to_anin
	bsr	test_fmovem_CS__to_anpi
	bsr	test_fmovem_CS__to_anpd
	bsr	test_fmovem_CS__to_imm
	bsr	test_fmovem_CSI_to_dn
	bsr	test_fmovem_CSI_to_an
	bsr	test_fmovem_CSI_to_anin
	bsr	test_fmovem_CSI_to_anpi
	bsr	test_fmovem_CSI_to_anpd
	bsr	test_fmovem_CSI_to_imm
	movem.l	(sp)+,d7/a3-a4
	DOS	_EXIT

; 結果表示
; スタックには、メッセージ、期待値、実際の値の順で積む。
result:
	link	a6,#0
	movem.l	d0/a0,-(sp)

	move.l	8+8(a6),-(sp)
	DOS	_PRINT
	addq.l	#4,sp

	move.l	8+4(a6),d0
	lea.l	buf(pc),a0
	bsr	hexstr_long
	PRINT	buf
	PRINT	msg_but

	move.l	8+0(a6),d0
	lea.l	buf(pc),a0
	bsr	hexstr_long
	PRINT	buf
	PRINT	msg_crlf

	addq.l	#1,d7	; errcnt
	movem.l	(sp)+,d0/a0
	unlk	a6
	rts

; Fライン例外をテスト用のものに差し替える。
; 変更前のアドレスを a4 に格納する。
; a1 は破壊する。
set_fline:
	movem.l	d0-d1,-(sp)
	moveq.l	#$b,d1
	lea.l	fline_handler(pc),a1
	IOCS	_B_INTVCS
	movea.l	d0,a4
	movem.l	(sp)+,d0-d1
	rts

; Fライン例外を元に戻す。
; a1 は破壊する。
restore_fline:
	movem.l	d0-d1,-(sp)
	moveq.l	#$b,d1
	movea.l	a4,a1
	IOCS	_B_INTVCS
	movem.l	(sp)+,d0-d1
	rts

; Fライン例外ハンドラ
; a3 に戻りアドレスをセットしてあること
; d7 を 1 にして帰る
fline_handler:
	moveq.l	#1,d7
	move.l	a3,2(sp)
	rte

msg_hard:	.dc.b	"hard mode",$d,$a,0
msg_easy:	.dc.b	"easy mode",$d,$a,0
msg_oktrap:	.dc.b	$9,"ok(trap)",$d,$a,0, 0,0
msg_fail_notrap:	.dc.b	$9,"FAIL: trap expected but not occured",$d,$a,0
msg_fail_trap:	.dc.b	$9,"FAIL: unexpected trap occured",$d,$a,0

msg_ok:		.dc.b	$9,"ok",$d,$a,0
msg_fail_cr:	.dc.b	$9,"FAIL: fpcr expects ",0
msg_fail_sr:	.dc.b	$9,"FAIL: fpsr expects ",0
msg_fail_ir:	.dc.b	$9,"FAIL: fpiar expects ",0
msg_fail_addr:	.dc.b	$9,"FAIL: an expects ",0
msg_fail_dst:	.dc.b	$9,"FAIL: dst expects ",0
msg_but:	.dc.b	" but ",0
msg_crlf:	.dc.b	$d,$a,0


msg_fmovem_dn_to____:	.dc.b	"fmovem.l d0,nofpc",0
msg_fmovem_an_to____:	.dc.b	"fmovem.l a0,nofpc",0
msg_fmovem_anin_to____:	.dc.b	"fmovem.l (a0),nofpc",0
msg_fmovem_anpi_to____:	.dc.b	"fmovem.l (a0)+,nofpc",0
msg_fmovem_anpd_to____:	.dc.b	"fmovem.l -(a0),nofpc",0
msg_fmovem_imm_to____:	.dc.b	"fmovem.l #imm,nofpc",0
msg_fmovem_dn_to___I:	.dc.b	"fmovem.l d0,fpiar",0
msg_fmovem_an_to___I:	.dc.b	"fmovem.l a0,fpiar",0
msg_fmovem_anin_to___I:	.dc.b	"fmovem.l (a0),fpiar",0
msg_fmovem_anpi_to___I:	.dc.b	"fmovem.l (a0)+,fpiar",0
msg_fmovem_anpd_to___I:	.dc.b	"fmovem.l -(a0),fpiar",0
msg_fmovem_imm_to___I:	.dc.b	"fmovem.l #imm,fpiar",0
msg_fmovem_dn_to__S_:	.dc.b	"fmovem.l d0,fpsr",0
msg_fmovem_an_to__S_:	.dc.b	"fmovem.l a0,fpsr",0
msg_fmovem_anin_to__S_:	.dc.b	"fmovem.l (a0),fpsr",0
msg_fmovem_anpi_to__S_:	.dc.b	"fmovem.l (a0)+,fpsr",0
msg_fmovem_anpd_to__S_:	.dc.b	"fmovem.l -(a0),fpsr",0
msg_fmovem_imm_to__S_:	.dc.b	"fmovem.l #imm,fpsr",0
msg_fmovem_dn_to__SI:	.dc.b	"fmovem.l d0,fpsr/fpiar",0
msg_fmovem_an_to__SI:	.dc.b	"fmovem.l a0,fpsr/fpiar",0
msg_fmovem_anin_to__SI:	.dc.b	"fmovem.l (a0),fpsr/fpiar",0
msg_fmovem_anpi_to__SI:	.dc.b	"fmovem.l (a0)+,fpsr/fpiar",0
msg_fmovem_anpd_to__SI:	.dc.b	"fmovem.l -(a0),fpsr/fpiar",0
msg_fmovem_imm_to__SI:	.dc.b	"fmovem.l #imm/#imm,fpsr/fpiar",0
msg_fmovem_dn_to_C__:	.dc.b	"fmovem.l d0,fpcr",0
msg_fmovem_an_to_C__:	.dc.b	"fmovem.l a0,fpcr",0
msg_fmovem_anin_to_C__:	.dc.b	"fmovem.l (a0),fpcr",0
msg_fmovem_anpi_to_C__:	.dc.b	"fmovem.l (a0)+,fpcr",0
msg_fmovem_anpd_to_C__:	.dc.b	"fmovem.l -(a0),fpcr",0
msg_fmovem_imm_to_C__:	.dc.b	"fmovem.l #imm,fpcr",0
msg_fmovem_dn_to_C_I:	.dc.b	"fmovem.l d0,fpcr/fpiar",0
msg_fmovem_an_to_C_I:	.dc.b	"fmovem.l a0,fpcr/fpiar",0
msg_fmovem_anin_to_C_I:	.dc.b	"fmovem.l (a0),fpcr/fpiar",0
msg_fmovem_anpi_to_C_I:	.dc.b	"fmovem.l (a0)+,fpcr/fpiar",0
msg_fmovem_anpd_to_C_I:	.dc.b	"fmovem.l -(a0),fpcr/fpiar",0
msg_fmovem_imm_to_C_I:	.dc.b	"fmovem.l #imm/#imm,fpcr/fpiar",0
msg_fmovem_dn_to_CS_:	.dc.b	"fmovem.l d0,fpcr/fpsr",0
msg_fmovem_an_to_CS_:	.dc.b	"fmovem.l a0,fpcr/fpsr",0
msg_fmovem_anin_to_CS_:	.dc.b	"fmovem.l (a0),fpcr/fpsr",0
msg_fmovem_anpi_to_CS_:	.dc.b	"fmovem.l (a0)+,fpcr/fpsr",0
msg_fmovem_anpd_to_CS_:	.dc.b	"fmovem.l -(a0),fpcr/fpsr",0
msg_fmovem_imm_to_CS_:	.dc.b	"fmovem.l #imm/#imm,fpcr/fpsr",0
msg_fmovem_dn_to_CSI:	.dc.b	"fmovem.l d0,fpcr/fpsr/fpiar",0
msg_fmovem_an_to_CSI:	.dc.b	"fmovem.l a0,fpcr/fpsr/fpiar",0
msg_fmovem_anin_to_CSI:	.dc.b	"fmovem.l (a0),fpcr/fpsr/fpiar",0
msg_fmovem_anpi_to_CSI:	.dc.b	"fmovem.l (a0)+,fpcr/fpsr/fpiar",0
msg_fmovem_anpd_to_CSI:	.dc.b	"fmovem.l -(a0),fpcr/fpsr/fpiar",0
msg_fmovem_imm_to_CSI:	.dc.b	"fmovem.l #imm/#imm/#imm,fpcr/fpsr/fpiar",0
msg_fmovem_____to_dn:	.dc.b	"fmovem.l nofpc,d0",0
msg_fmovem_____to_an:	.dc.b	"fmovem.l nofpc,a0",0
msg_fmovem_____to_anin:	.dc.b	"fmovem.l nofpc,(a0)",0
msg_fmovem_____to_anpi:	.dc.b	"fmovem.l nofpc,(a0)+",0
msg_fmovem_____to_anpd:	.dc.b	"fmovem.l nofpc,-(a0)",0
msg_fmovem_____to_imm:	.dc.b	"fmovem.l nofpc,#imm",0
msg_fmovem___I_to_dn:	.dc.b	"fmovem.l fpiar,d0",0
msg_fmovem___I_to_an:	.dc.b	"fmovem.l fpiar,a0",0
msg_fmovem___I_to_anin:	.dc.b	"fmovem.l fpiar,(a0)",0
msg_fmovem___I_to_anpi:	.dc.b	"fmovem.l fpiar,(a0)+",0
msg_fmovem___I_to_anpd:	.dc.b	"fmovem.l fpiar,-(a0)",0
msg_fmovem___I_to_imm:	.dc.b	"fmovem.l fpiar,#imm",0
msg_fmovem__S__to_dn:	.dc.b	"fmovem.l fpsr,d0",0
msg_fmovem__S__to_an:	.dc.b	"fmovem.l fpsr,a0",0
msg_fmovem__S__to_anin:	.dc.b	"fmovem.l fpsr,(a0)",0
msg_fmovem__S__to_anpi:	.dc.b	"fmovem.l fpsr,(a0)+",0
msg_fmovem__S__to_anpd:	.dc.b	"fmovem.l fpsr,-(a0)",0
msg_fmovem__S__to_imm:	.dc.b	"fmovem.l fpsr,#imm",0
msg_fmovem__SI_to_dn:	.dc.b	"fmovem.l fpsr/fpiar,d0",0
msg_fmovem__SI_to_an:	.dc.b	"fmovem.l fpsr/fpiar,a0",0
msg_fmovem__SI_to_anin:	.dc.b	"fmovem.l fpsr/fpiar,(a0)",0
msg_fmovem__SI_to_anpi:	.dc.b	"fmovem.l fpsr/fpiar,(a0)+",0
msg_fmovem__SI_to_anpd:	.dc.b	"fmovem.l fpsr/fpiar,-(a0)",0
msg_fmovem__SI_to_imm:	.dc.b	"fmovem.l fpsr/fpiar,#imm/#imm",0
msg_fmovem_C___to_dn:	.dc.b	"fmovem.l fpcr,d0",0
msg_fmovem_C___to_an:	.dc.b	"fmovem.l fpcr,a0",0
msg_fmovem_C___to_anin:	.dc.b	"fmovem.l fpcr,(a0)",0
msg_fmovem_C___to_anpi:	.dc.b	"fmovem.l fpcr,(a0)+",0
msg_fmovem_C___to_anpd:	.dc.b	"fmovem.l fpcr,-(a0)",0
msg_fmovem_C___to_imm:	.dc.b	"fmovem.l fpcr,#imm",0
msg_fmovem_C_I_to_dn:	.dc.b	"fmovem.l fpcr/fpiar,d0",0
msg_fmovem_C_I_to_an:	.dc.b	"fmovem.l fpcr/fpiar,a0",0
msg_fmovem_C_I_to_anin:	.dc.b	"fmovem.l fpcr/fpiar,(a0)",0
msg_fmovem_C_I_to_anpi:	.dc.b	"fmovem.l fpcr/fpiar,(a0)+",0
msg_fmovem_C_I_to_anpd:	.dc.b	"fmovem.l fpcr/fpiar,-(a0)",0
msg_fmovem_C_I_to_imm:	.dc.b	"fmovem.l fpcr/fpiar,#imm/#imm",0
msg_fmovem_CS__to_dn:	.dc.b	"fmovem.l fpcr/fpsr,d0",0
msg_fmovem_CS__to_an:	.dc.b	"fmovem.l fpcr/fpsr,a0",0
msg_fmovem_CS__to_anin:	.dc.b	"fmovem.l fpcr/fpsr,(a0)",0
msg_fmovem_CS__to_anpi:	.dc.b	"fmovem.l fpcr/fpsr,(a0)+",0
msg_fmovem_CS__to_anpd:	.dc.b	"fmovem.l fpcr/fpsr,-(a0)",0
msg_fmovem_CS__to_imm:	.dc.b	"fmovem.l fpcr/fpsr,#imm/#imm",0
msg_fmovem_CSI_to_dn:	.dc.b	"fmovem.l fpcr/fpsr/fpiar,d0",0
msg_fmovem_CSI_to_an:	.dc.b	"fmovem.l fpcr/fpsr/fpiar,a0",0
msg_fmovem_CSI_to_anin:	.dc.b	"fmovem.l fpcr/fpsr/fpiar,(a0)",0
msg_fmovem_CSI_to_anpi:	.dc.b	"fmovem.l fpcr/fpsr/fpiar,(a0)+",0
msg_fmovem_CSI_to_anpd:	.dc.b	"fmovem.l fpcr/fpsr/fpiar,-(a0)",0
msg_fmovem_CSI_to_imm:	.dc.b	"fmovem.l fpcr/fpsr/fpiar,#imm/#imm/#imm",0

	.data
	.even
workarea:	.ds.b	24
buf:		.ds.b	20
is_hard:	.ds.b	1

	.end	start

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.