URL
https://opencores.org/ocsvn/Aquarius/Aquarius/trunk
Subversion Repositories Aquarius
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 6 to Rev 7
- ↔ Reverse comparison
Rev 6 → Rev 7
/tags/add/application/shc_pi/main.srec
0,0 → 1,180
S00C00006D61696E2E7372656373 |
S315000020000000200800004000D805480BEE00AFFE97 |
S315000020100009000900090009000900090009000972 |
S315000020200000203000090009000900090009000924 |
S315000020302FE64F227FEC6EF3D50BE611D10B410B49 |
S3150000204064E3D10B410B0009D10AE400410B65E3BF |
S31500002050D109410B0009D109410B00097E146FE338 |
S315000020604F26000B6EF6000900002AE000002A4CFD |
S3150000207000002580000023E0000020800000229060 |
S315000020802F862F962FA62FB62FC62FD62FE64F2296 |
S315000020906EF3E800E9009256D52CE100D62CD72D38 |
S315000020A0D32D00096093309C051506150715790197 |
S315000020B039278FF70315D226E1502211D2259143F5 |
S315000020C0221128888F35E901DD21DC246A23DB22F1 |
S315000020D064D30009E5194C0B66D3983664A365836F |
S315000020E04C0B66A364A365834C0B66A364D365A3FC |
S315000020F0D11B410B66B36593359C75FF655D64B373 |
S315000021004C0B66B3E101219921188D096803D60F9E |
S31500002110D1146463410B65B3A00879010009000975 |
S31500002120D60AD50DD10E410B6463790128888DD16D |
S3150000213064D36FE34F266EF66DF66CF66BF66AF6B1 |
S3150000214069F6000B68F6010103BC00EF00002F28BA |
S3150000215000002B2000002D240000312C000022203E |
S31500002160000021C0000021700009000900090009D3 |
S315000021702F862F962FE66EF3E700931B991B981B6D |
S3150000218060330009303C014D025D312C6273321C14 |
S315000021900625612D31968F04E700E7016123318C16 |
S315000021A0061573FF43118DED60336FE36EF669F626 |
S315000021B0000B68F60101270FD8F000090009000995 |
S315000021C02F862FE66EF3E2009721982160730009AF |
S315000021D0307C015D312C621D034D613D31228F073C |
S315000021E0613331280615A00AE2000009000900093A |
S315000021F06073307C328C014D31280615E20177FF81 |
S3150000220047118DE560736FE36EF6000B68F601010A |
S31500002210D8F00009000900090009000900090009B1 |
S315000022202F862F962FA62FB62FC62FD62FE64F22F4 |
S315000022306EF36A436963665DE801E200E700DD1359 |
S315000022409C229B226073307C01AD611D312C64138E |
S315000022504D0B656363030367021A312801C72338F0 |
S315000022608D01021AE8006073307C770137B78FE979 |
S31500002270093560836FE34F266EF66DF66CF66BF6E6 |
S315000022806AF669F6000B68F627100101000029C0FE |
S315000022902F862F962FA62FB62FC62FD62FE64F2284 |
S315000022A07FD86EF3D521E811D92164E3490B668303 |
S315000022B064E37414D51F490B6683DD1FDC1FDB2026 |
S315000022C0E40000094D0B65E3E41065E34D0B75145E |
S315000022D04C0BE900D11B410BE80000096A934A0840 |
S315000022E04A0828888F0360834B0BE40060838804C8 |
S315000022F08F0361834B0BE4106183318C60A3301C28 |
S31500002300D111041DD111410B644D7801E107381735 |
S315000023108FE828884C0B7901D10A410B0009E11F8F |
S3150000232039178FDBE800AFCDE400000900002AF47E |
S3150000233000002A4C00002B08000023E00000266065 |
S31500002340000024500000261000002F2A0000235011 |
S315000023502F862F962FE64F226EF36843688DD11C89 |
S315000023603815040A440944094409644D912F241E72 |
S31500002370011A3818688D7430D916490B644CD11679 |
S315000023803815040A440944014409644DE164241ED5 |
S31500002390011A3818688D7430490B644CD10F6112DC |
S315000023A03815040A44094401644DE10A241E011A41 |
S315000023B03818688D7430490B644C7830688C490B3A |
S315000023C064836FE34F266EF669F6000B68F603E842 |
S315000023D010624DD30000242051EB851F00002B1CFA |
S315000023E02F862F962FE64F226EF36853D10A410BA4 |
S315000023F0644C618021188D096413D908644C000966 |
S31500002400490B7801648024488FFA644C6FE34F26A9 |
S315000024106EF669F6000B68F60000245000002420D2 |
S315000024202F862FE64F226EF36843D106410B688C48 |
S31500002430D105E401410B65836FE34F266EF6000B71 |
S3150000244068F6000900002490000025200009000914 |
S315000024502F862FE64F226043E81F2809E10F381622 |
S315000024608F016EF37830910C281BD106410B0009C1 |
S31500002470D105E400410B65836FE34F266EF6000B32 |
S3150000248068F600800000249000002520000900095D |
S315000024902F862FE64F226EF3D8050009480BE4007D |
S315000024A0C98020088BFA6FE34F266EF6000B68F69C |
S315000024B0000024C0000900090009000900090009FC |
S315000024C02FE66EF36543D214632373026053C9018A |
S315000024D0E102210B231061206120CB062300E200DC |
S315000024E0E30AD70D6170720132378BFBD10A621392 |
S315000024F072036220662C71026053C901CB0221006F |
S31500002500E200E30AD70400096170720132378FFBDB |
S3150000251060636FE3000B6EF6ABCD000000090009A7 |
S315000025202FE66EF36643655CD21161237103215079 |
S3150000253071FF6063C901210063206220CB04210082 |
S31500002540E200E30AD70A00096170720132378FFB95 |
S315000025506063D108C9012100E200E30AD70400093B |
S315000025606170720132378BFB6FE3000B6EF6000968 |
S31500002570ABCD0000ABCD000200090009000900093F |
S315000025802F862F962FE64F226EF3D11BE400410BC8 |
S31500002590E530E200D319D71A6170720132378FFB2A |
S315000025A0E400D115410BE530E2009324D71400096D |
S315000025B06170720132378FFBE400D90F490BE530A9 |
S315000025C0D810480B0009E400490BE538480B000910 |
S315000025D0E400490BE50C480B0009E400490BE50152 |
S315000025E0480B0009E400490BE5066FE34F266EF63B |
S315000025F069F6000B68F607CF000025200001404F62 |
S31500002600ABCD000000002490000900090009000974 |
S315000026102F862F962FA62FE64F22DA0C9915D80C67 |
S31500002620A0086EF300090009000900090009000965 |
S31500002630480BE4084A0B0009309089F96FE34F26EE |
S315000026406EF66AF669F6000B68F600FF000026B023 |
S315000026500000299000090009000900090009000985 |
S315000026602F862F962FA62FE64F22DA0C9915D80C17 |
S31500002670A0086EF300090009000900090009000915 |
S31500002680480BE4084A0B000930908BF96FE34F269C |
S315000026906EF66AF669F6000B68F600FF000026B0D3 |
S315000026A00000299000090009000900090009000935 |
S315000026B02F862F962FA62FB62FC62FD62FE64F2260 |
S315000026C06EF3D817E1EF2810D916490BE4016080A4 |
S315000026D0ED1F2D09E1F72810490BE4016080EC1F7E |
S315000026E02C09E1FB2810490BE4016080EB1F2B0944 |
S315000026F0E1FD2810490BE4016080EA1F2A09E1FE8A |
S315000027002810490BE4016080E21FE10768D378E9ED |
S3150000271038168D2D2209C704018C012300090009F2 |
S31500002720ABCD000100002990125252522252324281 |
S31500002730A11FE013000900090009000900090009AA |
S31500002740A117E012000900090009000900090009A3 |
S31500002750A10FE0110009000900090009000900099C |
S31500002760A107E01000090009000900090009000995 |
S31500002770E10F68C378F13816893BC702018C012343 |
S31500002780000900091E6E6E6E6E6E6E6E2E6E6E6E99 |
S315000027903E6E4E5E000900090009000900090009A5 |
S315000027A0A0E7E01400090009000900090009000972 |
S315000027B0A0DFE00F0009000900090009000900096F |
S315000027C0A0D7E00E00090009000900090009000968 |
S315000027D0A0CFE00D00090009000900090009000961 |
S315000027E0A0C7E00C0009000900090009000900095A |
S315000027F0E10F68B378F138168D3BE10FC701018C04 |
S31500002800012300091C6C6C6C6C6C6C6C2C6C6C6C15 |
S315000028103C6C4C5C0009000900090009000900092C |
S31500002820A0A7E01500090009000900090009000930 |
S31500002830A09FE00B00090009000900090009000932 |
S31500002840A097E00A0009000900090009000900092B |
S31500002850A08FE00900090009000900090009000924 |
S31500002860A087E0080009000900090009000900091D |
S31500002870E10F68A378F138168D3BE10FC701018C93 |
S31500002880012300091C6C6C6C6C6C6C6C2C6C6C6C95 |
S315000028903C6C4C5C000900090009000900090009AC |
S315000028A0A067E016000900090009000900090009EF |
S315000028B0A05FE007000900090009000900090009F6 |
S315000028C0A057E006000900090009000900090009EF |
S315000028D0A04FE005000900090009000900090009E8 |
S315000028E0A047E004000900090009000900090009E1 |
S315000028F0E10F682378F13816893AC702018C012363 |
S31500002900000900091E6E6E6E6E6E6E6E2E6E6E6E17 |
S315000029103E6E4E5E00090009000900090009000923 |
S31500002920A027E017000900090009000900090009AD |
S31500002930A01FE003000900090009000900090009B9 |
S31500002940A017E002000900090009000900090009B2 |
S31500002950A00FE001000900090009000900090009AB |
S31500002960A007E000000900090009000900090009A4 |
S3150000297090096FE34F266EF66DF66CF66BF66AF607 |
S3150000298069F6000B68F600FF000900090009000956 |
S315000029902FE6644CE20032438D0C6EF3970D3277CE |
S315000029A08904D3066130720132778BFB72013243A0 |
S315000029B08FF632776FE3000B6EF62710ABCD000073 |
S315000029C0E000001944243054442430544424305444 |
S315000029D04424305444243054442430544424305441 |
S315000029E04424305444243054442430544424305431 |
S315000029F04424305444243054442430544424305421 |
S31500002A004424305444243054442430544424305410 |
S31500002A104424305444243054442430544424305400 |
S31500002A2044243054442430544424305444243054F0 |
S31500002A3044243054442430544424305444243054E0 |
S31500002A40442430544424000B604300006043306C3F |
S31500002A503548E10B361275FF8B396353330C43014E |
S31500002A6067438902025C73FF2024C80175FF77085B |
S31500002A708B1DC802890273FF015D20154301890E73 |
S31500002A80015D6119770475FC025E212D20163072F6 |
S31500002A90015E221D202689F7A0197505000975FE1D |
S31500002AA0015E3072201689FBA011750300094301EF |
S31500002AB08903015D20144119201475FE025E3072EF |
S31500002AC02024421920254229202489F77503304005 |
S31500002AD089047401025C304020248BFB000B000942 |
S31500002AE043616C63756C6174696E672E2E2E2E2E93 |
S31500002AF00000000043616C63756C6174696E672049 |
S31500002B00444F4E4500000000436F6E7374616E744F |
S31500002B10205069203D20332E00000000CCCCCCCDC7 |
S70500002000DA |
/tags/add/application/shc_pi/main.map
0,0 → 1,101
Archive member included because of file (symbol) |
|
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o) |
main.o (__udivsi3) |
/usr/local/sh-elf/lib/libc.a(memcpy.o) |
main.o (memcpy) |
|
Allocating common symbols |
Common symbol size file |
|
T1 0x204 main.o |
T2 0x204 main.o |
PI 0x204 main.o |
T3 0x204 main.o |
|
Memory Configuration |
|
Name Origin Length Attributes |
ram 0x0000000000002000 0x0000000000001e00 |
stack 0x0000000000003e00 0x0000000000000200 |
*default* 0x0000000000000000 0xffffffffffffffff |
|
Linker script and memory map |
|
LOAD crt0.o |
LOAD main.o |
LOAD /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a |
LOAD /usr/local/sh-elf/lib/libc.a |
LOAD /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a |
|
.text 0x0000000000002000 0xae0 |
*(.text) |
.text 0x0000000000002000 0x30 crt0.o |
.text 0x0000000000002030 0x990 main.o |
0x0000000000002580 lcd_init |
0x0000000000002450 lcd_pos |
0x0000000000002220 longdiv |
0x0000000000002350 disp_oct4 |
0x0000000000002990 waitNms |
0x0000000000002610 key_wait_on |
0x0000000000002030 main_sh |
0x0000000000002490 lcd_ready |
0x0000000000002520 lcd_wr |
0x0000000000002080 calc_pi |
0x0000000000002170 longadd |
0x00000000000024c0 lcd_rd |
0x0000000000002290 disp_pi |
0x00000000000021c0 longsub |
0x00000000000026b0 key_scan |
0x0000000000002660 key_wait_off |
0x0000000000002420 lcd_disp |
0x00000000000023e0 lcd_message |
.text 0x00000000000029c0 0x8a /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o) |
0x00000000000029c0 __udivsi3 |
*fill* 0x0000000000002a4a 0xa04077000000002 00 |
.text 0x0000000000002a4c 0x94 /usr/local/sh-elf/lib/libc.a(memcpy.o) |
0x0000000000002a4c memcpy |
*(.strings) |
0x0000000000002ae0 _etext = . |
|
.tors 0x0000000000002ae0 0x0 |
0x0000000000002ae0 ___ctors = . |
*(.ctors) |
0x0000000000002ae0 ___ctors_end = . |
0x0000000000002ae0 ___dtors = . |
*(.dtors) |
0x0000000000002ae0 ___dtors_end = . |
|
.rodata 0x0000000000002ae0 0x40 |
*(.rodata) |
.rodata 0x0000000000002ae0 0x40 main.o |
|
.rela.dyn |
0x0000000000002b20 __idata_start = (((ADDR (.text) + SIZEOF (.text)) + SIZEOF (.tors)) + SIZEOF (.rodata)) |
|
.data 0x0000000000002b20 0x0 load address 0x0000000000002b20 |
0x0000000000002b20 __idata_start = . |
0x0000000000002b20 _sdata = . |
*(.data) |
0x0000000000002b20 _edata = . |
0x0000000000002b20 __idata_end = (__idata_start + SIZEOF (.data)) |
|
.bss 0x0000000000002b20 0x810 |
0x0000000000002b20 _bss_start = . |
*(.bss) |
*(COMMON) |
COMMON 0x0000000000002b20 0x810 main.o |
0x0 (size before relaxing) |
0x0000000000002b20 T1 |
0x0000000000002d24 T2 |
0x0000000000002f28 PI |
0x000000000000312c T3 |
0x0000000000003330 _end = . |
|
.stack 0x0000000000003e00 0x0 |
0x0000000000003e00 _stack = . |
*(.stack) |
OUTPUT(main.elf elf32-sh) |
|
.comment 0x0000000000000000 0x26 |
.comment 0x0000000000000000 0x26 main.o |
/tags/add/application/shc_pi/startup/sh.x
0,0 → 1,56
/************************************** |
SuperH (SH-2) C Compiler Linker Script |
**************************************/ |
|
OUTPUT_FORMAT("elf32-sh") |
OUTPUT_ARCH(sh) |
|
MEMORY |
{ |
ram : o = 0x00002000, l = 0x1e00 |
stack : o = 0x00003e00, l = 0x0200 |
} |
|
SECTIONS |
{ |
.text : { |
*(.text) |
*(.strings) |
_etext = . ; |
} > ram |
|
.tors : { |
___ctors = . ; |
*(.ctors) |
___ctors_end = . ; |
___dtors = . ; |
*(.dtors) |
___dtors_end = . ; |
} > ram |
|
.rodata : { |
*(.rodata) |
} >ram |
|
__idata_start = ADDR(.text) + SIZEOF(.text) + SIZEOF(.tors) + SIZEOF(.rodata); |
.data : AT(__idata_start) { |
__idata_start = .; |
_sdata = . ; |
*(.data) |
_edata = . ; |
} > ram |
__idata_end = __idata_start + SIZEOF(.data); |
|
.bss : { |
_bss_start = .; |
*(.bss) |
*(COMMON) |
_end = .; |
} >ram |
|
.stack : |
{ |
_stack = .; |
*(.stack) |
} > stack |
} |
/tags/add/application/shc_pi/startup/crt0.S
0,0 → 1,59
/**************************************** |
SuperH (SH-2) C compiler Startup Routine |
---------------------------------------- |
Rev1. March 21, 2003 by Thorn Aitch |
****************************************/ |
|
/******************** |
Section: .text (ROM) |
********************/ |
.section .text |
|
/************ |
Vector Table |
************/ |
_vector_top: |
.long _start ! #000 |
.long _stack+0x200 ! #001 |
|
/************ |
Main Routine |
************/ |
_start: |
mov.l _pmain_sh, r8 |
jsr @r8 |
mov #0, r14 |
|
_endless: |
bra _endless |
nop |
|
.align 4 |
_pmain_sh : .long _main_sh |
|
/********************** |
Section: .rodata (ROM) |
**********************/ |
.section .rodata |
.align 4 |
|
/******************** |
Section: .data (RAM) |
********************/ |
.section .data |
.align 4 |
|
/******************* |
Section: .bss (RAM) |
*******************/ |
.section .bss |
.align 4 |
|
/********************* |
Section: .stack (RAM) |
*********************/ |
.section .stack |
.align 4 |
_stack: |
.end |
|
/tags/add/application/shc_pi/dump
0,0 → 1,4
#!/bin/bash |
|
sh-elf-objdump -D -msh2 $1 | less |
|
tags/add/application/shc_pi/dump
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/add/application/shc_pi/main.c
===================================================================
--- tags/add/application/shc_pi/main.c (nonexistent)
+++ tags/add/application/shc_pi/main.c (revision 7)
@@ -0,0 +1,736 @@
+//===============================
+// Calculate Circular Constant Pi
+// (1024 figures)
+//-------------------------------
+// for VirtexE Evaluation Board
+// July.20 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 MAXFIGURE ((1024/4)+2) // should be (N*8)+2 to display correctly
+
+//=================
+// Define Functions
+//=================
+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);
+
+void waitNms(unsigned char n);
+unsigned char key_scan();
+unsigned char key_wait_on(void);
+void key_wait_off(void);
+
+void longadd(unsigned short *a, unsigned short *b, unsigned short *c);
+void longsub(unsigned short *a, unsigned short *b, unsigned short *c);
+int longdiv(unsigned short *a, unsigned short b, unsigned short *c);
+void calc_pi(void);
+void disp_oct4(unsigned short x);
+void disp_pi(void);
+
+//-----------------------------------
+// Work data for Circular Constant Pi
+//-----------------------------------
+unsigned short PI[MAXFIGURE];
+unsigned short T1[MAXFIGURE];
+unsigned short T2[MAXFIGURE];
+unsigned short T3[MAXFIGURE];
+
+//=============
+// Main Routine
+//=============
+void main_sh(void)
+{
+ unsigned char mes[] = "Calculating.....";
+
+ lcd_init();
+ lcd_message(0, mes);
+ calc_pi();
+ disp_pi();
+}
+
+//-------------------------------------------------
+// Calculate the Circular Constant Pi
+//-------------------------------------------------
+// (1) Matin's formula
+// PI/4 = 4*arctan(1/5) - arctan(1/239)
+// PI = 16*arctan(1/5) - 4*arctan(1/239)
+// Here, arctan(1/p) = 1/p - 1/(3*p^3) + 1/(5*p^5) - 1/(7*p^7) + ...
+// Then,
+// PI = (16*1/5 - 4*1/239)
+// - (16*1/3*5^3 - 4*1/3*239^3)
+// + (16*1/5*5^5 - 4*1/5*239^5)
+// - (16*1/7*5^7 - 4*1/7*239^7)
+// +...
+// = (1/1)*(16*5/(5*5)^1 - 4*239/(239*239)^1)
+// - (1/3)*(16*5/(5*5)^2 - 4*239/(239*239)^2)
+// + (1/5)*(16*5/(5*5)^3 - 4*239/(239*239)^3)
+// - (1/7)*(16*5/(5*5)^4 - 4*239/(239*239)^4)
+// +...
+//-------------------------------------------------
+// (2) Define Arrays for Long Figure Number
+// Each element has Octal 4 figures.
+// PI[] : Value to be converged to Pi
+// T1[] : (16* 5)/( 5* 5)^n (n=1...)
+// T2[] : ( 4*239)/(239*239)^n (n=1...)
+// T3[] : (-1)*(n+1)*(1/(2n-1))*(T1[]-T2[])
+//-------------------------------------------------
+// (3) Example
+// n TI[0] TI[1] T2[0] T2[1] T3[0] T3[1] PI[0] PI[1]
+// 0 0080 0000 0956 0000 0000 0000 0000 0000
+// 1 0003 2000 0000 0167 0003 1833 0003 1833 (+)
+// 2 0000 1280 0000 0000 0000 0426 0003 1407 (-)
+// 3 0000 0051 0000 0000 0000 0010 0003 1417 (+)
+// 4 0000 0002 0000 0000 0000 0000 0003 1417 (-)
+//-------------------------------------------------
+void calc_pi(void)
+{
+ int i;
+ int converged;
+ //-----------
+ // Initialize
+ //-----------
+ converged = 0;
+ for (i=0; i<=MAXFIGURE-1; i++)
+ {
+ PI[i] = 0;
+ T1[i] = 0;
+ T2[i] = 0;
+ T3[i] = 0;
+ }
+ T1[0] = 16*5;
+ T2[0] = 4*239;
+
+ //-----------------------------
+ // repeat until being converged
+ //-----------------------------
+ i = 1;
+ while (converged == 0)
+ {
+ //-------------
+ // Make T1 & T2
+ //-------------
+ longdiv(T1, 25, T1);
+ longdiv(T2, 239, T2);
+ longdiv(T2, 239, T2);
+ //--------
+ // Make T3
+ //--------
+ longsub(T1, T2, T3);
+ converged = longdiv(T3, (unsigned short)(2*i-1), T3);
+ //if (converged) break;
+ //-----------------
+ // Accumulate to PI
+ //-----------------
+ if (i%2 != 0)
+ longadd(PI, T3, PI);
+ else
+ longsub(PI, T3, PI);
+ //------------
+ // Increment i
+ //------------
+ i++;
+ }
+}
+
+//---------
+// Long Add
+//---------
+void longadd(unsigned short *a, unsigned short *b, unsigned short *c)
+{
+ int i;
+ unsigned short carry;
+
+ carry = 0;
+ for (i = MAXFIGURE-1; i >= 0; i--)
+ {
+ *(c+i) = *(a+i) + *(b+i) + carry;
+ if (*(c+i) < 10000)
+ carry = 0;
+ else
+ {
+ carry = 1;
+ *(c+i) = *(c+i) - 10000;
+ }
+ }
+}
+
+//---------
+// Long Sub
+//---------
+void longsub(unsigned short *a, unsigned short *b, unsigned short *c)
+{
+ int i;
+ unsigned short borrow;
+ unsigned short temp;
+
+ borrow = 0;
+ for (i = MAXFIGURE-1; i >= 0; i--)
+ {
+ temp = *(b+i) + borrow;
+ if (*(a+i) >= temp)
+ {
+ *(c+i) = *(a+i) - temp;
+ borrow = 0;
+ }
+ else
+ {
+ *(c+i) = 10000 + *(a+i) - temp;
+ borrow = 1;
+ }
+ }
+}
+
+//---------
+// Long Div
+//---------
+int longdiv(unsigned short *a, unsigned short b, unsigned short *c)
+{
+ int i;
+ int conv;
+ unsigned long al, bl, cl, dvd, rem;
+
+ conv = 1;
+ rem = 0;
+ for (i = 0; i <= MAXFIGURE-1; i++)
+ {
+ al = (unsigned long) *(a+i);
+ bl = (unsigned long) b;
+ cl = (unsigned long) *(c+i);
+
+ dvd = al + rem;
+ cl = dvd / b;
+ rem = (dvd - cl * bl) * 10000;
+ if (cl > 0) conv = 0;
+ *(c+i) = (unsigned short) cl;
+ }
+ return conv;
+}
+
+//-----------
+// Display Pi
+//-----------
+void disp_pi(void)
+{
+ unsigned char mes1[] = "Calculating DONE";
+ unsigned char mes2[] = "Constant Pi = 3.";
+ int i, j;
+
+ while(1)
+ {
+ lcd_message( 0, mes1);
+ lcd_message(16, mes2);
+ key_wait_off();
+ key_wait_on();
+ // PI[MAXFIGURE-1] has error, so do not display.
+ for (i = 0; i < (MAXFIGURE - 2) / 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ if (j == 0) lcd_pos(0);
+ if (j == 4) lcd_pos(16);
+ disp_oct4(*(PI + i*8 + j + 1));
+ }
+ key_wait_off();
+ key_wait_on();
+ }
+ }
+}
+
+//-------------------
+// Display Oct 4 digit
+//-------------------
+void disp_oct4(unsigned short x)
+{
+ unsigned short d;
+
+ d = x / 1000;
+ x = x - d * 1000;
+ lcd_disp((char)(d+0x30));
+ d = x / 100;
+ x = x - d * 100;
+ lcd_disp((char)(d+0x30));
+ d = x / 10;
+ x = x - d * 10;
+ lcd_disp((char)(d+0x30));
+ lcd_disp((char)(x+0x30));
+}
+
+//****************************************************
+//* *
+//* LCD Utilities *
+//* *
+//****************************************************
+
+//========================================
+// 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);
+}
+
+//****************************************************
+//* *
+//* 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;
+ }
+}
+
+//===============
+// End of Program
+//===============
Index: tags/add/application/shc_pi/main.elf
===================================================================
--- tags/add/application/shc_pi/main.elf (nonexistent)
+++ tags/add/application/shc_pi/main.elf (revision 7)
@@ -0,0 +1,26 @@
+ELF * 4 4 ( 0 @ H 0 /O"nAdA
+ Ae A A ~oO&