URL
https://opencores.org/ocsvn/copyblaze/copyblaze/trunk
Subversion Repositories copyblaze
[/] [copyblaze/] [trunk/] [copyblaze/] [sw/] [code/] [kcpsm/] [Mnemonics/] [Mnemonic.psm] - Rev 61
Go to most recent revision | Compare with Previous | Blame | View Log
;--------------------------------------------------------------------------------
;-- Company:
;--
;-- File: Mnemonic.psm
;--
;-- Description:
;-- projet bicoblaze
;-- Test of the mnemonics of the BicoBlaze3 processor
;--
;-- File history:
;-- v1.0: 11/10/11: Creation
;--
;-- Targeted device: ProAsic A3P250 VQFP100
;-- Author: AbdAllah Meziti
;--------------------------------------------------------------------------------
LOAD s0, 85 ; s0=85
LOAD s3, 42 ; s3=42
LOAD s7, s3 ; s7=42
AND s3, 23 ; s3=02
AND s7, s0 ; s7=00
OR s3, 69 ; s3=6B
OR s7, s0 ; s7=85
XOR s0, 42 ; s0=C7
XOR s0, s7 ; s0=42
ADD s0, 43 ; s0=85
ADD s0, s7 ; s0=0A (Carry=1)
ADDCY s0, 42 ; s0=4D
ADDCY s0, s7 ; s0=D2
SUB s0, E5 ; s0=ED (Borrow=1)
SUB s0, s7 ; s0=68
SUBCY s0, A7 ; s0=C1 (Borrow=1)
SUBCY s0, s7 ; s0=3B
LOAD s0, 43 ; s0=43
SL0 s0 ; s0=86
SLX s0 ; s0=0C (Carry=1)
SLA s0 ; s0=19
SL1 s0 ; s0=33
LOAD s0, B0 ; s0=B0
RL s0 ; s0=61 (Carry=1)
SRA s0 ; s0=B0 (Carry=1)
SR0 s0 ; s0=58
SR1 s0 ; s0=AC
SRX s0 ; s0=D6
LOAD s0, CD ; s0=CD
RR s0 ; s0=E6
OUTPUT s0, 30 ; OUT_PORT=s0=E6, PORT_ID=30
OUTPUT s0, (s7) ; OUT_PORT=s0=E6, PORT_ID=s7=85
INPUT s0, 20 ; s0=OUT_PORT=(see external value), PORT_ID=20
INPUT s0, (s7) ; s0=OUT_PORT=(see external value), PORT_ID=s7=85
; one line macro for extra instructions
; INST 1234
LOAD s0, B8 ; s0=B8
COMPARE s0, 42 ; C=0, Z=0
COMPARE s0, B8 ; C=0, Z=1
COMPARE s0, C9 ; C=1, Z=0
LOAD s1, 44 ; s1=44
LOAD s2, B8 ; s2=B8
LOAD s3, D9 ; s3=D9
COMPARE s0, s1 ; C=0, Z=0
COMPARE s0, s2 ; C=0, Z=1
COMPARE s0, s3 ; C=1, Z=0
LOAD s5, 3D ; s5=3D
TEST s5, FF ; C=1
TEST s0, s1 ; (s0 and s1)
LOAD s1, 03 ; s1=03
STORE s0, 0A ; Scratch(@0A)=s0=E6
STORE s0, (s1) ; Scratch(@s1=03)=s0=E6
FETCH s4, 0A ; s4=Scratch(@0A)=E6
FETCH s5, (s1) ; s5=Scratch(@s1=03)=E6
JUMP JmpL1 ; Validation
; INST FFFF
; INST FFFF
; INST FFFF
; INST FFFF
JmpL1:
LOAD s0, 03 ; s0=03
LoopL1:
SUB s0, 01 ; s0=s0-1
JUMP NZ, LoopL1 ; -- Validation
JUMP Z, JmpL2 ; -- Validation
; INST FFFF
; INST FFFF
; INST FFFF
; INST FFFF
JmpL2:
LOAD s0, 03 ; s0=03
LoopL2:
SUB s0, 01 ; s0=s0-1
JUMP NC, LoopL2 ; -- Validation
JUMP C, CalL1 ; -- Validation
; INST FFFF
; INST FFFF
; INST FFFF
; INST FFFF
CalL1:
LOAD s0, 03 ; s0=03
CALL Function ; -- Validation
LOAD s1, 03 ; s1=03
LOAD s2, 03 ; s2=03
LOAD s3, 03 ; s3=03
LOAD s4, 03 ; s4=03
; CALL NZ, Function ; -- Validation
; CALL Z, Function
; CALL NC, Function
CALL C, Function
load s0, BB
call FuncLoadAllRegister
ENABLE INTERRUPT ; ENABLE INTERRUPT
; DISABLE INTERRUPT ; DISABLE INTERRUPT
; clear all register
load s0, 00
call FuncLoadAllRegister
; End LOOP
EndLoop:
; JUMP EndLoop ; -- Validation
ADD s0, 01 ; s0++
ADD s1, 01 ; s1++
ADD s2, 01 ; s2++
ADD s3, 01 ; s3++
ADD s4, 01 ; s4++
ADD s5, 01 ; s5++
ADD s6, 01 ; s6++
ADD s7, 01 ; s7++
ADD s8, 01 ; s8++
ADD s9, 01 ; s9++
ADD sA, 01 ; sA++
ADD sB, 01 ; sB++
ADD sC, 01 ; sC++
ADD sD, 01 ; sD++
ADD sE, 01 ; sE++
ADD sF, 01 ; sF++
JUMP EndLoop ; -- Validation
; =====================================================================
; END OF PROGRAM
; =====================================================================
; ****************************************
; Function
; ****************************************
Function:
LOAD s1, 55 ; s1=55
LOAD s2, 55 ; s2=55
LOAD s3, 55 ; s3=55
LOAD s4, 55 ; s4=55
RETURN ; -- Validation
; RETURN NZ ; -- Validation
; RETURN Z ; -- Validation
; RETURN NC ; -- Validation
; RETURN C ; -- Validation
; ****************************************
; Load All the register with the s0 value.
; ****************************************
FuncLoadAllRegister:
; LOAD s0, s0 ; s0=s0
LOAD s1, s0 ; s1=s0
LOAD s2, s0 ; s2=s0
LOAD s3, s0 ; s3=s0
LOAD s4, s0 ; s4=s0
LOAD s5, s0 ; s5=s0
LOAD s6, s0 ; s6=s0
LOAD s7, s0 ; s7=s0
LOAD s8, s0 ; s8=s0
LOAD s9, s0 ; s9=s0
LOAD sA, s0 ; sA=s0
LOAD sB, s0 ; sB=s0
LOAD sC, s0 ; sC=s0
LOAD sD, s0 ; sD=s0
LOAD sE, s0 ; sE=s0
LOAD sF, s0 ; sF=s0
RETURN
; ****************************************
; Decrement All the register by 1.
; ****************************************
FuncDecreAllRegister:
SUB s0, 02 ; s0--
SUB s1, 02 ; s1--
SUB s2, 02 ; s2--
SUB s3, 02 ; s3--
SUB s4, 02 ; s4--
SUB s5, 02 ; s5--
SUB s6, 02 ; s6--
SUB s7, 02 ; s7--
SUB s8, 02 ; s8--
SUB s9, 02 ; s9--
SUB sA, 02 ; sA--
SUB sB, 02 ; sB--
SUB sC, 02 ; sC--
SUB sD, 02 ; sD--
SUB sE, 02 ; sE--
SUB sF, 02 ; sF--
RETURN
; *************************
; Interrupt Service Routine
; *************************
ISR:
; load s0, AA
call FuncDecreAllRegister ; ISR
RETURNI ENABLE ; RETURNI
; RETURNI DISABLE
; *************************
; End ISR Interrupt Handler
; *************************
ADDRESS 3FF
VECTOR:
JUMP ISR
Go to most recent revision | Compare with Previous | Blame | View Log