diff --git a/src/platforms/tec1g/README.md b/src/platforms/tec1g/README.md index 2a64b39..d1fc1a2 100644 --- a/src/platforms/tec1g/README.md +++ b/src/platforms/tec1g/README.md @@ -109,7 +109,10 @@ config (and optionally ROM listings via `extraListings`). "entry": 0, "matrixMode": false, "protectOnReset": false, - "expansionBankHi": false + "expansionBankHi": false, + "sdEnabled": false, + "sdHighCapacity": true, + "sdImagePath": "" } } ``` diff --git a/src/platforms/tec1g/runtime.ts b/src/platforms/tec1g/runtime.ts index a90fafa..adeda9a 100644 --- a/src/platforms/tec1g/runtime.ts +++ b/src/platforms/tec1g/runtime.ts @@ -305,6 +305,7 @@ export function normalizeTec1gConfig(cfg?: Tec1gPlatformConfig): Tec1gPlatformCo const protectOnReset = config.protectOnReset === true; const rtcEnabled = config.rtcEnabled === true; const sdEnabled = config.sdEnabled === true; + const sdHighCapacity = config.sdHighCapacity !== false; const sdImagePath = typeof config.sdImagePath === 'string' && config.sdImagePath !== '' ? config.sdImagePath @@ -324,6 +325,7 @@ export function normalizeTec1gConfig(cfg?: Tec1gPlatformConfig): Tec1gPlatformCo protectOnReset, rtcEnabled, sdEnabled, + sdHighCapacity, ...(sdImagePath !== undefined ? { sdImagePath } : {}), ...(cartridgeHex !== undefined ? { cartridgeHex } : {}), ...(extraListings ? { extraListings } : {}), @@ -353,6 +355,7 @@ export function createTec1gRuntime( const rtc = rtcEnabled ? new Ds1302() : null; const sdEnabled = config.sdEnabled; const sdImagePath = config.sdImagePath; + const sdHighCapacity = config.sdHighCapacity; let sdImage: Uint8Array | undefined; if (sdEnabled && typeof sdImagePath === 'string' && sdImagePath !== '') { try { @@ -361,7 +364,9 @@ export function createTec1gRuntime( sdImage = undefined; } } - const sdSpi = sdEnabled ? new SdSpi(sdImage ? { image: sdImage } : undefined) : null; + const sdSpi = sdEnabled + ? new SdSpi({ highCapacity: sdHighCapacity, ...(sdImage ? { image: sdImage } : {}) }) + : null; let cartridgePresentDefault = config.cartridgeHex !== undefined; const state: Tec1gState = { digits: Array.from({ length: 6 }, () => 0), diff --git a/src/platforms/types.ts b/src/platforms/types.ts index 81fa507..cbe8ea2 100644 --- a/src/platforms/types.ts +++ b/src/platforms/types.ts @@ -67,6 +67,7 @@ export interface Tec1gPlatformConfig { rtcEnabled?: boolean; sdEnabled?: boolean; sdImagePath?: string; + sdHighCapacity?: boolean; cartridgeHex?: string; uiVisibility?: { lcd?: boolean; @@ -96,6 +97,7 @@ export interface Tec1gPlatformConfigNormalized { rtcEnabled: boolean; sdEnabled: boolean; sdImagePath?: string; + sdHighCapacity: boolean; cartridgeHex?: string; uiVisibility?: { lcd?: boolean; diff --git a/tests/debug/tec1g-memory.test.ts b/tests/debug/tec1g-memory.test.ts index 2d876f3..ede24bc 100644 --- a/tests/debug/tec1g-memory.test.ts +++ b/tests/debug/tec1g-memory.test.ts @@ -55,6 +55,7 @@ describe('TEC-1G expand bank switching', () => { matrixMode: false, rtcEnabled: false, sdEnabled: false, + sdHighCapacity: true, }; const runtime = createTec1gRuntime(config, () => {}); runtime.state.bankA14 = false; diff --git a/tests/platforms/tec1g/glcd.test.ts b/tests/platforms/tec1g/glcd.test.ts index 58ac770..1fda968 100644 --- a/tests/platforms/tec1g/glcd.test.ts +++ b/tests/platforms/tec1g/glcd.test.ts @@ -19,6 +19,7 @@ function makeRuntime() { protectOnReset: false, rtcEnabled: false, sdEnabled: false, + sdHighCapacity: true, }; return createTec1gRuntime(config, () => {}); } diff --git a/tests/platforms/tec1g/lcd.test.ts b/tests/platforms/tec1g/lcd.test.ts index 7709427..7758622 100644 --- a/tests/platforms/tec1g/lcd.test.ts +++ b/tests/platforms/tec1g/lcd.test.ts @@ -19,6 +19,7 @@ function makeRuntime() { protectOnReset: false, rtcEnabled: false, sdEnabled: false, + sdHighCapacity: true, }; return createTec1gRuntime(config, () => {}); } diff --git a/tests/platforms/tec1g/matrix.test.ts b/tests/platforms/tec1g/matrix.test.ts index 81fa78a..86b0599 100644 --- a/tests/platforms/tec1g/matrix.test.ts +++ b/tests/platforms/tec1g/matrix.test.ts @@ -19,6 +19,7 @@ function makeRuntime(matrixMode = true) { protectOnReset: false, rtcEnabled: false, sdEnabled: false, + sdHighCapacity: true, }; return createTec1gRuntime(config, () => {}); } diff --git a/tests/platforms/tec1g/port03.test.ts b/tests/platforms/tec1g/port03.test.ts index 0984b9c..693dca6 100644 --- a/tests/platforms/tec1g/port03.test.ts +++ b/tests/platforms/tec1g/port03.test.ts @@ -20,6 +20,7 @@ function makeRuntime(overrides: Partial = {}) { protectOnReset: false, rtcEnabled: false, sdEnabled: false, + sdHighCapacity: true, ...overrides, }, () => {} diff --git a/tests/platforms/tec1g/portfc.test.ts b/tests/platforms/tec1g/portfc.test.ts index 21d0567..fd7ca32 100644 --- a/tests/platforms/tec1g/portfc.test.ts +++ b/tests/platforms/tec1g/portfc.test.ts @@ -23,6 +23,7 @@ function makeRuntime(rtcEnabled: boolean) { protectOnReset: false, rtcEnabled, sdEnabled: false, + sdHighCapacity: true, }; return createTec1gRuntime(config, () => {}); } diff --git a/tests/platforms/tec1g/portfd.test.ts b/tests/platforms/tec1g/portfd.test.ts index 06136fd..fe646b8 100644 --- a/tests/platforms/tec1g/portfd.test.ts +++ b/tests/platforms/tec1g/portfd.test.ts @@ -22,6 +22,7 @@ function makeRuntime(sdEnabled: boolean) { protectOnReset: false, rtcEnabled: false, sdEnabled, + sdHighCapacity: true, }; return createTec1gRuntime(config, () => {}); } diff --git a/tests/platforms/tec1g/serial.test.ts b/tests/platforms/tec1g/serial.test.ts index 59dcd9f..3514a19 100644 --- a/tests/platforms/tec1g/serial.test.ts +++ b/tests/platforms/tec1g/serial.test.ts @@ -19,6 +19,7 @@ function makeRuntime(onByte: (byte: number) => void) { protectOnReset: false, rtcEnabled: false, sdEnabled: false, + sdHighCapacity: true, }; return createTec1gRuntime(config, () => {}, onByte); }