ac6502 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CPU.d.ts +162 -0
- package/dist/components/Cart.d.ts +9 -0
- package/dist/components/IO/DevOutputBoard.d.ts +19 -0
- package/dist/components/IO/DevOutputBoard.js +33 -0
- package/dist/components/IO/DevOutputBoard.js.map +1 -0
- package/dist/components/IO/EmptyCard.d.ts +9 -0
- package/dist/components/IO/GPIOAttachments/GPIOAttachment.d.ts +112 -0
- package/dist/components/IO/GPIOAttachments/GPIOJoystickAttachment.d.ts +53 -0
- package/dist/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.d.ts +63 -0
- package/dist/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.d.ts +44 -0
- package/dist/components/IO/GPIOAttachments/GPIOKeypadAttachment.d.ts +47 -0
- package/dist/components/IO/GPIOAttachments/GPIOLCDAttachment.d.ts +110 -0
- package/dist/components/IO/GPIOCard.d.ts +105 -0
- package/dist/components/IO/RAMCard.d.ts +37 -0
- package/dist/components/IO/RTCCard.d.ts +107 -0
- package/dist/components/IO/SerialCard.d.ts +76 -0
- package/dist/components/IO/SoundCard.d.ts +120 -0
- package/dist/components/IO/SoundCard.js +2 -0
- package/dist/components/IO/SoundCard.js.map +1 -1
- package/dist/components/IO/StorageCard.d.ts +74 -0
- package/dist/components/IO/VideoCard.d.ts +141 -0
- package/dist/components/IO/VideoCard.js +19 -12
- package/dist/components/IO/VideoCard.js.map +1 -1
- package/dist/components/IO.d.ts +8 -0
- package/dist/components/Machine.d.ts +66 -0
- package/dist/components/Machine.js +38 -6
- package/dist/components/Machine.js.map +1 -1
- package/dist/components/RAM.d.ts +9 -0
- package/dist/components/ROM.d.ts +9 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +35 -16
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +22 -0
- package/dist/lib.js +47 -0
- package/dist/lib.js.map +1 -0
- package/dist/tests/CPU.test.d.ts +1 -0
- package/dist/tests/Cart.test.d.ts +1 -0
- package/dist/tests/IO/GPIOAttachments/GPIOAttachment.test.d.ts +1 -0
- package/dist/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.d.ts +1 -0
- package/dist/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.d.ts +1 -0
- package/dist/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.d.ts +1 -0
- package/dist/tests/IO/GPIOAttachments/GPIOKeypadAttachment.test.d.ts +1 -0
- package/dist/tests/IO/GPIOAttachments/GPIOLCDAttachment.test.d.ts +1 -0
- package/dist/tests/IO/GPIOCard.test.d.ts +1 -0
- package/dist/tests/IO/RAMCard.test.d.ts +1 -0
- package/dist/tests/IO/RTCCard.test.d.ts +1 -0
- package/dist/tests/IO/SerialCard.test.d.ts +1 -0
- package/dist/tests/IO/SoundCard.test.d.ts +1 -0
- package/dist/tests/IO/StorageCard.test.d.ts +1 -0
- package/dist/tests/IO/VideoCard.test.d.ts +1 -0
- package/dist/tests/Machine.test.d.ts +1 -0
- package/dist/tests/RAM.test.d.ts +1 -0
- package/dist/tests/ROM.test.d.ts +1 -0
- package/package.json +5 -3
- package/src/components/IO/DevOutputBoard.ts +34 -0
- package/src/components/IO/SoundCard.ts +3 -0
- package/src/components/IO/VideoCard.ts +21 -12
- package/src/components/Machine.ts +40 -7
- package/src/index.ts +35 -18
- package/src/lib.ts +27 -0
- package/tsconfig.json +1 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
import { GPIOAttachment } from './GPIOAttachments/GPIOAttachment';
|
|
3
|
+
/**
|
|
4
|
+
* GPIOCard - Emulates the 65C22 VIA (Versatile Interface Adapter)
|
|
5
|
+
*
|
|
6
|
+
* The 65C22 VIA provides:
|
|
7
|
+
* - Two 8-bit bidirectional I/O ports (Port A and Port B)
|
|
8
|
+
* - Two 16-bit timers with interrupt generation
|
|
9
|
+
* - Shift register for serial I/O
|
|
10
|
+
* - Handshaking lines for data transfer
|
|
11
|
+
*/
|
|
12
|
+
export declare class GPIOCard implements IO {
|
|
13
|
+
private static readonly VIA_ORB;
|
|
14
|
+
private static readonly VIA_ORA;
|
|
15
|
+
private static readonly VIA_DDRB;
|
|
16
|
+
private static readonly VIA_DDRA;
|
|
17
|
+
private static readonly VIA_T1CL;
|
|
18
|
+
private static readonly VIA_T1CH;
|
|
19
|
+
private static readonly VIA_T1LL;
|
|
20
|
+
private static readonly VIA_T1LH;
|
|
21
|
+
private static readonly VIA_T2CL;
|
|
22
|
+
private static readonly VIA_T2CH;
|
|
23
|
+
private static readonly VIA_SR;
|
|
24
|
+
private static readonly VIA_ACR;
|
|
25
|
+
private static readonly VIA_PCR;
|
|
26
|
+
private static readonly VIA_IFR;
|
|
27
|
+
private static readonly VIA_IER;
|
|
28
|
+
private static readonly VIA_ORA_NH;
|
|
29
|
+
private static readonly IRQ_CA2;
|
|
30
|
+
private static readonly IRQ_CA1;
|
|
31
|
+
private static readonly IRQ_SR;
|
|
32
|
+
private static readonly IRQ_CB2;
|
|
33
|
+
private static readonly IRQ_CB1;
|
|
34
|
+
private static readonly IRQ_T2;
|
|
35
|
+
private static readonly IRQ_T1;
|
|
36
|
+
private static readonly IRQ_IRQ;
|
|
37
|
+
private static readonly MAX_ATTACHMENTS_PER_PORT;
|
|
38
|
+
private regORB;
|
|
39
|
+
private regORA;
|
|
40
|
+
private regDDRB;
|
|
41
|
+
private regDDRA;
|
|
42
|
+
private regT1C;
|
|
43
|
+
private regT1L;
|
|
44
|
+
private regT2C;
|
|
45
|
+
private regT2L;
|
|
46
|
+
private regSR;
|
|
47
|
+
private regACR;
|
|
48
|
+
private regPCR;
|
|
49
|
+
private regIFR;
|
|
50
|
+
private regIER;
|
|
51
|
+
private CA1;
|
|
52
|
+
private CA2;
|
|
53
|
+
private CB1;
|
|
54
|
+
private CB2;
|
|
55
|
+
private T1_running;
|
|
56
|
+
private T2_running;
|
|
57
|
+
private T1_IRQ_enabled;
|
|
58
|
+
private T2_IRQ_enabled;
|
|
59
|
+
private tickCounter;
|
|
60
|
+
private ticksPerMicrosecond;
|
|
61
|
+
private portA_attachments;
|
|
62
|
+
private portB_attachments;
|
|
63
|
+
private portA_attachmentCount;
|
|
64
|
+
private portB_attachmentCount;
|
|
65
|
+
raiseIRQ: () => void;
|
|
66
|
+
raiseNMI: () => void;
|
|
67
|
+
constructor();
|
|
68
|
+
reset(coldStart: boolean): void;
|
|
69
|
+
read(address: number): number;
|
|
70
|
+
write(address: number, data: number): void;
|
|
71
|
+
tick(frequency: number): void;
|
|
72
|
+
private updateIRQ;
|
|
73
|
+
private setIRQFlag;
|
|
74
|
+
private clearIRQFlag;
|
|
75
|
+
private readPortA;
|
|
76
|
+
private readPortB;
|
|
77
|
+
private writePortA;
|
|
78
|
+
private writePortB;
|
|
79
|
+
private updateCA2;
|
|
80
|
+
private updateCB2;
|
|
81
|
+
private notifyAttachmentsControlLines;
|
|
82
|
+
private sortAttachmentsByPriority;
|
|
83
|
+
/**
|
|
84
|
+
* Attach a GPIO device to Port A
|
|
85
|
+
* @param attachment - The attachment to add
|
|
86
|
+
*/
|
|
87
|
+
attachToPortA(attachment: GPIOAttachment): void;
|
|
88
|
+
/**
|
|
89
|
+
* Attach a GPIO device to Port B
|
|
90
|
+
* @param attachment - The attachment to add
|
|
91
|
+
*/
|
|
92
|
+
attachToPortB(attachment: GPIOAttachment): void;
|
|
93
|
+
/**
|
|
94
|
+
* Get a Port A attachment by index
|
|
95
|
+
* @param index - The attachment index
|
|
96
|
+
* @returns The attachment or null if not found
|
|
97
|
+
*/
|
|
98
|
+
getPortAAttachment(index: number): GPIOAttachment | null;
|
|
99
|
+
/**
|
|
100
|
+
* Get a Port B attachment by index
|
|
101
|
+
* @param index - The attachment index
|
|
102
|
+
* @returns The attachment or null if not found
|
|
103
|
+
*/
|
|
104
|
+
getPortBAttachment(index: number): GPIOAttachment | null;
|
|
105
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
/**
|
|
3
|
+
* RAMCard - Emulates banked RAM with 256KB total capacity
|
|
4
|
+
*
|
|
5
|
+
* Provides 256KB of banked RAM divided into 256 banks of 1KB each.
|
|
6
|
+
* A bank control register at address 0x3FF selects which bank is currently visible.
|
|
7
|
+
*
|
|
8
|
+
* Address Map:
|
|
9
|
+
* $000-$3FE: Bank data (1K window into selected bank)
|
|
10
|
+
* $3FF: Bank control register (read/write)
|
|
11
|
+
*/
|
|
12
|
+
export declare class RAMCard implements IO {
|
|
13
|
+
static TOTAL_SIZE: number;
|
|
14
|
+
static BANK_SIZE: number;
|
|
15
|
+
static NUM_BANKS: number;
|
|
16
|
+
static BANK_CONTROL_REGISTER: number;
|
|
17
|
+
data: number[];
|
|
18
|
+
currentBank: number;
|
|
19
|
+
raiseIRQ: () => void;
|
|
20
|
+
raiseNMI: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Read from RAM or bank control register
|
|
23
|
+
*/
|
|
24
|
+
read(address: number): number;
|
|
25
|
+
/**
|
|
26
|
+
* Write to RAM or bank control register
|
|
27
|
+
*/
|
|
28
|
+
write(address: number, data: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Tick - no timing behavior for RAM
|
|
31
|
+
*/
|
|
32
|
+
tick(frequency: number): void;
|
|
33
|
+
/**
|
|
34
|
+
* Reset the RAM card
|
|
35
|
+
*/
|
|
36
|
+
reset(coldStart: boolean): void;
|
|
37
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
/**
|
|
3
|
+
* DS1511Y Real-Time Clock IC Emulation
|
|
4
|
+
*
|
|
5
|
+
* Register Map (0x00-0x1F):
|
|
6
|
+
* 0x00: Seconds (BCD, 00-59)
|
|
7
|
+
* 0x01: Minutes (BCD, 00-59)
|
|
8
|
+
* 0x02: Hours (BCD, 00-23)
|
|
9
|
+
* 0x03: Day of Week (1-7, 1=Sunday)
|
|
10
|
+
* 0x04: Date (BCD, 01-31)
|
|
11
|
+
* 0x05: Month (BCD, 01-12) + Control bits (EOSC, E32K)
|
|
12
|
+
* 0x06: Year (BCD, 00-99)
|
|
13
|
+
* 0x07: Century (BCD, 00-39)
|
|
14
|
+
* 0x08: Alarm Seconds (BCD, 00-59) + AM1 bit
|
|
15
|
+
* 0x09: Alarm Minutes (BCD, 00-59) + AM2 bit
|
|
16
|
+
* 0x0A: Alarm Hours (BCD, 00-23) + AM3 bit
|
|
17
|
+
* 0x0B: Alarm Day/Date + AM4, DY/DT bits
|
|
18
|
+
* 0x0C: Watchdog (0.1 Second and 0.01 Second)
|
|
19
|
+
* 0x0D: Watchdog (0.1 Second and Second)
|
|
20
|
+
* 0x0E: Control A (BLF1, BLF2, PBS, PAB, TDF, KSF, WDF, IRQF)
|
|
21
|
+
* 0x0F: Control B (TE, CS, BME, TPE, TIE, KIE, WDE, WDS)
|
|
22
|
+
* 0x10: RAM Address (Extended RAM Address pointer)
|
|
23
|
+
* 0x11: Reserved
|
|
24
|
+
* 0x12: Reserved
|
|
25
|
+
* 0x13: RAM Data (Extended RAM Data at address pointed to by 0x10)
|
|
26
|
+
*/
|
|
27
|
+
export declare class RTCCard implements IO {
|
|
28
|
+
raiseIRQ: () => void;
|
|
29
|
+
raiseNMI: () => void;
|
|
30
|
+
private userSeconds;
|
|
31
|
+
private userMinutes;
|
|
32
|
+
private userHours;
|
|
33
|
+
private userDayOfWeek;
|
|
34
|
+
private userDate;
|
|
35
|
+
private userMonth;
|
|
36
|
+
private monthControl;
|
|
37
|
+
private userYear;
|
|
38
|
+
private userCentury;
|
|
39
|
+
private internalSeconds;
|
|
40
|
+
private internalMinutes;
|
|
41
|
+
private internalHours;
|
|
42
|
+
private internalDayOfWeek;
|
|
43
|
+
private internalDate;
|
|
44
|
+
private internalMonth;
|
|
45
|
+
private internalYear;
|
|
46
|
+
private internalCentury;
|
|
47
|
+
private alarmSeconds;
|
|
48
|
+
private alarmMinutes;
|
|
49
|
+
private alarmHours;
|
|
50
|
+
private alarmDayDate;
|
|
51
|
+
private watchdog1;
|
|
52
|
+
private watchdog2;
|
|
53
|
+
private watchdogCounterCentis;
|
|
54
|
+
private watchdogCycleCounter;
|
|
55
|
+
private controlA;
|
|
56
|
+
private controlB;
|
|
57
|
+
private ramAddress;
|
|
58
|
+
private ramData;
|
|
59
|
+
private cycleCounter;
|
|
60
|
+
private cpuFrequency;
|
|
61
|
+
private transferCycleCounter;
|
|
62
|
+
private pendingUserToInternal;
|
|
63
|
+
private userSyncNeeded;
|
|
64
|
+
private lastTEEnabled;
|
|
65
|
+
constructor();
|
|
66
|
+
/**
|
|
67
|
+
* Initialize RTC with current system time
|
|
68
|
+
*/
|
|
69
|
+
private initializeWithCurrentTime;
|
|
70
|
+
/**
|
|
71
|
+
* Convert decimal to BCD (Binary Coded Decimal)
|
|
72
|
+
*/
|
|
73
|
+
private decimalToBCD;
|
|
74
|
+
/**
|
|
75
|
+
* Convert BCD to decimal
|
|
76
|
+
*/
|
|
77
|
+
private bcdToDecimal;
|
|
78
|
+
/**
|
|
79
|
+
* Get the number of days in a month
|
|
80
|
+
*/
|
|
81
|
+
private getDaysInMonth;
|
|
82
|
+
/**
|
|
83
|
+
* Get next day of week
|
|
84
|
+
*/
|
|
85
|
+
private getNextDayOfWeek;
|
|
86
|
+
private copyInternalToUser;
|
|
87
|
+
private copyUserToInternal;
|
|
88
|
+
private getTransferCyclesRequired;
|
|
89
|
+
private markUserTimeWrite;
|
|
90
|
+
/**
|
|
91
|
+
* Increment time by one second
|
|
92
|
+
*/
|
|
93
|
+
private incrementTime;
|
|
94
|
+
/**
|
|
95
|
+
* Check if alarm should trigger
|
|
96
|
+
*/
|
|
97
|
+
private checkAlarm;
|
|
98
|
+
private raiseInterruptIfEnabled;
|
|
99
|
+
private setKickstartFlag;
|
|
100
|
+
private decodeWatchdogCentis;
|
|
101
|
+
private reloadWatchdog;
|
|
102
|
+
private stepWatchdog;
|
|
103
|
+
read(address: number): number;
|
|
104
|
+
write(address: number, data: number): void;
|
|
105
|
+
tick(frequency: number): void;
|
|
106
|
+
reset(coldStart: boolean): void;
|
|
107
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
/**
|
|
3
|
+
* SerialCard - Emulates a 6551 ACIA (Asynchronous Communications Interface Adapter)
|
|
4
|
+
*
|
|
5
|
+
* Register Map:
|
|
6
|
+
* $00: Data Register (read/write)
|
|
7
|
+
* $01: Status Register (read) / Programmed Reset (write)
|
|
8
|
+
* $02: Command Register (write)
|
|
9
|
+
* $03: Control Register (write)
|
|
10
|
+
*/
|
|
11
|
+
export declare class SerialCard implements IO {
|
|
12
|
+
raiseIRQ: () => void;
|
|
13
|
+
raiseNMI: () => void;
|
|
14
|
+
transmit?: (data: number) => void;
|
|
15
|
+
private dataRegister;
|
|
16
|
+
private statusRegister;
|
|
17
|
+
private commandRegister;
|
|
18
|
+
private controlRegister;
|
|
19
|
+
private transmitBuffer;
|
|
20
|
+
private receiveBuffer;
|
|
21
|
+
private parityError;
|
|
22
|
+
private framingError;
|
|
23
|
+
private overrun;
|
|
24
|
+
private irqFlag;
|
|
25
|
+
private echoMode;
|
|
26
|
+
private cycleCounter;
|
|
27
|
+
private baudRate;
|
|
28
|
+
/**
|
|
29
|
+
* Read from ACIA register
|
|
30
|
+
*/
|
|
31
|
+
read(address: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* Write to ACIA register
|
|
34
|
+
*/
|
|
35
|
+
write(address: number, data: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Read data from receive buffer
|
|
38
|
+
*/
|
|
39
|
+
private readData;
|
|
40
|
+
/**
|
|
41
|
+
* Write data to transmit buffer
|
|
42
|
+
*/
|
|
43
|
+
private writeData;
|
|
44
|
+
/**
|
|
45
|
+
* Read status register
|
|
46
|
+
*/
|
|
47
|
+
private readStatus;
|
|
48
|
+
/**
|
|
49
|
+
* Write to command register
|
|
50
|
+
*/
|
|
51
|
+
private writeCommand;
|
|
52
|
+
/**
|
|
53
|
+
* Write to control register
|
|
54
|
+
*/
|
|
55
|
+
private writeControl;
|
|
56
|
+
/**
|
|
57
|
+
* Get baud rate from control register code
|
|
58
|
+
*/
|
|
59
|
+
private getBaudRate;
|
|
60
|
+
/**
|
|
61
|
+
* Programmed reset
|
|
62
|
+
*/
|
|
63
|
+
private programmedReset;
|
|
64
|
+
/**
|
|
65
|
+
* Tick - emulate ACIA timing
|
|
66
|
+
*/
|
|
67
|
+
tick(frequency: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* Reset the ACIA
|
|
70
|
+
*/
|
|
71
|
+
reset(coldStart: boolean): void;
|
|
72
|
+
/**
|
|
73
|
+
* Receive data from external source
|
|
74
|
+
*/
|
|
75
|
+
onData(data: number): void;
|
|
76
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
/**
|
|
3
|
+
* MOS 6581 SID (Sound Interface Device) Emulation
|
|
4
|
+
*
|
|
5
|
+
* Register Map ($00-$1C):
|
|
6
|
+
* Voice 1: $00-$06
|
|
7
|
+
* Voice 2: $07-$0D
|
|
8
|
+
* Voice 3: $0E-$14
|
|
9
|
+
* Filter: $15-$17
|
|
10
|
+
* Volume: $18
|
|
11
|
+
* Paddle: $19-$1A (read-only)
|
|
12
|
+
* OSC 3: $1B (read-only)
|
|
13
|
+
* ENV 3: $1C (read-only)
|
|
14
|
+
*
|
|
15
|
+
* Each voice has:
|
|
16
|
+
* Frequency (16-bit, lo/hi)
|
|
17
|
+
* Pulse Width (12-bit, lo/hi)
|
|
18
|
+
* Control Register (waveform select, gate, sync, ring mod, test)
|
|
19
|
+
* Attack/Decay (4-bit each)
|
|
20
|
+
* Sustain/Release (4-bit each)
|
|
21
|
+
*
|
|
22
|
+
* Waveforms: Triangle, Sawtooth, Pulse, Noise
|
|
23
|
+
* Filter: 12-bit cutoff, resonance, low/band/high-pass, voice routing
|
|
24
|
+
*
|
|
25
|
+
* Clock rate: ~1 MHz (NTSC: 1,022,727 Hz, PAL: 985,248 Hz)
|
|
26
|
+
* Output: mono audio samples passed via callback to the host emulator
|
|
27
|
+
*
|
|
28
|
+
* Reference: MOS 6581 SID datasheet, reSID by Dag Lem
|
|
29
|
+
*/
|
|
30
|
+
/** Default SID clock rate (NTSC) */
|
|
31
|
+
export declare const SID_CLOCK_NTSC = 1022727;
|
|
32
|
+
export declare const SID_CLOCK_PAL = 985248;
|
|
33
|
+
export declare const enum EnvelopeState {
|
|
34
|
+
ATTACK = 0,
|
|
35
|
+
DECAY = 1,
|
|
36
|
+
SUSTAIN = 2,
|
|
37
|
+
RELEASE = 3
|
|
38
|
+
}
|
|
39
|
+
export declare class SIDVoice {
|
|
40
|
+
accumulator: number;
|
|
41
|
+
frequency: number;
|
|
42
|
+
pulseWidth: number;
|
|
43
|
+
control: number;
|
|
44
|
+
prevGate: boolean;
|
|
45
|
+
noiseShift: number;
|
|
46
|
+
waveformOutput: number;
|
|
47
|
+
envelopeState: EnvelopeState;
|
|
48
|
+
envelopeLevel: number;
|
|
49
|
+
envelopeCounter: number;
|
|
50
|
+
attackRate: number;
|
|
51
|
+
decayRate: number;
|
|
52
|
+
sustainLevel: number;
|
|
53
|
+
releaseRate: number;
|
|
54
|
+
exponentialCounter: number;
|
|
55
|
+
exponentialCounterPeriod: number;
|
|
56
|
+
reset(): void;
|
|
57
|
+
}
|
|
58
|
+
export declare class SoundCard implements IO {
|
|
59
|
+
raiseIRQ: () => void;
|
|
60
|
+
raiseNMI: () => void;
|
|
61
|
+
/** Callback to push audio samples to the host emulator */
|
|
62
|
+
pushSamples?: (samples: Float32Array) => void;
|
|
63
|
+
/** Raw register file (write-only from CPU perspective, except reads at $19-$1C) */
|
|
64
|
+
private registers;
|
|
65
|
+
/** Three oscillator voices */
|
|
66
|
+
private voices;
|
|
67
|
+
/** Filter state */
|
|
68
|
+
private filterCutoff;
|
|
69
|
+
private filterResonance;
|
|
70
|
+
private filterRouting;
|
|
71
|
+
private filterMode;
|
|
72
|
+
private masterVolume;
|
|
73
|
+
/** Filter integrator state (continuous) */
|
|
74
|
+
private filterLP;
|
|
75
|
+
private filterBP;
|
|
76
|
+
private filterHP;
|
|
77
|
+
/** Cycle accumulator for sample rate conversion */
|
|
78
|
+
private cycleAccumulator;
|
|
79
|
+
/** Target audio sample rate */
|
|
80
|
+
sampleRate: number;
|
|
81
|
+
/** SID clock rate */
|
|
82
|
+
sidClock: number;
|
|
83
|
+
/** Internal sample buffer for pushing to host */
|
|
84
|
+
private sampleBuffer;
|
|
85
|
+
private sampleBufferIndex;
|
|
86
|
+
read(address: number): number;
|
|
87
|
+
write(address: number, data: number): void;
|
|
88
|
+
tick(frequency: number): void;
|
|
89
|
+
reset(coldStart: boolean): void;
|
|
90
|
+
private updateVoiceRegister;
|
|
91
|
+
private updateGlobalRegister;
|
|
92
|
+
private clockOneCycle;
|
|
93
|
+
private clockOscillator;
|
|
94
|
+
private generateWaveform;
|
|
95
|
+
private clockEnvelope;
|
|
96
|
+
/**
|
|
97
|
+
* Update the exponential counter period based on current envelope level.
|
|
98
|
+
* The real SID uses an exponential curve for decay/release by varying
|
|
99
|
+
* the counter period at specific envelope level thresholds.
|
|
100
|
+
*/
|
|
101
|
+
private updateExponentialPeriod;
|
|
102
|
+
private generateSample;
|
|
103
|
+
/**
|
|
104
|
+
* Convert the 11-bit filter cutoff register value to a frequency in Hz.
|
|
105
|
+
* The SID's cutoff mapping is complex and varies between chips.
|
|
106
|
+
* This approximation covers the usable range (~30 Hz to ~12 kHz).
|
|
107
|
+
*/
|
|
108
|
+
private computeFilterCutoff;
|
|
109
|
+
private flushSampleBuffer;
|
|
110
|
+
/** Get a voice for inspection */
|
|
111
|
+
getVoice(index: number): SIDVoice;
|
|
112
|
+
/** Get current register value */
|
|
113
|
+
getRegister(reg: number): number;
|
|
114
|
+
/** Get current filter cutoff frequency in Hz */
|
|
115
|
+
getFilterCutoffHz(): number;
|
|
116
|
+
/** Get master volume (0-15) */
|
|
117
|
+
getMasterVolume(): number;
|
|
118
|
+
/** Get filter routing bitmask */
|
|
119
|
+
getFilterRouting(): number;
|
|
120
|
+
}
|
|
@@ -208,6 +208,8 @@ class SoundCard {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
tick(frequency) {
|
|
211
|
+
// SID clock runs at the CPU clock rate
|
|
212
|
+
this.sidClock = frequency;
|
|
211
213
|
// Each tick represents CYCLES_PER_TICK SID clock cycles
|
|
212
214
|
const cycles = CYCLES_PER_TICK;
|
|
213
215
|
for (let c = 0; c < cycles; c++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundCard.js","sourceRoot":"","sources":["../../../src/components/IO/SoundCard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SoundCard.js","sourceRoot":"","sources":["../../../src/components/IO/SoundCard.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,mEAAmE;AACnE,aAAa;AACb,mEAAmE;AAEnE,oCAAoC;AACvB,QAAA,cAAc,GAAG,OAAO,CAAA;AACxB,QAAA,aAAa,GAAG,MAAM,CAAA;AAEnC,8BAA8B;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB,qDAAqD;AACrD,MAAM,eAAe,GAAG,GAAG,CAAA;AAE3B,8DAA8D;AAC9D,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,SAAS,GAAG,CAAC,CAAA;AACnB,MAAM,SAAS,GAAG,CAAC,CAAA;AACnB,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,MAAM,GAAG,CAAC,CAAA;AAChB,MAAM,MAAM,GAAG,CAAC,CAAA;AAEhB,wBAAwB;AACxB,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,MAAM,UAAU,GAAG,IAAI,CAAA;AACvB,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,4BAA4B;AAC5B,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,YAAY,GAAG,IAAI,CAAA;AACzB,MAAM,YAAY,GAAG,IAAI,CAAA;AACzB,MAAM,QAAQ,GAAG,IAAI,CAAA;AACrB,MAAM,QAAQ,GAAG,IAAI,CAAA;AACrB,MAAM,QAAQ,GAAG,IAAI,CAAA;AACrB,MAAM,QAAQ,GAAG,IAAI,CAAA;AAErB,qDAAqD;AACrD,kEAAkE;AAClE,sCAAsC;AACtC,MAAM,YAAY,GAA0B;IAC1C,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC3C,CAAA;AAED,MAAM,mBAAmB,GAA0B;IACjD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACjC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;CAC/C,CAAA;AAED,uDAAuD;AACvD,MAAM,cAAc,GAA0B;IAC5C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC/C,CAAA;AAUD,mBAAmB;AACnB,MAAM,cAAc,GAAG,IAAI,CAAA;AAC3B,MAAM,eAAe,GAAG,IAAI,CAAA;AAC5B,MAAM,eAAe,GAAG,IAAI,CAAA;AAC5B,MAAM,WAAW,GAAG,IAAI,CAAA;AAExB,mEAAmE;AACnE,SAAS;AACT,mEAAmE;AAEnE,MAAa,QAAQ;IAArB;QACE,aAAa;QACb,gBAAW,GAAW,CAAC,CAAA,CAAQ,2BAA2B;QAC1D,cAAS,GAAW,CAAC,CAAA,CAAU,mBAAmB;QAClD,eAAU,GAAW,CAAC,CAAA,CAAS,qBAAqB;QACpD,YAAO,GAAW,CAAC,CAAA,CAAY,mBAAmB;QAClD,aAAQ,GAAY,KAAK,CAAA,CAAM,yCAAyC;QAExE,qCAAqC;QACrC,eAAU,GAAW,QAAQ,CAAA,CAAE,8BAA8B;QAE7D,mCAAmC;QACnC,mBAAc,GAAW,CAAC,CAAA;QAE1B,WAAW;QACX,kBAAa,iCAAuC;QACpD,kBAAa,GAAW,CAAC,CAAA,CAAK,QAAQ;QACtC,oBAAe,GAAW,CAAC,CAAA,CAAG,gCAAgC;QAC9D,eAAU,GAAW,CAAC,CAAA,CAAS,qBAAqB;QACpD,cAAS,GAAW,CAAC,CAAA,CAAU,oBAAoB;QACnD,iBAAY,GAAW,CAAC,CAAA,CAAO,sBAAsB;QACrD,gBAAW,GAAW,CAAC,CAAA,CAAQ,sBAAsB;QAErD,4EAA4E;QAC5E,uBAAkB,GAAW,CAAC,CAAA;QAC9B,6BAAwB,GAAW,CAAC,CAAA;IAoBtC,CAAC;IAlBC,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,aAAa,gCAAwB,CAAA;QAC1C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAA;IACnC,CAAC;CACF;AA7CD,4BA6CC;AAED,mEAAmE;AACnE,mBAAmB;AACnB,mEAAmE;AAEnE,MAAa,SAAS;IAAtB;QAEE,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;QACnB,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;QAKnB,+BAA+B;QAE/B,mFAAmF;QAC3E,cAAS,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAA;QAEjD,8BAA8B;QACtB,WAAM,GAAmC;YAC/C,IAAI,QAAQ,EAAE;YACd,IAAI,QAAQ,EAAE;YACd,IAAI,QAAQ,EAAE;SACf,CAAA;QAED,mBAAmB;QACX,iBAAY,GAAW,CAAC,CAAA,CAAK,wCAAwC;QACrE,oBAAe,GAAW,CAAC,CAAA,CAAE,kBAAkB;QAC/C,kBAAa,GAAW,CAAC,CAAA,CAAI,0CAA0C;QACvE,eAAU,GAAW,CAAC,CAAA,CAAO,sBAAsB;QACnD,iBAAY,GAAW,CAAC,CAAA,CAAK,sBAAsB;QAE3D,2CAA2C;QACnC,aAAQ,GAAW,CAAC,CAAA;QACpB,aAAQ,GAAW,CAAC,CAAA;QACpB,aAAQ,GAAW,CAAC,CAAA;QAE5B,mDAAmD;QAC3C,qBAAgB,GAAW,CAAC,CAAA;QAEpC,+BAA+B;QAC/B,eAAU,GAAW,KAAK,CAAA;QAE1B,qBAAqB;QACrB,aAAQ,GAAW,sBAAc,CAAA;QAEjC,iDAAiD;QACzC,iBAAY,GAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACnD,sBAAiB,GAAW,CAAC,CAAA;IA4fvC,CAAC;IA1fC,mEAAmE;IACnE,gBAAgB;IAChB,mEAAmE;IAEnE,IAAI,CAAC,OAAe;QAClB,MAAM,GAAG,GAAG,OAAO,GAAG,IAAI,CAAA;QAE1B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACjC,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACjC,KAAK,QAAQ;gBACX,0CAA0C;gBAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;YACpD,KAAK,QAAQ;gBACX,gCAAgC;gBAChC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;YACrC;gBACE,yCAAyC;gBACzC,OAAO,CAAC,CAAA;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAY;QACjC,MAAM,GAAG,GAAG,OAAO,GAAG,IAAI,CAAA;QAC1B,IAAI,GAAG,IAAI,aAAa;YAAE,OAAM;QAEhC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QAE1B,6CAA6C;QAC7C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,kBAAkB;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAc,CAAA;YACnD,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAA;YACxB,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,uCAAuC;QACvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QAEzB,wDAAwD;QACxD,MAAM,MAAM,GAAG,eAAe,CAAA;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAA;YAEpB,oDAAoD;YACpD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAA;YACxC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAA;gBAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;gBACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,MAAM,CAAA;gBAEpD,6BAA6B;gBAC7B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;oBACvD,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAkB;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,mEAAmE;IACnE,2BAA2B;IAC3B,mEAAmE;IAE3D,mBAAmB,CAAC,UAAkB,EAAE,GAAW,EAAE,IAAY;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAErC,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,WAAW;gBACd,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;gBACnD,MAAK;YACP,KAAK,WAAW;gBACd,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;gBAC1D,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;gBACrD,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;gBACrE,MAAK;YACP,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;gBAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;gBAEpB,6CAA6C;gBAC7C,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;oBACrB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAA;oBACrB,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;gBAC7B,CAAC;gBAED,sBAAsB;gBACtB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACtB,wBAAwB;oBACxB,KAAK,CAAC,aAAa,+BAAuB,CAAA;oBAC1C,KAAK,CAAC,eAAe,GAAG,CAAC,CAAA;oBACzB,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAA;oBAC5B,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAA;gBACpC,CAAC;qBAAM,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC7B,0BAA0B;oBAC1B,KAAK,CAAC,aAAa,gCAAwB,CAAA;oBAC3C,KAAK,CAAC,eAAe,GAAG,CAAC,CAAA;gBAC3B,CAAC;gBACD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACrB,MAAK;YACP,CAAC;YACD,KAAK,MAAM;gBACT,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;gBACrC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC7B,MAAK;YACP,KAAK,MAAM;gBACT,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;gBACvC,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC/B,MAAK;QACT,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,GAAW,EAAE,IAAY;QACpD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,SAAS;gBACZ,2BAA2B;gBAC3B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;gBAC/D,MAAK;YACP,KAAK,SAAS;gBACZ,4BAA4B;gBAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;gBAC5D,MAAK;YACP,KAAK,YAAY;gBACf,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;gBACzC,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAA,CAAE,iDAAiD;gBACnF,MAAK;YACP,KAAK,YAAY;gBACf,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC/B,MAAK;QACT,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,sBAAsB;IACtB,mEAAmE;IAE3D,aAAa;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,UAAkB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAErC,iCAAiC;QACjC,IAAI,KAAK,CAAC,OAAO,GAAG,SAAS;YAAE,OAAM;QAErC,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;QAElD,qCAAqC;QACrC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA;QAEpE,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;QAElD,+CAA+C;QAC/C,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,CAAC;YAClC,mCAAmC;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;YACtE,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAA;QAChE,CAAC;QAED,wDAAwD;QACxD,0DAA0D;QAC1D,IAAI,KAAK,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACpD,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;YAC3E,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;YAClD,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAC1D,CAAC;IAEO,gBAAgB,CAAC,UAAkB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAA;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAE7B,iCAAiC;QACjC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QAE/B,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,IAAI,aAAa,GAAG,CAAC,CAAA;QAErB,6BAA6B;QAC7B,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YAC5B,IAAI,GAAW,CAAA;YAEf,oDAAoD;YACpD,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAClD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC5D,GAAG,GAAG,GAAG;oBACP,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;oBACxB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;gBAC3B,GAAG,GAAG,GAAG;oBACP,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;oBACxB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;YAC3B,CAAC;YAED,MAAM,IAAI,GAAG,CAAA;YACb,aAAa,EAAE,CAAA;QACjB,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAA;YAC/B,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,CAAA,CAAE,4CAA4C;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAA;YACd,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;QAED,0BAA0B;QAC1B,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;YACvC,MAAM,KAAK,GAAG,OAAO;gBACnB,CAAC,CAAC,KAAK,CAAE,6BAA6B;gBACtC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACrD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAA;YAChB,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;QAED,mDAAmD;QACnD,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;YACzB,yCAAyC;YACzC,MAAM,KAAK,GACT,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;gBAClC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;gBAClC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;YAEnC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAA;YAChB,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;QAED,OAAO,MAAM,GAAG,KAAK,CAAA;IACvB,CAAC;IAED,mEAAmE;IACnE,6BAA6B;IAC7B,mEAAmE;IAE3D,aAAa,CAAC,UAAkB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAErC,KAAK,CAAC,eAAe,EAAE,CAAA;QAEvB,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;YAC5B,iCAAyB,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBAC3C,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;oBAClC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAA;oBACzB,KAAK,CAAC,aAAa,EAAE,CAAA;oBACrB,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;wBAChC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;wBAC1B,KAAK,CAAC,aAAa,8BAAsB,CAAA;wBACzC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAA;wBACzB,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAA;wBAC5B,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;oBACrC,CAAC;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED,gCAAwB,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACjD,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;oBAClC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAA;oBACzB,KAAK,CAAC,kBAAkB,EAAE,CAAA;oBAE1B,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;wBAC/D,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAA;wBAE5B,IAAI,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;4BAC7D,KAAK,CAAC,aAAa,EAAE,CAAA;4BACrB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;wBACrC,CAAC;wBAED,IAAI,KAAK,CAAC,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;4BAC9D,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;4BACxD,KAAK,CAAC,aAAa,gCAAwB,CAAA;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YAED;gBACE,wCAAwC;gBACxC,2CAA2C;gBAC3C,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBACxD,MAAK;YAEP,kCAA0B,CAAC,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBACnD,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;oBAClC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAA;oBACzB,KAAK,CAAC,kBAAkB,EAAE,CAAA;oBAE1B,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;wBAC/D,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAA;wBAE5B,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;4BAC5B,KAAK,CAAC,aAAa,EAAE,CAAA;4BACrB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,uBAAuB,CAAC,KAAe;QAC7C,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YAChC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAA;QACrC,CAAC;aAAM,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAA;QACrC,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,8BAA8B;IAC9B,mEAAmE;IAE3D,cAAc;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,IAAI,MAAM,GAAG,CAAC,CAAA;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAE5B,qDAAqD;YACrD,sEAAsE;YACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAA;YAC7C,MAAM,MAAM,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAA;YAErD,6EAA6E;YAC7E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,SAAQ;YACV,CAAC;YAED,mCAAmC;YACnC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClC,QAAQ,IAAI,MAAM,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,MAAM,CAAA;YAClB,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAA;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA,CAAE,6BAA6B;QAE1D,6DAA6D;QAC7D,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAA;QAErD,+BAA+B;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;QAClC,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;QAElC,8BAA8B;QAC9B,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc;YAAE,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAA;QACnE,IAAI,IAAI,CAAC,UAAU,GAAG,eAAe;YAAE,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAA;QACpE,IAAI,IAAI,CAAC,UAAU,GAAG,eAAe;YAAE,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAA;QAEpE,+CAA+C;QAC/C,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;QAEhE,2BAA2B;QAC3B,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAA;QAE/B,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED;;;;OAIG;IACK,mBAAmB;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAA;QAC5B,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAEvB,+DAA+D;QAC/D,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,MAAM,OAAO,GAAG,KAAK,CAAA;QACrB,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAA;QAC5B,OAAO,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,UAAU,GAAG,UAAU,CAAA;IAC1D,CAAC;IAED,mEAAmE;IACnE,4BAA4B;IAC5B,mEAAmE;IAE3D,iBAAiB;QACvB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACrE,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,mEAAmE;IACnE,+BAA+B;IAC/B,mEAAmE;IAEnE,iCAAiC;IACjC,QAAQ,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,iCAAiC;IACjC,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,gDAAgD;IAChD,iBAAiB;QACf,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAA;IACnC,CAAC;IAED,+BAA+B;IAC/B,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED,iCAAiC;IACjC,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;CACF;AAviBD,8BAuiBC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
/**
|
|
3
|
+
* StorageCard - Emulates a Compact Flash card in 8-bit IDE mode
|
|
4
|
+
*
|
|
5
|
+
* Emulates a 128MB CF card with ATA-style register interface.
|
|
6
|
+
* Uses LBA (Logical Block Addressing) for sector access.
|
|
7
|
+
*
|
|
8
|
+
* Register Map (address & 0x07):
|
|
9
|
+
* $00: Data Register (read/write)
|
|
10
|
+
* $01: Error Register (read) / Feature Register (write)
|
|
11
|
+
* $02: Sector Count Register (read/write)
|
|
12
|
+
* $03: LBA0 Register (read/write) - bits 0-7 of LBA
|
|
13
|
+
* $04: LBA1 Register (read/write) - bits 8-15 of LBA
|
|
14
|
+
* $05: LBA2 Register (read/write) - bits 16-23 of LBA
|
|
15
|
+
* $06: LBA3 Register (read/write) - bits 24-27 of LBA + mode bits
|
|
16
|
+
* $07: Status Register (read) / Command Register (write)
|
|
17
|
+
*
|
|
18
|
+
* Supported Commands:
|
|
19
|
+
* 0x20, 0x21: Read Sector(s)
|
|
20
|
+
* 0x30, 0x31: Write Sector(s)
|
|
21
|
+
* 0xC0: Erase Sector
|
|
22
|
+
* 0xEC: Identify Drive
|
|
23
|
+
* 0xEF: Set Features (accepted but not implemented)
|
|
24
|
+
*/
|
|
25
|
+
export declare class StorageCard implements IO {
|
|
26
|
+
private static readonly STORAGE_SIZE;
|
|
27
|
+
private static readonly SECTOR_SIZE;
|
|
28
|
+
private static readonly SECTOR_COUNT;
|
|
29
|
+
private static readonly STATUS_ERR;
|
|
30
|
+
private static readonly STATUS_DRQ;
|
|
31
|
+
private static readonly STATUS_RDY;
|
|
32
|
+
private static readonly ERR_AMNF;
|
|
33
|
+
private static readonly ERR_ABRT;
|
|
34
|
+
private static readonly ERR_IDNF;
|
|
35
|
+
private storage;
|
|
36
|
+
private identity;
|
|
37
|
+
private buffer;
|
|
38
|
+
private bufferIndex;
|
|
39
|
+
private commandDataSize;
|
|
40
|
+
private sectorOffset;
|
|
41
|
+
private error;
|
|
42
|
+
private feature;
|
|
43
|
+
private sectorCount;
|
|
44
|
+
private lba0;
|
|
45
|
+
private lba1;
|
|
46
|
+
private lba2;
|
|
47
|
+
private lba3;
|
|
48
|
+
private status;
|
|
49
|
+
private command;
|
|
50
|
+
private isIdentifying;
|
|
51
|
+
private isTransferring;
|
|
52
|
+
raiseIRQ: () => void;
|
|
53
|
+
raiseNMI: () => void;
|
|
54
|
+
constructor();
|
|
55
|
+
read(address: number): number;
|
|
56
|
+
write(address: number, data: number): void;
|
|
57
|
+
tick(frequency: number): void;
|
|
58
|
+
reset(coldStart: boolean): void;
|
|
59
|
+
private executeCommand;
|
|
60
|
+
private readBuffer;
|
|
61
|
+
private writeBuffer;
|
|
62
|
+
private sectorIndex;
|
|
63
|
+
private sectorValid;
|
|
64
|
+
private generateIdentity;
|
|
65
|
+
/**
|
|
66
|
+
* Load storage data from a file
|
|
67
|
+
* If the file doesn't exist, storage remains empty (initialized to 0x00)
|
|
68
|
+
*/
|
|
69
|
+
loadFromFile(filePath: string): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Save storage data to a file
|
|
72
|
+
*/
|
|
73
|
+
saveToFile(filePath: string): Promise<void>;
|
|
74
|
+
}
|