mirror of
https://github.com/whscullin/apple2js.git
synced 2024-01-12 14:14:38 +00:00
1e79d9d59d
* Enabled prettier * Update lint, fix issues * Restore some array formatting
54 lines
1.2 KiB
TypeScript
54 lines
1.2 KiB
TypeScript
import { DiskDriver, Drive, DriverState } from './types';
|
|
|
|
/** Returned state for an empty drive. */
|
|
export interface EmptyDriverState extends DriverState {}
|
|
|
|
/**
|
|
* Driver for empty drives. This implementation does nothing except keep
|
|
* the head clamped between tracks 0 and 34.
|
|
*/
|
|
export class EmptyDriver implements DiskDriver {
|
|
constructor(private readonly drive: Drive) {}
|
|
|
|
tick(): void {
|
|
// do nothing
|
|
}
|
|
|
|
onQ6Low(): void {
|
|
// do nothing
|
|
}
|
|
|
|
onQ6High(_readMode: boolean): void {
|
|
// do nothing
|
|
}
|
|
|
|
onDriveOn(): void {
|
|
// do nothing
|
|
}
|
|
|
|
onDriveOff(): void {
|
|
// do nothing
|
|
}
|
|
|
|
clampTrack(): void {
|
|
// For empty drives, the emulator clamps the track to 0 to 34,
|
|
// but real Disk II drives can seek past track 34 by at least a
|
|
// half track, usually a full track. Some 3rd party drives can
|
|
// seek to track 39.
|
|
if (this.drive.track < 0) {
|
|
this.drive.track = 0;
|
|
}
|
|
if (this.drive.track > 34) {
|
|
this.drive.track = 34;
|
|
}
|
|
}
|
|
|
|
getState() {
|
|
return {};
|
|
}
|
|
|
|
setState(_state: EmptyDriverState): void {
|
|
// do nothing
|
|
}
|
|
}
|