mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-06-11 12:29:29 +00:00
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?
|
- better undo/diff for mistakes?
|
||||||
- get rid of "illegal PC" instruction, replace with status msg
|
- get rid of "illegal PC" instruction, replace with status msg
|
||||||
- ide bug/feature visualizer for sponsors
|
- ide bug/feature visualizer for sponsors
|
||||||
|
- optimization flags for sdcc (oldralloc)
|
||||||
|
|
||||||
|
|
||||||
WEB WORKER FORMAT
|
WEB WORKER FORMAT
|
||||||
|
|
|
@ -349,7 +349,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
|
||||||
-->
|
-->
|
||||||
<script src="src/cpu/z80fast.js"></script>
|
<script src="src/cpu/z80fast.js"></script>
|
||||||
<script src="jsnes/jsnes.min.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="jsnes/lib/dynamicaudio-min.js" type="text/javascript" charset="utf-8"></script>-->
|
||||||
<script src="FileSaver.js/FileSaver.min.js"></script>
|
<script src="FileSaver.js/FileSaver.min.js"></script>
|
||||||
<script src="localForage/dist/localforage.nopromises.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(".c")) return "sdcc";
|
||||||
if (fn.endsWith(".h")) return "sdcc";
|
if (fn.endsWith(".h")) return "sdcc";
|
||||||
if (fn.endsWith(".s")) return "sdasz80";
|
if (fn.endsWith(".s")) return "sdasz80";
|
||||||
|
@ -700,8 +700,18 @@ export abstract class Base6809Platform extends BaseZ80Platform {
|
||||||
// TODO: don't create new CPU
|
// 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);
|
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() { }
|
//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
|
/// MAME SUPPORT
|
||||||
|
|
|
@ -50,6 +50,7 @@ var TOOL_TO_SOURCE_STYLE = {
|
||||||
'zmac': 'z80',
|
'zmac': 'z80',
|
||||||
'bataribasic': 'bataribasic',
|
'bataribasic': 'bataribasic',
|
||||||
'markdown': 'markdown',
|
'markdown': 'markdown',
|
||||||
|
'xasm6809': 'z80'
|
||||||
}
|
}
|
||||||
|
|
||||||
function newWorker() : Worker {
|
function newWorker() : Worker {
|
||||||
|
|
|
@ -274,48 +274,3 @@ function compileSCCZ80(code, platform) {
|
||||||
return result;
|
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 = {
|
var TOOLS = {
|
||||||
|
@ -1820,7 +1869,7 @@ var TOOLS = {
|
||||||
'sdasz80': assembleSDASZ80,
|
'sdasz80': assembleSDASZ80,
|
||||||
'sdldz80': linkSDLDZ80,
|
'sdldz80': linkSDLDZ80,
|
||||||
'sdcc': compileSDCC,
|
'sdcc': compileSDCC,
|
||||||
//'xasm6809': assembleXASM6809,
|
'xasm6809': assembleXASM6809,
|
||||||
//'naken': assembleNAKEN,
|
//'naken': assembleNAKEN,
|
||||||
'verilator': compileVerilator,
|
'verilator': compileVerilator,
|
||||||
'yosys': compileYosys,
|
'yosys': compileYosys,
|
||||||
|
|
2
tss
2
tss
|
@ -1 +1 @@
|
||||||
Subproject commit 61a1691a1de05dca3b694bf603db49ffbaf572cf
|
Subproject commit 5b5ee67fc06956bc7dce51726e98812d2d897eaa
|
Loading…
Reference in New Issue
Block a user