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_clock
- from Rev 2 to Rev 12
- ↔ Reverse comparison
Rev 2 → Rev 12
/main.srec
0,0 → 1,242
S00C00006D61696E2E7372656373 |
S315000020000000240000004000000024000000400002 |
S31500002010000021200000212E000021200000212E9A |
S315000020200000212E0000212E0000212E0000213864 |
S315000020300000212E0000212E0000212E0000212E5E |
S315000020400000212E0000212E0000212E0000212E4E |
S315000020500000212E0000212E0000212E0000212E3E |
S315000020600000212E0000212E0000212E0000212E2E |
S315000020700000212E0000212E0000212E0000212E1E |
S31500002080000021EC000021EC000021EC000021EC16 |
S31500002090000021EC000021EC000021EC000021EC06 |
S315000020A0000021EC000021EC000021EC000021ECF6 |
S315000020B0000021EC000021EC000021EC000021ECE6 |
S315000020C0000021EC000021EC000021EC000021ECD6 |
S315000020D0000021EC000021EC000021EC000021ECC6 |
S315000020E0000021EC000021EC000021EC000021ECB6 |
S315000020F0000021EC000021EC000021EC000021ECA6 |
S3150000210000002192000021920000219200002192FD |
S3150000211000002192000021920000219200002192ED |
S31500002120D0C1400B0009D1BF6012402B5F11D0BF58 |
S31500002130400B0009AFF700094F134F234F024F1210 |
S315000021404F222FE62FD62FC62FB62FA62F962F86D5 |
S315000021502F762F662F562F462F362F262F162F0611 |
S31500002160D0B3400B000960F661F662F663F664F6DA |
S3150000217065F666F667F668F669F66AF66BF66CF665 |
S315000021806DF66EF64F264F164F064F274F17002B4C |
S3150000219000094F134F234F024F124F222FE62FD61F |
S315000021A02FC62FB62FA62F962F862F762F662F5641 |
S315000021B02F462F362F262F162F06D09E400B0009AE |
S315000021C060F661F662F663F664F665F666F667F63D |
S315000021D068F669F66AF66BF66CF66DF66EF64F26DD |
S315000021E04F164F064F274F17002B00094F134F234B |
S315000021F04F024F124F222FE62FD62FC62FB62FA6ED |
S315000022002F962F862F762F662F562F462F362F2660 |
S315000022102F162F06D088400B000960F661F662F68D |
S3150000222063F664F665F666F667F668F669F66AF6C4 |
S315000022306BF66CF66DF66EF64F264F164F064F2769 |
S315000022404F17002B000900000000000000000000EE |
S315000022500000000000000000000000000000000078 |
S315000022600000000000000000000000000000000068 |
S315000022700000000000000000000000000000000058 |
S315000022800000000000000000000000000000000048 |
S315000022900000000000000000000000000000000038 |
S315000022A00000000000000000000000000000000028 |
S315000022B00000000000000000000000000000000018 |
S315000022C00000000000000000000000000000000008 |
S315000022D000000000000000000000000000000000F8 |
S315000022E000000000000000000000000000000000E8 |
S315000022F000000000000000000000000000000000D8 |
S3150000230000000000000000000000000000000000C7 |
S3150000231000000000000000000000000000000000B7 |
S3150000232000000000000000000000000000000000A7 |
S315000023300000000000000000000000000000000097 |
S315000023400000000000000000000000000000000087 |
S315000023500000000000000000000000000000000077 |
S315000023600000000000000000000000000000000067 |
S315000023700000000000000000000000000000000057 |
S315000023800000000000000000000000000000000047 |
S315000023900000000000000000000000000000000037 |
S315000023A00000000000000000000000000000000027 |
S315000023B00000000000000000000000000000000017 |
S315000023C00000000000000000000000000000000007 |
S315000023D000000000000000000000000000000000F7 |
S315000023E000000000000000000000000000000000E7 |
S315000023F000000000000000000000000000000000D7 |
S31500002400D808482EE800480ED805480BEE00AFFE67 |
S31500002410000900090009000900090009000900096E |
S31500002420000024AC0000200000002498000024A234 |
S3150000243000002484000024400000248E00090009C6 |
S315000024402FE6D70CD60C6272636232328F096EF3B6 |
S31500002450D10A321C33282632E1002712D208E101C4 |
S31500002460221261729204312C27126FE3000B6EF672 |
S315000024701000000900002F0000002F0CFECED30034 |
S3150000248000002F082FE66EF36FE3000B6EF62FE6C3 |
S315000024906EF36FE3000B6EF62FE66EF36FE3000B41 |
S315000024A06EF62FE66EF36FE3000B6EF62F86D159AC |
S315000024B02F962FA62FB62FC62FD62FE64F22410BCB |
S315000024C06EF3D155410B0009D154D555410BE400AB |
S315000024D0D154E2002120D1542120D1542120D354BB |
S315000024E0E2002322D153D3542312D1542122D154B2 |
S315000024F0410B0009D153410BE401DC5061C22118A4 |
S315000025008D45E5002C52D7496170E60971016013CB |
S31500002510C90F30668F022710710627106170E45FBD |
S31500002520611C31468B002750617021188B03D23E07 |
S31500002530612071012210D33C6230E10F21293166FE |
S315000025408F026123710623106130611C31468B00B6 |
S31500002550235061702118613002292118012922199E |
S3150000256022288903D22F612071012210D32D6230D7 |
S31500002570E10F212931668F03612371062310623032 |
S31500002580E12332168B002350D12D410B0009D12EA9 |
S31500002590410B000988178BB0D12C410BE404DD29CF |
S315000025A04D0BE400DB1DD52A4B0BE400D81DDA29C0 |
S315000025B04A0B64836280E123321689F7D920490BDE |
S315000025C00009D5254B0BE400D8174A0B64836280BB |
S315000025D0E15F321689F8490B0009D5204B0BE40060 |
S315000025E0D8124A0B64836280E15F321689F8490B80 |
S315000025F00009D50B4B0BE400D106410B0009D30CA7 |
S31500002600D10CE2002322D30C2312E4014D0B2C2221 |
S31500002610AF7300090000281800002C7400002B1C62 |
S3150000262000002EA000002F0500002F0400002F063A |
S3150000263000002F0001312D0000002F0C00002F0894 |
S3150000264000002660000026C000002844000029D4AF |
S3150000265000002EC0000026E800002ED400002EE860 |
S315000026602F86D510D1102F962FE64F22E410410B5E |
S315000026706EF3D10ED80E6410480B644CD90D490B7D |
S31500002680E43AD10D6410480B644C490BE43AD10B83 |
S315000026906410480B644C6FE34F266EF669F6000B28 |
S315000026A068F6000900002EB400002B1C00002F0560 |
S315000026B000002A0400002B5000002F0400002F0603 |
S315000026C02FE624488D046EF3D204D105A00200093A |
S315000026D0D202D10422126FE3000B6EF6ABCD0200DC |
S315000026E002140FFF00040FFF2F86D02A2F962FA665 |
S315000026F02FB62FC62FD62FE66C434F22E40E400B83 |
S315000027006EF364C0D124410B644CD124410BE40127 |
S31500002710ED002DD88B02D01F400BE40ED120410BCB |
S315000027200009D120410B00096B03E1093B168D20FE |
S3150000273060B3D11D410B64B3D11C410B640369DB4B |
S3150000274079014908DA1AE40F4A0B6593680761C0F4 |
S3150000275064B365934A0B2819280B2C8062D3720147 |
S31500002760612341040129312C4121311C6D233D187F |
S3150000277060B388178FCE2DD8D108410BE40060B323 |
S315000027806FE34F266EF66DF66CF66BF66AF669F633 |
S31500002790000B68F600002B7C00002A0400002AB417 |
S315000027A000002818000027EA000027B400002B507C |
S315000027B000002CF02FE66043C90FE10930168F02A6 |
S315000027C06EF3A0017037CB306FE3000B6EF62FE689 |
S315000027D0604CE13930168F036EF3E1C9A001301C5D |
S315000027E070D0C90F6FE3000B6EF62FE64F22A003E1 |
S315000027F06EF3D107410BE404D106410B00099105A4 |
S31500002800301089F66FE34F26000B6EF600FF0009C5 |
S31500002810000029D4000028442FE64F22A0036EF3BF |
S31500002820D106410BE404D106410B00099105301095 |
S315000028308BF66FE34F26000B6EF600FF000029D4DF |
S31500002840000028442F862F96D8602FA62FB62FC6B5 |
S315000028502FD62FE6E1EF4F22E401D95D6EF3281063 |
S31500002860490B00096080ED1FE1F7E4012D092810EE |
S31500002870490B00096080EC1FE1FBE4012C092810DC |
S31500002880490B00096080EB1FE1FDE4012B092810CC |
S31500002890490B00096080EA1FE1FEE4012A092810BD |
S315000028A0490B00096080E21FE10768D378E9381612 |
S315000028B08D102209C701018C012300090818181878 |
S315000028C00C181014A077E013A075E012A073E011A5 |
S315000028D0A071E010E10F68C378F138168917C702B6 |
S315000028E0018C012300090009122626262626262603 |
S315000028F0162626261A261E22A05DE014A05BE00FEF |
S31500002900A059E00EA057E00DA055E00CE10F68B30A |
S3150000291078F138168D17E10FC701018C01230009E4 |
S3150000292010242424242424241424242418241C209D |
S31500002930A041E015A03FE00BA03DE00AA03BE00966 |
S31500002940A039E008E10F68A378F138168D17E10F7A |
S31500002950C701018C012300091024242424242424E3 |
S315000029601424242418241C20A025E016A023E00704 |
S31500002970A021E006A01FE005A01DE004E10F6823EA |
S3150000298078F138168916C702018C0123000900095F |
S315000029901226262626262626162626261A261E220D |
S315000029A0A009E017A007E003A005E002A003E001EC |
S315000029B0A001E00090096FE34F266EF66DF66CF607 |
S315000029C06BF66AF669F6000B68F600FFABCD000100 |
S315000029D0000029D42FE6644CE20032438D0B6EF3DF |
S315000029E0930C32378904D1067201611032378BFAA3 |
S315000029F0720132438BF46FE3000B6EF62710000969 |
S31500002A00ABCD00002F862F962FA6E8042FE6E9010E |
S31500002A104F226A4C6EF3D10DE401410B6583D70C4E |
S31500002A2064A3470B6503D10BC90F410B6403D10A9D |
S31500002A30410B640379FF49118DED78FC6FE34F2656 |
S31500002A406EF66AF669F6000B68F6000900002CF0CF |
S31500002A5000002D78000027B400002B502F862F96FB |
S31500002A602FA6E81C2FE6E9074F226A436EF3D10D25 |
S31500002A70E401410B6583D10C64A3410B6503D10BC3 |
S31500002A80C90F410B6403D10A410B640379FF491155 |
S31500002A908DED78FC6FE34F266EF66AF669F6000B4D |
S31500002AA068F6000900002CF000002E16000027B47E |
S31500002AB000002B502F86D10B2FE668434F22688CDF |
S31500002AC0410B6EF328888D05E400D107410BE50D17 |
S31500002AD0A0030009D104410BE50C6FE34F266EF607 |
S31500002AE0000B68F600002BB800002C282F86D109B1 |
S31500002AF02FE64F22644C410B6EF3E800D106410BE2 |
S31500002B00E4207801E10F38178BF86FE34F266EF655 |
S31500002B10000B68F600002B7C00002B502F86D10A94 |
S31500002B202FE6644C4F226853A0026EF3D10778015A |
S31500002B30410B0009648024488FF8644C6FE34F26EC |
S31500002B406EF6000B68F6000900002B7C00002B5087 |
S31500002B502F86D1082FE668434F22688C410B6EF30F |
S31500002B60D105E401410B65836FE34F266EF6000B3A |
S31500002B7068F6000900002BB800002C282F86E11FFC |
S31500002B802FE668432819E10F4F2238168F016EF39E |
S31500002B907830910C281BD106410B0009D105E400C1 |
S31500002BA0410B65836FE34F266EF6000B68F60080D7 |
S31500002BB000002BB800002C282FE64F226EF3D1051B |
S31500002BC0410BE400C98020088BF96FE34F26000B08 |
S31500002BD06EF6000900002BD82FE66743D111E301FA |
S31500002BE027396073CB02621372022200631060738E |
S31500002BF06110CB0622006EF3E20BD30A613042105D |
S31500002C008FFC613371036110E202272BE20B601C1B |
S31500002C10613371022170D103611042108BFB6FE3A7 |
S31500002C20000B6EF6ABCD00002FE66743655CD10F57 |
S31500002C30E3012150273971FD62137202227063107D |
S31500002C4060736110CB0422006EF3E20BD30861308F |
S31500002C5042108FFC613371022170E20BD1046110C6 |
S31500002C6042108BFB6FE3000B6EF60009ABCD000341 |
S31500002C70ABCD00002F862F962FE6D919E4004F2200 |
S31500002C80E530490B6EF3D217D117611042108FFB56 |
S31500002C90E400490BE5309221D113611042108FFBFD |
S31500002CA0E400490BE530D811480B0009E400490B54 |
S31500002CB0E538480B0009E400490BE50C480B000910 |
S31500002CC0E400490BE501480B0009E400490BE50661 |
S31500002CD06FE34F266EF669F6000B68F607D000091B |
S31500002CE000002C2800014050ABCD000000002BB89E |
S31500002CF0E01F2509C701055C05236043782E242CB7 |
S31500002D00222A202838423640343E323C4E584C5611 |
S31500002D104A5448526470626E606C5E6A40084008AD |
S31500002D20000B4008400840084008000B40004008DF |
S31500002D3040084008000B401840084008400840186A |
S31500002D40000B4000400840084008000B402840089F |
S31500002D50400840084028000B400040084008400852 |
S31500002D604028000B401840084008400840284018FA |
S31500002D70000B4000000B000961436053200889489E |
S31500002D80E2002127333A312A230741243304412420 |
S31500002D9033044124330441243304412433044124BD |
S31500002DA033044124330441243304412433044124AD |
S31500002DB0330441243304412433044124330441249D |
S31500002DC0330441243304412433044124330441248D |
S31500002DD0330441243304412433044124330441247D |
S31500002DE0330441243304412433044124330441246D |
S31500002DF0330441243304412433044124330441245D |
S31500002E00330441243304412433044124312E000B7E |
S31500002E106013000BE000E000001944243054442401 |
S31500002E2030544424305444243054442430544424EC |
S31500002E3030544424305444243054442430544424DC |
S31500002E4030544424305444243054442430544424CC |
S31500002E5030544424305444243054442430544424BC |
S31500002E6030544424305444243054442430544424AC |
S31500002E70305444243054442430544424305444249C |
S31500002E80305444243054442430544424305444248C |
S31500002E90305444243054442430544424000B6043BA |
S31500002EA0496E746572727570742120436C6F636B22 |
S31500002EB00000000054696D652D2D2D2D00000000C9 |
S31500002EC0496E70757420486F7572203D3F20202032 |
S31500002ED000000000496E707574204D696E20203D1B |
S31500002EE03F20202000000000496E70757420536555 |
S31100002EF06320203D3F2020200000000051 |
S70500002000DA |
/main.map
0,0 → 1,121
Archive member included because of file (symbol) |
|
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_ashiftlt.o) |
main.o (__ashlsi3) |
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_sdivsi3.o) |
main.o (__sdivsi3) |
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o) |
main.o (__udivsi3) |
|
Allocating common symbols |
Common symbol size file |
|
clock 0x4 main.o |
min 0x1 main.o |
hour 0x1 main.o |
sec 0x1 main.o |
countup 0x4 main.o |
onesec 0x4 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 0xea0 |
*(.text) |
.text 0x0000000000002000 0x440 crt0.o |
.text 0x0000000000002440 0x8b0 main.o |
0x0000000000002c74 lcd_init |
0x0000000000002b7c lcd_pos |
0x00000000000027ce asc2hex |
0x00000000000027b4 hex2asc |
0x00000000000029d4 waitNms |
0x0000000000002484 nmi_handler |
0x0000000000002ab4 lcd_cursor |
0x00000000000027ea key_wait_on |
0x00000000000024ac main_sh |
0x0000000000002a04 lcd_disp_char |
0x00000000000026c0 int_timer |
0x00000000000026e8 command |
0x0000000000002bb8 lcd_ready |
0x0000000000002440 irq_handler |
0x0000000000002c28 lcd_wr |
0x0000000000002aec lcd_erase |
0x0000000000002bd8 lcd_rd |
0x000000000000248e trap_handler |
0x0000000000002660 disp_time |
0x00000000000024a2 error |
0x0000000000002844 key_scan |
0x0000000000002498 illegal |
0x0000000000002a5c lcd_disp_long |
0x0000000000002818 key_wait_off |
0x0000000000002b50 lcd_disp |
0x0000000000002b1c lcd_message |
.text 0x0000000000002cf0 0x88 /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_ashiftlt.o) |
0x0000000000002cf0 __ashlsi3 |
.text 0x0000000000002d78 0x9e /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_sdivsi3.o) |
0x0000000000002d78 __sdivsi3 |
.text 0x0000000000002e16 0x8a /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o) |
0x0000000000002e16 __udivsi3 |
*(.strings) |
0x0000000000002ea0 _etext = . |
|
.tors 0x0000000000002ea0 0x0 |
0x0000000000002ea0 ___ctors = . |
*(.ctors) |
0x0000000000002ea0 ___ctors_end = . |
0x0000000000002ea0 ___dtors = . |
*(.dtors) |
0x0000000000002ea0 ___dtors_end = . |
|
.rodata 0x0000000000002ea0 0x0 |
*(.rodata) |
|
.rela.dyn |
0x0000000000002ea0 __idata_start = (((ADDR (.text) + SIZEOF (.text)) + SIZEOF (.tors)) + SIZEOF (.rodata)) |
|
.data 0x0000000000002ea0 0x5c load address 0x0000000000002ea0 |
0x0000000000002ea0 __idata_start = . |
0x0000000000002ea0 _sdata = . |
*(.data) |
.data 0x0000000000002ea0 0x5c main.o |
0x0000000000002eb4 mes_time |
0x0000000000002ed4 mes_min |
0x0000000000002ec0 mes_hour |
0x0000000000002ee8 mes_sec |
0x0000000000002ea0 mes_welcome |
0x0000000000002efc _edata = . |
0x0000000000002efc __idata_end = (__idata_start + SIZEOF (.data)) |
|
.bss 0x0000000000002f00 0x10 |
0x0000000000002f00 _bss_start = . |
*(.bss) |
*(COMMON) |
COMMON 0x0000000000002f00 0x10 main.o |
0x0 (size before relaxing) |
0x0000000000002f00 clock |
0x0000000000002f04 min |
0x0000000000002f05 hour |
0x0000000000002f06 sec |
0x0000000000002f08 countup |
0x0000000000002f0c onesec |
0x0000000000002f10 _end = . |
|
.stack 0x0000000000003e00 0x0 |
0x0000000000003e00 _stack = . |
*(.stack) |
OUTPUT(main.elf elf32-sh) |
|
.comment 0x0000000000000000 0x26 |
.comment 0x0000000000000000 0x26 main.o |
/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 |
} |
/startup/crt0.S
0,0 → 1,326
/**************************************** |
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 |
.long _start ! #002 |
.long _stack+0x200 ! #003 |
.long _gnrl_ilgl ! #004 |
.long _unexpected ! #005 |
.long _slot_ilgl ! #006 |
.long _unexpected ! #007 |
.long _unexpected ! #008 |
.long _cpuerr ! #009 |
.long _dmaerr ! #010 |
.long _nmi ! #011 |
.long _unexpected ! #012 |
.long _unexpected ! #013 |
.long _unexpected ! #014 |
.long _unexpected ! #015 |
.long _unexpected ! #016 |
.long _unexpected ! #017 |
.long _unexpected ! #018 |
.long _unexpected ! #019 |
.long _unexpected ! #020 |
.long _unexpected ! #021 |
.long _unexpected ! #022 |
.long _unexpected ! #023 |
.long _unexpected ! #024 |
.long _unexpected ! #025 |
.long _unexpected ! #026 |
.long _unexpected ! #027 |
.long _unexpected ! #028 |
.long _unexpected ! #029 |
.long _unexpected ! #030 |
.long _unexpected ! #031 |
.long _trap ! #032 |
.long _trap ! #033 |
.long _trap ! #034 |
.long _trap ! #035 |
.long _trap ! #036 |
.long _trap ! #037 |
.long _trap ! #038 |
.long _trap ! #039 |
.long _trap ! #040 |
.long _trap ! #041 |
.long _trap ! #042 |
.long _trap ! #043 |
.long _trap ! #044 |
.long _trap ! #045 |
.long _trap ! #046 |
.long _trap ! #047 |
.long _trap ! #048 |
.long _trap ! #049 |
.long _trap ! #050 |
.long _trap ! #051 |
.long _trap ! #052 |
.long _trap ! #053 |
.long _trap ! #054 |
.long _trap ! #055 |
.long _trap ! #056 |
.long _trap ! #057 |
.long _trap ! #058 |
.long _trap ! #059 |
.long _trap ! #060 |
.long _trap ! #061 |
.long _trap ! #062 |
.long _trap ! #063 |
.long _irq0 ! #064 |
.long _irq1 ! #065 |
.long _irq2 ! #066 |
.long _irq3 ! #067 |
.long _irq4 ! #068 |
.long _irq5 ! #069 |
.long _irq6 ! #070 |
.long _irq7 ! #071 |
|
/*************** |
General Illegal |
Slot Illegal |
***************/ |
_gnrl_ilgl: |
_slot_ilgl: |
mov.l _pillegal, r0 |
jsr @r0 |
nop |
_restart: |
mov.l _pvector_top, r1 |
mov.l @r1, r0 |
jmp @r0 |
mov.l @(4, r1), r15 |
|
/***************** |
CPU Address Error |
DMA Address Error |
Unexpected Vector |
*****************/ |
_cpuerr: |
_dmaerr: |
_unexpected: |
mov.l _perror, r0 |
jsr @r0 |
nop |
bra _restart |
nop |
|
/**************************** |
NMI (Non Maskable Interrupt) |
****************************/ |
_nmi: |
stc.l gbr, @-r15 |
stc.l vbr, @-r15 |
sts.l mach, @-r15 |
sts.l macl, @-r15 |
sts.l pr, @-r15 |
mov.l r14, @-r15 |
mov.l r13, @-r15 |
mov.l r12, @-r15 |
mov.l r11, @-r15 |
mov.l r10, @-r15 |
mov.l r9, @-r15 |
mov.l r8, @-r15 |
mov.l r7, @-r15 |
mov.l r6, @-r15 |
mov.l r5, @-r15 |
mov.l r4, @-r15 |
mov.l r3, @-r15 |
mov.l r2, @-r15 |
mov.l r1, @-r15 |
mov.l r0, @-r15 |
mov.l _pnmi_handler, r0 |
jsr @r0 |
nop |
mov.l @r15+, r0 |
mov.l @r15+, r1 |
mov.l @r15+, r2 |
mov.l @r15+, r3 |
mov.l @r15+, r4 |
mov.l @r15+, r5 |
mov.l @r15+, r6 |
mov.l @r15+, r7 |
mov.l @r15+, r8 |
mov.l @r15+, r9 |
mov.l @r15+, r10 |
mov.l @r15+, r11 |
mov.l @r15+, r12 |
mov.l @r15+, r13 |
mov.l @r15+, r14 |
lds.l @r15+, pr |
lds.l @r15+, macl |
lds.l @r15+, mach |
ldc.l @r15+, vbr |
ldc.l @r15+, gbr |
rte |
nop |
|
/*********************** |
IRQ (Interrupt Request) |
***********************/ |
_irq0: |
_irq1: |
_irq2: |
_irq3: |
_irq4: |
_irq5: |
_irq6: |
_irq7: |
stc.l gbr, @-r15 |
stc.l vbr, @-r15 |
sts.l mach, @-r15 |
sts.l macl, @-r15 |
sts.l pr, @-r15 |
mov.l r14, @-r15 |
mov.l r13, @-r15 |
mov.l r12, @-r15 |
mov.l r11, @-r15 |
mov.l r10, @-r15 |
mov.l r9, @-r15 |
mov.l r8, @-r15 |
mov.l r7, @-r15 |
mov.l r6, @-r15 |
mov.l r5, @-r15 |
mov.l r4, @-r15 |
mov.l r3, @-r15 |
mov.l r2, @-r15 |
mov.l r1, @-r15 |
mov.l r0, @-r15 |
mov.l _pirq_handler, r0 |
jsr @r0 |
nop |
mov.l @r15+, r0 |
mov.l @r15+, r1 |
mov.l @r15+, r2 |
mov.l @r15+, r3 |
mov.l @r15+, r4 |
mov.l @r15+, r5 |
mov.l @r15+, r6 |
mov.l @r15+, r7 |
mov.l @r15+, r8 |
mov.l @r15+, r9 |
mov.l @r15+, r10 |
mov.l @r15+, r11 |
mov.l @r15+, r12 |
mov.l @r15+, r13 |
mov.l @r15+, r14 |
lds.l @r15+, pr |
lds.l @r15+, macl |
lds.l @r15+, mach |
ldc.l @r15+, vbr |
ldc.l @r15+, gbr |
rte |
nop |
|
/************ |
TRAP Handler |
************/ |
_trap: |
stc.l gbr, @-r15 |
stc.l vbr, @-r15 |
sts.l mach, @-r15 |
sts.l macl, @-r15 |
sts.l pr, @-r15 |
mov.l r14, @-r15 |
mov.l r13, @-r15 |
mov.l r12, @-r15 |
mov.l r11, @-r15 |
mov.l r10, @-r15 |
mov.l r9, @-r15 |
mov.l r8, @-r15 |
mov.l r7, @-r15 |
mov.l r6, @-r15 |
mov.l r5, @-r15 |
mov.l r4, @-r15 |
mov.l r3, @-r15 |
mov.l r2, @-r15 |
mov.l r1, @-r15 |
mov.l r0, @-r15 |
mov.l _ptrap_handler, r0 |
jsr @r0 |
nop |
mov.l @r15+, r0 |
mov.l @r15+, r1 |
mov.l @r15+, r2 |
mov.l @r15+, r3 |
mov.l @r15+, r4 |
mov.l @r15+, r5 |
mov.l @r15+, r6 |
mov.l @r15+, r7 |
mov.l @r15+, r8 |
mov.l @r15+, r9 |
mov.l @r15+, r10 |
mov.l @r15+, r11 |
mov.l @r15+, r12 |
mov.l @r15+, r13 |
mov.l @r15+, r14 |
lds.l @r15+, pr |
lds.l @r15+, macl |
lds.l @r15+, mach |
ldc.l @r15+, vbr |
ldc.l @r15+, gbr |
rte |
nop |
|
/************ |
Main Routine |
************/ |
.org _vector_top + 0x400 |
_start: |
mov.l _pvector_top, r8 |
ldc r8, vbr |
mov #0x00, r8 |
ldc r8, sr |
mov.l _pmain_sh, r8 |
jsr @r8 |
mov #0, r14 |
|
_endless: |
bra _endless |
nop |
|
.align 4 |
_pmain_sh : .long _main_sh |
_pvector_top: .long _vector_top |
_pillegal: .long _illegal |
_perror: .long _error |
_pnmi_handler: .long _nmi_handler |
_pirq_handler: .long _irq_handler |
_ptrap_handler: .long _trap_handler |
|
/********************** |
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 |
|
/dump
0,0 → 1,4
#!/bin/bash |
|
sh-elf-objdump -D -msh2 $1 | less |
|
dump
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: main.s
===================================================================
--- main.s (nonexistent)
+++ main.s (revision 12)
@@ -0,0 +1,638 @@
+ .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 (nonexistent)
+++ main.c (revision 12)
@@ -0,0 +1,837 @@
+//===============================
+// Degital Clock using IRQ Timer
+//-------------------------------
+// for VirtexE Evaluation Board
+// Apr.30 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 disp_time(void);
+void int_timer(int onoff);
+unsigned char command(unsigned char *data);
+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 lcd_disp_char(unsigned char data);
+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);
+
+//----------------
+// Global Variables
+//----------------
+unsigned char mes_welcome[] = "Interrupt! Clock";
+unsigned char mes_time[] = "Time----";
+unsigned char mes_hour[] = "Input Hour =? ";
+unsigned char mes_min[] = "Input Min =? ";
+unsigned char mes_sec[] = "Input Sec =? ";
+unsigned char hour;
+unsigned char min;
+unsigned char sec;
+unsigned long clock;
+unsigned long onesec;
+int countup;
+
+//============
+// IRQ Handler
+//============
+void irq_handler(void)
+{
+ // Timer Interval = 50ns * 2^12 = 50ns * 4096
+ // 1sec = 50ns * 2E+07 (0x01312d00)
+
+ // clock onesec
+ // 00000000 00000000
+ // 00000000 01312d00
+ // ...
+ // 01313000 > 01312d00
+ // 01313000 01312d00 + 01312d00
+ // 01313000 02625A00
+ // 00000000 01312A00
+ // ....
+
+ if (clock >= onesec)
+ {
+ onesec = onesec + 20000000 - clock;
+ clock = 0;
+ countup = 1;
+ }
+ clock = clock + 4096;
+}
+
+//============
+// NMI Handler
+//============
+void nmi_handler(void)
+{
+}
+
+//=============
+// TRAP Handler
+//=============
+void trap_handler(void)
+{
+}
+
+//====================
+// Illegal Instruction
+//====================
+void illegal(void)
+{
+}
+
+//==============
+// Address Error
+//==============
+void error(void)
+{
+}
+
+//=============
+// Main Routine
+//=============
+void main_sh(void)
+{
+ unsigned char key;
+
+ //-----------
+ // Initialize
+ //-----------
+ key_wait_off();
+ lcd_init();
+ lcd_message(0, mes_welcome);
+
+ hour = 0;
+ min = 0;
+ sec = 0;
+ clock = 0;
+ onesec = 20000000;
+ countup = 0;
+
+ disp_time();
+ int_timer(1);
+
+ //----------------
+ // Main Event Loop
+ //----------------
+ while(1)
+ {
+ if (countup)
+ {
+ countup = 0;
+
+ sec = sec + 1;
+ if ((sec % 16) >= 10) sec = sec + 6;
+ if (sec >= 0x60) sec = 0;
+
+ if (sec == 0) min = min + 1;
+ if ((min % 16) >= 10) min = min + 6;
+ if (min >= 0x60) min = 0;
+
+ if ((sec == 0) & (min == 0)) hour = hour + 1;
+ if ((hour % 16) >= 10) hour = hour + 6;
+ if (hour >= 0x24) hour = 0;
+
+ disp_time();
+ }
+
+ //----------------
+ // Adjust Function
+ //----------------
+ if (key_scan() == KEYDAT)
+ {
+ waitNms(4);
+ int_timer(0);
+
+ lcd_message(0, mes_hour);
+ do
+ {
+ key = command(&hour);
+ } while (hour >= 0x24);
+ disp_time();
+
+ lcd_message(0, mes_min);
+ do
+ {
+ key = command(&min);
+ } while (min >= 0x60);
+ disp_time();
+
+ lcd_message(0, mes_sec);
+ do
+ {
+ key = command(&sec);
+ } while (sec >= 0x60);
+ disp_time();
+
+ lcd_message(0, mes_welcome);
+
+ key_wait_off();
+
+ clock = 0;
+ onesec = 20000000;
+ countup = 0;
+ int_timer(1);
+ }
+ }
+}
+
+//****************************************************
+//* *
+//* Service Utilities *
+//* *
+//****************************************************
+
+//==================
+// Display Time
+//------------------
+// Input : none
+// Output : none
+//==================
+void disp_time(void)
+{
+ lcd_message(16, mes_time);
+ lcd_disp_char(hour);
+ lcd_disp(':');
+ lcd_disp_char(min);
+ lcd_disp(':');
+ lcd_disp_char(sec);
+}
+
+//========================================
+// Interrupt Timer ON/OFF
+//----------------------------------------
+// Input : onoff = timer on(1)/off(0)
+// Output : none
+//========================================
+void int_timer(int onoff)
+{
+ if (onoff)
+ SYS.INTCTL = 0x02140fff;
+ else
+ SYS.INTCTL = 0x00040fff;
+}
+
+//=========================================
+// Command Handler
+//-----------------------------------------
+// Input : data = display char
+// Output : command = input command
+// data = input integer
+//=========================================
+unsigned char command(unsigned char *data)
+{
+ unsigned char key;
+ int i;
+
+ lcd_pos(14);
+ lcd_disp_char(*data);
+
+ lcd_cursor(1);
+ i = 0;
+
+ do
+ {
+ if (i == 0) lcd_pos(14);
+
+ key_wait_off();
+ key = key_wait_on();
+ if (key <= KEY9)
+ {
+ lcd_disp(hex2asc(key));
+ *data = (*data & ~((0x0F) << ((1-i) * 4))) | (key << ((1-i) * 4));
+ i = (i + 1) % 2;
+ }
+ } while (key != KEYDAT);
+
+ lcd_cursor(0);
+ return(key);
+}
+
+//=============================
+// 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(4);
+
+ return(key);
+}
+
+//===================
+// Wait until Key Off
+//-------------------
+// Input : none
+// Output : none
+//===================
+void key_wait_off(void)
+{
+ while(key_scan() != KEYNONE) waitNms(4);
+}
+
+//===================================
+// 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;
+ }
+}
+
+//****************************************************
+//* *
+//* LCD Utilities *
+//* *
+//****************************************************
+
+//======================================
+// LCD Display Char Hex data (2 digit)
+//--------------------------------------
+// Input : data = display char data
+// Output : none
+//======================================
+void lcd_disp_char(unsigned char data)
+{
+ int i;
+ unsigned char digit;
+
+ for (i = 1 ; i >= 0 ; i--)
+ {
+ digit = (unsigned char) (data / (1 << i * 4)) % 0x10;
+ lcd_disp(hex2asc(digit));
+ }
+}
+
+//======================================
+// 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 (nonexistent)
+++ main.elf (revision 12)
@@ -0,0 +1,20 @@
+ELF * 4 4 ( $ @ $ @ ! !. ! !. !. !. !. !8 !. !. !. !. !. !. !. !. !. !. !. !. !. !. !. !. !. !. !. !. ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !@ ѿ`@+_п@ OO#OOO"////////v/f/V/F/6/&//г@ `abcdefghijklmnO&OOO'O + OO#OOO"////////v/f/V/F/6/&//О@ `abcdefghijklmnO&OOO'O + OO#OOO"////////v/f/V/F/6/&//Ј@ `abcdefghijklmnO&OOO'O + H. HH $ $ $ $ $@ $ /brcb22 n
+23(&2 '"ar1,'o n / / //no n/no n/no n/no n/Y//////O"AnUA TUA T ! T! T! T #"ST#T!"TA SAPa!E ,RIap q`0f'q'ap_a1F 'Pap!>a q"