<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.c256foenix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=HaydenKale</id>
	<title>C256 Foenix Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.c256foenix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=HaydenKale"/>
	<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Special:Contributions/HaydenKale"/>
	<updated>2026-05-17T18:07:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=950</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=950"/>
		<updated>2023-07-03T16:03:17Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* A few sound chips: SID, PSG/SN76489, OPL3&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
An example of a straightforward mapping is to simply map the CPU address space linearly to the first 64KB of RAM.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA MMU_MEM_BANK_0 ; map $000000 to bank 0&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_1 ; map $002000 to bank 1&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_2 ; map $004000 to bank 2&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_3 ; map $006000 to bank 3&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_4 ; map $008000 to bank 4&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_5 ; map $00a000 to bank 5&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_6 ; map $00c000 to bank 6&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_7 ; map $00e000 to bank 7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where MMU_MEM_BANK_0, 1, 2, are specially mapped at addresses $0008, $0009, and so on. In this example code, the accumulator stores the bank number of device memory, and that value is written to the corresponding register. Write higher values to map later regions of device memory.&lt;br /&gt;
&lt;br /&gt;
Finally, use&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
AND #~(MMU_EDIT_EN)&lt;br /&gt;
STA MMU_MEM_CTRL  ; disable mmu edit, use mmu lut 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to commit the changes and enable use of the updated MLUT 0.&lt;br /&gt;
&lt;br /&gt;
= Sound =&lt;br /&gt;
The F256K has a few different components capable of processing sound:&lt;br /&gt;
* Two PSG(SN76489) chips&lt;br /&gt;
* Two SID chips; SID, or Sound Interface Device, was used on C64 and others&lt;br /&gt;
* Yamaha OPL3 chip&lt;br /&gt;
&lt;br /&gt;
The PSG chips are memory-mapped as follows:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
PSG_INT_L_PORT = $D600          ; Control register for the SN76489&lt;br /&gt;
PSG_INT_B_PORT = $D608          ; Control register for the SN76489, writes to both L and R ports&lt;br /&gt;
PSG_INT_R_PORT = $D610          ; Control register for the SN76489&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved; this can be through an environment like SuperBASIC that talks to the kernel&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=949</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=949"/>
		<updated>2023-07-03T15:57:55Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* A few sound chips: SID, PSG/SN76489, OPL3&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
An example of a straightforward mapping is to simply map the CPU address space linearly to the first 64KB of RAM.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA MMU_MEM_BANK_0 ; map $000000 to bank 0&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_1 ; map $002000 to bank 1&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_2 ; map $004000 to bank 2&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_3 ; map $006000 to bank 3&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_4 ; map $008000 to bank 4&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_5 ; map $00a000 to bank 5&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_6 ; map $00c000 to bank 6&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_7 ; map $00e000 to bank 7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where MMU_MEM_BANK_0, 1, 2, are specially mapped at addresses $0008, $0009, and so on. In this example code, the accumulator stores the bank number of device memory, and that value is written to the corresponding register. Write higher values to map later regions of device memory.&lt;br /&gt;
&lt;br /&gt;
Finally, use&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
AND #~(MMU_EDIT_EN)&lt;br /&gt;
STA MMU_MEM_CTRL  ; disable mmu edit, use mmu lut 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to commit the changes and enable use of the updated MLUT 0.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved; this can be through an environment like SuperBASIC that talks to the kernel&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256JR&amp;diff=948</id>
		<title>F256JR</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256JR&amp;diff=948"/>
		<updated>2023-07-03T15:57:00Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256 Jr is a 65C02 based system which includes the following features:&lt;br /&gt;
&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM (256k on the Rev A)&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* 1x Simple 3-wire UART (RS-232 Port, Feather ESP8266 wifi, or Feather MIDI)&lt;br /&gt;
* 2x Atari Style Joystick Ports, 1x DB9 to interface to NES/SNES Adapter (For Rev B Only)&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* 2x Internal PSG Sound Chip&lt;br /&gt;
* 2x External SID Sockets&lt;br /&gt;
&lt;br /&gt;
Aside from its sound chip, it's very similar to the [[F256K]].&lt;br /&gt;
&lt;br /&gt;
= Hardware Setup =&lt;br /&gt;
[[File:Pinout_Jr_December_7th_Trans.png|200px]]&lt;br /&gt;
&lt;br /&gt;
The PS2 mouse port may be wired to the keyboard port and then split out using a laptop PS2 splitter.&lt;br /&gt;
* [[Dual PS2 Port]]&lt;br /&gt;
&lt;br /&gt;
If your Jr. is booting to a blank screen with a dark purple border, be sure that the RAM/FLASH jumper is set to FLASH.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the Jr.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= BASIC =&lt;br /&gt;
The F256 Jr. ships with SuperBASIC: https://github.com/paulscottrobson/superbasic&lt;br /&gt;
&lt;br /&gt;
= DOS =&lt;br /&gt;
* There is a simple example DOS shell for the MicroKernel in the kernel/dos project: https://github.com/ghackwrench/F256_Jr_Kernel_DOS&lt;br /&gt;
* It may also be found in the SuperBASIC project under source/releases: https://github.com/paulscottrobson/superbasic&lt;br /&gt;
* SuperBASIC's install scripts install it by default.  To access it, type &amp;quot;DOS&amp;quot; from BASIC.&lt;br /&gt;
* To return to SuperBASIC, type &amp;quot;basic &amp;lt;enter&amp;gt;&amp;quot; from DOS.&lt;br /&gt;
* To auto-boot into DOS instead of BASIC, install DOS in flash slot 1, and BASIC in slots 2,3,4. &lt;br /&gt;
&lt;br /&gt;
= Assemblers =&lt;br /&gt;
* 64tass: https://sourceforge.net/projects/tass64/&lt;br /&gt;
&lt;br /&gt;
= C compiler =&lt;br /&gt;
* [[cc65]]&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=916</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=916"/>
		<updated>2023-06-27T07:05:17Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
An example of a straightforward mapping is to simply map the CPU address space linearly to the first 64KB of RAM.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA MMU_MEM_BANK_0 ; map $000000 to bank 0&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_1 ; map $002000 to bank 1&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_2 ; map $004000 to bank 2&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_3 ; map $006000 to bank 3&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_4 ; map $008000 to bank 4&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_5 ; map $00a000 to bank 5&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_6 ; map $00c000 to bank 6&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_7 ; map $00e000 to bank 7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where MMU_MEM_BANK_0, 1, 2, are specially mapped at addresses $0008, $0009, and so on. In this example code, the accumulator stores the bank number of device memory, and that value is written to the corresponding register. Write higher values to map later regions of device memory.&lt;br /&gt;
&lt;br /&gt;
Finally, use&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
AND #~(MMU_EDIT_EN)&lt;br /&gt;
STA MMU_MEM_CTRL  ; disable mmu edit, use mmu lut 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to commit the changes and enable use of the updated MLUT 0.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved; this can be through an environment like SuperBASIC that talks to the kernel&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=915</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=915"/>
		<updated>2023-06-27T07:05:02Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
An example of a straightforward mapping is to simply map the CPU address space linearly to the first 64KB of RAM.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA MMU_MEM_BANK_0 ; map $000000 to bank 0&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_1 ; map $002000 to bank 1&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_2 ; map $004000 to bank 2&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_3 ; map $006000 to bank 3&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_4 ; map $008000 to bank 4&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_5 ; map $00a000 to bank 5&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_6 ; map $00c000 to bank 6&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_7 ; map $00e000 to bank 7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where MMU_MEM_BANK_0, 1, 2, are specially mapped at addresses $0008, $0009, and so on. In this example code, the accumulator stores the bank number of device memory, and that value is written to the corresponding register. Write higher values to map later regions of device memory.&lt;br /&gt;
&lt;br /&gt;
Finally, use&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
AND #~(MMU_EDIT_EN)&lt;br /&gt;
STA MMU_MEM_CTRL  ; disable mmu edit, use mmu lut 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to commit the changes and enable use of the updated MLUT 0.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved; this can be through an environment like SuperBASIC that talks to the kernel&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=914</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=914"/>
		<updated>2023-06-27T07:03:06Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
An example of a straightforward mapping is to simply map the CPU address space linearly to the first 64KB of RAM.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA MMU_MEM_BANK_0 ; map $000000 to bank 0&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_1 ; map $002000 to bank 1&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_2 ; map $004000 to bank 2&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_3 ; map $006000 to bank 3&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_4 ; map $008000 to bank 4&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_5 ; map $00a000 to bank 5&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_6 ; map $00c000 to bank 6&lt;br /&gt;
INA&lt;br /&gt;
STA MMU_MEM_BANK_7 ; map $00e000 to bank 7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where MMU_MEM_BANK_0, 1, 2, are specially mapped at addresses $0008, $0009, and so on. In this example code, the accumulator stores the bank number of device memory, and that value is written to the corresponding register. Write higher values to map later regions of device memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved; this can be through an environment like SuperBASIC that talks to the kernel&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=913</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=913"/>
		<updated>2023-06-27T06:50:44Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Device Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[F256K]] has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal from the CPU.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B. The examples below assume this standard direction.&lt;br /&gt;
&lt;br /&gt;
For example, the space bar is mapped to '''bit 7 of port A''', '''bit 4 of port B'''. So to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference to use VIA1 Port A and B to detect the rest of the keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The right and down arrows use both VIA0 and VIA1 controllers.&lt;br /&gt;
For the right and down arrows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Down Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Right Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Finally, the Restore key is relayed through the NMI signal of the CPU.&lt;br /&gt;
&lt;br /&gt;
For an additional reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=912</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=912"/>
		<updated>2023-06-27T01:16:09Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[F256K]] has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B. The examples below assume this standard direction.&lt;br /&gt;
&lt;br /&gt;
For example, the space bar is mapped to '''bit 7 of port A''', '''bit 4 of port B'''. So to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference to use VIA1 Port A and B to detect the rest of the keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The right and down arrows use both VIA0 and VIA1 controllers.&lt;br /&gt;
For the right and down arrows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Down Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Right Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Finally, the Restore key is relayed through the NMI signal of the CPU.&lt;br /&gt;
&lt;br /&gt;
For an additional reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=911</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=911"/>
		<updated>2023-06-26T16:16:47Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Keyboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved; this can be through an environment like SuperBASIC that talks to the kernel&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=910</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=910"/>
		<updated>2023-06-26T16:09:51Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they just affect a different part of the boot process, and are tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=909</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=909"/>
		<updated>2023-06-26T06:47:03Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from Flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they're just a different behavior affects a different part of the boot process, and is tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what device memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
To ensure that control of MLUTs is always possible, CPU address $0000 is special, and is a memory-mapped register to manipulate MLUTs:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
MMU_MEM_CTRL = $0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to enable editing of MLUT 0, set the MMU_EDIT_EN (the leftmost) bit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
LDA MMU_MEM_CTRL&lt;br /&gt;
ORA #MMU_EDIT_EN&lt;br /&gt;
STA MMU_MEM_CTRL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for where a bank of CPU address space can map to: programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=908</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=908"/>
		<updated>2023-06-26T06:27:02Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Ports and connectors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from Flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they're just a different behavior affects a different part of the boot process, and is tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=907</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=907"/>
		<updated>2023-06-26T06:26:40Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from Flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch:&lt;br /&gt;
* The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. &lt;br /&gt;
* Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot. &lt;br /&gt;
&lt;br /&gt;
So those tools' options are also useful for developer convenience, they're just a different behavior affects a different part of the boot process, and is tightly integrated with the act of pushing data over the debug port onto F256K memory.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=906</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=906"/>
		<updated>2023-06-26T06:22:47Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
The ''Boot from RAM'' and ''Boot from flash'' options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP switch alters boot behavior by telling the kernel to search the first 48K of RAM for a pre-loaded kernel binary. Those tools, on the other hand, initiate a new boot using a soft reset signal, and the choice of ''Boot from RAM'' versus ''Boot from flash'' affects the initial memory look-up tables upon boot.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=905</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=905"/>
		<updated>2023-06-26T02:42:04Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. The CPU-visible address space is divided into banks as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=904</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=904"/>
		<updated>2023-06-26T02:40:16Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other (e.g., non-Foenix) platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=903</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=903"/>
		<updated>2023-06-26T02:39:15Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Bank&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Address Range&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| $0000-$1FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| $2000-$3FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| $4000-$5FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| $6000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| $8000-$9FFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| $A000-$BFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| $C000-$DFFF&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
| $E000-$FFFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=902</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=902"/>
		<updated>2023-06-26T02:32:27Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
* If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=901</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=901"/>
		<updated>2023-06-26T02:31:42Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Keyboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
The F256K also supports plugging in an external keyboard. If this is done, it is through PS/2 interface.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=900</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=900"/>
		<updated>2023-06-26T02:29:33Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the CPU address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed by the CPU at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=899</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=899"/>
		<updated>2023-06-26T02:28:38Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space. &lt;br /&gt;
&lt;br /&gt;
Since the F256K has a larger amount of total memory (up to 768KB) than this address space exposes, programs use and adjust the address space as a &amp;quot;window&amp;quot; to underlying memory needed at any given time. &lt;br /&gt;
&lt;br /&gt;
In other words, programs control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=898</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=898"/>
		<updated>2023-06-26T02:22:32Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Memory =&lt;br /&gt;
The F256K has a 16-bit address space, $0000 through $FFFF, visible to its CPU. In other words, the address space is 64KB in size. While other units such as the TinyVicky graphics unit can access memory beyond that, the CPU itself has a 16-bit address space.&lt;br /&gt;
&lt;br /&gt;
Programs can control what physical memory this address space maps to. They do this through ''memory lookup tables'', or ''MLUT''s for short. Up to four MLUTs can be set up at a time, and programs choose which one is active at any given time.&lt;br /&gt;
&lt;br /&gt;
The address space is divided up into eight equal-sized ''banks''. Note that each bank is $2000 in size; on other platforms, the term ''bank'' may be used differently. Here, each bank is 8KB, or $2000. Programs choose which bank of CPU address space maps to. Programs can map a bank to any of RAM, flash or expansion memory.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=897</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=897"/>
		<updated>2023-06-26T02:09:54Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[F256K]] has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B. The examples below assume this standard direction.&lt;br /&gt;
&lt;br /&gt;
For example, the space bar is mapped to '''bit 7 of port A''', '''bit 4 of port B'''. So to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference to use VIA1 Port A and B to detect the rest of the keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The right and down arrows use both VIA0 and VIA1 controllers.&lt;br /&gt;
For the right and down arrows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Down Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Right Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Finally, the Restore key is controlled through the NMI signal of the CPU.&lt;br /&gt;
&lt;br /&gt;
For an additional reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=896</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=896"/>
		<updated>2023-06-26T01:15:00Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B. The examples below assume this standard direction.&lt;br /&gt;
&lt;br /&gt;
For example, the space bar is mapped to '''bit 7 of port A''', '''bit 4 of port B'''. So to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference to use VIA1 Port A and B to detect the rest of the keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA1 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The right and down arrows use both VIA0 and VIA1 controllers.&lt;br /&gt;
For the right and down arrows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| VIA0 PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Down Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA3&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA5&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA6&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Right Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| VIA1 PA7&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Finally, the Restore key is controlled through the NMI signal of the CPU.&lt;br /&gt;
&lt;br /&gt;
For an additional reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=895</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=895"/>
		<updated>2023-06-26T01:04:50Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B. The examples below assume this standard direction.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference, for all the keys using VIA1 Port A and B:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the right arrow:&lt;br /&gt;
* Write to VIA1 port A bit 0.&lt;br /&gt;
* Read from VIA0 port B.&lt;br /&gt;
If bit 7 is clear, the right arrow is pressed.&lt;br /&gt;
&lt;br /&gt;
For the down arrow:&lt;br /&gt;
* Write to VIA port A bit 6.&lt;br /&gt;
* Read from VIA0 port B.&lt;br /&gt;
If bit 7 is clear, the down arrow is pressed.&lt;br /&gt;
&lt;br /&gt;
Finally, the Restore key is controlled through the NMI signal of the CPU.&lt;br /&gt;
&lt;br /&gt;
For an additional reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=894</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=894"/>
		<updated>2023-06-26T01:04:03Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference, for all the keys using VIA1 Port A and B:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the right arrow:&lt;br /&gt;
* Write to VIA1 port A bit 0.&lt;br /&gt;
* Read from VIA0 port B.&lt;br /&gt;
If bit 7 is clear, the right arrow is pressed.&lt;br /&gt;
&lt;br /&gt;
For the down arrow:&lt;br /&gt;
* Write to VIA port A bit 6.&lt;br /&gt;
* Read from VIA0 port B.&lt;br /&gt;
If bit 7 is clear, the down arrow is pressed.&lt;br /&gt;
&lt;br /&gt;
Finally, the Restore key is controlled through the NMI signal of the CPU.&lt;br /&gt;
&lt;br /&gt;
For an additional reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=893</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=893"/>
		<updated>2023-06-26T01:00:00Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See this chart for a complete reference:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;|  &lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB1&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB2&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB3&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB4&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PB7&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA0&lt;br /&gt;
| Delete&lt;br /&gt;
| Return&lt;br /&gt;
| Left Arrow&lt;br /&gt;
| F7&lt;br /&gt;
| F1&lt;br /&gt;
| F3&lt;br /&gt;
| F5&lt;br /&gt;
| Up Arrow&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA1&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| A&lt;br /&gt;
| 4&lt;br /&gt;
| Z&lt;br /&gt;
| S&lt;br /&gt;
| E&lt;br /&gt;
| Left Shift&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA2&lt;br /&gt;
| 5&lt;br /&gt;
| R&lt;br /&gt;
| D&lt;br /&gt;
| 6&lt;br /&gt;
| C&lt;br /&gt;
| F&lt;br /&gt;
| T&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA3&lt;br /&gt;
| 7&lt;br /&gt;
| Y&lt;br /&gt;
| G&lt;br /&gt;
| 8&lt;br /&gt;
| B&lt;br /&gt;
| H&lt;br /&gt;
| U&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA4&lt;br /&gt;
| 9&lt;br /&gt;
| I&lt;br /&gt;
| J&lt;br /&gt;
| 0&lt;br /&gt;
| M&lt;br /&gt;
| K&lt;br /&gt;
| O&lt;br /&gt;
| N&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA5&lt;br /&gt;
| Minus&lt;br /&gt;
| P&lt;br /&gt;
| L&lt;br /&gt;
| Caps&lt;br /&gt;
| Period&lt;br /&gt;
| Colon&lt;br /&gt;
| At&lt;br /&gt;
| Comma&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA6&lt;br /&gt;
| Plus&lt;br /&gt;
| Asterisk&lt;br /&gt;
| Semicolon&lt;br /&gt;
| Home&lt;br /&gt;
| Right Shift&lt;br /&gt;
| Alt&lt;br /&gt;
| Tab&lt;br /&gt;
| Forward Slash&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| PA7&lt;br /&gt;
| 1&lt;br /&gt;
| Backspace&lt;br /&gt;
| Control&lt;br /&gt;
| 2&lt;br /&gt;
| Space&lt;br /&gt;
| Foenix&lt;br /&gt;
| Q&lt;br /&gt;
| Run/Stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=892</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=892"/>
		<updated>2023-06-26T00:48:37Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Device Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
Programs interacting directly with the keyboard device will communicate with it through two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=891</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=891"/>
		<updated>2023-06-26T00:45:30Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: /* Keyboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. &lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=890</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=890"/>
		<updated>2023-06-26T00:44:48Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification].&lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=889</id>
		<title>F256K Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K_Keyboard&amp;diff=889"/>
		<updated>2023-06-26T00:44:45Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: Created page with &amp;quot;The F256K has a built-in keyboard, as hinted by the 'K' in its name.   Programs can interact with the keyboard through a kernel, or directly with the device.  = Device Informa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K has a built-in keyboard, as hinted by the 'K' in its name. &lt;br /&gt;
&lt;br /&gt;
Programs can interact with the keyboard through a kernel, or directly with the device.&lt;br /&gt;
&lt;br /&gt;
= Device Information =&lt;br /&gt;
&lt;br /&gt;
The keyboard is controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification]. The keys are controlled as follows:&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=888</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=888"/>
		<updated>2023-06-26T00:40:57Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification].&lt;br /&gt;
&lt;br /&gt;
There are two ways for programs to interact with the keyboard:&lt;br /&gt;
* '''Using the kernel''', where the exact mechanism depends on the kernel involved&lt;br /&gt;
* '''Directly with the device''', using memory mappings.&lt;br /&gt;
&lt;br /&gt;
For more information on interacting directly with the keyboard device, see [[F256K Keyboard]].&lt;br /&gt;
&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=887</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=887"/>
		<updated>2023-06-26T00:30:47Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal. For the complete description of VIA, see [https://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf WDC's specification].&lt;br /&gt;
&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=886</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=886"/>
		<updated>2023-06-26T00:21:57Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers and the CPU's NMI signal.&lt;br /&gt;
&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU I/O Page 0. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The typical way to poll for the majority of the keys (i.e., all the keys except right arrow, down arrow, and Restore) is to write to VIA1 port A, then read from VIA1 port B. Functionally, you might observe the reverse to also work on hardware. That said, the role of port A is to short the pin while port B has pull-ups, therefore it is best for the health of the system components to write to port A and read from port B.&lt;br /&gt;
&lt;br /&gt;
For example, to detect the user hitting the space bar, first initialize the keyboard as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Initialize matrix keyboard&lt;br /&gt;
; Designate port A for write, and port B for read.&lt;br /&gt;
LDA #$FF&lt;br /&gt;
STA VIA1_DDRA&lt;br /&gt;
LDA #$00&lt;br /&gt;
STA VIA1_DDRB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to poll for input, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; Space is PB4, PA7&lt;br /&gt;
LDA #(1 &amp;lt;&amp;lt; 7 ^ $FF)&lt;br /&gt;
STA VIA1_PRA&lt;br /&gt;
LDA VIA1_PRB&lt;br /&gt;
CMP #(1 &amp;lt;&amp;lt; 4 ^ $FF)&lt;br /&gt;
BEQ SpaceBarPressed&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=885</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=885"/>
		<updated>2023-06-26T00:05:43Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: Add info about VIAs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard does not operate by PS/2 controller, it's a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
The VIA controllers themselves are memory-mapped, visible to CPU. They're memory-mapped to these locations:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
VIA0_PRA  =  $dc01  ; VIA#0 (Port Register A)&lt;br /&gt;
VIA0_DDRA =  $dc03  ; VIA#0 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA0_PRB  =  $dc00  ; VIA#0 (Port Register B)&lt;br /&gt;
VIA0_DDRB =  $dc02  ; VIA#0 (Data Direction Register B)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRA  =  $db01  ; VIA#1 (Port Register A)&lt;br /&gt;
VIA1_DDRA =  $db03  ; VIA#1 (Data Direction Register A)&lt;br /&gt;
&lt;br /&gt;
VIA1_PRB  =  $db00  ; VIA#1 (Port Register B)&lt;br /&gt;
VIA1_DDRB =  $db02  ; VIA#1 (Data Direction Register B)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=884</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=884"/>
		<updated>2023-06-25T23:54:01Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'K' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
A common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=883</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=883"/>
		<updated>2023-06-25T23:53:36Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* [[TinyVICKY]] Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs can in many cases run straightforwardly on both.&lt;br /&gt;
&lt;br /&gt;
The 'k' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=881</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=881"/>
		<updated>2023-06-25T23:51:40Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: HaydenKale moved page F256k to F256K&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The 'k' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256k&amp;diff=882</id>
		<title>F256k</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256k&amp;diff=882"/>
		<updated>2023-06-25T23:51:40Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: HaydenKale moved page F256k to F256K&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[F256K]]&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=880</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=880"/>
		<updated>2023-06-25T21:10:09Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: Fix capitalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256K is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The 'k' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256K uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256K as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256K development owing to the similarity of the two units. It describes common aspects between F256Jr and F256K, with some sections highlighting F256K functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256K.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=879</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=879"/>
		<updated>2023-06-25T19:13:37Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The 'k' in the name comes from the fact that it has an integrated keyboard, unrelated to the amount of memory available in the system. The base system has 512K of system memory; with expansion cartridge brings it up to 768K.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256k development owing to the similarity of the two units. It describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=878</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=878"/>
		<updated>2023-06-25T18:47:05Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
Note: the &amp;quot;Boot from RAM&amp;quot; and &amp;quot;Boot from flash&amp;quot; options in uploader tools such as [https://github.com/pweingar/FoenixMgr FoenixMgr] or [https://github.com/clandrew/F256Uploader F256 Uploader] are unrelated to the &amp;quot;Boot from RAM&amp;quot; DIP switch. The DIP swtich tells the kernel to search the first 48K of RAM for a pre-loaded kernel binary; those tools send a soft reset signal to reset to an entrypoint either in RAM or Flash memory respectively.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256k development owing to the similarity of the two units. It describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=877</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=877"/>
		<updated>2023-06-25T18:36:10Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from a pre-installed kernel in the first 48K of memory.&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256k development owing to the similarity of the two units. It describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=876</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=876"/>
		<updated>2023-06-25T18:18:10Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from flash&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow''' and '''down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256k development owing to the similarity of the two units. It describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=875</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=875"/>
		<updated>2023-06-25T18:17:29Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
 &lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from flash&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Keyboard =&lt;br /&gt;
The built-in keyboard is a matrix keyboard controlled by two WDC VIA (Versatile Interface Adapter) controllers.&lt;br /&gt;
* '''Restore''' key is controlled by NMI signal.&lt;br /&gt;
* '''Right arrow and down arrow''' are controlled by VIA0.&lt;br /&gt;
* '''Rest of the keys''' are all controlled by VIA1.&lt;br /&gt;
&lt;br /&gt;
For a more complete reference, see the [https://github.com/pweingar/F256Manual manual].&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_ResizedPicture-scaled.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256k development owing to the similarity of the two units. It describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=File:F256k_ResizedPicture-scaled.jpg&amp;diff=874</id>
		<title>File:F256k ResizedPicture-scaled.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=File:F256k_ResizedPicture-scaled.jpg&amp;diff=874"/>
		<updated>2023-06-25T18:13:22Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=873</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=873"/>
		<updated>2023-06-25T18:11:42Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from flash&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
Although the manual is F256Jr-centric, it's suitable for F256k development owing to the similarity of the two units. It describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=872</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=872"/>
		<updated>2023-06-25T18:10:40Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: Add manual link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from flash&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Manual =&lt;br /&gt;
For a technical reference, use this manual:&lt;br /&gt;
https://github.com/pweingar/F256Manual&lt;br /&gt;
&lt;br /&gt;
The manual is F256Jr and largely describes common aspects between F256Jr and F256k, with some sections highlighting F256k functionality that differs.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=871</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=871"/>
		<updated>2023-06-25T18:07:36Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: Add tools section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from flash&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
* [https://github.com/clandrew/F256Uploader F256 Uploader]&lt;br /&gt;
* https://github.com/pweingar/FoenixMgr&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=870</id>
		<title>F256K</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=F256K&amp;diff=870"/>
		<updated>2023-06-25T18:05:45Z</updated>

		<summary type="html">&lt;p&gt;HaydenKale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The F256k is a 65xx-based system. It's an encased form factor with a built-in keyboard. It includes the following features:&lt;br /&gt;
* 512K of Shared System &amp;amp; Video RAM&lt;br /&gt;
* 256k of flash&lt;br /&gt;
* 256k of cartridge ram/rom &lt;br /&gt;
* TinyVICKY Graphic Chip (CFP9599)&lt;br /&gt;
* Port for connecting FNX4N4S, which can be used to connect Atari-Style Joysticks or NES/SNES gamepads&lt;br /&gt;
* 1x IEC Port to interface to Commodore Drives&lt;br /&gt;
* SID sound chip&lt;br /&gt;
&lt;br /&gt;
It shares many similarities to the [[F256JR]] and programs may straightforwardly run on both.&lt;br /&gt;
&lt;br /&gt;
The most common variety of the F256k uses the 6502 CPU. That said, the 65816 CPU can also be installed.&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_Secondpass.6-819x1024.png|400px]]&lt;br /&gt;
&lt;br /&gt;
= Ports and connectors =&lt;br /&gt;
&lt;br /&gt;
The back of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_rear_connectors.PNG]]&lt;br /&gt;
&lt;br /&gt;
* '''Power Switch''' is a toggle-style switch to turn the unit off and on.&lt;br /&gt;
* '''Reset Button''' reboots the system, with values in RAM persisting. If RAM has been modified using the debug interface, it stays modified.&lt;br /&gt;
* '''Power Jack''' is for plugging in A/C power. Use, for example, a +12V or +9V with 2.5mm Barrel connector.&lt;br /&gt;
* '''USB Debug''' is for connection to a debug host computer, debugging F256k as a target, for example using a mini USB to USB A cable.&lt;br /&gt;
* '''PS/2''' can be used for connecting external keyboard and/or mouse.&lt;br /&gt;
* '''FNX4N4S Adapter''' provides connections to gamepads (e.g., SNES-style game controller) through the FNX4N4S adapter.&lt;br /&gt;
* '''IEC''' provides connectivity to Commodore-compatible devices that use serial interface&lt;br /&gt;
* '''DVI''' is for connecting a display.&lt;br /&gt;
* '''RS-232''' provides a standard RS-232 serial interface.&lt;br /&gt;
* '''Headphones''' is a standard 3.5mm headphone jack.&lt;br /&gt;
* '''Audio Line Out''' provides stereo audio output.&lt;br /&gt;
&lt;br /&gt;
= Switches =&lt;br /&gt;
The bottom of the unit looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:f256k_dip_switches.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
There are eight DIP switches, with different interpretations depending on whether a kernel is present on the system. &lt;br /&gt;
If a kernel is present on the system, as the unit is shipped with, these switches are:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - Graphics resolution controls&lt;br /&gt;
* [6] - Not used&lt;br /&gt;
* [5] - Not used&lt;br /&gt;
* [4] - On: Feather Board installed (ESP8266)&lt;br /&gt;
* [3] - On: Enable SLIP Base Networking&lt;br /&gt;
* [2] - Reserved&lt;br /&gt;
* [1] - On: Enable Boot from RAM, off means it will boot from flash&lt;br /&gt;
&lt;br /&gt;
If a kernel is not present on the system, these switches can be used as desired:&lt;br /&gt;
* [8] - On: Enable GAMMA correction&lt;br /&gt;
* [7] - USER2&lt;br /&gt;
* [6] - USER1&lt;br /&gt;
* [5] - USER0&lt;br /&gt;
* [4] - BOOT Mode3&lt;br /&gt;
* [3] - BOOT Mode2&lt;br /&gt;
* [2] - BOOT Mode1&lt;br /&gt;
* [1] - BOOT Mode0&lt;br /&gt;
&lt;br /&gt;
= Boot =&lt;br /&gt;
To start the machine, ensure A/C power is plugged in and flip the power switch. The exact boot behavior depends on the &amp;quot;Boot from RAM&amp;quot; DIP switch on the bottom.&lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''off''' and a kernel is used, the kernel will search the 48K of memory for a pre-loaded kernel binary. &lt;br /&gt;
&lt;br /&gt;
If the DIP1 &amp;quot;Boot from RAM&amp;quot; switch is '''on''', then control is transferred to the reset vector entrypoint located at offset $FFFC.&lt;br /&gt;
&lt;br /&gt;
Switching DIP1 to 'on' is useful for developer convenience and testing code. For those using the machine outside of a development-style environment, it's more likely the switch will be 'off'.&lt;br /&gt;
&lt;br /&gt;
= Kernels =&lt;br /&gt;
There are three kernels for the F256k.&lt;br /&gt;
* [[The TinyCore MicroKernel]] (ships with the unit)&lt;br /&gt;
* [[OpenKERNAL]] (for those wishing to run software written for the CBM KERNAL)&lt;br /&gt;
* [https://github.com/ghackwrench/FoenixKERNAL FoenixKERNAL], an open source, CBM-style layer also compatible with software written for Commodore 64 KERNAL&lt;/div&gt;</summary>
		<author><name>HaydenKale</name></author>
		
	</entry>
</feed>