Commit Graph

65 Commits

Author SHA1 Message Date
Ian Flanigan
b80436d99c
More typescript conversion (#46)
* Convert js/ram to a class

* Convert js/mmu to Typescript

* Convert js/apple2io to Typescript

* Convert js/canvas to Typescript

* Use new types in js/mmu

* Rename js/symbols.js to js/symbols.ts

* Remove the difference between readPages and writePages

As @whscullin said in PR #38, there's no need to have both readable
and writable pages since all implementations are currently both. This
change combines them into `Page`. Likewise, `PageHandler` now extends
`Page`.

`Apple2IO` now implements `PageHandler`. This caught a bug where `end`
had been renamed `endend` by mistake.

There are a few other formatting changes as well.

* Convert js/apple2 to Typescript

* Convert js/prefs to Typescript

* Convert all of the ROMs in js/roms to Typescript

Now all of the ROMs are classes that extend the ROM class. There is
some rudamentary checking to make sure that the length of the ROM
matches the declared start and end pages. (This caught what looks to
be an error in roms/apple2e, but it's hard for me to tell.)

The typing also caught an error where the character ROM was being
used for the main ROM for the apple2j version.

* Convert js/roms/cards/* to Typescript

* Convert js/formats/format_utils to Typescript

This change also seems to fix a bug with `.po` image files that
weren't being read correctly.
2020-11-24 08:48:14 -08:00
Will Scullin
14b8e13f79
fix test 2020-11-15 18:27:35 -08:00
Will Scullin
f600f7c6b4
typescript linting 2020-11-07 16:46:27 -08:00
Will Scullin
b3cb64357f
Use class fields instead of binding (#40)
* Use class fields instead of binding
* classy tests
* Fix typing
2020-11-07 08:54:49 -08:00
Ian Flanigan
c4df78cf06
Typescript conversion of several files, including js/cpu6502 (#38)
* Convert `js/util.js` to Typescript and add tests

Besides converting `js/util.js` to Typescript, this change also adds
`js/types.ts` that defines common types used in apple2js. Some of
these types, like `byte` and `word` are for information only.

* Convert `js/base64.js` to Typescript

This also adds a new type, `memory`, that is either an array of
numbers, or a Uint8Array.

* Convert `js/ram.js` to Typescript

This change does not convert `RAM` to a class; it just introduces types.

* Basic typing of cpu6502

This is a really rough first pass. There are some problems that can't
be fixed until this is turned into a real class, but at least all of
the function arguments are now typed. This caught a few cases where
extra arguments were being passed in.

* Convert `js/cpu6502` to a class

In theory, idiomatic classes should be better than the previous
closure-based classes. However, this conversion shows that the
instruction table does not fit well with idiomatic classes as method
referenced in the table need to be called with the correct `this`
everywhere.

This should, at best, be considered a first attempt.
2020-11-01 08:43:48 -08:00
Will Scullin
9824c51119
Add 13 sector ][+ option. 2020-07-19 14:53:01 -07:00
Will Scullin
060b9845c6
Move test ROMs to binary files to speed tests. 2019-12-02 18:53:47 -08:00
Will Scullin
5e4aac70d2
Use bit math more places. (#15) 2019-11-23 19:05:52 -08:00
Will Scullin
3e5c54e444
Skip slow tests by default. 2019-11-23 18:45:05 -08:00
Will Scullin
37a6efc661
Better linting, tests, fix text buffer, ROR. 2019-10-16 20:20:38 -07:00
Will Scullin
e2c615f20b
Fix ROL. 2019-10-07 22:18:15 -07:00
Will Scullin
7d9090133b
No CPU cycle left behind. 2019-09-29 15:52:22 -07:00
Will Scullin
859bd1ff8f
Apply Sather to stack operations. 2019-09-22 20:04:47 -07:00
Will Scullin
8ee543619e
First pass it more accurate cycle counting. 2019-09-18 18:46:26 -07:00
Will Scullin
6a5fd9cf0c
Add a real test harness. 2019-03-26 21:02:27 -07:00