From ca7d488f1cf0ae477a116f4d4b7e5a5055486fcc Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 27 Aug 2019 12:12:56 -0400 Subject: [PATCH] moved segments into Platform object --- doc/notes.txt | 2 - src/baseplatform.ts | 10 ++-- src/platform/apple2.ts | 5 +- src/platform/astrocade.ts | 12 ++++- src/platform/atari7800.ts | 11 +++- src/platform/c64.ts | 15 ++++++ src/platform/coleco.ts | 5 +- src/platform/galaxian.ts | 5 ++ src/platform/kim1.ts | 8 ++- src/platform/msx.ts | 8 ++- src/platform/mw8080bw.ts | 3 ++ src/platform/nes.ts | 9 +++- src/platform/vcs.ts | 7 +++ src/platform/vector.ts | 11 ++++ src/platform/vicdual.ts | 5 +- src/platform/williams.ts | 4 ++ src/project.ts | 8 +-- src/ui.ts | 4 +- src/worker/workermain.ts | 111 +------------------------------------- 19 files changed, 113 insertions(+), 130 deletions(-) diff --git a/doc/notes.txt b/doc/notes.txt index e3dbf896..7d6aebcd 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -178,8 +178,6 @@ TODO: - "shared" in URL doesn't work, leave in URL? (also importURL) - alert when skeleton file loaded or file not found -- move segments into Platform object - - TypeError: null is not an object (evaluating 'n.destination') https://8bitworkshop.com/v3.4.1/javatari.js/release/javatari/javatari.js (32:443651) Safari 12.1.2 diff --git a/src/baseplatform.ts b/src/baseplatform.ts index d62e7fa5..193a09e7 100644 --- a/src/baseplatform.ts +++ b/src/baseplatform.ts @@ -2,6 +2,7 @@ import { RAM, RasterVideo, dumpRAM, AnimationTimer, setKeyboardFromMap, padBytes, ControllerPoller } from "./emu"; import { hex, printFlags, invertMap } from "./util"; import { CodeAnalyzer } from "./analysis"; +import { Segment } from "./workertypes"; import { disassemble6502 } from "./cpu/disasm6502"; import { disassembleZ80 } from "./cpu/disasmz80"; import { Z80 } from "./cpu/ZilogZ80"; @@ -54,9 +55,8 @@ export class DebugSymbols { } } -export interface PlatformMetadata { - name : string; // TODO -} +type MemoryMapType = "main" | "vram"; +type MemoryMap = { [type:string] : Segment[] }; export function isDebuggable(arg:any): arg is Debuggable { return typeof arg.getDebugCategories === 'function'; @@ -78,7 +78,6 @@ export interface Platform { resume() : void; loadROM(title:string, rom:any); // TODO: Uint8Array loadBIOS?(title:string, rom:Uint8Array); - getMetadata?() : PlatformMetadata; loadState?(state : EmuState) : void; saveState?() : EmuState; @@ -108,6 +107,9 @@ export interface Platform { getPC?() : number; getOriginPC?() : number; newCodeAnalyzer?() : CodeAnalyzer; + + getPlatformName?() : string; + getMemoryMap?() : MemoryMap; setRecorder?(recorder : EmuRecorder) : void; advance?(novideo? : boolean) : void; diff --git a/src/platform/apple2.ts b/src/platform/apple2.ts index 2a8984d8..4e106c12 100644 --- a/src/platform/apple2.ts +++ b/src/platform/apple2.ts @@ -1,4 +1,3 @@ -"use strict"; import { Platform, Base6502Platform, BaseMAMEPlatform, getOpcodeMetadata_6502, getToolForFilename_6502 } from "../baseplatform"; import { PLATFORMS, RAM, newAddressDecoder, padBytes, noise, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, KeyFlags, makeKeycodeMap, dumpRAM } from "../emu"; @@ -63,6 +62,10 @@ class NewApple2Platform extends Base6502MachinePlatform implements Plat getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.readConst(a); } // TODO loadBios(bios) { this.machine.loadBIOS(a); } + getMemoryMap = function() { return { main:[ + {name:'I/O',start:0xc000,size:0x1000,type:'io'}, + {name:'ROM',start:0xd000,size:0x3000-6,type:'rom'}, + ] } }; } diff --git a/src/platform/astrocade.ts b/src/platform/astrocade.ts index bed5775c..d723d70b 100644 --- a/src/platform/astrocade.ts +++ b/src/platform/astrocade.ts @@ -33,7 +33,13 @@ class BallyAstrocadePlatform extends BaseZ80MachinePlatform impl getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } loadBios(title,bios) { this.machine.loadBIOS(bios); } - + getMemoryMap = function() { return { main:[ + {name:'BIOS',start:0x0,size:0x2000,type:'rom'}, + //{name:'Cart ROM',start:0x2000,size:0x2000,type:'rom'}, + //{name:'Magic RAM',start:0x0,size:0x4000,type:'ram'}, + {name:'Screen RAM',start:0x4000,size:0x1000,type:'ram'}, + {name:'BIOS Variables',start:0x4fce,size:0x5000-0x4fce,type:'ram'}, + ] } }; } class BallyAstrocadeBIOSPlatform extends BallyAstrocadePlatform implements Platform { @@ -47,6 +53,10 @@ class BallyArcadePlatform extends BallyAstrocadePlatform implements Platform { newMachine() { return new BallyAstrocade(true); } + getMemoryMap = function() { return { main:[ + {name:'Magic RAM',start:0x0,size:0x4000,type:'ram'}, + {name:'Screen RAM',start:0x4000,size:0x4000,type:'ram'}, + ] } }; } PLATFORMS['astrocade'] = BallyAstrocadePlatform; diff --git a/src/platform/atari7800.ts b/src/platform/atari7800.ts index 6a57bcb9..1ba7f34d 100644 --- a/src/platform/atari7800.ts +++ b/src/platform/atari7800.ts @@ -1,4 +1,3 @@ -"use strict"; import { MOS6502 } from "../cpu/MOS6502"; import { Atari7800 } from "../machine/atari7800"; @@ -16,7 +15,15 @@ class Atari7800Platform extends Base6502MachinePlatform implements Pl getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.readConst(a); } // TODO loadBios(bios) { this.machine.loadBIOS(a); } - + getMemoryMap = function() { return { main:[ + {name:'TIA',start:0x00,size:0x20,type:'io'}, + {name:'MARIA',start:0x20,size:0x20,type:'io'}, + {name:'RAM (6166 Block 0)',start:0x40,size:0xc0,type:'ram'}, + {name:'RAM (6166 Block 1)',start:0x140,size:0xc0,type:'ram'}, + {name:'PIA',start:0x280,size:0x18,type:'io'}, + {name:'RAM',start:0x1800,size:0x1000,type:'ram'}, // TODO: shadow ram + {name:'Cartridge ROM',start:0x4000,size:0xc000,type:'rom'}, + ] } }; } /// diff --git a/src/platform/c64.ts b/src/platform/c64.ts index 4bab5888..7875de04 100644 --- a/src/platform/c64.ts +++ b/src/platform/c64.ts @@ -521,6 +521,21 @@ class C64Platform extends Base6502Platform implements Platform { default: return super.getDebugInfo(category, state); } } + + getMemoryMap() { + return { main: [ + {name:'6510 Registers',start:0x0, size:0x2,type:'io'}, + {name:'RAM', start:0x2, size:0x7ffe,type:'ram'}, + {name:'Cartridge ROM',start:0x8000,size:0x2000,type:'rom'}, + {name:'BASIC ROM', start:0xa000,size:0x2000,type:'rom'}, + {name:'RAM', start:0xc000,size:0x1000,type:'ram'}, + {name:'VIC-II I/O', start:0xd000,size:0x0400,type:'io'}, + {name:'Color RAM', start:0xd800,size:0x0400,type:'io'}, + {name:'CIA 1', start:0xdc00,size:0x0100,type:'io'}, + {name:'CIA 2', start:0xdd00,size:0x0100,type:'io'}, + {name:'KERNAL ROM', start:0xe000,size:0x2000,type:'rom'}, + ]}; + } } /// diff --git a/src/platform/coleco.ts b/src/platform/coleco.ts index 5fddb58d..6d053fa0 100644 --- a/src/platform/coleco.ts +++ b/src/platform/coleco.ts @@ -28,7 +28,10 @@ class ColecoVisionPlatform extends BaseZ80MachinePlatform implemen readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } // TODO loadBios(bios) { this.machine.loadBIOS(a); } - + getMemoryMap = function() { return { main:[ + {name:'BIOS',start:0x0,size:0x2000,type:'rom'}, + {name:'Cartridge Header',start:0x8000,size:0x100,type:'rom'}, + ] } }; } /// MAME support diff --git a/src/platform/galaxian.ts b/src/platform/galaxian.ts index 29d28667..f09929b9 100644 --- a/src/platform/galaxian.ts +++ b/src/platform/galaxian.ts @@ -414,6 +414,11 @@ const _GalaxianPlatform = function(mainElement, options) { cpu.reset(); watchdog_counter = INITIAL_WATCHDOG; } + getMemoryMap = function() { return { main:[ + {name:'Video RAM',start:0x5000,size:0x400,type:'ram'}, + {name:'Sprite RAM',start:0x5800,size:0x100,type:'ram'}, + {name:'I/O Registers',start:0x6000,size:0x2000,type:'io'}, + ] } }; } return new GalaxianPlatform(); diff --git a/src/platform/kim1.ts b/src/platform/kim1.ts index 9c88ef3c..88e96c71 100644 --- a/src/platform/kim1.ts +++ b/src/platform/kim1.ts @@ -1,4 +1,3 @@ -"use strict"; import { Platform, Base6502Platform, BaseMAMEPlatform, getOpcodeMetadata_6502, getToolForFilename_6502 } from "../baseplatform"; import { PLATFORMS, RAM, newAddressDecoder, padBytes, noise, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, makeKeycodeMap, dumpRAM, getMousePos, EmuHalt, KeyFlags, _setKeyboardEvents } from "../emu"; @@ -235,6 +234,13 @@ class KIM1Platform extends Base6502Platform implements Platform { getCPUState() { return this.fixPC(this.cpu.saveState()); } + getMemoryMap = function() { return { main:[ + {name:'RAM', start:0x0000,size:0x1400,type:'ram'}, + {name:'6530', start:0x1700,size:0x0040,type:'io'}, + {name:'6530', start:0x1740,size:0x0040,type:'io'}, + {name:'RAM', start:0x1780,size:0x0080,type:'ram'}, + {name:'BIOS', start:0x1800,size:0x0800,type:'rom'}, + ] } }; } /// diff --git a/src/platform/msx.ts b/src/platform/msx.ts index 8021310e..4d431f92 100644 --- a/src/platform/msx.ts +++ b/src/platform/msx.ts @@ -44,7 +44,13 @@ class MSXPlatform extends BaseZ80MachinePlatform implements Platform { readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } // TODO loadBios(bios) { this.machine.loadBIOS(a); } - + getMemoryMap = function() { return { main:[ + {name:'BIOS',start:0x0,size:0x4000,type:'rom'}, + //{name:'Cartridge',start:0x4000,size:0x4000,type:'rom'}, + {name:'RAM',start:0xc000,size:0x3200,type:'ram'}, + {name:'Stack',start:0xf000,size:0x300,type:'ram'}, + {name:'BIOS Work RAM',start:0xf300,size:0xd00}, + ] } }; } class MSXLibCVPlatform extends MSXPlatform implements Platform { diff --git a/src/platform/mw8080bw.ts b/src/platform/mw8080bw.ts index d0d4e3ac..95cadb60 100644 --- a/src/platform/mw8080bw.ts +++ b/src/platform/mw8080bw.ts @@ -19,6 +19,9 @@ class Midway8080BWPlatform extends BaseZ80MachinePlatform implements getPresets() { return MW8080BW_PRESETS; } getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } + getMemoryMap = function() { return { main:[ + {name:'Frame Buffer',start:0x2400,size:7168,type:'ram'}, + ] } }; } diff --git a/src/platform/nes.ts b/src/platform/nes.ts index 9a8f78cb..cbabace3 100644 --- a/src/platform/nes.ts +++ b/src/platform/nes.ts @@ -1,4 +1,3 @@ -"use strict"; import { Platform, Base6502Platform, BaseMAMEPlatform, getOpcodeMetadata_6502, cpuStateToLongString_6502, getToolForFilename_6502, dumpStackToString, ProfilerOutput } from "../baseplatform"; import { PLATFORMS, RAM, newAddressDecoder, padBytes, noise, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, makeKeycodeMap, dumpRAM, KeyFlags, EmuHalt, ControllerPoller } from "../emu"; @@ -454,6 +453,14 @@ class JSNESPlatform extends Base6502Platform implements Platform, Probeable { connectProbe(probe:ProbeAll) { this.probe = probe || this.nullProbe; } + + getMemoryMap = function() { return { main:[ + //{name:'Work RAM',start:0x0,size:0x800,type:'ram'}, + {name:'OAM Buffer',start:0x200,size:0x100,type:'ram'}, + {name:'PPU Registers',start:0x2000,last:0x2008,size:0x2000,type:'io'}, + {name:'APU Registers',start:0x4000,last:0x4020,size:0x2000,type:'io'}, + {name:'Cartridge RAM',start:0x6000,size:0x2000,type:'ram'}, + ] } }; } /// MAME support diff --git a/src/platform/vcs.ts b/src/platform/vcs.ts index 8da33ded..8a6b5ee8 100644 --- a/src/platform/vcs.ts +++ b/src/platform/vcs.ts @@ -306,6 +306,12 @@ class VCSPlatform extends BasePlatform { window.open("https://alienbill.com/2600/101/docs/stella.html", "_help"); // TODO } + getMemoryMap = function() { return {main:[ + {name:'TIA Registers',start:0x00,size:0x80,type:'io'}, + {name:'PIA RAM',start:0x80,size:0x80,type:'ram'}, + {name:'PIA Ports and Timer',start:0x280,size:0x18,type:'io'}, + {name:'Cartridge ROM',start:0xf000,size:0x1000,type:'rom'}, + ]}}; }; // TODO: mixin for Base6502Platform? @@ -346,6 +352,7 @@ class VCSMAMEPlatform extends BaseMAMEPlatform implements Platform { getOriginPC = function() { return (this.readAddress(0xfffc) | (this.readAddress(0xfffd) << 8)) & 0xffff; } + } //////////////// diff --git a/src/platform/vector.ts b/src/platform/vector.ts index e91c5903..d7bafcce 100644 --- a/src/platform/vector.ts +++ b/src/platform/vector.ts @@ -172,6 +172,11 @@ var AtariVectorPlatform = function(mainElement) { this.getCPUState = function() { return cpu.saveState(); } + this.getMemoryMap = function() { return { main:[ + {name:'Switches/POKEY I/O',start:0x7800,size:0x1000,type:'io'}, + {name:'DVG I/O',start:0x8800,size:0x100,type:'io'}, + {name:'EAROM',start:0x8900,size:0x100,type:'ram'}, + ] } }; } var AtariColorVectorPlatform = function(mainElement) { @@ -458,6 +463,12 @@ var Z80ColorVectorPlatform = function(mainElement, proto) { this.getCPUState = function() { return cpu.saveState(); } + this.getMemoryMap = function() { return { main:[ + {name:'Switches/POKEY I/O',start:0x8000,size:0x100,type:'io'}, + {name:'Math Box I/O',start:0x8100,size:0x100,type:'io'}, + {name:'DVG I/O',start:0x8800,size:0x100,type:'io'}, + {name:'DVG RAM',start:0xa000,size:0x4000,type:'ram'}, + ] } }; } // DIGITAL VIDEO GENERATOR diff --git a/src/platform/vicdual.ts b/src/platform/vicdual.ts index 07ff60b7..f8124220 100644 --- a/src/platform/vicdual.ts +++ b/src/platform/vicdual.ts @@ -21,7 +21,10 @@ class VicDualPlatform extends BaseZ80MachinePlatform implements Platfor getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } // TODO loadBios(bios) { this.machine.loadBIOS(a); } - + getMemoryMap = function() { return { main:[ + {name:'Cell RAM',start:0xe000,size:32*32,type:'ram'}, + {name:'Tile RAM',start:0xe800,size:256*8,type:'ram'}, + ] } }; } PLATFORMS['vicdual'] = VicDualPlatform; diff --git a/src/platform/williams.ts b/src/platform/williams.ts index b7408331..20196fee 100644 --- a/src/platform/williams.ts +++ b/src/platform/williams.ts @@ -416,6 +416,10 @@ var WilliamsPlatform = function(mainElement, proto) { cpuFrequency *= scale; cpuCyclesPerFrame *= scale; } + this.getMemoryMap = function() { return { main:[ + {name:'Video RAM',start:0x0000,size:0xc000,type:'ram'}, + {name:'I/O Registers',start:0xc000,size:0x1000,type:'io'}, + ] } }; } var WilliamsZ80Platform = function(mainElement) { diff --git a/src/project.ts b/src/project.ts index 786494ff..e5f15cd2 100644 --- a/src/project.ts +++ b/src/project.ts @@ -299,10 +299,10 @@ export class CodeProject { } } // save and sort segment list - this.segments = data.segments; - if (this.segments) { - this.segments.sort((a,b) => {return a.start-b.start}); - } + var segs = (this.platform.getMemoryMap && this.platform.getMemoryMap()["main"]) || []; + segs = segs.concat(data.segments || []); + segs.sort((a,b) => {return a.start-b.start}); + this.segments = segs; } getListings() : CodeListingMap { diff --git a/src/ui.ts b/src/ui.ts index bd6cc5ca..ea84a5ee 100644 --- a/src/ui.ts +++ b/src/ui.ts @@ -239,7 +239,7 @@ function refreshWindowList() { return new Views.MemoryView(); }); } - if (current_project.segments) { + if (current_project.segments && current_project.segments.length) { addWindowItem("#memmap", "Memory Map", () => { return new Views.MemoryMapView(); }); @@ -1894,7 +1894,7 @@ function loadImportedURL(url : string) { } function setPlatformUI() { - var name = platform.getMetadata && platform.getMetadata().name; + var name = platform.getPlatformName && platform.getPlatformName(); var menuitem = $('a[href="?platform='+platform_id+'"]'); if (menuitem.length) { menuitem.addClass("dropdown-item-checked"); diff --git a/src/worker/workermain.ts b/src/worker/workermain.ts index ad9433c4..45d45489 100644 --- a/src/worker/workermain.ts +++ b/src/worker/workermain.ts @@ -57,12 +57,6 @@ var PLATFORM_PARAMS = { code_size: 0xf000, data_start: 0x80, data_size: 0x80, - extra_segments:[ - {name:'TIA Registers',start:0x00,size:0x80,type:'io'}, - {name:'PIA RAM',start:0x80,size:0x80,type:'ram'}, - {name:'PIA Ports and Timer',start:0x280,size:0x18,type:'io'}, - {name:'Cartridge ROM',start:0xf000,size:0x1000,type:'rom'}, - ], }, 'mw8080bw': { code_start: 0x0, @@ -70,9 +64,6 @@ var PLATFORM_PARAMS = { data_start: 0x2000, data_size: 0x400, stack_end: 0x2400, - extra_segments:[ - {name:'Frame Buffer',start:0x2400,size:7168,type:'ram'}, - ], }, 'vicdual': { code_start: 0x0, @@ -80,10 +71,6 @@ var PLATFORM_PARAMS = { data_start: 0xe400, data_size: 0x400, stack_end: 0xe800, - extra_segments:[ - {name:'Cell RAM',start:0xe000,size:32*32,type:'ram'}, - {name:'Tile RAM',start:0xe800,size:256*8,type:'ram'}, - ], }, 'galaxian': { code_start: 0x0, @@ -98,11 +85,6 @@ var PLATFORM_PARAMS = { data_start: 0x4000, data_size: 0x400, stack_end: 0x4800, - extra_segments:[ - {name:'Video RAM',start:0x5000,size:0x400,type:'ram'}, - {name:'Sprite RAM',start:0x5800,size:0x100,type:'ram'}, - {name:'I/O Registers',start:0x6000,size:0x2000,type:'io'}, - ], }, 'williams': { code_start: 0x0, @@ -110,10 +92,6 @@ var PLATFORM_PARAMS = { data_start: 0x9800, data_size: 0x2800, stack_end: 0xc000, - extra_segments:[ - {name:'Video RAM',start:0x0000,size:0xc000,type:'ram'}, - {name:'I/O Registers',start:0xc000,size:0x1000,type:'io'}, - ], }, 'williams-z80': { code_start: 0x0, @@ -121,10 +99,6 @@ var PLATFORM_PARAMS = { data_start: 0x9800, data_size: 0x2800, stack_end: 0xc000, - extra_segments:[ - {name:'Video RAM',start:0x0000,size:0xc000,type:'ram'}, - {name:'I/O Registers',start:0xc000,size:0x1000,type:'io'}, - ], }, 'vector-z80color': { code_start: 0x0, @@ -132,23 +106,12 @@ var PLATFORM_PARAMS = { data_start: 0xe000, data_size: 0x2000, stack_end: 0x0, - extra_segments:[ - {name:'Switches/POKEY I/O',start:0x8000,size:0x100,type:'io'}, - {name:'Math Box I/O',start:0x8100,size:0x100,type:'io'}, - {name:'DVG I/O',start:0x8800,size:0x100,type:'io'}, - {name:'DVG RAM',start:0xa000,size:0x4000,type:'ram'}, - ], }, 'vector-ataricolor': { //TODO define: '__VECTOR__', cfgfile: 'vector-color.cfg', libargs: ['crt0.o', 'sim6502.lib'], extra_link_files: ['crt0.o', 'vector-color.cfg'], - extra_segments:[ - {name:'Switches/POKEY I/O',start:0x7800,size:0x1000,type:'io'}, - {name:'DVG I/O',start:0x8800,size:0x100,type:'io'}, - {name:'EAROM',start:0x8900,size:0x100,type:'ram'}, - ], }, 'sound_williams-z80': { code_start: 0x0, @@ -173,10 +136,6 @@ var PLATFORM_PARAMS = { stack_end: 0x8000, extra_preproc_args: ['-I', '/share/include/coleco', '-D', 'CV_CV'], extra_link_args: ['-k', '/share/lib/coleco', '-l', 'libcv', '-l', 'libcvu', 'crt0.rel'], - extra_segments:[ - {name:'BIOS',start:0x0,size:0x2000,type:'rom'}, - {name:'Cartridge Header',start:0x8000,size:0x100,type:'rom'}, - ], }, 'msx': { rom_start: 0x4000, @@ -187,13 +146,6 @@ var PLATFORM_PARAMS = { stack_end: 0xffff, extra_link_args: ['crt0-msx.rel'], extra_link_files: ['crt0-msx.rel', 'crt0-msx.lst'], - extra_segments:[ - {name:'BIOS',start:0x0,size:0x4000,type:'rom'}, - //{name:'Cartridge',start:0x4000,size:0x4000,type:'rom'}, - {name:'RAM',start:0xc000,size:0x3200,type:'ram'}, - {name:'Stack',start:0xf000,size:0x300,type:'ram'}, - {name:'BIOS Work RAM',start:0xf300,size:0xd00}, - ], }, 'msx-libcv': { rom_start: 0x4000, @@ -206,13 +158,6 @@ var PLATFORM_PARAMS = { extra_link_args: ['-k', '.', '-l', 'libcv-msx', '-l', 'libcvu-msx', 'crt0-msx.rel'], extra_link_files: ['libcv-msx.lib', 'libcvu-msx.lib', 'crt0-msx.rel', 'crt0-msx.lst'], extra_compile_files: ['cv.h','cv_graphics.h','cv_input.h','cv_sound.h','cv_support.h','cvu.h','cvu_c.h','cvu_compression.h','cvu_f.h','cvu_graphics.h','cvu_input.h','cvu_sound.h'], - extra_segments:[ - {name:'BIOS',start:0x0,size:0x4000,type:'rom'}, - //{name:'Cartridge',start:0x4000,size:0x4000,type:'rom'}, - {name:'RAM',start:0xc000,size:0x3200,type:'ram'}, - {name:'Stack',start:0xf000,size:0x300,type:'ram'}, - {name:'BIOS Work RAM',start:0xf300,size:0xd00}, - ], }, 'sms-sg1000-libcv': { rom_start: 0x0000, @@ -236,13 +181,6 @@ var PLATFORM_PARAMS = { '-D', 'NES_MIRRORING=0', // horizontal mirroring ], extra_link_files: ['crt0.o', 'neslib2.lib', 'neslib2.cfg', 'nesbanked.cfg'], - extra_segments:[ - //{name:'Work RAM',start:0x0,size:0x800,type:'ram'}, - {name:'OAM Buffer',start:0x200,size:0x100,type:'ram'}, - {name:'PPU Registers',start:0x2000,last:0x2008,size:0x2000,type:'io'}, - {name:'APU Registers',start:0x4000,last:0x4020,size:0x2000,type:'io'}, - {name:'Cartridge RAM',start:0x6000,size:0x2000,type:'ram'}, - ], }, 'apple2': { define: '__APPLE2__', @@ -250,10 +188,6 @@ var PLATFORM_PARAMS = { libargs: ['apple2.lib'], __CODE_RUN__: 16384, code_start: 0x803, - extra_segments:[ - {name:'I/O',start:0xc000,size:0x1000,type:'io'}, - {name:'ROM',start:0xd000,size:0x3000-6,type:'rom'}, - ], }, 'apple2-e': { define: '__APPLE2__', @@ -279,13 +213,6 @@ var PLATFORM_PARAMS = { data_start: 0x4e10, data_size: 0x1f0, stack_end: 0x5000, - extra_segments:[ - {name:'BIOS',start:0x0,size:0x2000,type:'rom'}, - //{name:'Cart ROM',start:0x2000,size:0x2000,type:'rom'}, - //{name:'Magic RAM',start:0x0,size:0x4000,type:'ram'}, - {name:'Screen RAM',start:0x4000,size:0x1000,type:'ram'}, - {name:'BIOS Variables',start:0x4fce,size:0x5000-0x4fce,type:'ram'}, - ], }, 'astrocade-arcade': { code_start: 0x0000, @@ -306,42 +233,14 @@ var PLATFORM_PARAMS = { cfgfile: 'atari7800.cfg', libargs: ['crt0.o', 'sim6502.lib'], extra_link_files: ['crt0.o', 'atari7800.cfg'], - extra_segments:[ - {name:'TIA',start:0x00,size:0x20,type:'io'}, - {name:'MARIA',start:0x20,size:0x20,type:'io'}, - {name:'RAM (6166 Block 0)',start:0x40,size:0xc0,type:'ram'}, - {name:'RAM (6166 Block 1)',start:0x140,size:0xc0,type:'ram'}, - {name:'PIA',start:0x280,size:0x18,type:'io'}, - {name:'RAM',start:0x1800,size:0x1000,type:'ram'}, // TODO: shadow ram - {name:'Cartridge ROM',start:0x4000,size:0xc000,type:'rom'}, - ], }, 'c64': { define: '__C64__', cfgfile: 'c64.cfg', // SYS 2058 libargs: ['c64.lib'], //extra_link_files: ['c64-cart.cfg'], - extra_segments:[ - {name:'6510 Registers',start:0x0, size:0x2,type:'io'}, - {name:'RAM', start:0x2, size:0x7ffe,type:'ram'}, - {name:'Cartridge ROM',start:0x8000,size:0x2000,type:'rom'}, - {name:'BASIC ROM', start:0xa000,size:0x2000,type:'rom'}, - {name:'RAM', start:0xc000,size:0x1000,type:'ram'}, - {name:'VIC-II I/O', start:0xd000,size:0x0400,type:'io'}, - {name:'Color RAM', start:0xd800,size:0x0400,type:'io'}, - {name:'CIA 1', start:0xdc00,size:0x0100,type:'io'}, - {name:'CIA 2', start:0xdd00,size:0x0100,type:'io'}, - {name:'KERNAL ROM', start:0xe000,size:0x2000,type:'rom'}, - ], }, 'kim1': { - extra_segments:[ - {name:'RAM', start:0x0000,size:0x1400,type:'ram'}, - {name:'6530', start:0x1700,size:0x0040,type:'io'}, - {name:'6530', start:0x1740,size:0x0040,type:'io'}, - {name:'RAM', start:0x1780,size:0x0080,type:'ram'}, - {name:'BIOS', start:0x1800,size:0x0800,type:'rom'}, - ], }, }; @@ -896,13 +795,11 @@ function assembleDASM(step:BuildStep) { lst.lines = []; } } - var segments = step.params.extra_segments; return { output:aout, listings:listings, errors:errors, symbolmap:symbolmap, - segments:segments }; } @@ -1077,7 +974,7 @@ function linkLD65(step:BuildStep) { } // build segment map var seg_re = /^__(\w+)_SIZE__$/; - var segments = [].concat(params.extra_segments||[]); + var segments = []; segments.push({name:'CPU Stack',start:0x100,size:0x100,type:'ram'}); segments.push({name:'CPU Vectors',start:0xfffa,size:0x6,type:'rom'}); // TODO: CHR, banks, etc @@ -1396,7 +1293,7 @@ function linkSDLDZ80(step:BuildStep) } // build segment map var seg_re = /^s__(\w+)$/; - var segments = [].concat(params.extra_segments||[]); + var segments = []; // TODO: use stack params for stack segment for (let ident in symbolmap) { let m = seg_re.exec(ident); @@ -2042,13 +1939,11 @@ function assembleXASM6809(step:BuildStep) { var asmlines = parseListing(alst, /^\s*([0-9]+) .+ ([0-9A-F]+)\s+\[([0-9 ]+)\]\s+([0-9A-F]+) (.*)/i, 1, 2, 4, 3); var listings = {}; listings[step.prefix+'.lst'] = {lines:asmlines, text:alst}; - var segments = step.params.extra_segments; return { output:aout, listings:listings, errors:errors, symbolmap:symbolmap, - segments:segments }; } @@ -2141,13 +2036,11 @@ function assembleNESASM(step:BuildStep) { } } } - var segments = step.params.extra_segments; return { output:aout, listings:listings, errors:errors, symbolmap:symbolmap, - segments:segments }; }