comparison src/asm.c @ 12:d4112095b93f

Allow negative decimal literals
author Michael Pavone <pavone@retrodev.com>
date Sun, 27 Mar 2016 21:07:41 -0700
parents 9f575f77a157
children fb14515266f4
comparison
equal deleted inserted replaced
11:04d8efe7a1f0 12:d4112095b93f
202 while ((arg = in_string ? linebuf : get_arg(&linebuf))) 202 while ((arg = in_string ? linebuf : get_arg(&linebuf)))
203 { 203 {
204 //TODO: actual error checking 204 //TODO: actual error checking
205 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) { 205 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) {
206 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16); 206 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16);
207 } else if (arg[0] >= '0' && arg[0] <= '9') { 207 } else if (arg[0] >= '0' && arg[0] <= '9' || arg[0] == '-') {
208 value = strtol(arg, NULL, 10); 208 value = strtol(arg, NULL, 10);
209 } else if (arg[0] == '"') { 209 } else if (arg[0] == '"') {
210 if (arg[1] == '"') { 210 if (arg[1] == '"') {
211 //emtpy string or end of string 211 //emtpy string or end of string
212 in_string = 0; 212 in_string = 0;
320 } 320 }
321 321
322 //TODO: actual error checking 322 //TODO: actual error checking
323 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) { 323 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) {
324 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16); 324 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16);
325 } else if (arg[0] >= '0' && arg[0] <= '9') { 325 } else if (arg[0] >= '0' && arg[0] <= '9' || arg[0] == '-') {
326 value = strtol(arg, NULL, 10); 326 value = strtol(arg, NULL, 10);
327 } else { 327 } else {
328 label *l = find_label(meta, arg); 328 label *l = find_label(meta, arg);
329 if (!l) { 329 if (!l) {
330 l = add_label(meta, arg, 0, 0); 330 l = add_label(meta, arg, 0, 0);