head	1.12;
access;
symbols
	V3_0:1.9
	V2_1:1.9;
locks; strict;
comment	@;; @;


1.12
date	2007.03.28.05.38.01;	author rhoads;	state Exp;
branches;
next	1.11;
commitid	26f84609ff374567;

1.11
date	2007.02.14.19.02.14;	author rhoads;	state Exp;
branches;
next	1.10;
commitid	607e45d35cb44567;

1.10
date	2006.03.17.03.10.21;	author rhoads;	state Exp;
branches;
next	1.9;
commitid	869441a28984567;

1.9
date	2003.12.10.02.02.37;	author rhoads;	state Exp;
branches;
next	1.8;

1.8
date	2002.10.16.04.37.00;	author rhoads;	state Exp;
branches;
next	1.7;

1.7
date	2002.06.25.03.29.26;	author rhoads;	state Exp;
branches;
next	1.6;

1.6
date	2002.03.13.13.22.59;	author rhoads;	state Exp;
branches;
next	1.5;

1.5
date	2002.03.11.02.19.31;	author rhoads;	state Exp;
branches;
next	1.4;

1.4
date	2002.02.06.21.31.46;	author rhoads;	state Exp;
branches;
next	1.3;

1.3
date	2002.01.15.04.45.59;	author rhoads;	state Exp;
branches;
next	1.2;

1.2
date	2002.01.13.03.42.56;	author rhoads;	state Exp;
branches;
next	1.1;

1.1
date	2002.01.11.03.14.01;	author rhoads;	state Exp;
branches;
next	;


desc
@@


1.12
log
@Use linker values _gp, __bss_start, _end, and InitStack
@
text
@##################################################################
# TITLE: Opcode Tester
# AUTHOR: Steve Rhoads (rhoadss@@yahoo.com)
# DATE CREATED: 1/10/02
# FILENAME: opcodes.asm
# PROJECT: Plasma CPU core
# COPYRIGHT: Software placed into the public domain by the author.
#    Software 'as is' without warranty.  Author liable for nothing.
# DESCRIPTION:
#    This assembly file tests all of the opcodes supported by the
#    Plasma core.
#    This test assumes that address 0x20000000 is the UART write register
#    Successful tests will print out "A" or "AB" or "ABC" or ....
#    Missing letters or letters out of order indicate a failure.
##################################################################
	.text
	.align	2
	.globl	entry
	.ent	entry
entry:
   .set noreorder

   la    $gp, _gp           #initialize stack pointer
   la    $4, __bss_start    #$4 = .sbss_start
   la    $5, _end           #$5 = .bss_end
   nop                      #no stack needed
   nop

   b     StartTest
   nop                      #nops required to place ISR at 0x3c
   nop

OS_AsmPatchValue:
   #Code to place at address 0x3c
   lui   $26, 0x1000
   ori   $26, $26, 0x3c
   jr    $26
   nop

InterruptVector:            #Address=0x3c
   mfc0  $26,$14            #C0_EPC=14 (Exception PC)
   jr    $26
   add   $4,$4,5
   
StartTest:
   mtc0  $0,$12             #disable interrupts
   lui   $20,0x2000         #serial port write address
   ori   $21,$0,'\n'        #<CR> letter
   ori   $22,$0,'X'         #'X' letter
   ori   $23,$0,'\r'
   ori   $24,$0,0x0f80      #temp memory

   sb    $23,0($20)
   sb    $21,0($20)
   sb    $23,0($20)
   sb    $21,0($20)
   sb    $23,0($20)
   sb    $21,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #Patch interrupt vector to 0x1000003c
   la    $5, OS_AsmPatchValue
   sub   $6,$5,0x1000
   blez  $6,NoPatch
   
   lw    $6, 0($5)
   sw    $6, 0x3c($0)
   lw    $6, 4($5)
   sw    $6, 0x40($0)
   lw    $6, 8($5)
   sw    $6, 0x44($0)
   lw    $6, 12($5)
   sw    $6, 0x48($0)
NoPatch:

   ######################################
   #Arithmetic Instructions
   ######################################
ArthmeticTest:
   ori   $2,$0,'A'
   sb    $2,0($20)
   ori   $2,$0,'r'
   sb    $2,0($20)
   ori   $2,$0,'i'
   sb    $2,0($20)
   ori   $2,$0,'t'
   sb    $2,0($20)
   ori   $2,$0,'h'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #a: ADD
   ori   $2,$0,'a'
   sb    $2,0($20)
   ori   $3,$0,5
   ori   $4,$0,60
   add   $2,$3,$4
   sb    $2,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #b: ADDI
   ori   $2,$0,'b'
   sb    $2,0($20)
   ori   $4,$0,60
   addi  $2,$4,5
   sb    $2,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #c: ADDIU
   ori   $2,$0,'c'
   sb    $2,0($20)
   ori   $4,$0,50
   addiu $5,$4,15
   sb    $5,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #d: ADDU
   ori   $2,$0,'d'
   sb    $2,0($20)
   ori   $3,$0,5
   ori   $4,$0,60
   add   $2,$3,$4
   sb    $2,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #e: DIV
   ori   $2,$0,'e'
   sb    $2,0($20)
   ori   $2,$0,65*117+41
   ori   $3,$0,117
   div   $2,$3
   nop
   mflo  $4
   sb    $4,0($20)    #A
   mfhi  $4
   addi  $4,$4,66-41
   sb    $4,0($20)    #B
   li    $2,-67*19
   ori   $3,$0,19
   div   $2,$3
   nop
   mflo  $4
   sub   $4,$0,$4
   sb    $4,0($20)    #C
   ori   $2,$0,68*23
   li    $3,-23
   div   $2,$3
   nop
   mflo  $4
   sub   $4,$0,$4
   sb    $4,0($20)    #D
   li    $2,-69*13
   li    $3,-13
   div   $2,$3
   mflo  $4
   sb    $4,0($20)    #E
   sb    $23,0($20)
   sb    $21,0($20)

   #f: DIVU
   ori   $2,$0,'f'
   sb    $2,0($20)
   ori   $2,$0,65*13
   ori   $3,$0,13
   divu  $2,$3
   nop
   mflo  $4
   sb    $4,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #g: MULT
   ori   $2,$0,'g'
   sb    $2,0($20)
   ori   $2,$0,5
   ori   $3,$0,13
   mult  $2,$3
   nop
   mflo  $4
   sb    $4,0($20)    #A
   li    $2,-5
   ori   $3,$0,13
   mult  $2,$3
   mfhi  $5
   mflo  $4
   sub   $4,$0,$4
   addu  $4,$4,$5
   addi  $4,$4,2
   sb    $4,0($20)    #B
   ori   $2,$0,5
   li    $3,-13
   mult  $2,$3
   mfhi  $5
   mflo  $4
   sub   $4,$0,$4
   addu  $4,$4,$5
   addi  $4,$4,3
   sb    $4,0($20)    #C
   li    $2,-5
   li    $3,-13
   mult  $2,$3
   mfhi  $5
   mflo  $4
   addu  $4,$4,$5
   addi  $4,$4,3
   sb    $4,0($20)    #D
   lui   $4,0xfe98
   ori   $4,$4,0x62e5
   lui   $5,0x6
   ori   $5,0x8db8
   mult  $4,$5
   mfhi  $6
   addiu $7,$6,2356+1+'E' #E
   sb    $7,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #h: MULTU
   ori   $2,$0,'h'
   sb    $2,0($20)
   ori   $2,$0,5
   ori   $3,$0,13
   multu $2,$3
   nop
   mflo  $4
   sb    $4,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #i: SLT
   ori   $2,$0,'i'
   sb    $2,0($20)
   ori   $2,$0,10
   ori   $3,$0,12
   slt   $4,$2,$3
   addi  $5,$4,64
   sb    $5,0($20)    #A
   slt   $4,$3,$2
   addi  $5,$4,66
   sb    $5,0($20)    #B
   li    $2,0xfffffff0
   slt   $4,$2,$3
   addi  $5,$4,66
   sb    $5,0($20)    #C
   slt   $4,$3,$2
   addi  $5,$4,68
   sb    $5,0($20)    #D
   li    $3,0xffffffff
   slt   $4,$2,$3
   addi  $5,$4,68
   sb    $5,0($20)    #E
   slt   $4,$3,$2
   addi  $5,$4,70
   sb    $5,0($20)    #F
   sb    $23,0($20)
   sb    $21,0($20)

   #j: SLTI
   ori   $2,$0,'j'
   sb    $2,0($20)
   ori   $2,$0,10
   slti  $4,$2,12
   addi  $5,$4,64
   sb    $5,0($20)    #A
   slti  $4,$2,8
   addi  $5,$4,66
   sb    $5,0($20)    #B
   sb    $23,0($20)
   sb    $21,0($20)

   #k: SLTIU
   ori   $2,$0,'k'
   sb    $2,0($20)
   ori   $2,$0,10
   sltiu $4,$2,12
   addi  $5,$4,64
   sb    $5,0($20)    #A
   sltiu $4,$2,8
   addi  $5,$4,66
   sb    $5,0($20)    #B
   sb    $23,0($20)
   sb    $21,0($20)

   #l: SLTU
   ori   $2,$0,'l'
   sb    $2,0($20)
   ori   $2,$0,10
   ori   $3,$0,12
   slt   $4,$2,$3
   addi  $5,$4,64
   sb    $5,0($20)    #A
   slt   $4,$3,$2
   addi  $5,$4,66
   sb    $5,0($20)    #B
   sb    $23,0($20)
   sb    $21,0($20)

   #m: SUB
   ori   $2,$0,'m'
   sb    $2,0($20)
   ori   $3,$0,70
   ori   $4,$0,5
   sub   $2,$3,$4
   sb    $2,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   #n: SUBU
   ori   $2,$0,'n'
   sb    $2,0($20)
   ori   $3,$0,70
   ori   $4,$0,5
   sub   $2,$3,$4
   sb    $2,0($20)    #A
   sb    $23,0($20)
   sb    $21,0($20)

   ######################################
   #Branch and Jump Instructions
   ######################################
BranchTest:
   ori   $2,$0,'B'
   sb    $2,0($20)
   ori   $2,$0,'r'
   sb    $2,0($20)
   ori   $2,$0,'a'
   sb    $2,0($20)
   ori   $2,$0,'n'
   sb    $2,0($20)
   ori   $2,$0,'c'
   sb    $2,0($20)
   ori   $2,$0,'h'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #a: B
   ori   $2,$0,'a'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   b     $B1
   sb    $10,0($20)
   sb    $22,0($20)
$B1:
   sb    $11,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #b: BAL
   ori   $2,$0,'b'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $14,$0,'E'
   ori   $15,$0,'X'
   bal   $BAL1
   sb    $10,0($20)
   sb    $13,0($20)
   b     $BAL2
   sb    $14,0($20)
   sb    $15,0($20)
$BAL1:
   sb    $11,0($20)
   jr    $31
   sb    $12,0($20)
   sb    $22,0($20)
$BAL2:
   sb    $23,0($20)
   sb    $21,0($20)

   #c: BEQ
   ori   $2,$0,'c'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $2,$0,100
   ori   $3,$0,123
   ori   $4,$0,123
   beq   $2,$3,$BEQ1
   sb    $10,0($20)
   sb    $11,0($20)
   beq   $3,$4,$BEQ1
   sb    $12,0($20)
   sb    $22,0($20)
$BEQ1:
   sb    $13,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #d: BGEZ
   ori   $2,$0,'d'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   or    $15,$0,'X'
   ori   $2,$0,100
   li    $3,0xffff1234
   ori   $4,$0,123
   bgez  $3,$BGEZ1
   sb    $10,0($20)
   sb    $11,0($20)
   bgez  $2,$BGEZ1
   sb    $12,0($20)
   sb    $22,0($20)
$BGEZ1:
   bgez  $0,$BGEZ2
   nop
   sb    $15,0($20)
$BGEZ2:
   sb    $13,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #e: BGEZAL
   ori   $2,$0,'e'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $14,$0,'E'
   ori   $15,$0,'X'
   li    $3,0xffff1234
   bgezal $3,$BGEZAL1
   nop
   sb    $10,0($20)
   bgezal $0,$BGEZAL1
   nop
   sb    $13,0($20)
   b     $BGEZAL2
   sb    $14,0($20)
   sb    $15,0($20)
$BGEZAL1:
   sb    $11,0($20)
   jr    $31
   sb    $12,0($20)
   sb    $22,0($20)
$BGEZAL2:
   sb    $23,0($20)
   sb    $21,0($20)

   #f: BGTZ
   ori   $2,$0,'f'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $2,$0,100
   li    $3,0xffff1234
   bgtz  $3,$BGTZ1
   sb    $10,0($20)
   sb    $11,0($20)
   bgtz  $2,$BGTZ1
   sb    $12,0($20)
   sb    $22,0($20)
$BGTZ1:
   sb    $13,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #g: BLEZ
   ori   $2,$0,'g'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $2,$0,100
   li    $3,0xffff1234
   blez  $2,$BLEZ1
   sb    $10,0($20)
   sb    $11,0($20)
   blez  $3,$BLEZ1
   sb    $12,0($20)
   sb    $22,0($20)
$BLEZ1:
   blez  $0,$BLEZ2
   nop
   sb    $22,0($20)
$BLEZ2:
   sb    $13,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #h: BLTZ
   ori   $2,$0,'h'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $14,$0,'E'
   ori   $2,$0,100
   li    $3,0xffff1234
   ori   $4,$0,0
   bltz  $2,$BLTZ1
   sb    $10,0($20)
   sb    $11,0($20)
   bltz  $3,$BLTZ1
   sb    $12,0($20)
   sb    $22,0($20)
$BLTZ1:
   bltz  $4,$BLTZ2
   nop
   sb    $13,0($20)
$BLTZ2:
   sb    $14,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #i: BLTZAL
   ori   $2,$0,'i'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $14,$0,'E'
   ori   $15,$0,'X'
   li    $3,0xffff1234
   bltzal $0,$BLTZAL1
   nop
   sb    $10,0($20)
   bltzal $3,$BLTZAL1
   nop
   sb    $13,0($20)
   b     $BLTZAL2
   sb    $14,0($20)
   sb    $15,0($20)
$BLTZAL1:
   sb    $11,0($20)
   jr    $31
   sb    $12,0($20)
   sb    $22,0($20)
$BLTZAL2:
   sb    $23,0($20)
   sb    $21,0($20)

   #j: BNE
   ori   $2,$0,'j'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $2,$0,100
   ori   $3,$0,123
   ori   $4,$0,123
   bne   $3,$4,$BNE1
   sb    $10,0($20)
   sb    $11,0($20)
   bne   $2,$3,$BNE1
   sb    $12,0($20)
   sb    $22,0($20)
$BNE1:
   sb    $13,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #k: J
   ori   $2,$0,'k'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $15,$0,'X'
   j     $J1
   sb    $10,0($20)
   sb    $15,0($20)
$J1:
   sb    $11,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #l: JAL
   ori   $2,$0,'l'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $14,$0,'E'
   ori   $15,$0,'X'
   jal   $JAL1
   sb    $10,0($20)
   sb    $13,0($20)
   b     $JAL2
   sb    $14,0($20)
   sb    $15,0($20)
$JAL1:
   sb    $11,0($20)
   jr    $31
   sb    $12,0($20)
   sb    $22,0($20)
$JAL2:
   sb    $23,0($20)
   sb    $21,0($20)

   #m: JALR
   ori   $2,$0,'m'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $12,$0,'C'
   ori   $13,$0,'D'
   ori   $14,$0,'E'
   ori   $15,$0,'X'
   la    $3,$JALR1
   jalr  $3
   sb    $10,0($20)
   sb    $13,0($20)
   b     $JALR2
   sb    $14,0($20)
   sb    $15,0($20)
$JALR1:
   sb    $11,0($20)
   jr    $31
   sb    $12,0($20)
   sb    $22,0($20)
$JALR2:
   sb    $23,0($20)
   sb    $21,0($20)

   #n: JR
   ori   $2,$0,'n'
   sb    $2,0($20)
   ori   $10,$0,'A'
   ori   $11,$0,'B'
   ori   $15,$0,'X'
   la    $3,$JR1
   jr    $3
   sb    $10,0($20)
   sb    $15,0($20)
$JR1:
   sb    $11,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #o: NOP
   ori   $2,$0,'o'
   sb    $2,0($20)
   ori   $2,$0,65
   nop
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

#   b     LoadTest

BreakTest:
   #p: BREAK
   ori   $2,$0,'p'
   sb    $2,0($20)
   ori   $2,$0,'z'
   ori   $4,$0,59
   break 0
   addi  $4,$4,1
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #q: SYSCALL
   ori   $2,$0,'q'
   sb    $2,0($20)
   ori   $4,$0,61
   syscall 0
   addi  $4,$4,-1
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)


   ######################################
   #Load, Store, and Memory Control Instructions
   ######################################
LoadTest:
   ori   $2,$0,'L'
   sb    $2,0($20)
   ori   $2,$0,'o'
   sb    $2,0($20)
   ori   $2,$0,'a'
   sb    $2,0($20)
   ori   $2,$0,'d'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #a: LB
   ori   $2,$0,'a'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,0x414243fc
   sw    $3,16($2)
   lb    $4,16($2)
   sb    $4,0($20)
   lb    $4,17($2)
   sb    $4,0($20)
   lb    $4,18($2)
   sb    $4,0($20)
   lb    $2,19($2)
   sra   $3,$2,8
   addi  $3,$3,0x45
   sb    $3,0($20)
   addi  $2,$2,0x49
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #b: LBU
   ori   $2,$0,'b'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,0x41424344
   sw    $3,16($2)
   lb    $4,16($2)
   sb    $4,0($20)
   lb    $4,17($2)
   sb    $4,0($20)
   lb    $4,18($2)
   sb    $4,0($20)
   lb    $2,19($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #c: LH
   ori   $2,$0,'c'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,0x00410042
   sw    $3,16($2)
   lh    $4,16($2)
   sb    $4,0($20)
   lh    $2,18($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #d: LHU
   ori   $2,$0,'d'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,0x00410042
   sw    $3,16($2)
   lh    $4,16($2)
   sb    $4,0($20)
   lh    $2,18($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #e: LW
   ori   $2,$0,'e'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,'A'
   sw    $3,16($2)
   ori   $3,$0,0
   lw    $2,16($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #f: LWL & LWR
   ori   $2,$0,'f'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,'A'
   sw    $3,16($2)
   ori   $3,$0,0
   lwl   $2,16($2)
   lwr   $2,16($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #g: SB
   ori   $2,$0,'g'
   sb    $2,0($20)
   ori   $2,$0,'A'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #h: SH
   ori   $2,$0,'h'
   sb    $2,0($20)
   or    $4,$0,$24
   ori   $2,$0,0x4142
   sh    $2,16($4)
   lb    $3,16($4)
   sb    $3,0($20)
   lb    $2,17($4)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #i: SW
   ori   $2,$0,'i'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,0x41424344
   sw    $3,16($2)
   lb    $4,16($2)
   sb    $4,0($20)
   lb    $4,17($2)
   sb    $4,0($20)
   lb    $4,18($2)
   sb    $4,0($20)
   lb    $2,19($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #j: SWL & SWR
   ori   $2,$0,'j'
   sb    $2,0($20)
   or    $2,$0,$24
   li    $3,0x41424344
   swl   $3,16($2)
   swr   $3,16($2)
   lb    $4,16($2)
   sb    $4,0($20)
   lb    $4,17($2)
   sb    $4,0($20)
   lb    $4,18($2)
   sb    $4,0($20)
   lb    $2,19($2)
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)


   ######################################
   #Logical Instructions
   ######################################
LogicalTest:
   ori   $2,$0,'L'
   sb    $2,0($20)
   ori   $2,$0,'o'
   sb    $2,0($20)
   ori   $2,$0,'g'
   sb    $2,0($20)
   ori   $2,$0,'i'
   sb    $2,0($20)
   ori   $2,$0,'c'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #a: AND
   ori   $2,$0,'a'
   sb    $2,0($20)
   ori   $2,$0,0x0741
   ori   $3,$0,0x60f3
   and   $4,$2,$3
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #b: ANDI
   ori   $2,$0,'b'
   sb    $2,0($20)
   ori   $2,$0,0x0741
   andi  $4,$2,0x60f3
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #c: LUI
   ori   $2,$0,'c'
   sb    $2,0($20)
   lui   $2,0x41
   srl   $3,$2,16
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #d: NOR
   ori   $2,$0,'d'
   sb    $2,0($20)
   li    $2,0xf0fff08e
   li    $3,0x0f0f0f30
   nor   $4,$2,$3
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #e: OR
   ori   $2,$0,'e'
   sb    $2,0($20)
   ori   $2,$0,0x40
   ori   $3,$0,0x01
   or    $4,$2,$3
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #f: ORI
   ori   $2,$0,'f'
   sb    $2,0($20)
   ori   $2,$0,0x40
   ori   $4,$2,0x01
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #g: XOR
   ori   $2,$0,'g'
   sb    $2,0($20)
   ori   $2,$0,0xf043
   ori   $3,$0,0xf002
   xor   $4,$2,$3
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #h: XORI
   ori   $2,$0,'h'
   sb    $2,0($20)
   ori   $2,$0,0xf043
   xor   $4,$2,0xf002
   sb    $4,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

 
   ######################################
   #Move Instructions
   ######################################
MoveTest:
   ori   $2,$0,'M'
   sb    $2,0($20)
   ori   $2,$0,'o'
   sb    $2,0($20)
   ori   $2,$0,'v'
   sb    $2,0($20)
   ori   $2,$0,'e'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #a: MFHI
   ori   $2,$0,'a'
   sb    $2,0($20)
   ori   $2,$0,65
   mthi  $2
   mfhi  $3
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #b: MFLO
   ori   $2,$0,'b'
   sb    $2,0($20)
   ori   $2,$0,65
   mtlo  $2
   mflo  $3
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #c: MTHI
   ori   $2,$0,'c'
   sb    $2,0($20)
   ori   $2,$0,65
   mthi  $2
   mfhi  $3
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #d: MTLO
   ori   $2,$0,'d'
   sb    $2,0($20)
   ori   $2,$0,65
   mtlo  $2
   mflo  $3
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)


   ######################################
   #Shift Instructions
   ######################################
ShiftTest:
   ori   $2,$0,'S'
   sb    $2,0($20)
   ori   $2,$0,'h'
   sb    $2,0($20)
   ori   $2,$0,'i'
   sb    $2,0($20)
   ori   $2,$0,'f'
   sb    $2,0($20)
   ori   $2,$0,'t'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #a: SLL
   ori   $2,$0,'a'
   sb    $2,0($20)
   li    $2,0x40414243
   sll   $3,$2,8
   srl   $3,$3,24
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #b: SLLV
   ori   $2,$0,'b'
   sb    $2,0($20)
   li    $2,0x40414243
   ori   $3,$0,8
   sllv  $3,$2,$3
   srl   $3,$3,24
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #c: SRA
   ori   $2,$0,'c'
   sb    $2,0($20)
   li    $2,0x40414243
   sra   $3,$2,16
   sb    $3,0($20)
   li    $2,0x84000000
   sra   $3,$2,25
   sub   $3,$3,0x80
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #d: SRAV
   ori   $2,$0,'d'
   sb    $2,0($20)
   li    $2,0x40414243
   ori   $3,$0,16
   srav  $3,$2,$3
   sb    $3,0($20)
   ori   $3,$0,25
   li    $2,0x84000000
   srav  $3,$2,$3
   sub   $3,$3,0x80
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #e: SRL
   ori   $2,$0,'e'
   sb    $2,0($20)
   li    $2,0x40414243
   srl   $3,$2,16
   sb    $3,0($20)
   li    $2,0x84000000
   srl   $3,$2,25
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)

   #f: SRLV
   ori   $2,$0,'f'
   sb    $2,0($20)
   li    $2,0x40414243
   ori   $3,$0,16
   srlv  $4,$2,$3
   sb    $4,0($20)
   ori   $3,$0,25
   li    $2,0x84000000
   srlv  $3,$2,$3
   sb    $3,0($20)
   sb    $23,0($20)
   sb    $21,0($20)


   ori   $2,$0,'D'
   sb    $2,0($20)
   ori   $2,$0,'o'
   sb    $2,0($20)
   ori   $2,$0,'n'
   sb    $2,0($20)
   ori   $2,$0,'e'
   sb    $2,0($20)
   sb    $23,0($20)
   sb    $21,0($20)


$DONE:
   j     $DONE
   nop

   .set reorder
	.end	entry

@


1.11
log
@Implemented BREAK and SYSCALL opcodes
@
text
@d23 5
a27 11
   #These four instructions must be the first instructions
   #convert.exe will correctly initialize $gp
   lui   $gp,0
   ori   $gp,$gp,0
   #convert.exe will set $4=.sbss_start $5=.bss_end
   lui   $4,0
   ori   $4,$4,0
   lui   $5,0
   ori   $5,$5,0
   lui   $sp,0
   ori   $sp,$sp,0xfff0
@


1.10
log
@Support Plasma version 3
@
text
@d35 17
d59 24
d86 1
d333 1
d667 24
d695 1
d856 1
d950 1
d1006 1
@


1.9
log
@Updated to work with new convert.exe which updates opcodes to set $4, $5, and $sp.
@
text
@d12 1
a12 1
#    This test assumes that address 0xffff is the UART write register
d36 1
a36 1
   ori   $20,$0,0xffff      #serial port write address
d624 1
a624 1
 
d643 1
a643 1
   li    $3,0x41424344
d652 4
@


1.8
log
@test mult(a,-b)
@
text
@d28 6
a33 2
   ori   $4,$0,0
   ori   $5,$0,0
@


1.7
log
@added '\r' and changed temp memory to 0xf80
@
text
@d36 1
a36 1
   ori   $24,$0,0x0f80         #temp memory
d150 1
a150 1
   nop
d153 2
a154 1
   addi  $4,$4,1
d159 1
a159 1
   nop
d162 2
a163 1
   addi  $4,$4,2
d168 1
a168 1
   nop
d170 1
@


1.6
log
@Fixed signed 64-bit multiply
@
text
@d35 2
d51 1
d61 1
d70 1
d79 1
d89 1
d123 1
d135 1
d178 1
d190 1
d218 1
d231 1
d244 1
d258 1
d268 1
d278 1
d296 1
d309 1
d333 1
d354 1
d380 1
d408 1
d428 1
d452 1
d478 1
d506 1
d527 1
d541 1
d565 1
d590 1
d605 1
d614 1
d629 1
d635 1
a635 1
   ori   $2,$0,0xf000
d646 1
d652 1
a652 1
   ori   $2,$0,0xf000
d663 1
d669 1
a669 1
   ori   $2,$0,0xf000
d676 1
d682 1
a682 1
   ori   $2,$0,0xf000
d689 1
d695 1
a695 1
   ori   $2,$0,0xf000
d701 1
d707 1
a707 1
   ori   $2,$0,0xf000
d714 1
d722 1
d728 1
a728 1
   ori   $4,$0,0xf000
d735 1
d741 1
a741 1
   ori   $2,$0,0xf000
d752 1
d758 1
a758 1
   ori   $2,$0,0xf000
d770 1
d787 1
d797 1
d806 1
d815 1
d825 1
d835 1
d844 1
d854 1
d863 1
d878 1
d888 1
d898 1
d908 1
d918 1
d935 1
d945 1
d956 1
d969 1
d984 1
d996 1
d1010 1
d1022 1
@


1.5
log
@Renamed M-lite to Plasma
@
text
@d161 8
@


1.4
log
@Changed name to M-lite to avoid trademark issues.
@
text
@d6 1
a6 1
# PROJECT: M-lite CPU core
d11 1
a11 1
#    M-lite core.
@


1.3
log
@setup $gp and zero bss, fixed a few test bugs
@
text
@d6 1
a6 1
# PROJECT: MIPS CPU core
d11 1
a11 1
#    MIPS-lite core.
@


1.2
log
@Fixed div -x/y.
@
text
@d23 8
d679 1
a679 1
   ori   $2,$0,0xf000
d681 2
a682 2
   sw    $2,16($2)
   lb    $3,16($2)
d684 1
a684 1
   lb    $2,17($2)
d911 1
a911 1
   sra   $3,$2,$3
d923 1
a923 1
   sra   $3,$2,25
d936 1
a936 2
   sra   $3,$2,$3
   sub   $3,$3,0x80
@


1.1
log
@Test all MIPS I opcodes.
@
text
@d23 1
a23 10
#   ori   $20,$0,0xffff      #serial port write address
#   li    $2,-66*19
#   ori   $3,$0,19
#   div   $2,$3
#   nop
#   mflo  $4
#   sub   $4,$0,$4
#   sb    $4,0($20)


d43 3
a45 1
   #ADD
d49 1
a49 1
   sb    $2,0($20)
d52 3
a54 1
   #ADDI
d57 1
a57 1
   sb    $2,0($20)
d60 3
a62 1
   #ADDIU
d65 1
a65 1
   sb    $5,0($20)
d68 3
a70 1
   #ADDU
d74 1
a74 1
   sb    $2,0($20)
d77 5
a81 3
   #DIV
   ori   $2,$0,65*13
   ori   $3,$0,13
d85 5
a89 2
   sb    $4,0($20)
   li    $2,-66*19
d95 2
a96 2
   sb    $4,0($20)
   ori   $2,$0,67*23
d102 2
a103 2
   sb    $4,0($20)
   li    $2,-68*13
d107 1
a107 1
   sb    $4,0($20)
d110 3
a112 1
   #DIVU
d115 1
a115 1
   div   $2,$3
d118 1
a118 1
   sb    $4,0($20)
d121 3
a123 1
   #MULT
d129 1
a129 1
   sb    $4,0($20)
d137 1
a137 1
   sb    $4,0($20)
d145 1
a145 1
   sb    $4,0($20)
d152 1
a152 1
   sb    $4,0($20)
d155 3
a157 1
   #MULTU
d160 1
a160 1
   mult  $2,$3
d163 1
a163 1
   sb    $4,0($20)
d166 3
a168 1
   #SLT
d173 1
a173 1
   sb    $5,0($20)
d176 1
a176 1
   sb    $5,0($20)
d180 1
a180 1
   sb    $5,0($20)
d183 1
a183 1
   sb    $5,0($20)
d187 1
a187 1
   sb    $5,0($20)
d190 1
a190 1
   sb    $5,0($20)
d193 3
a195 1
   #SLTI
d199 1
a199 1
   sb    $5,0($20)
d202 1
a202 1
   sb    $5,0($20)
d205 3
a207 1
   #SLTIU
d211 1
a211 1
   sb    $5,0($20)
d214 1
a214 1
   sb    $5,0($20)
d217 3
a219 1
   #SLTU
d224 1
a224 1
   sb    $5,0($20)
d227 1
a227 1
   sb    $5,0($20)
d230 3
a232 1
   #SUB
d236 1
a236 1
   sb    $2,0($20)
d239 3
a241 1
   #SUBU
d245 1
a245 1
   sb    $2,0($20)
d265 3
a267 1
   #B
d277 3
a279 1
   #BAL
d300 3
a302 1
   #BEQ
d320 3
a322 1
   #BGEZ
d345 3
a347 1
   #BGEZAL
d372 3
a374 1
   #BGTZ
d391 3
a393 1
   #BLEZ
d414 3
a416 1
   #BLTZ
d439 3
a441 1
   #BLTZAL
d466 3
a468 1
   #BNE
d486 3
a488 1
   #J
d499 3
a501 1
   #JAL
d522 3
a524 1
   #JALR
d546 3
a548 1
   #JR
d560 3
a562 1
   #NOP
d582 3
a584 1
   #LB
d598 3
a600 1
   #LBU
d614 3
a616 1
   #LH
d626 3
a628 1
   #LHU
d638 3
a640 1
   #LW
d649 3
a651 1
   #LWL & LWR
d661 3
a663 1
   #SB
d668 3
a670 1
   #SH
d680 3
a682 1
   #SW
d696 3
a698 1
   #SWL & SWR
d729 3
a731 1
   #AND
d738 3
a740 1
   #ANDI
d746 3
a748 1
   #LUI
d754 3
a756 1
   #NOR
d763 3
a765 1
   #OR
d772 3
a774 1
   #ORI
d780 3
a782 1
   #XOR
d789 3
a791 1
   #XORI
d811 3
a813 1
   #MFHI
d820 3
a822 1
   #MFLO
d829 3
a831 1
   #MTHI
d838 3
a840 1
   #MTLO
d863 3
a865 1
   #SLL
d872 3
a874 1
   #SLLV
d882 3
a884 1
   #SRA
d894 3
a896 1
   #SRAV
d908 3
a910 1
   #SRL
d919 3
a921 1
   #SRLV
@

