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

;
; nono
; Copyright (C) 2025 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.

; FMOVE.? FPn,<ea> で例外の起きる <ea> を確認する。
; あと不当命令のところで命令を処理してしまわないことを確認する。

; How to compile
;  > has fmoveto.has
;  > hlk fmoveto.o

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

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

	.text
	.even


start:
	bsr	parse_arg
	clr.l	-(sp)
	DOS	_SUPER

	fmovem.x	fp0-fp7,-(sp)
	fmovem.l	fpcr/fpsr/fpiar,-(sp)

	moveq.l	#0,d0
	fmove.s	d0,fp0		; FP0 = +0.0
	fmove.l	d0,fpcr		; Init round prec, round mode.
	move.l	d0,failed	; Init failed count.

@@:
tst.b	is_fmove(pc)
beq	@f
PRINT	msg_head_fmove(pc)
PRINT	msg_head_guide7(pc)
	bsr	test_fmove_d
	bsr	test_fmove_a
	bsr	test_fmove_m
	bsr	test_fmove_mi
	bsr	test_fmove_md
	bsr	test_fmove_r
	bsr	test_fmove_x
	bsr	test_fmove_p
	bsr	test_fmove_i
	bsr	test_fmove_o
@@:
tst.b	is_fgen(pc)
beq	@f
PRINT	msg_head_fgen(pc)
PRINT	msg_head_guide7(pc)
	bsr	test_fgen_d
	bsr	test_fgen_a
	bsr	test_fgen_m
	bsr	test_fgen_mi
	bsr	test_fgen_md
	bsr	test_fgen_r
	bsr	test_fgen_x
	bsr	test_fgen_p
	bsr	test_fgen_i
	bsr	test_fgen_o
@@:
tst.b	is_fscale(pc)
beq	@f
PRINT	msg_head_fscale(pc)
PRINT	msg_head_guide7(pc)
	bsr	test_fscale_d
	bsr	test_fscale_a
	bsr	test_fscale_m
	bsr	test_fscale_mi
	bsr	test_fscale_md
	bsr	test_fscale_r
	bsr	test_fscale_x
	bsr	test_fscale_p
	bsr	test_fscale_i
	bsr	test_fscale_o
@@:
tst.b	is_fscc(pc)
beq	@f
PRINT	msg_head_fscc(pc)
	bsr	test_fscc_d
	bsr	test_fscc_m
	bsr	test_fscc_mi
	bsr	test_fscc_md
	bsr	test_fscc_r
	bsr	test_fscc_x
	bsr	test_fscc_o
@@:
tst.b	is_fmovem_rm(pc)
beq	@f
PRINT	msg_head_fmovem_rm(pc)
	bsr	test_fmovem_rm_d
	bsr	test_fmovem_rm_a
	bsr	test_fmovem_rm_m
	bsr	test_fmovem_rm_mi
	bsr	test_fmovem_rm_md
	bsr	test_fmovem_rm_r
	bsr	test_fmovem_rm_x
	bsr	test_fmovem_rm_p
	bsr	test_fmovem_rm_i
	bsr	test_fmovem_rm_o
@@:
tst.b	is_fmovem_mr(pc)
beq	@f
PRINT	msg_head_fmovem_mr(pc)
	bsr	test_fmovem_mr_d
	bsr	test_fmovem_mr_a
	bsr	test_fmovem_mr_m
	bsr	test_fmovem_mr_mi
	bsr	test_fmovem_mr_md
	bsr	test_fmovem_mr_r
	bsr	test_fmovem_mr_x
	bsr	test_fmovem_mr_p
	bsr	test_fmovem_mr_i
	bsr	test_fmovem_mr_o
@@:
tst.b	is_fmovem_cm(pc)
beq	@f
PRINT	msg_head_fmovem_cm(pc)
PRINT	msg_head_guide4(pc)
	bsr	test_fmovem_cm_d
	bsr	test_fmovem_cm_a
	bsr	test_fmovem_cm_m
	bsr	test_fmovem_cm_mi
	bsr	test_fmovem_cm_md
	bsr	test_fmovem_cm_r
	bsr	test_fmovem_cm_x
	bsr	test_fmovem_cm_p
	bsr	test_fmovem_cm_i
	bsr	test_fmovem_cm_o
@@:
tst.b	is_fmovem_mc(pc)
beq	@f
PRINT	msg_head_fmovem_mc(pc)
PRINT	msg_head_guide4(pc)
	bsr	test_fmovem_mc_d
	bsr	test_fmovem_mc_a
	bsr	test_fmovem_mc_m
	bsr	test_fmovem_mc_mi
	bsr	test_fmovem_mc_md
	bsr	test_fmovem_mc_r
	bsr	test_fmovem_mc_x
	bsr	test_fmovem_mc_p
	bsr	test_fmovem_mc_i
	bsr	test_fmovem_mc_o
@@:
	tst.l	failed(pc)
	beq	@f
	PRINT	msg_failed(pc)
@@:
	fmovem.l	(sp)+,fpcr/fpsr/fpiar
	fmovem.x	(sp)+,fp0-fp7
	DOS	_EXIT

test_fmove_d:
	lea.l	result(pc),a2
	; FMOVE.B FPn,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2067800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2067000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2066000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2066400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,Dn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2067400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,Dn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2066800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,Dn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2066c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_a:
	lea.l	result(pc),a2
	; FMOVE.B FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2087800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2087000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2086000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2086400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2087400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2086800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2086c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_m:
	lea.l	result(pc),a2
	; FMOVE.B FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2107800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2107000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2106000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2106400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2107400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2106800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2106c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_mi:
	lea.l	result(pc),a2
	; FMOVE.B FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2187800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2187000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2186000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2186400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2187400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2186800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2186c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_md:
	lea.l	result(pc),a2
	; FMOVE.B FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2207800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2207000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2206000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2206400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2207400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2206800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2206c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_r:
	lea.l	result(pc),a2
	; FMOVE.B FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2287800
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2287000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2286000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2286400
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2287400
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2286800
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2286c00
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_x:
	lea.l	result(pc),a2
	; FMOVE.B FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2307800
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2307000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2306000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2306400
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2307400
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2306800
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2306c00
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_p:
	lea.l	result(pc),a2
	; FMOVE.B FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a7800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a7000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a6000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a6400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a7400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a6800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23a6c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_i:
	lea.l	result(pc),a2
	; FMOVE.B FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c7800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c7000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c6000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c6400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c7400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c6800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c6c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fmove_o:
	lea.l	result(pc),a2
	; FMOVE.B FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d7800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.W FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d7000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.L FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d6000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.S FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d6400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.D FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d7400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.X FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d6800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVE.P FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d6c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_d:
	lea.l	result(pc),a2
	; Fgen.B Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2065800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2065000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2065400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_a:
	lea.l	result(pc),a2
	; Fgen.B An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2085800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2085000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2085400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_m:
	lea.l	result(pc),a2
	; Fgen.B (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2105800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2105000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2105400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_mi:
	lea.l	result(pc),a2
	; Fgen.B (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2185800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2185000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2185400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_md:
	lea.l	result(pc),a2
	; Fgen.B -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2205800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2205000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2205400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_r:
	lea.l	result(pc),a2
	; Fgen.B d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2285800
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2285000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284400
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2285400
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284800
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284c00
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_x:
	lea.l	result(pc),a2
	; Fgen.B d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2305800
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2305000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304400
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2305400
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304800
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304c00
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_p:
	lea.l	result(pc),a2
	; Fgen.B (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a5800
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a5000
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4000
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4400
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a5400
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4800
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4c00
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_i:
	lea.l	result(pc),a2
	; Fgen.B #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c5800
	.dc.w	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c5000
	.dc.w	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4000
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4400
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c5400
	.dc.l	0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4800
	.dc.l	0, 0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4c00
	.dc.l	0, 0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fgen_o:
	lea.l	result(pc),a2
	; Fgen.B 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d5800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.W 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d5000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.L 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.S 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.D 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d5400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.X 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; Fgen.P 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_d:
	lea.l	result(pc),a2
	; FSCALE.B Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2065826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2065026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S Dn,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2065426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2064c26
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_a:
	lea.l	result(pc),a2
	; FSCALE.B An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2085826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2085026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2085426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2084c26
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_m:
	lea.l	result(pc),a2
	; FSCALE.B (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2105826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2105026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2105426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P (An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2104c26
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_mi:
	lea.l	result(pc),a2
	; FSCALE.B (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2185826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2185026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2185426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P (An)+,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2184c26
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_md:
	lea.l	result(pc),a2
	; FSCALE.B -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2205826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2205026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2205426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P -(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2204c26
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_r:
	lea.l	result(pc),a2
	; FSCALE.B d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2285826
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2285026
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284026
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284426
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2285426
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284826
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P d16(An),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2284c26
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_x:
	lea.l	result(pc),a2
	; FSCALE.B d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2305826
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2305026
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304026
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304426
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2305426
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304826
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P d8(An,IX),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2304c26
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_p:
	lea.l	result(pc),a2
	; FSCALE.B (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a5826
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a5026
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4026
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4426
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a5426
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4826
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P (PC),FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a4c26
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_i:
	lea.l	result(pc),a2
	; FSCALE.B #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c5826
	.dc.w	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c5026
	.dc.w	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4026
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4426
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c5426
	.dc.l	0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4826
	.dc.l	0, 0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P #imm,FPn
	move.b	#$04,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c4c26
	.dc.l	0, 0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscale_o:
	lea.l	result(pc),a2
	; FSCALE.B 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d5826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.W 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d5026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.L 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4026
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.S 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.D 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d5426
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.X 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4826
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FSCALE.P 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d4c26
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#7-1,d0
	bsr	print_result
	rts

test_fscc_d:
	lea.l	result(pc),a2
	; FScc.B Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2460000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fscc_m:
	lea.l	result(pc),a2
	; FScc.B (An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2500000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fscc_mi:
	lea.l	result(pc),a2
	; FScc.B (An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2580000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fscc_md:
	lea.l	result(pc),a2
	; FScc.B -(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f2600000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fscc_r:
	lea.l	result(pc),a2
	; FScc.B d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2680000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fscc_x:
	lea.l	result(pc),a2
	; FScc.B d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f2700000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fscc_o:
	lea.l	result(pc),a2
	; FScc.B 075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f27d0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_d:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,Dn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f206f001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_a:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f208f001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_m:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f210f001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_mi:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,(An)+
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f218f001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_md:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f220e001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_r:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f228f001
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_x:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f230f001
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_p:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23af001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_i:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23cf001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_rm_o:
	lea.l	result(pc),a2
	; FMOVEM.X FPn,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23df001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_d:
	lea.l	result(pc),a2
	; FMOVEM.X Dn,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f206d001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_a:
	lea.l	result(pc),a2
	; FMOVEM.X An,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f208d001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_m:
	lea.l	result(pc),a2
	; FMOVEM.X (An),FPn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f210d001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_mi:
	lea.l	result(pc),a2
	; FMOVEM.X (An)+,FPn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f218d001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_md:
	lea.l	result(pc),a2
	; FMOVEM.X -(An),FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f220c001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_r:
	lea.l	result(pc),a2
	; FMOVEM.X d16(An),FPn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f228d001
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_x:
	lea.l	result(pc),a2
	; FMOVEM.X d8(An,IX),FPn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f230d001
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_p:
	lea.l	result(pc),a2
	; FMOVEM.X (PC),FPn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23ad001
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_i:
	lea.l	result(pc),a2
	; FMOVEM.X #imm,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23cd001
	.dc.l	0, 0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_mr_o:
	lea.l	result(pc),a2
	; FMOVEM.X 075,FPn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23dd001
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#1-1,d0
	bsr	print_result
	rts

test_fmovem_cm_d:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f206b000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f206a800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,Dn
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f206a400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,Dn
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f206ac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_a:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f208b000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f208a800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,An
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f208a400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,An
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f208ac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_m:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f210b000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f210a800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f210a400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f210ac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_mi:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f218b000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f218a800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f218a400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,(An)+
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f218ac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_md:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f220b000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f220a800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f220a400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,-(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	lea.l	@f,a3
	.dc.l	$f220ac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_r:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f228b000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f228a800
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f228a400
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,d16(An)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f228ac00
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_x:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f230b000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f230a800
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f230a400
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,d8(An,IX)
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea(pc),a0
	lea.l	@f,a3
	.dc.l	$f230ac00
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_p:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23ab000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23aa800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23aa400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,(PC)
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23aac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_i:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23cb000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23ca800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23ca400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,#imm
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23cac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_cm_o:
	lea.l	result(pc),a2
	; FMOVEM.L FPCR,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23db000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23da800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPIAR,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23da400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L FPSR/FPIAR,075
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23dac00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_d:
	lea.l	result(pc),a2
	; FMOVEM.L Dn,FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2069000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L Dn,FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2068800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L Dn,FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2068400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L Dn,FPSR/FPIAR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d6
	lea.l	@f,a3
	.dc.l	$f2068c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_d,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_a:
	lea.l	result(pc),a2
	; FMOVEM.L An,FPCR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2089000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L An,FPSR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2088800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L An,FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2088400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L An,FPSR/FPIAR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f2088c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_a,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_m:
	lea.l	result(pc),a2
	; FMOVEM.L (An),FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2109000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (An),FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2108800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (An),FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2108400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (An),FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2108c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_m,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_mi:
	lea.l	result(pc),a2
	; FMOVEM.L (An)+,FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2189000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (An)+,FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2188800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (An)+,FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2188400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (An)+,FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2188c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_mi,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_md:
	lea.l	result(pc),a2
	; FMOVEM.L -(An),FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2209000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L -(An),FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2208800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L -(An),FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2208400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L -(An),FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea(pc),a0
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	move.l	d7,(a0)+
	lea.l	@f,a3
	.dc.l	$f2208c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_md,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_r:
	lea.l	result(pc),a2
	; FMOVEM.L d16(An),FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2289000
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L d16(An),FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2288800
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L d16(An),FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2288400
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L d16(An),FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2288c00
	.dc.w	$0000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_r,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_x:
	lea.l	result(pc),a2
	; FMOVEM.L d8(An,IX),FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2309000
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L d8(An,IX),FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2308800
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L d8(An,IX),FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2308400
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L d8(An,IX),FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	moveq.l	#0,d4
	lea.l	workarea+12(pc),a0
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	move.l	d7,-(a0)
	lea.l	@f,a3
	.dc.l	$f2308c00
	.dc.w	$4000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_x,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_p:
	lea.l	result(pc),a2
	; FMOVEM.L (PC),FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a9000
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (PC),FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a8800
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (PC),FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a8400
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L (PC),FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	bra	@f
	.dc.l	0, 0, 0
@@:
	lea.l	@f,a3
	.dc.l	$f23a8c00
	.dc.w	-4-6-12
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_p,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_i:
	lea.l	result(pc),a2
	; FMOVEM.L #imm,FPCR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c9000
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L #imm,FPSR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c8800
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L #imm,FPIAR
	move.b	#$0b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c8400
	.dc.l	0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L #imm,FPSR/FPIAR
	move.b	#$00,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23c8c00
	.dc.l	0, 0
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_i,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts

test_fmovem_mc_o:
	lea.l	result(pc),a2
	; FMOVEM.L 075,FPCR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d9000
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L 075,FPSR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d8800
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L 075,FPIAR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d8400
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	; FMOVEM.L 075,FPSR/FPIAR
	move.b	#$1b,(a2)+
	fmovem.l	#$0b000000,fpsr
	bsr	set_fline
	moveq.l	#0,d7
	lea.l	@f,a3
	.dc.l	$f23d8c00
@@:
	bsr	restore_fline
	fmovem.l	fpsr,d0
	rol.l	#8,d0
	or.l	d7,d0
	move.b	d0,(a2)+

	lea.l	msg_test_o,a0
	moveq.l	#4-1,d0
	bsr	print_result
	rts


; 引数を処理する。
; 引数がなければヘルプを表示。
; 引数... があれば列挙されたテストを実行。
; "all" ならすべて実行。
parse_arg:
	movem.l	d0-d2/a0,-(sp)
	tst.b	(a2)
	beq	parse_done
parse_loop:
	adda.l	#1,a2
	move.b	(a2),d0			; '\0' なら終了
	beq	parse_done

	cmpi.b	#' ',d0
	beq	parse_loop
	cmpi.b	#$09,d0
	beq	parse_loop

	; "help"
	lea.l	cmd_help(pc),a0
	bsr match
	beq	print_help

	; "all"
	lea.l	cmd_all(pc),a0
	bsr	match
	bne	@f
	st.b	is_fmove
	st.b	is_fgen
	st.b	is_fscale
	st.b	is_fscc
	st.b	is_fmovem_rm
	st.b	is_fmovem_mr
	st.b	is_fmovem_cm
	st.b	is_fmovem_mc
	; 後は無視していいだろう。
	bra	parse_done
@@:
	; "fmove"
	lea.l	cmd_fmove(pc),a0
	bsr	match
	bne	@f
	st.b	is_fmove
	bra	parse_loop
@@:
	; "fgen"
	lea.l	cmd_fgen(pc),a0
	bsr	match
	bne	@f
	st.b	is_fgen
	bra	parse_loop
@@:
	; "fscale"
	lea.l	cmd_fscale(pc),a0
	bsr	match
	bne	@f
	st.b	is_fscale
	bra	parse_loop
@@:
	; "fscc"
	lea.l	cmd_fscc(pc),a0
	bsr	match
	bne	@f
	st.b	is_fscc
	bra	parse_loop
@@:
	; "fmovem_rm"
	lea.l	cmd_fmovem_rm(pc),a0
	bsr	match
	bne	@f
	st.b	is_fmovem_rm
	bra	parse_loop
@@:
	; "fmovem_mr"
	lea.l	cmd_fmovem_mr(pc),a0
	bsr	match
	bne	@f
	st.b	is_fmovem_mr
	bra	parse_loop
@@:
	; "fmovem_cm"
	lea.l	cmd_fmovem_cm(pc),a0
	bsr	match
	bne	@f
	st.b	is_fmovem_cm
	bra	parse_loop
@@:
	; "fmovem_mc"
	lea.l	cmd_fmovem_mc(pc),a0
	bsr	match
	bne	@f
	st.b	is_fmovem_mc
	bra	parse_loop
@@:

parse_done:
	; どのコマンドも実行になってなければヘルプを表示。
	moveq.l	#0,d0
	lea.l	is_tests(pc),a0
	moveq.l	#8-1,d1
@@:
	or.b	(a0)+,d0
	dbra	d1,@b
	beq	print_help

	movem.l	(sp)+,d0-d2/a0
	rts

; ヘルプを表示して終了。
print_help:
	PRINT	msg_help(pc)
	DOS	_EXIT

; (a2) からの単語が (a0) からのゼロ終端文字列と一致するか。
; 一致すれば d0 = 0 を返して (a2) は単語の最後の1文字を指すようにする。
; 一致しなければ d0 != 0 を返して (a2) は元の位置のまま。
match:
	movem.l	a1,-(sp)
	movea.l	a2,a1		; 戻り値用
match_loop:
	move.b	(a2)+,d0
	cmpi.b	#' ',d0		; d0 が ' ' なら '\0' に
	bne	@f
	moveq.l	#0,d0
	bra	match_main
@@:
	cmpi.b	#$09,d0		; d0 が TAB なら '\0' に
	bne	match_main
	moveq.l	#0,d0
match_main:
	; この状態で比較
	cmp.b	(a0)+,d0
	bne	not_match
	; '\0' 以外で一致したら次の文字へ。
	tst.b	d0
	bne	match_loop
	; '\0' で一致したので完了。
	suba.l	#1,a2
	moveq.l	#0,d0
	movem.l	(sp)+,a1
	rts

not_match:
	; 不一致なので a2 を元に戻す。
	movea.l	a1,a2
	moveq.l	#1,d0
	movem.l	(sp)+,a1
	rts

; 結果を1行表示する。
; A0 にテスト名、D0 に(テスト数-1)を入れて呼ぶこと。
;
; A2 からの result バッファは 2バイト1組で、
; +0 バイト目が期待値、bit4 がトラップの有無、bit3-0 が ConditionByte。
; +1 バイト目が結果値、構造は同じ。
;
; 期待値		結果
; (0<<4)|(x)	(0<<4)|(x)	pass:OK
; (0<<4)|(x)	(0<<4)|(y)	flag:FAIL
; (0<<4)|(x)	(1<<4)|(x)	trap:FAIL
; (0<<4)|(x)	(1<<4)|(y)	trap:FAIL
; (1<<4)|(x)	(0<<4)|(x)	pass:FAIL
; (1<<4)|(x)	(0<<4)|(y)	pass:FAIL
; (1<<4)|(x)	(1<<4)|(x)	trap:OK
; (1<<4)|(x)	(1<<4)|(y)	flag:FAIL
print_result:
	movem.l	d0-d4/a2,-(sp)
	move.l	d0,d4
	PRINT	(a0)
	lea.l	result(pc),a2
	moveq.l	#0,d0
	moveq.l	#0,d1
prloop:
	move.b	(a2)+,d0		; 期待値
	move.b	(a2)+,d1		; 結果
	; 先に failed のカウント
	cmp.b	d1,d0
	beq	@f
	addi.l	#1,failed
@@:
	bfextu	d0{#27:#1},d2	; 期待値のトラップビット
	bfextu	d1{#27:#1},d3	; 結果のトラップビット
	andi.b	#$0f,d0
	andi.b	#$0f,d1
	cmp.b	d1,d0
	sne.b	d0
	neg.b	d0				; d0 は一致なら $0、そうでなければ $1
	lsl.l	#1,d3			; d3 は結果がトラップなら $2、通過なら $0
	or.b	d3,d0
	lsl.l	#2,d2			; d2 は期待値がトラップなら $4、通過なら $0
	or.b	d2,d0
	add.b	d0,d0			; d0 *= 2
	PRINT	msg_result(pc,d0.w*8)
	dbra	d4,prloop
	PRINT	msg_crlf(pc)
	movem.l	(sp)+,d0-d4/a2
	rts

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

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

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

msg_test_d:	.dc.b	" Dn       ",0
msg_test_a:	.dc.b	" An       ",0
msg_test_m:	.dc.b	" (An)     ",0
msg_test_mi:	.dc.b	" (An)+    ",0
msg_test_md:	.dc.b	" -(An)    ",0
msg_test_r:	.dc.b	" d16(An)  ",0
msg_test_x:	.dc.b	" d8(An,IX)",0
msg_test_p:	.dc.b	" (PC)     ",0
msg_test_i:	.dc.b	" #imm     ",0
msg_test_o:	.dc.b	" 075      ",0

msg_head_fmove:
	.dc.b	"FMOVEtomem ",0
msg_head_fgen:
	.dc.b	"Fgen       ",0
msg_head_fscale:
	.dc.b	"FSCALE     ",0
msg_head_fmovem_cm:
	.dc.b	"FMOVEM_cm  ",0
msg_head_fmovem_mc:
	.dc.b	"FMOVEM_mc  ",0
msg_head_fscc:
	.dc.b	"FScc       .B",$d,$a,0
msg_head_fmovem_rm:
	.dc.b	"FMOVEM_rm  .X",$d,$a,0
msg_head_fmovem_mr:
	.dc.b	"FMOVEM_mr  .X",$d,$a,0

msg_head_guide4:
	.dc.b	"FPCR      "
	.dc.b	"FPSR      "
	.dc.b   "FPIAR     "
	.dc.b	"FPSR/FPIAR",$d,$a,0

msg_head_guide7:
	.dc.b	".B        "
	.dc.b	".W        "
	.dc.b	".L        "
	.dc.b	".S        "
	.dc.b	".D        "
	.dc.b	".X        "
	.dc.b	".P",$d,$a,0

msg_result:
	.dc.b	" pass:OK  ",0,0,0,0,0,0
	.dc.b	" flag:FAIL",0,0,0,0,0,0
	.dc.b	" trap:FAIL",0,0,0,0,0,0
	.dc.b	" trap:FAIL",0,0,0,0,0,0
	.dc.b	" pass:FAIL",0,0,0,0,0,0
	.dc.b	" pass:FAIL",0,0,0,0,0,0
	.dc.b	" trap:OK  ",0,0,0,0,0,0
	.dc.b	" flag:FAIL",0

msg_failed:
	.dc.b	"FAILED"	; ,$d,$a,0
msg_crlf:
	.dc.b	$d,$a,0

msg_help:
	.dc.b	"usage: { 'all' | 'help' | testnames... }",$d,$a
	.dc.b	" testnames:"
	.dc.b	" fmove"
	.dc.b	" fgen"
	.dc.b	" fscale"
	.dc.b	" fscc"
	.dc.b	" fmovem_rm"
	.dc.b	" fmovem_mr"
	.dc.b	" fmovem_cm"
	.dc.b	" fmovem_mc"
	.dc.b	$d,$a,0

cmd_help:
	.dc.b	"help",0
cmd_all:
	.dc.b	"all",0
cmd_fmove:
	.dc.b	"fmove",0
cmd_fgen:
	.dc.b	"fgen",0
cmd_fscale:
	.dc.b	"fscale",0
cmd_fscc:
	.dc.b	"fscc",0
cmd_fmovem_rm:
	.dc.b	"fmovem_rm",0
cmd_fmovem_mr:
	.dc.b	"fmovem_mr",0
cmd_fmovem_cm:
	.dc.b	"fmovem_cm",0
cmd_fmovem_mc:
	.dc.b	"fmovem_mc",0

	.bss
	.even
result:
	.ds.w	7
	.align	4
workarea:
	.ds.l	3
failed:
	.ds.l	1

	; テストを実行する場合は !0
is_tests:
is_fmove:
	.ds.b	1
is_fgen:
	.ds.b	1
is_fscale:
	.ds.b	1
is_fscc:
	.ds.b	1
is_fmovem_rm:
	.ds.b	1
is_fmovem_mr:
	.ds.b	1
is_fmovem_cm:
	.ds.b	1
is_fmovem_mc:
	.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.