head	1.2;
access;
symbols
	rel_1_1:1.2
	rel_1_0:1.2
	rel_0_6_1_beta:1.2
	rel_0_6__beta:1.2
	rel_0_6_beta:1.2
	rel_0_5_beta:1.2
	rel_0_4_beta:1.2
	rel_0_3_beta:1.2
	rel_0_2_beta:1.2
	rel_0_1_beta:1.2;
locks; strict;
comment	@;; @;


1.2
date	2004.04.07.22.09.35;	author arniml;	state Exp;
branches;
next	1.1;

1.1
date	2004.03.28.21.06.14;	author arniml;	state Exp;
branches;
next	;


desc
@@


1.2
log
@fix test
@
text
@	;; *******************************************************************
	;; $Id: test.asm,v 1.1 2004/03/28 21:06:14 arniml Exp $
	;;
	;; Test DA A.
	;; *******************************************************************

	INCLUDE	"cpu.inc"
	INCLUDE	"pass_fail.inc"

	ORG	0

	;; Start of test
	mov	r7, #000H

	;; testcase from "Single Component MCS-48 System"
	mov	a, #09BH
	da	a
	jnc	fail
	mov	r0, a
	mov	a, psw
	jb6	fail
	mov	a, r0
	cpl	a
	add	a, #001H
	cpl	a
	jnz	fail

	;; a value that should not be changed
	;; upper nibble: no overflow
	;; lower nibble: no overflow
	mov	a, #037H
	add	a, r7		; clear C and AC
	da	a
	jc	fail
	mov	r0, a
	mov	a, psw
	jb6	fail
	mov	a, r0
	cpl	a
	add	a, #037H
	cpl	a
	jnz	fail

	;; upper nibble: no overflow
	;; lower nibble: overflow
	mov	a, #04AH
	add	a, r7		; clear C and AC
	da	a
	jc	fail
	mov	r0, a
	mov	a, psw
	jb6	fail
	mov	a, r0
	cpl	a
	add	a, #050H
	cpl	a
	jnz	fail

	;; upper nibble: overflow
	;; lower nibble: no overflow
	mov	a, #0C1H
	add	a, r7		; clear C and AC
	da	a
	jnc	fail
	mov	r0, a
	mov	a, psw
	jb6	fail
	mov	a, r0
	cpl	a
	add	a, #021H
	cpl	a
	jnz	fail

	;; upper nibble: overflow
	;; lower nibble: overflow
	mov	a, #0DEH
	add	a, r7		; clear C and AC
	da	a
	jnc	fail
	mov	r0, a
	mov	a, psw
	jb6	fail
	mov	a, r0
	cpl	a
	add	a, #044H
	cpl	a
	jnz	fail


	;; ******************************************************************
	;; Next round with Auxiliary Carry
	;; ******************************************************************

	add	a, r7		; clear C and AC
	;; upper nibble: no overflow
	;; lower nibble: no overflow
	mov	a, #029H	; add two BCD numbers
	add	a, #019H	; result: 042H, but should be 48 BCD
	jc	fail
	mov	r0, a
	mov	a, psw
	jb6	goon1
	jmp	fail
goon1:	mov	a, r0
	da	a
	jc	fail
	cpl	a
	add	a, #048H
	cpl	a
	jnz	fail

	add	a, r7		; clear C and AC
	;; upper nibble: overflow
	;; lower nibble: no overflow
	mov	a, #067H	; add two BCD numbers
	add	a, #059H	; result: 0C0H, but should be 126 BCD
	jc	fail
	mov	r0, a
	mov	a, psw
	jb6	goon2
	jmp	fail
goon2:	mov	a, r0
	clr	c		; clear Carry, make set Carry by da testable
	da	a
	jnc	fail
	cpl	a
	add	a, #026H
	cpl	a
	jnz	fail

	add	a, r7		; clear C and AC
	;; upper nibble: no overflow
	;; lower nibble: overflow
	mov	a, #01FH	; this is not a BCD number!
	add	a, #033H	; reault: 052H, reveals 58 BCD
	jc	fail
	mov	r0, a
	mov	a, psw
	jb6	goon3
	jmp	fail
goon3:	mov	a, r0
	da	a
	jc	fail
	cpl	a
	add	a, #058H
	cpl	a
	jnz	fail

	add	a, r7		; clear C and AC
	;; upper nibble: overflow
	;; lower nibble: overflow
	mov	a, #0EEH	; this is not a BCD number!
	add	a, #0C5H	; result: 1B3H. reveals 119 BCD
	jnc	fail
	mov	r0, a
	mov	a, psw
	jb6	goon4
	jmp	fail
goon4:	mov	a, r0
	clr	c		; clear Carry, make set Carry by da testable
	da	a
	jnc	fail
	cpl	a
	add	a, #019H
	cpl	a
	jnz	fail


pass:	PASS

fail:	FAIL
@


1.1
log
@initial check-in
@
text
@d2 1
a2 1
	;; $Id: test.asm,v 1.2 2004/03/26 22:35:51 arniml Exp $
d19 4
a26 2
	mov	a, psw
	jb6	fail
d35 4
a42 1
	jb6	fail
d50 4
a57 1
	jb6	fail
d65 4
a72 1
	jb6	fail
d80 4
a87 1
	jb6	fail
@

