};
enum{
- STEP_MAX = 2,
+ STEP_MAX = 3,
VARIABLE_MAX = STEP_MAX
};
s->opcode = syntax->script_opcode;
if((mode & syntax->permittion) == 0){
- printf("%s opcode %s not allowed on current mode\n", SYNTAX_ERROR_PREFIX, syntax->name);
+ printf("%d:%s opcode %s not allowed on current mode\n", s->line, SYNTAX_ERROR_PREFIX, syntax->name);
return 1;
};
{
break;
}
if(!compare){
- printf("%s parameter number not much %s\n", SYNTAX_ERROR_PREFIX, word[0]);
+ printf("%d:%s parameter number not much %s\n", s->line, SYNTAX_ERROR_PREFIX, word[0]);
return 1;
}
}
for(j = 0; j < syntax->argc; j++){
switch(syntax->argv_type[j]){
case SYNTAX_ARGVTYPE_NULL:
- printf("%s ARGV_NULL select\n", SYNTAX_ERROR_PREFIX);
+ printf("%d:%s ARGV_NULL select\n", s->line, SYNTAX_ERROR_PREFIX);
return 1;
case SYNTAX_ARGVTYPE_VALUE:
if(value_get(word[j + 1], &(s->value[j])) == NG){
- printf("%s value error %s %s\n", SYNTAX_ERROR_PREFIX, word[0], word[j+1]);
+ printf("%d:%s value error %s %s\n", s->line, SYNTAX_ERROR_PREFIX, word[0], word[j+1]);
return 1;
}
break;
s->value[j] = MIRROR_PROGRAMABLE;
break;
default:
- printf("%s unknown scroll mirroring type %s\n", SYNTAX_ERROR_PREFIX, word[j+1]);
+ printf("%d:%s unknown scroll mirroring type %s\n", s->line, SYNTAX_ERROR_PREFIX, word[j+1]);
return 1;
}
break;
s->value[j] = VALUE_EXPRESSION;
//Ì¿Îá̾¤Îñ¸ì¤Èñ¸ì¿ô¤ò½ü³°¤·¤ÆÅϤ¹
if(syntax_check_expression(&word[j+1], word_num - 2, &s->expression) == NG){
- printf("%s expression error\n", SYNTAX_ERROR_PREFIX);
+ printf("%d:%s expression error\n", s->line, SYNTAX_ERROR_PREFIX);
return 1;
}
//²ÄÊѤ˰ú¿ô¤ò¼è¤ë¤Î¤Ç¤³¤³¤Ç½ª¤ï¤ê
s->value[j] = VALUE_VARIABLE;
s->variable = v;
}else{
- printf("%s variable must use [A-Za-z] %s\n", SYNTAX_ERROR_PREFIX, word[j+1]);
+ printf("%d:%s variable must use [A-Za-z] %s\n", s->line, SYNTAX_ERROR_PREFIX, word[j+1]);
return 1;
}
}break;
for(i = 0; i < text_num; i++){
char *word[TEXT_MAXWORD];
const int n = word_load(text[i], word);
+ s->line = i + 1;
if(word[0][0] == '#'){
s->opcode = SCRIPT_OPCODE_COMMENT;
}else{
while(s->opcode != SCRIPT_OPCODE_DUMP_END){
//printf("opcode exec %s\n", SCRIPT_SYNTAX[s->opcode].name);
if((setting == DUMP) && (s->opcode < SCRIPT_OPCODE_DUMP_START)){
- printf("%s config script include DUMPSTART area\n", LOGICAL_ERROR_PREFIX);
+ printf("%s config script include DUMP_START area\n", LOGICAL_ERROR_PREFIX);
error += 1;
}
assert(r->cpu_rom.attribute == MEMORY_ATTR_READ);
assert(r->ppu_rom.attribute == MEMORY_ATTR_READ);
//length filter.
- if(!is_range(length, 0x80, 0x2000)){
+ if(!is_range(length, 0x80, 0x4000)){
logical_print_illgallength(STR_REGION_CPU, length);
error += 1;
}
SCRIPT_OPCODE_MIRROR,
SCRIPT_OPCODE_CPU_ROMSIZE,
SCRIPT_OPCODE_CPU_RAMSIZE,
- SCRIPT_OPCODE_CPU_COMMAND,
- SCRIPT_OPCODE_PPU_COMMAND,
SCRIPT_OPCODE_PPU_ROMSIZE,
SCRIPT_OPCODE_DUMP_START,
+ SCRIPT_OPCODE_CPU_COMMAND,
SCRIPT_OPCODE_CPU_READ,
SCRIPT_OPCODE_CPU_WRITE,
SCRIPT_OPCODE_CPU_RAMRW,
SCRIPT_OPCODE_CPU_PROGRAM,
+ SCRIPT_OPCODE_PPU_COMMAND,
SCRIPT_OPCODE_PPU_RAMFIND,
SCRIPT_OPCODE_PPU_SRAMTEST,
SCRIPT_OPCODE_PPU_READ,