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

; vi:set ts=8:

; 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.

; Test whether undocumented PMOVE (An)+,TTn works or not.
;
; > has pmove_anpi.has
; > hlk pmove_anpi.o
; > pmove_anpi

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

start:
	clr.l	-(sp)
	DOS	_SUPER

	moveq.l	#11,d1
	lea.l	fline_trap,a1
	IOCS	_B_INTVCS
	move.l	d0,backup_fline

	moveq.l	#0,d0
	lea.l	@f,a3
	lea.l	dummy_tt,a0
	.dc.l	$f0180800	; pmove	(a0)+,tt0
@@:
	move.l	d0,-(sp)

	movea.l	backup_fline,a1
	IOCS	_B_INTVCS

	move.l	(sp)+,d0
	beq	executed
got_trap:
	pea	msg_trap(pc)	; expected
	DOS	_PRINT
	DOS	_EXIT
executed:
	pea	msg_exec(pc)	; not expected
	DOS	_PRINT
	DOS	_EXIT

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

	.data
dummy_tt:
	.dc.l	0

msg_trap:
	.dc.b	"F-line trap occured (Expected)",$d,$a,0
msg_exec:
	.dc.b	"No F-line trap occured (Not expected!)",$d,$a,0

	.bss
	.even
backup_fline:
	.ds.l	1

	.end

unix.superglobalmegacorp.com

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