Update manual

This commit is contained in:
Michael Martin 2014-05-25 01:46:17 -07:00
parent d6159faaee
commit 202977d558
69 changed files with 1645 additions and 1026 deletions

View File

@ -11,10 +11,10 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="Example: Fibonnacci Numbers"
HREF="x967.html"><LINK
HREF="x1104.html"><LINK
REL="NEXT"
TITLE="hello2.oph"
HREF="x982.html"></HEAD
HREF="x1119.html"></HEAD
><BODY
CLASS="APPENDIX"
BGCOLOR="#FFFFFF"
@ -42,7 +42,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x967.html"
HREF="x1104.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -56,7 +56,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x982.html"
HREF="x1119.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -69,7 +69,7 @@ WIDTH="100%"></DIV
CLASS="APPENDIX"
><H1
><A
NAME="AEN975"
NAME="AEN1112"
></A
>Example Programs</H1
><P
@ -135,7 +135,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x967.html"
HREF="x1104.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -153,7 +153,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x982.html"
HREF="x1119.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD

View File

@ -11,10 +11,10 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="fibonacci.oph"
HREF="x1030.html"><LINK
HREF="x1163.html"><LINK
REL="NEXT"
TITLE="Basic arguments"
HREF="x1101.html"></HEAD
HREF="x1234.html"></HEAD
><BODY
CLASS="APPENDIX"
BGCOLOR="#FFFFFF"
@ -42,7 +42,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1030.html"
HREF="x1163.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -56,7 +56,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1101.html"
HREF="x1234.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -77,7 +77,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN1036"
NAME="AEN1169"
>Command Modes</A
></H1
><P
@ -261,7 +261,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1030.html"
HREF="x1163.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -279,7 +279,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1101.html"
HREF="x1234.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD

View File

@ -37,7 +37,7 @@ NAME="AEN4"
>Michael Martin</H3
><P
CLASS="COPYRIGHT"
>Copyright &copy; 2006-2012 Michael Martin</P
>Copyright &copy; 2006-2014 Michael Martin</P
><HR></DIV
><DIV
CLASS="TOC"
@ -60,141 +60,160 @@ HREF="f10.html#AEN15"
></DT
><DT
><A
HREF="x29.html"
HREF="x30.html"
>Getting a copy of Ophis</A
></DT
><DT
><A
HREF="x41.html"
HREF="x42.html"
>About the examples</A
></DT
></DL
></DD
><DT
>I. <A
HREF="p50.html"
HREF="p51.html"
>Using the Ophis Assembler</A
></DT
><DD
><DL
><DT
><A
HREF="c55.html"
HREF="c56.html"
>The basics</A
></DT
><DD
><DL
><DT
><A
HREF="c55.html#AEN68"
HREF="c56.html#AEN69"
>A note on numeric notation</A
></DT
><DT
><A
HREF="x71.html"
HREF="x72.html"
>Producing Commodore 64 programs</A
></DT
><DT
><A
HREF="x140.html"
HREF="x141.html"
>Related commands and options</A
></DT
><DT
><A
HREF="x161.html"
HREF="x162.html"
>Writing the actual code</A
></DT
><DT
><A
HREF="x170.html"
HREF="x171.html"
>Assembling the code</A
></DT
></DL
></DD
><DT
><A
HREF="c223.html"
HREF="c236.html"
>Labels and aliases</A
></DT
><DD
><DL
><DT
><A
HREF="c223.html#AEN229"
HREF="c236.html#AEN242"
>Temporary labels</A
></DT
><DT
><A
HREF="x237.html"
HREF="x251.html"
>Anonymous labels</A
></DT
><DT
><A
HREF="x248.html"
HREF="x262.html"
>Aliasing</A
></DT
></DL
></DD
><DT
><A
HREF="c259.html"
HREF="c273.html"
>Headers, Libraries, and Macros</A
></DT
><DD
><DL
><DT
><A
HREF="c259.html#AEN263"
HREF="c273.html#AEN277"
>Header files and libraries</A
></DT
><DT
><A
HREF="x284.html"
HREF="x298.html"
>Macros</A
></DT
><DT
><A
HREF="x314.html"
HREF="x328.html"
>Example code</A
></DT
></DL
></DD
><DT
><A
HREF="c319.html"
HREF="c333.html"
>Character maps</A
></DT
><DT
><A
HREF="c353.html"
HREF="c367.html"
>Local variables and memory segments</A
></DT
><DT
><A
HREF="c395.html"
HREF="c409.html"
>Expressions</A
></DT
><DT
><A
HREF="c443.html"
HREF="c460.html"
>Advanced Memory Segments</A
></DT
><DD
><DL
><DT
><A
HREF="c443.html#AEN448"
HREF="c460.html#AEN465"
>The Problem</A
></DT
><DT
><A
HREF="x454.html"
HREF="x471.html"
>The Solution</A
></DT
></DL
></DD
><DT
><A
HREF="c489.html"
>Platform-Specific Techniques</A
></DT
><DD
><DL
><DT
><A
HREF="c489.html#AEN492"
>The Commodore 64 and VIC-20</A
></DT
><DT
><A
HREF="x476.html"
>Where to go from here</A
HREF="x606.html"
>The Nintendo Entertainment System</A
></DT
><DT
><A
HREF="x611.html"
>The Atari 2600 VCS</A
></DT
></DL
></DD
@ -202,172 +221,172 @@ HREF="x476.html"
></DD
><DT
>II. <A
HREF="p481.html"
HREF="p618.html"
>To HLL and Back</A
></DT
><DD
><DL
><DT
><A
HREF="c486.html"
HREF="c623.html"
>The Second Step</A
></DT
><DD
><DL
><DT
><A
HREF="c486.html#AEN489"
HREF="c623.html#AEN626"
>The problem</A
></DT
><DT
><A
HREF="x498.html"
HREF="x635.html"
>The solution</A
></DT
><DT
><A
HREF="x504.html"
HREF="x641.html"
>Unsigned arithmetic</A
></DT
><DT
><A
HREF="x527.html"
HREF="x664.html"
>16-bit addition and subtraction</A
></DT
><DT
><A
HREF="x537.html"
HREF="x674.html"
>16-bit comparisons</A
></DT
></DL
></DD
><DT
><A
HREF="c543.html"
HREF="c680.html"
>Structured Programming</A
></DT
><DD
><DL
><DT
><A
HREF="c543.html#AEN548"
HREF="c680.html#AEN685"
>Control constructs</A
></DT
><DT
><A
HREF="x597.html"
HREF="x734.html"
>The stack</A
></DT
><DT
><A
HREF="x603.html"
HREF="x740.html"
>Procedures and register saving</A
></DT
><DT
><A
HREF="x621.html"
HREF="x758.html"
>Variables</A
></DT
><DT
><A
HREF="x666.html"
HREF="x803.html"
>Data structures</A
></DT
><DT
><A
HREF="x719.html"
HREF="x856.html"
>A modest example: Insertion sort on linked lists</A
></DT
></DL
></DD
><DT
><A
HREF="c748.html"
HREF="c885.html"
>Pointers and Indirection</A
></DT
><DD
><DL
><DT
><A
HREF="c748.html#AEN753"
HREF="c885.html#AEN890"
>The absolute basics</A
></DT
><DT
><A
HREF="x782.html"
HREF="x919.html"
>Pointer arithmetic</A
></DT
><DT
><A
HREF="x798.html"
HREF="x935.html"
>What about Indexed Indirect?</A
></DT
><DT
><A
HREF="x805.html"
HREF="x942.html"
>Comparison with the other indexed forms</A
></DT
><DT
><A
HREF="x813.html"
HREF="x950.html"
>Conclusion</A
></DT
></DL
></DD
><DT
><A
HREF="c816.html"
HREF="c953.html"
>Functionals</A
></DT
><DD
><DL
><DT
><A
HREF="c816.html#AEN821"
HREF="c953.html#AEN958"
>Function Pointers</A
></DT
><DT
><A
HREF="x836.html"
HREF="x973.html"
>A quick digression on how subroutines work</A
></DT
><DT
><A
HREF="x855.html"
HREF="x992.html"
>Dispatch-on-type and Data-Directed Assembler</A
></DT
><DT
><A
HREF="x871.html"
HREF="x1008.html"
>VTables and Object-Oriented Assembler</A
></DT
><DT
><A
HREF="x892.html"
HREF="x1029.html"
>A final reminder</A
></DT
></DL
></DD
><DT
><A
HREF="c900.html"
HREF="c1037.html"
>Call Stacks</A
></DT
><DD
><DL
><DT
><A
HREF="c900.html#AEN904"
HREF="c1037.html#AEN1041"
>Recursion</A
></DT
><DT
><A
HREF="x915.html"
HREF="x1052.html"
>Our Goals</A
></DT
><DT
><A
HREF="x967.html"
HREF="x1104.html"
>Example: Fibonnacci Numbers</A
></DT
></DL
@ -376,14 +395,14 @@ HREF="x967.html"
></DD
><DT
><A
HREF="a975.html"
HREF="a1112.html"
>Example Programs</A
></DT
><DD
><DL
><DT
><A
HREF="a975.html#TUTOR1-SRC"
HREF="a1112.html#TUTOR1-SRC"
><TT
CLASS="FILENAME"
>hello1.oph</TT
@ -391,7 +410,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x982.html"
HREF="x1119.html"
><TT
CLASS="FILENAME"
>hello2.oph</TT
@ -399,7 +418,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x986.html"
HREF="x1123.html"
><TT
CLASS="FILENAME"
>c64-1.oph</TT
@ -407,7 +426,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x990.html"
HREF="x1127.html"
><TT
CLASS="FILENAME"
>c64kernal.oph</TT
@ -415,7 +434,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x994.html"
HREF="x1131.html"
><TT
CLASS="FILENAME"
>hello3.oph</TT
@ -423,7 +442,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x998.html"
HREF="x1135.html"
><TT
CLASS="FILENAME"
>hello4a.oph</TT
@ -431,7 +450,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1002.html"
HREF="x1139.html"
><TT
CLASS="FILENAME"
>hello4b.oph</TT
@ -439,7 +458,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1006.html"
HREF="x1143.html"
><TT
CLASS="FILENAME"
>hello4c.oph</TT
@ -447,7 +466,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1010.html"
HREF="x1147.html"
><TT
CLASS="FILENAME"
>hello5.oph</TT
@ -455,7 +474,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1014.html"
HREF="x1151.html"
><TT
CLASS="FILENAME"
>hello6.oph</TT
@ -463,15 +482,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1018.html"
><TT
CLASS="FILENAME"
>c64_0.oph</TT
></A
></DT
><DT
><A
HREF="x1022.html"
HREF="x1155.html"
><TT
CLASS="FILENAME"
>hello7.oph</TT
@ -479,7 +490,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1026.html"
HREF="x1159.html"
><TT
CLASS="FILENAME"
>structuredemo.oph</TT
@ -487,7 +498,7 @@ CLASS="FILENAME"
></DT
><DT
><A
HREF="x1030.html"
HREF="x1163.html"
><TT
CLASS="FILENAME"
>fibonacci.oph</TT
@ -497,101 +508,101 @@ CLASS="FILENAME"
></DD
><DT
><A
HREF="a1034.html"
HREF="a1167.html"
>Ophis Command Reference</A
></DT
><DD
><DL
><DT
><A
HREF="a1034.html#AEN1036"
HREF="a1167.html#AEN1169"
>Command Modes</A
></DT
><DT
><A
HREF="x1101.html"
HREF="x1234.html"
>Basic arguments</A
></DT
><DD
><DL
><DT
><A
HREF="x1101.html#AEN1104"
HREF="x1234.html#AEN1237"
>Numeric types</A
></DT
><DT
><A
HREF="x1101.html#AEN1127"
HREF="x1234.html#AEN1260"
>Label types</A
></DT
><DT
><A
HREF="x1101.html#AEN1140"
HREF="x1234.html#AEN1273"
>String types</A
></DT
></DL
></DD
><DT
><A
HREF="x1149.html"
HREF="x1282.html"
>Compound Arguments</A
></DT
><DT
><A
HREF="x1176.html"
HREF="x1309.html"
>Memory Model</A
></DT
><DD
><DL
><DT
><A
HREF="x1176.html#AEN1179"
HREF="x1309.html#AEN1312"
>Basic PC tracking</A
></DT
><DT
><A
HREF="x1176.html#AEN1188"
HREF="x1309.html#AEN1321"
>Basic Segmentation simulation</A
></DT
><DT
><A
HREF="x1176.html#AEN1212"
HREF="x1309.html#AEN1345"
>General Segmentation Simulation</A
></DT
></DL
></DD
><DT
><A
HREF="x1221.html"
HREF="x1354.html"
>Macros</A
></DT
><DD
><DL
><DT
><A
HREF="x1221.html#AEN1225"
HREF="x1354.html#AEN1358"
>Defining Macros</A
></DT
><DT
><A
HREF="x1221.html#AEN1231"
HREF="x1354.html#AEN1364"
>Invoking Macros</A
></DT
><DT
><A
HREF="x1221.html#AEN1239"
HREF="x1354.html#AEN1372"
>Passing Arguments to Macros</A
></DT
><DT
><A
HREF="x1221.html#AEN1249"
HREF="x1354.html#AEN1382"
>Features and Restrictions of the Ophis Macro Model</A
></DT
></DL
></DD
><DT
><A
HREF="x1261.html"
HREF="x1394.html"
>Assembler directives</A
></DT
></DL

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="To HLL and Back"
HREF="p481.html"><LINK
HREF="p618.html"><LINK
REL="PREVIOUS"
TITLE="A final reminder"
HREF="x892.html"><LINK
HREF="x1029.html"><LINK
REL="NEXT"
TITLE="Our Goals"
HREF="x915.html"></HEAD
HREF="x1052.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x892.html"
HREF="x1029.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x915.html"
HREF="x1052.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -72,7 +72,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="AEN900"
NAME="AEN1037"
></A
>Call Stacks</H1
><P
@ -82,7 +82,7 @@ NAME="AEN900"
end up stomping on its previous values, and everything will be
hideously scrambled. Various workarounds for this are covered
in <A
HREF="c543.html"
HREF="c680.html"
>the Chapter called <I
>Structured Programming</I
></A
@ -92,7 +92,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN904"
NAME="AEN1041"
>Recursion</A
></H1
><P
@ -127,7 +127,7 @@ CLASS="LITERAL"
</P
><P
> As we saw in <A
HREF="c748.html"
HREF="c885.html"
>the Chapter called <I
>Pointers and Indirection</I
></A
@ -158,7 +158,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x892.html"
HREF="x1029.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -176,7 +176,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x915.html"
HREF="x1052.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -192,7 +192,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Assembling the code"
HREF="x170.html"><LINK
HREF="x171.html"><LINK
REL="NEXT"
TITLE="Anonymous labels"
HREF="x237.html"></HEAD
HREF="x251.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x170.html"
HREF="x171.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x237.html"
HREF="x251.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -72,7 +72,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="AEN223"
NAME="AEN236"
></A
>Labels and aliases</H1
><P
@ -99,7 +99,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN229"
NAME="AEN242"
>Temporary labels</A
></H1
><P
@ -146,6 +146,12 @@ _next: .word 0 ; End of program
></TD
></TR
></TABLE
><P
> It's possible to have multiple temporary labels with the same
name in different parts of the code. If you create a label map
in those cases, you will have to look at the sourcefile location
to distinguish them.
</P
></DIV
></DIV
><DIV
@ -164,7 +170,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x170.html"
HREF="x171.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -182,7 +188,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x237.html"
HREF="x251.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -198,7 +204,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Aliasing"
HREF="x248.html"><LINK
HREF="x262.html"><LINK
REL="NEXT"
TITLE="Macros"
HREF="x284.html"></HEAD
HREF="x298.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x248.html"
HREF="x262.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x284.html"
HREF="x298.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -90,7 +90,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN263"
NAME="AEN277"
>Header files and libraries</A
></H1
><P
@ -158,14 +158,14 @@ CLASS="LITERAL"
> Since there have been no interesting changes to the prelude, and
the KERNAL values are standard, we do not reproduce them here.
(The files in question are <A
HREF="x986.html"
HREF="x1123.html"
><I
><I
>c64-1.oph</I
></I
></A
> and <A
HREF="x990.html"
HREF="x1127.html"
><I
><I
>c64kernal.oph</I
@ -200,7 +200,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x248.html"
HREF="x262.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -218,7 +218,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x284.html"
HREF="x298.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -234,7 +234,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Example code"
HREF="x314.html"><LINK
HREF="x328.html"><LINK
REL="NEXT"
TITLE="Local variables and memory segments"
HREF="c353.html"></HEAD
HREF="c367.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x314.html"
HREF="x328.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c353.html"
HREF="c367.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -93,14 +93,14 @@ CLASS="USERINPUT"
><P
> There actually are better ways of getting a time-delay on the
Commodore 64; we'll deal with those in <A
HREF="c353.html"
HREF="c367.html"
>the Chapter called <I
>Local variables and memory segments</I
></A
>.
As a result, there isn't really a lot to discuss here. The later
tutorials will be building off of <A
HREF="x998.html"
HREF="x1135.html"
><I
><I
>hello4a.oph</I
@ -124,13 +124,13 @@ CLASS="LITERAL"
>lower'case</TT
> aliases back
in <A
HREF="c259.html"
HREF="c273.html"
>the Chapter called <I
>Headers, Libraries, and Macros</I
></A
> as part of the
standard <A
HREF="x990.html"
HREF="x1127.html"
><I
><I
>c64kernal.oph</I
@ -186,7 +186,7 @@ target10: .byte "Universe", 0</PRE
></TABLE
><P
> The code that does this is in <A
HREF="x1002.html"
HREF="x1139.html"
><I
><I
>hello4b.oph</I
@ -248,7 +248,7 @@ CLASS="QUOTE"
</P
><P
> The fixed code is in <A
HREF="x1006.html"
HREF="x1143.html"
><I
><I
>hello4c.oph</I
@ -288,7 +288,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x314.html"
HREF="x328.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -306,7 +306,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c353.html"
HREF="c367.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -322,7 +322,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Character maps"
HREF="c319.html"><LINK
HREF="c333.html"><LINK
REL="NEXT"
TITLE="Expressions"
HREF="c395.html"></HEAD
HREF="c409.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c319.html"
HREF="c333.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c395.html"
HREF="c409.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -77,7 +77,7 @@ NAME="CH5-LINK"
>Local variables and memory segments</H1
><P
> As mentioned in <A
HREF="c319.html"
HREF="c333.html"
>the Chapter called <I
>Character maps</I
></A
@ -331,7 +331,7 @@ CLASS="PROGRAMLISTING"
></TABLE
><P
> The final program is available as <A
HREF="x1010.html"
HREF="x1147.html"
><I
><I
>hello5.oph</I
@ -358,7 +358,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c319.html"
HREF="c333.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -376,7 +376,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c395.html"
HREF="c409.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -392,7 +392,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Local variables and memory segments"
HREF="c353.html"><LINK
HREF="c367.html"><LINK
REL="NEXT"
TITLE="Advanced Memory Segments"
HREF="c443.html"></HEAD
HREF="c460.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c353.html"
HREF="c367.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c443.html"
HREF="c460.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -72,7 +72,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="AEN395"
NAME="AEN409"
></A
>Expressions</H1
><P
@ -191,7 +191,14 @@ CLASS="PROGRAMLISTING"
CLASS="LITERAL"
>cache</TT
> once, but
can use addition to refer to any offset from it.
can use addition to refer to any offset from it.<A
NAME="AEN425"
HREF="#FTN.AEN425"
><SPAN
CLASS="footnote"
>[1]</SPAN
></A
>
</P
><P
> Ophis supports following operations, with the following precedence
@ -200,7 +207,7 @@ CLASS="LITERAL"
><DIV
CLASS="TABLE"
><A
NAME="AEN412"
NAME="AEN429"
></A
><P
><B
@ -279,7 +286,7 @@ CLASS="LITERAL"
><P
> The code for this version of the code is
in <A
HREF="x1014.html"
HREF="x1151.html"
><I
><I
>hello6.oph</I
@ -288,6 +295,41 @@ HREF="x1014.html"
>.
</P
></DIV
><H3
CLASS="FOOTNOTES"
>Notes</H3
><TABLE
BORDER="0"
CLASS="FOOTNOTES"
WIDTH="100%"
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN425"
HREF="c409.html#AEN425"
><SPAN
CLASS="footnote"
>[1]</SPAN
></A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="95%"
><P
>We
could spare ourselves some trouble here and use $fb instead of
$10, which BASIC does <I
CLASS="EMPHASIS"
>not</I
> use, but the
example is more thorough this way.</P
></TD
></TR
></TABLE
><DIV
CLASS="NAVFOOTER"
><HR
@ -304,7 +346,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c353.html"
HREF="c367.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -322,7 +364,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c443.html"
HREF="c460.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -338,7 +380,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Expressions"
HREF="c395.html"><LINK
HREF="c409.html"><LINK
REL="NEXT"
TITLE="The Solution"
HREF="x454.html"></HEAD
HREF="x471.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c395.html"
HREF="c409.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x454.html"
HREF="x471.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -72,13 +72,12 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="AEN443"
NAME="AEN460"
></A
>Advanced Memory Segments</H1
><P
> This is the last section of the Ophis tutorial. By now we've
covered the basics of every command in the assembler; in this
final installment we show the full capabilities of
> By now we've covered the basics of every command in the assembler;
in this final installment we show the full capabilities of
the <TT
CLASS="LITERAL"
>.text</TT
@ -86,14 +85,15 @@ CLASS="LITERAL"
CLASS="LITERAL"
>.data</TT
> commands
as we produce a final set of Commodore 64 header files.
as we produce a more sophisticated set of Commodore 64 header
files.
</P
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN448"
NAME="AEN465"
>The Problem</A
></H1
><P
@ -102,7 +102,7 @@ CLASS="LITERAL"
>print'str</TT
> routine
in <A
HREF="x1014.html"
HREF="x1151.html"
><I
><I
>hello6.oph</I
@ -112,7 +112,7 @@ HREF="x1014.html"
memory locations $10 and $11 directly. We'd prefer to have
symbolic names for them. This reprises our concerns back in
<A
HREF="c353.html"
HREF="c367.html"
>the Chapter called <I
>Local variables and memory segments</I
></A
@ -140,7 +140,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c395.html"
HREF="c409.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -158,7 +158,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x454.html"
HREF="x471.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -174,7 +174,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

530
book/c489.html Normal file
View File

@ -0,0 +1,530 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Platform-Specific Techniques</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="The Solution"
HREF="x471.html"><LINK
REL="NEXT"
TITLE="The Nintendo Entertainment System"
HREF="x606.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Programming with Ophis</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x471.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x606.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="AEN489"
></A
>Platform-Specific Techniques</H1
><P
> Ophis is intended to produce cross-assembled binaries that will
run in a variety of contexts. The expectation is that most users
will be writing for emulated versions of hardware from when the
6502 chip was current, and producing files either for those
emulators or for devices that will transfer the results to real
hardware. This chapter describes the support routines and examples
to make those tasks easier.
</P
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN492"
>The Commodore 64 and VIC-20</A
></H1
><P
> In a real sense, the Commodore 64 is the "native"
target platform for Ophis. It was the first platform targeted
and it's the one that has received the most additional
support. It's also one where the developer needs to take the
most care about exactly what kind of program they are
writing.
</P
><P
></P
><UL
><LI
><P
> <TT
CLASS="LITERAL"
>c64kernal.oph</TT
> actually defines no
code. It merely sets up the customary names for the KERNAL
jump table routines so that you may refer to routines
like <TT
CLASS="LITERAL"
>chrout</TT
> and <TT
CLASS="LITERAL"
>rdtim</TT
>
by name.
</P
></LI
><LI
><P
> <TT
CLASS="LITERAL"
>c64header.oph</TT
> is an absolutely minimal
C64 header program; it contains the one-line BASIC program
and nothing else. Smaller programs that do not require more
than four bytes of zero page do not need to do any
bankswitching or zero page caching and don't need any more
than this. The aliases provided
in <TT
CLASS="LITERAL"
>c64kernal.oph</TT
> may be useful, but are
not included in this header.
</P
></LI
><LI
><P
> <TT
CLASS="LITERAL"
>c64_0.oph</TT
> is suitable for larger and more
sophisticated programs. It is an enhancement of the header
file developed in the previous chapter. It stores the saved
zero page values in the RAM shadowed by the KERNAL ROM, and
it also uses a different mechanism for returning to BASIC
when done that is more robust in the face of self-modifying
programs such as those produced by self-extracting
compressed executables or onefiled multipart programs. It is
used like the other header files&#8212;just include it at
the top of your source file and use <TT
CLASS="LITERAL"
>RTS</TT
>
to end your program&#8212;but programs that use this header
file will have all of the zero page from $02-$8F and a
contiguous chunk of program RAM from $0800-$CFFF.
</P
></LI
><LI
><P
> <TT
CLASS="LITERAL"
>libbasic64.oph</TT
> is an experimental set of
macros and routines to permit the assembly programmer to
make use of the software floating point routines provided by
BASIC. It is, for obvious reasons, not compatible
with <TT
CLASS="LITERAL"
>c64_0.oph</TT
>, because it needs to make
use of BASIC's workspace and the ROM itself. If you wish to
use this file you should include it near the end of your
program.
</P
></LI
><LI
><P
> <TT
CLASS="LITERAL"
>vic20.oph</TT
> is a header that will work for
the <I
CLASS="EMPHASIS"
>unexpanded</I
> VIC-20. Memory expansion
slots change where BASIC programs load, and since these
headers load in the machine language program in as the
suffix to a BASIC program, that also changes where they are
themselves loaded. There is no trickery with bankswitching
ROMs in and out&#8212;the VIC-20 does not have enough RAM to
gain anything from these techniques.
</P
></LI
><LI
><P
> <TT
CLASS="LITERAL"
>vic20x.oph</TT
> does the same, but for a
VIC-20 with one or more memory expansions.
</P
></LI
></UL
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN520"
>Using LIBBASIC64</A
></H2
><P
> The 6502's arithmetic capabilities are rather limited. To
counteract this, BASICs of the era did floating point in
software and gave BASIC programmers the full suite of
arithmetic operations. These operations are largely
unavailable to machine language programmers.
</P
><P
> The <TT
CLASS="LITERAL"
>libbasic64.oph</TT
> library is an attempt to
address this. It is currently considered highly experimental,
but initial results are very promising.
</P
><P
> BASIC stores floating point numbers in a five-byte format, but
translates them into a seven-byte format to do actual work in
two Floating Point Accumulators (FAC1 and FAC2). Ophis will
let you specify 5-byte constants with
the <TT
CLASS="LITERAL"
>.cbmfloat</TT
> directive, which takes a
string and produces the requisite five-byte value.
</P
><P
> The floating point functions in BASIC all operate on FAC1 and
are relatively reliable. The
functions <TT
CLASS="LITERAL"
>abs_fac1</TT
>, <TT
CLASS="LITERAL"
>atn_fac1</TT
>, <TT
CLASS="LITERAL"
>cos_fac1</TT
>, <TT
CLASS="LITERAL"
>exp_fac1</TT
>, <TT
CLASS="LITERAL"
>int_fac1</TT
>, <TT
CLASS="LITERAL"
>log_fac1</TT
>, <TT
CLASS="LITERAL"
>rnd_fac1</TT
>, <TT
CLASS="LITERAL"
>sgn_fac1</TT
>, <TT
CLASS="LITERAL"
>sin_fac1</TT
>,
and <TT
CLASS="LITERAL"
>tan_fac1</TT
> are all provided. Routines
that touch the FACs tend to be extremely finicky. This system
defines a set of macros and routines to manage that for you:
</P
><P
></P
><UL
><LI
><P
><TT
CLASS="LITERAL"
>`f_move</TT
> <I
CLASS="EMPHASIS"
>dest, source</I
>: Copy a five-byte floating point value from <I
CLASS="EMPHASIS"
>source</I
> to <I
CLASS="EMPHASIS"
>dest</I
>.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_load</TT
> <I
CLASS="EMPHASIS"
>src</I
>: Loads FAC1 with the floating point constant specified by <I
CLASS="EMPHASIS"
>src</I
>.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_store</TT
> <I
CLASS="EMPHASIS"
>dest</I
>: Saves the value of FAC1 to the named memory location.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_print</TT
> <I
CLASS="EMPHASIS"
>src</I
>: Prints out the value of FAC1 to the screen. You may want to call <TT
CLASS="LITERAL"
>int_fac1</TT
> first to round it. Unlike BASIC's <TT
CLASS="LITERAL"
>PRINT</TT
> statement, this routine will not bracket the number with blanks.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_read</TT
> <I
CLASS="EMPHASIS"
>ptr</I
>: Attempts to convert a string to a floating point value in FAC1, in a manner similar to BASIC's <TT
CLASS="LITERAL"
>VAL</TT
> function.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_add</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Adds the operand to FAC1.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_subtract</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Subtracts the operand from FAC1.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_multiply</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Multiplies the operand by FAC1.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_divide</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Divides FAC1 by the operand.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_pow</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Raises FAC1 to the operand's power.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_and</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Juggles floating point-to-integer conversions to do a bitwise AND.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>`fp_or</TT
> <I
CLASS="EMPHASIS"
>operand</I
>: Likewise, but for OR.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>jsr randomize</TT
>: Calls RND(-TI) and leaves the (useless) result in FAC1. This seeds BASIC's random number generator with the number of clock ticks since poweron.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>jsr rnd</TT
>: Calls RND(1) and leaves the result in FAC1, providing a random number between 0 and 1.</P
></LI
><LI
><P
><TT
CLASS="LITERAL"
>jsr fac1_sign</TT
>: Loads the SGN(FAC1) into the accumulator. This will be $01 if the accumulator is positive, $00 if it is zero, and $FF if it is negative. This routine is useful for branching based on the result of a floating point computation.</P
></LI
></UL
><P
> Other functions are available, but their preconditions are
hazier. The source file is commented with the current state of
knowledge.
</P
><P
> To see some of these functions in action,
the <TT
CLASS="LITERAL"
>examples</TT
> directory includes a
program <TT
CLASS="LITERAL"
>kinematics.oph</TT
>, which reads numbers
in from input and computes trajectories based on them.
</P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x471.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x606.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The Solution</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>The Nintendo Entertainment System</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="PREVIOUS"
TITLE="Using the Ophis Assembler"
HREF="p50.html"><LINK
HREF="p51.html"><LINK
REL="NEXT"
TITLE="Producing Commodore 64 programs"
HREF="x71.html"></HEAD
HREF="x72.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x71.html"
HREF="x72.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -110,7 +110,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN68"
NAME="AEN69"
>A note on numeric notation</A
></H1
><P
@ -136,7 +136,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -154,7 +154,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x71.html"
HREF="x72.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -170,7 +170,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="To HLL and Back"
HREF="p481.html"><LINK
HREF="p618.html"><LINK
REL="PREVIOUS"
TITLE="To HLL and Back"
HREF="p481.html"><LINK
HREF="p618.html"><LINK
REL="NEXT"
TITLE="The solution"
HREF="x498.html"></HEAD
HREF="x635.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x498.html"
HREF="x635.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -84,7 +84,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN489"
NAME="AEN626"
>The problem</A
></H1
><P
@ -134,7 +134,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -152,7 +152,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x498.html"
HREF="x635.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -168,7 +168,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="To HLL and Back"
HREF="p481.html"><LINK
HREF="p618.html"><LINK
REL="PREVIOUS"
TITLE="16-bit comparisons"
HREF="x537.html"><LINK
HREF="x674.html"><LINK
REL="NEXT"
TITLE="The stack"
HREF="x597.html"></HEAD
HREF="x734.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x537.html"
HREF="x674.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x597.html"
HREF="x734.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -96,7 +96,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN548"
NAME="AEN685"
>Control constructs</A
></H1
><DIV
@ -104,7 +104,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN550"
NAME="AEN687"
>Branches: <TT
CLASS="LITERAL"
>if x then y else z</TT
@ -188,7 +188,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN561"
NAME="AEN698"
>Free loops: <TT
CLASS="LITERAL"
>while x do y</TT
@ -264,7 +264,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN573"
NAME="AEN710"
>Bounded loops: <TT
CLASS="LITERAL"
>for i = x to y do z</TT
@ -461,7 +461,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x537.html"
HREF="x674.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -479,7 +479,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x597.html"
HREF="x734.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -495,7 +495,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="To HLL and Back"
HREF="p481.html"><LINK
HREF="p618.html"><LINK
REL="PREVIOUS"
TITLE="A modest example: Insertion sort on linked lists"
HREF="x719.html"><LINK
HREF="x856.html"><LINK
REL="NEXT"
TITLE="Pointer arithmetic"
HREF="x782.html"></HEAD
HREF="x919.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x719.html"
HREF="x856.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x782.html"
HREF="x919.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -79,7 +79,7 @@ NAME="HLL3"
> The basics of pointers versus cursors (or, at the 6502 assembler
level, the indirect indexed addressing mode versus the absolute
indexed ones) were covered in <A
HREF="c543.html"
HREF="c680.html"
>the Chapter called <I
>Structured Programming</I
></A
@ -96,7 +96,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN753"
NAME="AEN890"
>The absolute basics</A
></H1
><P
@ -121,7 +121,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN758"
NAME="AEN895"
>The simplest example</A
></H2
><P
@ -241,7 +241,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x719.html"
HREF="x856.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -259,7 +259,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x782.html"
HREF="x919.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -275,7 +275,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="To HLL and Back"
HREF="p481.html"><LINK
HREF="p618.html"><LINK
REL="PREVIOUS"
TITLE="Conclusion"
HREF="x813.html"><LINK
HREF="x950.html"><LINK
REL="NEXT"
TITLE="A quick digression on how subroutines work"
HREF="x836.html"></HEAD
HREF="x973.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x813.html"
HREF="x950.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x836.html"
HREF="x973.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -72,7 +72,7 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
NAME="AEN816"
NAME="AEN953"
></A
>Functionals</H1
><P
@ -93,7 +93,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN821"
NAME="AEN958"
>Function Pointers</A
></H1
><P
@ -169,7 +169,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x813.html"
HREF="x950.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -187,7 +187,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x836.html"
HREF="x973.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -203,7 +203,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -14,7 +14,7 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="NEXT"
TITLE="Getting a copy of Ophis"
HREF="x29.html"></HEAD
HREF="x30.html"></HEAD
><BODY
CLASS="PREFACE"
BGCOLOR="#FFFFFF"
@ -56,7 +56,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x29.html"
HREF="x30.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -77,8 +77,8 @@ NAME="AEN10"
chip used in the vast majority of the classic 8-bit computers and
consoles. Its primary design goals are code readability and output
flexibility - Ophis has successfully been used to create programs
for the Nintendo Entertainment System, the Atari 2600, and the
Commodore 64.
for the Nintendo Entertainment System, the Atari 2600, and various
8-bit Commodore machines.
</P
><P
> Ophis's syntax is noticably different from the formats
@ -159,6 +159,12 @@ CLASS="footnote"
toolchains. It was this process that led to Ophis 2.
</P
><P
> After its release Ophis 2 was picked up by a number of
developers work with actual hardware from the period, including
prototype machines that never saw production. Some of their
contributions have refined the code generators for version 2.1.
</P
><P
> This is an updated edition of <I
CLASS="EMPHASIS"
>Programming With
@ -243,7 +249,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x29.html"
HREF="x30.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD

View File

@ -11,10 +11,10 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="About the examples"
HREF="x41.html"><LINK
HREF="x42.html"><LINK
REL="NEXT"
TITLE="The basics"
HREF="c55.html"></HEAD
HREF="c56.html"></HEAD
><BODY
CLASS="PART"
BGCOLOR="#FFFFFF"
@ -42,7 +42,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x41.html"
HREF="x42.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -56,7 +56,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -68,7 +68,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN50"
NAME="AEN51"
></A
><DIV
CLASS="TITLEPAGE"
@ -78,7 +78,7 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN52"
NAME="AEN53"
></A
><P
> The chapters in Part 1 are a tutorial guiding you through the
@ -99,39 +99,44 @@ CLASS="TOC"
></DT
><DT
><A
HREF="c55.html"
HREF="c56.html"
>The basics</A
></DT
><DT
><A
HREF="c223.html"
HREF="c236.html"
>Labels and aliases</A
></DT
><DT
><A
HREF="c259.html"
HREF="c273.html"
>Headers, Libraries, and Macros</A
></DT
><DT
><A
HREF="c319.html"
HREF="c333.html"
>Character maps</A
></DT
><DT
><A
HREF="c353.html"
HREF="c367.html"
>Local variables and memory segments</A
></DT
><DT
><A
HREF="c395.html"
HREF="c409.html"
>Expressions</A
></DT
><DT
><A
HREF="c443.html"
HREF="c460.html"
>Advanced Memory Segments</A
></DT
><DT
><A
HREF="c489.html"
>Platform-Specific Techniques</A
></DT
></DL
></DIV
></DIV
@ -152,7 +157,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x41.html"
HREF="x42.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -170,7 +175,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD

View File

@ -10,11 +10,11 @@ REL="HOME"
TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="PREVIOUS"
TITLE="Where to go from here"
HREF="x476.html"><LINK
TITLE="The Atari 2600 VCS"
HREF="x611.html"><LINK
REL="NEXT"
TITLE="The Second Step"
HREF="c486.html"></HEAD
HREF="c623.html"></HEAD
><BODY
CLASS="PART"
BGCOLOR="#FFFFFF"
@ -42,7 +42,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x476.html"
HREF="x611.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -56,7 +56,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -68,7 +68,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="PART"
><A
NAME="AEN481"
NAME="AEN618"
></A
><DIV
CLASS="TITLEPAGE"
@ -78,7 +78,7 @@ CLASS="TITLE"
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN483"
NAME="AEN620"
></A
><P
> This is a compilation of an essay series I wrote from
@ -100,27 +100,27 @@ CLASS="TOC"
></DT
><DT
><A
HREF="c486.html"
HREF="c623.html"
>The Second Step</A
></DT
><DT
><A
HREF="c543.html"
HREF="c680.html"
>Structured Programming</A
></DT
><DT
><A
HREF="c748.html"
HREF="c885.html"
>Pointers and Indirection</A
></DT
><DT
><A
HREF="c816.html"
HREF="c953.html"
>Functionals</A
></DT
><DT
><A
HREF="c900.html"
HREF="c1037.html"
>Call Stacks</A
></DT
></DL
@ -143,7 +143,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x476.html"
HREF="x611.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -161,7 +161,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -171,7 +171,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Where to go from here</TD
>The Atari 2600 VCS</TD
><TD
WIDTH="34%"
ALIGN="center"

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Functionals"
HREF="c816.html"><LINK
HREF="c953.html"><LINK
REL="PREVIOUS"
TITLE="Dispatch-on-type and Data-Directed Assembler"
HREF="x855.html"><LINK
HREF="x992.html"><LINK
REL="NEXT"
TITLE="A final reminder"
HREF="x892.html"></HEAD
HREF="x1029.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x855.html"
HREF="x992.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x892.html"
HREF="x1029.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN871"
NAME="AEN1008"
>VTables and Object-Oriented Assembler</A
></H1
><P
@ -184,7 +184,7 @@ CLASS="LITERAL"
>invokevirtual</TT
>, probably in some global
argument array somewhere as discussed back in <A
HREF="c543.html"
HREF="c680.html"
>the Chapter called <I
>Structured Programming</I
></A
@ -207,7 +207,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x855.html"
HREF="x992.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -225,7 +225,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x892.html"
HREF="x1029.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -241,7 +241,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -1,224 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>c64_0.oph</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
REL="PREVIOUS"
TITLE="hello6.oph"
HREF="x1014.html"><LINK
REL="NEXT"
TITLE="hello7.oph"
HREF="x1022.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Programming with Ophis</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1014.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Example Programs</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1022.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="C64-2-SRC"
><TT
CLASS="FILENAME"
>c64_0.oph</TT
></A
></H1
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Commodore 64 Basic Runtime File
;;
;; Include this at the TOP of your C64 program, and it will handle
;; hiding away the BASIC ROM and data and restoring it at the end.
;;
;; You will have a contiguous block of RAM from $0800 to $CF81, and
;; Zero Page access from $02 to $7F in the segment "zp".
.word $0801
.org $0801
; BASIC program that just calls our machine language code
.scope
.word _next, 10 ; Next line and current line number
.byte $9e," 2062",0 ; SYS 2062
_next: .word 0 ; End of program
.scend
.data zp ; Zero Page memory segment.
.org $0002
.text
.scope
; Cache BASIC zero page at top of available RAM
ldx #$7E
* lda $01, x
sta $CF81, x
dex
bne -
; Swap out the BASIC ROM for RAM
lda $01
and #$fe
ora #$06
sta $01
; Run the real program
jsr _main
; Restore BASIC ROM
lda $01
ora #$07
sta $01
; Restore BASIC zero page
ldx #$7E
* lda $CF81, x
sta $01, x
dex
bne -
; Back to BASIC
rts
_main:
; Program follows...
.scend</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1014.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1022.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><TT
CLASS="FILENAME"
>hello6.oph</TT
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><TT
CLASS="FILENAME"
>hello7.oph</TT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Functionals"
HREF="c816.html"><LINK
HREF="c953.html"><LINK
REL="PREVIOUS"
TITLE="VTables and Object-Oriented Assembler"
HREF="x871.html"><LINK
HREF="x1008.html"><LINK
REL="NEXT"
TITLE="Call Stacks"
HREF="c900.html"></HEAD
HREF="c1037.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x871.html"
HREF="x1008.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c900.html"
HREF="c1037.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN892"
NAME="AEN1029"
>A final reminder</A
></H1
><P
@ -127,7 +127,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x871.html"
HREF="x1008.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -145,7 +145,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c900.html"
HREF="c1037.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -161,7 +161,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Call Stacks"
HREF="c900.html"><LINK
HREF="c1037.html"><LINK
REL="PREVIOUS"
TITLE="Call Stacks"
HREF="c900.html"><LINK
HREF="c1037.html"><LINK
REL="NEXT"
TITLE="Example: Fibonnacci Numbers"
HREF="x967.html"></HEAD
HREF="x1104.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c900.html"
HREF="c1037.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x967.html"
HREF="x1104.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN915"
NAME="AEN1052"
>Our Goals</A
></H1
><P
@ -285,7 +285,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c900.html"
HREF="c1037.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -303,7 +303,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x967.html"
HREF="x1104.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -319,7 +319,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c900.html"
HREF="c1037.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Call Stacks"
HREF="c900.html"><LINK
HREF="c1037.html"><LINK
REL="PREVIOUS"
TITLE="Our Goals"
HREF="x915.html"><LINK
HREF="x1052.html"><LINK
REL="NEXT"
TITLE="Example Programs"
HREF="a975.html"></HEAD
HREF="a1112.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x915.html"
HREF="x1052.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN967"
NAME="AEN1104"
>Example: Fibonnacci Numbers</A
></H1
><P
@ -143,7 +143,7 @@ _done: lda #$03
><P
> The full application, which deals with interfacing with CBM BASIC
and handles console I/O and such, is in <A
HREF="x1030.html"
HREF="x1163.html"
><I
><I
>fibonacci.oph</I
@ -168,7 +168,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x915.html"
HREF="x1052.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -186,7 +186,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -202,7 +202,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c900.html"
HREF="c1037.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="NEXT"
TITLE="c64-1.oph"
HREF="x986.html"></HEAD
HREF="x1123.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x986.html"
HREF="x1123.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -130,7 +130,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -148,7 +148,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x986.html"
HREF="x1123.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -164,7 +164,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello2.oph"
HREF="x982.html"><LINK
HREF="x1119.html"><LINK
REL="NEXT"
TITLE="c64kernal.oph"
HREF="x990.html"></HEAD
HREF="x1127.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x982.html"
HREF="x1119.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x990.html"
HREF="x1127.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -119,7 +119,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x982.html"
HREF="x1119.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -137,7 +137,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x990.html"
HREF="x1127.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -156,7 +156,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="c64-1.oph"
HREF="x986.html"><LINK
HREF="x1123.html"><LINK
REL="NEXT"
TITLE="hello3.oph"
HREF="x994.html"></HEAD
HREF="x1131.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x986.html"
HREF="x1123.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x994.html"
HREF="x1131.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -174,7 +174,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x986.html"
HREF="x1123.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -192,7 +192,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x994.html"
HREF="x1131.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -211,7 +211,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="c64kernal.oph"
HREF="x990.html"><LINK
HREF="x1127.html"><LINK
REL="NEXT"
TITLE="hello4a.oph"
HREF="x998.html"></HEAD
HREF="x1135.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x990.html"
HREF="x1127.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x998.html"
HREF="x1135.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -153,7 +153,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x990.html"
HREF="x1127.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -171,7 +171,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x998.html"
HREF="x1135.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -190,7 +190,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello3.oph"
HREF="x994.html"><LINK
HREF="x1131.html"><LINK
REL="NEXT"
TITLE="hello4b.oph"
HREF="x1002.html"></HEAD
HREF="x1139.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x994.html"
HREF="x1131.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1002.html"
HREF="x1139.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -174,7 +174,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x994.html"
HREF="x1131.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -192,7 +192,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1002.html"
HREF="x1139.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -211,7 +211,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello4a.oph"
HREF="x998.html"><LINK
HREF="x1135.html"><LINK
REL="NEXT"
TITLE="hello4c.oph"
HREF="x1006.html"></HEAD
HREF="x1143.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x998.html"
HREF="x1135.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1006.html"
HREF="x1143.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -176,7 +176,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x998.html"
HREF="x1135.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -194,7 +194,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1006.html"
HREF="x1143.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -213,7 +213,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello4b.oph"
HREF="x1002.html"><LINK
HREF="x1139.html"><LINK
REL="NEXT"
TITLE="hello5.oph"
HREF="x1010.html"></HEAD
HREF="x1147.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1002.html"
HREF="x1139.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1010.html"
HREF="x1147.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -179,7 +179,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1002.html"
HREF="x1139.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -197,7 +197,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1010.html"
HREF="x1147.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -216,7 +216,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello4c.oph"
HREF="x1006.html"><LINK
HREF="x1143.html"><LINK
REL="NEXT"
TITLE="hello6.oph"
HREF="x1014.html"></HEAD
HREF="x1151.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1006.html"
HREF="x1143.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1014.html"
HREF="x1151.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -183,7 +183,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1006.html"
HREF="x1143.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -201,7 +201,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1014.html"
HREF="x1151.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -220,7 +220,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello5.oph"
HREF="x1010.html"><LINK
HREF="x1147.html"><LINK
REL="NEXT"
TITLE="c64_0.oph"
HREF="x1018.html"></HEAD
TITLE="hello7.oph"
HREF="x1155.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1010.html"
HREF="x1147.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1018.html"
HREF="x1155.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -210,7 +210,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1010.html"
HREF="x1147.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -228,7 +228,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1018.html"
HREF="x1155.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -247,7 +247,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD
@ -257,7 +257,7 @@ ALIGN="right"
VALIGN="top"
><TT
CLASS="FILENAME"
>c64_0.oph</TT
>hello7.oph</TT
></TD
></TR
></TABLE

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="c64_0.oph"
HREF="x1018.html"><LINK
TITLE="hello6.oph"
HREF="x1151.html"><LINK
REL="NEXT"
TITLE="structuredemo.oph"
HREF="x1026.html"></HEAD
HREF="x1159.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1018.html"
HREF="x1151.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1026.html"
HREF="x1159.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -205,7 +205,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1018.html"
HREF="x1151.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -223,7 +223,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1026.html"
HREF="x1159.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -235,14 +235,14 @@ ALIGN="left"
VALIGN="top"
><TT
CLASS="FILENAME"
>c64_0.oph</TT
>hello6.oph</TT
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="hello7.oph"
HREF="x1022.html"><LINK
HREF="x1155.html"><LINK
REL="NEXT"
TITLE="fibonacci.oph"
HREF="x1030.html"></HEAD
HREF="x1163.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1022.html"
HREF="x1155.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1030.html"
HREF="x1163.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -338,7 +338,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1022.html"
HREF="x1155.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -356,7 +356,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1030.html"
HREF="x1163.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -375,7 +375,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Example Programs"
HREF="a975.html"><LINK
HREF="a1112.html"><LINK
REL="PREVIOUS"
TITLE="structuredemo.oph"
HREF="x1026.html"><LINK
HREF="x1159.html"><LINK
REL="NEXT"
TITLE="Ophis Command Reference"
HREF="a1034.html"></HEAD
HREF="a1167.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1026.html"
HREF="x1159.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -320,7 +320,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1026.html"
HREF="x1159.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -338,7 +338,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -357,7 +357,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a975.html"
HREF="a1112.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Ophis Command Reference"
HREF="a1034.html"><LINK
HREF="a1167.html"><LINK
REL="PREVIOUS"
TITLE="Ophis Command Reference"
HREF="a1034.html"><LINK
HREF="a1167.html"><LINK
REL="NEXT"
TITLE="Compound Arguments"
HREF="x1149.html"></HEAD
HREF="x1282.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1149.html"
HREF="x1282.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN1101"
NAME="AEN1234"
>Basic arguments</A
></H1
><P
@ -85,7 +85,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1104"
NAME="AEN1237"
>Numeric types</A
></H2
><P
@ -148,7 +148,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1127"
NAME="AEN1260"
>Label types</A
></H2
><P
@ -204,7 +204,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1140"
NAME="AEN1273"
>String types</A
></H2
><P
@ -258,7 +258,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -276,7 +276,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1149.html"
HREF="x1282.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -292,7 +292,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Ophis Command Reference"
HREF="a1034.html"><LINK
HREF="a1167.html"><LINK
REL="PREVIOUS"
TITLE="Basic arguments"
HREF="x1101.html"><LINK
HREF="x1234.html"><LINK
REL="NEXT"
TITLE="Memory Model"
HREF="x1176.html"></HEAD
HREF="x1309.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1101.html"
HREF="x1234.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1176.html"
HREF="x1309.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN1149"
NAME="AEN1282"
>Compound Arguments</A
></H1
><P
@ -161,7 +161,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1101.html"
HREF="x1234.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -179,7 +179,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1176.html"
HREF="x1309.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -195,7 +195,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Ophis Command Reference"
HREF="a1034.html"><LINK
HREF="a1167.html"><LINK
REL="PREVIOUS"
TITLE="Compound Arguments"
HREF="x1149.html"><LINK
HREF="x1282.html"><LINK
REL="NEXT"
TITLE="Macros"
HREF="x1221.html"></HEAD
HREF="x1354.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1149.html"
HREF="x1282.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1221.html"
HREF="x1354.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN1176"
NAME="AEN1309"
>Memory Model</A
></H1
><P
@ -88,7 +88,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1179"
NAME="AEN1312"
>Basic PC tracking</A
></H2
><P
@ -127,7 +127,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1188"
NAME="AEN1321"
>Basic Segmentation simulation</A
></H2
><P
@ -243,7 +243,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1212"
NAME="AEN1345"
>General Segmentation Simulation</A
></H2
><P
@ -322,7 +322,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1149.html"
HREF="x1282.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -340,7 +340,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1221.html"
HREF="x1354.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -356,7 +356,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Ophis Command Reference"
HREF="a1034.html"><LINK
HREF="a1167.html"><LINK
REL="PREVIOUS"
TITLE="Memory Model"
HREF="x1176.html"><LINK
HREF="x1309.html"><LINK
REL="NEXT"
TITLE="Assembler directives"
HREF="x1261.html"></HEAD
HREF="x1394.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1176.html"
HREF="x1309.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1261.html"
HREF="x1394.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN1221"
NAME="AEN1354"
>Macros</A
></H1
><P
@ -92,7 +92,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1225"
NAME="AEN1358"
>Defining Macros</A
></H2
><P
@ -128,7 +128,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1231"
NAME="AEN1364"
>Invoking Macros</A
></H2
><P
@ -175,7 +175,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1239"
NAME="AEN1372"
>Passing Arguments to Macros</A
></H2
><P
@ -234,7 +234,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN1249"
NAME="AEN1382"
>Features and Restrictions of the Ophis Macro Model</A
></H2
><P
@ -307,7 +307,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1176.html"
HREF="x1309.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -325,7 +325,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1261.html"
HREF="x1394.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -341,7 +341,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,10 +11,10 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Ophis Command Reference"
HREF="a1034.html"><LINK
HREF="a1167.html"><LINK
REL="PREVIOUS"
TITLE="Macros"
HREF="x1221.html"></HEAD
HREF="x1354.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -42,7 +42,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x1221.html"
HREF="x1354.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -66,7 +66,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN1261"
NAME="AEN1394"
>Assembler directives</A
></H1
><P
@ -174,6 +174,61 @@ CLASS="EMPHASIS"
><P
> <TT
CLASS="LITERAL"
>.cbmfloat</TT
> <I
CLASS="EMPHASIS"
>string</I
>
[ , <I
CLASS="EMPHASIS"
>string</I
>, ... ]: Specifies a
series of strings, which are interpreted as floating
point constants, and then included in the 5-byte floating
point format used by the Commodore BASICs. This format is
8 bits of exponent, followed by a sign bit and a 31-bit
big-endian mantissa fraction. (The 1 in front of the
binary point is presumed to be present.) An exponent of 0
specifies a constant of 0, and the exponent is shifted up
by 129 before being stored.
</P
><P
> Because IEEE-754 doesn't perfectly match the Commodore's
system, if you wish to precisely replicate individual
constants that cannot be represented exactly you may have
better luck with the following program, which will run on
both the Commodore 64 and VIC-20:
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>10 CLR:V=0:PV=PEEK(45)+256*PEEK(46)+2
20 INPUT "NUMBER (0 TO QUIT)";V
30 IF V=0 THEN END
40 PRINT ".BYTE";
50 FOR I=0 TO 4
60 IF I&#62;0 THEN PRINT CHR$(157);",";
70 PRINT PEEK(PV+I);:NEXT I:PRINT:GOTO 20</PRE
></TD
></TR
></TABLE
><P
>This program will print out
a <TT
CLASS="LITERAL"
>.byte</TT
> directive for you to include in
your program to represent that number.</P
></LI
><LI
><P
> <TT
CLASS="LITERAL"
>.checkpc</TT
> <I
CLASS="EMPHASIS"
@ -521,7 +576,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x1221.html"
HREF="x1354.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -551,7 +606,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="a1034.html"
HREF="a1167.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The basics"
HREF="c55.html"><LINK
HREF="c56.html"><LINK
REL="PREVIOUS"
TITLE="Producing Commodore 64 programs"
HREF="x71.html"><LINK
HREF="x72.html"><LINK
REL="NEXT"
TITLE="Writing the actual code"
HREF="x161.html"></HEAD
HREF="x162.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x71.html"
HREF="x72.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x161.html"
HREF="x162.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN140"
NAME="AEN141"
>Related commands and options</A
></H1
><P
@ -155,7 +155,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x71.html"
HREF="x72.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -173,7 +173,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x161.html"
HREF="x162.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -189,7 +189,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The basics"
HREF="c55.html"><LINK
HREF="c56.html"><LINK
REL="PREVIOUS"
TITLE="Related commands and options"
HREF="x140.html"><LINK
HREF="x141.html"><LINK
REL="NEXT"
TITLE="Assembling the code"
HREF="x170.html"></HEAD
HREF="x171.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x140.html"
HREF="x141.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x170.html"
HREF="x171.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN161"
NAME="AEN162"
>Writing the actual code</A
></H1
><P
@ -121,7 +121,7 @@ hello: .byte "HELLO, WORLD!", 0
><P
> The complete, final source is available in
the <A
HREF="a975.html#TUTOR1-SRC"
HREF="a1112.html#TUTOR1-SRC"
><I
><I
>hello1.oph</I
@ -146,7 +146,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x140.html"
HREF="x141.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -164,7 +164,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x170.html"
HREF="x171.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -180,7 +180,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The basics"
HREF="c55.html"><LINK
HREF="c56.html"><LINK
REL="PREVIOUS"
TITLE="Writing the actual code"
HREF="x161.html"><LINK
HREF="x162.html"><LINK
REL="NEXT"
TITLE="Labels and aliases"
HREF="c223.html"></HEAD
HREF="c236.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x161.html"
HREF="x162.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c223.html"
HREF="c236.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN170"
NAME="AEN171"
>Assembling the code</A
></H1
><P
@ -143,7 +143,7 @@ CLASS="OPTION"
><DIV
CLASS="TABLE"
><A
NAME="AEN185"
NAME="AEN186"
></A
><P
><B
@ -179,6 +179,24 @@ CLASS="OPTION"
><TD
><CODE
CLASS="OPTION"
>-l FILE</CODE
></TD
><TD
>Specifies an optional listing file that gives the emitted binary in human-readable form, with disassembly.</TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-m FILE</CODE
></TD
><TD
>Specifies an optional map file that gives the in-source names for every label used in the program.</TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-u</CODE
></TD
><TD
@ -197,6 +215,15 @@ CLASS="OPTION"
><TD
><CODE
CLASS="OPTION"
>-4</CODE
></TD
><TD
>Allows opcodes and addressing modes added by the 4502. (Experimental.)</TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-q</CODE
></TD
><TD
@ -235,35 +262,37 @@ Assembly complete: 45 bytes output (14 code, 29 data, 2 filler)
></TR
></TABLE
><P
> This will produce a file named <TT
> This will produce a file
named <TT
CLASS="FILENAME"
>hello.prg</TT
>. If
your emulator can run <TT
>. If your emulator can
run <TT
CLASS="FILENAME"
>PRG</TT
> files directly,
this file will now run (and print <SAMP
> files directly, this file will now
run (and print <SAMP
CLASS="COMPUTEROUTPUT"
>HELLO,
WORLD!</SAMP
>) as many times as you
type <KBD
>HELLO, WORLD!</SAMP
>)
as many times as you type <KBD
CLASS="USERINPUT"
>RUN</KBD
>. Otherwise, use
a <TT
>.
Otherwise, use a <TT
CLASS="FILENAME"
>D64</TT
> management utility to put
the <TT
> management utility to
put the <TT
CLASS="FILENAME"
>PRG</TT
> on a <TT
CLASS="FILENAME"
>D64</TT
>, then
load and run the file off that.
>,
then load and run the file off that. If you have access to a
device like the 1541 Ultimate II, you can even load the file
directly into the actual hardware.
</P
></DIV
><DIV
@ -282,7 +311,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x161.html"
HREF="x162.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -300,7 +329,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c223.html"
HREF="c236.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -316,7 +345,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Labels and aliases"
HREF="c223.html"><LINK
HREF="c236.html"><LINK
REL="PREVIOUS"
TITLE="Labels and aliases"
HREF="c223.html"><LINK
HREF="c236.html"><LINK
REL="NEXT"
TITLE="Aliasing"
HREF="x248.html"></HEAD
HREF="x262.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c223.html"
HREF="c236.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x248.html"
HREF="x262.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN237"
NAME="AEN251"
>Anonymous labels</A
></H1
><P
@ -147,7 +147,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c223.html"
HREF="c236.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -165,7 +165,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x248.html"
HREF="x262.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -181,7 +181,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c223.html"
HREF="c236.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Labels and aliases"
HREF="c223.html"><LINK
HREF="c236.html"><LINK
REL="PREVIOUS"
TITLE="Anonymous labels"
HREF="x237.html"><LINK
HREF="x251.html"><LINK
REL="NEXT"
TITLE="Headers, Libraries, and Macros"
HREF="c259.html"></HEAD
HREF="c273.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x237.html"
HREF="x251.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c259.html"
HREF="c273.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN248"
NAME="AEN262"
>Aliasing</A
></H1
><P
@ -119,7 +119,7 @@ CLASS="PROGRAMLISTING"
></TABLE
><P
> The final version of the code is in <A
HREF="x982.html"
HREF="x1119.html"
><I
><I
>hello2.oph</I
@ -127,7 +127,7 @@ HREF="x982.html"
></A
>. It should
assemble to exactly the same program as <A
HREF="a975.html#TUTOR1-SRC"
HREF="a1112.html#TUTOR1-SRC"
><I
><I
>hello1.oph</I
@ -152,7 +152,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x237.html"
HREF="x251.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -170,7 +170,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c259.html"
HREF="c273.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -186,7 +186,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c223.html"
HREF="c236.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Headers, Libraries, and Macros"
HREF="c259.html"><LINK
HREF="c273.html"><LINK
REL="PREVIOUS"
TITLE="Headers, Libraries, and Macros"
HREF="c259.html"><LINK
HREF="c273.html"><LINK
REL="NEXT"
TITLE="Example code"
HREF="x314.html"></HEAD
HREF="x328.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c259.html"
HREF="c273.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x314.html"
HREF="x328.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN284"
NAME="AEN298"
>Macros</A
></H1
><P
@ -99,7 +99,7 @@ CLASS="EMPHASIS"
body. This produces effects much closer to those of a
traditional function call. A more detailed discussion of the
tradeoffs may be found in <A
HREF="a1034.html"
HREF="a1167.html"
>the Appendix called <I
>Ophis Command Reference</I
></A
@ -110,7 +110,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN292"
NAME="AEN306"
>Macro definitions</A
></H2
><P
@ -132,7 +132,9 @@ CLASS="LITERAL"
><P
> No global or anonymous labels may be defined inside a macro:
temporary labels only persist in the macro expansion itself.
(Each macro body has its own scope.)
(Each macro body has its own scope. A label map will trace
back through macro expansions to describe were a label inside
a macro body came from.)
</P
><P
> Arguments to macros are referred to by number: the first is
@ -178,7 +180,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN305"
NAME="AEN319"
>Macro invocations</A
></H2
><P
@ -238,7 +240,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c259.html"
HREF="c273.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -256,7 +258,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x314.html"
HREF="x328.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -272,7 +274,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c259.html"
HREF="c273.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -17,7 +17,7 @@ TITLE="Preface"
HREF="f10.html"><LINK
REL="NEXT"
TITLE="About the examples"
HREF="x41.html"></HEAD
HREF="x42.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x41.html"
HREF="x42.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN29"
NAME="AEN30"
>Getting a copy of Ophis</A
></H1
><P
@ -160,7 +160,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x41.html"
HREF="x42.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Headers, Libraries, and Macros"
HREF="c259.html"><LINK
HREF="c273.html"><LINK
REL="PREVIOUS"
TITLE="Macros"
HREF="x284.html"><LINK
HREF="x298.html"><LINK
REL="NEXT"
TITLE="Character maps"
HREF="c319.html"></HEAD
HREF="c333.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x284.html"
HREF="x298.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c319.html"
HREF="c333.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,12 +73,12 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN314"
NAME="AEN328"
>Example code</A
></H1
><P
> <A
HREF="x994.html"
HREF="x1131.html"
><I
><I
>hello3.oph</I
@ -110,7 +110,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x284.html"
HREF="x298.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -128,7 +128,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c319.html"
HREF="c333.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -144,7 +144,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c259.html"
HREF="c273.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -14,10 +14,10 @@ TITLE="Preface"
HREF="f10.html"><LINK
REL="PREVIOUS"
TITLE="Getting a copy of Ophis"
HREF="x29.html"><LINK
HREF="x30.html"><LINK
REL="NEXT"
TITLE="Using the Ophis Assembler"
HREF="p50.html"></HEAD
HREF="p51.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x29.html"
HREF="x30.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,11 +73,14 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN41"
NAME="AEN42"
>About the examples</A
></H1
><P
> Versions of the examples in this book are available from the Ophis site. Windows users will find them packaged with the distribution; all other users can get them as a separate download or pull them directly from github.
> Versions of the examples in this book are available from the
Ophis site. Windows users will find them packaged with the
distribution; all other users can get them as a separate
download or pull them directly from github.
</P
><P
> The code in this book is available in
@ -125,7 +128,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x29.html"
HREF="x30.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -143,7 +146,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="p50.html"
HREF="p51.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Advanced Memory Segments"
HREF="c443.html"><LINK
HREF="c460.html"><LINK
REL="PREVIOUS"
TITLE="Advanced Memory Segments"
HREF="c443.html"><LINK
HREF="c460.html"><LINK
REL="NEXT"
TITLE="Where to go from here"
HREF="x476.html"></HEAD
TITLE="Platform-Specific Techniques"
HREF="c489.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c443.html"
HREF="c460.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x476.html"
HREF="c489.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN454"
NAME="AEN471"
>The Solution</A
></H1
><P
@ -113,9 +113,9 @@ CLASS="PROGRAMLISTING"
></TABLE
><P
> Now, actually, the rest of the zero page is reserved too:
locations $02-$7F are used by the BASIC interpreter, and
locations $80-$FF are used by the KERNAL. We don't need the
BASIC interpreter, though, so we can back up all of $02-$7F at
locations $02-$8F are used by the BASIC interpreter, and
locations $90-$FF are used by the KERNAL. We don't need the
BASIC interpreter, though, so we can back up all of $02-$8F at
the start of our program and restore it all when we're done.
</P
><P
@ -133,9 +133,9 @@ WIDTH="100%"
CLASS="PROGRAMLISTING"
>.scope
; Cache BASIC zero page at top of available RAM
ldx #$7E
ldx #$8e
* lda $01, x
sta $CF81, x
sta $cf81, x
dex
bne -
@ -154,8 +154,8 @@ CLASS="PROGRAMLISTING"
sta $01
; Restore BASIC zero page
ldx #$7E
* lda $CF81, x
ldx #$8e
* lda $cf81, x
sta $01, x
dex
bne -
@ -171,24 +171,6 @@ _main:
></TR
></TABLE
><P
> The new, improved header file is <A
HREF="x1018.html"
><I
><I
>c64_0.oph</I
></I
></A
>. This,
like <TT
CLASS="FILENAME"
>c64kernal.oph</TT
>, is available for use in
your own projects in the <TT
CLASS="LITERAL"
>platform/</TT
> directory.
</P
><P
> Our <TT
CLASS="LITERAL"
>print'str</TT
@ -243,9 +225,8 @@ CLASS="PROGRAMLISTING"
></TR
></TABLE
><P
> That concludes our tour. The final source file
is <A
HREF="x1022.html"
> The final source file is <A
HREF="x1155.html"
><I
><I
>hello7.oph</I
@ -270,7 +251,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c443.html"
HREF="c460.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -288,7 +269,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x476.html"
HREF="c489.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -304,7 +285,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c443.html"
HREF="c460.html"
ACCESSKEY="U"
>Up</A
></TD
@ -312,7 +293,7 @@ ACCESSKEY="U"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Where to go from here</TD
>Platform-Specific Techniques</TD
></TR
></TABLE
></DIV

169
book/x606.html Normal file
View File

@ -0,0 +1,169 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>The Nintendo Entertainment System</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Platform-Specific Techniques"
HREF="c489.html"><LINK
REL="PREVIOUS"
TITLE="Platform-Specific Techniques"
HREF="c489.html"><LINK
REL="NEXT"
TITLE="The Atari 2600 VCS"
HREF="x611.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Programming with Ophis</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c489.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Platform-Specific Techniques</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x611.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN606"
>The Nintendo Entertainment System</A
></H1
><P
> The NES development community is somewhat more fragmented than
the others. A skeletal <TT
CLASS="LITERAL"
>nes.oph</TT
> file is
provided, but memory locations are not as consistently
named. Much sample code doesn't provide aliases for control
registers at all.
</P
><P
> Conveniently creating runnable NES programs is somewhat
involved. Any given product was generally burned onto several
chips that were affixed to one of a large number of circuit
boards. These are often referred to as "mappers" by
developers because their effect is to implement various
bankswitching schemes. The result is a program built out of
parts, each with its own origin. A "Hello World"
sample program ships with Ophis. It does not use a bankswitcher,
but it does split its contents into a program chip and a
graphics chip, with one of two wrapper files to knit them
together into a file that other software will recognize. Samples
are given for the common iNES format and the defunct UNIF
format.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c489.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x611.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Platform-Specific Techniques</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c489.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>The Atari 2600 VCS</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@ -2,7 +2,7 @@
<HTML
><HEAD
><TITLE
>Where to go from here</TITLE
>The Atari 2600 VCS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
@ -10,14 +10,14 @@ REL="HOME"
TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Advanced Memory Segments"
HREF="c443.html"><LINK
TITLE="Platform-Specific Techniques"
HREF="c489.html"><LINK
REL="PREVIOUS"
TITLE="The Solution"
HREF="x454.html"><LINK
TITLE="The Nintendo Entertainment System"
HREF="x606.html"><LINK
REL="NEXT"
TITLE="To HLL and Back"
HREF="p481.html"></HEAD
HREF="p618.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x454.html"
HREF="x606.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -53,13 +53,13 @@ ACCESSKEY="P"
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Advanced Memory Segments</TD
>Platform-Specific Techniques</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,26 +73,30 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN476"
>Where to go from here</A
NAME="AEN611"
>The Atari 2600 VCS</A
></H1
><P
> This tutorial has touched on everything that the assembler can
do, but it's not really well organized as a
reference. <A
HREF="a1034.html"
>the Appendix called <I
>Ophis Command Reference</I
></A
> is a better place to look
up matters of syntax or consult lists of available commands.
> Of all the 8-bit development communities, the Atari developers
seem to be the most cohesive. The development documents
available are universal, and analysts and developers alike all
use the register names in the <I
CLASS="EMPHASIS"
>Stella Developer's
Guide</I
>. Ophis follows their lead, providing these
names in the header <TT
CLASS="LITERAL"
>stella.oph</TT
>.
</P
><P
> If you're looking for projects to undertake, the Commodore 64
and Atari 2600 development communities are both very strong, and
the Apple II and NES development communities are still alive and
well as well. There's an annual Minigame Competition that's
always looking for new entries.
> The <TT
CLASS="LITERAL"
>stella.oph</TT
> header also replicates two
macros that appear in the header files distributed to budding
VCS developers. They are documented in the file.
</P
></DIV
><DIV
@ -111,7 +115,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x454.html"
HREF="x606.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -129,7 +133,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="p481.html"
HREF="p618.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -139,13 +143,13 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The Solution</TD
>The Nintendo Entertainment System</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c443.html"
HREF="c489.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The Second Step"
HREF="c486.html"><LINK
HREF="c623.html"><LINK
REL="PREVIOUS"
TITLE="The Second Step"
HREF="c486.html"><LINK
HREF="c623.html"><LINK
REL="NEXT"
TITLE="Unsigned arithmetic"
HREF="x504.html"></HEAD
HREF="x641.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x504.html"
HREF="x641.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN498"
NAME="AEN635"
>The solution</A
></H1
><P
@ -115,7 +115,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -133,7 +133,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x504.html"
HREF="x641.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -149,7 +149,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The Second Step"
HREF="c486.html"><LINK
HREF="c623.html"><LINK
REL="PREVIOUS"
TITLE="The solution"
HREF="x498.html"><LINK
HREF="x635.html"><LINK
REL="NEXT"
TITLE="16-bit addition and subtraction"
HREF="x527.html"></HEAD
HREF="x664.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x498.html"
HREF="x635.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x527.html"
HREF="x664.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN504"
NAME="AEN641"
>Unsigned arithmetic</A
></H1
><P
@ -216,7 +216,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x498.html"
HREF="x635.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -234,7 +234,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x527.html"
HREF="x664.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -250,7 +250,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The Second Step"
HREF="c486.html"><LINK
HREF="c623.html"><LINK
REL="PREVIOUS"
TITLE="Unsigned arithmetic"
HREF="x504.html"><LINK
HREF="x641.html"><LINK
REL="NEXT"
TITLE="16-bit comparisons"
HREF="x537.html"></HEAD
HREF="x674.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x504.html"
HREF="x641.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x537.html"
HREF="x674.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN527"
NAME="AEN664"
>16-bit addition and subtraction</A
></H1
><P
@ -145,7 +145,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x504.html"
HREF="x641.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -163,7 +163,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x537.html"
HREF="x674.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -179,7 +179,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The Second Step"
HREF="c486.html"><LINK
HREF="c623.html"><LINK
REL="PREVIOUS"
TITLE="16-bit addition and subtraction"
HREF="x527.html"><LINK
HREF="x664.html"><LINK
REL="NEXT"
TITLE="Structured Programming"
HREF="c543.html"></HEAD
HREF="c680.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x527.html"
HREF="x664.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN537"
NAME="AEN674"
>16-bit comparisons</A
></H1
><P
@ -127,7 +127,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x527.html"
HREF="x664.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -145,7 +145,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -161,7 +161,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c486.html"
HREF="c623.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="The basics"
HREF="c55.html"><LINK
HREF="c56.html"><LINK
REL="PREVIOUS"
TITLE="The basics"
HREF="c55.html"><LINK
HREF="c56.html"><LINK
REL="NEXT"
TITLE="Related commands and options"
HREF="x140.html"></HEAD
HREF="x141.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x140.html"
HREF="x141.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN71"
NAME="AEN72"
>Producing Commodore 64 programs</A
></H1
><P
@ -150,7 +150,7 @@ CLASS="SCREEN"
><DIV
CLASS="TABLE"
><A
NAME="AEN85"
NAME="AEN86"
></A
><P
><B
@ -380,7 +380,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -398,7 +398,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x140.html"
HREF="x141.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -414,7 +414,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c55.html"
HREF="c56.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Structured Programming"
HREF="c543.html"><LINK
HREF="c680.html"><LINK
REL="PREVIOUS"
TITLE="Structured Programming"
HREF="c543.html"><LINK
HREF="c680.html"><LINK
REL="NEXT"
TITLE="Procedures and register saving"
HREF="x603.html"></HEAD
HREF="x740.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x603.html"
HREF="x740.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN597"
NAME="AEN734"
>The stack</A
></H1
><P
@ -121,7 +121,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -139,7 +139,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x603.html"
HREF="x740.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -155,7 +155,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Structured Programming"
HREF="c543.html"><LINK
HREF="c680.html"><LINK
REL="PREVIOUS"
TITLE="The stack"
HREF="x597.html"><LINK
HREF="x734.html"><LINK
REL="NEXT"
TITLE="Variables"
HREF="x621.html"></HEAD
HREF="x758.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x597.html"
HREF="x734.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x621.html"
HREF="x758.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,14 +73,14 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN603"
NAME="AEN740"
>Procedures and register saving</A
></H1
><P
> All programming languages are designed around the concept of
procedures.<A
NAME="AEN606"
HREF="#FTN.AEN606"
NAME="AEN743"
HREF="#FTN.AEN743"
><SPAN
CLASS="footnote"
>[1]</SPAN
@ -193,8 +193,8 @@ ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN606"
HREF="x603.html#AEN606"
NAME="FTN.AEN743"
HREF="x740.html#AEN743"
><SPAN
CLASS="footnote"
>[1]</SPAN
@ -232,7 +232,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x597.html"
HREF="x734.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -250,7 +250,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x621.html"
HREF="x758.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -266,7 +266,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Structured Programming"
HREF="c543.html"><LINK
HREF="c680.html"><LINK
REL="PREVIOUS"
TITLE="Procedures and register saving"
HREF="x603.html"><LINK
HREF="x740.html"><LINK
REL="NEXT"
TITLE="Data structures"
HREF="x666.html"></HEAD
HREF="x803.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x603.html"
HREF="x740.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x666.html"
HREF="x803.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN621"
NAME="AEN758"
>Variables</A
></H1
><P
@ -84,7 +84,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN624"
NAME="AEN761"
>Global variables</A
></H2
><P
@ -102,7 +102,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN627"
NAME="AEN764"
>Local variables</A
></H2
><P
@ -123,7 +123,7 @@ CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN631"
NAME="AEN768"
>Treat local variables like registers</A
></H3
><P
@ -144,7 +144,7 @@ CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN635"
NAME="AEN772"
>Procedure-based memory allocation</A
></H3
><P
@ -191,7 +191,7 @@ CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN644"
NAME="AEN781"
>Partition-based memory allocation</A
></H3
><P
@ -260,7 +260,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN661"
NAME="AEN798"
>Constants</A
></H2
><P
@ -297,7 +297,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x603.html"
HREF="x740.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -315,7 +315,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x666.html"
HREF="x803.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -331,7 +331,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Structured Programming"
HREF="c543.html"><LINK
HREF="c680.html"><LINK
REL="PREVIOUS"
TITLE="Variables"
HREF="x621.html"><LINK
HREF="x758.html"><LINK
REL="NEXT"
TITLE="A modest example: Insertion sort on linked lists"
HREF="x719.html"></HEAD
HREF="x856.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x621.html"
HREF="x758.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x719.html"
HREF="x856.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN666"
NAME="AEN803"
>Data structures</A
></H1
><P
@ -86,7 +86,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN669"
NAME="AEN806"
>Arrays</A
></H2
><P
@ -203,7 +203,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN682"
NAME="AEN819"
>Records</A
></H2
><P
@ -334,7 +334,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN701"
NAME="AEN838"
>Bitfields</A
></H2
><P
@ -398,7 +398,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x621.html"
HREF="x758.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -416,7 +416,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x719.html"
HREF="x856.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -432,7 +432,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Structured Programming"
HREF="c543.html"><LINK
HREF="c680.html"><LINK
REL="PREVIOUS"
TITLE="Data structures"
HREF="x666.html"><LINK
HREF="x803.html"><LINK
REL="NEXT"
TITLE="Pointers and Indirection"
HREF="c748.html"></HEAD
HREF="c885.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x666.html"
HREF="x803.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN719"
NAME="AEN856"
>A modest example: Insertion sort on linked lists</A
></H1
><P
@ -89,7 +89,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN722"
NAME="AEN859"
>The data structure</A
></H2
><P
@ -159,7 +159,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN731"
NAME="AEN868"
>Doing an insertion sort</A
></H2
><P
@ -230,7 +230,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN737"
NAME="AEN874"
>Inserting an element</A
></H2
><P
@ -360,14 +360,14 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN744"
NAME="AEN881"
>The complete application</A
></H2
><P
> The full application, which deals with interfacing with CBM
BASIC and handles console I/O and such, is
in <A
HREF="x1026.html"
HREF="x1159.html"
><I
><I
>structuredemo.oph</I
@ -393,7 +393,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x666.html"
HREF="x803.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -411,7 +411,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -427,7 +427,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c543.html"
HREF="c680.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Pointers and Indirection"
HREF="c748.html"><LINK
HREF="c885.html"><LINK
REL="PREVIOUS"
TITLE="Pointers and Indirection"
HREF="c748.html"><LINK
HREF="c885.html"><LINK
REL="NEXT"
TITLE="What about Indexed Indirect?"
HREF="x798.html"></HEAD
HREF="x935.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x798.html"
HREF="x935.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN782"
NAME="AEN919"
>Pointer arithmetic</A
></H1
><P
@ -94,7 +94,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN785"
NAME="AEN922"
>The straightforward, slow way</A
></H2
><P
@ -117,7 +117,7 @@ CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN789"
NAME="AEN926"
>The clever fast way</A
></H2
><P
@ -202,7 +202,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -220,7 +220,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x798.html"
HREF="x935.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -236,7 +236,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Pointers and Indirection"
HREF="c748.html"><LINK
HREF="c885.html"><LINK
REL="PREVIOUS"
TITLE="Pointer arithmetic"
HREF="x782.html"><LINK
HREF="x919.html"><LINK
REL="NEXT"
TITLE="Comparison with the other indexed forms"
HREF="x805.html"></HEAD
HREF="x942.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x782.html"
HREF="x919.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x805.html"
HREF="x942.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN798"
NAME="AEN935"
>What about Indexed Indirect?</A
></H1
><P
@ -145,7 +145,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x782.html"
HREF="x919.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -163,7 +163,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x805.html"
HREF="x942.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -179,7 +179,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Pointers and Indirection"
HREF="c748.html"><LINK
HREF="c885.html"><LINK
REL="PREVIOUS"
TITLE="What about Indexed Indirect?"
HREF="x798.html"><LINK
HREF="x935.html"><LINK
REL="NEXT"
TITLE="Conclusion"
HREF="x813.html"></HEAD
HREF="x950.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x798.html"
HREF="x935.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x813.html"
HREF="x950.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN805"
NAME="AEN942"
>Comparison with the other indexed forms</A
></H1
><P
@ -142,7 +142,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x798.html"
HREF="x935.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -160,7 +160,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x813.html"
HREF="x950.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -176,7 +176,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Pointers and Indirection"
HREF="c748.html"><LINK
HREF="c885.html"><LINK
REL="PREVIOUS"
TITLE="Comparison with the other indexed forms"
HREF="x805.html"><LINK
HREF="x942.html"><LINK
REL="NEXT"
TITLE="Functionals"
HREF="c816.html"></HEAD
HREF="c953.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x805.html"
HREF="x942.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN813"
NAME="AEN950"
>Conclusion</A
></H1
><P
@ -103,7 +103,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x805.html"
HREF="x942.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -121,7 +121,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -137,7 +137,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c748.html"
HREF="c885.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Functionals"
HREF="c816.html"><LINK
HREF="c953.html"><LINK
REL="PREVIOUS"
TITLE="Functionals"
HREF="c816.html"><LINK
HREF="c953.html"><LINK
REL="NEXT"
TITLE="Dispatch-on-type and Data-Directed Assembler"
HREF="x855.html"></HEAD
HREF="x992.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x855.html"
HREF="x992.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN836"
NAME="AEN973"
>A quick digression on how subroutines work</A
></H1
><P
@ -164,7 +164,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -182,7 +182,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x855.html"
HREF="x992.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -198,7 +198,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="U"
>Up</A
></TD

View File

@ -11,13 +11,13 @@ TITLE="Programming with Ophis"
HREF="book1.html"><LINK
REL="UP"
TITLE="Functionals"
HREF="c816.html"><LINK
HREF="c953.html"><LINK
REL="PREVIOUS"
TITLE="A quick digression on how subroutines work"
HREF="x836.html"><LINK
HREF="x973.html"><LINK
REL="NEXT"
TITLE="VTables and Object-Oriented Assembler"
HREF="x871.html"></HEAD
HREF="x1008.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
@ -45,7 +45,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x836.html"
HREF="x973.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -59,7 +59,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x871.html"
HREF="x1008.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -73,7 +73,7 @@ CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="AEN855"
NAME="AEN992"
>Dispatch-on-type and Data-Directed Assembler</A
></H1
><P
@ -198,7 +198,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x836.html"
HREF="x973.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
@ -216,7 +216,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x871.html"
HREF="x1008.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
@ -232,7 +232,7 @@ WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c816.html"
HREF="c953.html"
ACCESSKEY="U"
>Up</A
></TD