fixed apple2 code offset

This commit is contained in:
Steven Hugg 2018-08-06 16:23:19 -04:00
parent 5477432a3e
commit 1a4d088ce2
2 changed files with 11 additions and 5 deletions

View File

@ -121,6 +121,7 @@ var PLATFORM_PARAMS = {
define: '__APPLE2__',
cfgfile: 'apple2-hgr.cfg',
libargs: ['apple2.lib'],
__CODE_RUN__: 16384,
},
'apple2-e': {
define: '__APPLE2__',
@ -597,7 +598,7 @@ function setupStdin(fs, code) {
000000r 1 .dbg line, "main.c", 3
000000r 1 A2 00 ldx #$00
*/
function parseCA65Listing(code, symbols, dbg) {
function parseCA65Listing(code, symbols, params, dbg) {
var segofs = 0;
// .dbg line, "main.c", 1
var segLineMatch = /[.]segment\s+"(\w+)"/;
@ -612,8 +613,7 @@ function parseCA65Listing(code, symbols, dbg) {
if (segm) {
var segname = segm[1];
var segsym = '__'+segname+'_RUN__';
// TODO: doesn't work on apple2, needs __MAIN_START__?
segofs = parseInt(symbols[segsym])|0;
segofs = parseInt(symbols[segsym] || params[segsym]) || 0;
}
if (dbg) {
var linem = dbgLineMatch.exec(line);
@ -734,8 +734,8 @@ function linkLD65(step) {
for (var fn of step.files) {
if (fn.endsWith('.lst')) {
var lstout = FS.readFile(fn, {encoding:'utf8'});
var asmlines = parseCA65Listing(lstout, symbolmap, false);
var srclines = parseCA65Listing(lstout, symbolmap, true);
var asmlines = parseCA65Listing(lstout, symbolmap, params, false);
var srclines = parseCA65Listing(lstout, symbolmap, params, true);
putWorkFile(fn, lstout);
listings[fn] = {
asmlines:srclines.length ? asmlines : null,

View File

@ -9,6 +9,8 @@ CACHE_WASM_MODULES = false;
global.onmessage({data:{preload:'cc65', platform:'nes'}});
global.onmessage({data:{preload:'ca65', platform:'nes'}});
global.onmessage({data:{preload:'cc65', platform:'apple2'}});
global.onmessage({data:{preload:'ca65', platform:'apple2'}});
global.onmessage({data:{preload:'sdcc'}});
// TODO: check msg against spec
@ -290,6 +292,10 @@ describe('Worker', function() {
var files = ['skeleton.sdcc', 'cp437.c'];
compileFiles('sdcc', files, 'vicdual', done, 16416, [0,45], 0); // TODO?
});
it('should compile apple2 skeleton with CC65', function(done) {
var csource = ab2str(fs.readFileSync('presets/apple2/skeleton.cc65'));
compile('cc65', csource, 'apple2', done, 17349, 4, 0);
});
// TODO: test if compile, errors, then compile same file
});