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

Subversion Repositories m32632

[/] [m32632/] [trunk/] [TRIPUTER/] [monitor.32K] - Diff between revs 35 and 50

Only display areas with differences | Details | Blame | View Log

Rev 35 Rev 50
; MONITOR for TRIPUTER V0.1
; MONITOR for TRIPUTER V0.1
; 27 May 2017
; 27 May 2017
 
; updated 25 January 2021
sramsize  .equ x'8000
sramsize  .equ x'8000
        movd x'20000010,r0
        movd x'20000010,r0
        jump r0
        jump r0
        .align 16
        .align 16
 
        movd 100000,r0          ; wait some ms until reset stable (board dependent)
 
wloop:  acbd -1,r0,wloop
        movd x'20400000,r1      ; address of LEDs
        movd x'20400000,r1      ; address of LEDs
        movqd 0,0(r1)           ; all went off
        movqd 0,0(r1)           ; all went off
        movd x'FFFF,4(r1)               ; the seven segment went off
        movd x'FFFF,4(r1)               ; the seven segment went off
        lprd cfg,x'BF6
        lprd cfg,x'BF6
        lprd sp,x'300
        lprd sp,x'300
        lprd intbase,x'300
        lprd intbase,x'300
        addr nmi,@x'304
        addr nmi,@x'304
        movd x'20200000,r7      ; UART - fix Register
        movd x'20200000,r7      ; UART - fix Register
        addr welcome,r0
        addr welcome,r0
        bsr string
        bsr string
; SRAM-Test : Bit Test
; SRAM-Test : Bit Test
        movqw 1,r2
        movqw 1,r2
        movd x'20100000,r3
        movd x'20100000,r3
l01:    movw r2,0(r3)           ; write
l01:    movw r2,0(r3)           ; write
        addqd 2,r3
        addqd 2,r3
        addw r2,r2
        addw r2,r2
        cmpqw 0,r2
        cmpqw 0,r2
        bne l01
        bne l01
        movqw 1,r2
        movqw 1,r2
        movqw 0,r3
        movqw 0,r3
l02:  cmpw 0(r3),r2             ; read
l02:  cmpw 0(r3),r2             ; read
        bne err
        bne err
        addqd 2,r3
        addqd 2,r3
        addw r2,r2
        addw r2,r2
        cmpqw 0,r2
        cmpqw 0,r2
        bne l02
        bne l02
        movl datfp,-15(r3)
        movl datfp,-15(r3)
        cmpl datfp,-15(r3)
        cmpl datfp,-15(r3)
        bne err
        bne err
; Address steping
; Address steping
        movd x'20100000,r3
        movd x'20100000,r3
        movd x'20000,r2         ; Initialize on 0
        movd x'20000,r2         ; Initialize on 0
l03:    movqd 0,0(r3)
l03:    movqd 0,0(r3)
        addqd 4,r3
        addqd 4,r3
        acbd -1,r2,l03
        acbd -1,r2,l03
        movd x'20100000,r3      ; Test of 0 and 1 write
        movd x'20100000,r3      ; Test of 0 and 1 write
        movd x'40000,r2
        movd x'40000,r2
l04:    cmpqw 0,0(r3)
l04:    cmpqw 0,0(r3)
        bne err
        bne err
        movqw -1,0(r3)
        movqw -1,0(r3)
        addqd 2,r3
        addqd 2,r3
        acbd -1,r2,l04
        acbd -1,r2,l04
        movd x'20100000,r3      ; Test on 1 and 0 write
        movd x'20100000,r3      ; Test on 1 and 0 write
        movd x'40000,r2
        movd x'40000,r2
l05:    cmpqw -1,0(r3)
l05:    cmpqw -1,0(r3)
        bne err
        bne err
        movqw 0,0(r3)
        movqw 0,0(r3)
        addqd 2,r3
        addqd 2,r3
        acbd -1,r2,l05
        acbd -1,r2,l05
        movd x'20100000,r3      ; Test on 0
        movd x'20100000,r3      ; Test on 0
        movd x'40000,r2
        movd x'40000,r2
l06:    cmpqw 0,0(r3)
l06:    cmpqw 0,0(r3)
        bne err
        bne err
        addqd 2,r3
        addqd 2,r3
        acbd -1,r2,l06
        acbd -1,r2,l06
        addr sram_ok,r0
        addr sram_ok,r0
        bsr string
        bsr string
; INT vector points to SRAM
; INT vector points to SRAM
        movd x'20100300,r3
        movd x'20100300,r3
        addr nmi,4(r3)
        addr nmi,4(r3)
        addr int,0(r3)
        addr int,0(r3)
        lprd intbase,r3
        lprd intbase,r3
        lprd sp,x'20100300
        lprd sp,x'20100300
        lprd sb,x'20100400      ; working area
        lprd sb,x'20100400      ; working area
        movqd 0,-4(sb)          ; counter in NMI
        movqd 0,-4(sb)          ; counter in NMI
        sbitb 31,x'300004(r7)   ; NMI enable
        sbitb 31,x'300004(r7)   ; NMI enable
; iDRAM-Test : Bit Test
; iDRAM-Test : Bit Test
        movqd 1,r2
        movqd 1,r2
        movqd 0,r3
        movqd 0,r3
l21:    movd r2,0(r3)           ; write
l21:    movd r2,0(r3)           ; write
        addqd 4,r3
        addqd 4,r3
        addd r2,r2
        addd r2,r2
        cmpqd 0,r2
        cmpqd 0,r2
        bne l21
        bne l21
        movqd 1,r2
        movqd 1,r2
        movqd 0,r3
        movqd 0,r3
l22:  cmpd 0(r3),r2             ; read
l22:  cmpd 0(r3),r2             ; read
        bne err
        bne err
        addqd 4,r3
        addqd 4,r3
        addd r2,r2
        addd r2,r2
        cmpqd 0,r2
        cmpqd 0,r2
        bne l22
        bne l22
        movl datfp,-15(r3)
        movl datfp,-15(r3)
        cmpl datfp,-15(r3)
        cmpl datfp,-15(r3)
        bne err
        bne err
; Address stepping
; Address stepping
        movqd 0,r3
        movqd 0,r3
        movw sramsize,r2                ; Initialize to 0
        movw sramsize,r2                ; Initialize to 0
l23:    movqd 0,0(r3)
l23:    movqd 0,0(r3)
        addqd 4,r3
        addqd 4,r3
        acbw -1,r2,l23
        acbw -1,r2,l23
        movqd 0,r3                      ; Test on 0 and 1 write
        movqd 0,r3                      ; Test on 0 and 1 write
        movw sramsize,r2
        movw sramsize,r2
l24:    cmpqd 0,0(r3)
l24:    cmpqd 0,0(r3)
        bne err
        bne err
        movqd -1,0(r3)
        movqd -1,0(r3)
        addqd 4,r3
        addqd 4,r3
        acbw -1,r2,l24
        acbw -1,r2,l24
        movqd 0,r3                      ; Test on 1 und 0 write
        movqd 0,r3                      ; Test on 1 und 0 write
        movd sramsize,r2
        movd sramsize,r2
l25:    cmpqd -1,0(r3)
l25:    cmpqd -1,0(r3)
        bne err
        bne err
        movqd 0,0(r3)
        movqd 0,0(r3)
        addqd 4,r3
        addqd 4,r3
        acbw -1,r2,l25
        acbw -1,r2,l25
        movqd 0,r3                      ; Test on 0
        movqd 0,r3                      ; Test on 0
        movw sramsize,r2
        movw sramsize,r2
l26:    cmpqd 0,0(r3)
l26:    cmpqd 0,0(r3)
        bne err
        bne err
        addqd 4,r3
        addqd 4,r3
        acbw -1,r2,l26
        acbw -1,r2,l26
; Now all Data right initialize
; Now all Data right initialize
        movd x'300,r0
        movd x'300,r0
        lprd sp,r0
        lprd sp,r0
        lprd sb,x'400           ; working area
        lprd sb,x'400           ; working area
        addr int,0(r0)
        addr int,0(r0)
        addr nmi,4(r0)
        addr nmi,4(r0)
        lprd intbase,r0
        lprd intbase,r0
        movqd 0,-8(sb)          ; readpointer of RX buffer
        movqd 0,-8(sb)          ; readpointer of RX buffer
        movqd 0,-12(sb)         ; writepointer of RX buffer
        movqd 0,-12(sb)         ; writepointer of RX buffer
        movqb 0,-4(sb)          ; count byte for NMI
        movqb 0,-4(sb)          ; count byte for NMI
        movqd 0,-20(sb)         ; pointer for Dump
        movqd 0,-20(sb)         ; pointer for Dump
        addr idram_ok,r0
        addr idram_ok,r0
        bsr string
        bsr string
        bispsrw x'800           ; Int enable
        bispsrw x'800           ; Int enable
        sbitb 9,0(r7)           ; UART RX Int on
        sbitb 9,0(r7)           ; UART RX Int on
        addr string,-24(sb)     ; save address of string service routine
        addr string,-24(sb)     ; save address of string service routine
; ***************************************************************
; ***************************************************************
; Endless loop : wait on Input from UART
; Endless loop : wait on Input from UART
; ***************************************************************
; ***************************************************************
new:    movd x'20240002,-2(sb)
new:    movd x'20240002,-2(sb)
        sprd sb,r0
        sprd sb,r0
        bsr string
        bsr string
        movqd 0,-16(sb)         ; Number of characters in buffer
        movqd 0,-16(sb)         ; Number of characters in buffer
loop:   wait
loop:   wait
        cmpd -8(sb),-12(sb)     ; has the UART something received?
        cmpd -8(sb),-12(sb)     ; has the UART something received?
        beq loop                        ; No
        beq loop                        ; No
; Auswertung
; Auswertung
        movd -8(sb),r1
        movd -8(sb),r1
        movb x'100(sb)[r1:b],r0
        movb x'100(sb)[r1:b],r0
        addqb 1,-8(sb)
        addqb 1,-8(sb)
        checkb r1,cvalid,r0     ; special character ?
        checkb r1,cvalid,r0     ; special character ?
        bfs sys1                        ; Yes
        bfs sys1                        ; Yes
        movd -16(sb),r1
        movd -16(sb),r1
        cmpqd 0,r1
        cmpqd 0,r1
        bne sys2
        bne sys2
        cmpb '+',r0
        cmpb '+',r0
        beq sys3
        beq sys3
        cmpb '-',r0
        cmpb '-',r0
        beq sys4
        beq sys4
sys2:   movb r0,0(sb)[r1:b]
sys2:   movb r0,0(sb)[r1:b]
        addr 1(r1),-16(sb)
        addr 1(r1),-16(sb)
sys0:   bsr out
sys0:   bsr out
        br loop
        br loop
sys1:   cmpb 8,r0                       ; Delete
sys1:   cmpb 8,r0                       ; Delete
        bne sys5
        bne sys5
        cmpqd 0,-16(sb)
        cmpqd 0,-16(sb)
        beq loop
        beq loop
        addqd -1,-16(sb)
        addqd -1,-16(sb)
        bsr out
        bsr out
        movb ' ',r0
        movb ' ',r0
        bsr out
        bsr out
        movb 8,r0
        movb 8,r0
        br sys0
        br sys0
 
; Here is some confusion about CR and LF operation with a terminal
sys5:   cmpb 13,r0                      ; CR only output
sys5:   cmpb 13,r0                      ; CR only output
        beq sys0
        bne sys_x               ; was earlier sys0
 
        bsr out
 
        movb 10,r0
 
sys_x:
        cmpb 10,r0                      ; LF now analyzing input
        cmpb 10,r0                      ; LF now analyzing input
        bne new
        bne new
; Analyzing input:
; Analyzing input:
        bsr out
        bsr out
        sprd sb,r2
        sprd sb,r2
        movd -16(sb),r1         ; Number of characters in buffer
        movd -16(sb),r1         ; Number of characters in buffer
sys7:   cmpqd 0,r1
sys7:   cmpqd 0,r1
        beq new
        beq new
        movb 0(r2),r0
        movb 0(r2),r0
        addqd 1,r2
        addqd 1,r2
        addqd -1,r1
        addqd -1,r1
        cmpb ' ',r0
        cmpb ' ',r0
        beq sys7                        ; next character
        beq sys7                        ; next character
        bicb x'20,r0            ; only capital letters
        bicb x'20,r0            ; only capital letters
        movqd 0,r6
        movqd 0,r6
        cmpb 'L',r0                     ; "Load"
        cmpb 'L',r0                     ; "Load"
        beq sys6
        beq sys6
        movqd 1,r6
        movqd 1,r6
        cmpb 'R',r0                     ; "Run"
        cmpb 'R',r0                     ; "Run"
        beq sys6
        beq sys6
        movqd 2,r6
        movqd 2,r6
        cmpb 'D',r0                     ; "Dump"
        cmpb 'D',r0                     ; "Dump"
        beq sys6
        beq sys6
        br erin                 ; Error in input
        br erin                 ; Error in input
; now look for ' ' and address input
; now look for ' ' and address input
sys6: cmpqd 0,r1
sys6: cmpqd 0,r1
        beq erin                        ; no input any more
        beq erin                        ; no input any more
        cmpb ' ',0(r2)
        cmpb ' ',0(r2)
        addqd 1,r2
        addqd 1,r2
        addqd -1,r1
        addqd -1,r1
        bne sys6
        bne sys6
; now look for characters
; now look for characters
sys8:   cmpqd 0,r1
sys8:   cmpqd 0,r1
        beq erin
        beq erin
        cmpb ' ',0(r2)
        cmpb ' ',0(r2)
        addqd 1,r2
        addqd 1,r2
        addqd -1,r1
        addqd -1,r1
        beq sys8
        beq sys8
; Addresse build
; Addresse build
        movqd 0,r4
        movqd 0,r4
sy10:   movb -1(r2),r3
sy10:   movb -1(r2),r3
        checkb r5,cziff,r3
        checkb r5,cziff,r3
        bfc sy11
        bfc sy11
        bicb x'20,r3
        bicb x'20,r3
        checkb r5,cabc,r3
        checkb r5,cabc,r3
        bfs erin                        ; illegal character -> Abort
        bfs erin                        ; illegal character -> Abort
        addb 10,r5
        addb 10,r5
sy11:   ashd 4,r4
sy11:   ashd 4,r4
        orb r5,r4
        orb r5,r4
        cmpqd 0,r1
        cmpqd 0,r1
        beq sys9
        beq sys9
        addqd 1,r2
        addqd 1,r2
        addqd -1,r1
        addqd -1,r1
        br sy10
        br sy10
; Now execute ...
; Now execute ...
        .align 4
        .align 4
sys9: casew sy12[r6:w]
sys9: casew sy12[r6:w]
sy12:   .word syld-sys9
sy12:   .word syld-sys9
        .word sygo-sys9
        .word sygo-sys9
        .word sydu-sys9
        .word sydu-sys9
; Program Call
; Program Call
sygo:   jsr r4
sygo:   jsr r4
        movd x'20200000,r7
        movd x'20200000,r7
        br new
        br new
; make Dump , R4 is pointer
; make Dump , R4 is pointer
sys4:   subd 512,-20(sb)
sys4:   subd 512,-20(sb)
sys3:   movd -20(sb),r4
sys3:   movd -20(sb),r4
        movb 13,r0                      ; make CR before
        movb 13,r0                      ; make CR before
        bsr out
        bsr out
sydu:   movb 16,r5                      ; Number of Lines
sydu:   movb 16,r5                      ; Number of Lines
sy18:   sprd sb,r0                      ; Pointer to String
sy18:   sprd sb,r0                      ; Pointer to String
        movzbd 28,r1
        movzbd 28,r1
sy13:   extd r1,r4,r2,4
sy13:   extd r1,r4,r2,4
        movb datah[r2:b],0(r0)
        movb datah[r2:b],0(r0)
        addqd 1,r0
        addqd 1,r0
        addqb -4,r1
        addqb -4,r1
        cmpqb -4,r1
        cmpqb -4,r1
        bne sy13
        bne sy13
        movb 16,r6
        movb 16,r6
sy15:   movb ' ',0(r0)
sy15:   movb ' ',0(r0)
        addqd 1,r0
        addqd 1,r0
        addr -1(r6),r2
        addr -1(r6),r2
        andb 3,r2
        andb 3,r2
        cmpqb 3,r2
        cmpqb 3,r2
        bne sy14
        bne sy14
        movb ' ',0(r0)
        movb ' ',0(r0)
        addqd 1,r0
        addqd 1,r0
sy14: extsd 0(r4),r2,4,4
sy14: extsd 0(r4),r2,4,4
        movb datah[r2:b],0(r0)
        movb datah[r2:b],0(r0)
        extsd 0(r4),r2,0,4
        extsd 0(r4),r2,0,4
        movb datah[r2:b],1(r0)
        movb datah[r2:b],1(r0)
        addqd 2,r0
        addqd 2,r0
        addqd 1,r4
        addqd 1,r4
        acbb -1,r6,sy15
        acbb -1,r6,sy15
        movw x'2720,0(r0)
        movw x'2720,0(r0)
        addqd 2,r0
        addqd 2,r0
        addr -16(r4),r4
        addr -16(r4),r4
        movb 16,r6
        movb 16,r6
sy16:   movb 0(r4),r2
sy16:   movb 0(r4),r2
        checkb r1,cvalid,r2
        checkb r1,cvalid,r2
        bfc sy17
        bfc sy17
        movb '.',r2
        movb '.',r2
sy17:   movb r2,0(r0)
sy17:   movb r2,0(r0)
        addqd 1,r0
        addqd 1,r0
        addqd 1,r4
        addqd 1,r4
        acbb -1,r6,sy16
        acbb -1,r6,sy16
        movd x'0A0D27,0(r0)
        movd x'0A0D27,0(r0)
        addqd 3,r0
        addqd 3,r0
        movzbw r0,-2(sb)
        movzbw r0,-2(sb)
        sprd sb,r0
        sprd sb,r0
        bsr string
        bsr string
        acbb -1,r5,sy18
        acbb -1,r5,sy18
        movd r4,-20(sb)
        movd r4,-20(sb)
        br new
        br new
; Example:
; Example:
; ":200000006DA60BF757A000000C80CF0F00D7A1FFFFFE00D4A315165C7810D4A30D185C7800"
; ":200000006DA60BF757A000000C80CF0F00D7A1FFFFFE00D4A315165C7810D4A30D185C7800"
; ":007FE001A0"
; ":007FE001A0"
; R4 pointer to memory
; R4 pointer to memory
; R5 "0" counter
; R5 "0" counter
syld:   movqd 0,r5
syld:   movqd 0,r5
sy23:   bsr getchar
sy23:   bsr getchar
        cmpb ':',r0
        cmpb ':',r0
        bne abort                       ; Abort if not ':' - what happens after this don't care
        bne abort                       ; Abort if not ':' - what happens after this don't care
        movqd 0,r6                      ; Checksum=0
        movqd 0,r6                      ; Checksum=0
        bsr getbyte
        bsr getbyte
        cmpqb 0,r0
        cmpqb 0,r0
        beq sy19                        ; End
        beq sy19                        ; End
        movb r0,r1
        movb r0,r1
        bsr getbyte
        bsr getbyte
        movzbd r0,r2
        movzbd r0,r2
        lshd 8,r2
        lshd 8,r2
        bsr getbyte
        bsr getbyte
        movb r0,r2
        movb r0,r2
        bsr getbyte
        bsr getbyte
        cmpqb 0,r0
        cmpqb 0,r0
        bne abort                       ; if not 0 - Abort. Limited to 64K
        bne abort                       ; if not 0 - Abort. Limited to 64K
sy20:   bsr getbyte
sy20:   bsr getbyte
        movb r0,r4[r2:b]
        movb r0,r4[r2:b]
        addqd 1,r2
        addqd 1,r2
        addqd 1,r5
        addqd 1,r5
        acbb -1,r1,sy20
        acbb -1,r1,sy20
        bsr getbyte
        bsr getbyte
        cmpqd 0,r6
        cmpqd 0,r6
        bne abort
        bne abort
sy21:   bsr getchar                     ; CR and LF read
sy21:   bsr getchar                     ; CR and LF read
        cmpb 10,r0                      ; there are Files without CR !
        cmpb 10,r0                      ; there are Files without CR !
        bne sy21
        bne sy21
; show how many load up to now R2 -> decimal
; show how many load up to now R2 -> decimal
        movd 10000,r0
        movd 10000,r0
        addr 1(sb),r3
        addr 1(sb),r3
        movd x'D0006,-2(sb)
        movd x'D0006,-2(sb)
        movd r5,r2
        movd r5,r2
sy22:   movd r2,r1
sy22:   movd r2,r1
        divd r0,r1
        divd r0,r1
        orb x'30,r1
        orb x'30,r1
        movb r1,0(r3)
        movb r1,0(r3)
        addqd 1,r3
        addqd 1,r3
        modd r0,r2
        modd r0,r2
        divd 10,r0
        divd 10,r0
        cmpqd 0,r0
        cmpqd 0,r0
        bne sy22
        bne sy22
        sprd sb,r0
        sprd sb,r0
        bsr string
        bsr string
        br sy23
        br sy23
; ******* Load finished *******
; ******* Load finished *******
sy19: movqb 4,r1
sy19: movqb 4,r1
sy24:   bsr getbyte
sy24:   bsr getbyte
        acbb -1,r1,sy24
        acbb -1,r1,sy24
        cmpqd 0,r6
        cmpqd 0,r6
        bne abort
        bne abort
sy25:   bsr getchar                     ; CR and LF read
sy25:   bsr getchar                     ; CR and LF read
        cmpb 10,r0
        cmpb 10,r0
        bne sy25
        bne sy25
        addr crlf,r0
        addr crlf,r0
sy26:   bsr string
sy26:   bsr string
        br new
        br new
erin:   addr erinfo,r0
erin:   addr erinfo,r0
        br sy26
        br sy26
getchar:
getchar:
        save [r1]
        save [r1]
gec1:   cmpd -8(sb),-12(sb)
gec1:   cmpd -8(sb),-12(sb)
        beq gec1
        beq gec1
        movd -8(sb),r1
        movd -8(sb),r1
        movb x'100(sb)[r1:b],r0
        movb x'100(sb)[r1:b],r0
        addqb 1,-8(sb)
        addqb 1,-8(sb)
        restore [r1]
        restore [r1]
        ret 0
        ret 0
getbyte:
getbyte:
        save [r1,r2]
        save [r1,r2]
        bsr getchar
        bsr getchar
        checkb r1,cziff,r0
        checkb r1,cziff,r0
        bfc geb1
        bfc geb1
        bicb x'20,r0
        bicb x'20,r0
        checkb r1,cabc,r0
        checkb r1,cabc,r0
        bfc geb2
        bfc geb2
        orw x'A00,r6
        orw x'A00,r6
geb2:   addb 10,r1
geb2:   addb 10,r1
geb1:   ashd 4,r1
geb1:   ashd 4,r1
        bsr getchar
        bsr getchar
        checkb r2,cziff,r0
        checkb r2,cziff,r0
        bfc geb3
        bfc geb3
        bicb x'20,r0
        bicb x'20,r0
        checkb r2,cabc,r0
        checkb r2,cabc,r0
        bfc geb4
        bfc geb4
        orw x'A00,r6
        orw x'A00,r6
geb4:   addb 10,r2
geb4:   addb 10,r2
geb3:   orb r2,r1
geb3:   orb r2,r1
        addb r1,r6                      ; add to Checksum
        addb r1,r6                      ; add to Checksum
        movb r1,r0
        movb r1,r0
        restore [r1,r2]
        restore [r1,r2]
        ret 0
        ret 0
abort:
abort:
        addr lderr,r0
        addr lderr,r0
        bsr string
        bsr string
        br new
        br new
out:    tbitb 11,0(r7)
out:    tbitb 11,0(r7)
        bfs out
        bfs out
        movb r0,0(r7)
        movb r0,0(r7)
        ret 0
        ret 0
string:
string:
        save [r1,r7]
        save [r1,r7]
        movd x'20200000,r7
        movd x'20200000,r7
        movw -2(r0),r1
        movw -2(r0),r1
st3:    cmpqw 0,r1
st3:    cmpqw 0,r1
        beq st1
        beq st1
st2:    tbitb 11,0(r7)
st2:    tbitb 11,0(r7)
        bfs st2
        bfs st2
        movb 0(r0),0(r7)
        movb 0(r0),0(r7)
        addqd 1,r0
        addqd 1,r0
        acbw -1,r1,st2
        acbw -1,r1,st2
st1:    restore [r1,r7]
st1:    restore [r1,r7]
        ret 0
        ret 0
datal:  ; 0     1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
datal:  ; 0     1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
 .byte x'3F,6,x'5B,x'4F,x'66,x'6D,x'7D,x'07,x'7F,x'6F,x'77,x'7C,x'39,x'5E,x'79,x'71
 .byte x'3F,6,x'5B,x'4F,x'66,x'6D,x'7D,x'07,x'7F,x'6F,x'77,x'7C,x'39,x'5E,x'79,x'71
datah: .byte '0123456789ABCDEF'
datah: .byte '0123456789ABCDEF'
        .align 4
        .align 4
datfp:  .double x'87654321,x'0FEDCBA9
datfp:  .double x'87654321,x'0FEDCBA9
cvalid: .byte x'7E,x'20
cvalid: .byte x'7E,x'20
cziff:  .byte '90'
cziff:  .byte '90'
cabc:           .byte 'FA'
cabc:           .byte 'FA'
                .word txt_1-sram_ok
                .word txt_1-sram_ok
sram_ok:        .byte '512K SRAM ok.',13,10
sram_ok:        .byte '512K SRAM ok.',13,10
txt_1:  .word txt_2-welcome
txt_1:  .word txt_2-welcome
welcome:        .byte 13,10,'Hardware: TRIPUTER V0.1 , 27 May 2017'
welcome:        .byte 13,10,'Hardware: TRIPUTER V0.1 , 27 May 2017'
                .byte 13,10,'Software: MONITOR  V0.1 , 27 May 2017',13,10
                .byte 13,10,'Software: MONITOR  V0.1 , 27 May 2017',13,10
txt_2:  .word txt_3-idram_ok
txt_2:  .word txt_3-idram_ok
idram_ok:       .byte '128K iDRAM ok.',13,10
idram_ok:       .byte '128K iDRAM ok.',13,10
txt_3:  .word txt_4-error
txt_3:  .word txt_4-error
error:  .byte 'Memory Fault !!!',13,10
error:  .byte 'Memory Fault !!!',13,10
txt_4:  .word txt_6-lderr
txt_4:  .word txt_6-lderr
lderr:  .byte 13,10,'Error in Load!',13,10
lderr:  .byte 13,10,'Error in Load!',13,10
txt_6:  .word txt_7-crlf
txt_6:  .word txt_7-crlf
crlf:           .byte 13,10
crlf:           .byte 13,10
txt_7:  .word txt_8-erinfo
txt_7:  .word txt_8-erinfo
erinfo: .byte 'Error in input!',13,10
erinfo: .byte 'Error in input!',13,10
txt_8:
txt_8:
        .align 4
        .align 4
nmi:    save [r0,r1]
nmi:    save [r0,r1]
        movb -4(sb),r0
        movb -4(sb),r0
        extsd r0,r1,0,4
        extsd r0,r1,0,4
        comb datal[r1:b],x'200004(r7)
        comb datal[r1:b],x'200004(r7)
        extsd r0,r1,4,4
        extsd r0,r1,4,4
        comb datal[r1:b],x'200005(r7)
        comb datal[r1:b],x'200005(r7)
        bispsrb 1
        bispsrb 1
        addpb 0,r0
        addpb 0,r0
        cmpb x'60,r0
        cmpb x'60,r0
        beq nmi1
        beq nmi1
nmi2:   movb r0,-4(sb)
nmi2:   movb r0,-4(sb)
        restore [r0,r1]
        restore [r0,r1]
        rett 0
        rett 0
nmi1:   movqb 0,r0
nmi1:   movqb 0,r0
        br nmi2
        br nmi2
        .align 4
        .align 4
int:    save [r0]               ; RX UART
int:    save [r0]               ; RX UART
        movd -12(sb),r0
        movd -12(sb),r0
        movb 0(r7),x'100(sb)[r0:b]
        movb 0(r7),x'100(sb)[r0:b]
        addqb 1,-12(sb)
        addqb 1,-12(sb)
        movb x'100(sb)[r0:b],x'200000(r7)
        movb x'100(sb)[r0:b],x'200000(r7)
        movb r0,x'200002(r7)
        movb r0,x'200002(r7)
        restore [r0]
        restore [r0]
        reti
        reti
err:    addr error,r0
err:    addr error,r0
        bsr string
        bsr string
err1:   comw x'4040,4(r1)       ; 0 = leuchten
err1:   comw x'4040,4(r1)       ; 0 = leuchten
        br err1
        br err1
 
 

powered by: WebSVN 2.1.0

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