mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-12-22 12:30:01 +00:00
finished zmac asm (.z); fixed javatari submodule tag; upgraded tsc
This commit is contained in:
parent
c7eaedf24b
commit
59469b41b8
@ -1 +1 @@
|
||||
Subproject commit 4cd5b798f534336d09a80e8a1fa962959f401359
|
||||
Subproject commit bd17384fd2c6b020497e5e6a625a1b8130e39ea1
|
6
package-lock.json
generated
6
package-lock.json
generated
@ -1018,9 +1018,9 @@
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz",
|
||||
"integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==",
|
||||
"dev": true
|
||||
},
|
||||
"uuid": {
|
||||
|
@ -13,7 +13,7 @@
|
||||
"jsdom": "^12.0.0",
|
||||
"lzg": "^1.0.0",
|
||||
"mocha": "^5.2.0",
|
||||
"typescript": "^2.9.2",
|
||||
"typescript": "^3.0.1",
|
||||
"wavedrom-cli": "^0.5.0"
|
||||
},
|
||||
"description": "8bitworkshop.com",
|
||||
|
@ -536,7 +536,7 @@ export function getToolForFilename_z80(fn) {
|
||||
if (fn.endsWith(".s")) return "sdasz80";
|
||||
if (fn.endsWith(".ns")) return "naken";
|
||||
if (fn.endsWith(".scc")) return "sccz80";
|
||||
if (fn.endsWith(".zmac")) return "zmac";
|
||||
if (fn.endsWith(".z")) return "zmac";
|
||||
return "zmac";
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,8 @@ var TOOL_TO_SOURCE_STYLE = {
|
||||
'sdasz80': 'z80',
|
||||
'sdcc': 'text/x-csrc',
|
||||
'verilator': 'verilog',
|
||||
'jsasm': 'z80'
|
||||
'jsasm': 'z80',
|
||||
'zmac': 'z80',
|
||||
}
|
||||
|
||||
function newWorker() : Worker {
|
||||
|
@ -452,10 +452,12 @@ function extractErrors(regex, strings, path) {
|
||||
|
||||
// TODO: "of" doesn't work in MSIE
|
||||
|
||||
function parseListing(code, lineMatch, iline, ioffset, iinsns, origin) {
|
||||
var re_crlf = /\r?\n/;
|
||||
|
||||
function parseListing(code, lineMatch, iline, ioffset, iinsns) {
|
||||
var lines = [];
|
||||
origin |= 0;
|
||||
for (var line of code.split(/\r?\n/)) {
|
||||
for (var line of code.split(re_crlf)) {
|
||||
var linem = lineMatch.exec(line);
|
||||
if (linem && linem[1]) {
|
||||
var linenum = parseInt(linem[iline]);
|
||||
@ -477,7 +479,7 @@ function parseSourceLines(code, lineMatch, offsetMatch, origin) {
|
||||
var lines = [];
|
||||
var lastlinenum = 0;
|
||||
origin |= 0;
|
||||
for (var line of code.split(/\r?\n/)) {
|
||||
for (var line of code.split(re_crlf)) {
|
||||
var linem = lineMatch.exec(line);
|
||||
if (linem && linem[1]) {
|
||||
lastlinenum = parseInt(linem[1]);
|
||||
@ -506,7 +508,7 @@ function parseDASMListing(code, unresolved, mainFilename) {
|
||||
var macrolines = [];
|
||||
var lastline = 0;
|
||||
var macros = {};
|
||||
for (var line of code.split(/\r?\n/)) {
|
||||
for (var line of code.split(re_crlf)) {
|
||||
var linem = lineMatch.exec(line);
|
||||
if (linem && linem[1]) {
|
||||
var linenum = parseInt(linem[1]);
|
||||
@ -669,7 +671,7 @@ function parseCA65Listing(code, symbols, params, dbg) {
|
||||
var insnLineMatch = /^([0-9A-F]+)([r]?)\s+(\d+)\s+([0-9A-F][0-9A-F ]*[0-9A-F])\s+/;
|
||||
var lines = [];
|
||||
var linenum = 0;
|
||||
for (var line of code.split(/\r?\n/)) {
|
||||
for (var line of code.split(re_crlf)) {
|
||||
linenum++;
|
||||
var segm = segLineMatch.exec(line);
|
||||
if (segm) {
|
||||
@ -892,6 +894,7 @@ function parseIHX(ihx, rom_start, rom_size) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
function assembleSDASZ80(step) {
|
||||
@ -1361,12 +1364,13 @@ function compileYosys(step) {
|
||||
|
||||
function assembleZMAC(step) {
|
||||
loadNative("zmac");
|
||||
var objout, lstout, symout;
|
||||
var hexout, lstout;
|
||||
var errors = [];
|
||||
var params = step.params;
|
||||
gatherFiles(step, {mainFilePath:"main.asm"});
|
||||
var binpath = "zout/" + step.prefix + ".cim";
|
||||
var lstpath = "zout/" + step.prefix + ".lst";
|
||||
if (staleFiles(step, [binpath, lstpath])) {
|
||||
var hexpath = step.prefix + ".hex";
|
||||
var lstpath = step.prefix + ".lst";
|
||||
if (staleFiles(step, [hexpath, lstpath])) {
|
||||
/*
|
||||
error1.asm(4) : 'l18d4' Undeclared
|
||||
JP L18D4
|
||||
@ -1384,23 +1388,38 @@ error1.asm(11): warning: 'foobar' treated as label (instruction typo?)
|
||||
});
|
||||
var FS = ZMAC['FS'];
|
||||
populateFiles(step, FS);
|
||||
execMain(step, ZMAC, ['-z', '--oo', 'lst,cim', step.path]);
|
||||
// TODO: don't know why CIM (hexary) doesn't work
|
||||
execMain(step, ZMAC, ['-z', '--oo', 'lst,hex', step.path]);
|
||||
if (errors.length) {
|
||||
return {errors:errors};
|
||||
}
|
||||
objout = FS.readFile(binpath, {encoding:'utf8'});
|
||||
lstout = FS.readFile(lstpath, {encoding:'utf8'});
|
||||
putWorkFile(binpath, objout);
|
||||
hexout = FS.readFile("zout/"+hexpath, {encoding:'utf8'});
|
||||
lstout = FS.readFile("zout/"+lstpath, {encoding:'utf8'});
|
||||
putWorkFile(hexpath, hexout);
|
||||
putWorkFile(lstpath, lstout);
|
||||
// 230: 1739+7 017A 1600 L017A: LD D,00h
|
||||
var listing = parseListing(lstout, /\s*(\d+):\s*(\d+)[+](\d+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+(.+)/i, 1, 4, 5);
|
||||
if (!anyTargetChanged(step, [hexpath, lstpath]))
|
||||
return;
|
||||
// 230: 1739+7+x 017A 1600 L017A: LD D,00h
|
||||
var lines = parseListing(lstout, /\s*(\d+):\s*([0-9+]+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+(.+)/i, 1, 3, 4);
|
||||
var listings = {};
|
||||
listings[lstpath] = listing;
|
||||
listings[lstpath] = {lines:lines};
|
||||
// parse symbol table
|
||||
var symbolmap = {};
|
||||
var sympos = lstout.indexOf('Symbol Table:');
|
||||
if (sympos > 0) {
|
||||
var symout = lstout.slice(sympos+14);
|
||||
symout.split('\n').forEach(function(l) {
|
||||
var m = l.match(/(\S+)\s+([= ]*)([0-9a-f]+)/i);
|
||||
if (m) {
|
||||
symbolmap[m[1]] = parseInt(m[3],16);
|
||||
}
|
||||
});
|
||||
}
|
||||
return {
|
||||
output:binpath,
|
||||
output:parseIHX(hexout, params.rom_start||params.code_start, params.rom_size),
|
||||
listings:listings,
|
||||
errors:errors,
|
||||
//symbolmap:symbolmap
|
||||
symbolmap:symbolmap
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user