head     1.1;
branch   1.1.1;
access   ;
symbols  start:1.1.1.1 thorn_aitch:1.1.1;
locks    ; strict;
comment  @# @;


1.1
date     2003.07.12.13.23.05;  author thorn_aitch;  state Exp;
branches 1.1.1.1;
next     ;

1.1.1.1
date     2003.07.12.13.23.05;  author thorn_aitch;  state Exp;
branches ;
next     ;


desc
@@



1.1
log
@Initial revision
@
text
@/*
===================
test source program
testbra.src

Sep.16 2002
Nov.02 2002
===================

address           size wait width device
00000000-00001FFF  8K  0    32    ROM
00010000-00011FFF  8K  3    32    ROM
00020000-00021FFF  8K  0    16    ROM
00030000-00031FFF  8K  3    16    ROM
ABCD0000-ABCD0003   4  3    32    PIO
ABCD0100-ABCD0103   4  3    32    UART
ABCD0200-ABCD0207   8  3    32    SYS
FFFCE000-FFFCFFFF  8K  0    32    RAM
FFFDE000-FFFDFFFF  8K  3    32    RAM
FFFEE000-FFFEFFFF  8K  0    16    RAM
FFFFE000-FFFFFFFF  8K  3    16    RAM
*/

.equ _rom0, 0x00000000
.equ _rom1, 0x00010000
.equ _rom2, 0x00020000
.equ _rom3, 0x00030000
.equ _pio,  0xabcd0000
.equ _uart, 0xabcd0100
.equ _sys,  0xabcd0200
.equ _ram0, 0xfffce000
.equ _ram1, 0xfffde000
.equ _ram2, 0xfffee000
.equ _ram3, 0xffffe000

.org _rom0
.long _rom0 + _init - _rom0
.long _ram0 + 0x02000

.org 0x0400
 
/**************
 Initialization
 **************/
_init:
_start:
 mov    #0, r14
_test:
 mov.l  _pfail, r13 !fail address
 bra    _testgo
 nop
_pfail: .long _fail
.align 4
_testgo:

/***********************
 BRA and load contention
 ***********************/
 mov    #0x8b, r0 
 mov.l  _pram0, r1
 mov.l  r0, @@r1

 nop
 bra _bracont
 mov.l  @@r1, r2

_bracont:
 mov    #-4, r1
 and    r1, r2

 mov    r2, r0
 cmp/eq #0x88, r0
 bt     .+6
 jmp    @@r13
 nop

/************************
 RTS and write contention
 ************************/
 mov.l  _prts_target, r1
 lds    r1, pr
 mov    #0xab, r0

 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 mov.l  r0, @@-r15
 sts.l  pr, @@-r15

 lds    r0, pr

 lds.l  @@r15+, pr
 mov.l  @@r15+, r1
 mov.l  @@r15+, r2
 mov.l  @@r15+, r3
 mov.l  @@r15+, r4
 mov.l  @@r15+, r5
 mov.l  @@r15+, r6
 mov.l  @@r15+, r7
 rts
 mov.l  @@r15+, r8

.align 4
_prts_target: .long _rts_target

_rts_target:
 mov    #0x12, r8
 mov    r8, r0
 cmp/eq #0x12, r0
 bt     .+6
 jmp    @@r13
 nop

/********
 BRA disp
 BSR disp
 ********/
 mov    #126, r0

 bra    _bratarget
 add    #1, r0

_brareturn:
 cmp/eq #0xaa, r0
 bt     .+6
 jmp    @@r13
 nop

 mov    #123, r0
 bsr    _bsrtarget
 add    #2, r0

 cmp/eq #0x55, r0
 bt     .+6
 jmp    @@r13
 nop

 bra    _endbrabsr
 nop

_bratarget:
 cmp/eq #127, r0
 bt     .+6
 jmp    @@r13
 nop
 bra    _brareturn
 mov    #0xaa, r0

_bsrtarget:
 cmp/eq #125, r0
 bt     .+6
 jmp    @@r13
 nop
 rts
 mov    #0x55, r0

_endbrabsr:

/*******
 JMP @@Rn
 JSR @@Rn
 *******/
 mov.l  _pjmptarget, r1
 mov.l  _pjsrtarget, r3
 mov    #126, r0

 jmp    @@r1
 add    #1, r0

_jmpreturn:
 cmp/eq #0xaa, r0
 bt     .+6
 jmp    @@r13
 nop

 mov    #123, r0
 jsr    @@r3
 add    #2, r0

 cmp/eq #0x55, r0
 bt     .+6
 jmp    @@r13
 nop

 bra    _endjmpjsr
 nop

_jmptarget:
 cmp/eq #127, r0
 bt     .+6
 jmp    @@r13
 nop
 bra    _jmpreturn
 mov    #0xaa, r0

_jsrtarget:
 cmp/eq #125, r0
 bt     .+6
 jmp    @@r13
 nop
 rts
 mov    #0x55, r0

.align 4
_pjmptarget: .long _jmptarget
_pjsrtarget: .long _jsrtarget

_endjmpjsr:

/*********
 BT/S disp
 BF/S disp
 *********/
 mov.l  _pram0, r1
 mov    #0xa0, r0
 mov.b  r0, @@(0, r1)
 add    #1, r0
 mov.b  r0, @@(1, r1)
 add    #1, r0
 mov.b  r0, @@(2, r1)
 add    #1, r0
 mov.b  r0, @@(3, r1)

 clrt
 bt/s   _btsfail
 mov.b  @@(0, r1), r0
 cmp/eq #0xa0, r0
 bf     _btsfail

 clrt
 bf/s   _bts1
 mov.b  @@(1, r1), r0
 bra    _btsfail
 nop
_bts1:
 cmp/eq #0xa1, r0
 bf     _btsfail

 sett
 bf/s   _btsfail
 mov.b  @@(2, r1), r0
 cmp/eq #0xa2, r0
 bf     _btsfail

 sett
 bt/s   _bts2
 mov.b  @@(3, r1), r0
 bra    _btsfail
 nop
_bts2:
 cmp/eq #0xa3, r0
 bt     _btspass
 
_btsfail:
 jmp    @@r13
 nop
_btspass:

/*********************
 Branch Subroutine Far
 *********************/
 mov    #(target_bsrf - origin_bsrf), r0
 mov    #0xab, r1
 mov.l  _pram0, r2
 bsrf   r0
 mov.l  r1, @@r2
origin_bsrf:
 nop
 nop
 nop
 mov.l  @@r2, r0
 cmp/eq #0xac, r0
 bt     .+6
 jmp    @@r13
 nop
 bra    _bsrfend
 nop
target_bsrf:
 mov.l  @@r2, r1
 add    #1,  r1
 rts
 mov.l  r1,  @@r2
_bsrfend:

/**********
 Branch Far
 **********/
 mov    #(target_braf - origin_braf), r0
 mov    #0xab, r1
 mov.l  _pram0, r2
 braf   r0
 mov.l  r1, @@r2
origin_braf:
 nop
 nop
 nop
 nop
 nop
 nop
 jmp    @@r13
 nop
target_braf:
 mov.l  @@r2, r0
 cmp/eq #0xab, r0
 bt     .+6
 jmp    @@r13
 nop

/******************************
 Subroutine : Generic Operation
 ******************************/
_subroutine:
 bsr    _subtest
 mov    #0x12, r0
 cmp/eq #0x12, r0
 bt     .+6
 jmp    @@r13
 nop
 bra    _subroutineend
 nop
!----
_subtest:
 mov.l  r0, @@-r15
 sts.l  pr, @@-r15
 bsr    _subtest2
 mov    #0xab, r0
 lds.l  @@r15+, pr
 rts
 mov.l  @@r15+, r0
!----
_subtest2:
 mov.l  r0, @@-r15
 sts.l  pr, @@-r15
 mov    #0x88, r0
 lds.l  @@r15+, pr
 rts
 mov.l  @@r15+, r0
!----
_subroutineend:

/*****************
 Compare and BT/BF
 *****************/
_cmpbtbf:
 mov.l  _p12345678, r0
 mov.l  _p89abcdef, r1
 cmp/eq r1, r0
 bt     .+4
 bf     .+6
 jmp    @@r13
 nop
!----
 mov.l  _p12345678, r1
 cmp/eq r1, r0
 bf     .+4
 bt     .+6
 jmp    @@r13
 nop

/**************
 Full CMP check
 **************/
_compare:
 mov #0xab, r0
 cmp/eq #0xab, r0 !T=1
 bf     _cmpfail
 cmp/eq #0xac, r0 !T=0
 bt     _cmpfail
!----
 mov.l _p5a5a5a5a, r4
 mov.l _p5a5a5a5a, r5
 cmp/eq r5, r4 !T=1
 bf     _cmpfail
 cmp/eq r4, r5 !T=1
 bf     _cmpfail
 cmp/hs r5, r4 !T=1
 bf     _cmpfail
 cmp/hs r4, r5 !T=1
 bf     _cmpfail
 cmp/ge r5, r4 !T=1
 bf     _cmpfail
 cmp/ge r4, r5 !T=1
 bf     _cmpfail
 cmp/hi r5, r4 !T=0
 bt     _cmpfail
 cmp/hi r4, r5 !T=0
 bt     _cmpfail
 cmp/gt r5, r4 !T=0
 bt     _cmpfail
 cmp/gt r4, r5 !T=0
 bt     _cmpfail
!----
 mov.l _p5a5a5a5a, r4
 mov.l _paa5a5a5a, r5
 cmp/eq r5, r4 !T=0
 bt     _cmpfail
 cmp/eq r4, r5 !T=0
 bt     _cmpfail
 cmp/hs r5, r4 !T=0
 bt     _cmpfail
 cmp/hs r4, r5 !T=1
 bf     _cmpfail
 cmp/ge r5, r4 !T=1
 bf     _cmpfail
 cmp/ge r4, r5 !T=0
 bt     _cmpfail
 cmp/hi r5, r4 !T=0
 bt     _cmpfail
 cmp/hi r4, r5 !T=1
 bf     _cmpfail
 cmp/gt r5, r4 !T=1
 bf     _cmpfail
 cmp/gt r4, r5 !T=0
 bt     _cmpfail
!----
 mov.l   _p12345678, r4
 mov.l   _pabcd56ef, r5
 cmp/str r5, r4 !T=1
 bf      _cmpfail
 mov.l   _p12345678, r4
 mov.l   _pabcdef01, r5
 cmp/str r5, r4 !T=0
 bt      _cmpfail
!----
 mov    #0, r4
 mov    #1, r5
 mov    #-1, r6
 cmp/pz r4 !T=1
 bf     _cmpfail
 cmp/pz r5 !T=1
 bf     _cmpfail
 cmp/pz r6 !T=0
 bt     _cmpfail
 cmp/pl r4 !T=0
 bt     _cmpfail
 cmp/pl r5 !T=1
 bf     _cmpfail
 cmp/pl r6 !T=0
 bt     _cmpfail
!----
 bra   _cmpgood
 nop
_cmpfail:
 jmp   @@r13
 nop
_cmpgood:

/**************
 Constant Table
 **************/
 bra    _constantend
 nop
.align 4
_p12345678: .long 0x12345678
_p89abcdef: .long 0x89abcdef
_p5a5a5a5a: .long 0x5a5a5a5a
_paa5a5a5a: .long 0xaa5a5a5a
_pabcd56ef: .long 0xabcd56ef
_pabcdef01: .long 0xabcdef01
_pram0    : .long _ram0
.align 2
_constantend:

/*********************************************************
 Move to another Next ROM area to check hardware operation
 *********************************************************/
 mov.l _pbranch_table, r13
 add r14, r13
 mov.l @@r13, r12
 jmp @@r12
 add #4, r14
.align 4
_pbranch_table: .long _branch_table
_branch_table:
 .long _rom1+_test
 .long _rom2+_test
 .long _rom3+_test
 .long _rom0+_pass

/**************
 Congraturation
 **************/
_pass:
 mov.l _ppass_value, r0
 mov.l _ppass_value, r1
 mov.l r0, @@r1
 bra   _pass
 nop
.align 4
_ppass_value: .long 0x12345678

/**********
 You Failed
 **********/
_fail:
 mov.l _pfail_value, r0
 mov.l _pfail_value, r1
 bra   _fail
 nop
.align 4
_pfail_value: .long 0x88888888

.end
@


1.1.1.1
log
@First Release
@
text
@@
