Foenijs: Difference between revisions

From Foenix F256 / Wildbits/K2 Wiki
Jump to navigationJump to search
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
[https://white-flame.com/foenijs/ Foenijs] is a web-based emulator, whose unique purpose is ease of use in demonstrating the platform, as well as being a full-featured emulator.
[https://white-flame.com/foenijs/ Foenijs] is a web-based emulator, whose unique purpose is ease of use in demonstrating the platform, as well as being a full-featured emulator.


It is decently complete & workable so far, notably missing sound and some hardware support.
It is decently complete & workable, with active refinement.


== Current Status ==
== Current Status ==
=== Platforms ===
F256 series:
* F256Jr
* F256Jr2
* F256K
* F256K2


=== CPU ===
=== CPU ===


* 65c02 and 65816 fully implemented, cycle-accurate.
* 65c02 and 65816 fully implemented, cycle-accurate instruction timing.
* Powerful debugging features (no labels yet, though).
* Powerful debugging features (no labels yet, though).
* '''Turbo mode''' still emulates the entire machine, stopping to display a frame every 100ms. <code>mandel.bas</code> turbos to 70MHz on an AMD 7940HS mini PC under Firefox.
* '''Turbo mode''' still emulates the entire machine, stopping to display a frame every 100ms. On an AMD 7940HS mini PC, <code>mandel.bas</code> turbos to 90 MHz (14x) in Firefox, and 140 MHz (22x) on Chromium.


=== MMU ===
=== MMU ===
 
Only 1 core is currently supported, with a combined memory model:
* 512kB 1x mode implemented for both CPUs.
* 512kB MMU implemented for both CPUs, in 8×8kB slots ('c' and partial '2x' compatible).
* 65816 has access to flat RAM above bank 1.
* 65816 has access to flat RAM above bank 1, including bank $F0 IO addresses ('e' and '2x' compatible).


=== Video ===
=== Video ===
All standard F256K/Jr video features implemented directly in GPU shaders. Nothing from 2x yet.
All standard video features implemented directly in GPU shaders. Nothing from Core2x yet.


* Rendering is per-rasterline, no mid-line changes will show.
* Rendering is per-rasterline, no mid-line changes will show.
* Only I/O changes can change mid-frame, in-RAM redefinitions won't show.
* Only I/O registers can change mid-frame, in-RAM redefinitions won't show.
* Vertical scrolling mid-frame and such latches on real hardware aren't implemented; everything is draw independently on the fly and can be more dynamic than the real thing.
* Vertical scrolling mid-frame and such latches on real hardware aren't implemented; everything is draw independently on the fly and can be more dynamic than the real thing.


=== Audio ===
=== Audio ===
Still need to tackle this. Square waves from PSGs are the only thing implemented right now.
All chips supported, with some rough edges remaining.
 
* The VS1053b only does MP3, WAV, and MIDI right now.


=== Joysticks ===
=== Joysticks ===
Line 31: Line 41:
* Atari joystick emulated with cursor keys and <code>Z</code> <code>X</code> <code>C</code> for 3 buttons.
* Atari joystick emulated with cursor keys and <code>Z</code> <code>X</code> <code>C</code> for 3 buttons.


=== Keyboards ===
=== Keyboards/Mouse ===


* PS/2 interface
* PS/2 mouse
* K2 internal keyboard
* PS/2 keyboard
* K-series mechanical keyboard


=== SD Card ===
=== SD Card ===
Line 48: Line 59:


K2 optical keyboard, maybe C64 keyboard  
K2 optical keyboard, maybe C64 keyboard  
PS/2 Mouse support (mouse pointer works already)


6809
6809

Latest revision as of 05:59, 27 January 2026

Foenijs is a web-based emulator, whose unique purpose is ease of use in demonstrating the platform, as well as being a full-featured emulator.

It is decently complete & workable, with active refinement.

Current Status

Platforms

F256 series:

  • F256Jr
  • F256Jr2
  • F256K
  • F256K2

CPU

  • 65c02 and 65816 fully implemented, cycle-accurate instruction timing.
  • Powerful debugging features (no labels yet, though).
  • Turbo mode still emulates the entire machine, stopping to display a frame every 100ms. On an AMD 7940HS mini PC, mandel.bas turbos to 90 MHz (14x) in Firefox, and 140 MHz (22x) on Chromium.

MMU

Only 1 core is currently supported, with a combined memory model:

  • 512kB MMU implemented for both CPUs, in 8×8kB slots ('c' and partial '2x' compatible).
  • 65816 has access to flat RAM above bank 1, including bank $F0 IO addresses ('e' and '2x' compatible).

Video

All standard video features implemented directly in GPU shaders. Nothing from Core2x yet.

  • Rendering is per-rasterline, no mid-line changes will show.
  • Only I/O registers can change mid-frame, in-RAM redefinitions won't show.
  • Vertical scrolling mid-frame and such latches on real hardware aren't implemented; everything is draw independently on the fly and can be more dynamic than the real thing.

Audio

All chips supported, with some rough edges remaining.

  • The VS1053b only does MP3, WAV, and MIDI right now.

Joysticks

  • USB controllers for NES/SNES interface.
  • Atari joystick emulated with cursor keys and Z X C for 3 buttons.

Keyboards/Mouse

  • PS/2 mouse
  • PS/2 keyboard
  • K-series mechanical keyboard

SD Card

Only 1 slot at the moment. The current SD Card is held in IndexedDB browser storage, which will by default persist between sessions.

  • Create a blank card
  • Download/upload full card image
  • Download/upload/delete individual files
  • Launch programs directly from directory browser.

TODO & Wishlist

[Any and all mundane or insane ideas welcome.]

K2 optical keyboard, maybe C64 keyboard

6809

680x0

Core2x video stuff

Core2x memory mapping