OpenCores
URL https://opencores.org/ocsvn/copyblaze/copyblaze/trunk

Subversion Repositories copyblaze

[/] [copyblaze/] [trunk/] [copyblaze/] [sw/] [code/] [kcpsm/] [Mnemonics/] [Mnemonic.psm] - Rev 2

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

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.