| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The emulator screen panel is designed to stay hidden until it's needed,
so that headless programs don't have a large black canvas taking up
space on the page. The issue was that the screen content won't be
rendered to the canvas if the screen isn't 'dirty', and the screen will
only be marked dirty if there's been a draw operation in-bounds, and
the size of the canvas determines what counts as in-bounds, and the
size of the canvas remains zero until the layout engine has a chance to
resize it during the next browser render tick. This is all fixed by
breaking the current evaluation loop, yielding control back to the
browser, and having the updateScreenSize function queued up to act on
the newly-resized canvas element. Evaluation will then continue as
normal.
|
|
|
|
|
|
|
|
| |
These were implemented before version 1.1.0, but I hadn't gotten around
to implementing them again during the big restructure in commit 19c5679.
The main change here is that the existing `reset` method was renamed to
`end`, and a new `reset` method was created that only affects the core
and devices.
|
|
|
|
|
| |
This was incrementing higher and higher each time the program was
re-run after halting.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a massive commit that restructures a lot of the library. The
primary change is the implementation of a second Bedrock core using
WebAssembly, which performs much better than the existing JavaScript
core. The JavaScript core has been retained as a fallback for browsers
that don't support WebAssembly.
Benchmarking both cores using the numbers benchmark and with all of the
devices stubbed out in the emulator demonstrates a 40x speedup for the
WebAssembly implementation (going from 4800ms to 120ms).
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the DOM would be updated every time a complete character
was pushed to the transmission parser by the stream device. This caused
frequent re-renders of the transmission panel and massively slowed down
the emulator.
To fix this, the contents of the transmission parser are now only
flushed to the transmission panel when the state panel updates, which
is currently every 10_000 cycles.
|
|
|
|
|
| |
Clicking the CHECK button will open the bytecode panel if the program
assembles successfully, displaying the assembled bytecode.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Click events on touchscreen devices are handled by the touchstart and
touchend events. These events will now enable and disable the pointer
device, move the pointer position, and press and release the primary
pointer button.
|
|
|
|
| |
This attribute hides the mouse cursor on the program canvas.
|
| |
|
|
|
|
|
| |
This prevents an error from being raised when a program marks these
devices as being allowed to wake the system from sleep.
|
|
|
|
|
| |
Wide-mode conditional jump instructions were reading t as a byte value
instead of as a double value.
|
|
|
|
|
|
| |
Previously, the stack overflowing would cause the stack pointer to point
outside of the stack, which would cause an error in the stack printing
code.
|
| |
|
|
|