diff --git a/css/ui.css b/css/ui.css index 1a2ad748..a8fe0a76 100644 --- a/css/ui.css +++ b/css/ui.css @@ -812,4 +812,7 @@ div.scripting-cell button:hover { } div.scripting-cell button.scripting-enabled { background-color: #339999; +} +.dialog-help { + color: #6666ff; } \ No newline at end of file diff --git a/doc/platforms.md b/doc/platforms.md index 5e8bd709..ae465c89 100644 --- a/doc/platforms.md +++ b/doc/platforms.md @@ -15,7 +15,7 @@ Mandatory functions: These are for the compiler/editor: ~~~ getToolForFilename(s:string) : string; - getDefaultExtension() : string; + getDefaultExtensions() : string[]; getPresets() : Preset[]; ~~~ @@ -205,7 +205,7 @@ class ColecoVisionMAMEPlatform extends BaseMAMEPlatform implements Platform { getPresets() { return ColecoVision_PRESETS; } getToolForFilename = getToolForFilename_z80; - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [".c", ".ns", ".s", ".scc", ".sgb", ".z", ".wiz"]; } } ~~~ diff --git a/src/common/baseplatform.ts b/src/common/baseplatform.ts index d41e34aa..2fced0af 100644 --- a/src/common/baseplatform.ts +++ b/src/common/baseplatform.ts @@ -81,7 +81,7 @@ export interface Platform { reset(): void; isRunning(): boolean; getToolForFilename(s: string): string; - getDefaultExtension(): string; + getDefaultExtensions(): string[]; getPresets?(): Preset[]; pause(): void; resume(): void; @@ -480,7 +480,7 @@ export abstract class Base6502Platform extends BaseDebugPlatform { return disassemble6502(pc, read(pc), read(pc + 1), read(pc + 2)); } getToolForFilename = getToolForFilename_6502; - getDefaultExtension() { return ".a"; }; + getDefaultExtensions() { return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; }; getDebugCategories() { return ['CPU', 'ZPRAM', 'Stack']; @@ -600,7 +600,7 @@ export abstract class BaseZ80Platform extends BaseDebugPlatform { } getToolForFilename = getToolForFilename_z80; - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [".c", ".ns", ".s", ".scc", ".sgb", ".z", ".wiz"]; }; // TODO: Z80 opcode metadata //this.getOpcodeMetadata = function() { } @@ -677,7 +677,7 @@ export abstract class Base6809Platform extends BaseZ80Platform { // TODO: don't create new CPU return Object.create(CPU6809()).disasm(read(pc), read(pc + 1), read(pc + 2), read(pc + 3), read(pc + 4), pc); } - getDefaultExtension(): string { return ".asm"; }; + getDefaultExtensions() { return [".c", ".lwasm", ".xasm"]; }; //this.getOpcodeMetadata = function() { } getToolForFilename = getToolForFilename_6809; getDebugCategories() { @@ -789,7 +789,7 @@ export abstract class BaseMachinePlatform extends BaseDebugPl abstract newMachine(): T; abstract getToolForFilename(s: string): string; - abstract getDefaultExtension(): string; + abstract getDefaultExtensions(): string[]; abstract getPresets(): Preset[]; constructor(mainElement: HTMLElement) { @@ -979,6 +979,7 @@ export abstract class Base6502MachinePlatform extends BaseMac getOpcodeMetadata = getOpcodeMetadata_6502; getToolForFilename(fn) { return getToolForFilename_6502(fn); } + getDefaultExtensions() { return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } disassemble(pc: number, read: (addr: number) => number): DisasmLine { return disassemble6502(pc, read(pc), read(pc + 1), read(pc + 2)); @@ -1003,6 +1004,7 @@ export abstract class BaseZ80MachinePlatform extends BaseMach //getOpcodeMetadata = getOpcodeMetadata_z80; getToolForFilename = getToolForFilename_z80; + getDefaultExtensions() { return [".c", ".ns", ".s", ".scc", ".sgb", ".z", ".wiz"]; } getDebugCategories() { if (isDebuggable(this.machine)) @@ -1032,6 +1034,7 @@ export abstract class BaseZ80MachinePlatform extends BaseMach export abstract class Base6809MachinePlatform extends BaseMachinePlatform { getToolForFilename = getToolForFilename_6809; + getDefaultExtensions() { return [".c", ".lwasm", ".xasm"]; } getDebugCategories() { if (isDebuggable(this.machine)) diff --git a/src/ide/ui.ts b/src/ide/ui.ts index 30d4c923..012e9501 100644 --- a/src/ide/ui.ts +++ b/src/ide/ui.ts @@ -495,14 +495,18 @@ function checkEnteredFilename(fn: string): boolean { function _createNewFile(e) { // TODO: support spaces + var extensions = platform.getDefaultExtensions(); bootbox.prompt({ - title: "Enter the name of your new main source file.", - placeholder: "newfile" + platform.getDefaultExtension(), + title: "Enter the name of your new main source file.

" + + "" + + (extensions.length > 1 ? extensions.join(" ") : "") + + "", + placeholder: "newfile" + extensions[0], callback: (filename) => { if (filename && filename.trim().length > 0) { if (!checkEnteredFilename(filename)) return; if (filename.indexOf(".") < 0) { - filename += platform.getDefaultExtension(); + filename += extensions[0]; } var path = filename; gaEvent('workspace', 'file', 'new'); diff --git a/src/platform/apple2.ts b/src/platform/apple2.ts index 74af678f..ef6e5273 100644 --- a/src/platform/apple2.ts +++ b/src/platform/apple2.ts @@ -47,7 +47,7 @@ class Apple2MAMEPlatform extends BaseMAME6502Platform implements Platform { } getOpcodeMetadata = getOpcodeMetadata_6502; - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } getToolForFilename = getToolForFilename_6502; getPresets() { return APPLE2_PRESETS; } @@ -64,7 +64,7 @@ class NewApple2Platform extends Base6502MachinePlatform implements Plat newMachine() { return new AppleII(); } getPresets() { return APPLE2_PRESETS; } - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [...super.getDefaultExtensions(), ".lnk"]; } readAddress(a) { return this.machine.readConst(a); } // TODO loadBIOS(bios) { this.machine.loadBIOS(a); } getMemoryMap = function () { diff --git a/src/platform/arm32.ts b/src/platform/arm32.ts index 4b53c5ca..af9d0b56 100644 --- a/src/platform/arm32.ts +++ b/src/platform/arm32.ts @@ -43,7 +43,7 @@ export abstract class BaseARMMachinePlatform extends BaseMach return "armtcc"; } getPresets() { return ARM32_PRESETS; } - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [".c", ".armips", ".vasm"]; } } class ARM32Platform extends BaseARMMachinePlatform implements Platform { diff --git a/src/platform/astrocade.ts b/src/platform/astrocade.ts index 51f9c0fb..9f99a99a 100644 --- a/src/platform/astrocade.ts +++ b/src/platform/astrocade.ts @@ -34,7 +34,6 @@ class BallyAstrocadePlatform extends BaseZ80MachinePlatform impl newMachine() { return new BallyAstrocade(false); } getPresets() { return ASTROCADE_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } getMemoryMap = function() { return { main:[ {name:'BIOS',start:0x0,size:0x2000,type:'rom'}, diff --git a/src/platform/atari7800.ts b/src/platform/atari7800.ts index 11160c7a..41e99e56 100644 --- a/src/platform/atari7800.ts +++ b/src/platform/atari7800.ts @@ -19,7 +19,7 @@ class Atari7800Platform extends Base6502MachinePlatform implements Pl newMachine() { return new Atari7800(); } getPresets() { return Atari7800_PRESETS; } - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [...super.getDefaultExtensions(), ".cc7800"]; } readAddress(a) { return this.machine.readConst(a); } // TODO loadBIOS(bios) { this.machine.loadBIOS(a); } getMemoryMap = function() { return { main:[ diff --git a/src/platform/atari8.ts b/src/platform/atari8.ts index aca7dddb..516862e9 100644 --- a/src/platform/atari8.ts +++ b/src/platform/atari8.ts @@ -43,7 +43,7 @@ function getToolForFilename_Atari8(fn:string) { class Atari800Platform extends Base6502MachinePlatform { newMachine() { return new Atari800(); } getPresets() { return Atari800_PRESETS; } - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [...super.getDefaultExtensions(), ".bas"]; } getToolForFilename = getToolForFilename_Atari8; readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { return Atari800_MemoryMap; } @@ -83,7 +83,7 @@ abstract class Atari8MAMEPlatform extends BaseMAME6502Platform { getPresets() { return Atari8_PRESETS; } getToolForFilename = getToolForFilename_Atari8; getOpcodeMetadata = getOpcodeMetadata_6502; - getDefaultExtension() { return ".asm"; }; + getDefaultExtensions() { return [".c", ".bas", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } showHelp = atari8_showHelp; } diff --git a/src/platform/basic.ts b/src/platform/basic.ts index 0fab306a..c2180af3 100644 --- a/src/platform/basic.ts +++ b/src/platform/basic.ts @@ -163,7 +163,7 @@ class BASICPlatform implements Platform { isBlocked() { return this.tty.waitingfor != null || this.runtime.exited; } // is blocked for input? isRunning() { return this.timer.isRunning(); } - getDefaultExtension() { return ".bas"; } + getDefaultExtensions() { return [".bas"]; } getToolForFilename() { return "basic"; } getPresets() { return BASIC_PRESETS; } diff --git a/src/platform/c64.ts b/src/platform/c64.ts index 8449c67d..d72ceefe 100644 --- a/src/platform/c64.ts +++ b/src/platform/c64.ts @@ -69,7 +69,6 @@ class C64WASMPlatform extends Base6502MachinePlatform implement newMachine() { return new C64_WASMMachine('c64'); } getPresets() { return C64_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { return C64_MEMORY_MAP; } showHelp() { return "https://8bitworkshop.com/docs/platforms/c64/" } @@ -87,7 +86,7 @@ abstract class C64MAMEPlatform extends BaseMAME6502Platform { getPresets() { return C64_PRESETS; } getToolForFilename = getToolForFilename_6502; getOpcodeMetadata = getOpcodeMetadata_6502; - getDefaultExtension() { return ".c"; } + getDefaultExtensions() { return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } loadROM(title, data) { if (!this.started) { this.startModule(this.mainElement, { diff --git a/src/platform/coleco.ts b/src/platform/coleco.ts index eaaf9bd4..618925cf 100644 --- a/src/platform/coleco.ts +++ b/src/platform/coleco.ts @@ -25,7 +25,6 @@ class ColecoVisionPlatform extends BaseZ80MachinePlatform implemen newMachine() { return new ColecoVision(); } getPresets() { return ColecoVision_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } // TODO loadBIOS(bios) { this.machine.loadBIOS(a); } @@ -65,7 +64,7 @@ class ColecoVisionMAMEPlatform extends BaseMAMEZ80Platform implements Platform { getPresets() { return ColecoVision_PRESETS; } getToolForFilename = getToolForFilename_z80; - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [".c", ".ns", ".s", ".scc", ".sgb", ".z", ".wiz"]; } } diff --git a/src/platform/cpc.ts b/src/platform/cpc.ts index 34687e78..ca1aa50b 100644 --- a/src/platform/cpc.ts +++ b/src/platform/cpc.ts @@ -27,7 +27,6 @@ class CPCWASMPlatform extends BaseZ80MachinePlatform implements newMachine() { return new CPC_WASMMachine('cpc'); } getPresets() { return CPC_PRESETS; } - getDefaultExtension() { return ".asm"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { return CPC_MEMORY_MAP; } showHelp() { diff --git a/src/platform/devel.ts b/src/platform/devel.ts index fc3cce33..3776eb8c 100644 --- a/src/platform/devel.ts +++ b/src/platform/devel.ts @@ -167,7 +167,6 @@ class Devel6502Platform extends Base6502MachinePlatform implements Pl newMachine() { return new Devel6502(); } getPresets() { return DEVEL_6502_PRESETS; } - getDefaultExtension() { return ".dasm"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap = function() { return { main:[ diff --git a/src/platform/exidy.ts b/src/platform/exidy.ts index 40dd8a46..b4746d8c 100644 --- a/src/platform/exidy.ts +++ b/src/platform/exidy.ts @@ -10,7 +10,6 @@ class ExidyUGBPlatform extends Base6502MachinePlatform implements Pl newMachine() { return new ExidyUGBv2(); } getPresets() { return EXIDY_PRESETS; } - getDefaultExtension() { return ".dasm"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { diff --git a/src/platform/galaxian.ts b/src/platform/galaxian.ts index 43371c19..e9dd107c 100644 --- a/src/platform/galaxian.ts +++ b/src/platform/galaxian.ts @@ -13,7 +13,6 @@ class GalaxianPlatform extends BaseZ80MachinePlatform implement newMachine() { return new GalaxianMachine(); } getPresets() { return GALAXIAN_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.readConst(a); } readVRAMAddress(a) { return (a < 0x800) ? this.machine.vram[a] : this.machine.oram[a-0x800]; } // TODO loadBIOS(bios) { this.machine.loadBIOS(a); } diff --git a/src/platform/gb.ts b/src/platform/gb.ts index df706938..cf83b403 100644 --- a/src/platform/gb.ts +++ b/src/platform/gb.ts @@ -1,4 +1,3 @@ - import { GameBoyMachine } from "../machine/gb"; import { BaseMachinePlatform, cpuStateToLongString_SM83, getToolForFilename_z80, Platform, Preset, dumpStackToString, isDebuggable, EmuState, DisasmLine } from "../common/baseplatform"; import { PLATFORMS } from "../common/emu"; @@ -13,7 +12,7 @@ class GameBoyPlatform extends BaseMachinePlatform implements Pla newMachine() { return new GameBoyMachine(); } getPresets() { return GB_PRESETS; } - getDefaultExtension() { return ".c"; } + getDefaultExtensions() { return [".c", ".ns", ".s", ".scc", ".sgb", ".z", ".wiz"]; } getToolForFilename = getToolForFilename_z80; readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } @@ -72,4 +71,4 @@ class GameBoyPlatform extends BaseMachinePlatform implements Pla } PLATFORMS['gb'] = GameBoyPlatform; -PLATFORMS['gameboy'] = GameBoyPlatform; +PLATFORMS['gameboy'] = GameBoyPlatform; \ No newline at end of file diff --git a/src/platform/kim1.ts b/src/platform/kim1.ts index a5bd01e6..55bd8583 100644 --- a/src/platform/kim1.ts +++ b/src/platform/kim1.ts @@ -12,7 +12,6 @@ class KIM1Platform extends Base6502MachinePlatform implements Platform { newMachine() { return new KIM1(); } getPresets() { return KIM1_PRESETS; } - getDefaultExtension() { return ".dasm"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap = function() { return { main:[ diff --git a/src/platform/markdown.ts b/src/platform/markdown.ts index bbf24f69..cf871bbe 100644 --- a/src/platform/markdown.ts +++ b/src/platform/markdown.ts @@ -33,8 +33,8 @@ class MarkdownPlatform implements Platform { getToolForFilename(fn : string) : string { return "markdown"; } - getDefaultExtension() : string { - return ".md"; + getDefaultExtensions() { + return [".md"]; } getPresets() { return [ diff --git a/src/platform/msx.ts b/src/platform/msx.ts index c49ce31b..d3c9176b 100644 --- a/src/platform/msx.ts +++ b/src/platform/msx.ts @@ -41,7 +41,7 @@ class MSXPlatform extends BaseZ80MachinePlatform implements Platform { newMachine() { return new MSX1(); } getPresets() { return MSX_BIOS_PRESETS; } - getDefaultExtension() { return ".c"; }; + readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } getMemoryMap = function() { return { main:[ diff --git a/src/platform/mw8080bw.ts b/src/platform/mw8080bw.ts index 3ea398c6..8aaa412b 100644 --- a/src/platform/mw8080bw.ts +++ b/src/platform/mw8080bw.ts @@ -16,7 +16,6 @@ class Midway8080BWPlatform extends BaseZ80MachinePlatform implements newMachine() { return new Midway8080(); } 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 e03cda1d..d8ad6dad 100644 --- a/src/platform/nes.ts +++ b/src/platform/nes.ts @@ -268,7 +268,7 @@ class JSNESPlatform extends Base6502Platform implements Platform, Probeable { getOriginPC() { // TODO: is actually NMI return (this.readAddress(0xfffa) | (this.readAddress(0xfffb) << 8)) & 0xffff; } - getDefaultExtension() { return ".c"; } + getDefaultExtensions() { return [...super.getDefaultExtensions(), ".nesasm"]; } getROMExtension() { return ".nes"; } @@ -558,7 +558,7 @@ class NESMAMEPlatform extends BaseMAME6502Platform implements Platform { getPresets() { return JSNES_PRESETS; } getToolForFilename = getToolForFilename_6502; getOpcodeMetadata = getOpcodeMetadata_6502; - getDefaultExtension() { return ".c"; }; + getDefaultExtensions() { return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } } diff --git a/src/platform/pce.ts b/src/platform/pce.ts index 298391e4..5286a0eb 100644 --- a/src/platform/pce.ts +++ b/src/platform/pce.ts @@ -48,8 +48,8 @@ class PCEnginePlatform implements Platform { getToolForFilename(fn: string): string { return getToolForFilename_6502(fn); } - getDefaultExtension(): string { - return ".pce"; + getDefaultExtensions() { + return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } readAddress(addr: number): number { return this.pce.Get(addr); diff --git a/src/platform/sms.ts b/src/platform/sms.ts index 5dcf5b27..7ebfb16f 100644 --- a/src/platform/sms.ts +++ b/src/platform/sms.ts @@ -32,7 +32,7 @@ class SG1000Platform extends BaseZ80MachinePlatform implements Platform newMachine() { return new SG1000(); } getPresets() { return SG1000_PRESETS; } - getDefaultExtension() { return ".c"; }; + readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } } @@ -41,7 +41,7 @@ class SMSPlatform extends BaseZ80MachinePlatform implements Platform { newMachine() { return new SMS(); } getPresets() { return SMS_PRESETS; } - getDefaultExtension() { return ".c"; }; + readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } } @@ -50,7 +50,7 @@ class GameGearPlatform extends BaseZ80MachinePlatform implements Platf newMachine() { return new GameGear(); } getPresets() { return SMS_PRESETS; } - getDefaultExtension() { return ".c"; }; + readAddress(a) { return this.machine.read(a); } readVRAMAddress(a) { return this.machine.readVRAMAddress(a); } } diff --git a/src/platform/sound_williams.ts b/src/platform/sound_williams.ts index 5b0cd3f7..33500b2b 100644 --- a/src/platform/sound_williams.ts +++ b/src/platform/sound_williams.ts @@ -113,7 +113,6 @@ export class WilliamsSoundPlatform extends BaseZ80MachinePlatform newMachine() { return new WilliamsSound(); } getPresets() { return WILLIAMS_SOUND_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } } diff --git a/src/platform/vcs.ts b/src/platform/vcs.ts index 190052f0..5c479db7 100644 --- a/src/platform/vcs.ts +++ b/src/platform/vcs.ts @@ -303,7 +303,7 @@ class VCSPlatform extends BasePlatform { return "\n" + dumpRAM(ram, 0x80, 0x80); } getToolForFilename = getToolForFilename_vcs; - getDefaultExtension() { return ".dasm"; } + getDefaultExtensions() { return [".c", ".bb", ".acme", ".ca65", ".dasm", ".cc2600", ".ecs", ".wiz"]; } getROMExtension() { return ".a26"; } getDebugCategories() { @@ -480,7 +480,7 @@ class VCSMAMEPlatform extends BaseMAME6502Platform implements Platform { getPresets = function() { return VCS_PRESETS; } getToolForFilename = getToolForFilename_vcs; - getDefaultExtension() { return ".dasm"; } + getDefaultExtensions() { return [".c", ".bb", ".acme", ".ca65", ".dasm", ".cc2600", ".ecs", ".wiz"]; } getROMExtension() { return ".a26"; } getOriginPC = function() { @@ -538,8 +538,8 @@ class VCSStellaPlatform implements Platform { return this.running; } getToolForFilename = getToolForFilename_vcs; - getDefaultExtension() { return ".dasm"; } - getROMExtension() { return ".a26"; } + getDefaultExtensions() { return [".c", ".bb", ".acme", ".ca65", ".dasm", ".cc2600", ".ecs", ".wiz"]; } + getROMExtension() { return ".a26"; } getPresets() { return VCS_PRESETS } } diff --git a/src/platform/verilog.ts b/src/platform/verilog.ts index 6bf5dc03..8777e18a 100644 --- a/src/platform/verilog.ts +++ b/src/platform/verilog.ts @@ -718,7 +718,7 @@ var VerilogPlatform = function(mainElement, options) { else if (fn.endsWith(".ice")) return "silice"; else return "verilator"; } - getDefaultExtension() { return ".v"; }; + getDefaultExtensions() { return [".v", ".asm", ".ice"]; } inspect(name:string) : string { if (!top) return; diff --git a/src/platform/vic20.ts b/src/platform/vic20.ts index 90768d0a..8531beae 100644 --- a/src/platform/vic20.ts +++ b/src/platform/vic20.ts @@ -32,7 +32,6 @@ class VIC20WASMPlatform extends Base6502MachinePlatform imple newMachine() { return new VIC20_WASMMachine('vic20'); } getPresets() { return VIC20_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { return VIC20_MEMORY_MAP; } showHelp() { @@ -52,7 +51,7 @@ abstract class VIC20MAMEPlatform extends BaseMAME6502Platform { getPresets() { return VIC20_PRESETS; } getToolForFilename = getToolForFilename_6502; getOpcodeMetadata = getOpcodeMetadata_6502; - getDefaultExtension() { return ".c"; } + getDefaultExtensions() { return [".c", ".cpp", ".acme", ".ca65", ".dasm", ".ecs", ".wiz"]; } loadROM(title, data) { if (!this.started) { this.startModule(this.mainElement, { diff --git a/src/platform/vicdual.ts b/src/platform/vicdual.ts index 3ce42a2c..fcd606ac 100644 --- a/src/platform/vicdual.ts +++ b/src/platform/vicdual.ts @@ -18,7 +18,6 @@ class VicDualPlatform extends BaseZ80MachinePlatform implements Platfor newMachine() { return new VicDual(); } getPresets() { return VICDUAL_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.read(a); } // TODO loadBIOS(bios) { this.machine.loadBIOS(a); } getMemoryMap = function() { return { main:[ diff --git a/src/platform/williams.ts b/src/platform/williams.ts index 1e6657a6..1800ebd3 100644 --- a/src/platform/williams.ts +++ b/src/platform/williams.ts @@ -479,7 +479,6 @@ class NewWilliamsPlatform extends Base6809MachinePlatform imple newMachine() { return new WilliamsMachine(false); } getPresets() { return WILLIAMS_PRESETS; } - getDefaultExtension() { return ".c"; }; readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { return { main:[ diff --git a/src/platform/x86.ts b/src/platform/x86.ts index f6125296..1dcb5d0d 100644 --- a/src/platform/x86.ts +++ b/src/platform/x86.ts @@ -65,8 +65,8 @@ class X86PCPlatform implements Platform { if (s.endsWith(".c")) return "smlrc"; return "yasm"; } - getDefaultExtension(): string { - return ".asm"; + getDefaultExtensions() { + return [".c", ".asm"]; } getPresets() { return PC_PRESETS; diff --git a/src/platform/zmachine.ts b/src/platform/zmachine.ts index 7917193a..e9a1cd21 100644 --- a/src/platform/zmachine.ts +++ b/src/platform/zmachine.ts @@ -706,8 +706,8 @@ class ZmachinePlatform implements Platform { getToolForFilename(s: string): string { return "inform6"; } - getDefaultExtension(): string { - return ".inf"; + getDefaultExtensions() { + return [".inf"]; } showHelp() { return "https://www.inform-fiction.org/manual/html/contents.html"; diff --git a/src/platform/zx.ts b/src/platform/zx.ts index c6dffb5f..10b70360 100644 --- a/src/platform/zx.ts +++ b/src/platform/zx.ts @@ -24,7 +24,7 @@ class ZXWASMPlatform extends BaseZ80MachinePlatform implements P newMachine() { return new ZX_WASMMachine('zx'); } getPresets() { return ZX_PRESETS; } - getDefaultExtension() { return ".asm"; }; + readAddress(a) { return this.machine.readConst(a); } getMemoryMap() { return ZX_MEMORY_MAP; } showHelp() { diff --git a/src/test/testanalysis.ts b/src/test/testanalysis.ts index 576a2262..a6f90761 100644 --- a/src/test/testanalysis.ts +++ b/src/test/testanalysis.ts @@ -20,7 +20,7 @@ class Test6502Platform implements Platform { getToolForFilename(s: string): string { throw new Error("Method not implemented."); } - getDefaultExtension(): string { + getDefaultExtensions(): string[] { throw new Error("Method not implemented."); } pause(): void { diff --git a/test/cli/testplatforms.js b/test/cli/testplatforms.js index cc51cd83..e2df77e9 100644 --- a/test/cli/testplatforms.js +++ b/test/cli/testplatforms.js @@ -216,7 +216,10 @@ async function testPlatform(platid, romname, maxframes, callback) { if (dbgtree != null) JSON.stringify(dbgtree); } // misc - assert.ok(platform.getDefaultExtension().startsWith('.')); + var exts = platform.getDefaultExtensions(); + assert.ok(Array.isArray(exts)); + assert.ok(exts.length > 0); + exts.forEach(ext => assert.ok(ext.startsWith('.'))); if (platform.getROMExtension) assert.ok(platform.getROMExtension().startsWith(".")); // load state again platform.loadState(state3);