2022-07-14 03:34:50 +00:00
|
|
|
import { h } from 'preact';
|
2022-07-23 19:00:38 +00:00
|
|
|
import { useState } from 'preact/hooks';
|
2022-07-14 03:34:50 +00:00
|
|
|
import { Inset } from '../Inset';
|
|
|
|
import { Tab, Tabs } from '../Tabs';
|
|
|
|
import { Apple2 } from 'js/apple2';
|
|
|
|
|
|
|
|
import { Applesoft } from './Applesoft';
|
2022-07-23 19:00:38 +00:00
|
|
|
import { CPU } from './CPU';
|
|
|
|
import { Disks } from './Disks';
|
2022-07-14 03:34:50 +00:00
|
|
|
import { Memory } from './Memory';
|
|
|
|
import { VideoModes } from './VideoModes';
|
|
|
|
|
2023-01-12 02:14:44 +00:00
|
|
|
import styles from './css/Debugger.module.scss';
|
2022-07-23 19:00:38 +00:00
|
|
|
|
2022-07-14 03:34:50 +00:00
|
|
|
interface DebuggerProps {
|
|
|
|
apple2: Apple2 | undefined;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const Debugger = ({ apple2 }: DebuggerProps) => {
|
|
|
|
const [selected, setSelected] = useState(0);
|
|
|
|
|
|
|
|
if (!apple2) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Inset className={styles.inset}>
|
|
|
|
<Tabs setSelected={setSelected}>
|
|
|
|
<Tab>CPU</Tab>
|
|
|
|
<Tab>Video</Tab>
|
|
|
|
<Tab>Memory</Tab>
|
2022-07-23 19:00:38 +00:00
|
|
|
<Tab>Disks</Tab>
|
2022-07-14 03:34:50 +00:00
|
|
|
<Tab>Applesoft</Tab>
|
|
|
|
</Tabs>
|
|
|
|
<div className={styles.debugger}>
|
|
|
|
{selected === 0 ? <CPU apple2={apple2} /> : null}
|
|
|
|
{selected === 1 ? <VideoModes apple2={apple2} /> : null}
|
|
|
|
{selected === 2 ? <Memory apple2={apple2} /> : null}
|
2022-07-23 19:00:38 +00:00
|
|
|
{selected === 3 ? <Disks apple2={apple2} /> : null}
|
|
|
|
{selected === 4 ? <Applesoft apple2={apple2} /> : null}
|
2022-07-14 03:34:50 +00:00
|
|
|
</div>
|
|
|
|
</Inset>
|
|
|
|
);
|
|
|
|
};
|