;; *******************************************************************
|
;; *******************************************************************
|
;; $Id: test.asm,v 1.1 2004-05-17 14:34:41 arniml Exp $
|
;; $Id: test.asm,v 1.1 2004-05-17 14:34:41 arniml Exp $
|
;;
|
;;
|
;; Test P1 conflict for reading port or output register.
|
;; Test P1 conflict for reading port or output register.
|
;; *******************************************************************
|
;; *******************************************************************
|
|
|
INCLUDE "cpu.inc"
|
INCLUDE "cpu.inc"
|
INCLUDE "pass_fail.inc"
|
INCLUDE "pass_fail.inc"
|
|
|
ORG 0
|
ORG 0
|
|
|
;; Start of test
|
;; Start of test
|
|
|
;; access testbench peripherals
|
;; access testbench peripherals
|
mov r0, #0FFH
|
mov r0, #0FFH
|
mov a, #002H
|
mov a, #002H
|
movx @r0, a
|
movx @r0, a
|
|
|
;; check functionality of P1 testbench peripheral
|
;; check functionality of P1 testbench peripheral
|
in a, p1
|
in a, p1
|
inc a
|
inc a
|
jnz fail
|
jnz fail
|
|
|
mov r0, #000H
|
mov r0, #000H
|
;; extern write 00H to P1
|
;; extern write 00H to P1
|
clr a
|
clr a
|
movx @r0, a
|
movx @r0, a
|
in a, p1
|
in a, p1
|
jnz fail
|
jnz fail
|
;; extern write 0AAH to P1
|
;; extern write 0AAH to P1
|
mov a, #0AAH
|
mov a, #0AAH
|
movx @r0, a
|
movx @r0, a
|
clr a
|
clr a
|
in a, p1
|
in a, p1
|
add a, #056H
|
add a, #056H
|
jnz fail
|
jnz fail
|
;; extern write 055H to P1
|
;; extern write 055H to P1
|
mov a, #055H
|
mov a, #055H
|
movx @r0, a
|
movx @r0, a
|
clr a
|
clr a
|
in a, p1
|
in a, p1
|
add a, #0ABH
|
add a, #0ABH
|
jnz fail
|
jnz fail
|
|
|
;; reset extern P1 to 0FFH
|
;; reset extern P1 to 0FFH
|
dec a
|
dec a
|
movx @r0, a
|
movx @r0, a
|
|
|
;;
|
;;
|
;; Start of real test
|
;; Start of real test
|
;;
|
;;
|
|
|
;; Test ORL
|
;; Test ORL
|
|
|
;; set internal P1 to 0AAH
|
;; set internal P1 to 0AAH
|
mov a, #0AAH
|
mov a, #0AAH
|
outl p1, a
|
outl p1, a
|
in a, p1
|
in a, p1
|
add a, #056H
|
add a, #056H
|
jnz fail
|
jnz fail
|
|
|
;; extern write 055H to P1
|
;; extern write 055H to P1
|
mov a, #055H
|
mov a, #055H
|
movx @r0, a
|
movx @r0, a
|
|
|
in a, p1
|
in a, p1
|
jnz fail
|
jnz fail
|
|
|
;; set internal P1 to 0ABH, setting P1[0] to 1
|
;; set internal P1 to 0ABH, setting P1[0] to 1
|
orl P1, #001H
|
orl P1, #001H
|
in a, p1
|
in a, p1
|
dec a
|
dec a
|
jnz fail
|
jnz fail
|
|
|
;; reset extern P1 to 0FFH
|
;; reset extern P1 to 0FFH
|
dec a
|
dec a
|
movx @r0, a
|
movx @r0, a
|
|
|
;; compare P1 vs. 0ABH
|
;; compare P1 vs. 0ABH
|
in a, p1
|
in a, p1
|
cpl a
|
cpl a
|
add a, #0ABH
|
add a, #0ABH
|
cpl a
|
cpl a
|
jnz fail
|
jnz fail
|
|
|
;; reset intern P1 to 0FFH
|
;; reset intern P1 to 0FFH
|
dec a
|
dec a
|
outl p1, a
|
outl p1, a
|
|
|
;; set internal P1 to 055H
|
;; set internal P1 to 055H
|
mov a, #055H
|
mov a, #055H
|
outl p1, a
|
outl p1, a
|
clr a
|
clr a
|
in a, p1
|
in a, p1
|
add a, #0ABH
|
add a, #0ABH
|
jnz fail
|
jnz fail
|
|
|
;; external write 0AAH to P1
|
;; external write 0AAH to P1
|
mov a, #0AAH
|
mov a, #0AAH
|
movx @r0, a
|
movx @r0, a
|
|
|
;; set internal P1 to 054H
|
;; set internal P1 to 054H
|
anl P1, #0FEH
|
anl P1, #0FEH
|
|
|
;; reset extern P1 to 0FFH
|
;; reset extern P1 to 0FFH
|
mov a, #0FFH
|
mov a, #0FFH
|
movx @r0, a
|
movx @r0, a
|
|
|
;; compare P1 vs. 054H
|
;; compare P1 vs. 054H
|
in a, p1
|
in a, p1
|
cpl a
|
cpl a
|
add a, #054H
|
add a, #054H
|
cpl a
|
cpl a
|
jnz fail
|
jnz fail
|
|
|
|
|
pass: PASS
|
pass: PASS
|
|
|
fail: FAIL
|
fail: FAIL
|
|
|