Foenijs

From Foenix F256 / Wildbits/K2 Wiki
Jump to navigationJump to search

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