Top secrets sources NedoPC pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

        cpu     mico8_v3

; from user's manual

        b _start                ; 0x33001 110011000000000001
_start:
        nop             ; 0x10000 010000000000000000
add:
        movi R00,0x55   ; 0x12055 010010000001010101
        movi R01,0x05   ; 0x12105 010010000100000101
        movi R02,0x03   ; 0x12203 010010001000000011
        add R01,R02     ; 0x08110 001000000100010000
        addi R01,0x01   ; 0x0A101 001010000100000001
        mov R03,R01     ; 0x10308 010000001100001000
        mov R04,R02     ; 0x10410 010000010000010000
        movi R05,0x35   ; 0x12535 010010010100110101
        movi R06,0x43   ; 0x12643 010010011001000011
        add R06,R05     ; 0x08628 001000011000101000
        addi R06,0x13   ; 0x0A613 001010011000010011
        mov R07,R05     ; 0x10728 010000011100101000

; This program will allow user to run a fibonacci number
; generator and updown counter. This program responds to
; the interrupt from the user (through Orcastra).
; When there is an interrupt, the program will halt the current program,
; and execute the int_handler function. When the intr_handler function
; is done, the program will continue from its last position

        b       int_handler
        nop
        nop
        seti                    ; set the program to be able to receive interrupt
        nop
        nop
        b       start
start:
        import  r5, 5
        mov     r6, r5
        andi    r5, 0xf0        ; masking r5 to decide type of program
        mov     r7, r5
        mov     r5, r6
        andi    r5, 0x0f        ; masking r5 to get the speed
        mov     r25, r5
        cmpi    r7, 0x10
        bz      phase2
        cmpi    r7, 0x20
        bz      phase2
        b       start
phase2:
        cmpi    r25, 0x01
        bz      phase3
        cmpi    r25, 0x02
        bz      phase3
        cmpi    r25, 0x03
        bz      phase3
        cmpi    r25, 0x04
        bz      phase3
        b       start
phase3:
        cmpi    r7, 0x10
;       bz      fibo
        cmpi    r7, 0x20        ; 1 = fibonacci, 2 = counter
;       bz      counter
        b       start
int_handler:
        iret

; examples of instruction classes

        add     r15,r23
        addi    r2,0x12

        rolc    r10,r5

        clri
        setz

        b       $ + 10

        import  r10,21
        export  r10,21

; register aliases

myreg1e         equ     r15
myreg2e         equ     r14
myreg1r         reg     r15
myreg2r         reg     r14
myreg1re        reg     myreg1e
myreg2re        reg     myreg2e

                add     r14,r15
                add     myreg2e,myreg1e
                add     myreg2re,myreg1r
                add     myreg2re,myreg1re