<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://f256wiki.wildbitscomputing.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Grenouye</id>
	<title>Foenix F256 / Wildbits/K2 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://f256wiki.wildbitscomputing.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Grenouye"/>
	<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Special:Contributions/Grenouye"/>
	<updated>2026-05-30T23:05:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=FPGA_Releases&amp;diff=38526</id>
		<title>FPGA Releases</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=FPGA_Releases&amp;diff=38526"/>
		<updated>2026-03-26T21:41:10Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Correct the publication date of the F256Jr2 65816 Ext Core.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# move the FG &amp;amp; BG Text LUT to:&lt;br /&gt;
&lt;br /&gt;
=== Important: ===&lt;br /&gt;
Most users will want to consume the &amp;quot;Firmware package relases&amp;quot; (taken from here: https://github.com/FoenixRetro/f256-firmware/releases. )  which contain both the latest of the FPGA releases seen here on this page, and the kernel/base programs intended for the flash memory. The page you&#039;re ready here is meant for power user who would want to test back compatibility or attempt some roll-backs in case bugs are found, and for readers who want to learn about the release notes of each new FPGA version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(* &amp;quot;Purple&amp;quot; refers to the official 2025+ release of the K2; &amp;quot;Black&amp;quot; refers to the first run of K2B boards sent out to the original F256K owners in late 2024)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Latest FPGA core files for all platforms ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;F256Jr2&amp;lt;/big&amp;gt; ====&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;F256K2&amp;lt;/big&amp;gt; ====&lt;br /&gt;
|-&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
!&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr2/Classic/2025-01-07/F256Jr2_MMU_Jan8th_2025_OPL3.mcs 08-Jan-2025]&lt;br /&gt;
|OPL3 added&lt;br /&gt;
!&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K2/CNTX1/2025-02-02/CFP95600C.bin 02-Feb-2025]&lt;br /&gt;
Purple*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2Purple/CNTX1/CFP95600C.bin 05-Feb-2025]&lt;br /&gt;
|fix Onboard Access to a SPI Flash&lt;br /&gt;
LCD Splash Screen&lt;br /&gt;
|-&lt;br /&gt;
|65816 Ext&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr2/Extended/2024-12-21/F256Jr2_Ext16_Dec21st_2024.mcs 21-Dec-2024]&lt;br /&gt;
|Implementation of the 256Bytes&lt;br /&gt;
Copy from Flash to RAM before booting.&lt;br /&gt;
!&lt;br /&gt;
|65816 Ext&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K2/CNTX2/2025-01-07/CFP95616E.bin 07-Jan-2025]&lt;br /&gt;
Purple*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2Purple/CNTX2/CFP95616E.bin 06-Jan-2025]&lt;br /&gt;
|Updated access to WS6100&lt;br /&gt;
UART for the VS1053B&lt;br /&gt;
|-&lt;br /&gt;
|65816 Ext 2x&lt;br /&gt;
|[https://c256foenix.com/product-category/gen2-core/?v=5435c69ed3bc Buy Here]&lt;br /&gt;
|2x CPU speed&lt;br /&gt;
layer of 16 bit colored text&lt;br /&gt;
&lt;br /&gt;
hardware line drawing&lt;br /&gt;
&lt;br /&gt;
64 more sprites.&lt;br /&gt;
!&lt;br /&gt;
|65816 Ext 2x&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2/CNTX4/F256K2x_Cores_Foenix138_BlackBoard_B3B_July27th_2025.bin 27-Jul-2025]&lt;br /&gt;
Purple*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2/CNTX4/F256K2x_Cores_Foenix138_B0C_August4th_2025.bin 4-Aug-2025]&lt;br /&gt;
|2x CPU speed&lt;br /&gt;
layer of 16 bit colored text&lt;br /&gt;
&lt;br /&gt;
hardware line drawing&lt;br /&gt;
&lt;br /&gt;
64 more sprites.&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/Jr2/6809/2025-06-15/F256JrJr_FNX6809_June14th_RC0014_0003.mcs 15-Jun-2025]&lt;br /&gt;
|WIFI Speed and Interface (added TX_Empty &amp;amp; RX_Empty Flag)&lt;br /&gt;
!&lt;br /&gt;
|6809&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2/CNTX3/NitrOS9_Load_BlackBoardB3B_WifiFixed_Sept4th.bin 04-Sep-2025]&lt;br /&gt;
Purple*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2Purple/CNTX3/NitrOS9_Load_PurpleBoardB0C_WifiFixed_Sept4th.bin 04-Sep-2025]&lt;br /&gt;
|Wifi fix&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;F256Jr&amp;lt;/big&amp;gt; ====&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;F256K&amp;lt;/big&amp;gt; ====&lt;br /&gt;
|-&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
!&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr/Classic/F256M_Wbh_Jan26th_2025_RC20_0100.jic 26-Jan-2025]&lt;br /&gt;
|fixes Overlay FONT on top of graphic &lt;br /&gt;
with Background Color Enabled&lt;br /&gt;
!&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K/F256Kc_WBh_Jan26th_2025_RC16_0001.jic 26-Jan-2025]&lt;br /&gt;
|fixes Overlay FONT on top of graphic &lt;br /&gt;
with Background Color Enabled&lt;br /&gt;
|-&lt;br /&gt;
|65816 Ext 2x&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/Jr/Extended/F256M_Wbh_Jun24th_2025_RC0100_0002.jic 24-Jun-2025]&lt;br /&gt;
|Fixed bugs with register 0x0000 and 0x0001&lt;br /&gt;
!&lt;br /&gt;
|65816 Ext 2x&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K/F256Kc_WBh_Jun23th_RC0100_0003_DualSpeed_CPU.jic 23-Jun-2025]&lt;br /&gt;
|Fixed bugs with register 0x0000 and 0x0001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Previous FPGA core files for all platforms ===&lt;br /&gt;
Use these for testing out older softwares and snooping around for persistant issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;Previous F256Jr2 Cores&amp;lt;/big&amp;gt; ====&lt;br /&gt;
|-&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/Jr2/6809/2025-06-13/F256Jr2_FNX6809_June13th_RC0017_0002.mcs 13-Jun-2025]&lt;br /&gt;
|Move the FG &amp;amp; BG Text LUT to: &lt;br /&gt;
&lt;br /&gt;
$18_3800        $18_383F            TEXT_LUT_FG&lt;br /&gt;
&lt;br /&gt;
$18_3840        $18_387F            TEXT_LUT_BG&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/Jr2/6809/2025-06-11/F256Jr2_FNX6809_June11th_RC0017_0000.mcs 11-Jun-2025]&lt;br /&gt;
|big Wishlist&lt;br /&gt;
full access to write back the onboard flash&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr2/6809/2025-01-17/F256Jr2_FNX6809_Jan17th_RC0014_0002.mcs 17-Jan-2025]&lt;br /&gt;
|Fix for the manual Reset&lt;br /&gt;
Fix for the readback of Multiplication Values&lt;br /&gt;
&lt;br /&gt;
Endianess&lt;br /&gt;
&lt;br /&gt;
Changes to: Line/Pixel Position&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;Previous&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;F256K2&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;Cores&amp;lt;/big&amp;gt; ====&lt;br /&gt;
|-&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K2/CNTX1/2025-01-08/CFP95600C.bin 08-Jan-2025]&lt;br /&gt;
Purple*: n/a &lt;br /&gt;
|OPL3 implemented&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K2/CNTX1/2025-01-07/CFP95600C.bin 07-Jan-2025]&lt;br /&gt;
Purple*: n/a&lt;br /&gt;
|Instantiation of the UART for the VS1053B @ $DDB0&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|Black*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2/CNTX3/K2_NitrOS9_Load_BlackBoard_Aug26th.bin 26-Aug-2025]&lt;br /&gt;
Purple*: [https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K2Purple/CNTX3/FNX6809_First_Release_Aug24th_PurpleBoard.bin 24-Aug-2025]&lt;br /&gt;
|This is the preliminary version and only works with a PS/2 keyboard plugged in.&lt;br /&gt;
If destined for slot 3, rename the file and put in CNTX3/f256k2t9.bin&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;Previous F256Jr Cores&amp;lt;/big&amp;gt; ====&lt;br /&gt;
|-&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr/Classic/F256M_Wbh_Dec23rd_2023_RC18_0100.jic 23-Dec-2023]&lt;br /&gt;
|Tiles fix; shifted by one towards the left. &lt;br /&gt;
(0100 = Serial RAM/Flash Select)&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr/Classic/F256M_Wbh_Nov18th_2023_RC17_0100.jic 18-Nov-2023]&lt;br /&gt;
|In light of decision to dump the big ticket items and the accessories from the store...&lt;br /&gt;
&lt;br /&gt;
* Removed the very SPI core introduced yesterday to drive the FNXNET51 module.&lt;br /&gt;
* Removed the DP memory for the MMU and replace it back with simple Registers, which means that when you reset the system, the MMU, Page0 will be reset back to the way it was. However, the caveat is that if you change between RAM to FLASH MMU default value, you need to do a reset, either a debug reset or General Reset because the MMU is now only 32bytes in Size, so, 4 pages of 8 values.&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/Jr/Classic/F256M_WBh_Nov17th_2023_RC16_0111.jic 17-Nov-2023]&lt;br /&gt;
|&lt;br /&gt;
* No Write Allowed when Debug Port writes in the MMU Memory Zone&lt;br /&gt;
* Incorporation of a new SPI Controller to interface with the FNXNET51 module using the NES/SNES MiniDin9 Connector&lt;br /&gt;
* ReSync of the Debug Generated RDY to stop the CPU. (untested)&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/tree/main/fpga/Jr/Classic various older]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65816 Ext 2x&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/Jr/Extended/F256M_Wbh_Jun17th_2025_RC0100_0001.jic 16-Jun-2025]&lt;br /&gt;
|CPU runs at 2x speed at 12 MHz&lt;br /&gt;
MUST use a 65816 cpu chip, &lt;br /&gt;
&lt;br /&gt;
will not work with the 6502&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|n/a&lt;br /&gt;
|n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
==== &amp;lt;big&amp;gt;Previous&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;F256K&amp;lt;/big&amp;gt; &amp;lt;big&amp;gt;Cores&amp;lt;/big&amp;gt; ====&lt;br /&gt;
|-&lt;br /&gt;
!Core&lt;br /&gt;
!Link&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K/2024-12-23/F256K_WBh_Dec23rd_RevB0x_RC14_0000.jic 23-Dec-2023]&lt;br /&gt;
  &lt;br /&gt;
|Tiles fix; shifted by one towards the left. &lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K/F256K_WBh_Dec9th_RevB0x_RC13_0000.jic 09-Dec-2023]&lt;br /&gt;
|&lt;br /&gt;
* Fixes a problem with Interrupt from timer0 that was working on the Jr.&lt;br /&gt;
* Resolves a discrepancy between the F256Jr interrupt block and the F256K.&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/blob/main/fpga/K/F256K_WBh_Nov19th_RevB0x_RC12_0011.jic 19-Nov-2023]&lt;br /&gt;
|Corrects the issue with no-response from command $20 &amp;amp; $21 (not being processed in the early parser). The Jr doesn&#039;t have the issue.&lt;br /&gt;
|-&lt;br /&gt;
|6502 MMU&lt;br /&gt;
|various older&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65816 Ext 2x&lt;br /&gt;
|[https://github.com/Mu0n/F256MiscGoodies/raw/refs/heads/main/fpga/K/F256Kc_WBh_Jun18th_2025_RC0100_0000_DualSpeed_CPU.jic 18-Jun-2025]&lt;br /&gt;
|CPU runs at 2x speed at 12 MHz&lt;br /&gt;
MUST use a 65816 cpu chip, &lt;br /&gt;
&lt;br /&gt;
will not work with the 6502&lt;br /&gt;
|-&lt;br /&gt;
|6809&lt;br /&gt;
|N/A yet&lt;br /&gt;
|N/A yet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---old version will be kept at the bottom for a while in case errors are found above---&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FPGA Upgrade Guide ==&lt;br /&gt;
&lt;br /&gt;
==== How to Upgrade the F256K FPGA (and F256Jr) ====&lt;br /&gt;
Note that the below Video Guide applies to both the F256K &amp;amp; F256Jr, despite it just being titled F256K.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;U7bq7t_qjxg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will need to download Quartus Prime Lite 18.1 Edition, since you are going to target a EP4CE15 FPGA (Cyclone 4).&lt;br /&gt;
&lt;br /&gt;
Do not update to the latest version of Quartus Prime Lite, as the latest version doesn’t support that family of FPGA anymore and the software is very big.&lt;br /&gt;
&lt;br /&gt;
Also, one might want to download only the &amp;quot;Intel® Quartus® Prime Programmer and Tools&amp;quot; as opposed to download the whole software by clicking on &amp;quot;Additional Software&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[https://www.intel.com/content/www/us/en/software-kit/665990/intel-quartus-prime-lite-edition-design-software-version-18-1-for-windows.html Intel Quartus Prime Lite Edition 18.1 for  Windows]&lt;br /&gt;
&lt;br /&gt;
[https://www.intel.com/content/www/us/en/software-kit/665988/intel-quartus-prime-lite-edition-design-software-version-18-1-for-linux.html Intel Quartus Prime Lite Edition 18.1 for Linux]&lt;br /&gt;
&lt;br /&gt;
==== How to Upgrade the FPGA for the F256K2 ====&lt;br /&gt;
It is possible that there will be more graceful methods in the future, but for now, the easiest is to pop off the uSD card found on the left side of the board marked &amp;quot;uSD Card / FPGA Load&amp;quot; and to replace the .bin files inside the directory of the root of that uSD card, using a modern computer.&lt;br /&gt;
&lt;br /&gt;
This is a video guide that covers both upgrade the FPGA cores of the K2 as well as updating the firmware once the FPGA is improved or installed for the first time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;pOab0ocKqac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will of course imply that you open up your case. [[Optional Upgrades#Opening the F256K case|There is a guide]] on how to do so for the original F256K enclosure. The F256K2 enclosure is similar. &lt;br /&gt;
&lt;br /&gt;
For those unfamiliar with the process of removing the uSD card from these slide-operation holders here is the process:&lt;br /&gt;
&lt;br /&gt;
1) very gently press down on the middle metal locking slider that goes across on top of the uSD card and slide it towards the left.&lt;br /&gt;
&lt;br /&gt;
2) the uSD card and its locking slider will now open up by rotating towards the left with a hinge on the left side&lt;br /&gt;
&lt;br /&gt;
Inside the root of this uSD card, there are four folders marked as CNTX# where # is a number from 1 to 4. Simply replace the .bin file therein to update any one given core. You may completely ignore .prm files since they do not affect the F256K2.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Folder&lt;br /&gt;
!Hard coded file name&lt;br /&gt;
!Typical* usage&lt;br /&gt;
!CPU in the FPGA&lt;br /&gt;
|-&lt;br /&gt;
|CNTX1&lt;br /&gt;
|CFP95600C.bin&lt;br /&gt;
|F256 Classic mode with a memory management unit (MMU), where the CPU sees 64k at once&lt;br /&gt;
|65816 acting as 6502&lt;br /&gt;
|-&lt;br /&gt;
|CNTX2&lt;br /&gt;
|CFP95616E.bin&lt;br /&gt;
|F256 Extended mode with a flat memory map all accessible at once&lt;br /&gt;
|65816&lt;br /&gt;
|-&lt;br /&gt;
|CNTX3&lt;br /&gt;
|f256k2t9.bin&lt;br /&gt;
|F256 with the 6809 core (planned) or 68000 core (planned)&lt;br /&gt;
|6809&lt;br /&gt;
|-&lt;br /&gt;
|CNTX4&lt;br /&gt;
|foenix138.bin&lt;br /&gt;
|F256 with 2x CPU speed Extended mode with a flat memory map all accessible at once&lt;br /&gt;
|65816&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Note* on typical usage ======&lt;br /&gt;
As long as you keep the proper hard coded names tied to their folder names, you can slide any core to any slot. For example, if you want the 2x core to be in the CTNX2 folder, just rename it appropriately to CFP95616E.bin as you put it into CTNX2/.&lt;br /&gt;
&lt;br /&gt;
====== F256K2 core prep steps: ======&lt;br /&gt;
&lt;br /&gt;
# Take care of placing the bin file in the FPGA load uSD card&lt;br /&gt;
# Set the core selecting DIP switches at the back of the unit. Down (towards bottom of the unit) = 0, Up (towards the upper side of the unit) = 1. See below for all possibilities.&lt;br /&gt;
# Power up the unit. If this is the first time you&#039;re using that core and you&#039;ve never done step 4 for it, it&#039;s normal to not have a properly booted initial software (ie superbasic or otherwise)&lt;br /&gt;
# Write the firmware to the content of the flash. Each of the 4 cores have their own 512kb of reserved flash space that are selected at the same time as the core itself from the uSD FPGA load card. Once they are written to, they are set for future usages as you switch between cores and won&#039;t require further flash writes, unless you&#039;re doing updates.&lt;br /&gt;
&lt;br /&gt;
====== Core selecting DIP switches in the back ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Core 1&lt;br /&gt;
!Core 2&lt;br /&gt;
!Core 3&lt;br /&gt;
!Core 4&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[File:Core1.png|thumb]]&lt;br /&gt;
|&lt;br /&gt;
[[File:Core3.png|thumb]]&lt;br /&gt;
|&lt;br /&gt;
[[File:Core2.png|thumb]]&lt;br /&gt;
|&lt;br /&gt;
[[File:Core4.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|0 0&lt;br /&gt;
|1 0&lt;br /&gt;
|0 1&lt;br /&gt;
|1 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== How to Upgrade the FPGA for the F256Jr. the 2nd ====&lt;br /&gt;
Go look at this [[FPGA Upgrade Guide (F256JrJr)|guide here in the wiki]].&lt;br /&gt;
&lt;br /&gt;
=== Suggested USB Blaster (K and Jr. only) ===&lt;br /&gt;
&lt;br /&gt;
Earth People Technology&lt;br /&gt;
[https://www.amazon.ca/JTAG-Blaster-Intel-Altera-Programmer/dp/B07BZMSZ3G/ref=sr_1_3?crid=WWV8P0OHVCE3&amp;amp;keywords=altera+usb+blaster&amp;amp;qid=1688067039&amp;amp;sprefix=altera+usb+blaster%2Caps%2C113&amp;amp;sr=8-3]&lt;br /&gt;
[https://earthpeopletechnology.com/?wpsc-product=ept-2232h-sp-s1]&lt;br /&gt;
&lt;br /&gt;
Terasic USB Blaster (low cost version)&lt;br /&gt;
[https://www.digikey.ca/en/products/detail/terasic-inc/P0302/2003484]&lt;br /&gt;
[https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&amp;amp;CategoryNo=&amp;amp;No=46#contents]&lt;br /&gt;
&lt;br /&gt;
Chinese Knockoff (please avoid if possible)&lt;br /&gt;
&lt;br /&gt;
=== Open Source blaster software (K and Jr. only) ===&lt;br /&gt;
&lt;br /&gt;
For those who are struggling to program the FPGA with Linux or Apple, Stef found this great tool:&lt;br /&gt;
&lt;br /&gt;
https://github.com/trabucayre/openFPGALoader/releases&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38525</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38525"/>
		<updated>2026-03-26T21:21:42Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Updated the Discord link for #emulation-mame.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
Runs in your browser with no setup.&lt;br /&gt;
&lt;br /&gt;
https://www.white-flame.com/foenijs/, Wiki page [[Foenijs]]&lt;br /&gt;
&lt;br /&gt;
* Supports the F256 line (Jr, Jr2, K, K2), with 65c02 and 65816&lt;br /&gt;
* All graphics modes &amp;amp; features&lt;br /&gt;
* All audio chips (still some rough edges)&lt;br /&gt;
* PS/2 mouse, PS/2 keyboard, and built-in K keyboard emulation&lt;br /&gt;
* NES/SNES via USB gamepads, Atari joystick via keyboard.&lt;br /&gt;
* SD Card images are persistently stored in your browser&#039;s IndexedDB&lt;br /&gt;
** Card library, with full card image upload/download, and new formatted image creation&lt;br /&gt;
** Individual file transfers directly to/from card images&lt;br /&gt;
** 1-click program launch&lt;br /&gt;
* Strong CPU, stack, and device debugging support, with live views for memory and individual graphics data.&lt;br /&gt;
* Directly run a program or mount a card by adding URL parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;url=http://...&amp;lt;/code&amp;gt; to a &amp;lt;code&amp;gt;pgz&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;pgx&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;bas&amp;lt;/code&amp;gt; program, or &amp;lt;code&amp;gt;bin&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;iso&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; card image with optional &amp;lt;code&amp;gt;.gz&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Github links automatically rewrite to their &amp;lt;code&amp;gt;raw.githubusercontent.com&amp;lt;/code&amp;gt; form to get around CORS issues.&lt;br /&gt;
** &amp;lt;code&amp;gt;run=filename&amp;lt;/code&amp;gt; to autorun a file within a card image URL&lt;br /&gt;
** &amp;lt;code&amp;gt;model=f256jr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;f256jr2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;f256k&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;f256k2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Formatted as e.g.  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://www.white-flame.com/foenijs/?url=...&amp;amp;model=&amp;lt;/nowiki&amp;gt;...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
&lt;br /&gt;
* Core2x and 6809&lt;br /&gt;
* Better Atari joystick support&lt;br /&gt;
* Networking&lt;br /&gt;
* K2 optical keyboard&lt;br /&gt;
* Cartridges&lt;br /&gt;
* Hardware I/O ports: debug ports, IEC port, DIP switches, MIDI ports&lt;br /&gt;
&lt;br /&gt;
[https://discord.com/channels/691915291721990194/1455809214231478414 Discord support channel] on the Wildbits server, with the author wf2. Feature requests are welcomed.&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development (23 Mar 2025).  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
Releases are published in GitHub and announced in Discord: https://discord.com/channels/691915291721990194/1439341743785906249 named &#039;&#039;&#039;#emulation-mame&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
(a work-in-progress sdcard .img file containing many games, tools and media files prepared in March 2025 can be found here: https://github.com/Mu0n/F256MiscGoodies/tree/main/SDCard_Collection consult the readme of that page to get the right file)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  Future development of the F256 machines will support the 65816, 6809 and 68000 processors.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Memory Management Unit (MMU) at address $0&lt;br /&gt;
* SD Card with SPI&lt;br /&gt;
* Matrix Keyboard with VIA&lt;br /&gt;
* Game Controllers: Atari Joysticks with VIA&lt;br /&gt;
* Text display, Sprites, Tiles and Bitmaps (respecting the layers)&lt;br /&gt;
* Interrupts: SOF, SOL, RTC, Timers, VIA0, VIA1&lt;br /&gt;
* Timers: Real-Time Clock (RTC), Timer0 (at 25Mhz) and Timer1 (at SOF 60 or 70Hz)&lt;br /&gt;
* Math processor&lt;br /&gt;
* Random Number Generator (RNG)&lt;br /&gt;
* Sound Chips: PSG (dual - stereo), OPL, SID (dual - stereo)&lt;br /&gt;
* Direct Memory Access (DMA)&lt;br /&gt;
Unimplemented features:&lt;br /&gt;
&lt;br /&gt;
* UART (serial port)&lt;br /&gt;
* IEC&lt;br /&gt;
* CODEC&lt;br /&gt;
* NES/SNES Game Controllers&lt;br /&gt;
* PS/2 Mouse and Keyboard&lt;br /&gt;
* WIFI&lt;br /&gt;
* Buzzer and status LEDs&lt;br /&gt;
* Debug port&lt;br /&gt;
* DIP switches&lt;br /&gt;
* External Memory Cartridge&lt;br /&gt;
&lt;br /&gt;
====== How to Run MAME ======&lt;br /&gt;
MAME has quite an extensive list of features that can be enabled and disabled.&lt;br /&gt;
&lt;br /&gt;
To run F256K in full screen mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run in window mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -window -resolution 800x600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set a disk image (for the SD Card):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -harddisk sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable sound:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -sound none&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To collect logs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within MAME emulator, you can see the frame rate (in percent) by pressing the &#039;&#039;&#039;F11&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can modify settings and key assignments using the &#039;&#039;&#039;TAB&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can see the debug console (to step in CPU memory and view memory values) using the back-tick key &#039;&#039;&#039;`&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Exit the emulator using the &#039;&#039;&#039;ESC&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;: all these keys can be modified, so these are the default settings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====== Creating an SD Card Image to use in MAME Emulator and Foenix IDE ======&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Easy Method:&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the FoenixIDE to write your SD Card to a single ISO file. In the FoenixIDE menu, select &#039;&#039;&#039;Tools | Export SD Card to IMG.&#039;&#039;&#039;  You will then get a Save dialog: pick a filename to save.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hard Method:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These instructions require a Linux Operating System or MinGW.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a blank image of 64 blocks of 1 MB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dd if=/dev/zero of=sdcard.img bs=1M count=64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partition the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mklabel msdos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mkpart primary fat32 1MiB 100%&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to know the starting sector for the next step.  To find the &#039;&#039;&#039;starting&#039;&#039;&#039; &#039;&#039;&#039;sector&#039;&#039;&#039;: &amp;lt;code&amp;gt;fdisk -l sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Device Boot Start End Sectors Size Id Type&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sdcard.img1 2048 131071 129024 63M c W95 FAT32 (LBA)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;starting sector&#039;&#039;&#039; is &amp;quot;2048&amp;quot; in the listing above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a Loop Device for Formatting&lt;br /&gt;
&lt;br /&gt;
Map the partition to a loop device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo losetup -o $((2048 * 512)) --sizelimit $((129024 * 512)) /dev/loop0 sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format it: &amp;lt;code&amp;gt;sudo mkfs.vfat -F 32 /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach it: &amp;lt;code&amp;gt;sudo losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disk image is now ready, but it&#039;s empty.  To copy files into the disk, you need to mount it. After it&#039;s mounted, you can copy files to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o loop,offset=$((2048 * 512)) sdcard.img /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp myfile.txt mnt/&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount mnt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Firmware&amp;diff=38337</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Firmware&amp;diff=38337"/>
		<updated>2025-12-31T11:34:12Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Explaining the difference between Gen1 and Gen2 firmware.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Foenix F256K and Jr.computers contain 512K of flash ROM which is intended to store software which should be available to the user without any media like SD-cards or IEC drives present. This collection of software can be changed by the user by simply reprogramming the flash ROM. At the moment the following applications are stored in flash as a default &lt;br /&gt;
&lt;br /&gt;
* The Kernel&lt;br /&gt;
* SuperBASIC&lt;br /&gt;
* pexec, a tool to start executables in various formats&lt;br /&gt;
* wget, a tool to download data from webservers (if you have TCP networking enabled)&lt;br /&gt;
* An online help system for SuperBASIC&lt;br /&gt;
* A file manager&lt;br /&gt;
* A simple command shell&lt;br /&gt;
&lt;br /&gt;
and therefore make up the firmware of the Foenix computers.The current version of the F256K and F256Jr. firmware can be downloaded [https://github.com/FoenixRetro/f256-firmware/releases here]. &lt;br /&gt;
&lt;br /&gt;
The link leads to the release page of the [https://github.com/FoenixRetro/f256-firmware Github repo] which is used to prepare the firmware packages. This repo is part the [https://github.com/FoenixRetro FoenixRetro] Github organisation which in turn is an attempt to gather forks of all projects which are part of the firmware and other resources relevant for the Foenix F256 new retro computers.&lt;br /&gt;
&lt;br /&gt;
There are now two firmware loads available: Gen1 - for K and Jr and Gen2 - for K2 and Jr2.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=FPGA_Upgrade_Guide_(F256JrJr)&amp;diff=38325</id>
		<title>FPGA Upgrade Guide (F256JrJr)</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=FPGA_Upgrade_Guide_(F256JrJr)&amp;diff=38325"/>
		<updated>2025-12-30T14:15:40Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* Install Vivado Lab Soltions - 2023.2 */ Fixed a minor typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upgrading the FPGA on F256JrJr can be done using the built-in USB Type-C port. Plug JrJr into your computer and turn it on, then follow the steps below that are specific to your operating system.&lt;br /&gt;
&lt;br /&gt;
== Linux and macOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;macOS Note:&#039;&#039;&#039; The default USB serial driver on macOS has issues sometimes with the chip used on JrJr. If you encounter any issues upgrading the FPGA firmware, you can try using FTDI&#039;s driver, available here: [https://ftdichip.com/drivers/vcp-drivers]&lt;br /&gt;
&lt;br /&gt;
=== Using openFPGALoader ===&lt;br /&gt;
[https://github.com/trabucayre/openFPGALoader &#039;&#039;&#039;openFPGALoader&#039;&#039;&#039;] is the easiest way to upgrade the firmware on JrJr. The following steps explain how to upgrade the FPGA firmware on JrJr using openFPGALoader.&lt;br /&gt;
# Install openFPGALoader&lt;br /&gt;
#: The &amp;lt;code&amp;gt;openfpgaloader&amp;lt;/code&amp;gt; package is available on several of the most common Linux distros (including Ubuntu, Arch, and Fedora) and is also available on Homebrew for macOS. &lt;br /&gt;
#: If you can&#039;t install it through your package manager, other options for installing openFPGALoader can be found here: [https://trabucayre.github.io/openFPGALoader/guide/install.html]&lt;br /&gt;
# Run openFPGALoader&lt;br /&gt;
#: The following command will upgrade the firmware. Replace &amp;lt;code&amp;gt;&amp;lt;firmware&amp;gt;&amp;lt;/code&amp;gt; with the path to the FPGA firmware file you downloaded.&lt;br /&gt;
#: &amp;lt;code&amp;gt;openFPGALoader -c ft4232 --fpga-part xc7a35tcsg324 -f &amp;lt;firmware&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
In Windows you don&#039;t need to install any drivers to communicate with the JrJr, but you&#039;ll need to install some software first&lt;br /&gt;
&lt;br /&gt;
=== Install Vivado Lab Solutions - 2023.2 ===&lt;br /&gt;
Please use the following link to download Vivaldo Lab Solutions:&lt;br /&gt;
&lt;br /&gt;
https://www.xilinx.com/member/forms/download/xef.html?filename=Vivado_Lab_Win_2023.2_1013_2256.tar.gz&lt;br /&gt;
&lt;br /&gt;
Make sure you select the recommended version 2023.2, please note that you might need to sign up to AMD&#039;s development tools before you download the tool. Don&#039;t worry it&#039;s free and after signing up and confirming your email you can download the software.&lt;br /&gt;
&lt;br /&gt;
It is recomended that you have your &amp;lt;b&amp;gt;F256 JrJr&amp;lt;/b&amp;gt; disconnected from the computer while you install the software.&lt;br /&gt;
&lt;br /&gt;
After the software is installed, you should be able to see additional COM ports in Device Manager.&lt;br /&gt;
&lt;br /&gt;
=== Program the FPGA from Vivaldo Lab Solutions ===&lt;br /&gt;
* When you enter &amp;quot;Vivado Lab&amp;quot; make sure you click on  The Option &amp;quot;Open Hardware Manager&amp;quot;, this will open a new window.&lt;br /&gt;
* On the new window at the very Top you will see a message &amp;quot;No hardware target is open&amp;quot;&lt;br /&gt;
* Proceed to connect you &amp;lt;b&amp;gt;F256 JrJr&amp;lt;/b&amp;gt; to your computer with an USB to USB3 cable and turn it on, your PC&#039;s USB port should provide enough power to turn on your JrJr and also use the USB cable to program it&lt;br /&gt;
* Click on the &amp;quot;Open Target&amp;quot; link, shown in the message at the top, and select &amp;quot;Auto Connect&amp;quot; from the options shown&lt;br /&gt;
* It will try to connect for a few seconds and it will add the device &amp;quot;xc7a35t_0&amp;quot; to the list of devices&lt;br /&gt;
* Click this device name with the mouse alternate button to open a context menu&lt;br /&gt;
* Select the option &amp;quot;Add Configuration Memory Device&amp;quot;&lt;br /&gt;
* A dialog will open with a lot of information, go to the &amp;quot;Select Configuration memory Part&amp;quot; and in the Search box type &amp;lt;b&amp;gt;mt25ql128-spi-x1_x2_x4&amp;lt;/b&amp;gt; to select the memory chip used in the JrJr&lt;br /&gt;
* CLick on the device name filtered from the list and press &amp;quot;OK&amp;quot;&lt;br /&gt;
* It will ask you if you want to program the device now, you can press Ok to get to the programming right away&lt;br /&gt;
* If for any reason you decided to not the program it yet, you can program it by clicking with the alternate mouse button in the &amp;quot;mt25ql128-spi-x1_x2_x4&amp;quot; device added in the tree list, and selecting from the context menu the option &amp;quot;Program Configuration Memory Device...&amp;quot;&lt;br /&gt;
* A new dialog will appear and you need to select the configuration file, these are the .mcs files published in the f256jr2x-fpga-release section in discord (check link below)&lt;br /&gt;
https://discord.com/channels/691915291721990194/1319458207743082627&lt;br /&gt;
* Select the desired .mcs file from your file system and press OK&lt;br /&gt;
* Keep the &amp;quot;Program Operations&amp;quot; options as are provided by default and press the &amp;quot;OK&amp;quot; button&lt;br /&gt;
* The device will be erased and programmed, this will take about 1 minute&lt;br /&gt;
* A message &amp;quot;Flash programming completed succesfully&amp;quot; will be shown after the device is succesfully finished it&#039;s programming.&lt;br /&gt;
&amp;lt;Br&amp;gt;Congratulations!, your FPGA should be updated now!, you can turn off your &amp;quot;F256 JrJr&amp;quot; and disconnect it from the USB port&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38266</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38266"/>
		<updated>2025-10-22T20:00:29Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* Creating an SD Card Image to use in MAME Emulator and Foenix IDE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
https://www.white-flame.com/foenijs/&lt;br /&gt;
&lt;br /&gt;
A web-based emulator in development for the F256Jr and F256K, with 65c02. Gen2, Core2x and 65816 are in progress.&lt;br /&gt;
&lt;br /&gt;
Most of the primary functions work, including all text &amp;amp; graphics modes with raster effects, SD Card images, USB gamepads, and PSG square wave sound. SuperBASIC runs well, but a number of .pgz programs don&#039;t quite work fully yet.&lt;br /&gt;
&lt;br /&gt;
Upload/download individual files, as well as SD Card images. The emulated storage is permanently stored in your browser&#039;s IndexedDB.&lt;br /&gt;
&lt;br /&gt;
A standout feature is the CPU and stack debugging support.&lt;br /&gt;
&lt;br /&gt;
If your program doesn&#039;t run correctly on here, and you&#039;d like to help from the asm side of things, contact user wf2 on the Foenix Discord.&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development (23 Mar 2025).  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
Releases are published in GitHub and announced in Discord: https://discord.com/channels/691915291721990194/1330998392481906768&lt;br /&gt;
&lt;br /&gt;
(a work-in-progress sdcard .img file containing many games, tools and media files prepared in March 2025 can be found here: https://github.com/Mu0n/F256MiscGoodies/tree/main/SDCard_Collection consult the readme of that page to get the right file)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  Future development of the F256 machines will support the 65816, 6809 and 68000 processors.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Memory Management Unit (MMU) at address $0&lt;br /&gt;
* SD Card with SPI&lt;br /&gt;
* Matrix Keyboard with VIA&lt;br /&gt;
* Game Controllers: Atari Joysticks with VIA&lt;br /&gt;
* Text display, Sprites, Tiles and Bitmaps (respecting the layers)&lt;br /&gt;
* Interrupts: SOF, SOL, RTC, Timers, VIA0, VIA1&lt;br /&gt;
* Timers: Real-Time Clock (RTC), Timer0 (at 25Mhz) and Timer1 (at SOF 60 or 70Hz)&lt;br /&gt;
* Math processor&lt;br /&gt;
* Random Number Generator (RNG)&lt;br /&gt;
* Sound Chips: PSG (dual - stereo), OPL, SID (dual - stereo)&lt;br /&gt;
* Direct Memory Access (DMA)&lt;br /&gt;
Unimplemented features:&lt;br /&gt;
&lt;br /&gt;
* UART (serial port)&lt;br /&gt;
* IEC&lt;br /&gt;
* CODEC&lt;br /&gt;
* NES/SNES Game Controllers&lt;br /&gt;
* PS/2 Mouse and Keyboard&lt;br /&gt;
* WIFI&lt;br /&gt;
* Buzzer and status LEDs&lt;br /&gt;
* Debug port&lt;br /&gt;
* DIP switches&lt;br /&gt;
* External Memory Cartridge&lt;br /&gt;
&lt;br /&gt;
====== How to Run MAME ======&lt;br /&gt;
MAME has quite an extensive list of features that can be enabled and disabled.&lt;br /&gt;
&lt;br /&gt;
To run F256K in full screen mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run in window mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -window -resolution 800x600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set a disk image (for the SD Card):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -harddisk sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable sound:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -sound none&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To collect logs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within MAME emulator, you can see the frame rate (in percent) by pressing the &#039;&#039;&#039;F11&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can modify settings and key assignments using the &#039;&#039;&#039;TAB&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can see the debug console (to step in CPU memory and view memory values) using the back-tick key &#039;&#039;&#039;`&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Exit the emulator using the &#039;&#039;&#039;ESC&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;: all these keys can be modified, so these are the default settings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====== Creating an SD Card Image to use in MAME Emulator and Foenix IDE ======&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Easy Method:&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the FoenixIDE to write your SD Card to a single ISO file. In the FoenixIDE menu, select &#039;&#039;&#039;Tools | Export SD Card to IMG.&#039;&#039;&#039;  You will then get a Save dialog: pick a filename to save.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hard Method:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These instructions require a Linux Operating System or MinGW.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a blank image of 64 blocks of 1 MB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dd if=/dev/zero of=sdcard.img bs=1M count=64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partition the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mklabel msdos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mkpart primary fat32 1MiB 100%&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to know the starting sector for the next step.  To find the &#039;&#039;&#039;starting&#039;&#039;&#039; &#039;&#039;&#039;sector&#039;&#039;&#039;: &amp;lt;code&amp;gt;fdisk -l sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Device Boot Start End Sectors Size Id Type&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sdcard.img1 2048 131071 129024 63M c W95 FAT32 (LBA)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;starting sector&#039;&#039;&#039; is &amp;quot;2048&amp;quot; in the listing above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a Loop Device for Formatting&lt;br /&gt;
&lt;br /&gt;
Map the partition to a loop device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo losetup -o $((2048 * 512)) --sizelimit $((129024 * 512)) /dev/loop0 sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format it: &amp;lt;code&amp;gt;sudo mkfs.vfat -F 32 /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach it: &amp;lt;code&amp;gt;sudo losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disk image is now ready, but it&#039;s empty.  To copy files into the disk, you need to mount it. After it&#039;s mounted, you can copy files to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o loop,offset=$((2048 * 512)) sdcard.img /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp myfile.txt mnt/&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount mnt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Kernels&amp;diff=38163</id>
		<title>Kernels</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Kernels&amp;diff=38163"/>
		<updated>2025-07-17T20:22:17Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: fixed a typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; [[MicroKernel]]&lt;br /&gt;
: The primary kernel for the F256 machines is the TinyCore [[MicroKernel]].  This is an event based, near real-time kernel for the 65c02 and the [[Template:Main2/65816 Processor|65816]] in emulation mode (native mode is NOT supported).&lt;br /&gt;
&lt;br /&gt;
; [[OpenFNXKernal]]&lt;br /&gt;
: Users interested in a more traditional CBM style &#039;kernal&#039; may further install the [[OpenFNXKernal]] in flash along side the [[MicroKernel]] (just like any other flashed application).  The code in the repo implements the basic drivers, and provides an additional kernel call for SD Card I/O, but doesn&#039;t yet include a screen editor or a unified I/O layer.  It is, however, enough to run CBM BASIC.  The initial code was published for those asking for a community developed replacement for the original OpenKERNAL which no longer runs on the F256 due to extensive FPGA changes.  To date, however, no one has actually contributed anything back to the project.  @EMWhite has greatly enhanced the code, but has not yet published his work.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Getting_Started&amp;diff=38046</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Getting_Started&amp;diff=38046"/>
		<updated>2025-05-05T20:27:30Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* Running PGZ Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Powered Up ==&lt;br /&gt;
&lt;br /&gt;
=== Powering your F256K ===&lt;br /&gt;
&lt;br /&gt;
The F256K is powered via a standard 2.5mm DC Connector, which takes a centre-positive 12V 2A capable Power Supply.&lt;br /&gt;
&lt;br /&gt;
This type of power supply is quite common.  [https://www.amazon.com/Adapter-100-240V-Transformer-Charger-Security/dp/B091XSVV1Y Example 12V 2A capable power supply] (#)&lt;br /&gt;
&lt;br /&gt;
(#) &#039;&#039;This specific power supply has not been verified (by the author) for use with the F256K.  Please update this page with verified options!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Powering your F256Jr ===&lt;br /&gt;
&lt;br /&gt;
The F256Jr is supplied as a Mini-ITX form factor mainboard, with a standard 24 pin ATX power supply connector for power connectivity.&lt;br /&gt;
&lt;br /&gt;
Since the F256Jr needs relatively little power, compared to a mini-ATX PC, a popular DC 12V 24pin Pico ATX PSU works well and is a compact solution.&lt;br /&gt;
&lt;br /&gt;
* [https://www.amazon.com/dp/B08F57GKCL Pico PSU] - You power the Pico PSU via a 12V DC center-positive Power Supply source.&lt;br /&gt;
* [https://www.amazon.com/dp/B07MXXXBV8 12V DC center-positive A/C Adapter] - Commonly used to power the Pico PSU.&lt;br /&gt;
The board itself has no power switch. If you do not have a Mini-ITX case, a pin header on the board can be bridged by a jumper and thereby used instead of a proper power switch as a stop gap solution. In this picture https://wiki.c256foenix.com/images/6/64/Pinout_Jr_December_7th_Trans.png  the pin header in question is shown in the lower right and is labeled with &#039;&#039;PW ON SPST Switch&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Getting programs onto the F256 ==&lt;br /&gt;
&lt;br /&gt;
=== SD Card === &lt;br /&gt;
&lt;br /&gt;
Both the F256K and F256JR have an SD card slot.  The device software to read the SD card is a bit touchy (it&#039;s inherited from the Commander X16 project) and doesn&#039;t work with all SD cards&lt;br /&gt;
&lt;br /&gt;
* Cards should support the V2 protocol (HC or XC); older cards that only support the V1 protocol (typically 2GB or less) won&#039;t work. By contrast, the kernels for the C256 machines generally only work with V1 cards.  Note that, in both cases, this is a software limitation -- all of the Foenix machines are electrically capable of using both kinds of cards.&lt;br /&gt;
* Partitioning should be MBR, and partition type 0x0c.&lt;br /&gt;
* Cards *MUST* be formatted FAT32 -- **NOT: FAT, FAT12, FAT16, or exFAT**.   &lt;br /&gt;
* Formatting with Windows 10/11 works fine, but make sure to force FAT32 (or use the command line: &amp;lt;code&amp;gt;format /FS:FAT32 H:&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Formatting with MacOS will only work using the &amp;lt;code&amp;gt;diskutil&amp;lt;/code&amp;gt; command line utility. An example usage looks like this: &amp;lt;code&amp;gt;sudo diskutil eraseDisk FAT32 [DiskName] MBRFormat /dev/[DiskNumber]&amp;lt;/code&amp;gt;.  You can use &amp;lt;code&amp;gt;diskutil list&amp;lt;/code&amp;gt; to get the disk number for the SD Card.&lt;br /&gt;
* Formatting and partitioning SD cards with Linux can be done using the &amp;lt;code&amp;gt;gnome-disk-utility&amp;lt;/code&amp;gt; (known simply as &amp;lt;u&amp;gt;Disks&amp;lt;/u&amp;gt;) and is installed on most mainstream distributions of Linux. &amp;lt;u&amp;gt;Disks&amp;lt;/u&amp;gt; will access all the drives on the computer so be sure you have the SD card selected when editing. [https://wiki.gnome.org/Apps/Disks Gnome/Disks wiki]&lt;br /&gt;
* FAT32 only supports a maximum partition size of 32Gb, on larger cards you will need to create multiple partitions -- however, only the first is recognized by DOS.&lt;br /&gt;
* Some folks have had luck formatting cards with the [https://www.sdcard.org/downloads/formatter/sd-memory-card-formatter-for-windows-download/ Official SD Association formatter for Windows].&lt;br /&gt;
&lt;br /&gt;
=== Demos Archive ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/FoenixRetro/Documentation/blob/main/f256/archive Download the most recent demos archive] and expand it to the root of the flash card.&lt;br /&gt;
&lt;br /&gt;
=== Debug USB port ===&lt;br /&gt;
&lt;br /&gt;
* This is what most developers use as it&#039;s the most convenient.  Connect the debug USB port to your PC or Mac&lt;br /&gt;
&lt;br /&gt;
* You can use:&lt;br /&gt;
** [https://github.com/pweingar/FoenixMgr FoenixMgr] - works on Windows, Mac, Linux&lt;br /&gt;
*** A Python script to manage the Foenix series of retro style computers through their USB debug ports. This tool allows uploading files of various formats to system RAM, and displaying memory through various means.&lt;br /&gt;
&lt;br /&gt;
** [https://github.com/Trinity-11/FoenixIDE FoenixIDE] (Windows only)&lt;br /&gt;
*** Development and Debugging Suite for the C256 Foenix Family of Computers.&lt;br /&gt;
&lt;br /&gt;
=== wget ===&lt;br /&gt;
If you have the [[wifi]] configured, you can use [https://github.com/ghackwrench/F256_wget wget] to pull programs and data right off the web!&lt;br /&gt;
&lt;br /&gt;
== SuperBASIC ==&lt;br /&gt;
&lt;br /&gt;
The machine boots to SuperBASIC.  SuperBASIC is inspired by BBC BASIC but offers quite a bit more.&lt;br /&gt;
&lt;br /&gt;
* Read the [https://github.com/FoenixRetro/f256-superbasic/blob/main/reference/source/f256jr_basic_ref.pdf SuperBASIC Reference Manual].&lt;br /&gt;
&lt;br /&gt;
* Watch EMWhite&#039;s excellent intro series on Youtube:&lt;br /&gt;
** Full Playlist here: [https://www.youtube.com/playlist?list=PLeHjTvk7NPiSqGz4REMH-S4hjYpLS2YNR EMWhite&#039;s Intro Series - Full Playlist].&lt;br /&gt;
** Part 1 can be viewed here:&lt;br /&gt;
&amp;lt;youtube&amp;gt;G_S2c_MsqYA&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get started, you can type in a sample program at the command prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 for i=1 to 5&lt;br /&gt;
20 print &amp;quot;Hello world&amp;quot;&lt;br /&gt;
30 next&lt;br /&gt;
run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SuperBASIC is similar to CBM (Microsoft) BASIC but has some differences.  For example, note in the sample above it&#039;s just &amp;lt;code&amp;gt;next&amp;lt;/code&amp;gt; not &amp;lt;code&amp;gt;next i&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The first 15 or so pages of the [https://github.com/FoenixRetro/f256-superbasic/blob/main/reference/source/f256jr_basic_ref.pdf SuperBASIC Reference Manual] are quite instructive.  &lt;br /&gt;
&lt;br /&gt;
SuperBASIC is actually much more powerful and supports structured programming (procedures, blocks etc.) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; - Run this to display directory of SD card&lt;br /&gt;
&lt;br /&gt;
Loading &amp;amp; running programs off of the SD card is similarly easy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
load &amp;quot;JrWordl.bas&amp;quot;&lt;br /&gt;
run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar to the C64, you can save time in loading programs from the &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; listing by using your cursor keys to go up to the entry, typing &amp;lt;code&amp;gt;load &amp;quot;&amp;lt;/code&amp;gt; (insert mode is active by default) etc.  You can use &amp;lt;code&amp;gt;CTRL+E&amp;lt;/code&amp;gt; to jump to the end of the line and use &amp;lt;code&amp;gt;CTRL+K&amp;lt;/code&amp;gt; to delete any text from the cursor to the end of the line.  Correctly place the closing &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; and hit &amp;lt;code&amp;gt;ENTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CTRL+C&amp;lt;/code&amp;gt; acts as a &amp;quot;break&amp;quot; command and stops any running SuperBASIC program or &amp;lt;code&amp;gt;LIST&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
Read built-in help/reference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/help&amp;lt;/code&amp;gt; : But &#039;&#039;&#039;NOTE&#039;&#039;&#039;, this erases BASIC memory!  Use Backspace key to go back in menus and to exit.&lt;br /&gt;
&lt;br /&gt;
Explore the included demo SuperBASIC programs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Program !! Notes !! Source&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;JrWordl.bas&amp;lt;/code&amp;gt; || Wordle game, guess 5 letter word ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;mandel.bas&amp;lt;/code&amp;gt; || Draws Mandlebrot set in graphics mode, takes between 2 and 3 hours || [https://github.com/Mu0n/F256KbasicBASICdoodles @Mu0n]&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;rpg-demo.bas&amp;lt;/code&amp;gt; || UI sample that shows Zelda like RPG game.  Control the character with an Atari-joystick connected to JoyPort1 || @econtrerasd&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;Problematic_Code.bas&amp;lt;/code&amp;gt; || Displays scrolling starfield ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;noelrl.bas&amp;lt;/code&amp;gt; || Simple integer BASIC bench mark from Noel&#039;s retro lab.  Completes &amp;lt; 3.5 seconds, compares very favourably to other retro systems! || [https://www.youtube.com/watch?v=H05hM_Guoqk Youtube]&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;dance.bas&amp;lt;/code&amp;gt; || Animates sprite of dancer || [https://github.com/Mu0n/F256KbasicBASICdoodles @Mu0n]&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;luna.bas&amp;lt;/code&amp;gt; || Displays simple scene ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;blink.bas&amp;lt;/code&amp;gt; || Blinks drive access light || [https://github.com/Mu0n/F256KbasicBASICdoodles @Mu0n]&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;piano.bas&amp;lt;/code&amp;gt; || Play some notes with the PSG || [https://github.com/Mu0n/F256KbasicBASICdoodles @Mu0n]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Running PGZ Files ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/- file.pgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== More Resources ===&lt;br /&gt;
=== This Wiki ===&lt;br /&gt;
&lt;br /&gt;
Explore all of the content of this Wiki, to expand your F256 series knowledge!&lt;br /&gt;
&lt;br /&gt;
=== Discord ===&lt;br /&gt;
&lt;br /&gt;
The [https://discord.gg/9vjUEGgcUS Foenix Retro Systems Discord] is the primary place to get questions answered.&lt;br /&gt;
&lt;br /&gt;
Also, if you resolve your question, and you didn&#039;t find the answer here on the Wiki, &#039;&#039;&#039;&#039;&#039;please consider contributing to the Wiki&#039;&#039;&#039;&#039;&#039;, for the benefit of others with the same question!&lt;br /&gt;
&lt;br /&gt;
=== Foenix Retro Systems Newsletter ===&lt;br /&gt;
&lt;br /&gt;
Read back issues [http://apps.emwhite.org/foenixmarketplace/ here] (also a great source for sample programs).   &lt;br /&gt;
&lt;br /&gt;
Issues starting at #4 cover the F256 line.  Issues 1-3 cover the previous version of the hardware (C256), although there are still many salient points.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38045</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38045"/>
		<updated>2025-05-05T20:25:20Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Added missing 65816 CPU&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
A web-based emulator in development for the F256Jr and F256K, with 65c02.&lt;br /&gt;
&lt;br /&gt;
Most of the primary functions work, including all text &amp;amp; graphics modes with raster effects, SD Card images, USB gamepads, and PSG square wave sound. SuperBASIC runs well, but a number of .pgz programs don&#039;t quite work fully yet.&lt;br /&gt;
&lt;br /&gt;
A standout feature is the CPU and stack debugging support. If your program doesn&#039;t run correctly on here, and you&#039;d like to help from the 65c02 side of things, contact user wf2 on the Foenix Discord.&lt;br /&gt;
&lt;br /&gt;
https://www.white-flame.com/foenijs/&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development (23 Mar 2025).  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
Releases are published in GitHub and announced in Discord: https://discord.com/channels/691915291721990194/1330998392481906768&lt;br /&gt;
&lt;br /&gt;
(a work-in-progress sdcard .img file containing many games, tools and media files prepared in March 2025 can be found here: https://github.com/Mu0n/F256MiscGoodies/tree/main/SDCard_Collection consult the readme of that page to get the right file)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  Future development of the F256 machines will support the 65816, 6809 and 68000 processors.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Memory Management Unit (MMU) at address $0&lt;br /&gt;
* SD Card with SPI&lt;br /&gt;
* Matrix Keyboard with VIA&lt;br /&gt;
* Game Controllers: Atari Joysticks with VIA&lt;br /&gt;
* Text display, Sprites, Tiles and Bitmaps (respecting the layers)&lt;br /&gt;
* Interrupts: SOF, SOL, RTC, Timers, VIA0, VIA1&lt;br /&gt;
* Timers: Real-Time Clock (RTC), Timer0 (at 25Mhz) and Timer1 (at SOF 60 or 70Hz)&lt;br /&gt;
* Math processor&lt;br /&gt;
* Random Number Generator (RNG)&lt;br /&gt;
* Sound Chips: PSG (dual - stereo), OPL, SID (dual - stereo)&lt;br /&gt;
* Direct Memory Access (DMA)&lt;br /&gt;
Unimplemented features:&lt;br /&gt;
&lt;br /&gt;
* UART (serial port)&lt;br /&gt;
* IEC&lt;br /&gt;
* CODEC&lt;br /&gt;
* NES/SNES Game Controllers&lt;br /&gt;
* PS/2 Mouse and Keyboard&lt;br /&gt;
* WIFI&lt;br /&gt;
* Buzzer and status LEDs&lt;br /&gt;
* Debug port&lt;br /&gt;
* DIP switches&lt;br /&gt;
* External Memory Cartridge&lt;br /&gt;
&lt;br /&gt;
====== How to Run MAME ======&lt;br /&gt;
MAME has quite an extensive list of features that can be enabled and disabled.&lt;br /&gt;
&lt;br /&gt;
To run F256K in full screen mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run in window mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -window -resolution 800x600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set a disk image (for the SD Card):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -harddisk sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable sound:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -sound none&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To collect logs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within MAME emulator, you can see the frame rate (in percent) by pressing the &#039;&#039;&#039;F11&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can modify settings and key assignments using the &#039;&#039;&#039;TAB&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can see the debug console (to step in CPU memory and view memory values) using the back-tick key &#039;&#039;&#039;`&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Exit the emulator using the &#039;&#039;&#039;ESC&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;: all these keys can be modified, so these are the default settings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====== Creating an SD Card Image to use in MAME Emulator and Foenix IDE ======&lt;br /&gt;
&#039;&#039;These instructions require a Linux Operating System or MinGW.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a blank image of 64 blocks of 1 MB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dd if=/dev/zero of=sdcard.img bs=1M count=64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partition the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mklabel msdos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mkpart primary fat32 1MiB 100%&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to know the starting sector for the next step.  To find the &#039;&#039;&#039;starting&#039;&#039;&#039; &#039;&#039;&#039;sector&#039;&#039;&#039;: &amp;lt;code&amp;gt;fdisk -l sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Device Boot Start End Sectors Size Id Type&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sdcard.img1 2048 131071 129024 63M c W95 FAT32 (LBA)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;starting sector&#039;&#039;&#039; is &amp;quot;2048&amp;quot; in the listing above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a Loop Device for Formatting&lt;br /&gt;
&lt;br /&gt;
Map the partition to a loop device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo losetup -o $((2048 * 512)) --sizelimit $((129024 * 512)) /dev/loop0 sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format it: &amp;lt;code&amp;gt;sudo mkfs.vfat -F 32 /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach it: &amp;lt;code&amp;gt;sudo losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disk image is now ready, but it&#039;s empty.  To copy files into the disk, you need to mount it. After it&#039;s mounted, you can copy files to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o loop,offset=$((2048 * 512)) sdcard.img /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp myfile.txt mnt/&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount mnt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38021</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38021"/>
		<updated>2025-03-23T19:48:31Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Added how to specify a hard disk image in CLI.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
A web-based emulator in development for the F256Jr and F256K, with 65c02.&lt;br /&gt;
&lt;br /&gt;
Most of the primary functions work, including all text &amp;amp; graphics modes with raster effects, SD Card images, USB gamepads, and PSG square wave sound. SuperBASIC runs well, but a number of .pgz programs don&#039;t quite work fully yet.&lt;br /&gt;
&lt;br /&gt;
A standout feature is the CPU and stack debugging support. If your program doesn&#039;t run correctly on here, and you&#039;d like to help from the 65c02 side of things, contact user wf2 on the Foenix Discord.&lt;br /&gt;
&lt;br /&gt;
https://www.white-flame.com/foenijs/&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development (23 Mar 2025).  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
Releases are published in GitHub and announced in Discord: https://discord.com/channels/691915291721990194/1330998392481906768&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  Future development of the F256 machines will support the 6809 and 68000 processors.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Memory Management Unit (MMU) at address $0&lt;br /&gt;
* SD Card with SPI&lt;br /&gt;
* Matrix Keyboard with VIA&lt;br /&gt;
* Game Controllers: Atari Joysticks with VIA&lt;br /&gt;
* Text display, Sprites, Tiles and Bitmaps (respecting the layers)&lt;br /&gt;
* Interrupts: SOF, SOL, RTC, Timers, VIA0, VIA1&lt;br /&gt;
* Timers: Real-Time Clock (RTC), Timer0 (at 25Mhz) and Timer1 (at SOF 60 or 70Hz)&lt;br /&gt;
* Math processor&lt;br /&gt;
* Random Number Generator (RNG)&lt;br /&gt;
* Sound Chips: PSG (dual - stereo), OPL, SID (dual - stereo)&lt;br /&gt;
* Direct Memory Access (DMA)&lt;br /&gt;
*&lt;br /&gt;
Unimplemented features:&lt;br /&gt;
&lt;br /&gt;
* UART (serial port)&lt;br /&gt;
* IEC&lt;br /&gt;
* CODEC&lt;br /&gt;
* NES/SNES Game Controllers&lt;br /&gt;
* PS/2 Mouse and Keyboard&lt;br /&gt;
* WIFI&lt;br /&gt;
* Buzzer and status LEDs&lt;br /&gt;
* Debug port&lt;br /&gt;
* DIP switches&lt;br /&gt;
* External Memory Cartridge&lt;br /&gt;
&lt;br /&gt;
====== How to Run MAME ======&lt;br /&gt;
MAME has quite an extensive list of features that can be enabled and disabled.&lt;br /&gt;
&lt;br /&gt;
To run F256K in full screen mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run in window mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -window -resolution 800x600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set a disk image (for the SD Card):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -harddisk sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable sound:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -sound none&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To collect logs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within MAME emulator, you can see the frame rate (in percent) by pressing the &#039;&#039;&#039;F11&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can modify settings and key assignments using the &#039;&#039;&#039;TAB&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can see the debug console (to step in CPU memory and view memory values) using the back-tick key &#039;&#039;&#039;`&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Exit the emulator using the &#039;&#039;&#039;ESC&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;: all these keys can be modified, so these are the default settings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====== Creating an SD Card Image to use in MAME Emulator and Foenix IDE ======&lt;br /&gt;
&#039;&#039;These instructions require a Linux Operating System or MinGW.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a blank image of 64 blocks of 1 MB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dd if=/dev/zero of=sdcard.img bs=1M count=64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partition the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mklabel msdos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mkpart primary fat32 1MiB 100%&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to know the starting sector for the next step.  To find the &#039;&#039;&#039;starting&#039;&#039;&#039; &#039;&#039;&#039;sector&#039;&#039;&#039;: &amp;lt;code&amp;gt;fdisk -l sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Device Boot Start End Sectors Size Id Type&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sdcard.img1 2048 131071 129024 63M c W95 FAT32 (LBA)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;starting sector&#039;&#039;&#039; is &amp;quot;2048&amp;quot; in the listing above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a Loop Device for Formatting&lt;br /&gt;
&lt;br /&gt;
Map the partition to a loop device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo losetup -o $((2048 * 512)) --sizelimit $((129024 * 512)) /dev/loop0 sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format it: &amp;lt;code&amp;gt;sudo mkfs.vfat -F 32 /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach it: &amp;lt;code&amp;gt;sudo losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disk image is now ready, but it&#039;s empty.  To copy files into the disk, you need to mount it. After it&#039;s mounted, you can copy files to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o loop,offset=$((2048 * 512)) sdcard.img /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp myfile.txt mnt/&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount mnt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38019</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38019"/>
		<updated>2025-03-23T10:44:31Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* MAME */ Added command-line instructions to run emulator.  Added key assignments in MAME emulator.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
A web-based emulator in development for the F256Jr and F256K, with 65c02.&lt;br /&gt;
&lt;br /&gt;
Most of the primary functions work, including all text &amp;amp; graphics modes with raster effects, SD Card images, USB gamepads, and PSG square wave sound. SuperBASIC runs well, but a number of .pgz programs don&#039;t quite work fully yet.&lt;br /&gt;
&lt;br /&gt;
A standout feature is the CPU and stack debugging support. If your program doesn&#039;t run correctly on here, and you&#039;d like to help from the 65c02 side of things, contact user wf2 on the Foenix Discord.&lt;br /&gt;
&lt;br /&gt;
https://www.white-flame.com/foenijs/&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development (23 Mar 2025).  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
Releases are published in GitHub and announced in Discord: https://discord.com/channels/691915291721990194/1330998392481906768&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  Future development of the F256 machines will support the 6809 and 68000 processors.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Memory Management Unit (MMU) at address $0&lt;br /&gt;
* SD Card with SPI&lt;br /&gt;
* Matrix Keyboard with VIA&lt;br /&gt;
* Game Controllers: Atari Joysticks with VIA&lt;br /&gt;
* Text display, Sprites, Tiles and Bitmaps (respecting the layers)&lt;br /&gt;
* Interrupts: SOF, SOL, RTC, Timers, VIA0, VIA1&lt;br /&gt;
* Timers: Real-Time Clock (RTC), Timer0 (at 25Mhz) and Timer1 (at SOF 60 or 70Hz)&lt;br /&gt;
* Math processor&lt;br /&gt;
* Random Number Generator (RNG)&lt;br /&gt;
* Sound Chips: PSG (dual - stereo), OPL, SID (dual - stereo)&lt;br /&gt;
* Direct Memory Access (DMA)&lt;br /&gt;
*&lt;br /&gt;
Unimplemented features:&lt;br /&gt;
&lt;br /&gt;
* UART (serial port)&lt;br /&gt;
* IEC&lt;br /&gt;
* CODEC&lt;br /&gt;
* NES/SNES Game Controllers&lt;br /&gt;
* PS/2 Mouse and Keyboard&lt;br /&gt;
* WIFI&lt;br /&gt;
* Buzzer and status LEDs&lt;br /&gt;
* Debug port&lt;br /&gt;
* DIP switches&lt;br /&gt;
* External Memory Cartridge&lt;br /&gt;
&lt;br /&gt;
====== How to Run MAME ======&lt;br /&gt;
MAME has quite an extensive list of features that can be enabled and disabled.&lt;br /&gt;
&lt;br /&gt;
To run F256K in full screen mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run in window mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -window -resolution 800x600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable sound:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -sound none&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To collect logs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./f256 f256k -log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within MAME emulator, you can see the frame rate (in percent) by pressing the &#039;&#039;&#039;F11&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can modify settings and key assignments using the &#039;&#039;&#039;TAB&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
You can see the debug console (to step in CPU memory and view memory values) using the back-tick key &#039;&#039;&#039;`&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Exit the emulator using the &#039;&#039;&#039;ESC&#039;&#039;&#039; key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;: all these keys can be modified, so these are the default settings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====== Creating an SD Card Image to use in MAME Emulator and Foenix IDE ======&lt;br /&gt;
&#039;&#039;These instructions require a Linux Operating System or MinGW.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a blank image of 64 blocks of 1 MB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dd if=/dev/zero of=sdcard.img bs=1M count=64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partition the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mklabel msdos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mkpart primary fat32 1MiB 100%&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to know the starting sector for the next step.  To find the &#039;&#039;&#039;starting&#039;&#039;&#039; &#039;&#039;&#039;sector&#039;&#039;&#039;: &amp;lt;code&amp;gt;fdisk -l sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Device Boot Start End Sectors Size Id Type&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sdcard.img1 2048 131071 129024 63M c W95 FAT32 (LBA)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;starting sector&#039;&#039;&#039; is &amp;quot;2048&amp;quot; in the listing above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a Loop Device for Formatting&lt;br /&gt;
&lt;br /&gt;
Map the partition to a loop device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo losetup -o $((2048 * 512)) --sizelimit $((129024 * 512)) /dev/loop0 sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format it: &amp;lt;code&amp;gt;sudo mkfs.vfat -F 32 /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach it: &amp;lt;code&amp;gt;sudo losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disk image is now ready, but it&#039;s empty.  To copy files into the disk, you need to mount it. After it&#039;s mounted, you can copy files to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o loop,offset=$((2048 * 512)) sdcard.img /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp myfile.txt mnt/&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount mnt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38018</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=38018"/>
		<updated>2025-03-23T10:33:41Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* MAME */ Added features implemented up to March 23, 2025. How to setup a disk image.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
A web-based emulator in development for the F256Jr and F256K, with 65c02.&lt;br /&gt;
&lt;br /&gt;
Most of the primary functions work, including all text &amp;amp; graphics modes with raster effects, SD Card images, USB gamepads, and PSG square wave sound. SuperBASIC runs well, but a number of .pgz programs don&#039;t quite work fully yet.&lt;br /&gt;
&lt;br /&gt;
A standout feature is the CPU and stack debugging support. If your program doesn&#039;t run correctly on here, and you&#039;d like to help from the 65c02 side of things, contact user wf2 on the Foenix Discord.&lt;br /&gt;
&lt;br /&gt;
https://www.white-flame.com/foenijs/&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development (23 Mar 2025).  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
Releases are published in GitHub and announced in Discord: https://discord.com/channels/691915291721990194/1330998392481906768&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  Future development of the F256 machines will support the 6809 and 68000 processors.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Memory Management Unit (MMU) at address $0&lt;br /&gt;
* SD Card with SPI&lt;br /&gt;
* Matrix Keyboard with VIA&lt;br /&gt;
* Game Controllers: Atari Joysticks with VIA&lt;br /&gt;
* Text display, Sprites, Tiles and Bitmaps (respecting the layers)&lt;br /&gt;
* Interrupts: SOF, SOL, RTC, Timers, VIA0, VIA1&lt;br /&gt;
* Timers: Real-Time Clock (RTC), Timer0 (at 25Mhz) and Timer1 (at SOF 60 or 70Hz)&lt;br /&gt;
* Math processor&lt;br /&gt;
* Random Number Generator (RNG)&lt;br /&gt;
* Sound Chips: PSG (dual - stereo), OPL, SID (dual - stereo)&lt;br /&gt;
* Direct Memory Access (DMA)&lt;br /&gt;
*&lt;br /&gt;
Unimplemented features:&lt;br /&gt;
&lt;br /&gt;
* UART (serial port)&lt;br /&gt;
* IEC&lt;br /&gt;
* CODEC&lt;br /&gt;
* NES/SNES Game Controllers&lt;br /&gt;
* PS/2 Mouse and Keyboard&lt;br /&gt;
* WIFI&lt;br /&gt;
* Buzzer and status LEDs&lt;br /&gt;
* Debug port&lt;br /&gt;
* DIP switches&lt;br /&gt;
* External Memory Cartridge&lt;br /&gt;
&lt;br /&gt;
====== Creating an SD Card Image to use in MAME Emulator and Foenix IDE ======&lt;br /&gt;
&#039;&#039;These instructions require a Linux Operating System or MinGW.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a blank image of 64 blocks of 1 MB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dd if=/dev/zero of=sdcard.img bs=1M count=64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Partition the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mklabel msdos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;parted sdcard.img --script mkpart primary fat32 1MiB 100%&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to know the starting sector for the next step.  To find the &#039;&#039;&#039;starting&#039;&#039;&#039; sector: &amp;lt;code&amp;gt;fdisk -l sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Device Boot Start End Sectors Size Id Type&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sdcard.img1 2048 131071 129024 63M c W95 FAT32 (LBA)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a Loop Device for Formatting&lt;br /&gt;
&lt;br /&gt;
Map the partition to a loop device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo losetup -o $((2048 * 512)) --sizelimit $((129024 * 512)) /dev/loop0 sdcard.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format it: &amp;lt;code&amp;gt;sudo mkfs.vfat -F 32 /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach it: &amp;lt;code&amp;gt;sudo losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The disk image is now ready, but it&#039;s empty.  To copy files into the disk, you need to mount it. After it&#039;s mounted, you can copy files to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o loop,offset=$((2048 * 512)) sdcard.img /mnt/f256&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp myfile.txt mnt/&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount mnt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=37933</id>
		<title>Emulation</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Emulation&amp;diff=37933"/>
		<updated>2025-01-26T20:36:17Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Added the MAME emulator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FoenixIDE ==&lt;br /&gt;
The FoenixIDE provides emulation of various Foenix Retro Systems including,&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!System&lt;br /&gt;
!Descripton&lt;br /&gt;
|-&lt;br /&gt;
|F256K(816)&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|F256K&lt;br /&gt;
|The F256K computer with integrated keyboard and WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr(816)&lt;br /&gt;
|The F256 Jr. computer with a WDC65C816 processor.&lt;br /&gt;
|-&lt;br /&gt;
|Jr&lt;br /&gt;
|The F256 Jr. computer with a WDC65C02 processor.&lt;br /&gt;
|-&lt;br /&gt;
|U+&lt;br /&gt;
|The C256 Foenix U+ (4Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|U&lt;br /&gt;
|The C256 Foenix U (2Meg RAM Config) - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|C&lt;br /&gt;
|The C256 Foenix FMX - Legacy&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|The C256 Foenix (original) - Legacy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===  Installation ===&lt;br /&gt;
The current Windows installation file (FoenixIDE.Setup.msi) and source code can be found here, &lt;br /&gt;
&#039;&#039;&#039;https://github.com/Trinity-11/FoenixIDE/releases&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Foenijs ==&lt;br /&gt;
A web-based emulator in development for the F256Jr and F256K, with 65c02.&lt;br /&gt;
&lt;br /&gt;
Most of the primary functions work, including all text &amp;amp; graphics modes with raster effects, SD Card images, USB gamepads, and PSG square wave sound. SuperBASIC runs well, but a number of .pgz programs don&#039;t quite work fully yet.&lt;br /&gt;
&lt;br /&gt;
A standout feature is the CPU and stack debugging support. If your program doesn&#039;t run correctly on here, and you&#039;d like to help from the 65c02 side of things, contact user wf2 on the Foenix Discord.&lt;br /&gt;
&lt;br /&gt;
https://www.white-flame.com/foenijs/&lt;br /&gt;
&lt;br /&gt;
== MAME ==&lt;br /&gt;
This emulator is currently under development.  See here: https://github.com/dtremblay/mame&lt;br /&gt;
&lt;br /&gt;
MAME is available for Linux, Mac and Windows.  MAME also provides implementations for 6809 and 68000 processors and multiple sound devices.&lt;br /&gt;
&lt;br /&gt;
Currently, only the F256K is partially implemented.&lt;br /&gt;
&lt;br /&gt;
* Matrix Keyboard&lt;br /&gt;
* Text display&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Software_for_6502&amp;diff=640</id>
		<title>Software for 6502</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Software_for_6502&amp;diff=640"/>
		<updated>2024-12-17T22:02:58Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* Games */ Added Tetris to the list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that when an hex address is given, it&#039;s meant to instruct as to which address to bload or to send (ie foenixmgr python script) the program (ie a .bin file) to before running it.&lt;br /&gt;
&lt;br /&gt;
Many download links are posts in the main [https://discord.gg/9vjUEGgcUS Foenix Retro Systems discord server] which will require you to join in order to get to them.&lt;br /&gt;
&lt;br /&gt;
A [[Getting Started#Demos Archive|Demo Archive]] was put together in September 2023 to get ready to show to youtubers, some of these are linked once more, in this page.  &lt;br /&gt;
&lt;br /&gt;
There&#039;s also the Foenix Marketplace website maintained by EMWhite with its own collection of articles and software http://apps.emwhite.org/foenixmarketplace/.  &lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|F256-GraphicToolkit&lt;br /&gt;
|Sprite editor, Tilemap editor, Font editor + misc tools&lt;br /&gt;
|econtrerasd&lt;br /&gt;
|basic&lt;br /&gt;
|https://github.com/econtrerasd/F256-GraphicToolkit&lt;br /&gt;
|-&lt;br /&gt;
|F256 f/term&lt;br /&gt;
|Terminal emulator for F256K and Jr with classic (flat) memory load&lt;br /&gt;
|Micah&lt;br /&gt;
| - fterm.pgZ or use f/manager&lt;br /&gt;
|https://github.com/WartyMN/F256-terminal/blob/main/release/fterm.pgZ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Demos ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|balls&lt;br /&gt;
|Draw a good quantity of multiplexed sprites, fast. Balls bouncing around&lt;br /&gt;
|celton&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/FoenixRetro/demos/blob/main/MultiplexedSprites.md&lt;br /&gt;
|-&lt;br /&gt;
|F256 Mandelbrot&lt;br /&gt;
|Draws Mandelbrot set fast (5 mins) using coprocessor math. Allows to zoom into the set.&lt;br /&gt;
|mgr42&lt;br /&gt;
|uses basic loader&lt;br /&gt;
|https://github.com/rmsk2/F256_Mandelbrot&lt;br /&gt;
|-&lt;br /&gt;
|f256_life&lt;br /&gt;
|An implementation of Conway&#039;s game of life&lt;br /&gt;
|mgr42&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/rmsk2/f256_life&lt;br /&gt;
|-&lt;br /&gt;
|F256ShowCase&lt;br /&gt;
|Shows sliding tiling graphics, moves with joystick&lt;br /&gt;
|eriktier&lt;br /&gt;
|$0000&lt;br /&gt;
|https://github.com/pig-games/F256Showcase&lt;br /&gt;
|-&lt;br /&gt;
|fnxmas23 &lt;br /&gt;
|PSG mod music, scrolling text, sound effects, must see demo!&lt;br /&gt;
|dwsJason and digarok&lt;br /&gt;
|pgz&lt;br /&gt;
|https://discordapp.com/channels/691915291721990194/934618943400837130/1188633998663098398 if you have Dec23 FPGA load or newer&lt;br /&gt;
https://discordapp.com/channels/691915291721990194/934618943400837130/1188633118194794527 if you have an older FPGA load&lt;br /&gt;
|-&lt;br /&gt;
|foenixmas23&lt;br /&gt;
|Xmas 2023 demo with SID music from the classic 1983 C64 xmas demo&lt;br /&gt;
|EMWhite&lt;br /&gt;
|uses basic loader&lt;br /&gt;
|http://apps.emwhite.org/shared-files/815/?foenixmas23.zip&lt;br /&gt;
|-&lt;br /&gt;
|livingworlds&lt;br /&gt;
|Living Worlds, a port of a color cycling by Mark Ferrari, ported here on the F256 by haydenkale&lt;br /&gt;
|haydenkale&lt;br /&gt;
|$0000&lt;br /&gt;
|https://github.com/clandrew/livingworlds/tree/e4532e0d530b76ccb90368fdf5ad10bfa2deeb12&lt;br /&gt;
|-&lt;br /&gt;
|mandel&lt;br /&gt;
|Will draw a mandelbrot set in 3 hours, more useful as a stability test than a useful fractal program&lt;br /&gt;
|Mu0n&lt;br /&gt;
|basic&lt;br /&gt;
|https://github.com/Mu0n/F256KbasicBASICdoodles?tab=readme-ov-file#fractal&lt;br /&gt;
|-&lt;br /&gt;
|wormhole&lt;br /&gt;
|Shows a fast wireframe animation of a wormhole&lt;br /&gt;
|haydenkale&lt;br /&gt;
|pgz or bin at $0000&lt;br /&gt;
|https://github.com/clandrew/wormhole?tab=readme-ov-file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|Bombsweeper&lt;br /&gt;
|Bomb sweeper port&lt;br /&gt;
|beethead&lt;br /&gt;
|pgz&lt;br /&gt;
|https://discord.com/channels/691915291721990194/855689509520932885/1196352934083035156&lt;br /&gt;
|-&lt;br /&gt;
|bbombers&lt;br /&gt;
|Boulder Bombers (Alpha-2)  Clone of Canyon Bombers&lt;br /&gt;
|Scott (xDraconian)&lt;br /&gt;
|pgx&lt;br /&gt;
atari joystick&lt;br /&gt;
|https://github.com/scttgs0/BoulderBombers&amp;lt;nowiki/&amp;gt;https://github.com/scttgs0/BoulderBombers/releases/tag/alpha_2&lt;br /&gt;
|-&lt;br /&gt;
|Cosmic&lt;br /&gt;
|Shoot &#039;em up&lt;br /&gt;
|beethead&lt;br /&gt;
|pgz&lt;br /&gt;
|https://discordapp.com/channels/691915291721990194/1054250238308790342/1175982979537969214&lt;br /&gt;
|-&lt;br /&gt;
|F256 two to the power of eleven&lt;br /&gt;
|Port of the puzzle game of 2048&lt;br /&gt;
|mgr42&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/rmsk2/F256_2048&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Jr Wördl&lt;br /&gt;
|port of Wordle&lt;br /&gt;
|AgeAgeEye&lt;br /&gt;
|basic&lt;br /&gt;
|https://github.com/ageageeye/Superbasic-F256Jr-examples&lt;br /&gt;
|-&lt;br /&gt;
|kartdemo&lt;br /&gt;
|Kart racing game&lt;br /&gt;
|SprySloth&lt;br /&gt;
|pgz&lt;br /&gt;
|https://discord.com/channels/691915291721990194/1225217654487253094/1228246780840513556&lt;br /&gt;
|-&lt;br /&gt;
|Maze-Munch&lt;br /&gt;
|Pac-Man clone&lt;br /&gt;
|SprySloth&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/cmassat/Maze-Munch&lt;br /&gt;
|-&lt;br /&gt;
|Ski-Jr&lt;br /&gt;
|Ski game downhill&lt;br /&gt;
|digarok&lt;br /&gt;
|basic&lt;br /&gt;
|https://github.com/digarok/superbasic-traveler/blob/main/ski-jr.bas&lt;br /&gt;
|-&lt;br /&gt;
|Lair of the Lich King&lt;br /&gt;
|Rogue like dungeon crawler. Demo has 3 levels; full has 25+&lt;br /&gt;
|Micah&lt;br /&gt;
| - lkdemo/lk.pgz&lt;br /&gt;
|[https://discord.com/channels/691915291721990194/1230670413361844244/1317256215566487593 1.0 Beta 19 Demo]&lt;br /&gt;
|-&lt;br /&gt;
|F256-Trek&lt;br /&gt;
|Updated Trek, with modern F256 Graphics&lt;br /&gt;
|econtrerasd&lt;br /&gt;
|basic&lt;br /&gt;
|[https://github.com/econtrerasd/Trek-F256/releases/tag/v1.0 https://github.com/econtrerasd/Trek-F256/releases]&lt;br /&gt;
|-&lt;br /&gt;
|fillerup&lt;br /&gt;
|Fill &#039;er Up (WIP)&lt;br /&gt;
Qix-like game&lt;br /&gt;
|Scott (xDraconian)&lt;br /&gt;
|pgx&lt;br /&gt;
atari joystick&lt;br /&gt;
|https://github.com/scttgs0/Fill-er-up&lt;br /&gt;
|-&lt;br /&gt;
|livewire&lt;br /&gt;
|Livewire (WIP)&lt;br /&gt;
Tempest-like game&lt;br /&gt;
|Scott (xDraconian)&lt;br /&gt;
|pgx&lt;br /&gt;
atari joystick&lt;br /&gt;
|https://github.com/scttgs0/Livewire&lt;br /&gt;
|-&lt;br /&gt;
|pdefense&lt;br /&gt;
|Planetary Defense (WIP)&lt;br /&gt;
|Scott (xDraconian)&lt;br /&gt;
|pgx&lt;br /&gt;
mouse&lt;br /&gt;
atari joystick&lt;br /&gt;
|https://github.com/scttgs0/PlanetaryDefense&lt;br /&gt;
|-&lt;br /&gt;
|Track &amp;amp; Field&lt;br /&gt;
|Olympic Game by Konami (WIP)&lt;br /&gt;
|Scott (xDraconian)&lt;br /&gt;
|pgz&lt;br /&gt;
atari joystick or keyboard&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tetris&lt;br /&gt;
|Good old 80&#039;s game&lt;br /&gt;
|Daniel Tremblay (Grenouye)&lt;br /&gt;
|pgz&lt;br /&gt;
atari joystick or keyboard&lt;br /&gt;
|https://github.com/dtremblay/c256-tetris/tree/f256k&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game Jam #01 - April 6th/7th 2024 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|15puzzle&lt;br /&gt;
|Number sort puzzle&lt;br /&gt;
|mgr42&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/rmsk2/f256_15puzzle/releases&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|frisbee&lt;br /&gt;
|Frisbee throw past sport game&lt;br /&gt;
|dwsJason&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/dwsJason/f256/blob/develop/merlin32/frisbee/frisbee.pgz&lt;br /&gt;
|-&lt;br /&gt;
|Impasse&lt;br /&gt;
|Shoot &#039;em up&lt;br /&gt;
|digarok&lt;br /&gt;
|pgz&lt;br /&gt;
|https://discord.com/channels/691915291721990194/1225481966200029286/1227075699895046235&lt;br /&gt;
|-&lt;br /&gt;
|soccur&lt;br /&gt;
|mutliplayer game of soccer&lt;br /&gt;
|beethead&lt;br /&gt;
|pgz&lt;br /&gt;
|executable:https://discord.com/channels/691915291721990194/1225481966200029286/1226808228948611184&lt;br /&gt;
source code:&lt;br /&gt;
https://discord.com/channels/691915291721990194/1225481966200029286/1226812472069980232&lt;br /&gt;
|-&lt;br /&gt;
|Trek&lt;br /&gt;
|port of classic Star Trek game&lt;br /&gt;
|contrerasd&lt;br /&gt;
|basic&lt;br /&gt;
|https://discord.com/channels/691915291721990194/1225481966200029286/1226727849944289341&lt;br /&gt;
|-&lt;br /&gt;
|Typing Star&lt;br /&gt;
|typing reaction game&lt;br /&gt;
|haydenkale&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/clandrew/typestar&lt;br /&gt;
|-&lt;br /&gt;
|Flight Simulator&lt;br /&gt;
|flying simulator&lt;br /&gt;
|sduensin&lt;br /&gt;
|pgz&lt;br /&gt;
|https://cdn.discordapp.com/attachments/1225481966200029286/1227764847819620454/shotel.pgz&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game Jam #02 - October 25th-November 1st 2024 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|Bach&#039;s MIDI Hero&lt;br /&gt;
|Free MIDI/PSG play + note play tutorial&lt;br /&gt;
|Mu0n&lt;br /&gt;
|pgz&lt;br /&gt;
the MIDI feature requires a F256K2 or F256Jr2; a legacy PSG option also allows F256K and F256Jr to still hear it&lt;br /&gt;
|https://github.com/Mu0n/F256KsimpleCdoodles/releases/download/v1.2/BachHero.pgz&lt;br /&gt;
|-&lt;br /&gt;
|f256_snake&lt;br /&gt;
|&lt;br /&gt;
|mgr42&lt;br /&gt;
|pgz. Use cursor keys, Atari joystick or SNES pad to play&lt;br /&gt;
|https://github.com/rmsk2/f256_snake&lt;br /&gt;
|-&lt;br /&gt;
|fnxsnake&lt;br /&gt;
|&lt;br /&gt;
|silk-neon&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/ksiondag/fnxsnake&lt;br /&gt;
|-&lt;br /&gt;
|The Hallow&lt;br /&gt;
|&lt;br /&gt;
|beethead&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/noyen1973/FoenixGameJamOct2024&lt;br /&gt;
|-&lt;br /&gt;
|Halloween Birthday&lt;br /&gt;
|&lt;br /&gt;
|SprySloth&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/cmassat/GameJam2024_F256K&lt;br /&gt;
|-&lt;br /&gt;
|Haunted Mansion&lt;br /&gt;
|&lt;br /&gt;
|digarok&lt;br /&gt;
|superbasic&lt;br /&gt;
|https://github.com/digarok/fnxgamejam-haunted-mansion&lt;br /&gt;
|-&lt;br /&gt;
|Kooyan&lt;br /&gt;
|&lt;br /&gt;
|Grenouye&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/dtremblay/kooyan.git&lt;br /&gt;
|-&lt;br /&gt;
|Spooky Run&lt;br /&gt;
|&lt;br /&gt;
|dwsJason&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/dwsJason/spooky&lt;br /&gt;
|-&lt;br /&gt;
|Trick or Treat&lt;br /&gt;
|&lt;br /&gt;
|Mike&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/mcassera/TrickOrTreat&lt;br /&gt;
|-&lt;br /&gt;
|Ultima III - Exodus&lt;br /&gt;
|port&lt;br /&gt;
|Minstrel Dragon&lt;br /&gt;
|pgz&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Warlock&lt;br /&gt;
|remake of 68000 game&lt;br /&gt;
|xDraconian&lt;br /&gt;
|pgz&lt;br /&gt;
atari joystick&lt;br /&gt;
DOWN=change_level&lt;br /&gt;
UP=jump&lt;br /&gt;
UP-LEFT=leap&lt;br /&gt;
UP-RIGHT=leap&lt;br /&gt;
|https://github.com/scttgs0/Foenix_GameJam_Oct2024&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|EdInHisLib&lt;br /&gt;
|SID+OPL3 simultaneously&lt;br /&gt;
|beethead, ported from xantax&lt;br /&gt;
|pgz&lt;br /&gt;
|F256 port: https://discordapp.com/channels/691915291721990194/1054249926521016392/1184413356598231120&lt;br /&gt;
original: &amp;lt;nowiki&amp;gt;https://csdb.dk/release/?id=170898&amp;lt;/nowiki&amp;gt;. Not 100% accurate but close.&lt;br /&gt;
|-&lt;br /&gt;
|jrtracker&lt;br /&gt;
|Tracker based in basic and uses the PSG&lt;br /&gt;
|contrerasd&lt;br /&gt;
|basic&lt;br /&gt;
|https://ptb.discord.com/channels/691915291721990194/1008139105386889346/1188292876984143983&lt;br /&gt;
|-&lt;br /&gt;
|tracker2&lt;br /&gt;
|Same tracker, but using both PSGs&lt;br /&gt;
|contrerasd&lt;br /&gt;
|basic&lt;br /&gt;
|https://discord.com/channels/691915291721990194/975117322836656138/1210809081577865257&lt;br /&gt;
|-&lt;br /&gt;
|modo&lt;br /&gt;
|MOD player using the PSG&lt;br /&gt;
|dwsJason and digarok&lt;br /&gt;
|pgz&lt;br /&gt;
|https://discordapp.com/channels/691915291721990194/855689509520932885/1190723114661859429&lt;br /&gt;
|-&lt;br /&gt;
|piano&lt;br /&gt;
|Plays some PSG notes with the keyboard&lt;br /&gt;
|Mu0n&lt;br /&gt;
|basic&lt;br /&gt;
|https://github.com/Mu0n/F256KbasicBASICdoodles?tab=readme-ov-file#pulse-sound-generator-piano&lt;br /&gt;
|-&lt;br /&gt;
|playvgm&lt;br /&gt;
|plays a headless vgm file with OPL3&lt;br /&gt;
|G33kyAndIKnowIt&lt;br /&gt;
|pgx&lt;br /&gt;
|https://github.com/natebarney/playvgm-f256k&lt;br /&gt;
some example music files can be gotten from this post:&lt;br /&gt;
[https://discord.com/channels/691915291721990194/975117322836656138/1220366429640065074 https://discord.com/channels/6][https://discord.com/channels/691915291721990194/975117322836656138/1220366429640065074 91915291721990194/975117322836656138/1220366429640065074]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) open a normal .vgm into a hex editor &amp;lt;nowiki/&amp;gt;and cut out the header bytes from 0x00 to 0x&amp;lt;nowiki/&amp;gt;FF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) run by first using superbasic&#039;s &#039;&#039;&#039;&#039;&#039;bload&#039;&#039;&#039;&#039;&#039;&amp;lt;nowiki/&amp;gt; &#039;&#039;&#039;&#039;&#039;&amp;quot;yourmusicfile&amp;quot;, $01000&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
followed by run&amp;lt;nowiki/&amp;gt;ning&amp;lt;nowiki/&amp;gt; this program with &#039;&#039;&#039;&#039;&#039;/- playvgm.pgx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Uti&amp;lt;nowiki/&amp;gt;lities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Descrip&amp;lt;nowiki/&amp;gt;tion&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|wget&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
|&amp;lt;nowiki/&amp;gt;fetches a file from a http address if you have a network connection active&lt;br /&gt;
|gadget&lt;br /&gt;
|&amp;lt;nowiki/&amp;gt;pgz/flash&lt;br /&gt;
|https://github.com/ghackwrench/F256_wget&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|dcopy&lt;br /&gt;
|A tool to copy files from one drive to another or to/from your PC via RS-232 and a nullmodem cable&lt;br /&gt;
|mgr42&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/rmsk2/f256_dcopy&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fonts&lt;br /&gt;
|A variety of fonts using the standard F256 character set arrangement. Load with the F256 file manager (f/manager), or your own code.&lt;br /&gt;
|Micah&lt;br /&gt;
|(not a program)&lt;br /&gt;
|[https://github.com/WartyMN/Foenix-Fonts/tree/main https://github.com/WartyMN/Foenix-Fonts]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|f/manager&lt;br /&gt;
|A general file utility, launcher, and memory viewing program. Dual-panel file/memory browsers; copy between disks,  between folders on same disk, and from memory to disk and vice versa; delete, rename, and duplicate files; view files as hex or text (with word-wrap); launch applications and known file types; set the RTC clock; search in RAM and flash. Works with internal SD card and IEC devices such as FNX1591 and Commodore 1541. Can be installed in primary flash position ahead of SuperBASIC or DOS, or at a higher location. Can also be run from disk with &amp;quot;- fm.pgz&amp;quot;.&lt;br /&gt;
|Micah&lt;br /&gt;
|pgZ/flash&lt;br /&gt;
|https://github.com/WartyMN/F256-FileManager/releases&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|flashcart&lt;br /&gt;
|Allows to wipe a block of flash or write a program to a flash cart, from this basic program from the F256Jr/K&lt;br /&gt;
|redfool.&lt;br /&gt;
|basic&lt;br /&gt;
|https://github.com/Red-Fool/F256_FlashCart/tree/main&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|basic2text&lt;br /&gt;
|A simple utility for translating Commodore BASIC (all variants) from its native tokenized file format to a text format that can be opened with SuperBASIC. Does not perform any code translation: all adaptation is up to you. &lt;br /&gt;
|Micah&lt;br /&gt;
|pgZ&lt;br /&gt;
|https://github.com/WartyMN/F256-BasText/releases/latest&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|moreorless&lt;br /&gt;
|A text editor for the Foenix 256 line of computers&lt;br /&gt;
|mgr42&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/rmsk2/moreorless/releases/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|midiStuff&lt;br /&gt;
|Test program for a F256K2 or F256Jr2 that sends MIDI data to the internal sam2695 dream chip that produces MIDI based audio. Also test a keyboard controller plugged in the MIDI in port.&lt;br /&gt;
|Mu0n&lt;br /&gt;
|pgz&lt;br /&gt;
|https://github.com/Mu0n/F256KsimpleCdoodles/blob/main/README.md#midistuff&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample Code ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Program&lt;br /&gt;
!Description&lt;br /&gt;
!Author&lt;br /&gt;
!Notes on running&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|cc65 example&lt;br /&gt;
|c example code&lt;br /&gt;
|gadget&lt;br /&gt;
|read github&lt;br /&gt;
|https://github.com/ghackwrench/F256_Jr_Kernel_DOS&lt;br /&gt;
|-&lt;br /&gt;
|digarok basic stuff&lt;br /&gt;
|Lots of basic examples&lt;br /&gt;
|digarok&lt;br /&gt;
|read github&lt;br /&gt;
|https://github.com/digarok/superbasic-traveler/tree/main&lt;br /&gt;
|-&lt;br /&gt;
|Mu0n&#039;s F256K asm doodles&lt;br /&gt;
|Some asm examples&lt;br /&gt;
|Mu0n&lt;br /&gt;
|read github&lt;br /&gt;
|https://github.com/Mu0n/F256KsimpleASMdoodles&lt;br /&gt;
|-&lt;br /&gt;
|Mu0n&#039;s F256K basic doodles&lt;br /&gt;
|Some basic examples&lt;br /&gt;
|Mu0n&lt;br /&gt;
|read github&lt;br /&gt;
|https://github.com/Mu0n/F256KbasicBASICdoodles&lt;br /&gt;
|-&lt;br /&gt;
|Mu0n&#039;s F256K C doodles&lt;br /&gt;
|Some C examples&lt;br /&gt;
|Mu0n&lt;br /&gt;
|read github&lt;br /&gt;
|https://github.com/Mu0n/F256KsimpleCdoodles&lt;br /&gt;
|-&lt;br /&gt;
|tcp example&lt;br /&gt;
|connects to a server and gets typed in text echoed back to you&lt;br /&gt;
|gadget&lt;br /&gt;
|$2000&lt;br /&gt;
|https://github.com/ghackwrench/F256_example_tcp&lt;br /&gt;
|-&lt;br /&gt;
|Assembly examples&lt;br /&gt;
|Sample programs for several features of the Foenix F256K and Jr.&lt;br /&gt;
|mgr42&lt;br /&gt;
|read github&lt;br /&gt;
|https://github.com/rmsk2/Hello_Foenix256_Jr/blob/main/testprogs.md&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=550</id>
		<title>Building SuperBASIC itself</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=550"/>
		<updated>2024-11-22T20:36:39Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* Building SuperBASIC from Scratch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;&#039;Building SuperBASIC from Scratch&#039;&#039;&#039; =&lt;br /&gt;
If you are using Git bash for a command-line (on MS Windows), you need to tell bash that you&#039;re not a real Linux machine:&lt;br /&gt;
 export OS=cygwin&lt;br /&gt;
I had to add the make command by following the instructions here: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058#make.  From ezwinports, use the &#039;&#039;&#039;make without guile&#039;&#039;&#039; zip file.&lt;br /&gt;
&lt;br /&gt;
@mgr42 [said in Discord](https://discord.com/channels/691915291721990194/1028045613104910368/1191727753205129227) &amp;quot;&#039;&#039;I was able to build superbasic from source using the following process:&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Install python-is-python3 on your Debian or Ubuntu machine&lt;br /&gt;
* Install `64tass`. The version available in the Ubuntu repos compiles the source without errors.&lt;br /&gt;
* Execute `git clone https://github.com/FoenixRetro/f256-superbasic.git`&lt;br /&gt;
* Execute `git clone https://github.com/WartyMN/Foenix-F256JR-bootscreens.git`&lt;br /&gt;
* Change into the directory `f256-superbasic/source`&lt;br /&gt;
* Execute `make`&lt;br /&gt;
* If this succeeds there will be an updated file called `basic.rom` in the directory `f256-superbasic/source/build`&lt;br /&gt;
* Change into the directory `f256-superbasic/source/build`&lt;br /&gt;
* Execute the command `python splitrom.py`&lt;br /&gt;
* If this succeeds there will be 4 updated files called `sb01.bin`, `sb02.bin`, `sb03.bin` and `sb04.bin` which can be flashed to the F256 Jr./K&lt;br /&gt;
&lt;br /&gt;
The output of make:&lt;br /&gt;
&lt;br /&gt;
[[File:Make-super-basic.png|Output of make]]&lt;br /&gt;
&lt;br /&gt;
I modified the 00start.asm file on line #30 to change the F256Header from &amp;quot;basic&amp;quot; to &amp;quot;sbasic&amp;quot;, this way it shows up in the system commands as a separate command.&lt;br /&gt;
&lt;br /&gt;
 F256Header:&lt;br /&gt;
 		.text	$f2,$56         			; Signature&lt;br /&gt;
 		.byte   4               			; 4 blocks&lt;br /&gt;
 		.byte   4               			; mount at $8000&lt;br /&gt;
 		.word   Boot 	      				; Start here&lt;br /&gt;
 		.byte   1 			               	; version&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.text   &amp;quot;sbasic&amp;quot;,0 					; name of program.&lt;br /&gt;
 		.text   0							; arguments&lt;br /&gt;
 		.text	&amp;quot;The SuperBASIC environment.&amp;quot;,0	; description&lt;br /&gt;
After splitting the ==basic.rom== into bins, I then flashed with this CSV:&lt;br /&gt;
 08,sb01.bin&lt;br /&gt;
 09,sb02.bin&lt;br /&gt;
 0a,sb03.bin&lt;br /&gt;
 0b,sb04.bin&lt;br /&gt;
After reboot, type `/sbasic`.&lt;br /&gt;
&lt;br /&gt;
Type the following in the F256K in &#039;sbasic&#039; &lt;br /&gt;
 print ?(8+4)&lt;br /&gt;
This command is short for print peek(12).&lt;br /&gt;
&lt;br /&gt;
Result should be `&#039;&#039;&#039;72&#039;&#039;&#039;`.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=549</id>
		<title>Building SuperBASIC itself</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=549"/>
		<updated>2024-11-22T20:36:25Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: /* Building SuperBASIC from Scratch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;&#039;Building SuperBASIC from Scratch&#039;&#039;&#039; =&lt;br /&gt;
If you are using Git bash for a command-line (on MS Windows), you need to tell bash that you&#039;re not a real Linux machine:&lt;br /&gt;
 export OS=cygwin&lt;br /&gt;
I had to add the make command by following the instructions here: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058#make.  From ezwinports, use the &#039;&#039;&#039;make without guile&#039;&#039;&#039; zip file.&lt;br /&gt;
&lt;br /&gt;
@mgr42 [said in Discord](https://discord.com/channels/691915291721990194/1028045613104910368/1191727753205129227) &amp;quot;&#039;&#039;I was able to build superbasic from source using the following process:&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Install python-is-python3 on your Debian or Ubuntu machine&lt;br /&gt;
* Install `64tass`. The version available in the Ubuntu repos compiles the source without errors.&lt;br /&gt;
* Execute `git clone https://github.com/FoenixRetro/f256-superbasic.git`&lt;br /&gt;
* Execute `git clone https://github.com/WartyMN/Foenix-F256JR-bootscreens.git`&lt;br /&gt;
* Change into the directory `f256-superbasic/source`&lt;br /&gt;
* Execute `make`&lt;br /&gt;
* If this succeeds there will be an updated file called `basic.rom` in the directory `f256-superbasic/source/build`&lt;br /&gt;
* Change into the directory `f256-superbasic/source/build`&lt;br /&gt;
* Execute the command `python splitrom.py`&lt;br /&gt;
* If this succeeds there will be 4 updated files called `sb01.bin`, `sb02.bin`, `sb03.bin` and `sb04.bin` which can be flashed to the F256 Jr./K&lt;br /&gt;
&lt;br /&gt;
The output of make:&lt;br /&gt;
[[File:Make-super-basic.png|Output of make]]&lt;br /&gt;
&lt;br /&gt;
I modified the 00start.asm file on line #30 to change the F256Header from &amp;quot;basic&amp;quot; to &amp;quot;sbasic&amp;quot;, this way it shows up in the system commands as a separate command.&lt;br /&gt;
&lt;br /&gt;
 F256Header:&lt;br /&gt;
 		.text	$f2,$56         			; Signature&lt;br /&gt;
 		.byte   4               			; 4 blocks&lt;br /&gt;
 		.byte   4               			; mount at $8000&lt;br /&gt;
 		.word   Boot 	      				; Start here&lt;br /&gt;
 		.byte   1 			               	; version&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.text   &amp;quot;sbasic&amp;quot;,0 					; name of program.&lt;br /&gt;
 		.text   0							; arguments&lt;br /&gt;
 		.text	&amp;quot;The SuperBASIC environment.&amp;quot;,0	; description&lt;br /&gt;
After splitting the ==basic.rom== into bins, I then flashed with this CSV:&lt;br /&gt;
 08,sb01.bin&lt;br /&gt;
 09,sb02.bin&lt;br /&gt;
 0a,sb03.bin&lt;br /&gt;
 0b,sb04.bin&lt;br /&gt;
After reboot, type `/sbasic`.&lt;br /&gt;
&lt;br /&gt;
Type the following in the F256K in &#039;sbasic&#039; &lt;br /&gt;
 print ?(8+4)&lt;br /&gt;
This command is short for print peek(12).&lt;br /&gt;
&lt;br /&gt;
Result should be `&#039;&#039;&#039;72&#039;&#039;&#039;`.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=548</id>
		<title>Building SuperBASIC itself</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=548"/>
		<updated>2024-11-22T20:36:03Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Removed markdown code.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &#039;&#039;&#039;Building SuperBASIC from Scratch&#039;&#039;&#039; =&lt;br /&gt;
If you are using Git bash for a command-line (on MS Windows), you need to tell bash that you&#039;re not a real Linux machine:&lt;br /&gt;
 export OS=cygwin&lt;br /&gt;
I had to add the make command by following the instructions here: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058#make.  From ezwinports, use the &#039;&#039;&#039;make without guile&#039;&#039;&#039; zip file.&lt;br /&gt;
&lt;br /&gt;
@mgr42 [said in Discord](https://discord.com/channels/691915291721990194/1028045613104910368/1191727753205129227) &amp;quot;&#039;&#039;I was able to build superbasic from source using the following process:&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Install python-is-python3 on your Debian or Ubuntu machine&lt;br /&gt;
* Install `64tass`. The version available in the Ubuntu repos compiles the source without errors.&lt;br /&gt;
* Execute `git clone https://github.com/FoenixRetro/f256-superbasic.git`&lt;br /&gt;
* Execute `git clone https://github.com/WartyMN/Foenix-F256JR-bootscreens.git`&lt;br /&gt;
* Change into the directory `f256-superbasic/source`&lt;br /&gt;
* Execute `make`&lt;br /&gt;
* If this succeeds there will be an updated file called `basic.rom` in the directory `f256-superbasic/source/build`&lt;br /&gt;
* Change into the directory `f256-superbasic/source/build`&lt;br /&gt;
* Execute the command `python splitrom.py`&lt;br /&gt;
* If this succeeds there will be 4 updated files called `sb01.bin`, `sb02.bin`, `sb03.bin` and `sb04.bin` which can be flashed to the F256 Jr./K&lt;br /&gt;
&lt;br /&gt;
The output of make:&lt;br /&gt;
[[File:Make-super-basic.png|thumb|Output of make]]&lt;br /&gt;
&lt;br /&gt;
I modified the 00start.asm file on line #30 to change the F256Header from &amp;quot;basic&amp;quot; to &amp;quot;sbasic&amp;quot;, this way it shows up in the system commands as a separate command.&lt;br /&gt;
&lt;br /&gt;
 F256Header:&lt;br /&gt;
 		.text	$f2,$56         			; Signature&lt;br /&gt;
 		.byte   4               			; 4 blocks&lt;br /&gt;
 		.byte   4               			; mount at $8000&lt;br /&gt;
 		.word   Boot 	      				; Start here&lt;br /&gt;
 		.byte   1 			               	; version&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.byte   0               			; reserved&lt;br /&gt;
 		.text   &amp;quot;sbasic&amp;quot;,0 					; name of program.&lt;br /&gt;
 		.text   0							; arguments&lt;br /&gt;
 		.text	&amp;quot;The SuperBASIC environment.&amp;quot;,0	; description&lt;br /&gt;
After splitting the ==basic.rom== into bins, I then flashed with this CSV:&lt;br /&gt;
 08,sb01.bin&lt;br /&gt;
 09,sb02.bin&lt;br /&gt;
 0a,sb03.bin&lt;br /&gt;
 0b,sb04.bin&lt;br /&gt;
After reboot, type `/sbasic`.&lt;br /&gt;
&lt;br /&gt;
Type the following in the F256K in &#039;sbasic&#039; &lt;br /&gt;
 print ?(8+4)&lt;br /&gt;
This command is short for print peek(12).&lt;br /&gt;
&lt;br /&gt;
Result should be `&#039;&#039;&#039;72&#039;&#039;&#039;`.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=547</id>
		<title>Building SuperBASIC itself</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Building_SuperBASIC_itself&amp;diff=547"/>
		<updated>2024-11-22T20:27:06Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Created page with &amp;quot;***Using the Git bash command, change the OS: `export OS=cygwin`.***    I had to add the make command by following the instructions here: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058#make.  From ezwinports, use the **make without guile** zip file.  @mgr42 [said in Discord](https://discord.com/channels/691915291721990194/1028045613104910368/1191727753205129227) &amp;quot;*I was able to build superbasic from source using the following process:*&amp;quot;          - Inst...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;***Using the Git bash command, change the OS: `export OS=cygwin`.***  &lt;br /&gt;
&lt;br /&gt;
I had to add the make command by following the instructions here: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058#make.  From ezwinports, use the **make without guile** zip file.&lt;br /&gt;
&lt;br /&gt;
@mgr42 [said in Discord](https://discord.com/channels/691915291721990194/1028045613104910368/1191727753205129227) &amp;quot;*I was able to build superbasic from source using the following process:*&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
- Install python-is-python3 on your Debian or Ubuntu machine&lt;br /&gt;
- Install `64tass`. The version available in the Ubuntu repos compiles the source without errors.&lt;br /&gt;
- Execute `git clone https://github.com/FoenixRetro/f256-superbasic.git`&lt;br /&gt;
- Execute `git clone https://github.com/WartyMN/Foenix-F256JR-bootscreens.git`&lt;br /&gt;
- Change into the directory `f256-superbasic/source`&lt;br /&gt;
- Execute `make`&lt;br /&gt;
- If this succeeds there will be an updated file called `basic.rom` in the directory `f256-superbasic/source/build`&lt;br /&gt;
- Change into the directory `f256-superbasic/source/build`&lt;br /&gt;
- Execute the command `python splitrom.py`&lt;br /&gt;
- If this succeeds there will be 4 updated files called `sb01.bin`, `sb02.bin`, `sb03.bin` and `sb04.bin` which can be flashed to the F256 Jr./K&lt;br /&gt;
&lt;br /&gt;
The output of make:&lt;br /&gt;
[[File:Make-super-basic.png|thumb|Output of make]]&lt;br /&gt;
&lt;br /&gt;
I modified the 00start.asm file on line #30 to change the F256Header from &amp;quot;basic&amp;quot; to &amp;quot;sbasic&amp;quot;, this way it shows up in the system commands as a separate command.&lt;br /&gt;
```assembly&lt;br /&gt;
F256Header:&lt;br /&gt;
		.text	$f2,$56         			; Signature&lt;br /&gt;
		.byte   4               			; 4 blocks&lt;br /&gt;
		.byte   4               			; mount at $8000&lt;br /&gt;
		.word   Boot 	      				; Start here&lt;br /&gt;
		.byte   1 			               	; version&lt;br /&gt;
		.byte   0               			; reserved&lt;br /&gt;
		.byte   0               			; reserved&lt;br /&gt;
		.byte   0               			; reserved&lt;br /&gt;
		.text   &amp;quot;sbasic&amp;quot;,0 					; name of program.&lt;br /&gt;
		.text   0							; arguments&lt;br /&gt;
		.text	&amp;quot;The SuperBASIC environment.&amp;quot;,0	; description&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
After splitting the ==basic.rom== into bins, I then flashed with this CSV:&lt;br /&gt;
```&lt;br /&gt;
08,sb01.bin&lt;br /&gt;
09,sb02.bin&lt;br /&gt;
0a,sb03.bin&lt;br /&gt;
0b,sb04.bin&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
After reboot, type `/sbasic`.&lt;br /&gt;
Performing the `print ?(8+4)` results in `72`.&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=File:Make-super-basic.png&amp;diff=546</id>
		<title>File:Make-super-basic.png</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=File:Make-super-basic.png&amp;diff=546"/>
		<updated>2024-11-22T20:26:51Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Output of make&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Export_Aseprite_Tileset&amp;diff=244</id>
		<title>Export Aseprite Tileset</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Export_Aseprite_Tileset&amp;diff=244"/>
		<updated>2024-01-31T22:40:09Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: New page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== This LUA script file needs to be placed in Aseprite&#039;s &amp;quot;scripts&amp;quot; folder. ======&lt;br /&gt;
 -- export tileset.lua&lt;br /&gt;
 -- Copyright (C) 2022  Daniel Tremblay&lt;br /&gt;
 --&lt;br /&gt;
 -- This file is released under the terms of the MIT license.&lt;br /&gt;
 &lt;br /&gt;
 if TilesetMode == nil then return app.alert &amp;quot;Use Aseprite v1.3&amp;quot;  end&lt;br /&gt;
 &lt;br /&gt;
 local lay = app.activeLayer&lt;br /&gt;
 if not lay.isTilemap then return app.alert &amp;quot;No active tilemap layer&amp;quot; end&lt;br /&gt;
 &lt;br /&gt;
 local tileset = lay.tileset&lt;br /&gt;
 &lt;br /&gt;
 local dlg = Dialog(&amp;quot;Export Tileset&amp;quot;)&lt;br /&gt;
 dlg:file{ id=&amp;quot;filename&amp;quot;, label=&amp;quot;Export to Tilemap file:&amp;quot;, save=true, focus=true,&lt;br /&gt;
           filename=app.fs.joinPath(app.fs.filePath(lay.sprite.filename), &amp;quot;tileset.png&amp;quot;) }&lt;br /&gt;
  :label{ label=&amp;quot;Number of Tiles to be exported&amp;quot;, text=tostring(#tileset) }&lt;br /&gt;
 &lt;br /&gt;
  :separator()&lt;br /&gt;
  :number { id=&amp;quot;tilemap_cols&amp;quot;, label=&amp;quot;Number of columns in Tilemap:&amp;quot;, text=&amp;quot;16&amp;quot; }&lt;br /&gt;
  :check { id=&amp;quot;ask_overwrite&amp;quot;, label=&amp;quot;Ask before overwrite existing Tilemap file&amp;quot;, selected=true }&lt;br /&gt;
  :check { id=&amp;quot;tiles_extruded&amp;quot;, label=&amp;quot;Extrude Tiles in Tilemap&amp;quot;, selected=false }&lt;br /&gt;
  :check { id=&amp;quot;keep_sprite_frames&amp;quot;, label=&amp;quot;Keep generated sprite frames open&amp;quot;, selected=false }&lt;br /&gt;
  :check { id=&amp;quot;open_generated&amp;quot;, label=&amp;quot;Open generated Tilemap&amp;quot;, selected=false }&lt;br /&gt;
 &lt;br /&gt;
  :separator()&lt;br /&gt;
  :button{ text=&amp;quot;&amp;amp;Export&amp;quot;, focus=true, id=&amp;quot;ok&amp;quot; }&lt;br /&gt;
  :button{ text=&amp;quot;&amp;amp;Cancel&amp;quot; }&lt;br /&gt;
  :show()&lt;br /&gt;
 &lt;br /&gt;
 -- Data validation&lt;br /&gt;
 local data = dlg.data&lt;br /&gt;
 if not data.ok then return end&lt;br /&gt;
 &lt;br /&gt;
 local spec = lay.sprite.spec&lt;br /&gt;
 local grid = tileset.grid&lt;br /&gt;
 local size = grid.tileSize&lt;br /&gt;
 &lt;br /&gt;
 -- Create a new sprite with the dimension of one single tile&lt;br /&gt;
 local newSpr = Sprite(size.width, size.height, lay.sprite.colorMode)&lt;br /&gt;
 &lt;br /&gt;
 -- give the new sprite the same palette as the source sprite&lt;br /&gt;
 newSpr:setPalette(lay.sprite.palettes[1])&lt;br /&gt;
 &lt;br /&gt;
 -- First copy first tile into sprite frame 1&lt;br /&gt;
 local tile = tileset:getTile(0)&lt;br /&gt;
 newSpr.cels[1].image = tile&lt;br /&gt;
 &lt;br /&gt;
 -- Then create new frame and copy each tile into a new frame of sprite&lt;br /&gt;
 &lt;br /&gt;
 for i = 1, #tileset - 1 do&lt;br /&gt;
   app.command.NewFrame { [&amp;quot;content&amp;quot;]=&amp;quot;current&amp;quot; }&lt;br /&gt;
   local tile = tileset:getTile(i)&lt;br /&gt;
   newSpr.cels[i + 1].image = tile&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 if app.apiVersion &amp;gt;= 3 then&lt;br /&gt;
   newSpr.filename = &amp;quot;sprite frames&amp;quot;&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 -- Export sprite frames as an extruded sprite sheet&lt;br /&gt;
 app.command.ExportSpriteSheet{&lt;br /&gt;
   ui=false,&lt;br /&gt;
   askOverwrite=data.ask_overwrite,&lt;br /&gt;
   type=SpriteSheetType.ROWS,&lt;br /&gt;
   columns=data.tilemap_cols,&lt;br /&gt;
   textureFilename=data.filename,&lt;br /&gt;
   extrude=data.tiles_extruded,&lt;br /&gt;
   openGenerated=data.open_generated&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 -- Close sprite frames again&lt;br /&gt;
 if data.keep_sprite_frames == false then&lt;br /&gt;
   newSpr:close()&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Export_Aseprite_Tilemap&amp;diff=243</id>
		<title>Export Aseprite Tilemap</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Export_Aseprite_Tilemap&amp;diff=243"/>
		<updated>2024-01-31T22:37:04Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: New Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== This LUA script file needs to be placed in Aseprite&#039;s &amp;quot;scripts&amp;quot; folder. =====&lt;br /&gt;
 -- export tilemap.lua&lt;br /&gt;
 -- Copyright (C) 2022  Daniel Tremblay&lt;br /&gt;
 --&lt;br /&gt;
 -- This file is released under the terms of the MIT license.&lt;br /&gt;
 &lt;br /&gt;
 local spr = app.activeSprite&lt;br /&gt;
 local pc = app.pixelColor&lt;br /&gt;
 if not spr then return print &amp;quot;No active sprite&amp;quot; end&lt;br /&gt;
 &lt;br /&gt;
 if ColorMode.TILEMAP == nil then ColorMode.TILEMAP = 4 end&lt;br /&gt;
 assert(ColorMode.TILEMAP == 4)&lt;br /&gt;
 &lt;br /&gt;
 local output_folder = app.fs.filePath(spr.filename)&lt;br /&gt;
 &lt;br /&gt;
 local function write_foenix_data(filename, data)&lt;br /&gt;
   local file = io.open(filename, &amp;quot;wb&amp;quot;)&lt;br /&gt;
   local str = string.char(table.unpack(data))&lt;br /&gt;
   file:write(str)&lt;br /&gt;
   file:close()&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 local function export_cel(cel)&lt;br /&gt;
   local t = {&lt;br /&gt;
     frame=cel.frameNumber-1,&lt;br /&gt;
     bounds={ x=cel.bounds.x,&lt;br /&gt;
              y=cel.bounds.y,&lt;br /&gt;
              width=cel.bounds.width,&lt;br /&gt;
              height=cel.bounds.height }&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   if cel.image.colorMode == ColorMode.TILEMAP then&lt;br /&gt;
     local tilemap = cel.image&lt;br /&gt;
     -- save tilemap&lt;br /&gt;
     t.tilemap = { width=tilemap.width,&lt;br /&gt;
                   height=tilemap.height,&lt;br /&gt;
                   tiles={} }&lt;br /&gt;
     for it in tilemap:pixels() do&lt;br /&gt;
       table.insert(t.tilemap.tiles, pc.tileI(it()))&lt;br /&gt;
     end&lt;br /&gt;
   else&lt;br /&gt;
     -- save regular cel&lt;br /&gt;
     image_n = image_n + 1&lt;br /&gt;
     local imageFn = fs.joinPath(output_folder, &amp;quot;image&amp;quot; .. image_n .. &amp;quot;.png&amp;quot;)&lt;br /&gt;
     cel.image:saveAs(imageFn)&lt;br /&gt;
     t.image = imageFn&lt;br /&gt;
   end&lt;br /&gt;
 &lt;br /&gt;
   fill_user_data(t, cel)&lt;br /&gt;
   return t&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 -- Creates output folder&lt;br /&gt;
 -- fs.makeDirectory(output_folder)  -- don&#039;t!!&lt;br /&gt;
 &lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 -- Write /sprite.json file in the output folder&lt;br /&gt;
 &lt;br /&gt;
 local tilemapFile = app.fs.joinPath(output_folder, &amp;quot;tilemap.tlm&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 local data = {}&lt;br /&gt;
 -- add a tile because Vicky II requires it&lt;br /&gt;
 table.insert(data,0)&lt;br /&gt;
 table.insert(data,0)&lt;br /&gt;
 -- iterate over each layer&lt;br /&gt;
 for _,layer in ipairs(spr.layers) do&lt;br /&gt;
   -- iterate over each cel&lt;br /&gt;
   for _,cel in ipairs(layer.cels) do&lt;br /&gt;
     local tilemap = cel.image&lt;br /&gt;
     for it in tilemap:pixels() do&lt;br /&gt;
       table.insert(data, pc.tileI(it()))&lt;br /&gt;
       table.insert(data, 0)&lt;br /&gt;
     end&lt;br /&gt;
   end&lt;br /&gt;
   --data[y*grid.width*2 + x*2]=grid.tileIndex&lt;br /&gt;
 end&lt;br /&gt;
     &lt;br /&gt;
 &lt;br /&gt;
     &lt;br /&gt;
 --for i=1,1000 do data[i] = math.random(0,255) end&lt;br /&gt;
 &lt;br /&gt;
 write_foenix_data(tilemapFile, data)&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Tools_%26_Scripts&amp;diff=242</id>
		<title>Tools &amp; Scripts</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Tools_%26_Scripts&amp;diff=242"/>
		<updated>2024-01-31T22:34:26Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Added two links to Aseprite LUA scripts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== F256 Machines Game Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sprite Creation Tools &amp;amp; Scripts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tool !! Link &lt;br /&gt;
! --- !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space:nowrap;&amp;quot;| Aseprite&lt;br /&gt;
| style=&amp;quot;white-space:nowrap;&amp;quot;| https://www.aseprite.org/&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;white-space:nowrap;&amp;quot; |Aseprite can be used to create sprites animation or Tiles Sets.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Scripts ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tile Creation Tools &amp;amp; Scripts ===&lt;br /&gt;
If you use Aseprite, you can convert your tile drawings to tilesets and tilemaps using the following scripts:&lt;br /&gt;
&lt;br /&gt;
* [[Export Aseprite Tilemap]]&lt;br /&gt;
* [[Export Aseprite Tileset]]&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=HOWTO&amp;diff=241</id>
		<title>HOWTO</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=HOWTO&amp;diff=241"/>
		<updated>2024-01-31T22:27:48Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Added a link to the SNES/NES example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Wifi|Set up wifi.]]&lt;br /&gt;
* [[Wget from pc|Fetch files from your PC using wget.]]&lt;br /&gt;
* [[Use the SNES/NES controller in Assembly]]&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=240</id>
		<title>Use the SNES/NES controller in Assembly</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=240"/>
		<updated>2024-01-31T22:26:41Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Added description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== &#039;&#039;&#039;; Code contributed by Stefany Allaire on Discord&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
=== ; This is test code that goes through all the ports and mux the NES and SNES... ===&lt;br /&gt;
NES_CTRL = $D880&lt;br /&gt;
&lt;br /&gt;
NES_STAT = $D880 &lt;br /&gt;
&lt;br /&gt;
NES_EN   = $01&lt;br /&gt;
&lt;br /&gt;
NES_MODE = $04&lt;br /&gt;
&lt;br /&gt;
NES_TRIG = $80&lt;br /&gt;
&lt;br /&gt;
NES_DONE = $40&lt;br /&gt;
&lt;br /&gt;
NES_JOY0 = $D884 &lt;br /&gt;
&lt;br /&gt;
NES_JOY1 = $D886&lt;br /&gt;
&lt;br /&gt;
NES_JOY2 = $D888&lt;br /&gt;
&lt;br /&gt;
NES_JOY3 = $D88A&lt;br /&gt;
&lt;br /&gt;
SNES_JOY0_LO = $D884&lt;br /&gt;
&lt;br /&gt;
SNES_JOY0_HI = $D885&lt;br /&gt;
&lt;br /&gt;
SNES_JOY1_LO = $D886&lt;br /&gt;
&lt;br /&gt;
SNES_JOY1_HI = $D887&lt;br /&gt;
&lt;br /&gt;
SNES_JOY2_LO = $D888&lt;br /&gt;
&lt;br /&gt;
SNES_JOY2_HI = $D889&lt;br /&gt;
&lt;br /&gt;
SNES_JOY3_LO = $D88A&lt;br /&gt;
&lt;br /&gt;
SNES_JOY3_HI = $D88B&lt;br /&gt;
&lt;br /&gt;
Test_4N4S: &lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage0&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Test NES First&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Enable and Begin a Sample&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
NES_Start_Again:                 &lt;br /&gt;
&lt;br /&gt;
                lda #NES_EN &lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                lda NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                ora #NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                and #~NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL                &lt;br /&gt;
&lt;br /&gt;
NESWait2beDone                &lt;br /&gt;
&lt;br /&gt;
                lda NES_STAT&lt;br /&gt;
&lt;br /&gt;
                and #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                cmp #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                bne NESWait2beDone&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; When here, the Joystick Sampling is done&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY0&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$00&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY1&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$03&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY2&lt;br /&gt;
&lt;br /&gt;
                eor #$FF           &lt;br /&gt;
&lt;br /&gt;
                ldx #$06&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY3  &lt;br /&gt;
&lt;br /&gt;
                eor #$FF                            &lt;br /&gt;
&lt;br /&gt;
                ldx #$09&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY3&lt;br /&gt;
&lt;br /&gt;
                eor #$FF                &lt;br /&gt;
&lt;br /&gt;
                and #$C0&lt;br /&gt;
&lt;br /&gt;
                cmp #$C0&lt;br /&gt;
&lt;br /&gt;
                beq NESDoneWithTest&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Let&#039;s do the SNES&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda #NES_EN | NES_MODE&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                lda NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                ora #NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                and #~NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL                &lt;br /&gt;
&lt;br /&gt;
SNESWait2beDone                &lt;br /&gt;
&lt;br /&gt;
                lda NES_STAT&lt;br /&gt;
&lt;br /&gt;
                and #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                cmp #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                bne SNESWait2beDone&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; When here, the Joystick Sampling is done&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY0_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$50&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY0_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$52&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY1_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$55&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY1_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$57&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY2_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$5A&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY2_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$5C&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY3_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$5F&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY3_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$61&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                jmp NES_Start_Again&lt;br /&gt;
&lt;br /&gt;
NESDoneWithTest:&lt;br /&gt;
&lt;br /&gt;
                lda #$00 &lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                rts &lt;br /&gt;
&lt;br /&gt;
Byte2Hex: &lt;br /&gt;
&lt;br /&gt;
                sta $50&lt;br /&gt;
&lt;br /&gt;
                stx $51&lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage2&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Hi Part&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda $50                              &lt;br /&gt;
&lt;br /&gt;
                and #$F0 &lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                tax &lt;br /&gt;
&lt;br /&gt;
                lda HEX, x  ;&lt;br /&gt;
&lt;br /&gt;
                ldx $51&lt;br /&gt;
&lt;br /&gt;
                sta $c320,x&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Low Part&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda $50                  &lt;br /&gt;
&lt;br /&gt;
                and #$0F &lt;br /&gt;
&lt;br /&gt;
                tax &lt;br /&gt;
&lt;br /&gt;
                lda HEX, x&lt;br /&gt;
&lt;br /&gt;
                ldx $51&lt;br /&gt;
&lt;br /&gt;
                sta $c321,x&lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage0 &lt;br /&gt;
&lt;br /&gt;
                rts&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=239</id>
		<title>Use the SNES/NES controller in Assembly</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=239"/>
		<updated>2024-01-31T22:24:36Z</updated>

		<summary type="html">&lt;p&gt;Grenouye: Copied the code from Discord&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;; Code contributed by Stefany Allaire on Discord&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
NES_CTRL = $D880&lt;br /&gt;
&lt;br /&gt;
NES_STAT = $D880 &lt;br /&gt;
&lt;br /&gt;
NES_EN   = $01&lt;br /&gt;
&lt;br /&gt;
NES_MODE = $04&lt;br /&gt;
&lt;br /&gt;
NES_TRIG = $80&lt;br /&gt;
&lt;br /&gt;
NES_DONE = $40&lt;br /&gt;
&lt;br /&gt;
NES_JOY0 = $D884 &lt;br /&gt;
&lt;br /&gt;
NES_JOY1 = $D886&lt;br /&gt;
&lt;br /&gt;
NES_JOY2 = $D888&lt;br /&gt;
&lt;br /&gt;
NES_JOY3 = $D88A&lt;br /&gt;
&lt;br /&gt;
SNES_JOY0_LO = $D884&lt;br /&gt;
&lt;br /&gt;
SNES_JOY0_HI = $D885&lt;br /&gt;
&lt;br /&gt;
SNES_JOY1_LO = $D886&lt;br /&gt;
&lt;br /&gt;
SNES_JOY1_HI = $D887&lt;br /&gt;
&lt;br /&gt;
SNES_JOY2_LO = $D888&lt;br /&gt;
&lt;br /&gt;
SNES_JOY2_HI = $D889&lt;br /&gt;
&lt;br /&gt;
SNES_JOY3_LO = $D88A&lt;br /&gt;
&lt;br /&gt;
SNES_JOY3_HI = $D88B&lt;br /&gt;
&lt;br /&gt;
Test_4N4S: &lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage0&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Test NES First&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Enable and Begin a Sample&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
NES_Start_Again:                 &lt;br /&gt;
&lt;br /&gt;
                lda #NES_EN &lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                lda NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                ora #NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                and #~NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL                &lt;br /&gt;
&lt;br /&gt;
NESWait2beDone                &lt;br /&gt;
&lt;br /&gt;
                lda NES_STAT&lt;br /&gt;
&lt;br /&gt;
                and #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                cmp #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                bne NESWait2beDone&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; When here, the Joystick Sampling is done&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY0&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$00&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY1&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$03&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY2&lt;br /&gt;
&lt;br /&gt;
                eor #$FF           &lt;br /&gt;
&lt;br /&gt;
                ldx #$06&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY3  &lt;br /&gt;
&lt;br /&gt;
                eor #$FF                            &lt;br /&gt;
&lt;br /&gt;
                ldx #$09&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY3&lt;br /&gt;
&lt;br /&gt;
                eor #$FF                &lt;br /&gt;
&lt;br /&gt;
                and #$C0&lt;br /&gt;
&lt;br /&gt;
                cmp #$C0&lt;br /&gt;
&lt;br /&gt;
                beq NESDoneWithTest&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Let&#039;s do the SNES&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda #NES_EN | NES_MODE&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                lda NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                ora #NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                and #~NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL                &lt;br /&gt;
&lt;br /&gt;
SNESWait2beDone                &lt;br /&gt;
&lt;br /&gt;
                lda NES_STAT&lt;br /&gt;
&lt;br /&gt;
                and #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                cmp #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                bne SNESWait2beDone&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; When here, the Joystick Sampling is done&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY0_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$50&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY0_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$52&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY1_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$55&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY1_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$57&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY2_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$5A&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY2_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$5C&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY3_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$5F&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY3_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$61&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                jmp NES_Start_Again&lt;br /&gt;
&lt;br /&gt;
NESDoneWithTest:&lt;br /&gt;
&lt;br /&gt;
                lda #$00 &lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                rts &lt;br /&gt;
&lt;br /&gt;
Byte2Hex: &lt;br /&gt;
&lt;br /&gt;
                sta $50&lt;br /&gt;
&lt;br /&gt;
                stx $51&lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage2&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Hi Part&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda $50                              &lt;br /&gt;
&lt;br /&gt;
                and #$F0 &lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                tax &lt;br /&gt;
&lt;br /&gt;
                lda HEX, x  ;&lt;br /&gt;
&lt;br /&gt;
                ldx $51&lt;br /&gt;
&lt;br /&gt;
                sta $c320,x&lt;br /&gt;
&lt;br /&gt;
                &#039;&#039;&#039;; Low Part&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
                lda $50                  &lt;br /&gt;
&lt;br /&gt;
                and #$0F &lt;br /&gt;
&lt;br /&gt;
                tax &lt;br /&gt;
&lt;br /&gt;
                lda HEX, x&lt;br /&gt;
&lt;br /&gt;
                ldx $51&lt;br /&gt;
&lt;br /&gt;
                sta $c321,x&lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage0 &lt;br /&gt;
&lt;br /&gt;
                rts&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
</feed>