OSDN Git Service

opcode名変更, CPU_COMMAND_xxxx -> CPU_COMMAND, ppu も同様
authorsato_tiff <sato_tiff@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Sat, 20 Dec 2008 16:41:50 +0000 (16:41 +0000)
committersato_tiff <sato_tiff@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Sat, 20 Dec 2008 16:41:50 +0000 (16:41 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@196 24ea1065-a21e-4ca1-99c9-f5125deb0858

client/trunk/script.c
client/trunk/syntax.h
client/trunk/unagi.txt

index 0248d64..8198656 100644 (file)
@@ -415,22 +415,26 @@ static const char STR_ACCESS_WRITE[] = "write";
 enum{
        SETTING, DUMP, END
 };
-static int command_mask(const int region, const long address, const long offset, long size, long *data)
+static int command_mask(const int region, const long address, const long offset, long size, struct flash_order *f)
 {
+       const char *str_region = STR_REGION_CPU;
+       if(region == MEMORY_AREA_PPU){
+               str_region = STR_REGION_PPU;
+       }
        switch(region){
        case MEMORY_AREA_CPU_ROM:
                switch(offset){
                case 0x8000: case 0xa000: case 0xc000:
                        break;
                default:
-                       printf("%s %s_COMMAND area offset error\n", LOGICAL_ERROR_PREFIX, STR_REGION_CPU);
+                       printf("%s %s_COMMAND area offset error\n", LOGICAL_ERROR_PREFIX, str_region);
                        return NG;
                }
                switch(size){
                case 0x2000: case 0x4000: case 0x8000:
                        break;
                default:
-                       printf("%s %s_COMMAND area mask error\n", LOGICAL_ERROR_PREFIX, STR_REGION_CPU);
+                       printf("%s %s_COMMAND area mask error\n", LOGICAL_ERROR_PREFIX, str_region);
                        return NG;
                }
                break;
@@ -440,30 +444,37 @@ static int command_mask(const int region, const long address, const long offset,
                case 0x1000: case 0x1400: case 0x1800: case 0x1c00:
                        break;
                default:
-                       printf("%s %s_COMMAND area offset error\n", LOGICAL_ERROR_PREFIX, STR_REGION_CPU);
+                       printf("%s %s_COMMAND area offset error\n", LOGICAL_ERROR_PREFIX, str_region);
                        return NG;
                }
                switch(size){
                case 0x0400: case 0x0800: case 0x1000: case 0x2000: 
                        break;
                default:
-                       printf("%s %s_COMMAND area mask error\n", LOGICAL_ERROR_PREFIX, STR_REGION_CPU);
+                       printf("%s %s_COMMAND area mask error\n", LOGICAL_ERROR_PREFIX, str_region);
                        return NG;
                }
                break;
        default:
                assert(0); //unknown memory area
        }
+
+       const long mask = size - 1;
+       const long data = (address & mask) | offset;
        switch(address){
-       case 0: 
-       case 0x2aaa: case 0x5555:
-       case 0x02aa: case 0x0555:
+       case 0:
+               f->command_0000 = data;
+               break;
+       case 0x2aaa: case 0x02aa: 
+               f->command_2aaa = data;
+               break;
+       case 0x5555: case 0x0555:
+               f->command_5555 = data;
                break;
        default:
-               assert(0); //unknown command address
+               printf("%s %s_COMMAND unknown commnand address\n", LOGICAL_ERROR_PREFIX, str_region);
+               return NG;
        }
-       long mask = size - 1;
-       *data = (address & mask) | offset;
        return OK;
 }
 
@@ -542,18 +553,8 @@ static int logical_check(const struct script *s, const struct st_config *c, stru
                        //memory size ¤Ï̤³ÎÄêÍ×ÁǤ¬Â¿¤¤¤Î¤Ç check ¤òÈ´¤¯
                        r->cpu_ram.size = s->value[0];
                        break;
-               case SCRIPT_OPCODE_CPU_COMMAND_0000:
-                       if(command_mask(MEMORY_AREA_CPU_ROM, 0, s->value[0], s->value[1], &(r->cpu_flash.command_0000)) == NG){
-                               error += 1;
-                       }
-                       break;
-               case SCRIPT_OPCODE_CPU_COMMAND_2AAA:
-                       if(command_mask(MEMORY_AREA_CPU_ROM, 0x2aaa, s->value[0], s->value[1], &(r->cpu_flash.command_2aaa)) == NG){
-                               error += 1;
-                       }
-                       break;
-               case SCRIPT_OPCODE_CPU_COMMAND_5555:
-                       if(command_mask(MEMORY_AREA_CPU_ROM, 0x5555, s->value[0], s->value[1], &(r->cpu_flash.command_5555)) == NG){
+               case SCRIPT_OPCODE_CPU_COMMAND:
+                       if(command_mask(MEMORY_AREA_CPU_ROM, s->value[0], s->value[1], s->value[2], &(r->cpu_flash)) == NG){
                                error += 1;
                        }
                        break;
@@ -570,18 +571,8 @@ static int logical_check(const struct script *s, const struct st_config *c, stru
                        }
                        }
                        break;
-               case SCRIPT_OPCODE_PPU_COMMAND_0000:
-                       if(command_mask(MEMORY_AREA_PPU, 0, s->value[0], s->value[1], &(r->ppu_flash.command_0000)) == NG){
-                               error += 1;
-                       }
-                       break;
-               case SCRIPT_OPCODE_PPU_COMMAND_2AAA:
-                       if(command_mask(MEMORY_AREA_PPU, 0x2aaa, s->value[0], s->value[1], &(r->ppu_flash.command_2aaa)) == NG){
-                               error += 1;
-                       }
-                       break;
-               case SCRIPT_OPCODE_PPU_COMMAND_5555:
-                       if(command_mask(MEMORY_AREA_PPU, 0x5555, s->value[0], s->value[1], &(r->ppu_flash.command_5555)) == NG){
+               case SCRIPT_OPCODE_PPU_COMMAND:
+                       if(command_mask(MEMORY_AREA_PPU, s->value[0], s->value[1], s->value[2], &(r->ppu_flash)) == NG){
                                error += 1;
                        }
                        break;
index 4ade2d4..c1d0a57 100644 (file)
@@ -25,12 +25,8 @@ enum{
        SCRIPT_OPCODE_MIRROR,
        SCRIPT_OPCODE_CPU_ROMSIZE,
        SCRIPT_OPCODE_CPU_RAMSIZE,
-       SCRIPT_OPCODE_CPU_COMMAND_0000,
-       SCRIPT_OPCODE_CPU_COMMAND_2AAA,
-       SCRIPT_OPCODE_CPU_COMMAND_5555,
-       SCRIPT_OPCODE_PPU_COMMAND_0000,
-       SCRIPT_OPCODE_PPU_COMMAND_2AAA,
-       SCRIPT_OPCODE_PPU_COMMAND_5555,
+       SCRIPT_OPCODE_CPU_COMMAND,
+       SCRIPT_OPCODE_PPU_COMMAND,
        SCRIPT_OPCODE_PPU_ROMSIZE,
        SCRIPT_OPCODE_DUMP_START,
        SCRIPT_OPCODE_CPU_READ,
@@ -44,7 +40,7 @@ enum{
        SCRIPT_OPCODE_PPU_PROGRAM,
        SCRIPT_OPCODE_STEP_START,
        SCRIPT_OPCODE_STEP_END,
-       SCRIPT_OPCODE_WAIT,
+//     SCRIPT_OPCODE_WAIT,
        SCRIPT_OPCODE_DUMP_END,
        SCRIPT_OPCODE_COMMENT,
        SCRIPT_OPCODE_NUM
@@ -84,6 +80,10 @@ static const int ARGV_TYPE_STEP_START[SYNTAX_ARGV_TYPE_NUM] = {
        SYNTAX_ARGVTYPE_VARIABLE, SYNTAX_ARGVTYPE_VALUE,
        SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE
 };
+static const int ARGV_TYPE_ADDRESS_COMMAND[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE,
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_NULL
+};
 static const struct script_syntax SCRIPT_SYNTAX[] = {
        {
                name: "MAPPER",
@@ -116,41 +116,17 @@ static const struct script_syntax SCRIPT_SYNTAX[] = {
                argc: 1, compare: SYNTAX_COMPARE_EQ,
                argv_type: ARGV_TYPE_VALUE_ONLY
        },{
-               name: "CPU_COMMAND_0000",
-               script_opcode: SCRIPT_OPCODE_CPU_COMMAND_0000,
-               permittion: PERMITTION_ROM_PROGRAM,
-               argc:2, compare: SYNTAX_COMPARE_EQ,
-               argv_type: ARGV_TYPE_ADDRESS_LENGTH
-       },{
-               name: "CPU_COMMAND_2AAA",
-               script_opcode: SCRIPT_OPCODE_CPU_COMMAND_2AAA,
-               permittion: PERMITTION_ROM_PROGRAM,
-               argc:2, compare: SYNTAX_COMPARE_EQ,
-               argv_type: ARGV_TYPE_ADDRESS_LENGTH
-       },{
-               name: "CPU_COMMAND_5555",
-               script_opcode: SCRIPT_OPCODE_CPU_COMMAND_5555,
+               name: "CPU_COMMAND",
+               script_opcode: SCRIPT_OPCODE_CPU_COMMAND,
                permittion: PERMITTION_ROM_PROGRAM,
-               argc:2, compare: SYNTAX_COMPARE_EQ,
-               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+               argc:3, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_COMMAND
        },{
-               name: "PPU_COMMAND_0000",
-               script_opcode: SCRIPT_OPCODE_PPU_COMMAND_0000,
+               name: "PPU_COMMAND",
+               script_opcode: SCRIPT_OPCODE_PPU_COMMAND,
                permittion: PERMITTION_ROM_PROGRAM,
-               argc:2, compare: SYNTAX_COMPARE_EQ,
-               argv_type: ARGV_TYPE_ADDRESS_LENGTH
-       },{
-               name: "PPU_COMMAND_2AAA",
-               script_opcode: SCRIPT_OPCODE_PPU_COMMAND_2AAA,
-               permittion: PERMITTION_ROM_PROGRAM,
-               argc:2, compare: SYNTAX_COMPARE_EQ,
-               argv_type: ARGV_TYPE_ADDRESS_LENGTH
-       },{
-               name: "PPU_COMMAND_5555",
-               script_opcode: SCRIPT_OPCODE_PPU_COMMAND_5555,
-               permittion: PERMITTION_ROM_PROGRAM,
-               argc:2, compare: SYNTAX_COMPARE_EQ,
-               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+               argc:3, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_COMMAND
        },{
                name: "DUMP_START",
                script_opcode: SCRIPT_OPCODE_DUMP_START,
@@ -234,13 +210,17 @@ static const struct script_syntax SCRIPT_SYNTAX[] = {
                permittion: PERMITTION_ALL,
                argc: 0, compare: SYNTAX_COMPARE_EQ,
                argv_type: ARGV_TYPE_NULL
-       },{
+       },
+#if 0
+       {
                name: "WAIT",
                script_opcode: SCRIPT_OPCODE_WAIT,
                permittion: PERMITTION_ROM_PROGRAM,
                argc: 1, compare: SYNTAX_COMPARE_EQ,
                argv_type: ARGV_TYPE_VALUE_ONLY
-       },{
+       },
+#endif
+       {
                name: "DUMP_END",
                script_opcode: SCRIPT_OPCODE_DUMP_END,
                permittion: PERMITTION_ALL,
index 4c841d1..8811fef 100644 (file)
@@ -59,7 +59,7 @@ unagi.exe w [script file] [ram file]
 script file - \91Î\89\9e\82·\82é\83}\83b\83p\82Ì RAM \83X\83N\83\8a\83v\83g\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
 ram file    - \93ü\97Í\82·\82é RAM \83C\83\81\81[\83W\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
 
-== f Flashmemory/SRAM Program MODE ==
+== f flashmemory/SRAM PROGRAM MODE ==
 \8eÀ\8c±\97v\91f\82ª\91½\82¢\8eÀ\91\95\82Ì\82½\82ß\81A\8fÚ\8d×\82Í\8cÂ\95Ê\82É\96â\82¢\8d\87\82í\82¹\82Ä\82­\82¾\82³\82¢\81B
 
 --\83X\83N\83\8a\83v\83g\8ed\97l--