URL
https://opencores.org/ocsvn/Aquarius/Aquarius/trunk
Subversion Repositories Aquarius
Compare Revisions
- This comparison shows the changes necessary to convert path
/Aquarius/trunk/application/shc_monitor_release_v1
- from Rev 12 to Rev 2
- ↔ Reverse comparison
Rev 12 → Rev 2
/main.srec
File deleted
/main.map
File deleted
/startup/sh.x
File deleted
/startup/crt0.S
File deleted
/dump
File deleted
dump
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: main.s
===================================================================
--- main.s (revision 12)
+++ main.s (nonexistent)
@@ -1,638 +0,0 @@
- .file "main.c"
-gcc2_compiled.:
-.section .rodata
- .align 2
-.LC0:
- .string ""
- .text
- .align 2
- .global _main_sh
- .type _main_sh,@function
-_main_sh:
- mov.l r8,@-r15
- mov.l r14,@-r15
- sts.l pr,@-r15
- add #-28,r15
- mov r15,r14
- mov r14,r1
- mov.l .L10,r2
- mov r14,r1
- mov #17,r3
- mov r15,r7
- mov r1,r4
- mov r2,r5
- mov r3,r6
- mov.l .L11,r8
- jsr @r8
- nop
- mov.l r14,@(20,r14)
- mov r15,r1
- mov.l .L12,r8
- jsr @r8
- nop
- mov r15,r1
- mov.l .L13,r8
- jsr @r8
- nop
- mov r15,r1
- mov.w .L14,r2
- mov #0,r4
- mov r2,r5
- mov.l .L15,r8
- jsr @r8
- nop
-.L3:
- mov.l @(20,r14),r1
- mov.b @r1,r2
- extu.b r2,r1
- tst r1,r1
- bf .L5
- bra .L4
- nop
- .align 2
-.L5:
- mov r15,r1
- mov.l .L13,r8
- jsr @r8
- nop
- mov r15,r2
- mov r14,r1
- add #20,r1
- mov.l @r1,r2
- mov.b @r2,r7
- extu.b r7,r3
- add #1,r2
- mov.l r2,@r1
- mov #1,r4
- mov r3,r5
- mov.l .L15,r8
- jsr @r8
- nop
- bra .L3
- nop
- .align 2
-.L4:
- mov r14,r1
- mov r14,r2
- add #24,r2
- mov #0,r1
- mov.b r1,@r2
-.L6:
- bra .L8
- nop
- bra .L7
- nop
- .align 2
-.L8:
- mov r14,r1
- mov r14,r2
- add #24,r2
- mov.b @r2,r1
- extu.b r1,r2
- mov r2,r1
- shlr2 r1
- shlr2 r1
- extu.b r1,r2
- tst r2,r2
- bf .L9
- mov r15,r1
- mov.l .L13,r8
- jsr @r8
- nop
- mov r15,r1
- mov.w .L16,r2
- mov #0,r4
- mov r2,r5
- mov.l .L15,r8
- jsr @r8
- nop
-.L9:
- mov r15,r1
- mov.l .L13,r8
- jsr @r8
- nop
- mov r15,r1
- mov r14,r2
- mov r14,r1
- add #24,r1
- mov.b @r1,r2
- mov r2,r3
- add #1,r3
- mov.b r3,@r1
- extu.b r2,r1
- mov #1,r4
- mov r1,r5
- mov.l .L15,r8
- jsr @r8
- nop
- bra .L6
- nop
- .align 2
-.L7:
-.L2:
- add #28,r14
- mov r14,r15
- lds.l @r15+,pr
- mov.l @r15+,r14
- mov.l @r15+,r8
- rts
- nop
- .align 1
-.L14:
- .short 128
-.L16:
- .short 192
-.L17:
- .align 2
-.L10:
- .long .LC0
-.L11:
- .long _memcpy
-.L12:
- .long _lcdinit
-.L13:
- .long _lcdready
-.L15:
- .long _lcdwr
-.Lfe1:
- .size _main_sh,.Lfe1-_main_sh
- .align 2
- .global _lcdready
- .type _lcdready,@function
-_lcdready:
- mov.l r8,@-r15
- mov.l r14,@-r15
- sts.l pr,@-r15
- mov r15,r14
-.L19:
- mov r15,r1
- mov #0,r4
- mov.l .L22,r8
- jsr @r8
- nop
- mov.w .L23,r1
- and r0,r1
- extu.b r1,r2
- tst r2,r2
- bf .L21
- bra .L20
- nop
- .align 2
-.L21:
- bra .L19
- nop
- .align 2
-.L20:
-.L18:
- mov r14,r15
- lds.l @r15+,pr
- mov.l @r15+,r14
- mov.l @r15+,r8
- rts
- nop
- .align 1
-.L23:
- .short 128
-.L24:
- .align 2
-.L22:
- .long _lcdrd
-.Lfe2:
- .size _lcdready,.Lfe2-_lcdready
- .align 2
- .global _lcdrd
- .type _lcdrd,@function
-_lcdrd:
- mov.l r14,@-r15
- add #-12,r15
- mov r15,r14
- mov.l r4,@r14
- mov.l .L34,r1
- mov r14,r3
- mov r14,r2
- add #3,r2
- mov r1,r3
- add #2,r1
- mov.b @r2,r3
- mov #1,r2
- and r3,r2
- mov.b @r1,r3
- mov.w .L35,r7
- and r3,r7
- mov r7,r3
- or r2,r3
- mov.b r3,@r1
- mov.l .L34,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov #2,r3
- or r2,r3
- mov.b r3,@r1
- mov.l .L34,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov.w .L36,r3
- and r2,r3
- mov.b r3,@r1
- mov r14,r2
- mov r14,r1
- add #8,r1
- mov.l .L34,r2
- mov.b @r2,r3
- mov.b r3,@r1
- mov r14,r2
- mov r14,r1
- add #8,r1
- mov.l .L34,r2
- mov.b @r2,r3
- mov.b r3,@r1
- mov r14,r2
- mov r14,r1
- add #8,r1
- mov.l .L34,r2
- mov.b @r2,r3
- mov.b r3,@r1
- mov.l .L34,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov #4,r3
- or r2,r3
- mov.b r3,@r1
- mov #0,r1
- mov.l r1,@(4,r14)
-.L26:
- mov.l @(4,r14),r1
- mov #25,r2
- cmp/gt r2,r1
- bf .L29
- bra .L27
- nop
- .align 2
-.L29:
- mov r14,r2
- mov r14,r1
- add #8,r1
- mov.l .L34,r2
- mov.b @r2,r3
- mov.b r3,@r1
-.L28:
- mov.l @(4,r14),r1
- mov r1,r2
- add #1,r2
- mov.l r2,@(4,r14)
- bra .L26
- nop
- .align 2
-.L27:
- mov r14,r2
- mov r14,r1
- add #9,r1
- mov.l .L34,r3
- mov r3,r2
- add #3,r3
- mov.b @r3,r2
- mov.b r2,@r1
- mov.l .L34,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov.w .L36,r3
- and r2,r3
- mov.b r3,@r1
- mov #0,r1
- mov.l r1,@(4,r14)
-.L30:
- mov.l @(4,r14),r1
- mov #25,r2
- cmp/gt r2,r1
- bf .L33
- bra .L31
- nop
- .align 2
-.L33:
- mov r14,r2
- mov r14,r1
- add #8,r1
- mov.l .L34,r2
- mov.b @r2,r3
- mov.b r3,@r1
-.L32:
- mov.l @(4,r14),r1
- mov r1,r2
- add #1,r2
- mov.l r2,@(4,r14)
- bra .L30
- nop
- .align 2
-.L31:
- mov r14,r1
- mov r14,r2
- add #9,r2
- mov.b @r2,r3
- extu.b r3,r1
- mov r1,r0
- bra .L25
- nop
- .align 2
-.L25:
- add #12,r14
- mov r14,r15
- mov.l @r15+,r14
- rts
- nop
- .align 1
-.L35:
- .short 254
-.L36:
- .short 251
-.L37:
- .align 2
-.L34:
- .long -1412628480
-.Lfe3:
- .size _lcdrd,.Lfe3-_lcdrd
- .align 2
- .global _lcdwr
- .type _lcdwr,@function
-_lcdwr:
- mov.l r14,@-r15
- add #-16,r15
- mov r15,r14
- mov.l r4,@r14
- mov r5,r1
- mov r14,r2
- mov r14,r3
- add #4,r3
- mov.b r1,@r3
- mov.l .L47,r1
- mov r1,r2
- add #3,r1
- mov r14,r2
- mov r14,r3
- add #4,r3
- mov.b @r3,r2
- mov.b r2,@r1
- mov.l .L47,r1
- mov r14,r3
- mov r14,r2
- add #3,r2
- mov r1,r3
- add #2,r1
- mov.b @r2,r3
- mov #1,r2
- and r3,r2
- mov.b @r1,r3
- mov.w .L48,r7
- and r3,r7
- mov r7,r3
- or r2,r3
- mov.b r3,@r1
- mov.l .L47,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov.w .L49,r3
- and r2,r3
- mov.b r3,@r1
- mov.l .L47,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov.w .L50,r3
- and r2,r3
- mov.b r3,@r1
- mov r14,r2
- mov r14,r1
- add #12,r1
- mov.l .L47,r2
- mov.b @r2,r3
- mov.b r3,@r1
- mov r14,r2
- mov r14,r1
- add #12,r1
- mov.l .L47,r2
- mov.b @r2,r3
- mov.b r3,@r1
- mov r14,r2
- mov r14,r1
- add #12,r1
- mov.l .L47,r2
- mov.b @r2,r3
- mov.b r3,@r1
- mov.l .L47,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov #4,r3
- or r2,r3
- mov.b r3,@r1
- mov #0,r1
- mov.l r1,@(8,r14)
-.L39:
- mov.l @(8,r14),r1
- mov #25,r2
- cmp/gt r2,r1
- bf .L42
- bra .L40
- nop
- .align 2
-.L42:
- mov r14,r2
- mov r14,r1
- add #12,r1
- mov.l .L47,r2
- mov.b @r2,r3
- mov.b r3,@r1
-.L41:
- mov.l @(8,r14),r1
- mov r1,r2
- add #1,r2
- mov.l r2,@(8,r14)
- bra .L39
- nop
- .align 2
-.L40:
- mov.l .L47,r1
- mov r1,r2
- add #2,r1
- mov.b @r1,r2
- mov.w .L50,r3
- and r2,r3
- mov.b r3,@r1
- mov #0,r1
- mov.l r1,@(8,r14)
-.L43:
- mov.l @(8,r14),r1
- mov #25,r2
- cmp/gt r2,r1
- bf .L46
- bra .L44
- nop
- .align 2
-.L46:
- mov r14,r2
- mov r14,r1
- add #12,r1
- mov.l .L47,r2
- mov.b @r2,r3
- mov.b r3,@r1
-.L45:
- mov.l @(8,r14),r1
- mov r1,r2
- add #1,r2
- mov.l r2,@(8,r14)
- bra .L43
- nop
- .align 2
-.L44:
-.L38:
- add #16,r14
- mov r14,r15
- mov.l @r15+,r14
- rts
- nop
- .align 1
-.L48:
- .short 254
-.L49:
- .short 253
-.L50:
- .short 251
-.L51:
- .align 2
-.L47:
- .long -1412628480
-.Lfe4:
- .size _lcdwr,.Lfe4-_lcdwr
- .align 2
- .global _lcdinit
- .type _lcdinit,@function
-_lcdinit:
- mov.l r8,@-r15
- mov.l r14,@-r15
- sts.l pr,@-r15
- add #-4,r15
- mov r15,r14
- mov r15,r1
- mov #0,r4
- mov #48,r5
- mov.l .L61,r8
- jsr @r8
- nop
- mov #0,r1
- mov.l r1,@r14
-.L53:
- mov.l @r14,r1
- mov.l .L62,r2
- cmp/gt r2,r1
- bf .L55
- bra .L54
- nop
- .align 2
-.L56:
-.L55:
- mov.l @r14,r1
- mov r1,r2
- add #1,r2
- mov.l r2,@r14
- bra .L53
- nop
- .align 2
-.L54:
- mov r15,r1
- mov #0,r4
- mov #48,r5
- mov.l .L61,r8
- jsr @r8
- nop
- mov #0,r1
- mov.l r1,@r14
-.L57:
- mov.l @r14,r1
- mov.w .L63,r2
- cmp/gt r2,r1
- bf .L59
- bra .L58
- nop
- .align 2
-.L60:
-.L59:
- mov.l @r14,r1
- mov r1,r2
- add #1,r2
- mov.l r2,@r14
- bra .L57
- nop
- .align 2
-.L58:
- mov r15,r1
- mov #0,r4
- mov #48,r5
- mov.l .L61,r8
- jsr @r8
- nop
- mov r15,r1
- mov.l .L64,r8
- jsr @r8
- nop
- mov r15,r1
- mov #0,r4
- mov #56,r5
- mov.l .L61,r8
- jsr @r8
- nop
- mov r15,r1
- mov.l .L64,r8
- jsr @r8
- nop
- mov r15,r1
- mov #0,r4
- mov #12,r5
- mov.l .L61,r8
- jsr @r8
- nop
- mov r15,r1
- mov.l .L64,r8
- jsr @r8
- nop
- mov r15,r1
- mov #0,r4
- mov #1,r5
- mov.l .L61,r8
- jsr @r8
- nop
- mov r15,r1
- mov.l .L64,r8
- jsr @r8
- nop
- mov r15,r1
- mov #0,r4
- mov #6,r5
- mov.l .L61,r8
- jsr @r8
- nop
-.L52:
- add #4,r14
- mov r14,r15
- lds.l @r15+,pr
- mov.l @r15+,r14
- mov.l @r15+,r8
- rts
- nop
- .align 1
-.L63:
- .short 4999
-.L65:
- .align 2
-.L61:
- .long _lcdwr
-.L62:
- .long 204999
-.L64:
- .long _lcdready
-.Lfe5:
- .size _lcdinit,.Lfe5-_lcdinit
- .ident "GCC: (GNU) 2.95.3 20010315 (release)"
Index: main.c
===================================================================
--- main.c (revision 12)
+++ main.c (nonexistent)
@@ -1,1140 +0,0 @@
-//===============================
-// Monitor Program
-//-------------------------------
-// for VirtexE Evaluation Board
-// May.1 2003 Ver.1
-//===============================
-
-//======================================================
-// Address Map
-//======================================================
-// address sz wt wd device
-// 00000000-00001FFF 8K 0 32 ROM (code)
-// 00002000-00003DFF 6K 0 32 RAM (data)
-// 00003E00-00003FFF 512 0 32 RAM (stack)
-//
-// 00000000-0000FFFF 64K 0 32 RAM (shadow every 16KB)
-// 00010000-0001FFFF 64K 3 32 RAM (shadow every 16KB)
-// 00020000-0002FFFF 64K 0 16 RAM (shadow every 16KB)
-// 00030000-0003FFFF 64K 3 16 RAM (shadow every 16KB)
-// 00040000-ABCCFFFF (shadow RAM)
-// ABCD0000-ABCD00FF 256 3 32 PIO (shadow every 4B)
-// ABCD0100-ABCD01FF 256 3 32 UART(shadow every 4B)
-// ABCD0200-ABCD02FF 256 3 32 SYS (shadow every 8B)
-// ABCD0300-FFFBFFFF (shadow RAM)
-// FFFC0000-FFFCFFFF 64K 0 32 RAM (shadow every 16KB)
-// FFFD0000-FFFDFFFF 64K 3 32 RAM (shadow every 16KB)
-// FFFE0000-FFFEFFFF 64K 0 16 RAM (shadow every 16KB)
-// FFFF0000-FFFFFFFF 64K 3 16 RAM (shadow every 16KB)
-//
-//======================================================
-// PORT OUTPUT
-//======================================================
-// ABCD0000 : reserved
-// 31 30 29 28 27 26 25 24
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | | | | | |
-// -----------------------------------------------;
-//
-// ABCD0001 : KEYYO (Key SCAN Y-axis out)
-// 23 22 21 20 19 18 17 16
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | KY4 | KY3 | KY2 | KY1 | KY0 |
-// -----------------------------------------------
-//
-// ABCD0002 : LCDCON (LCD Control Signal)
-// 15 14 13 12 11 10 9 8
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | | | E | R/W | RS |
-// -----------------------------------------------
-//
-// ABCD0003 : LCDOUT (Write Data to LCD)
-// 7 6 5 4 3 2 1 0
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | DW7 | DW6 | DW5 | DW4 | DW3 | DW2 | DW1 | DW0 |
-// -----------------------------------------------
-//
-//======================================================
-// PORT INPUT
-//======================================================
-// ABCD0000 : reserved
-// 31 30 29 28 27 26 25 24
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | | | | | |
-// -----------------------------------------------;
-//
-// ABCD0001 : KEYXI (Key SCAN X-axis in)
-// 23 22 21 20 19 18 17 16
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | KX4 | KX3 | KX2 | KX1 | KX0 |
-// -----------------------------------------------
-//
-// ABCD0002 : reserved
-// 15 14 13 12 11 10 9 8
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | | | | | |
-// -----------------------------------------------
-//
-// ABCD0003 : LCDIN (Read Data from LCD)
-// 7 6 5 4 3 2 1 0
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | DR7 | DR6 | DR5 | DR4 | DR3 | DR2 | DR1 | DR0 |
-// -----------------------------------------------
-//
-//======================================================
-// UART: SASC (www.opencores.com)
-// Simple Asynchronous Serial Communication Device
-//======================================================
-// ABCD0100 : UARTBG0 Baud Rate Generator Div0 (R/W)
-// 31 30 29 28 27 26 25 24
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | B07 | B06 | B05 | B04 | B03 | B02 | B01 | B00 |
-// -----------------------------------------------
-//
-// ABCD0101 : UARTBG1 Baud Rate Generator Div1 (R/W)
-// 23 22 21 20 19 18 17 16
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | B17 | B16 | B15 | B14 | B13 | B12 | B11 | B10 |
-// -----------------------------------------------
-//
-// ABCD0102 : UARTCON (TXF=full_o, RXE=empty_o) (R only)
-// 15 14 13 12 11 10 9 8
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | | | | | | | TXF | RXE |
-// -----------------------------------------------
-//
-// ABCD0103 : UARTTXD(W only)/UARTRXD(R only)
-// 7 6 5 4 3 2 1 0
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// | TR7 | TR6 | TR5 | TR4 | TR3 | TR2 | TR1 | TR0 |
-// -----------------------------------------------
-//
-//======================================================
-// System Controller
-// Interrupt and Exception Controller
-//======================================================
-// ABCD0200 : INTCTL Interrupt Control (32bit R/W only)
-// 31 30 29 28 27 26 25 24
-// -----------------------------------------------
-// |E_NMI|E_IRQ|E_CER|E_DER|E_MRS| |TMRON|BRKON|
-// -----------------------------------------------
-// 23 22 21 20 19 18 17 16
-// -----------------------------------------------
-// |ILVL3|ILVL2|ILVL1|ILVL0|IVEC7|IVEC6|IVEC5|IVEC4|
-// -----------------------------------------------
-// 15 14 13 12 11 10 9 8
-// -----------------------------------------------
-// |IVEC3|IVEC2|IVEC1|IVEC0|TMR11|TMR10|TMR09|TMR08|
-// -----------------------------------------------
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// |TMR07|TMR06|TMR05|TMR04|TMR03|TMR02|TMR01|TMR00|
-// -----------------------------------------------
-// bit31: E_NMI Emulate NMI Interrupt (W only)
-// bit30: E_IRQ Emulate IRQ Interrupt (W only)
-// bit29: E_CER Emulate CPU Address Error (W only)
-// bit28: E_DER Emulate DMA Address Error (W only)
-// bit27: E_MRS Emulate Manual Reset (W only)
-// bit26: reserved
-// bit25: TMRON INTTMR OFF/ON (0:OFF, 1:ON)
-// bit24: BRKON Address Break(NMI) OFF/ON (0:OFF, 1:ON)
-// bit23: ILVL3 IRQ ILevel 3
-// bit22: ILVL2 IRQ ILevel 2
-// bit21: ILVL1 IRQ ILevel 1
-// bit20: ILVL0 IRQ ILevel 0
-// bit19: IVEC7 IRQ Vector 7
-// bit18: IVEC6 IRQ Vector 6
-// bit17: IVEC5 IRQ Vector 5
-// bit16: IVEC4 IRQ Vector 4
-// bit15: IVEC3 IRQ Vector 3
-// bit14: IVEC2 IRQ Vector 2
-// bit13: IVEC1 IRQ Vector 1
-// bit12: IVEC0 IRQ Vector 0
-// bit11: TMR11 (12 bit interval timer to generate IRQ)
-// ...
-// bit 0: TMR00 (12 bit interval timer to generate IRQ)
-//
-// ABCD0204 : BRKADR Break Address (16bit R/W only)
-// 15 14 13 12 11 10 9 8
-// -----------------------------------------------
-// |ADR15|ADR14|ADR13|ADR12|ADR11|ADR10|ADR09|ADR08|
-// -----------------------------------------------
-// 7 6 5 4 3 2 1 0
-// -----------------------------------------------
-// |ADR07|ADR06|ADR05|ADR04|ADR03|ADR02|ADR01|ADR00|
-// -----------------------------------------------
-// bit15: ADR15 Break Address15
-// ...
-// bit00: ADR00 Break Address00
-//
-
-#include "common.h"
-
-//=================
-// Define Functions
-//=================
-void utility(void);
-unsigned char command(unsigned long *data);
-unsigned long get_sformat(void);
-unsigned char get_byte_rx_echo(void);
-unsigned char hex2asc(unsigned char hex);
-unsigned char asc2hex(unsigned char asc);
-
-void waitNms(unsigned char n);
-unsigned char key_scan();
-unsigned char key_wait_on(void);
-void key_wait_off(void);
-
-void uart_tx(unsigned char data);
-unsigned char uart_rx(void);
-unsigned char uart_rx_echo(void);
-void uart_rx_flush(void);
-void uart_set_baudrate(void);
-
-void lcd_disp_long(unsigned long data);
-void lcd_cursor(unsigned char con);
-void lcd_erase(unsigned char pos);
-void lcd_message(unsigned char pos, unsigned char *pstr);
-void lcd_disp(unsigned char chr);
-void lcd_pos(unsigned char pos);
-void lcd_ready(void);
-unsigned char lcd_rd(int);
-void lcd_wr(int, unsigned char);
-void lcd_init(void);
-
-//============
-// IRQ Handler
-//============
-void irq_handler(void)
-{
- unsigned char mes_irq[] = "IRQ: Push to RTE";
-
- lcd_message(16, mes_irq);
- key_wait_off();
- key_wait_on();
- key_wait_off();
-}
-
-//============
-// NMI Handler
-//============
-void nmi_handler(void)
-{
- unsigned char mes_nmi[] = "NMI/BRK:Goto Mon";
-
- SYS.INTCTL = SYS.INTCTL & 0xfeffffff; // BRK off
-
- lcd_message(16, mes_nmi);
- key_wait_off();
- key_wait_on();
- key_wait_off();
-}
-
-//=============
-// TRAP Handler
-//=============
-void trap_handler(void)
-{
- unsigned char mes_trap[] = "TRAP:Push to RTE";
-
- lcd_message(16, mes_trap);
- key_wait_off();
- key_wait_on();
- key_wait_off();
-}
-
-//====================
-// Illegal Instruction
-//====================
-void illegal(void)
-{
- unsigned char mes_ilgl[] = "Illegal:Goto Mon";
-
- lcd_message(16, mes_ilgl);
- key_wait_off();
- key_wait_on();
- key_wait_off();
-}
-
-//==============
-// Address Error
-//==============
-void error(void)
-{
- unsigned char mes_error[]= "AdrsErr:Goto Mon";
-
- lcd_message(16, mes_error);
- key_wait_off();
- key_wait_on();
- key_wait_off();
-}
-
-//=============
-// Main Routine
-//=============
-void main_sh(void)
-{
- unsigned char mes_welcome[] = "SH-2 Monitor v.1";
- unsigned char mes_copyright[] = "(C) 2003 T.Aitch";
- unsigned char mes_memory[] = "Memory--";
- unsigned char mes_run[] = "Run---Good Luck!";
-
- unsigned char key;
- unsigned long adrs;
- unsigned long data;
- unsigned long data_edit;
-
- void (* userfunc)(void);
- long i;
-
- //-----------
- // Initialize
- //-----------
- lcd_init();
- uart_set_baudrate();
- uart_rx_flush();
- key_wait_off();
-
- //----------------
- // Welcome Message
- //----------------
- lcd_message( 0, mes_welcome);
- lcd_message(16, mes_copyright);
- for (i = 0 ; i < 2000000 ; i++);
-
- //----------
- // Clear LCD
- //----------
- key_wait_off();
- lcd_erase(0);
- lcd_erase(16);
-
- //----------------
- // Main Event Loop
- //----------------
- adrs = 0x00000000;
-
- while(1)
- {
- adrs = adrs & 0xfffffffc;
- data = * (unsigned long *) adrs;
- lcd_pos(0);
- lcd_disp_long(adrs);
- lcd_disp_long(data);
-
- lcd_message(16, mes_memory);
-
- data_edit = data;
- key = command(&data_edit);
-
- switch(key)
- {
- case KEYUTL: utility();
- break;
- case KEYRUN: lcd_message(16, mes_run);
- key_wait_off();
- adrs = adrs & 0xfffffffe;
- userfunc = (void (*)) adrs;
- (* userfunc)();
- break;
- case KEYGET: adrs = get_sformat();
- break;
- case KEYPUT: break;
- case KEYADR: adrs = data_edit;
- break;
- case KEYINC: adrs = adrs + 4;
- break;
- case KEYDEC: adrs = adrs - 4;
- break;
- case KEYDAT: * (unsigned long *) adrs = data_edit;
- adrs = adrs + 4;
- break;
- default: break;
- }
- }
-}
-
-//****************************************************
-//* *
-//* Service Utilities *
-//* *
-//****************************************************
-
-//====================
-// "Utility" Functions
-//--------------------
-// Input : none
-// Output : none
-//====================
-void utility(void)
-{
- unsigned char mes_util[] = "BRK-Func Select?";
- unsigned char mes_menu[] = "1:REG 2:BRK SET";
- unsigned char mes_break[] = "Set Break Point.";
- unsigned char mes_adrs[] = "Address?";
- unsigned char mes_brkok[] = "Break Accepted. ";
- unsigned char mes_brkng[] = "Break Canceled. ";
- unsigned char mes_SR[] = "SR :";
- unsigned char mes_PC[] = "PC :";
- unsigned char mes_SP[] = "SP(R15):";
- unsigned char mes_PR[] = "PR :";
- unsigned char mes_R0[] = "R0 :";
- unsigned char mes_R1[] = "R1 :";
- unsigned char mes_R2[] = "R2 :";
- unsigned char mes_R3[] = "R3 :";
- unsigned char mes_R4[] = "R4 :";
- unsigned char mes_R5[] = "R5 :";
- unsigned char mes_R6[] = "R6 :";
- unsigned char mes_R7[] = "R7 :";
- unsigned char mes_R8[] = "R8 :";
- unsigned char mes_R9[] = "R9 :";
- unsigned char mes_R10[] = "R10 :";
- unsigned char mes_R11[] = "R11 :";
- unsigned char mes_R12[] = "R12 :";
- unsigned char mes_R13[] = "R13 :";
- unsigned char mes_R14[] = "R14 :";
- unsigned char mes_R15[] = "R15 :";
- unsigned char mes_MACH[] = "MACH :";
- unsigned char mes_MACL[] = "MACL :";
- unsigned char mes_GBR[] = "GBR :";
- unsigned char mes_VBR[] = "VBR :";
- unsigned char key;
- unsigned long adrs;
-
- lcd_message(0, mes_util);
- lcd_message(16, mes_menu);
- key_wait_off();
-
- key = key_wait_on();
- if (key == KEY1) // Register Watcher
- {
- key_wait_off();
- lcd_message(0, mes_SR); lcd_disp_long(REG.SR);
- lcd_message(16, mes_PC); lcd_disp_long(REG.PC);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_SP); lcd_disp_long(REG.SP);
- lcd_message(16, mes_PR); lcd_disp_long(REG.PR);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R0); lcd_disp_long(REG.R0);
- lcd_message(16, mes_R1); lcd_disp_long(REG.R1);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R2); lcd_disp_long(REG.R2);
- lcd_message(16, mes_R3); lcd_disp_long(REG.R3);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R4); lcd_disp_long(REG.R4);
- lcd_message(16, mes_R5); lcd_disp_long(REG.R5);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R6); lcd_disp_long(REG.R6);
- lcd_message(16, mes_R7); lcd_disp_long(REG.R7);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R8); lcd_disp_long(REG.R8);
- lcd_message(16, mes_R9); lcd_disp_long(REG.R9);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R10); lcd_disp_long(REG.R10);
- lcd_message(16, mes_R11); lcd_disp_long(REG.R11);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R12); lcd_disp_long(REG.R12);
- lcd_message(16, mes_R13); lcd_disp_long(REG.R13);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_R14); lcd_disp_long(REG.R14);
- lcd_message(16, mes_R15); lcd_disp_long(REG.R15);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_MACH); lcd_disp_long(REG.MACH);
- lcd_message(16, mes_MACL); lcd_disp_long(REG.MACL);
- key_wait_on();
- key_wait_off();
- lcd_message(0, mes_GBR); lcd_disp_long(REG.GBR);
- lcd_message(16, mes_VBR); lcd_disp_long(REG.VBR);
- key_wait_on();
- key_wait_off();
- }
- else if (key == KEY2) // Break Setting
- {
- lcd_message(0, mes_break);
- lcd_message(16, mes_adrs);
- adrs = SYS.BRKADR;
- key = command(&adrs);
- if (key == KEYDAT)
- {
- lcd_message(0, mes_brkok);
- key_wait_off();
- SYS.BRKADR = adrs;
- SYS.INTCTL = SYS.INTCTL | 0x01000000; // BRK on
- }
- else
- {
- lcd_message(0, mes_brkng);
- key_wait_off();
- SYS.INTCTL = SYS.INTCTL & 0xfeffffff; // BRK off
- }
- }
-}
-
-//=========================================
-// Command Handler
-//-----------------------------------------
-// Input : data = display long data
-// Output : command = input command
-// data = input long data
-//=========================================
-unsigned char command(unsigned long *data)
-{
- unsigned char key;
- int i;
-
- lcd_pos(24);
- lcd_disp_long(*data);
-
- lcd_cursor(1);
- i = 0;
-
- do
- {
- if (i == 0) lcd_pos(24);
-
- key_wait_off();
- key = key_wait_on();
- if (key <= KEYF)
- {
- lcd_disp(hex2asc(key));
- *data = (*data & ~((0x0000000F) << ((7-i) * 4))) | (key << ((7-i) * 4));
- }
-
- i = (i + 1) % 8;
- } while (key <= KEYF);
-
- lcd_cursor(0);
- return(key);
-}
-
-//=================================================
-// Get S-Format
-//-------------------------------------------------
-// Input : none
-// Output : get_sformat = address of top-record
-//=================================================
-unsigned long get_sformat(void)
-{
- unsigned char mes_get[] = "Get S-Format(S3)";
- unsigned char mes_send[] = "please send.....";
- unsigned char mes_receive[] = "-----OK!";
- unsigned char mes_get_error[] = "ERR:Bad S-Format";
-
- int topflag;
- int endflag;
- unsigned char rc;
- unsigned char rxdata;
- unsigned long adrs;
- unsigned long adrs_record;
- unsigned long adrs_top = 0;
- int count;
- unsigned char checksum;
- int error;
- int i;
-
- error = 0;
- topflag = 1;
- endflag = 0;
-
- uart_rx_flush();
- lcd_message( 0, mes_get);
- lcd_message(16, mes_send);
-
- while(endflag == 0)
- {
- //
- // Wait 'S' character
- //
- while (uart_rx_echo() != 'S');
- //
- // Check Record Type
- //
- switch(rc = uart_rx_echo())
- {
- case '3': //-------- Record of 4 byte length address
- case '7': //-------- End of Record
- //
- // Get Record Length
- //
- rxdata = get_byte_rx_echo();
- checksum = rxdata;
- count = rxdata - 5;
- //
- // Get Record Address
- //
- adrs = 0;
- for (i = 0 ; i < 4 ; i++)
- {
- rxdata = get_byte_rx_echo();
- checksum = checksum + rxdata;
- adrs = (adrs << 8) + (unsigned long) rxdata;
- }
- adrs_record = adrs;
- if (topflag)
- {
- adrs_top = adrs;
- topflag = 0;
- }
- //
- // Get Record Data and Save to memory
- //
- while(count > 0)
- {
- rxdata = get_byte_rx_echo();
- checksum = checksum + rxdata;
- * (unsigned char *) adrs = rxdata;
- adrs = adrs + 1;
- count = count - 1;
- }
- //
- // Check checksum
- //
- rxdata = get_byte_rx_echo();
- checksum = (~checksum) & 0x0ff;
- error = (checksum != rxdata);
- //
- // Continue ? or Finish ?
- //
- if (rc == '3') // S3 format
- break;
- else // S7 format
- {
- endflag = 1;
- break;
- }
- //
- // ignore another Record
- //
- default : continue;
- }
- if (error)
- {
- lcd_message(16, mes_get_error);
- rc = key_wait_on();
- break;
- }
- else
- {
- lcd_pos(16);
- lcd_disp_long(adrs_record);
- lcd_message(24, mes_receive);
- }
- }
- return(adrs_top);
-}
-
-//==============================================
-// Get Byte from Rx with echo
-//----------------------------------------------
-// Input : none
-// Output : get_byte_rx_echo = received byte
-//==============================================
-unsigned char get_byte_rx_echo(void)
-{
- unsigned char hex;
-
- hex = asc2hex(uart_rx_echo());
- hex = (hex << 4) + asc2hex(uart_rx_echo());
-
- return(hex);
-}
-
-//=============================
-// Convert Hex(nibble) to Ascii
-//-----------------------------
-// Input : hex (0x00-0x0F)
-// Output : hex2asc
-//=============================
-unsigned char hex2asc(unsigned char hex)
-{
- hex = hex & 0x0f;
- if (hex <= 0x09)
- return(hex + '0');
- else
- return(hex - 0x0a + 'A');
-}
-
-//=============================
-// Convert Ascii to Hex(nibble)
-//-----------------------------
-// Input : asc(0-9, A-F)
-// Output : asc2hex
-//=============================
-unsigned char asc2hex(unsigned char asc)
-{
- if (asc <= '9')
- return((asc - '0') & 0x0f);
- else
- return((asc - 'A' + 0x0a) & 0x0f);
-}
-
-//****************************************************
-//* *
-//* Key Utilities *
-//* *
-//****************************************************
-
-//===================================
-// Wait until Key On
-//-----------------------------------
-// Input : none
-// Output : key = pushed key code
-//===================================
-unsigned char key_wait_on(void)
-{
- unsigned char key;
-
- while((key = key_scan()) == KEYNONE) waitNms(8);
-
- return(key);
-}
-
-//===================
-// Wait until Key Off
-//-------------------
-// Input : none
-// Output : none
-//===================
-void key_wait_off(void)
-{
- while(key_scan() != KEYNONE) waitNms(8);
-}
-
-//===================================
-// Key Scan
-//-----------------------------------
-// Input : none
-// Output : key = pushed key code
-//===================================
-unsigned char key_scan()
-{
- unsigned char keyx4;
- unsigned char keyx3;
- unsigned char keyx2;
- unsigned char keyx1;
- unsigned char keyx0;
-
- PORTO.KEYYO.BYTE = 0xef; // KEYY4
- waitNms(1);
- keyx4 = PORTI.KEYXI.BYTE & 0x1f;
-
- PORTO.KEYYO.BYTE = 0xf7; // KEYY3
- waitNms(1);
- keyx3 = PORTI.KEYXI.BYTE & 0x1f;
-
- PORTO.KEYYO.BYTE = 0xfb; // KEYY2
- waitNms(1);
- keyx2 = PORTI.KEYXI.BYTE & 0x1f;
-
- PORTO.KEYYO.BYTE = 0xfd; // KEYY1
- waitNms(1);
- keyx1 = PORTI.KEYXI.BYTE & 0x1f;
-
- PORTO.KEYYO.BYTE = 0xfe; // KEYY0
- waitNms(1);
- keyx0 = PORTI.KEYXI.BYTE & 0x1f;
-
- switch(keyx4)
- {
- case 0x17 : return(KEYPUT);
- case 0x1b : return(KEYGET);
- case 0x1d : return(KEYRUN);
- case 0x1e : return(KEYUTL);
- }
- switch(keyx3)
- {
- case 0x0f : return(KEYADR);
- case 0x17 : return(KEYF);
- case 0x1b : return(KEYE);
- case 0x1d : return(KEYD);
- case 0x1e : return(KEYC);
- }
- switch(keyx2)
- {
- case 0x0f : return(KEYINC);
- case 0x17 : return(KEYB);
- case 0x1b : return(KEYA);
- case 0x1d : return(KEY9);
- case 0x1e : return(KEY8);
- }
- switch(keyx1)
- {
- case 0x0f : return(KEYDEC);
- case 0x17 : return(KEY7);
- case 0x1b : return(KEY6);
- case 0x1d : return(KEY5);
- case 0x1e : return(KEY4);
- }
- switch(keyx0)
- {
- case 0x0f : return(KEYDAT);
- case 0x17 : return(KEY3);
- case 0x1b : return(KEY2);
- case 0x1d : return(KEY1);
- case 0x1e : return(KEY0);
- }
- return(KEYNONE);
-}
-
-//==================
-// Wait n ms
-//------------------
-// Input : n ms
-// Output : none
-//==================
-void waitNms(unsigned char n)
-{
- int i, j;
- unsigned char dummy;
-
- for (i = 0 ; i < n ; i++)
- {
- // 1ms = 20000 * 50ns (20MHz)
- for (j = 0 ; i <= 10000 ; i++) dummy = PORTI.RESERVED_0;
- }
-}
-
-//****************************************************
-//* *
-//* UART Utilities *
-//* *
-//****************************************************
-
-//==============================
-// Send Tx
-// -----------------------------
-// Input : data = send data
-// Output : none
-//==============================
-void uart_tx(unsigned char data)
-{
- while(UART.UARTCON.BIT.TXF);
- UART.BYTE.TX = data;
-}
-
-//====================================
-// Receive RX
-// -----------------------------------
-// Input : none
-// Output : uart_rx = receive data
-//====================================
-unsigned char uart_rx(void)
-{
- while(UART.UARTCON.BIT.RXE);
- return(UART.BYTE.RX);
-}
-
-//=========================================
-// Receive RX with echo to TX
-// ----------------------------------------
-// Input : none
-// Output : uart_rx_echo = receive data
-//=========================================
-unsigned char uart_rx_echo(void)
-{
- unsigned char data;
-
- while(UART.UARTCON.BIT.RXE);
- data = UART.BYTE.RX;
-
- while(UART.UARTCON.BIT.TXF);
- UART.BYTE.TX = data;
-
- return(data);
-}
-
-//==================
-// Flush RXD FIFO
-//------------------
-// Input : none
-// Output : none
-//==================
-void uart_rx_flush(void)
-{
- unsigned char dummy;
-
- while(UART.UARTCON.BIT.RXE == 0) dummy = UART.BYTE.RX;
-}
-
-//==============================
-// Set Baud Rate 9600bps
-//------------------------------
-// 9600*4=38.4KHz
-// 20MHz/38.4KHz=520.8=20*26
-// (BRG0 + 2) = 20, BRG0=18 =0x12
-// (BRG1 + 1) = 26, BRG1=25 =0x19
-//
-// 4800*4=19.2KHz
-// 20MHz/19.2KHz=1041.7=20*52
-// (BRG0 + 2) = 20, BRG0=18 =0x12
-// (BRG1 + 1) = 52, BRG1=51 =0x33
-//
-// 2400*4=9.6KHz
-// 20MHz/9.6KHz=2083.3=20*104
-// (BRG0 + 2) = 20, BRG0=18 =0x12
-// (BRG1 + 1) =104, BRG1=103=0x67
-//
-// 1200*4=4.8KHz
-// 20MHz/4.8KHz=4166.7=20*208
-// (BRG0 + 2) = 20, BRG0=18 =0x12
-// (BRG1 + 1) =208, BRG1=207=0xcf
-//
-// Input : none
-// Output : none
-//==============================
-void uart_set_baudrate(void)
-{
- int i;
- unsigned char dummy;
-
- UART.UARTBG0 = 18;
- UART.UARTBG1 = 207;
-
- for (i = 0; i < 65536; i++) dummy = PORTI.RESERVED_0;
-}
-
-//****************************************************
-//* *
-//* LCD Utilities *
-//* *
-//****************************************************
-
-//======================================
-// LCD Display Long Hex data (8 digit)
-//--------------------------------------
-// Input : data = display long data
-// Output : none
-//======================================
-void lcd_disp_long(unsigned long data)
-{
- int i;
- unsigned char digit;
-
- for (i = 7 ; i >= 0 ; i--)
- {
- digit = (unsigned char) (data / (1 << i * 4)) % 0x10;
- lcd_disp(hex2asc(digit));
- }
-}
-
-//================================
-// Cursor On/Off
-//--------------------------------
-// Input : cur = off(0)/on(1)
-// Output : none
-//================================
-void lcd_cursor(unsigned char con)
-{
- lcd_ready();
- if (con)
- lcd_wr(INST, 0x0d);
- else
- lcd_wr(INST, 0x0c);
-}
-
-
-//===============================
-// Erase 1 line from the position
-//-------------------------------
-// Input : pos = position
-// 1st line = 00-15
-// 2nd line = 16-31
-// Ouput : none
-//===============================
-void lcd_erase(unsigned char pos)
-{
- int i;
-
- lcd_pos(pos);
- for (i = 0; i < 16; i++) lcd_disp(' ');
-}
-
-//========================================
-// Print a Message from Current Position
-//----------------------------------------
-// Input : pstr = message top address
-// Outpur : none
-//========================================
-void lcd_message(unsigned char pos, unsigned char *pstr)
-{
- unsigned char *pmessage;
-
- lcd_pos(pos);
- pmessage = pstr;
- while (*pmessage) lcd_disp(*pmessage++);
-}
-
-//==========================================
-// Display One Character on Current Position
-//------------------------------------------
-// Input : chr = display charcter
-// Output : none
-//==========================================
-void lcd_disp(unsigned char chr)
-{
- lcd_ready();
- lcd_wr(DATA, chr);
-}
-
-//================================
-// Set LCD Display Position
-//--------------------------------
-// Input : pos = position
-// 1st line = 00-15
-// 2nd line = 16-31
-// Ouput : none
-//================================
-void lcd_pos(unsigned char pos)
-{
- unsigned char phypos;
-
- phypos = pos % 32;
- if (phypos >= 16)
- phypos = (phypos - 16) + 64;
- phypos = phypos | 0x80;
-
- lcd_ready();
- lcd_wr(INST, phypos);
-}
-
-//=====================
-// Wait until LCD ready
-//---------------------
-// Input : none
-// Output : none
-//=====================
-void lcd_ready(void)
-{
- while ((lcd_rd(INST) & 0x80) == 0x80);
-}
-
-//=================================
-// LCD Read
-//---------------------------------
-// Input : rs (0=Instr,1=Data)
-// Output : lcd_rd (Read Data)
-//=================================
-unsigned char lcd_rd(int rs)
-{
- int i;
- unsigned char dummy;
- unsigned char data;
-
- PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01);
-
- // wait 60ns = 2cyc@20MHz
- dummy = PORTI.RESERVED_0;
- dummy = PORTI.RESERVED_0;
-
-
- PORTO.LCDCON.BYTE = 0x06 | (rs & 0x01);
-
- // wait 500ns = 10cyc@20MHz
- for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0;
-
- data = PORTI.LCDIN;
-
- PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01);
-
- // wait 500ns = 10cyc@20MHz
- for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0;
-
- return(data);
-}
-
-//=================================
-// LCD Write
-//---------------------------------
-// Input : rs (0=Instr,1=Data)
-// wd (Write Data)
-// Output : none
-//=================================
-void lcd_wr(int rs, unsigned char wd)
-{
- int i;
- unsigned char dummy;
-
- PORTO.LCDOUT = wd;
-
- PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01);
-
- // wait 60ns = 2cyc@20MHz
- dummy = PORTI.RESERVED_0;
- dummy = PORTI.RESERVED_0;
-
- PORTO.LCDCON.BYTE = 0x04 | (rs & 0x01);
-
- // wait 500ns = 10cyc@20MHz
- for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0;
-
- PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01);
-
- // wait 500ns = 10cyc@20MHz
- for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0;
-}
-
-//==================
-// LCD Initialize
-//------------------
-// Input : none
-// Output : none
-//==================
-void lcd_init(void)
-{
- int i;
- unsigned char dummy;
-
- lcd_wr(INST, 0x30);
-
- // wait 4100us=82000cyc@20MHz
- for (i = 0 ; i < 82000 ; i++) dummy = PORTI.RESERVED_0;
-
- lcd_wr(INST, 0x30);
-
- // wait 100us=2000cyc@20MHz
- for (i = 0 ; i < 2000 ; i++) dummy = PORTI.RESERVED_0;
-
- lcd_wr(INST, 0x30);
-
- // set function (8bit, 2lines)
- lcd_ready();
- lcd_wr(INST, 0x38);
-
- // display (disp on, cursor off, blink off)
- lcd_ready();
- lcd_wr(INST, 0x0c);
-
- // clear
- lcd_ready();
- lcd_wr(INST, 0x01);
-
- // entry mode (increment, no-shift)
- lcd_ready();
- lcd_wr(INST, 0x06);
-}
-
-//===============
-// End of Program
-//===============
Index: main.elf
===================================================================
--- main.elf (revision 12)
+++ main.elf (nonexistent)
@@ -1,27 +0,0 @@
-ELF * 4 4 ( @ @ . . . . . 8 . . . . . . . . . . . . . . . . . . . . @ ѿ`@+_п@ //ѿP!qP!q`p!q *!qP!qP!q!"q!2q!Bq!Rq!bq!rq!q!q!q!q!q!q!q`p!q
-!q !q !q "!О@ OO#OOO"////////v/f/V/F/6/&//В@ `abcdefghijklmnO&OOO'O + OO#OOO"////////v/f/V/F/6/&//}@ `abcdefghijklmnO&OOO'O + H. HH 8 @ /
-/O"nAd
-Ae H A H ~oO&n