<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.c256foenix.com/index.php?action=history&amp;feed=atom&amp;title=Startup_code</id>
	<title>Startup code - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.c256foenix.com/index.php?action=history&amp;feed=atom&amp;title=Startup_code"/>
	<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Startup_code&amp;action=history"/>
	<updated>2026-05-30T17:59:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Startup_code&amp;diff=375&amp;oldid=prev</id>
		<title>Bzuidgeest at 19:45, 23 February 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Startup_code&amp;diff=375&amp;oldid=prev"/>
		<updated>2020-02-23T19:45:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:45, 23 February 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The startup code==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The startup code==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I cannot add the asm code as a file to the wiki. So I pasted it below. I hope the it survives the wiki formatting.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I cannot add the asm code as a file to the wiki. So I pasted it below. I hope the it survives the wiki formatting&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. This code was taken from the WDC original and the edits on that made  by mikebgeek&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bzuidgeest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Startup_code&amp;diff=374&amp;oldid=prev</id>
		<title>Bzuidgeest at 19:42, 23 February 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Startup_code&amp;diff=374&amp;oldid=prev"/>
		<updated>2020-02-23T19:42:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:42, 23 February 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== The startup code&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The startup code&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;I cannot add the asm code as a file to the wiki. So I pasted it below. I hope the it survives the wiki formatting. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; File: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;WDC_CStartup_816&lt;/del&gt;.asm&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; File: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;fxloader&lt;/ins&gt;.asm&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; 05/14/2004&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; 05/14/2004&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bzuidgeest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Startup_code&amp;diff=373&amp;oldid=prev</id>
		<title>Bzuidgeest: Created page with &quot;== The startup code  &lt;pre&gt; ; File: WDC_CStartup_816.asm ; 05/14/2004       PW 128         ;Page Width (# of char/line)       PL 60          ;Page Length for HP Laser      INCL...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Startup_code&amp;diff=373&amp;oldid=prev"/>
		<updated>2020-02-23T19:40:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== The startup code  &amp;lt;pre&amp;gt; ; File: WDC_CStartup_816.asm ; 05/14/2004       PW 128         ;Page Width (# of char/line)       PL 60          ;Page Length for HP Laser      INCL...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== The startup code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; File: WDC_CStartup_816.asm&lt;br /&gt;
; 05/14/2004&lt;br /&gt;
&lt;br /&gt;
     PW 128         ;Page Width (# of char/line) &lt;br /&gt;
     PL 60          ;Page Length for HP Laser&lt;br /&gt;
     INCLIST ON     ;Add Include files in Listing&lt;br /&gt;
&lt;br /&gt;
				;*********************************************&lt;br /&gt;
				;Test for Valid Processor defined in -D option&lt;br /&gt;
				;*********************************************&lt;br /&gt;
	IF	USING_265&lt;br /&gt;
	ELSEIF	USING_816&lt;br /&gt;
	ELSEIF	USING_CDC16F &lt;br /&gt;
	ELSE&lt;br /&gt;
		EXIT         &amp;quot;Not Valid Processor: Use -DUSING_816, etc. ! ! ! ! ! ! ! ! ! ! ! !&amp;quot;&lt;br /&gt;
	ENDIF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
				;*********************************************&lt;br /&gt;
				;Test for Valid 'Model' type defined in -D option&lt;br /&gt;
				;*********************************************&lt;br /&gt;
	IF	SMALL&lt;br /&gt;
	ELSEIF	MEDIUM&lt;br /&gt;
	ELSEIF	COMPACT&lt;br /&gt;
	ELSEIF	LARGE&lt;br /&gt;
	ELSE&lt;br /&gt;
		EXIT         &amp;quot;Not Valid 'Model' type - SMALL, MEDIUM, COMPACT, or LARGE: Use -DSMALL, etc. ! ! ! ! ! ! ! ! ! ! ! !&amp;quot;&lt;br /&gt;
	ENDIF&lt;br /&gt;
&lt;br /&gt;
    title  &amp;quot;fxos 'C' Startup Program V 1.00 for Large Model W65C816 - fxloader.asm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; bgnpkhdr&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;  FILE_NAME: WDC_CStartup_816.asm&lt;br /&gt;
;&lt;br /&gt;
;  DATA_RIGHTS: Western Design Center and R &amp;amp; C Services Proprietary&lt;br /&gt;
;               Copyright(C) 1980-2003&lt;br /&gt;
;               All rights reserved. Reproduction in any manner, &lt;br /&gt;
;               in whole or in part, is strictly prohibited without&lt;br /&gt;
;               the prior written approval of R &amp;amp; C Services or &lt;br /&gt;
;               Western Design Center.&lt;br /&gt;
;&lt;br /&gt;
;               Information contained in this publication regarding&lt;br /&gt;
;               device applications and the like is intended through&lt;br /&gt;
;               suggestion only and may be superseded by updates.  &lt;br /&gt;
;               It is your responsibility to ensure that your application&lt;br /&gt;
;               meets with your specifications.  No representation or&lt;br /&gt;
;               warranty is given and no liability is assumed by &lt;br /&gt;
;               Western Design Center, Inc. with respect to the accuracy&lt;br /&gt;
;               or use of such information, or infringement of patents&lt;br /&gt;
;               or other intellectual property rights arising from such&lt;br /&gt;
;               use or otherwise.  Use of Western Design Center's products&lt;br /&gt;
;               as critical components in life support systems is not&lt;br /&gt;
;               authorized except with express written approval by&lt;br /&gt;
;               Western Design Center, Inc.'s.  No licenses are conveyed,&lt;br /&gt;
;               implicitly or otherwise, under any intellectual property rights.&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
;  TITLE: WDC_CStartup_816&lt;br /&gt;
;&lt;br /&gt;
;  DESCRIPTION: This File describes the WDC SDS General purpose ROM startup code.&lt;br /&gt;
;&lt;br /&gt;
;                Program Flow&lt;br /&gt;
;&lt;br /&gt;
;                First we make sure we are in native mode.&lt;br /&gt;
;                Then we set up the stack pointer.&lt;br /&gt;
;                Then we set the data bank register.&lt;br /&gt;
;                Then we copy the initialized data.&lt;br /&gt;
;                Then we clear out the uninitialized data.&lt;br /&gt;
;                Then we call main.&lt;br /&gt;
;&lt;br /&gt;
;  DEFINED FUNCTIONS:&lt;br /&gt;
;          Undefined_IRQ&lt;br /&gt;
;                   - Process a Bad Interrupt Vector - send code &amp;amp; Hang!&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
;  SPECIAL_CONSIDERATIONS:&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
;  SHARED_DATA:&lt;br /&gt;
;          None&lt;br /&gt;
;&lt;br /&gt;
;  GLOBAL_MODULES:&lt;br /&gt;
;          None&lt;br /&gt;
;&lt;br /&gt;
;  LOCAL_MODULES:&lt;br /&gt;
;          See above in &amp;quot;DEFINED FUNCTIONS&amp;quot;&lt;br /&gt;
;&lt;br /&gt;
;  AUTHOR: Jim Goodnow II&lt;br /&gt;
;&lt;br /&gt;
;  CREATION DATE: March 11,1997&lt;br /&gt;
;&lt;br /&gt;
;  REVISION HISTORY&lt;br /&gt;
;     Name           Date         Description&lt;br /&gt;
;     ------------   ----------   ------------------------------------------------&lt;br /&gt;
;     R. Greenthal   10/07/2003   1.01 Initial&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
; NOTE:&lt;br /&gt;
;    Change the lines for each version - current version is 1.01&lt;br /&gt;
;    See - &lt;br /&gt;
;         title  &amp;quot;WDC 'C' Startup Program V 1.01 for Large Model W65C816 - WDC_CStartup_816.asm&amp;quot;&lt;br /&gt;
;&lt;br /&gt;
;&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;endpkhdr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                             Include Files&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;None&lt;br /&gt;
&lt;br /&gt;
; Set 8-bit accumulator&lt;br /&gt;
setas   .macro&lt;br /&gt;
        SEP #$20        ; set A short &lt;br /&gt;
        LONGA OFF&lt;br /&gt;
        .endm&lt;br /&gt;
                &lt;br /&gt;
; Set 16-bit accumulator&lt;br /&gt;
setal   .macro&lt;br /&gt;
        REP #$20        ; set A long &lt;br /&gt;
        LONGA ON&lt;br /&gt;
        .endm&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                              Global Modules&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;None&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                              External Modules&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;None&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                              External Variables&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                               Local Constants&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;	.page&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                          RAM Section&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        sttl &amp;quot;WDC_CStartup_816 Code&amp;quot;&lt;br /&gt;
	.page&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;                    WDC_CStartup_816 Code Section&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
&lt;br /&gt;
****************************************************************&lt;br /&gt;
*                                                              *&lt;br /&gt;
*   Define a special section in case most of the               *&lt;br /&gt;
*      code is not in bank 0.                                  *&lt;br /&gt;
*                                                              *&lt;br /&gt;
****************************************************************&lt;br /&gt;
;           Large   Model Function Calls use module Function_Name  and xdef ~~Function_Name&lt;br /&gt;
&lt;br /&gt;
STACK   EQU   $EF00     ;CHANGE THIS FOR YOUR SYSTEM&lt;br /&gt;
&lt;br /&gt;
STARTUP SECTION OFFSET $7D00&lt;br /&gt;
&lt;br /&gt;
~~START:&lt;br /&gt;
&lt;br /&gt;
START:&lt;br /&gt;
	SEI&lt;br /&gt;
        CLC                ;clear carry&lt;br /&gt;
        XCE                ;clear emulation-Now in Native 16 bit Mode&lt;br /&gt;
        REP   #$38         ;16 bit registers and Clear Decimal mode&lt;br /&gt;
        LONGI ON&lt;br /&gt;
        LONGA ON&lt;br /&gt;
        LDA   #STACK       ;get the stack address&lt;br /&gt;
        TCS                ;and set the stack to it&lt;br /&gt;
&lt;br /&gt;
****************************************************************&lt;br /&gt;
*                                                              *&lt;br /&gt;
*   Set up the data bank register. We assume that the data     *&lt;br /&gt;
*       section is where we want to point at.                  *&lt;br /&gt;
*                                                              *&lt;br /&gt;
****************************************************************&lt;br /&gt;
&lt;br /&gt;
        SEP   #$20         ;8 bit accum&lt;br /&gt;
        LONGA OFF&lt;br /&gt;
&lt;br /&gt;
        LDA   #^_BEG_DATA  ;get bank of data&lt;br /&gt;
        PHA&lt;br /&gt;
        PLB                ;set data bank register&lt;br /&gt;
        REP   #$20         ;back to 16 bit mode&lt;br /&gt;
        LONGA ON&lt;br /&gt;
&lt;br /&gt;
****************************************************************&lt;br /&gt;
*                                                              *&lt;br /&gt;
*    Next, we want to copy the initialized data from           *&lt;br /&gt;
*      ROM to RAM.                                             *&lt;br /&gt;
*                                                              *&lt;br /&gt;
****************************************************************&lt;br /&gt;
&lt;br /&gt;
        LDA   #_END_DATA-_BEG_DATA ;number of bytes to copy&lt;br /&gt;
        BEQ   SKIP         ;if none, just skip&lt;br /&gt;
        DEC   A            ;less one for MVN instruction&lt;br /&gt;
        LDX   #&amp;lt;_ROM_BEG_DATA ;get source into X&lt;br /&gt;
        LDY   #&amp;lt;_BEG_DATA  ;get dest into Y&lt;br /&gt;
        MVN   #^_ROM_BEG_DATA,#^_BEG_DATA ;copy bytes&lt;br /&gt;
SKIP:&lt;br /&gt;
&lt;br /&gt;
****************************************************************&lt;br /&gt;
*                                                              *&lt;br /&gt;
*   Now, clear out the uninitialized data area.                *&lt;br /&gt;
*    We assume that it is in the same bank as DATA.            *&lt;br /&gt;
*                                                              *&lt;br /&gt;
****************************************************************&lt;br /&gt;
&lt;br /&gt;
        LDX   #_END_UDATA-_BEG_UDATA  ;get number of bytes to clear&lt;br /&gt;
        BEQ   DONE         ;nothing to do&lt;br /&gt;
        LDA   #0           ;get a zero for storing&lt;br /&gt;
        SEP   #$20         ;do byte at a time&lt;br /&gt;
        LDY   #_BEG_UDATA  ;get beginning of zeros&lt;br /&gt;
&lt;br /&gt;
LOOP    STA   |0,Y         ;clear memory&lt;br /&gt;
        INY                ;bump pointer&lt;br /&gt;
        DEX                ;decrement count&lt;br /&gt;
        BNE   LOOP         ;continue till done&lt;br /&gt;
        REP   #$20         ;16 bit memory reg&lt;br /&gt;
DONE:&lt;br /&gt;
&lt;br /&gt;
****************************************************************&lt;br /&gt;
*                                                              *&lt;br /&gt;
*   Finally, transfer control to the real program.             *&lt;br /&gt;
*                                                              *&lt;br /&gt;
****************************************************************&lt;br /&gt;
;           Small   Model Function Calls use module Function_Name  and xdef __Function_Name&lt;br /&gt;
;           Medium  Model Function Calls use module Function_Name  and xdef ~_Function_Name&lt;br /&gt;
;           Large   Model Function Calls use module Function_Name  and xdef ~~Function_Name&lt;br /&gt;
;           Compact Model Function Calls use module Function_Name  and xdef _~Function_Name		&lt;br /&gt;
		&lt;br /&gt;
		NOP&lt;br /&gt;
		NOP&lt;br /&gt;
&lt;br /&gt;
		XREF  ~~main      ;change MYSTART to yours&lt;br /&gt;
        JSL   ~~main      ;long jump in case not bank 0&lt;br /&gt;
&lt;br /&gt;
	XDEF ~~_exit&lt;br /&gt;
~~_exit:&lt;br /&gt;
        BRK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        sttl &amp;quot;WDC_CStartup_816 IRQ - Interrupt Handler Code&amp;quot;&lt;br /&gt;
	.page&lt;br /&gt;
&lt;br /&gt;
;***************************************************************&lt;br /&gt;
;                                                              *&lt;br /&gt;
;   Example of transfering control to the real Interrupt       *&lt;br /&gt;
;    Handler written in 'C'. Note: save all the registers      *&lt;br /&gt;
;                                                              *&lt;br /&gt;
;***************************************************************&lt;br /&gt;
		XDEF	IRQ&lt;br /&gt;
&lt;br /&gt;
IRQ:	&lt;br /&gt;
		&lt;br /&gt;
		setal 	&lt;br /&gt;
		;Example of needing to read/write to data in another data bank&lt;br /&gt;
&lt;br /&gt;
		phb		; save Data Bank&lt;br /&gt;
		phd		; save Direct Page Register&lt;br /&gt;
		pha&lt;br /&gt;
		phx&lt;br /&gt;
		phy&lt;br /&gt;
&lt;br /&gt;
		setas&lt;br /&gt;
&lt;br /&gt;
		;LDA #'A'&lt;br /&gt;
		;STA &amp;gt;$AFA000&lt;br /&gt;
&lt;br /&gt;
		setal&lt;br /&gt;
		XREF	~~IRQHandler&lt;br /&gt;
		jsl		~~IRQHandler&lt;br /&gt;
&lt;br /&gt;
		;setas&lt;br /&gt;
		;LDA #'B'&lt;br /&gt;
		;STA &amp;gt;$AFA000&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
		setal&lt;br /&gt;
		&lt;br /&gt;
		ply&lt;br /&gt;
		plx&lt;br /&gt;
		pla&lt;br /&gt;
		pld		; restore Direct Page Reg&lt;br /&gt;
		plb		; Restore Data Bank&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
		RTI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NMI:&lt;br /&gt;
		RTI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BRK:	&lt;br /&gt;
&lt;br /&gt;
		setal 	&lt;br /&gt;
		;Example of needing to read/write to data in another data bank&lt;br /&gt;
&lt;br /&gt;
		phb		; save Data Bank&lt;br /&gt;
		phd		; save Direct Page Register&lt;br /&gt;
		pha&lt;br /&gt;
		phx&lt;br /&gt;
		phy&lt;br /&gt;
&lt;br /&gt;
		setas&lt;br /&gt;
&lt;br /&gt;
		setal&lt;br /&gt;
		XREF	~~BRKHandler&lt;br /&gt;
		jsl		~~BRKHandler&lt;br /&gt;
&lt;br /&gt;
		setal&lt;br /&gt;
		&lt;br /&gt;
		ply&lt;br /&gt;
		plx&lt;br /&gt;
		pla&lt;br /&gt;
		pld		; restore Direct Page Reg&lt;br /&gt;
		plb		; Restore Data Bank&lt;br /&gt;
&lt;br /&gt;
		RTI&lt;br /&gt;
		&lt;br /&gt;
COP:	&lt;br /&gt;
&lt;br /&gt;
		setal 	&lt;br /&gt;
		;Example of needing to read/write to data in another data bank&lt;br /&gt;
&lt;br /&gt;
		phb		; save Data Bank&lt;br /&gt;
		phd		; save Direct Page Register&lt;br /&gt;
		pha&lt;br /&gt;
		phx&lt;br /&gt;
		phy&lt;br /&gt;
&lt;br /&gt;
		setas&lt;br /&gt;
&lt;br /&gt;
		setal&lt;br /&gt;
		XREF	~~COPHandler&lt;br /&gt;
		jsl		~~COPHandler&lt;br /&gt;
&lt;br /&gt;
		setal&lt;br /&gt;
		&lt;br /&gt;
		ply&lt;br /&gt;
		plx&lt;br /&gt;
		pla&lt;br /&gt;
		pld		; restore Direct Page Reg&lt;br /&gt;
		plb		; Restore Data Bank&lt;br /&gt;
&lt;br /&gt;
		RTI&lt;br /&gt;
;************************************************&lt;br /&gt;
; Bad Vectors&lt;br /&gt;
;************************************************&lt;br /&gt;
&lt;br /&gt;
Undefined_IRQ:&lt;br /&gt;
		nop&lt;br /&gt;
		bra Undefined_IRQ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;WDCMON_START	EQU	$7E00&lt;br /&gt;
;ROMSPACE EQU WDCMON_START-*  ;gives space left in the ROM BEFORE TABLES;&lt;br /&gt;
;	IF ROMSPACE&amp;lt;0&lt;br /&gt;
		;EXIT         &amp;quot;Not Enough Memory for WDC_Cstartup_02.ASM - bumping into WDCMON! ! ! ! ! ! ! ! ! ! ! !&amp;quot;&lt;br /&gt;
	;ENDIF&lt;br /&gt;
&lt;br /&gt;
;        ENDS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        XREF  _BEG_DATA&lt;br /&gt;
        XREF  _END_DATA&lt;br /&gt;
        XREF  _ROM_BEG_DATA&lt;br /&gt;
        XREF  _BEG_UDATA&lt;br /&gt;
        XREF  _END_UDATA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	ends&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        sttl &amp;quot;WDC_CStartup_816 Shadow Vector Defines&amp;quot;&lt;br /&gt;
	.page&lt;br /&gt;
&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;        $7E00 - $7FFF New Expanded Shadow Vector Section Definitions&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
&lt;br /&gt;
;	hvectors:	section		; the real reset and interrupt vectors&lt;br /&gt;
;&lt;br /&gt;
;					;65C816 Vectors&lt;br /&gt;
;	org	$18ffe4&lt;br /&gt;
;					;Status bit E = 0 (Native mode);&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFE4 - COP(816)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFE6 - BRK(816)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFE8 - ABORT(816)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFEA - NMI(816)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFEC - IRQRVD(816)&lt;br /&gt;
;		dw	IRQ		; $FFEE - IRQ(816)&lt;br /&gt;
;					;Status bit E = 1 (Emulation mode)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFF0 - IRQRVD(816)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFF2 - IRQRVD(816)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFF4 - COP(816Emulation)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFF6 - IRQRVD(816Emulation)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFF8 - ABORT(816Emulation)&lt;br /&gt;
;&lt;br /&gt;
;					; Common Vectors for all CPUs&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFFA -  NMIRQ (ALL)&lt;br /&gt;
;		dw	START		; $FFFC -  RESET (ALL)&lt;br /&gt;
;		dw	Undefined_IRQ	; $FFFE -  IRQBRK (ALL)&lt;br /&gt;
;&lt;br /&gt;
;		ends&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;
*   This section defines the interrupt and reset vectors.      *&lt;br /&gt;
*      The reset vectors always start at FFE4 in bank 0.       *&lt;br /&gt;
*      Since the vectors are only 16 bits, they must point     *&lt;br /&gt;
*      into bank 0. Replace the &amp;quot;Undefined_IRQ&amp;quot; with any       *&lt;br /&gt;
*      routines that handle that interrupt.                    *&lt;br /&gt;
*                                                              *&lt;br /&gt;
****************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	vectors:	section		; the real reset and interrupt vectors&lt;br /&gt;
&lt;br /&gt;
					;65C816 Vectors&lt;br /&gt;
		org	$ffe4&lt;br /&gt;
					;Status bit E = 0 (Native mode)&lt;br /&gt;
		dw	COP				; $FFE4 - COP(816)&lt;br /&gt;
		dw	BRK		     	; $FFE6 - BRK(816)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFE8 - ABORT(816)&lt;br /&gt;
		dw	NMI				; $FFEA - NMI(816)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFEC - IRQRVD(816)&lt;br /&gt;
		dw	IRQ		; $FFEE - IRQ(816)&lt;br /&gt;
					;Status bit E = 1 (Emulation mode)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFF0 - IRQRVD(816)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFF2 - IRQRVD(816)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFF4 - COP(816Emulation)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFF6 - IRQRVD(816Emulation)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFF8 - ABORT(816Emulation)&lt;br /&gt;
&lt;br /&gt;
					; Common Vectors for all CPUs&lt;br /&gt;
		dw	Undefined_IRQ	; $FFFA -  NMIRQ (ALL)&lt;br /&gt;
		dw	START		; $FFFC -  RESET (ALL)&lt;br /&gt;
		dw	Undefined_IRQ	; $FFFE -  IRQBRK (ALL)&lt;br /&gt;
&lt;br /&gt;
		ends&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	        end&lt;br /&gt;
&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;	End of WDC_CSTARTUP_C.ASM&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bzuidgeest</name></author>
		
	</entry>
</feed>