started adding back 6809 support (xasm)
This commit is contained in:
parent
7e2bf32a6f
commit
61290e09f8
|
@ -98,7 +98,7 @@ TODO:
|
|||
- better undo/diff for mistakes?
|
||||
- get rid of "illegal PC" instruction, replace with status msg
|
||||
- ide bug/feature visualizer for sponsors
|
||||
|
||||
- optimization flags for sdcc (oldralloc)
|
||||
|
||||
|
||||
WEB WORKER FORMAT
|
||||
|
|
|
@ -349,7 +349,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
|
|||
-->
|
||||
<script src="src/cpu/z80fast.js"></script>
|
||||
<script src="jsnes/jsnes.min.js"></script>
|
||||
<!--<script src="src/cpu/6809.js"></script>-->
|
||||
<script src="src/cpu/6809.js"></script>
|
||||
<!--<script src="jsnes/lib/dynamicaudio-min.js" type="text/javascript" charset="utf-8"></script>-->
|
||||
<script src="FileSaver.js/FileSaver.min.js"></script>
|
||||
<script src="localForage/dist/localforage.nopromises.js"></script>
|
||||
|
|
|
@ -644,7 +644,7 @@ export abstract class BaseZ80Platform extends BaseDebugPlatform {
|
|||
}
|
||||
}
|
||||
|
||||
export function getToolForFilename_z80(fn) {
|
||||
export function getToolForFilename_z80(fn) : string {
|
||||
if (fn.endsWith(".c")) return "sdcc";
|
||||
if (fn.endsWith(".h")) return "sdcc";
|
||||
if (fn.endsWith(".s")) return "sdasz80";
|
||||
|
@ -700,8 +700,18 @@ export abstract class Base6809Platform extends BaseZ80Platform {
|
|||
// TODO: don't create new CPU
|
||||
return new CPU6809().disasm(read(pc), read(pc+1), read(pc+2), read(pc+3), read(pc+4), pc);
|
||||
}
|
||||
getDefaultExtension() { return ".asm"; };
|
||||
getDefaultExtension() : string { return ".asm"; };
|
||||
//this.getOpcodeMetadata = function() { }
|
||||
getToolForFilename = () => { return "xasm6809"; }
|
||||
getDebugCategories() {
|
||||
return ['CPU','Stack'];
|
||||
}
|
||||
getDebugInfo(category:string, state:EmuState) : string {
|
||||
switch (category) {
|
||||
case 'CPU': return cpuStateToLongString_6809(state.c);
|
||||
default: return super.getDebugInfo(category, state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// MAME SUPPORT
|
||||
|
|
|
@ -50,6 +50,7 @@ var TOOL_TO_SOURCE_STYLE = {
|
|||
'zmac': 'z80',
|
||||
'bataribasic': 'bataribasic',
|
||||
'markdown': 'markdown',
|
||||
'xasm6809': 'z80'
|
||||
}
|
||||
|
||||
function newWorker() : Worker {
|
||||
|
|
|
@ -274,48 +274,3 @@ function compileSCCZ80(code, platform) {
|
|||
return result;
|
||||
}
|
||||
|
||||
function assembleXASM6809(code, platform) {
|
||||
load("xasm6809");
|
||||
var origin = 0; // TODO: configurable
|
||||
var alst = "";
|
||||
var lasterror = null;
|
||||
var errors = [];
|
||||
function match_fn(s) {
|
||||
alst += s;
|
||||
alst += "\n";
|
||||
if (lasterror) {
|
||||
var line = parseInt(s.slice(0,5));
|
||||
errors.push({
|
||||
line:line,
|
||||
msg:lasterror
|
||||
});
|
||||
lasterror = null;
|
||||
}
|
||||
else if (s.startsWith("***** ")) {
|
||||
lasterror = s.slice(6);
|
||||
}
|
||||
}
|
||||
var Module = xasm6809({
|
||||
noInitialRun:true,
|
||||
//logReadFiles:true,
|
||||
print:match_fn,
|
||||
printErr:print_fn
|
||||
});
|
||||
var FS = Module['FS'];
|
||||
//setupFS(FS);
|
||||
FS.writeFile("main.asm", code);
|
||||
Module.callMain(["-c", "-l", "-s", "-y", "-o=main.bin", "main.asm"]);
|
||||
if (errors.length)
|
||||
return {errors:errors};
|
||||
var aout = FS.readFile("main.bin", {encoding:'binary'});
|
||||
// 00001 0000 [ 2] 1048 asld
|
||||
var asmlines = parseListing(alst, /^\s*([0-9A-F]+)\s+([0-9A-F]+)\s+\[([0-9 ]+)\]\s+(\d+) (.*)/i, 1, 2, 4);
|
||||
// TODO
|
||||
return {
|
||||
output:aout,
|
||||
errors:errors,
|
||||
lines:asmlines,
|
||||
intermediate:{listing:alst},
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1805,6 +1805,55 @@ function translateShowdown(step:BuildStep) {
|
|||
};
|
||||
}
|
||||
|
||||
// TODO
|
||||
function assembleXASM6809(step:BuildStep) {
|
||||
load("xasm6809");
|
||||
var origin = 0; // TODO: configurable
|
||||
var alst = "";
|
||||
var lasterror = null;
|
||||
var errors = [];
|
||||
function match_fn(s) {
|
||||
alst += s;
|
||||
alst += "\n";
|
||||
if (lasterror) {
|
||||
var line = parseInt(s.slice(0,5));
|
||||
errors.push({
|
||||
line:line,
|
||||
msg:lasterror
|
||||
});
|
||||
lasterror = null;
|
||||
}
|
||||
else if (s.startsWith("***** ")) {
|
||||
lasterror = s.slice(6);
|
||||
}
|
||||
}
|
||||
var Module = emglobal.xasm6809({
|
||||
noInitialRun:true,
|
||||
//logReadFiles:true,
|
||||
print:match_fn,
|
||||
printErr:print_fn
|
||||
});
|
||||
var FS = Module['FS'];
|
||||
//setupFS(FS);
|
||||
var code = getWorkFileAsString(step.path);
|
||||
FS.writeFile("main.asm", code);
|
||||
Module.callMain(["-c", "-l", "-s", "-y", "-o=main.bin", "main.asm"]);
|
||||
if (errors.length)
|
||||
return {errors:errors};
|
||||
var aout = FS.readFile("main.bin", {encoding:'binary'});
|
||||
putWorkFile('main.bin', aout);
|
||||
// 00001 0000 [ 2] 1048 asld
|
||||
var asmlines = parseListing(alst, /^\s*([0-9A-F]+)\s+([0-9A-F]+)\s+\[([0-9 ]+)\]\s+(\d+) (.*)/i, 1, 2, 4);
|
||||
// TODO
|
||||
return {
|
||||
output:aout,
|
||||
errors:errors,
|
||||
lines:asmlines,
|
||||
intermediate:{listing:alst},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////
|
||||
|
||||
var TOOLS = {
|
||||
|
@ -1820,7 +1869,7 @@ var TOOLS = {
|
|||
'sdasz80': assembleSDASZ80,
|
||||
'sdldz80': linkSDLDZ80,
|
||||
'sdcc': compileSDCC,
|
||||
//'xasm6809': assembleXASM6809,
|
||||
'xasm6809': assembleXASM6809,
|
||||
//'naken': assembleNAKEN,
|
||||
'verilator': compileVerilator,
|
||||
'yosys': compileYosys,
|
||||
|
|
2
tss
2
tss
|
@ -1 +1 @@
|
|||
Subproject commit 61a1691a1de05dca3b694bf603db49ffbaf572cf
|
||||
Subproject commit 5b5ee67fc06956bc7dce51726e98812d2d897eaa
|
Loading…
Reference in New Issue