<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://f256wiki.wildbitscomputing.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=47.25.25.61</id>
	<title>Foenix F256 / Wildbits/K2 Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://f256wiki.wildbitscomputing.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=47.25.25.61"/>
	<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Special:Contributions/47.25.25.61"/>
	<updated>2026-04-16T20:44:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=FNX6809_Overview&amp;diff=414</id>
		<title>FNX6809 Overview</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=FNX6809_Overview&amp;diff=414"/>
		<updated>2024-06-18T14:26:58Z</updated>

		<summary type="html">&lt;p&gt;47.25.25.61: /* FNX6809 for F256Jr &amp;amp; F256K */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FNX6809 for F256Jr &amp;amp; F256K ==&lt;br /&gt;
&lt;br /&gt;
[[File:FNX6809_Transparent_SideView.png|thumb|FNX6809 CPU Module]]&lt;br /&gt;
[[File:FNX6809_Adapter.jpeg|thumb|FNX6809 FPGA Flash Adapter]]&lt;br /&gt;
&lt;br /&gt;
The FNX6809 is a 40 pin dual inline package (DIP) module that is a cycle accurate implementation of the Motorola MC6809 CPU, working @ 3.3V and capable of running @ 6.29MHz on the F256Jr or the F256K.&lt;br /&gt;
&lt;br /&gt;
The FNX6809 also differs from a real Motorola MC6809 CPU in that it has the 65C02 pin-out.&lt;br /&gt;
&lt;br /&gt;
For these reasons, it is not designed (at least for now) to be a direct replacement for an MC6809.&lt;br /&gt;
&lt;br /&gt;
An adapter is supplied with the FNX6809 module to be enable reflashing the on-board FPGA, if ever needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &lt;br /&gt;
* No software is written for the unit to support the processor at this time (but see [[OS-9]]). It is meant for those Mavericks who are ready to take it on without any safety nets. There is a version of Calypsi that supports now if anybody wants to use it.&lt;br /&gt;
* Keep in mind that you will need to upload a new load for the FPGA on the F256Jr or F256K to support it, so make sure you equip yourself with a USB Blaster.&lt;br /&gt;
* There is a nice web-based 6809 emulator [http://6809.uk you can try here.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:FNX6809_JTAG_Adapter_Position.jpg|thumb|left|FNX6809 JTAG Adapter Correct Orientation]]&lt;/div&gt;</summary>
		<author><name>47.25.25.61</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=OS-9_Assembly_Code_Development&amp;diff=413</id>
		<title>OS-9 Assembly Code Development</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=OS-9_Assembly_Code_Development&amp;diff=413"/>
		<updated>2024-06-18T14:21:13Z</updated>

		<summary type="html">&lt;p&gt;47.25.25.61: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Each process in NitrOS-9 is allocated its own 64K address space.  When run, the program object code is loaded into the end of the memory space, and the variables and data structures are loaded into the beginning.  In addition, NitrOS-9 keeps an separate per-process MMU table (DAT Image), so you must use &amp;lt;code&amp;gt;F$MapBlk&amp;lt;/code&amp;gt; to map and &amp;lt;code&amp;gt;F$ClrBlk&amp;lt;/code&amp;gt; to unmap 8K blocks in your process&#039; address space. The operating system has its own 64K address space as well.  &lt;br /&gt;
&lt;br /&gt;
When a new process is created, registers U, Y, DP and SP are set with U = start of data area, Y = end of data area, DP = page # of beginning page, SP = end of data area + 1.   Each process includes its own execution and data directories, along with &amp;lt;code&amp;gt;std in&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;std out&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;std err&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Memory and DAT Image ===&lt;br /&gt;
&amp;lt;code&amp;gt;mmap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pmap&amp;lt;/code&amp;gt; output the current status of the memory in the system. &amp;lt;code&amp;gt;mmap&amp;lt;/code&amp;gt; shows which memory blocks are currently in use.  &amp;lt;code&amp;gt;pmap&amp;lt;/code&amp;gt; shows the blocks that are mapped in the DAT Image for a particular process.&lt;br /&gt;
[[File:Mmappmap.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Program and Data Module Structure ==&lt;br /&gt;
&lt;br /&gt;
There are 9 different types of modules in 4 possible languages:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; |Module Types&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Language&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Code&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Module Type&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;Code&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Language&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$1x&lt;br /&gt;
|Program Module&lt;br /&gt;
|Prgm&lt;br /&gt;
|&lt;br /&gt;
|$x0&lt;br /&gt;
|Data (non-executable)&lt;br /&gt;
|-&lt;br /&gt;
|$2x&lt;br /&gt;
|Subroutine Module&lt;br /&gt;
|Sbrtn&lt;br /&gt;
|&lt;br /&gt;
|$x1&lt;br /&gt;
|6809 Object Code&lt;br /&gt;
|-&lt;br /&gt;
|$3x&lt;br /&gt;
|Multi-module&lt;br /&gt;
|Multi&lt;br /&gt;
|&lt;br /&gt;
|$x2&lt;br /&gt;
|BASIC09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|$4x&lt;br /&gt;
|Data Module&lt;br /&gt;
|Data&lt;br /&gt;
|&lt;br /&gt;
|$x3&lt;br /&gt;
|PASCAL I-Code&lt;br /&gt;
|-&lt;br /&gt;
|$5x-$Bx&lt;br /&gt;
|User-definable module&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|$x4-$xF&lt;br /&gt;
|Reserved for Future Use&lt;br /&gt;
|-&lt;br /&gt;
|$Cx&lt;br /&gt;
|OS-9 System Module&lt;br /&gt;
|Systm&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|$Dx&lt;br /&gt;
|OS-9 File Manager Module&lt;br /&gt;
|FlMgr&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|$Ex&lt;br /&gt;
|OS-9 Device Driver Module&lt;br /&gt;
|Drivr&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|$Fx&lt;br /&gt;
|OS-9 Device Descriptor Module&lt;br /&gt;
|Devic&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
The two most used will be Program Modules and Data Modules.&lt;br /&gt;
&lt;br /&gt;
=== Program Modules ===&lt;br /&gt;
&lt;br /&gt;
=== Data Modules ===&lt;br /&gt;
Here is a portion of the font module, which is a data module in NitrOS-9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;               nam       font&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;               ttl       F256 font&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;               use       defsfile&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tylg           set       Data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;atrv           set       ReEnt+rev&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rev            set       $01&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;               mod       eom,name,tylg,atrv,start,0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;name           fcs       /font/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;L0000          fcb   $00,$00,$00,$00,$00,$00,$00,$00 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;L0008          fcb   $7C,$82,$AA,$82,$BA,$92,$82,$7C &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;More data here&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;               emod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eom            equ       *&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;               end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Position Independent Code ==&lt;br /&gt;
All code in NitrOS-9 must be position independent.  Addresses are not known until a program module is loaded and executed.  All addressing must be &amp;quot;program counter relative addressing&amp;quot;.  All branch and long branch instructions are program counter relative. &lt;br /&gt;
&lt;br /&gt;
Rules: &lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;BRA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LBRA&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;JMP&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;BSR&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LBSR&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;JSR&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Use program counter relative indexed addressing for all load, store, arithmetic and logical instructions. &lt;br /&gt;
&lt;br /&gt;
== Accessing Variables and Data Structures ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing Table Data with PCR ==&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>47.25.25.61</name></author>
	</entry>
</feed>