Commit Graph

229 Commits

Author SHA1 Message Date
Will Scullin
6f804758f1 Fix preact apple keys 2022-06-10 19:53:40 -07:00
Will Scullin
9686eda3a8 Preact printer (#129) 2022-06-09 12:22:59 -07:00
Ian Flanigan
c9b7987c4c Fix 2mg header parsing and add tests (#127)
Before, the offset for `FLAGS` in `2mg.ts` was `0x0A`, which is
incorrect according to the spec at:

https://apple2.org.za/gswv/a2zine/Docs/DiskImage_2MG_Info.txt

Now, all of the fields in the 2mg header are described, including
their lengths and any constraints.  These constraints are enforced by
`read2MGHeader` and tested by new tests.
2022-06-06 18:10:06 -07:00
Will Scullin
66f3e04d8e Preact mass storage (#125)
The major impetus for rewriting in UI, at least. Still some ironing to do, but much nicer than my attempt to do this using the old UI "framework".
2022-06-05 10:57:04 -07:00
Will Scullin
15b7f1e123 Fix mouse mode cursor 2022-06-04 18:39:04 -07:00
Will Scullin
dd10d490f0 Fix some buttons 2022-06-04 14:31:57 -07:00
Will Scullin
72cfbe9062 Fix reset button size 2022-06-04 12:04:47 -07:00
Will Scullin
9628b437b1 Fix drive light state 2022-06-04 11:38:59 -07:00
Will Scullin
451b2f1c31 Push some pixels 2022-06-04 11:07:40 -07:00
Will Scullin
cb615ce995 Fix file name display 2022-06-04 11:06:38 -07:00
Will Scullin
303838f63d Use CSS modules (#123)
* Use CSS modules

* Fix tests

* Feedback
2022-06-03 15:30:39 -07:00
Ian Flanigan
203d89b8d9 Implement FileSystemFileHandle for file input (#124)
This removes the `FileSystemFileHandleLike` interface in preference to
just implementing the correct interface. The advantage of the
`FileSystemFileHandle` interface is that it can be passed to the
worker directly to load the file.
2022-06-03 10:12:30 -07:00
Will Scullin
3bbc77049d Type touchups (#122)
* Type touchups

* Fix some type handling
2022-06-01 06:28:05 -07:00
Will Scullin
ef404735cd Preact error dialog (#120)
Add error dialog, fix dynamic hash updates.
2022-05-31 17:41:24 -07:00
Ian Flanigan
04ae0327c2 Add the recommended eslint plugins for TypeScript (#121)
This adds both the recommended TypeScript checks, plus the recommended
TypeScript checks that require type checking.  This latter addition
means that eslint essentially has to compile all of the TypeScript in
the project, causing it to be slower. This isn't much of a problem in
VS Code because there's a lot of caching being done, but it's clearly
slower when run on the commandline.

All of the errors are either fixed or suppressed.  Some errors are
suppressed because fixing them would be too laborious for the little
value gained.

The eslint config is also slightly refactored to separate the strictly
TypeScript checks from the JavaScript checks.
2022-05-31 08:38:40 -07:00
Will Scullin
e525e12c3c React linters (#117)
* React hook linter

* React linting

* Simplify config
2022-05-29 13:48:51 -07:00
Ian Flanigan
52a1c65fe4 Create a FileChooser component using showOpenFilePicker (#116)
* Create a FileChooser component using showOpenFilePicker

Before, `FileModal` always used a file input control for selecting
local files. This allowed the emulator to read from the file, but
precluded writing back to the file.

With this change, the `FileModal` delegates to the new `FileChooser`
component. The `FileChooser` will use `showOpenFilePicker` if it is
available and a regular file input if it's not.

Using `showOpenFilePicker` has the advantage of allowing the emulator
to write back to the file (if the user grants permission). While the
emulator does not yet take advantage of this write capability, that
will come.

* Addressed comments

*   useState() instead of direct DOM manipulation
*   backed out eslint changes in favor of suppressing the warning
2022-05-28 10:52:48 -07:00
Will Scullin
2bd7fa59b7 Enforce strict equality (#115) 2022-05-18 08:19:45 -07:00
Will Scullin
41015864f2 Prohibit any 2022-05-17 19:08:28 -07:00
Will Scullin
9a940935af Refactor some controls (#114)
* Refactor some controls

* Feedback
2022-05-15 14:57:21 -07:00
Will Scullin
c648735b8a Add touch screen handling (#113)
* Add touch screen handling

* Feedback
2022-05-13 06:55:03 -07:00
Will Scullin
26796900a3 Add slinky and clock (#112) 2022-05-12 07:59:12 -07:00
Will Scullin
7e0901cfc2 Preact mouse support (#111) 2022-05-11 17:21:21 -07:00
Will Scullin
d44cae76a7 Turn on exactOptionalPropertyTypes (#110)
Turn on exactOptionalPropertyTypes
2022-05-11 17:20:49 -07:00
Will Scullin
a46b0df970 Apply semi rule to interfaces (#109) 2022-05-10 08:04:20 -07:00
Will Scullin
4a188a9a5c Preact UI (#106)
First pass at a Preact UI, still short some major features but full proof of concept.
2022-05-10 06:52:06 -07:00
Will Scullin
702089224f Clear whole screen during refresh (#108) 2022-05-09 11:51:12 -07:00
Will Scullin
a9885dbfbd Very crude mouse support. (#95) 2021-12-29 15:00:44 -08:00
Will Scullin
2c02567309 lint fixes 2021-12-25 13:35:12 -08:00
Will Scullin
7ceacec28e Full page improvements (#96)
* Full page improvements

* Update fullscreen api calls, save fullpage state
2021-12-25 07:24:59 -08:00
Will Scullin
cc70bebc50 Better Smartport support 2021-12-22 20:47:36 -08:00
Will Scullin
ba203498f4 TypeScript remnants (#94)
* Clean up remaining Javascript
* ProDOS to TypeScript.
* NSC to TypeScript
2021-12-22 10:37:21 -08:00
Will Scullin
c24c01539d No Opcode left behind (#92)
* Better 65C02 support
* NMOS illegal opcodes
2021-12-22 10:37:05 -08:00
Will Scullin
70ec626dd0 Clean up copyright notices (#93) 2021-12-21 12:35:26 -08:00
Will Scullin
2978b72fec Update eslint, fix issues 2021-11-28 16:20:25 -08:00
Will Scullin
badc2fdb74 Support Tom Harte test suite (#88)
A test data set was published at https://github.com/TomHarte/ProcessorTests which contain cycle traces of instructions for various versions of the 6502.

This adds a test harness that reads those data files, and adjusts the CPU6502 behavior to match the behavior of the vanilla and WDC 65C02 test data.

Also converts the existing CPU tests to Typescript, and fixes any inconsistencies that came up from the new behaviors.
2021-10-13 09:15:29 -07:00
Will Scullin
8ab5faee8e Consistenly use hup to read hash 2021-10-03 11:08:46 -07:00
Will Scullin
2daef8040f Keep track of disk sides (#87)
Disk side information was being dropped and thus not displayable in the UI. This plumbs the value through various formats and adds some light testing.

Also fixes an issue where URL encoded hashes were not properly interpreted.
2021-10-02 11:45:09 -07:00
Will Scullin
198cf74c75 No smooth scaling 2021-09-27 14:38:04 -07:00
Will Scullin
5cd19cb521 Extended debugging ROM 2021-07-17 16:23:49 -07:00
Will Scullin
f4b0100c98 touchups 2021-07-11 15:18:18 -07:00
Will Scullin
45681d8e89 Better smartport behaviors 2021-07-10 11:44:10 -07:00
Will Scullin
d70425461c fix drive label 2021-07-09 18:08:26 -07:00
Will Scullin
044e28e050 Woz to TypeScript (#84)
Woz to TypeScript, with tests added before conversion.
2021-07-09 17:54:27 -07:00
Will Scullin
ce3631f3a2 Refactor disk parsing into webworker (#83)
* Refactor disk handling to allow disk processing to happen in a worker
* Type cleanup
* Convert format handlers to TypeScript
* Convert CFFA to TypeScript
2021-07-06 17:04:02 -07:00
Will Scullin
3abd168627 Fix accelarated default 2021-07-05 09:27:12 -07:00
Will Scullin
389cd857e0 fix acceleration 2021-07-04 19:15:02 -07:00
Will Scullin
b4c13d7620 Use AudioWorklet where available (#82)
Use AudioWorklet where available
2021-06-25 15:38:35 -07:00
Will Scullin
8087294456 Lazy load ROMs (#81)
* Switch modules to `esnext` to allow `webpack` to see import statements
* Pass rom names into Apple2 class
* Move ROMs into `system` and `character` directories to allow webpack bundle appropriate ROMs.
* Wait for ROMs to load before completing initialization.
2021-06-13 17:06:16 -07:00
Will Scullin
af57378852 Videomode refactor 2 (#80)
Remove globals from video implementations to allow further refactoring. Experiment with testing video modes.
2021-05-25 12:08:10 -07:00