diff --git a/pcb/kicad/libs/mypackages.mod b/pcb/kicad/libs/mypackages.mod index a90702e..28caf95 100644 --- a/pcb/kicad/libs/mypackages.mod +++ b/pcb/kicad/libs/mypackages.mod @@ -1,34 +1,36 @@ -PCBNEW-LibModule-V1 Sat 23 Jul 2011 01:19:59 PM CEST +PCBNEW-LibModule-V1 Wed 14 Sep 2011 12:39:55 AM CEST # encoding utf-8 $INDEX -TSSOP48 -PQFP208_ALTPADS -SOT563 -LQFP80-.5 -VFBGA48 -VFBGA54 -VFBGA36 -TSSOP10 -CP_TANTAL_SMD_D BT_KEYSTONE_1059_20MM -XTAL_SMD_05019 -XTAL_SMD_05032 -USB-MINIB-THT -pin_array_7x2 -SM0805_FIXEDMASK +CP_TANTAL_SMD_D +DIP-36 +HC49US LED-3MM-FIXED -QFN10-2x2 +LQFP80-.5 PAD_1x1mm +PQFP208_ALTPADS +QFN10-2x2 +QFN10-2x2_LONGPADS +R_PACK_0804 +SM0805_FIXEDMASK SM1210L SM1210L_NEW -HC49US +SMD_5.7X5.7 +SMD_DO1608 +SOT23-5_LARGEPADS +SOT563 +TSOP40 TSOPII-32 TSOPII-44 -R_PACK_0804 -SMD_5.7X5.7 -SOT23-5_LARGEPADS -SMD_DO1608 -QFN10-2x2_LONGPADS +TSSOP10 +TSSOP48 +USB-MINIB-THT +VFBGA36 +VFBGA48 +VFBGA54 +XTAL_SMD_05019 +XTAL_SMD_05032 +pin_array_7x2 $EndINDEX $MODULE TSSOP48 Po 0 0 0 15 4B6E17E6 00000000 ~~ @@ -5043,7 +5045,7 @@ Cd SOT23-5 Sc 00000000 AR /4B6EC9C3/4B6ED134 Op 0 0 0 -At SMD +At SMD T0 0 -150 300 320 0 70 N V 21 N "U321" T1 0 150 300 250 0 50 N I 21 N "MCP1824-2502E/OT" DS 600 -350 600 350 80 21 @@ -5096,4 +5098,574 @@ Of 0.000000 0.000000 0.000000 Ro 0.000000 0.000000 0.000000 $EndSHAPE3D $EndMODULE SOT23-5_LARGEPADS +$MODULE DIP-36 +Po 0 0 0 15 4E6FC26F 00000000 ~~ +Li DIP-36 +Cd Module Dil 36 pins, pads elliptiques, e=600 mils +Kw DIL +Sc 00000000 +AR /4E6FAF78 +Op 0 0 0 +T0 -7500 -1500 700 697 0 113 N V 21 N "U2" +T1 -1300 0 700 700 0 120 N V 21 N "SNESMASKROM" +DS 8000 2500 -10000 2500 118 21 +DS -10000 -2500 8000 -2500 118 21 +DS -10000 600 -10000 2500 118 21 +DS -10000 -2500 -10000 -600 118 21 +DA -10000 0 -9400 0 900 118 21 +DA -10000 0 -10000 -600 900 118 21 +DS 8000 -2500 8000 2500 118 21 +$PAD +Sh "1" R 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 32 "N-000034" +Po -9500 3000 +$EndPAD +$PAD +Sh "2" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 21 "N-000023" +Po -8500 3000 +$EndPAD +$PAD +Sh "3" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 24 "N-000026" +Po -7500 3000 +$EndPAD +$PAD +Sh "4" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 23 "N-000025" +Po -6500 3000 +$EndPAD +$PAD +Sh "5" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 26 "N-000028" +Po -5500 3000 +$EndPAD +$PAD +Sh "6" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 29 "N-000031" +Po -4500 3000 +$EndPAD +$PAD +Sh "7" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 18 "N-000019" +Po -3500 3000 +$EndPAD +$PAD +Sh "8" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 19 "N-000020" +Po -2500 3000 +$EndPAD +$PAD +Sh "9" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 20 "N-000022" +Po -1500 3000 +$EndPAD +$PAD +Sh "10" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 30 "N-000032" +Po -500 3000 +$EndPAD +$PAD +Sh "11" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 33 "N-000035" +Po 500 3000 +$EndPAD +$PAD +Sh "12" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 35 "N-000037" +Po 1500 3000 +$EndPAD +$PAD +Sh "13" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 12 "N-000010" +Po 2500 3000 +$EndPAD +$PAD +Sh "14" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 14 "N-000013" +Po 3500 3000 +$EndPAD +$PAD +Sh "15" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 1 "/D0" +Po 4500 3000 +$EndPAD +$PAD +Sh "16" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 2 "/D1" +Po 5500 3000 +$EndPAD +$PAD +Sh "17" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 3 "/D2" +Po 6500 3000 +$EndPAD +$PAD +Sh "18" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 31 "N-000033" +Po 7500 3000 +$EndPAD +$PAD +Sh "19" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 4 "/D3" +Po 7500 -3000 +$EndPAD +$PAD +Sh "20" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 5 "/D4" +Po 6500 -3000 +$EndPAD +$PAD +Sh "21" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 6 "/D5" +Po 5500 -3000 +$EndPAD +$PAD +Sh "22" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 7 "/D6" +Po 4500 -3000 +$EndPAD +$PAD +Sh "23" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 8 "/D7" +Po 3500 -3000 +$EndPAD +$PAD +Sh "24" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 9 "N-000007" +Po 2500 -3000 +$EndPAD +$PAD +Sh "25" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 13 "N-000012" +Po 1500 -3000 +$EndPAD +$PAD +Sh "26" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 25 "N-000027" +Po 500 -3000 +$EndPAD +$PAD +Sh "27" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 17 "N-000018" +Po -500 -3000 +$EndPAD +$PAD +Sh "28" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 15 "N-000015" +Po -1500 -3000 +$EndPAD +$PAD +Sh "29" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 16 "N-000017" +Po -2500 -3000 +$EndPAD +$PAD +Sh "30" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 28 "N-000030" +Po -3500 -3000 +$EndPAD +$PAD +Sh "31" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 27 "N-000029" +Po -4500 -3000 +$EndPAD +$PAD +Sh "32" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 22 "N-000024" +Po -5500 -3000 +$EndPAD +$PAD +Sh "33" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 10 "N-000008" +Po -6500 -3000 +$EndPAD +$PAD +Sh "34" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 34 "N-000036" +Po -7500 -3000 +$EndPAD +$PAD +Sh "35" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 0 "" +Po -8500 -3000 +$EndPAD +$PAD +Sh "36" O 620 900 0 0 0 +Dr 320 0 0 +At STD N 00E0FFFF +Ne 11 "N-000009" +Po -9500 -3000 +$EndPAD +$SHAPE3D +Na "dil\\dil_40-w600.wrl" +Sc 1.000000 1.000000 1.000000 +Of 0.000000 0.000000 0.000000 +Ro 0.000000 0.000000 0.000000 +$EndSHAPE3D +$EndMODULE DIP-36 +$MODULE TSOP40 +Po 0 0 0 15 4E6FDB9E 00000000 ~~ +Li TSOP40 +Sc 00000000 +AR /4E6FAB7B +Op 0 0 0 +T0 1141 906 600 600 0 120 N I 21 N "U1" +T1 0 0 600 600 0 120 N V 21 N "29F032" +DS 3268 -1969 3268 1969 79 21 +DS 3268 1969 -3268 1969 79 21 +DS -3268 -1969 3268 -1969 79 21 +DS -3268 1969 -3268 -1969 79 21 +DC 2896 1615 3071 1690 79 21 +$PAD +Sh "1" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 24 "N-000025" +Po 3828 1870 +$EndPAD +$PAD +Sh "2" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 25 "N-000026" +Po 3828 1673 +$EndPAD +$PAD +Sh "3" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 26 "N-000027" +Po 3828 1476 +$EndPAD +$PAD +Sh "4" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 27 "N-000028" +Po 3828 1279 +$EndPAD +$PAD +Sh "5" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 28 "N-000029" +Po 3828 1082 +$EndPAD +$PAD +Sh "6" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 29 "N-000030" +Po 3828 885 +$EndPAD +$PAD +Sh "7" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 30 "N-000031" +Po 3828 688 +$EndPAD +$PAD +Sh "8" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 31 "N-000032" +Po 3828 492 +$EndPAD +$PAD +Sh "9" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 11 "N-000009" +Po 3828 295 +$EndPAD +$PAD +Sh "10" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 1 "+5V" +Po 3828 98 +$EndPAD +$PAD +Sh "11" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 0 "" +Po 3828 -98 +$EndPAD +$PAD +Sh "12" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 1 "+5V" +Po 3828 -295 +$EndPAD +$PAD +Sh "13" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 18 "N-000019" +Po 3828 -492 +$EndPAD +$PAD +Sh "14" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 14 "N-000013" +Po 3828 -688 +$EndPAD +$PAD +Sh "15" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 16 "N-000016" +Po 3828 -885 +$EndPAD +$PAD +Sh "16" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 17 "N-000018" +Po 3828 -1082 +$EndPAD +$PAD +Sh "17" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 19 "N-000020" +Po 3828 -1279 +$EndPAD +$PAD +Sh "18" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 20 "N-000021" +Po 3828 -1476 +$EndPAD +$PAD +Sh "19" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 21 "N-000022" +Po 3828 -1673 +$EndPAD +$PAD +Sh "20" R 110 708 0 0 2700 +Dr 0 0 0 +At SMD N 00888000 +Ne 32 "N-000033" +Po 3828 -1870 +$EndPAD +$PAD +Sh "21" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 34 "N-000036" +Po -3828 -1870 +$EndPAD +$PAD +Sh "22" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 35 "N-000038" +Po -3828 -1673 +$EndPAD +$PAD +Sh "23" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 13 "N-000011" +Po -3828 -1476 +$EndPAD +$PAD +Sh "24" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 15 "N-000014" +Po -3828 -1279 +$EndPAD +$PAD +Sh "25" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 2 "/D0" +Po -3828 -1082 +$EndPAD +$PAD +Sh "26" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 3 "/D1" +Po -3828 -885 +$EndPAD +$PAD +Sh "27" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 4 "/D2" +Po -3828 -688 +$EndPAD +$PAD +Sh "28" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 5 "/D3" +Po -3828 -492 +$EndPAD +$PAD +Sh "29" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 10 "GND" +Po -3828 -295 +$EndPAD +$PAD +Sh "30" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 10 "GND" +Po -3828 -98 +$EndPAD +$PAD +Sh "31" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 1 "+5V" +Po -3828 98 +$EndPAD +$PAD +Sh "32" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 6 "/D4" +Po -3828 295 +$EndPAD +$PAD +Sh "33" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 7 "/D5" +Po -3828 492 +$EndPAD +$PAD +Sh "34" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 8 "/D6" +Po -3828 688 +$EndPAD +$PAD +Sh "35" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 9 "/D7" +Po -3828 885 +$EndPAD +$PAD +Sh "36" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 0 "" +Po -3828 1082 +$EndPAD +$PAD +Sh "37" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 12 "N-000010" +Po -3828 1279 +$EndPAD +$PAD +Sh "38" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 23 "N-000024" +Po -3828 1476 +$EndPAD +$PAD +Sh "39" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 22 "N-000023" +Po -3828 1673 +$EndPAD +$PAD +Sh "40" R 110 708 0 0 900 +Dr 0 0 0 +At SMD N 00888000 +Ne 33 "N-000035" +Po -3828 1870 +$EndPAD +$EndMODULE TSOP40 $EndLIBRARY diff --git a/src/cli.c b/src/cli.c index 90b053f..3ddf70a 100644 --- a/src/cli.c +++ b/src/cli.c @@ -58,8 +58,8 @@ static char *curchar; /* Word lists */ static char command_words[] = - "cd\0reset\0sreset\0dir\0ls\0test\0resume\0loadrom\0loadraw\0saveraw\0put\0d4\0vmode\0mapper\0settime\0time\0setfeature\0hexdump\0"; -enum { CMD_CD = 0, CMD_RESET, CMD_SRESET, CMD_DIR, CMD_LS, CMD_TEST, CMD_RESUME, CMD_LOADROM, CMD_LOADRAW, CMD_SAVERAW, CMD_PUT, CMD_D4, CMD_VMODE, CMD_MAPPER, CMD_SETTIME, CMD_TIME, CMD_SETFEATURE, CMD_HEXDUMP }; + "cd\0reset\0sreset\0dir\0ls\0test\0resume\0loadrom\0loadraw\0saveraw\0put\0d4\0vmode\0mapper\0settime\0time\0setfeature\0hexdump\0w8\0w16\0"; +enum { CMD_CD = 0, CMD_RESET, CMD_SRESET, CMD_DIR, CMD_LS, CMD_TEST, CMD_RESUME, CMD_LOADROM, CMD_LOADRAW, CMD_SAVERAW, CMD_PUT, CMD_D4, CMD_VMODE, CMD_MAPPER, CMD_SETTIME, CMD_TIME, CMD_SETFEATURE, CMD_HEXDUMP, CMD_W8, CMD_W16 }; /* ------------------------------------------------------------------------- */ /* Parse functions */ @@ -76,7 +76,7 @@ static uint8_t skip_spaces(void) { } /* Parse the string in curchar for an integer with bounds [lower,upper] */ -static int32_t parse_unsigned(uint32_t lower, uint32_t upper) { +static int32_t parse_unsigned(uint32_t lower, uint32_t upper, uint8_t base) { char *end; uint32_t result; @@ -85,7 +85,7 @@ static int32_t parse_unsigned(uint32_t lower, uint32_t upper) { return -2; } - result = strtoul(curchar, &end, 10); + result = strtoul(curchar, &end, base); if ((*end != ' ' && *end != 0) || errno != 0) { printf("Invalid numeric argument\n"); return -1; @@ -287,13 +287,13 @@ static void cmd_loadrom(void) { } static void cmd_loadraw(void) { - uint32_t address = parse_unsigned(0,16777216); + uint32_t address = parse_unsigned(0,16777216,16); load_sram((uint8_t*)curchar, address); } static void cmd_saveraw(void) { - uint32_t address = parse_unsigned(0,16777216); - uint32_t length = parse_unsigned(0,16777216); + uint32_t address = parse_unsigned(0,16777216,16); + uint32_t length = parse_unsigned(0,16777216,16); save_sram((uint8_t*)curchar, length, address); } @@ -303,7 +303,7 @@ static void cmd_d4(void) { if(get_cic_state() != CIC_PAIR) { printf("not in pair mode\n"); } else { - hz = parse_unsigned(50,60); + hz = parse_unsigned(50,60,10); if(hz==50) { cic_d4(CIC_PAL); } else { @@ -318,7 +318,7 @@ static void cmd_vmode(void) { if(get_cic_state() != CIC_PAIR) { printf("not in pair mode\n"); } else { - hz = parse_unsigned(50,60); + hz = parse_unsigned(50,60,10); if(hz==50) { cic_videomode(CIC_PAL); } else { @@ -345,7 +345,7 @@ void cmd_put(void) { void cmd_mapper(void) { int32_t mapper; - mapper = parse_unsigned(0,7); + mapper = parse_unsigned(0,7,10); set_mapper((uint8_t)mapper & 0x7); printf("mapper set to %ld\n", mapper); } @@ -353,7 +353,7 @@ void cmd_mapper(void) { void cmd_sreset(void) { if(*curchar != 0) { int32_t resetstate; - resetstate = parse_unsigned(0,1); + resetstate = parse_unsigned(0,1,10); snes_reset(resetstate); } else { snes_reset(1); @@ -389,15 +389,28 @@ void cmd_time(void) { } void cmd_setfeature(void) { - uint8_t feat = parse_unsigned(0, 255); + uint8_t feat = parse_unsigned(0, 255, 16); fpga_set_features(feat); } void cmd_hexdump(void) { - uint32_t offset = parse_unsigned(0, 16777215); - uint32_t len = parse_unsigned(0, 16777216); + uint32_t offset = parse_unsigned(0, 16777215, 16); + uint32_t len = parse_unsigned(0, 16777216, 16); sram_hexdump(offset, len); } + +void cmd_w8(void) { + uint32_t offset = parse_unsigned(0, 16777215, 16); + uint8_t val = parse_unsigned(0, 255, 16); + sram_writebyte(val, offset); +} + +void cmd_w16(void) { + uint32_t offset = parse_unsigned(0, 16777215, 16); + uint16_t val = parse_unsigned(0, 65535, 16); + sram_writeshort(val, offset); +} + /* ------------------------------------------------------------------------- */ /* CLI interface functions */ /* ------------------------------------------------------------------------- */ @@ -531,6 +544,15 @@ void cli_loop(void) { case CMD_HEXDUMP: cmd_hexdump(); break; + + case CMD_W8: + cmd_w8(); + break; + + case CMD_W16: + cmd_w16(); + break; } + } } diff --git a/verilog/sd2snes/sd_dma.v b/verilog/sd2snes/sd_dma.v index f3e9618..0d7d2c8 100644 --- a/verilog/sd2snes/sd_dma.v +++ b/verilog/sd2snes/sd_dma.v @@ -59,6 +59,7 @@ reg [10:0] cyclecnt; initial cyclecnt = 11'd0; reg SD_DMA_SRAM_WEr; +initial SD_DMA_SRAM_WEr = 1'b1; assign SD_DMA_SRAM_WE = (cyclecnt < 1025 && SD_DMA_STATUSr) ? SD_DMA_SRAM_WEr : 1'b1; reg SD_DMA_NEXTADDRr;