//
-// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
+// RMAC - Reboot's Macro Assembler for all Atari computers
// RMAC.C - Main Application Code
-// Copyright (C) 199x Landon Dyer, 2011 - 2016 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends
// RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
// Source utilised with the kind permission of Landon Dyer
//
" -i[path] Directory to search for include files\n"
" -l[filename] Create an output listing file\n"
" -l*[filename] Create an output listing file without pagination\n"
+ " -m[cpu] Select default CPU. Available options:\n"
+ " 68000\n"
+ " 68020\n"
+ " 68030\n"
+ " 68040\n"
+ " 68060\n"
+ " 6502\n"
+ " tom\n"
+ " jerry\n"
" -n Don't do things behind your back in RISC assembler\n"
" -o file Output file name\n"
" +o[value] Turn a specific optimisation on\n"
" o3: Outer displacement 0(an) to (an) (off)\n"
" o4: lea size(An),An to addq #size,An (off)\n"
" o5: Absolute long base displacement to word (off)\n"
+ " o6: Null branches to NOP (off)\n"
+ " o7: clr.l Dx to moveq #0,Dx (off)\n"
+ " o8: adda.w/l #x,Dy to addq.w/l #x,Dy (off)\n"
+ " o9: adda.w/l #x,Dy to lea x(Dy),Dy (off)\n"
" ~o[value] Turn a specific optimisation off\n"
" +oall Turn all optimisations on\n"
" ~oall Turn all optimisations off\n"
}
sy->sattr = DEFINED | EQUATED | ABS;
- sy->svalue = (*s ? (VALUE)atoi(s) : 0);
+ sy->svalue = (*s ? (uint32_t)atoi(s) : 0);
break;
case 'e': // Redirect error message output
case 'E':
list_flag = 1;
lnsave++;
break;
+ case 'm':
+ case 'M':
+ if (strcmp(argv[argno] + 2, "68000") == 0)
+ d_68000();
+ else if (strcmp(argv[argno] + 2, "68020") == 0)
+ d_68020();
+ else if (strcmp(argv[argno] + 2, "68030") == 0)
+ d_68030();
+ else if (strcmp(argv[argno] + 2, "68040") == 0)
+ d_68040();
+ else if (strcmp(argv[argno] + 2, "68060") == 0)
+ d_68060();
+ else if (strcmp(argv[argno] + 2, "68881") == 0)
+ d_68881();
+ else if (strcmp(argv[argno] + 2, "68882") == 0)
+ d_68882();
+ else if (strcmp(argv[argno] + 2, "56001") == 0)
+ d_56001();
+ else if (strcmp(argv[argno] + 2, "6502") == 0)
+ d_6502();
+ else if (strcmp(argv[argno] + 2, "tom") == 0)
+ d_gpu();
+ else if (strcmp(argv[argno] + 2, "jerry") == 0)
+ d_dsp();
+ else
+ {
+ printf("Unrecognized CPU '%s'\n", argv[argno] + 2);
+ errcnt++;
+ return errcnt;
+ }
+ break;
case 'o': // Direct object file output
case 'O':
if (argv[argno][2] != EOS)
default:
printf("-p: syntax error\n");
- ++errcnt;
+ errcnt++;
return errcnt;
}
if (pagelen < 10)
{
printf("-y: bad page length\n");
- ++errcnt;
+ errcnt++;
return errcnt;
}