ref: 292302c6d127f9aa6e8e443b4d41077d9ce00063
parent: b55fead749337c95e2184348cf1f35fa52c2d2ef
author: Antonio Niño Díaz <[email protected]>
date: Tue Jan 23 16:28:10 EST 2018
Move documentation to this repository Modified Makefile wwwman target to output files inside docs/. Modified .gitignore to allow *.html files. Update README. Signed-off-by: Antonio Niño Díaz <[email protected]>
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,4 @@
rgbgfx
*.o
*.exe
-*.html
.checkpatch-camelcase.*
--- a/Makefile
+++ b/Makefile
@@ -169,15 +169,15 @@
MANDOC := -Thtml -Ios=General -Oman=%N.%S.html -Ostyle=manual.css
wwwman:
- $Qmandoc ${MANDOC} src/rgbds.7 > rgbds.7.html
- $Qmandoc ${MANDOC} src/gbz80.7 > gbz80.7.html
- $Qmandoc ${MANDOC} src/rgbds.5 > rgbds.5.html
- $Qmandoc ${MANDOC} src/asm/rgbasm.1 > rgbasm.1.html
- $Qmandoc ${MANDOC} src/asm/rgbasm.5 > rgbasm.5.html
- $Qmandoc ${MANDOC} src/fix/rgbfix.1 > rgbfix.1.html
- $Qmandoc ${MANDOC} src/link/rgblink.1 > rgblink.1.html
- $Qmandoc ${MANDOC} src/link/rgblink.5 > rgblink.5.html
- $Qmandoc ${MANDOC} src/gfx/rgbgfx.1 > rgbgfx.1.html
+ $Qmandoc ${MANDOC} src/rgbds.7 > docs/gbds.7.html
+ $Qmandoc ${MANDOC} src/gbz80.7 > docs/gbz80.7.html
+ $Qmandoc ${MANDOC} src/rgbds.5 > docs/rgbds.5.html
+ $Qmandoc ${MANDOC} src/asm/rgbasm.1 > docs/rgbasm.1.html
+ $Qmandoc ${MANDOC} src/asm/rgbasm.5 > docs/rgbasm.5.html
+ $Qmandoc ${MANDOC} src/fix/rgbfix.1 > docs/rgbfix.1.html
+ $Qmandoc ${MANDOC} src/link/rgblink.1 > docs/rgblink.1.html
+ $Qmandoc ${MANDOC} src/link/rgblink.5 > docs/rgblink.5.html
+ $Qmandoc ${MANDOC} src/gfx/rgbgfx.1 > docs/rgbgfx.1.html
# Targets for the project maintainer to easily create Windows exes.
# This is not for Windows users!
--- a/README.rst
+++ b/README.rst
@@ -12,12 +12,11 @@
This is a fork of the original RGBDS which aims to make the programs more like
other UNIX tools.
-This toolchain is maintained on `GitHub <https://github.com/rednex/rgbds>`__, as
-well as its `documentation <https://github.com/rednex/rednex.github.io>`__.
+This toolchain is maintained on `GitHub <https://github.com/rednex/rgbds>`__.
The documentation of this toolchain can be viewed online
-`here <https://rednex.github.io/>`__, it is generated from the man pages found
-in this repository.
+`here <https://rednex.github.io/rgbds/>`__, it is generated from the man pages
+found in this repository.
1. Installing RGBDS
-------------------
--- /dev/null
+++ b/docs/gbds.7.html
@@ -1,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBDS(7)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBDS(7)</td>
+ <td class="head-vol">Miscellaneous Information Manual</td>
+ <td class="head-rtitle">RGBDS(7)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgbds</b> — <span class="Nd" title="Nd">Rednex
+ Game Boy Development System</span>
+<h1 class="Sh" title="Sh" id="EXAMPLES"><a class="selflink" href="#EXAMPLES">EXAMPLES</a></h1>
+To get a working ROM image from a single assembly source file:
+<div class="Pp"></div>
+<div class="D1">$ rgbasm -o bar.o foo.asm</div>
+<div class="D1">$ rgblink -o baz.gb bar.o</div>
+<div class="D1">$ rgbfix -v -p 0 baz.gb</div>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgbfix(1)</a>,
+ <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgbds(5)</a>, <a class="Xr" title="Xr">gbz80(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<dl class="Bl-ohang">
+ <dt class="It-ohang"></dt>
+ <dd class="It-ohang">1997, Carsten Sørensen (AKA SurfSmurf) writes
+ ASMotor as a general-purpose assembler/linker system for DOS/Win32.</dd>
+ <dt class="It-ohang"></dt>
+ <dd class="It-ohang">1999, Justin Lloyd (AKA Otaku no Zoku) adapts ASMotor to
+ read and produce GBZ80 assembly/machine code, and releases this version as
+ RGBDS.</dd>
+ <dt class="It-ohang"></dt>
+ <dd class="It-ohang">2009, Vegard Nossum adapts the code to be more UNIX-like
+ and releases this version as rgbds-linux on GitHub.</dd>
+ <dt class="It-ohang"></dt>
+ <dd class="It-ohang">2010, Anthony J. Bentley forks that repository. The fork
+ becomes the reference implementation of rgbds.</dd>
+ <dt class="It-ohang"></dt>
+ <dd class="It-ohang">2017, Bentley's repository is moved to a neutral name. It
+ is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</dd>
+</dl>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/gbz80.7.html
@@ -1,0 +1,1697 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>GBZ80(7)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">GBZ80(7)</td>
+ <td class="head-vol">Miscellaneous Information Manual</td>
+ <td class="head-rtitle">GBZ80(7)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">gbz80</b> — <span class="Nd" title="Nd">CPU
+ opcode reference</span>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+This is the list of opcodes supported by <a class="Xr" title="Xr">rgbasm(1)</a>,
+ including a short description, the number of bytes needed to encode them and
+ the number of CPU cycles at 1MHz (or 2MHz in GBC dual speed mode) needed to
+ complete them.
+<div class="Pp"></div>
+Note: All arithmetic/logic operations that use register
+ <b class="Sy" title="Sy">A</b> as destination can omit the destination as it
+ is assumed it's register <b class="Sy" title="Sy">A</b>. The following two
+ lines have the same effect:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">OR A,B</code></div>
+<div class="D1"><code class="Li">OR B</code></div>
+<h1 class="Sh" title="Sh" id="LEGEND"><a class="selflink" href="#LEGEND">LEGEND</a></h1>
+List of abbreviations used in this document.
+<dl class="Bl-tag">
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">r8</var></dt>
+ <dd class="It-tag">Any of the 8-bit registers (<b class="Sy" title="Sy">A</b>,
+ <b class="Sy" title="Sy">B</b>, <b class="Sy" title="Sy">C</b>,
+ <b class="Sy" title="Sy">D</b>, <b class="Sy" title="Sy">E</b>,
+ <b class="Sy" title="Sy">H</b>, <b class="Sy" title="Sy">L</b>).</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">r16</var></dt>
+ <dd class="It-tag">Any of the general-purpose 16-bit registers
+ (<b class="Sy" title="Sy">BC</b>, <b class="Sy" title="Sy">DE</b>,
+ <b class="Sy" title="Sy">HL</b>).</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">n8</var></dt>
+ <dd class="It-tag">8-bit integer constant.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">n16</var></dt>
+ <dd class="It-tag">16-bit integer constant.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">e8</var></dt>
+ <dd class="It-tag">8-bit offset
+ (<b class="Fl" title="Fl">-</b><b class="Sy" title="Sy">128</b> to
+ <b class="Sy" title="Sy">127</b>).</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">u3</var></dt>
+ <dd class="It-tag">3-bit unsigned integer constant
+ (<b class="Sy" title="Sy">0</b> to <b class="Sy" title="Sy">7</b>).</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">cc</var></dt>
+ <dd class="It-tag">Condition codes:
+ <dl class="Bl-tag Bl-compact">
+ <dt class="It-tag"><b class="Sy" title="Sy">Z</b>:</dt>
+ <dd class="It-tag">Execute if Z is set.</dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">NZ</b>:</dt>
+ <dd class="It-tag">Execute if Z is not set.</dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">C</b>:</dt>
+ <dd class="It-tag">Execute if C is set.</dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">NC</b>:</dt>
+ <dd class="It-tag">Execute if C is not set.</dd>
+ </dl>
+ </dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><var class="Ar" title="Ar">vec</var></dt>
+ <dd class="It-tag">One of the <var class="Ar" title="Ar">RST</var> vectors
+ (<b class="Sy" title="Sy">0x00</b>, <b class="Sy" title="Sy">0x08</b>,
+ <b class="Sy" title="Sy">0x10</b>, <b class="Sy" title="Sy">0x18</b>,
+ <b class="Sy" title="Sy">0x20</b>, <b class="Sy" title="Sy">0x28</b>,
+ <b class="Sy" title="Sy">0x30</b> and
+ <b class="Sy" title="Sy">0x38</b>).</dd>
+</dl>
+<h1 class="Sh" title="Sh" id="INSTRUCTION_OVERVIEW"><a class="selflink" href="#INSTRUCTION_OVERVIEW">INSTRUCTION
+ OVERVIEW</a></h1>
+<h2 class="Ss" title="Ss" id="8-bit_Arithmetic_and_Logic_Instructions"><a class="selflink" href="#8-bit_Arithmetic_and_Logic_Instructions">8-bit
+ Arithmetic and Logic Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADC_A,r8">ADC
+ A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADC_A,[HL]">ADC
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADC_A,n8">ADC
+ A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADD_A,r8">ADD
+ A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADD_A,[HL]">ADD
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADD_A,n8">ADD
+ A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#AND_A,r8">AND
+ A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#AND_A,[HL]">AND
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#AND_A,n8">AND
+ A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CP_A,r8">CP A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CP_A,[HL]">CP
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CP_A,n8">CP A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DEC_r8">DEC r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DEC_[HL]">DEC
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#INC_r8">INC r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#INC_[HL]">INC
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#OR_A,r8">OR A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#OR_A,[HL]">OR
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#OR_A,n8">OR A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SBC_A,r8">SBC
+ A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SBC_A,[HL]">SBC
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SBC_A,n8">SBC
+ A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SUB_A,r8">SUB
+ A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SUB_A,[HL]">SUB
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SUB_A,n8">SUB
+ A,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#XOR_A,r8">XOR
+ A,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#XOR_A,[HL]">XOR
+ A,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#XOR_A,n8">XOR
+ A,n8</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="16-bit_Arithmetic_Instructions"><a class="selflink" href="#16-bit_Arithmetic_Instructions">16-bit
+ Arithmetic Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADD_HL,r16">ADD
+ HL,r16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DEC_r16">DEC r16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#INC_r16">INC r16</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Bit_Operations_Instructions"><a class="selflink" href="#Bit_Operations_Instructions">Bit
+ Operations Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#BIT_u3,r8">BIT
+ u3,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#BIT_u3,[HL]">BIT
+ u3,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RES_u3,r8">RES
+ u3,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RES_u3,[HL]">RES
+ u3,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SET_u3,r8">SET
+ u3,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SET_u3,[HL]">SET
+ u3,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SWAP_r8">SWAP r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SWAP_[HL]">SWAP
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Bit_Shift_Instructions"><a class="selflink" href="#Bit_Shift_Instructions">Bit
+ Shift Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RL_r8">RL r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RL_[HL]">RL [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RLA">RLA</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RLC_r8">RLC r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RLC_[HL]">RLC
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RLCA">RLCA</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RR_r8">RR r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RR_[HL]">RR [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RRA">RRA</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RRC_r8">RRC r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RRC_[HL]">RRC
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RRCA">RRCA</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SLA_r8">SLA r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SLA_[HL]">SLA
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SRA_r8">SRA r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SRA_[HL]">SRA
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SRL_r8">SRL r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SRL_[HL]">SRL
+ [HL]</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Load_Instructions"><a class="selflink" href="#Load_Instructions">Load
+ Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_r8,r8">LD
+ r8,r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_r8,n8">LD
+ r8,n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_r16,n16">LD
+ r16,n16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[HL],r8">LD
+ [HL],r8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[HL],n8">LD
+ [HL],n8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_r8,[HL]">LD
+ r8,[HL]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[r16],A">LD
+ [r16],A</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[n16],A">LD
+ [n16],A</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[$FF00+n8],A">LD
+ [$FF00+n8],A</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[$FF00+C],A">LD
+ [$FF00+C],A</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_A,[r16]">LD
+ A,[r16]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_A,[n16]">LD
+ A,[n16]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_A,[$FF00+n8]">LD
+ A,[$FF00+n8]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_A,[$FF00+C]">LD
+ A,[$FF00+C]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[HL+],A">LD
+ [HL+],A</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[HL-],A">LD
+ [HL-],A</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_A,[HL+]">LD
+ A,[HL+]</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_A,[HL-]">LD
+ A,[HL-]</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Jumps_and_Subroutines"><a class="selflink" href="#Jumps_and_Subroutines">Jumps
+ and Subroutines</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CALL_n16">CALL
+ n16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CALL_cc,n16">CALL
+ cc,n16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#JP_HL">JP HL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#JP_n16">JP n16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#JP_cc,n16">JP
+ cc,n16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#JR_e8">JR e8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#JR_cc,e8">JR
+ cc,e8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RET_cc">RET cc</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RET">RET</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RETI">RETI</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RST_vec">RST vec</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Stack_Operations_Instructions"><a class="selflink" href="#Stack_Operations_Instructions">Stack
+ Operations Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADD_HL,SP">ADD
+ HL,SP</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ADD_SP,e8">ADD
+ SP,e8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DEC_SP">DEC SP</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#INC_SP">INC SP</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_SP,n16">LD
+ SP,n16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_[n16],SP">LD
+ [n16],SP</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_HL,SP+e8">LD
+ HL,SP+e8</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LD_SP,HL">LD
+ SP,HL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#POP_AF">POP AF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#POP_r16">POP r16</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PUSH_AF">PUSH AF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PUSH_r16">PUSH
+ r16</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Miscellaneous_Instructions"><a class="selflink" href="#Miscellaneous_Instructions">Miscellaneous
+ Instructions</a></h2>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CCF">CCF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#CPL">CPL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DAA">DAA</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DI">DI</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#EI">EI</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#HALT">HALT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#NOP">NOP</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SCF">SCF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STOP">STOP</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h1 class="Sh" title="Sh" id="INSTRUCTION_REFERENCE"><a class="selflink" href="#INSTRUCTION_REFERENCE">INSTRUCTION
+ REFERENCE</a></h1>
+<h2 class="Ss" title="Ss" id="ADC_A,r8"><a class="selflink" href="#ADC_A,r8">ADC
+ A,r8</a></h2>
+Add the value in <var class="Ar" title="Ar">r8</var> plus the carry flag to
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if overflow from bit
+ 3.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if overflow from bit
+ 7.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="ADC_A,[HL]"><a class="selflink" href="#ADC_A,[HL]">ADC
+ A,[HL]</a></h2>
+Add the value pointed by <b class="Sy" title="Sy">HL</b> plus the carry flag to
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#ADC_A,r8">ADC A,r8</a>
+<h2 class="Ss" title="Ss" id="ADC_A,n8"><a class="selflink" href="#ADC_A,n8">ADC
+ A,n8</a></h2>
+Add the value <var class="Ar" title="Ar">n8</var> plus the carry flag to
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#ADC_A,r8">ADC A,r8</a>
+<h2 class="Ss" title="Ss" id="ADD_A,r8"><a class="selflink" href="#ADD_A,r8">ADD
+ A,r8</a></h2>
+Add the value in <var class="Ar" title="Ar">r8</var> to
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if overflow from bit
+ 3.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if overflow from bit
+ 7.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="ADD_A,[HL]"><a class="selflink" href="#ADD_A,[HL]">ADD
+ A,[HL]</a></h2>
+Add the value pointed by <b class="Sy" title="Sy">HL</b> to
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#ADD_A,r8">ADD A,r8</a>
+<h2 class="Ss" title="Ss" id="ADD_A,n8"><a class="selflink" href="#ADD_A,n8">ADD
+ A,n8</a></h2>
+Add the value <var class="Ar" title="Ar">n8</var> to
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#ADD_A,r8">ADD A,r8</a>
+<h2 class="Ss" title="Ss" id="ADD_HL,r16"><a class="selflink" href="#ADD_HL,r16">ADD
+ HL,r16</a></h2>
+Add the value in <var class="Ar" title="Ar">r16</var> to
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if overflow from bit
+ 11.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if overflow from bit
+ 15.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="ADD_HL,SP"><a class="selflink" href="#ADD_HL,SP">ADD
+ HL,SP</a></h2>
+Add the value in <b class="Sy" title="Sy">SP</b> to
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#ADD_HL,r16">ADD HL,r16</a>
+<h2 class="Ss" title="Ss" id="ADD_SP,e8"><a class="selflink" href="#ADD_SP,e8">ADD
+ SP,e8</a></h2>
+Add the signed value <var class="Ar" title="Ar">e8</var> to
+ <b class="Sy" title="Sy">SP</b>.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if overflow from bit
+ 3.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if overflow from bit
+ 7.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="AND_A,r8"><a class="selflink" href="#AND_A,r8">AND
+ A,r8</a></h2>
+Bitwise AND between the value in <var class="Ar" title="Ar">r8</var> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 1</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: 0</li>
+</ul>
+<h2 class="Ss" title="Ss" id="AND_A,[HL]"><a class="selflink" href="#AND_A,[HL]">AND
+ A,[HL]</a></h2>
+Bitwise AND between the value pointed by <b class="Sy" title="Sy">HL</b> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#AND_A,r8">AND A,r8</a>
+<h2 class="Ss" title="Ss" id="AND_A,n8"><a class="selflink" href="#AND_A,n8">AND
+ A,n8</a></h2>
+Bitwise AND between the value in <var class="Ar" title="Ar">n8</var> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#AND_A,r8">AND A,r8</a>
+<h2 class="Ss" title="Ss" id="BIT_u3,r8"><a class="selflink" href="#BIT_u3,r8">BIT
+ u3,r8</a></h2>
+Test bit <var class="Ar" title="Ar">u3</var> in register
+ <var class="Ar" title="Ar">r8</var>, set the zero flag if bit not set.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if the selected bit
+ is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 1</li>
+</ul>
+<h2 class="Ss" title="Ss" id="BIT_u3,[HL]"><a class="selflink" href="#BIT_u3,[HL]">BIT
+ u3,[HL]</a></h2>
+Test bit <var class="Ar" title="Ar">u3</var> in the byte pointed by
+ <b class="Sy" title="Sy">HL</b>, set the zero flag if bit not set.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#BIT_u3,r8">BIT u3,r8</a>
+<h2 class="Ss" title="Ss" id="CALL_n16"><a class="selflink" href="#CALL_n16">CALL
+ n16</a></h2>
+Call address <var class="Ar" title="Ar">n16</var>.
+<div class="Pp"></div>
+Cycles: 6
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="CALL_cc,n16"><a class="selflink" href="#CALL_cc,n16">CALL
+ cc,n16</a></h2>
+Call address <var class="Ar" title="Ar">n16</var> if condition
+ <var class="Ar" title="Ar">cc</var> is met.
+<div class="Pp"></div>
+Cycles: 6/3
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="CCF"><a class="selflink" href="#CCF">CCF</a></h2>
+Complement Carry Flag.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Complemented.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="CP_A,r8"><a class="selflink" href="#CP_A,r8">CP
+ A,r8</a></h2>
+Subtract the value in <var class="Ar" title="Ar">r8</var> from
+ <b class="Sy" title="Sy">A</b> and set flags accordingly, but don't store the
+ result.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 1</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if no borrow from
+ bit 4.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if no borrow (set if
+ <var class="Ar" title="Ar">r8</var> >
+ <b class="Sy" title="Sy">A</b>).</li>
+</ul>
+<h2 class="Ss" title="Ss" id="CP_A,[HL]"><a class="selflink" href="#CP_A,[HL]">CP
+ A,[HL]</a></h2>
+Subtract the value pointed by <b class="Sy" title="Sy">HL</b> from
+ <b class="Sy" title="Sy">A</b> and set flags accordingly, but don't store the
+ result.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#CP_A,r8">CP A,r8</a>
+<h2 class="Ss" title="Ss" id="CP_A,n8"><a class="selflink" href="#CP_A,n8">CP
+ A,n8</a></h2>
+Subtract the value <var class="Ar" title="Ar">n8</var> from
+ <b class="Sy" title="Sy">A</b> and set flags accordingly, but don't store the
+ result.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#CP_A,r8">CP A,r8</a>
+<h2 class="Ss" title="Ss" id="CPL"><a class="selflink" href="#CPL">CPL</a></h2>
+Complement accumulator (<b class="Sy" title="Sy">A</b> =
+ <b class="Sy" title="Sy">~A</b>).
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 1</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 1</li>
+</ul>
+<h2 class="Ss" title="Ss" id="DAA"><a class="selflink" href="#DAA">DAA</a></h2>
+Decimal adjust register A to get a correct BCD representation after an
+ arithmetic instruction.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set or reset depending
+ on the operation.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="DEC_r8"><a class="selflink" href="#DEC_r8">DEC
+ r8</a></h2>
+Decrement value in register <var class="Ar" title="Ar">r8</var> by 1.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 1</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if no borrow from
+ bit 4.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="DEC_[HL]"><a class="selflink" href="#DEC_[HL]">DEC
+ [HL]</a></h2>
+Decrement the value pointed by <b class="Sy" title="Sy">HL</b> by 1.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#DEC_r8">DEC r8</a>
+<h2 class="Ss" title="Ss" id="DEC_r16"><a class="selflink" href="#DEC_r16">DEC
+ r16</a></h2>
+Decrement value in register <var class="Ar" title="Ar">r16</var> by 1.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="DEC_SP"><a class="selflink" href="#DEC_SP">DEC
+ SP</a></h2>
+Decrement value in register <b class="Sy" title="Sy">SP</b> by 1.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="DI"><a class="selflink" href="#DI">DI</a></h2>
+Disable Interrupts.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="EI"><a class="selflink" href="#EI">EI</a></h2>
+Enable Interrupts.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="HALT"><a class="selflink" href="#HALT">HALT</a></h2>
+Enter CPU low power mode.
+<div class="Pp"></div>
+Cycles: -
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="INC_r8"><a class="selflink" href="#INC_r8">INC
+ r8</a></h2>
+Increment value in register <var class="Ar" title="Ar">r8</var> by 1.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if overflow from bit
+ 3.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="INC_[HL]"><a class="selflink" href="#INC_[HL]">INC
+ [HL]</a></h2>
+Increment the value pointed by <b class="Sy" title="Sy">HL</b> by 1.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#INC_r8">INC r8</a>
+<h2 class="Ss" title="Ss" id="INC_r16"><a class="selflink" href="#INC_r16">INC
+ r16</a></h2>
+Increment value in register <var class="Ar" title="Ar">r16</var> by 1.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="INC_SP"><a class="selflink" href="#INC_SP">INC
+ SP</a></h2>
+Increment value in register <b class="Sy" title="Sy">SP</b> by 1.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="JP_n16"><a class="selflink" href="#JP_n16">JP
+ n16</a></h2>
+Absolute jump to address <var class="Ar" title="Ar">n16</var>.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="JP_cc,n16"><a class="selflink" href="#JP_cc,n16">JP
+ cc,n16</a></h2>
+Absolute jump to address <var class="Ar" title="Ar">n16</var> if condition
+ <var class="Ar" title="Ar">cc</var> is met.
+<div class="Pp"></div>
+Cycles: 4/3
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="JP_HL"><a class="selflink" href="#JP_HL">JP
+ HL</a></h2>
+Jump to address in <b class="Sy" title="Sy">HL</b>, that is, load
+ <b class="Sy" title="Sy">PC</b> with value in register
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="JR_e8"><a class="selflink" href="#JR_e8">JR
+ e8</a></h2>
+Relative jump by adding <var class="Ar" title="Ar">e8</var> to the current
+ address.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="JR_cc,e8"><a class="selflink" href="#JR_cc,e8">JR
+ cc,e8</a></h2>
+Relative jump by adding <var class="Ar" title="Ar">e8</var> to the current
+ address if condition <var class="Ar" title="Ar">cc</var> is met.
+<div class="Pp"></div>
+Cycles: 3/2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_r8,r8"><a class="selflink" href="#LD_r8,r8">LD
+ r8,r8</a></h2>
+Store value in register on the right into register on the left.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_r8,n8"><a class="selflink" href="#LD_r8,n8">LD
+ r8,n8</a></h2>
+Load value <var class="Ar" title="Ar">n8</var> into register
+ <var class="Ar" title="Ar">r8</var>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_r16,n16"><a class="selflink" href="#LD_r16,n16">LD
+ r16,n16</a></h2>
+Load value <var class="Ar" title="Ar">n16</var> into register
+ <var class="Ar" title="Ar">r16</var>.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[HL],r8"><a class="selflink" href="#LD_[HL],r8">LD
+ [HL],r8</a></h2>
+Store value in register <var class="Ar" title="Ar">r8</var> into byte pointed by
+ register <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[HL],n8"><a class="selflink" href="#LD_[HL],n8">LD
+ [HL],n8</a></h2>
+Store value <var class="Ar" title="Ar">n8</var> into byte pointed by register
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_r8,[HL]"><a class="selflink" href="#LD_r8,[HL]">LD
+ r8,[HL]</a></h2>
+Load value into register <var class="Ar" title="Ar">r8</var> from byte pointed
+ by register <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[r16],A"><a class="selflink" href="#LD_[r16],A">LD
+ [r16],A</a></h2>
+Store value in register <b class="Sy" title="Sy">A</b> into address pointed by
+ register <var class="Ar" title="Ar">r16</var>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[n16],A"><a class="selflink" href="#LD_[n16],A">LD
+ [n16],A</a></h2>
+Store value in register <b class="Sy" title="Sy">A</b> into address
+ <var class="Ar" title="Ar">n16</var>.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[$FF00+n8],A"><a class="selflink" href="#LD_[$FF00+n8],A">LD
+ [$FF00+n8],A</a></h2>
+Store value in register <b class="Sy" title="Sy">A</b> into high RAM or I/O
+ registers.
+<div class="Pp"></div>
+The following synonym forces this encoding: <b class="Sy" title="Sy">LDH
+ [$FF00+n8],A</b>
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[$FF00+C],A"><a class="selflink" href="#LD_[$FF00+C],A">LD
+ [$FF00+C],A</a></h2>
+Store value in register <b class="Sy" title="Sy">A</b> into high RAM or I/O
+ registers.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_A,[r16]"><a class="selflink" href="#LD_A,[r16]">LD
+ A,[r16]</a></h2>
+Load value in register <b class="Sy" title="Sy">A</b> from address pointed by
+ register <var class="Ar" title="Ar">r16</var>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_A,[n16]"><a class="selflink" href="#LD_A,[n16]">LD
+ A,[n16]</a></h2>
+Load value in register <b class="Sy" title="Sy">A</b> from address
+ <var class="Ar" title="Ar">n16</var>.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_A,[$FF00+n8]"><a class="selflink" href="#LD_A,[$FF00+n8]">LD
+ A,[$FF00+n8]</a></h2>
+Load value in register <b class="Sy" title="Sy">A</b> from high RAM or I/O
+ registers.
+<div class="Pp"></div>
+The following synonym forces this encoding: <b class="Sy" title="Sy">LDH
+ A,[$FF00+n8]</b>
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_A,[$FF00+C]"><a class="selflink" href="#LD_A,[$FF00+C]">LD
+ A,[$FF00+C]</a></h2>
+Load value in register <b class="Sy" title="Sy">A</b> from high RAM or I/O
+ registers.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[HL+],A"><a class="selflink" href="#LD_[HL+],A">LD
+ [HL+],A</a></h2>
+Store value in register <b class="Sy" title="Sy">A</b> into byte pointed by
+ <b class="Sy" title="Sy">HL</b> and post-increment
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[HL-],A"><a class="selflink" href="#LD_[HL-],A">LD
+ [HL-],A</a></h2>
+Store value in register <b class="Sy" title="Sy">A</b> into byte pointed by
+ <b class="Sy" title="Sy">HL</b> and post-decrement
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_A,[HL+]"><a class="selflink" href="#LD_A,[HL+]">LD
+ A,[HL+]</a></h2>
+Load value into register <b class="Sy" title="Sy">A</b> from byte pointed by
+ <b class="Sy" title="Sy">HL</b> and post-increment
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_A,[HL-]"><a class="selflink" href="#LD_A,[HL-]">LD
+ A,[HL-]</a></h2>
+Load value into register <b class="Sy" title="Sy">A</b> from byte pointed by
+ <b class="Sy" title="Sy">HL</b> and post-decrement
+ <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_SP,n16"><a class="selflink" href="#LD_SP,n16">LD
+ SP,n16</a></h2>
+Load value <var class="Ar" title="Ar">n16</var> into register
+ <b class="Sy" title="Sy">SP</b>.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_[n16],SP"><a class="selflink" href="#LD_[n16],SP">LD
+ [n16],SP</a></h2>
+Store <b class="Sy" title="Sy">SP</b> into addresses
+ <var class="Ar" title="Ar">n16</var> (LSB) and
+ <var class="Ar" title="Ar">n16</var> + 1 (MSB).
+<div class="Pp"></div>
+Cycles: 5
+<div class="Pp"></div>
+Bytes: 3
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="LD_HL,SP+e8"><a class="selflink" href="#LD_HL,SP+e8">LD
+ HL,SP+e8</a></h2>
+Add the signed value <var class="Ar" title="Ar">e8</var> to
+ <b class="Sy" title="Sy">SP</b> and store the result in
+ <b class="Sy" title="Sy">HL.</b>
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if overflow from bit
+ 3.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if overflow from bit
+ 7.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="LD_SP,HL"><a class="selflink" href="#LD_SP,HL">LD
+ SP,HL</a></h2>
+Load register <b class="Sy" title="Sy">HL</b> into register
+ <b class="Sy" title="Sy">SP</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="NOP"><a class="selflink" href="#NOP">NOP</a></h2>
+No operation.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="OR_A,r8"><a class="selflink" href="#OR_A,r8">OR
+ A,r8</a></h2>
+Bitwise OR between the value in <var class="Ar" title="Ar">r8</var> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: 0</li>
+</ul>
+<h2 class="Ss" title="Ss" id="OR_A,[HL]"><a class="selflink" href="#OR_A,[HL]">OR
+ A,[HL]</a></h2>
+Bitwise OR between the value pointed by <b class="Sy" title="Sy">HL</b> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#OR_A,r8">OR A,r8</a>
+<h2 class="Ss" title="Ss" id="OR_A,n8"><a class="selflink" href="#OR_A,n8">OR
+ A,n8</a></h2>
+Bitwise OR between the value in <var class="Ar" title="Ar">n8</var> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#OR_A,r8">OR A,r8</a>
+<h2 class="Ss" title="Ss" id="POP_AF"><a class="selflink" href="#POP_AF">POP
+ AF</a></h2>
+Pop register <b class="Sy" title="Sy">AF</b> from the stack.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="POP_r16"><a class="selflink" href="#POP_r16">POP
+ r16</a></h2>
+Pop register <var class="Ar" title="Ar">r16</var> from the stack.
+<div class="Pp"></div>
+Cycles: 3
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="PUSH_AF"><a class="selflink" href="#PUSH_AF">PUSH
+ AF</a></h2>
+Push register <b class="Sy" title="Sy">AF</b> into the stack.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="PUSH_r16"><a class="selflink" href="#PUSH_r16">PUSH
+ r16</a></h2>
+Push register <var class="Ar" title="Ar">r16</var> into the stack.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="RES_u3,r8"><a class="selflink" href="#RES_u3,r8">RES
+ u3,r8</a></h2>
+Set bit <var class="Ar" title="Ar">u3</var> in register
+ <var class="Ar" title="Ar">r8</var> to 0.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="RES_u3,[HL]"><a class="selflink" href="#RES_u3,[HL]">RES
+ u3,[HL]</a></h2>
+Set bit <var class="Ar" title="Ar">u3</var> in the byte pointed by
+ <b class="Sy" title="Sy">HL</b> to 0.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="RET"><a class="selflink" href="#RET">RET</a></h2>
+Return from subroutine.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="RET_cc"><a class="selflink" href="#RET_cc">RET
+ cc</a></h2>
+Return from subroutine if condition <var class="Ar" title="Ar">cc</var> is met.
+<div class="Pp"></div>
+Cycles: 5/2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="RETI"><a class="selflink" href="#RETI">RETI</a></h2>
+Return from subroutine and enable interrupts.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="RL_r8"><a class="selflink" href="#RL_r8">RL
+ r8</a></h2>
+Rotate register <var class="Ar" title="Ar">r8</var> left through carry.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- C</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RL_[HL]"><a class="selflink" href="#RL_[HL]">RL
+ [HL]</a></h2>
+Rotate value pointed by <b class="Sy" title="Sy">HL</b> left through carry.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- C</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#RL_r8">RL r8</a>
+<h2 class="Ss" title="Ss" id="RLA"><a class="selflink" href="#RLA">RLA</a></h2>
+Rotate register <b class="Sy" title="Sy">A</b> left through carry.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- C</div>
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RLC_r8"><a class="selflink" href="#RLC_r8">RLC
+ r8</a></h2>
+Rotate register <var class="Ar" title="Ar">r8</var> left.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- [7]</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RLC_[HL]"><a class="selflink" href="#RLC_[HL]">RLC
+ [HL]</a></h2>
+Rotate value pointed by <b class="Sy" title="Sy">HL</b> left.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- [7]</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#RLC_r8">RLC r8</a>
+<h2 class="Ss" title="Ss" id="RLCA"><a class="selflink" href="#RLCA">RLCA</a></h2>
+Rotate register <b class="Sy" title="Sy">A</b> left.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- [7]</div>
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RR_r8"><a class="selflink" href="#RR_r8">RR
+ r8</a></h2>
+Rotate register <var class="Ar" title="Ar">r8</var> right through carry.
+<div class="Pp"></div>
+<div class="D1">C -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RR_[HL]"><a class="selflink" href="#RR_[HL]">RR
+ [HL]</a></h2>
+Rotate value pointed by <b class="Sy" title="Sy">HL</b> right through carry.
+<div class="Pp"></div>
+<div class="D1">C -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#RR_r8">RR r8</a>
+<h2 class="Ss" title="Ss" id="RRA"><a class="selflink" href="#RRA">RRA</a></h2>
+Rotate register <b class="Sy" title="Sy">A</b> right through carry.
+<div class="Pp"></div>
+<div class="D1">C -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RRC_r8"><a class="selflink" href="#RRC_r8">RRC
+ r8</a></h2>
+Rotate register <var class="Ar" title="Ar">r8</var> right.
+<div class="Pp"></div>
+<div class="D1">[0] -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RRC_[HL]"><a class="selflink" href="#RRC_[HL]">RRC
+ [HL]</a></h2>
+Rotate value pointed by <b class="Sy" title="Sy">HL</b> right.
+<div class="Pp"></div>
+<div class="D1">[0] -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#RRC_r8">RRC r8</a>
+<h2 class="Ss" title="Ss" id="RRCA"><a class="selflink" href="#RRCA">RRCA</a></h2>
+Rotate register <b class="Sy" title="Sy">A</b> right.
+<div class="Pp"></div>
+<div class="D1">[0] -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="RST_vec"><a class="selflink" href="#RST_vec">RST
+ vec</a></h2>
+Call restart vector <var class="Ar" title="Ar">vec</var>.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="SBC_A,r8"><a class="selflink" href="#SBC_A,r8">SBC
+ A,r8</a></h2>
+Subtract the value in <var class="Ar" title="Ar">r8</var> and the carry flag
+ from <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 1</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if no borrow from
+ bit 4.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if no borrow (set if
+ <var class="Ar" title="Ar">r8</var> >
+ <b class="Sy" title="Sy">A</b>).</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SBC_A,[HL]"><a class="selflink" href="#SBC_A,[HL]">SBC
+ A,[HL]</a></h2>
+Subtract the value pointed by <b class="Sy" title="Sy">HL</b> and the carry flag
+ from <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SBC_A,r8">SBC A,r8</a>
+<h2 class="Ss" title="Ss" id="SBC_A,n8"><a class="selflink" href="#SBC_A,n8">SBC
+ A,n8</a></h2>
+Subtract the value <var class="Ar" title="Ar">n8</var> and the carry flag from
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SBC_A,r8">SBC A,r8</a>
+<h2 class="Ss" title="Ss" id="SCF"><a class="selflink" href="#SCF">SCF</a></h2>
+Set Carry Flag.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: 1</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SET_u3,r8"><a class="selflink" href="#SET_u3,r8">SET
+ u3,r8</a></h2>
+Set bit <var class="Ar" title="Ar">u3</var> in register
+ <var class="Ar" title="Ar">r8</var> to 1.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="SET_u3,[HL]"><a class="selflink" href="#SET_u3,[HL]">SET
+ u3,[HL]</a></h2>
+Set bit <var class="Ar" title="Ar">u3</var> in the byte pointed by
+ <b class="Sy" title="Sy">HL</b> to 1.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="SLA_r8"><a class="selflink" href="#SLA_r8">SLA
+ r8</a></h2>
+Shift left arithmetic register <var class="Ar" title="Ar">r8</var>.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- 0</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SLA_[HL]"><a class="selflink" href="#SLA_[HL]">SLA
+ [HL]</a></h2>
+Shift left arithmetic value pointed by <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+<div class="D1">C <- [7 <- 0] <- 0</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SLA_r8">SLA r8</a>
+<h2 class="Ss" title="Ss" id="SRA_r8"><a class="selflink" href="#SRA_r8">SRA
+ r8</a></h2>
+Shift right arithmetic register <var class="Ar" title="Ar">r8</var>.
+<div class="Pp"></div>
+<div class="D1">[7] -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SRA_[HL]"><a class="selflink" href="#SRA_[HL]">SRA
+ [HL]</a></h2>
+Shift right arithmetic value pointed by <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+<div class="D1">[7] -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SRA_r8">SRA r8</a>
+<h2 class="Ss" title="Ss" id="SRL_r8"><a class="selflink" href="#SRL_r8">SRL
+ r8</a></h2>
+Shift right logic register <var class="Ar" title="Ar">r8</var>.
+<div class="Pp"></div>
+<div class="D1">0 -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set according to
+ result.</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SRL_[HL]"><a class="selflink" href="#SRL_[HL]">SRL
+ [HL]</a></h2>
+Shift right logic value pointed by <b class="Sy" title="Sy">HL</b>.
+<div class="Pp"></div>
+<div class="D1">0 -> [7 -> 0] -> C</div>
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SRA_r8">SRA r8</a>
+<h2 class="Ss" title="Ss" id="STOP"><a class="selflink" href="#STOP">STOP</a></h2>
+Enter CPU very low power mode. Also used to switch between doube speed and
+ normal CPU modes in GBC.
+<div class="Pp"></div>
+Cycles: -
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: None affected.
+<h2 class="Ss" title="Ss" id="SUB_A,r8"><a class="selflink" href="#SUB_A,r8">SUB
+ A,r8</a></h2>
+Subtract the value in <var class="Ar" title="Ar">r8</var> from
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 1</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: Set if no borrow from
+ bit 4.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: Set if no borrow (set if
+ <var class="Ar" title="Ar">r8</var> >
+ <b class="Sy" title="Sy">A</b>).</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SUB_A,[HL]"><a class="selflink" href="#SUB_A,[HL]">SUB
+ A,[HL]</a></h2>
+Subtract the value pointed by <b class="Sy" title="Sy">HL</b> from
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SUB_A,r8">SUB A,r8</a>
+<h2 class="Ss" title="Ss" id="SUB_A,n8"><a class="selflink" href="#SUB_A,n8">SUB
+ A,n8</a></h2>
+Subtract the value <var class="Ar" title="Ar">n8</var> from
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SUB_A,r8">SUB A,r8</a>
+<h2 class="Ss" title="Ss" id="SWAP_r8"><a class="selflink" href="#SWAP_r8">SWAP
+ r8</a></h2>
+Swap upper 4 bits in register <var class="Ar" title="Ar">r8</var> and the lower
+ ones.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: 0</li>
+</ul>
+<h2 class="Ss" title="Ss" id="SWAP_[HL]"><a class="selflink" href="#SWAP_[HL]">SWAP
+ [HL]</a></h2>
+Swap upper 4 bits in the byte pointed by <b class="Sy" title="Sy">HL</b> and the
+ lower ones.
+<div class="Pp"></div>
+Cycles: 4
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#SWAP_r8">SWAP r8</a>
+<h2 class="Ss" title="Ss" id="XOR_A,r8"><a class="selflink" href="#XOR_A,r8">XOR
+ A,r8</a></h2>
+Bitwise XOR between the value in <var class="Ar" title="Ar">r8</var> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 1
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags:
+<ul class="Bl-bullet Bl-compact">
+ <li class="It-bullet"><b class="Sy" title="Sy">Z</b>: Set if result is 0.</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">N</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">H</b>: 0</li>
+ <li class="It-bullet"><b class="Sy" title="Sy">C</b>: 0</li>
+</ul>
+<h2 class="Ss" title="Ss" id="XOR_A,[HL]"><a class="selflink" href="#XOR_A,[HL]">XOR
+ A,[HL]</a></h2>
+Bitwise XOR between the value pointed by <b class="Sy" title="Sy">HL</b> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 1
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#XOR_A,r8">XOR A,r8</a>
+<h2 class="Ss" title="Ss" id="XOR_A,n8"><a class="selflink" href="#XOR_A,n8">XOR
+ A,n8</a></h2>
+Bitwise XOR between the value in <var class="Ar" title="Ar">n8</var> and
+ <b class="Sy" title="Sy">A</b>.
+<div class="Pp"></div>
+Cycles: 2
+<div class="Pp"></div>
+Bytes: 2
+<div class="Pp"></div>
+Flags: See <a class="Sx" title="Sx" href="#XOR_A,r8">XOR A,r8</a>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgbds(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgbds</b> was originally written by Carsten
+ Sørensen as part of the ASMotor package, and was later packaged in
+ RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/index.html
@@ -1,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+ <title>General Information</title>
+ <link rel="stylesheet" type="text/css" href="./style.css">
+</head>
+<body>
+<h1>RGBDS — Rednex Game Boy Development System</h1>
+<h2>Table of Contents</h2>
+<ul>
+ <li><a href="rgbds.7.html">RGBDS general information</a>
+</ul>
+<ul>
+ <li><a href="rgbasm.5.html">RGBASM language description</a>
+ <li><a href="rgblink.5.html">RGBLINK linkerscript language description</a>
+ <li><a href="gbz80.7.html">GBZ80 CPU instruction set description</a>
+</ul>
+<ul>
+ <li><a href="rgbasm.1.html">RGBASM command-line usage</a>
+ <li><a href="rgblink.1.html">RGBLINK command-line usage</a>
+ <li><a href="rgbfix.1.html">RGBFIX command-line usage</a>
+ <li><a href="rgbgfx.1.html">RGBGFX command-line usage</a>
+</ul>
+<ul>
+ <li><a href="rgbds.5.html">RGBDS object file format</a>
+</ul>
+<h3 id="GitHub Repository">GitHub Repository:</h3>
+<ul>
+ <li><a href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>
+</ul>
+</body>
--- /dev/null
+++ b/docs/rgbasm.1.html
@@ -1,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBASM(1)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBASM(1)</td>
+ <td class="head-vol">General Commands Manual</td>
+ <td class="head-rtitle">RGBASM(1)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgbasm</b> — <span class="Nd" title="Nd">Game
+ Boy assembler</span>
+<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+ <tr>
+ <td><b class="Nm" title="Nm">rgbasm</b></td>
+ <td>[<span class="Op"><b class="Fl" title="Fl">-EhVvw</b></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-b</b>
+ <var class="Ar" title="Ar">chars</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-D</b>
+ <var class="Ar" title="Ar">name</var>[<span class="Op">=<var class="Ar" title="Ar">value</var></span>]</span>]
+ [<span class="Op"><b class="Fl" title="Fl">-g</b>
+ <var class="Ar" title="Ar">chars</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-i</b>
+ <var class="Ar" title="Ar">path</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-M</b>
+ <var class="Ar" title="Ar">dependfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-o</b>
+ <var class="Ar" title="Ar">outfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-p</b>
+ <var class="Ar" title="Ar">pad_value</var></span>]
+ <var class="Ar" title="Ar">file</var></td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+The <b class="Nm" title="Nm">rgbasm</b> program creates an object file from an
+ assembly source file. Its arguments are as follows:
+<dl class="Bl-tag">
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#b"><b class="Fl" title="Fl" id="b">-b</b></a>
+ <var class="Ar" title="Ar">chars</var></dt>
+ <dd class="It-tag">Change the two characters used for binary constants. The
+ defaults are 01.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#D"><b class="Fl" title="Fl" id="D">-D</b></a>
+ <var class="Ar" title="Ar">name</var>[<span class="Op">=<var class="Ar" title="Ar">value</var></span>]</dt>
+ <dd class="It-tag">Add string symbol to the compiled source code. This is
+ equivalent to <var class="Ar" title="Ar">name</var>
+ <b class="Cm" title="Cm">EQUS</b>
+ “<var class="Ar" title="Ar">value</var>” in code. If a value
+ is not specified, a value of 1 is given.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#E"><b class="Fl" title="Fl" id="E">-E</b></a></dt>
+ <dd class="It-tag">Export all labels, including unreferenced and local
+ labels.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#g"><b class="Fl" title="Fl" id="g">-g</b></a>
+ <var class="Ar" title="Ar">chars</var></dt>
+ <dd class="It-tag">Change the four characters used for binary constants. The
+ defaults are 0123.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#h"><b class="Fl" title="Fl" id="h">-h</b></a></dt>
+ <dd class="It-tag">By default, <b class="Nm" title="Nm">rgbasm</b> inserts a
+ ‘nop’ instruction immediately after any ‘halt’
+ instruction. The <b class="Fl" title="Fl">-h</b> option disables this
+ behavior.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#i"><b class="Fl" title="Fl" id="i">-i</b></a>
+ <var class="Ar" title="Ar">path</var></dt>
+ <dd class="It-tag">Add an include path.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#M"><b class="Fl" title="Fl" id="M">-M</b></a>
+ <var class="Ar" title="Ar">dependfile</var></dt>
+ <dd class="It-tag">Print <a class="Xr" title="Xr">make(1)</a> dependencies to
+ <var class="Ar" title="Ar">dependfile</var>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#o"><b class="Fl" title="Fl" id="o">-o</b></a>
+ <var class="Ar" title="Ar">outfile</var></dt>
+ <dd class="It-tag">Write an object file to the given filename.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#p"><b class="Fl" title="Fl" id="p">-p</b></a>
+ <var class="Ar" title="Ar">pad_value</var></dt>
+ <dd class="It-tag">When padding an image, pad with this value. The default is
+ 0x00.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#V"><b class="Fl" title="Fl" id="V">-V</b></a></dt>
+ <dd class="It-tag">Print the version of the program and exit.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#v"><b class="Fl" title="Fl" id="v">-v</b></a></dt>
+ <dd class="It-tag">Be verbose.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#w"><b class="Fl" title="Fl" id="w">-w</b></a></dt>
+ <dd class="It-tag">Disable warning output.</dd>
+</dl>
+<h1 class="Sh" title="Sh" id="EXAMPLES"><a class="selflink" href="#EXAMPLES">EXAMPLES</a></h1>
+Assembling a basic source file is simple:
+<div class="Pp"></div>
+<div class="D1">$ rgbasm -o bar.o foo.asm</div>
+<div class="Pp"></div>
+The resulting object file is not yet a usable ROM image — it must first
+ be run through <a class="Xr" title="Xr">rgblink(1)</a> and
+ <a class="Xr" title="Xr">rgbfix(1)</a>.
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(5)</a>, <a class="Xr" title="Xr">rgbfix(1)</a>,
+ <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgbds(5)</a>, <a class="Xr" title="Xr">rgbds(7)</a>,
+ <a class="Xr" title="Xr">gbz80(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgbasm</b> was originally written by Carsten
+ Sørensen as part of the ASMotor package, and was later packaged in
+ RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/rgbasm.5.html
@@ -1,0 +1,1459 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBASM(5)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBASM(5)</td>
+ <td class="head-vol">File Formats Manual</td>
+ <td class="head-rtitle">RGBASM(5)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgbasm</b> —
+ <span class="Nd" title="Nd">language documentation</span>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+This is the full description of the language used by
+ <a class="Xr" title="Xr">rgbasm(1)</a>. The description of the instructions
+ supported by the GameBoy CPU is in <a class="Xr" title="Xr">gbz80(7)</a>.
+<h1 class="Sh" title="Sh" id="GENERAL"><a class="selflink" href="#GENERAL">GENERAL</a></h1>
+<h2 class="Ss" title="Ss" id="Syntax"><a class="selflink" href="#Syntax">Syntax</a></h2>
+The syntax is line‐based, just as in any other assembler, meaning that
+ you do one instruction or pseudo‐op per line:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">[<span class="Op"><var class="Ar" title="Ar">label</var></span>]
+ [<span class="Op"><var class="Ar" title="Ar">instruction</var></span>]
+ [<span class="Op"><var class="Ar" title="Ar">;comment</var></span>]</code></div>
+<div class="Pp"></div>
+Example:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">John: ld a,87 ;Weee</code></div>
+<div class="Pp"></div>
+All pseudo‐ops, mnemonics and registers (reserved keywords) are
+ case‐insensitive and all labels are case‐sensitive.
+<h2 class="Ss" title="Ss" id="Sections"><a class="selflink" href="#Sections">Sections</a></h2>
+Before you can start writing code, you must define a section. This tells the
+ assembler what kind of information follows and, if it is code, where to put
+ it.
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION "CoolStuff",ROMX</code></div>
+<div class="Pp"></div>
+This switches to the section called "CoolStuff" (or creates it if it
+ doesn't already exist) and it defines it as a code section. All sections
+ assembled at the same time that have the same name, type, etc, are considered
+ to be the same one, and their code is put together in the object file
+ generated by the assembler. All other sections must have a unique name, even
+ in different source files, or the linker will treat it as an error.
+<div class="Pp"></div>
+Possible section types are as follows:
+<dl class="Bl-tag">
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">ROM0</b></dt>
+ <dd class="It-tag">A ROM section. Mapped to memory at $0000–$3FFF (or
+ $0000-$7FFF if tiny ROM mode is enabled in
+ <a class="Xr" title="Xr">rgblink(1)</a>).</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">ROMX</b></dt>
+ <dd class="It-tag">A banked ROM section. Mapped to memory at
+ $4000–$7FFF. Valid banks range from 1 to 511. Not available if tiny
+ ROM mode is enabled in <a class="Xr" title="Xr">rgblink(1)</a>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">VRAM</b></dt>
+ <dd class="It-tag">A banked video RAM section. Mapped to memory at
+ $8000–$9FFF. Can only allocate memory, not fill it. Valid banks are
+ 0 and 1 but bank 1 isn't available if DMG mode is enabled in
+ <a class="Xr" title="Xr">rgblink(1)</a>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">SRAM</b></dt>
+ <dd class="It-tag">A banked external (save) RAM section. Mapped to memory at
+ $A000–$BFFF. Can only allocate memory, not fill it. Valid banks
+ range from 0 to 15.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">WRAM0</b></dt>
+ <dd class="It-tag">A general-purpose RAM section. Mapped to memory at
+ $C000–$CFFF, or $C000-$DFFF if DMG mode is enabled in
+ <a class="Xr" title="Xr">rgblink(1)</a>. Can only allocate memory, not
+ fill it.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">WRAMX</b></dt>
+ <dd class="It-tag">A banked general-purpose RAM section. Mapped to memory at
+ $D000–$DFFF. Can only allocate memory, not fill it. Valid banks
+ range from 1 to 7. Not available if DMG mode is enabled in
+ <a class="Xr" title="Xr">rgblink(1)</a>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">OAM</b></dt>
+ <dd class="It-tag">An object attributes RAM section. Mapped to memory at
+ $FE00-$FE9F. Can only allocate memory, not fill it.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><b class="Sy" title="Sy">HRAM</b></dt>
+ <dd class="It-tag">A high RAM section. Mapped to memory at $FF80–$FFFE.
+ Can only allocate memory, not fill it.
+ <div class="Pp"></div>
+ NOTE: If you use this method of allocating HRAM the assembler will NOT
+ choose the short addressing mode in the LD instructions
+ <b class="Sy" title="Sy">LD [$FF00+n8],A</b> and
+ <b class="Sy" title="Sy">LD A,[$FF00+n8]</b> because the actual address
+ calculation is done by the linker. If you find this undesirable you can
+ use <b class="Ic" title="Ic">RSSET</b> <span class="No">/</span>
+ <b class="Ic" title="Ic">RB</b> <span class="No">/</span>
+ <b class="Ic" title="Ic">RW</b> instead or use the
+ <b class="Sy" title="Sy">LDH [$FF00+n8],A</b> and
+ <b class="Sy" title="Sy">LDH A,[$FF00+n8]</b> syntax instead. This forces
+ the assembler to emit the correct instruction and the linker to check if
+ the value is in the correct range.</dd>
+</dl>
+<div class="Pp"></div>
+A section is usually defined as a floating one, but the code can restrict where
+ the linker can place it.
+<div class="Pp"></div>
+If a section is defined with no indications, it is a floating section. The
+ linker will decide where to place it in the final binary and it has no
+ obligation to follow any specific rules. The following example defines a
+ section that can be placed anywhere in any ROMX bank:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION "CoolStuff",ROMX</code></div>
+<div class="Pp"></div>
+If it is needed, the following syntax can be used to fix the base address of the
+ section:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION
+ "CoolStuff",ROMX[$4567]</code></div>
+<div class="Pp"></div>
+It won't, however, fix the bank number, which is left to the linker. If you also
+ want to specify the bank you can do:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION
+ "CoolStuff",ROMX[$4567],BANK[3]</code></div>
+<div class="Pp"></div>
+And if you only want to force the section into a certain bank, and not it's
+ position within the bank, that's also possible:
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION
+ "CoolStuff",ROMX,BANK[7]</code></div>
+<div class="Pp"></div>
+In addition, you can specify byte alignment for a section. This ensures that the
+ section starts at a memory address where the given number of least-significant
+ bits are 0. This can be used along with <b class="Ic" title="Ic">BANK</b>, if
+ desired. However, if an alignment is specified, the base address must be left
+ unassigned. This can be useful when using DMA to copy data or when it is
+ needed to align the start of an array to 256 bytes to optimize the code that
+ accesses it.
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION "OAM Data",WRAM0,ALIGN[8];
+ align to 256 bytes</code></div>
+<div class="Pp"></div>
+<div class="D1"><code class="Li">SECTION "VRAM
+ Data",ROMX,BANK[2],ALIGN[4]; align to 16 bytes</code></div>
+<div class="Pp"></div>
+HINT: If you think this is a lot of typing for doing a simple
+ <b class="Ic" title="Ic">ORG</b> type thing you can quite easily write an
+ intelligent macro (called <b class="Ic" title="Ic">ORG</b> for example) that
+ uses <b class="Ic" title="Ic">@</b> for the section name and determines
+ correct section type etc as arguments for
+ <b class="Ic" title="Ic">SECTION</b>.
+<div class="Pp"></div>
+<b class="Ic" title="Ic">POPS</b> and <b class="Ic" title="Ic">PUSHS</b> provide
+ the interface to the section stack. <b class="Ic" title="Ic">PUSHS</b> will
+ push the current section context on the section stack.
+ <b class="Ic" title="Ic">POPS</b> can then later be used to restore it. Useful
+ for defining sections in included files when you don't want to destroy the
+ section context for the program that included your file. The number of entries
+ in the stack is limited only by the amount of memory in your machine.
+<div class="Pp"></div>
+Sections can also be placed by using a linkerscript file. The format is
+ described in <a class="Xr" title="Xr">rgblink(5)</a>. They allow the user to
+ place floating sections in the desired bank in the order specified in the
+ script. This is useful if the sections can't be placed at an address manually
+ because the size may change, but they have to be together.
+<h1 class="Sh" title="Sh" id="SYMBOLS"><a class="selflink" href="#SYMBOLS">SYMBOLS</a></h1>
+<h2 class="Ss" title="Ss" id="Symbols"><a class="selflink" href="#Symbols">Symbols</a></h2>
+RGBDS supports several types of symbols:
+<dl class="Bl-hang">
+ <dt class="It-hang"><b class="Sy" title="Sy">Label</b></dt>
+ <dd class="It-hang">Used to assign a memory location with a name</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">EQUate</b></dt>
+ <dd class="It-hang">Give a constant a name.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">SET</b></dt>
+ <dd class="It-hang">Almost the same as EQUate, but you can change the value of
+ a SET during assembling.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">Structure</b>
+ (<b class="Sy" title="Sy">the RS group</b>)</dt>
+ <dd class="It-hang">Define a structure easily.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">String equate</b>
+ (<b class="Sy" title="Sy">EQUS</b>)</dt>
+ <dd class="It-hang">Give a frequently used string a name. Can also be used as
+ a mini-macro, like #define in C.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">MACRO</b></dt>
+ <dd class="It-hang">A block of code or pseudo instructions that you invoke
+ like any other mnemonic. You can give them arguments too.</dd>
+</dl>
+<div class="Pp"></div>
+A symbol cannot have the same name as a reserved keyword.
+<dl class="Bl-hang">
+ <dt class="It-hang"><b class="Sy" title="Sy">Label</b></dt>
+ <dd class="It-hang">
+ <div class="Pp"></div>
+ One of the assembler's main tasks is to keep track of addresses for you so
+ you don't have to remember obscure numbers but can make do with a
+ meaningful name, a label.
+ <div class="Pp"></div>
+ This can be done in a number of ways:
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+GlobalLabel
+AnotherGlobal:
+.locallabel
+.yet_a_local:
+AnotherGlobal.with_another_local:
+ThisWillBeExported:: ;note the two colons
+ThisWillBeExported.too::
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ In the line where a label is defined there musn't be any whitespace before
+ it. Local labels are only accessible within the scope they are defined. A
+ scope starts after a global label and ends at the next global label.
+ Declaring a label (global or local) with :: does an EXPORT at the same
+ time. Local labels can be declared as scope.local or simply as as .local.
+ If the former notation is used, the scope must be the actual current
+ scope.
+ <div class="Pp"></div>
+ Labels will normally change their value during the link process and are thus
+ not constant. The exception is the case in which the base address of a
+ section is fixed, so the address of the label is known at assembly time.
+ <div class="Pp"></div>
+ The subtraction of two labels is only constant (known at assembly time) if
+ they are two local labels that belong to the same scope, or they are two
+ global labels that belong to sections with fixed base addresses.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">EQU</b></dt>
+ <dd class="It-hang">
+ <div class="Pp"></div>
+ EQUates are constant symbols. They can, for example, be used for things such
+ as bit-definitions of hardware registers.
+ <div class="Pp"></div>
+ <div class="D1"><code class="Li">EXIT_OK EQU $00</code></div>
+ <div class="D1"><code class="Li">EXIT_FAILURE EQU $01</code></div>
+ <div class="Pp"></div>
+ Note that a colon (:) following the label-name is not allowed. EQUates
+ cannot be exported and imported. They don't change their value during the
+ link process.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">SET</b></dt>
+ <dd class="It-hang">
+ <div class="Pp"></div>
+ SETs are similar to EQUates. They are also constant symbols in the sense
+ that their values are defined during the assembly process. These symbols
+ are normally used in macros.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+ARRAY_SIZE EQU 4
+COUNT SET 2
+COUNT SET ARRAY_SIZE+COUNT
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ Note that a colon (:) following the label-name is not allowed. SETs cannot
+ be exported and imported. Alternatively you can use = as a synonym for
+ SET.
+ <div class="Pp"></div>
+ <div class="D1"><code class="Li">COUNT = 2</code></div>
+ </dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">RSSET</b>,
+ <b class="Sy" title="Sy">RSRESET</b>, <b class="Sy" title="Sy">RB</b>,
+ <b class="Sy" title="Sy">RW</b></dt>
+ <dd class="It-hang">
+ <div class="Pp"></div>
+ The RS group of commands is a handy way of defining structures:
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+ RSRESET
+str_pStuff RW 1
+str_tData RB 256
+str_bCount RB 1
+str_SIZEOF RB 0
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ The example defines four equated symbols:
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+str_pStuff = 0
+str_tData = 2
+str_bCount = 258
+str_SIZEOF = 259
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ There are four commands in the RS group of commands:
+ <table class="Bl-column">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Command</b></td>
+ <td class="It-column"></td>
+ <td class="It-column"></td>
+ <td class="It-column"><b class="Sy" title="Sy">Meaning</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#RSRESET"><b class="Ic" title="Ic" id="RSRESET">RSRESET</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Resets the _RS counter to zero.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#RSSET"><b class="Ic" title="Ic" id="RSSET">RSSET</b></a>
+ <var class="Ar" title="Ar">constexpr</var></td>
+ <td class="It-column">Sets the <b class="Ic" title="Ic">_RS</b>
+ <span class="No">counter to</span>
+ <var class="Ar" title="Ar">constexpr</var>.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#RB"><b class="Ic" title="Ic" id="RB">RB</b></a>
+ <var class="Ar" title="Ar">constexpr</var></td>
+ <td class="It-column">Sets the preceding symbol to
+ <b class="Ic" title="Ic">_RS</b> <span class="No">and adds</span>
+ <var class="Ar" title="Ar">constexpr</var> <span class="No">to</span>
+ <b class="Ic" title="Ic">_RS</b>.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#RW"><b class="Ic" title="Ic" id="RW">RW</b></a>
+ <var class="Ar" title="Ar">constexpr</var></td>
+ <td class="It-column">Sets the preceding symbol to
+ <b class="Ic" title="Ic">_RS</b> <span class="No">and adds</span>
+ <var class="Ar" title="Ar">constexpr</var> <span class="No">* 2
+ to</span> <b class="Ic" title="Ic">_RS.</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#RL"><b class="Ic" title="Ic" id="RL">RL</b></a>
+ <var class="Ar" title="Ar">constexpr</var></td>
+ <td class="It-column">Sets the preceding symbol to
+ <b class="Ic" title="Ic">_RS</b> <span class="No">and adds</span>
+ <var class="Ar" title="Ar">constexpr</var> <span class="No">* 4
+ to</span> <b class="Ic" title="Ic">_RS.</b></td>
+ </tr>
+ </table>
+ <div class="Pp"></div>
+ Note that a colon (:) following the symbol-name is not allowed.
+ <b class="Sy" title="Sy">RS</b> symbols cannot be exported and imported.
+ They don't change their value during the link process.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">EQUS</b></dt>
+ <dd class="It-hang">
+ <div class="Pp"></div>
+ EQUS is used to define string-symbols. Wherever the assembler meets a string
+ symbol its name is replaced with its value. If you are familiar with C you
+ can think of it as the same as #define.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+COUNTREG EQUS "[hl+]"
+ld a,COUNTREG
+
+PLAYER_NAME EQUS "\"John\""
+db PLAYER_NAME
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ Note that : following the label-name is not allowed, and that strings must
+ be quoted to be useful.
+ <div class="Pp"></div>
+ This will be interpreted as:
+ <div class="Pp"></div>
+ <div class="D1"><code class="Li">ld a,[hl+]</code></div>
+ <div class="D1"><code class="Li">db "John"</code></div>
+ <div class="Pp"></div>
+ String-symbols can also be used to define small one-line macros:
+ <div class="Pp"></div>
+ <div class="D1"><code class="Li">PUSHA EQUS "push af\npush bc\npush
+ de\npush hl\n"</code></div>
+ <div class="Pp"></div>
+ Note that a colon (:) following the label-name is not allowed. String
+ equates can't be exported or imported.
+ <div class="Pp"></div>
+ <b class="Sy" title="Sy">Important note</b>: An EQUS can be expanded to a
+ string that contains another EQUS and it will be expanded as well. This
+ means that, if you aren't careful, you may trap the assembler into an
+ infinite loop if there's a circular dependency in the expansions. Also, a
+ MACRO can have inside an EQUS which references the same MACRO, which has
+ the same problem.</dd>
+ <dt class="It-hang"><b class="Sy" title="Sy">MACRO</b></dt>
+ <dd class="It-hang">
+ <div class="Pp"></div>
+ One of the best features of an assembler is the ability to write macros for
+ it. Macros also provide a method of passing arguments to them and they can
+ then react to the input using IF-constructs.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+MyMacro: MACRO
+ ld a,80
+ call MyFunc
+ ENDM
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ Note that a colon (:) following the macro-name is required. Macros can't be
+ exported or imported. It's valid to call a macro from a macro (yes, even
+ the same one).
+ <div class="Pp"></div>
+ The above example is a very simple macro. You execute the macro by typing
+ its name.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+ add a,b
+ ld sp,hl
+ MyMacro ;This will be expanded
+ sub a,87
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ When the assembler meets MyMacro it will insert the macrodefinition (the
+ text enclosed in <b class="Ic" title="Ic">MACRO</b> /
+ <b class="Ic" title="Ic">ENDM</b>).
+ <div class="Pp"></div>
+ Suppose your macro contains a loop.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+LoopyMacro: MACRO
+ xor a,a
+.loop ld [hl+],a
+ dec c
+ jr nz,.loop
+ ENDM
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ This is fine. That is, if you only use the macro once per scope. To get
+ around this problem there is a special label string equate called
+ <b class="Ic" title="Ic">\@</b> that you can append to your labels and it
+ will then expand to a unique string.
+ <div class="Pp"></div>
+ <b class="Ic" title="Ic">\@</b> also works in REPT-blocks should you have
+ any loops there.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+LoopyMacro: MACRO
+ xor a,a
+.loop\@ ld [hl+],a
+ dec c
+ jr nz,.loop\@
+ ENDM
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ <b class="Sy" title="Sy">Important note</b>: Since a MACRO can call itself
+ (or a different MACRO that calls the first one) there can be problems of
+ circular dependency. They trap the assembler in an infinite loop, so you
+ have to be careful when using recursion with MACROs. Also, a MACRO can
+ have inside an EQUS which references the same MACRO, which has the same
+ problem.
+ <div class="Pp"></div>
+ <b class="Sy" title="Sy">Macro Arguments</b>
+ <div class="Pp"></div>
+ I'd like LoopyMacro a lot better if I didn't have to pre-load the registers
+ with values and then call it. What I'd like is the ability to pass it
+ arguments and it then loaded the registers itself.
+ <div class="Pp"></div>
+ And I can do that. In macros you can get the arguments by using the special
+ macro string equates <b class="Ic" title="Ic">\1</b> through
+ <b class="Ic" title="Ic">\9</b>, <b class="Ic" title="Ic">\1</b> being the
+ first argument specified on the calling of the macro.
+ <div class="Pp"></div>
+ <div class="Bd" style="margin-left: 5.00ex;">
+ <pre class="Li">
+LoopyMacro: MACRO
+ ld hl,\1
+ ld c,\2
+ xor a,a
+.loop\@ ld [hl+],a
+ dec c
+ jr nz,.loop\@
+ ENDM
+ </pre>
+ </div>
+ <div class="Pp"></div>
+ Now I can call the macro specifying two arguments. The first being the
+ address and the second being a bytecount. The macro will then reset all
+ bytes in this range.
+ <div class="Pp"></div>
+ <div class="D1"><code class="Li">LoopyMacro MyVars,54</code></div>
+ <div class="Pp"></div>
+ Arguments are passed as string equates. There's no need to enclose them in
+ quotes. An expression will not be evaluated first but passed directly.
+ This means that it's probably a very good idea to use brackets around
+ <b class="Ic" title="Ic">\1</b> to <b class="Ic" title="Ic">\9</b> if you
+ perform further calculations on them. For instance, if you pass 1 + 2 as
+ the first argument and then do <b class="Ic" title="Ic">PRINTV</b>
+ <b class="Ic" title="Ic">\1</b> * 2 you will get the value 5 on screen and
+ not 6 as you might have expected.
+ <div class="Pp"></div>
+ In reality, up to 256 arguments can be passed to a macro, but you can only
+ use the first 9 like this. If you want to use the rest, you need to use
+ the keyword <b class="Ic" title="Ic">SHIFT</b>.
+ <div class="Pp"></div>
+ <b class="Ic" title="Ic">SHIFT</b> is a special command only available in
+ macros. Very useful in REPT-blocks. It will "shift" the
+ arguments by one "to the left". <b class="Ic" title="Ic">\1</b>
+ will get the value of <b class="Ic" title="Ic">\2</b>,
+ <b class="Ic" title="Ic">\2</b> will get the value in
+ <b class="Ic" title="Ic">\3</b> and so forth.
+ <div class="Pp"></div>
+ This is the only way of accessing the value of arguments from 10 to
+ 256.</dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Exporting_and_importing_symbols"><a class="selflink" href="#Exporting_and_importing_symbols">Exporting
+ and importing symbols</a></h2>
+Importing and exporting of symbols is a feature that is very useful when your
+ project spans many source-files and, for example, you need to jump to a
+ routine defined in another file.
+<div class="Pp"></div>
+Exporting of symbols has to be done manually, importing is done automatically if
+ the assembler doesn't know where a symbol is defined.
+<div class="Pp"></div>
+<b class="Ic" title="Ic">EXPORT</b> <var class="Ar" title="Ar">label</var> [,
+ <var class="Ar" title="Ar">label</var> , <span class="No">...</span>]
+<div class="Pp"></div>
+The assembler will make label accessible to other files during the link process.
+<div class="Pp"></div>
+<b class="Ic" title="Ic">GLOBAL</b> <var class="Ar" title="Ar">label</var> [,
+ <var class="Ar" title="Ar">label</var> , <span class="No">...</span>]
+<div class="Pp"></div>
+If label is defined during the assembly it will be exported, if not, it will be
+ imported. Handy (very!) for include-files. Note that, since importing is done
+ automatically, this keyword has the same effect as
+ <b class="Ic" title="Ic">EXPORT</b>.
+<h2 class="Ss" title="Ss" id="Purging_symbols"><a class="selflink" href="#Purging_symbols">Purging
+ symbols</a></h2>
+<b class="Ic" title="Ic">PURGE</b> allows you to completely remove a symbol from
+ the symbol table as if it had never existed. USE WITH EXTREME CAUTION!!! I
+ can't stress this enough, you seriously need to know what you are doing. DON'T
+ purge symbol that you use in expressions the linker needs to calculate. In
+ fact, it's probably not even safe to purge anything other than string symbols
+ and macros.
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+Kamikaze EQUS "I don't want to live anymore"
+AOLer EQUS "Me too"
+ PURGE Kamikaze, AOLer
+</pre>
+</div>
+<div class="Pp"></div>
+Note that string symbols that are part of a <b class="Ic" title="Ic">PURGE</b>
+ command WILL NOT BE EXPANDED as the ONLY exception to this rule.
+<h2 class="Ss" title="Ss" id="Predeclared_Symbols"><a class="selflink" href="#Predeclared_Symbols">Predeclared
+ Symbols</a></h2>
+The following symbols are defined by the assembler:
+<table class="Bl-column" style="margin-left: 6.00ex;">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Type</b></td>
+ <td class="It-column"><b class="Sy" title="Sy">Name</b></td>
+ <td class="It-column"></td>
+ <td class="It-column"><b class="Sy" title="Sy">Contents</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#@"><b class="Ic" title="Ic" id="@">@</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">PC value</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#_PI"><b class="Ic" title="Ic" id="_PI">_PI</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Fixed point π</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#SET"><b class="Ic" title="Ic" id="SET">SET</b></a></td>
+ <td class="It-column"><a class="selflink" href="#_RS"><b class="Ic" title="Ic" id="_RS">_RS</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">_RS Counter</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#_NARG"><b class="Ic" title="Ic" id="_NARG">_NARG</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Number of arguments passed to macro</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__LINE__"><b class="Ic" title="Ic" id="__LINE__">__LINE__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">The current line number</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQUS"><b class="Ic" title="Ic" id="EQUS">EQUS</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__FILE__"><b class="Ic" title="Ic" id="__FILE__">__FILE__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">The current filename</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQUS"><b class="Ic" title="Ic" id="EQUS">EQUS</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__DATE__"><b class="Ic" title="Ic" id="__DATE__">__DATE__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Today's date</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQUS"><b class="Ic" title="Ic" id="EQUS">EQUS</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__TIME__"><b class="Ic" title="Ic" id="__TIME__">__TIME__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">The current time</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQUS"><b class="Ic" title="Ic" id="EQUS">EQUS</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__ISO_8601_LOCAL__"><b class="Ic" title="Ic" id="__ISO_8601_LOCAL__">__ISO_8601_LOCAL__</b></a></td>
+ <td class="It-column">ISO 8601 timestamp (local)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQUS"><b class="Ic" title="Ic" id="EQUS">EQUS</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__ISO_8601_UTC__"><b class="Ic" title="Ic" id="__ISO_8601_UTC__">__ISO_8601_UTC__</b></a></td>
+ <td class="It-column">ISO 8601 timestamp (UTC)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__UTC_YEAR__"><b class="Ic" title="Ic" id="__UTC_YEAR__">__UTC_YEAR__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Today's year</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__UTC_MONTH__"><b class="Ic" title="Ic" id="__UTC_MONTH__">__UTC_MONTH__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Today's month number, 1-12</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__UTC_DAY__"><b class="Ic" title="Ic" id="__UTC_DAY__">__UTC_DAY__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Today's day of the month, 1-31</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__UTC_HOUR__"><b class="Ic" title="Ic" id="__UTC_HOUR__">__UTC_HOUR__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Current hour, 0-23</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__UTC_MINUTE__"><b class="Ic" title="Ic" id="__UTC_MINUTE__">__UTC_MINUTE__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Current minute, 0-59</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__UTC_SECOND__"><b class="Ic" title="Ic" id="__UTC_SECOND__">__UTC_SECOND__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Current second, 0-59</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__RGBDS_MAJOR__"><b class="Ic" title="Ic" id="__RGBDS_MAJOR__">__RGBDS_MAJOR__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Major version number of RGBDS.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__RGBDS_MINOR__"><b class="Ic" title="Ic" id="__RGBDS_MINOR__">__RGBDS_MINOR__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Minor version number of RGBDS.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#EQU"><b class="Ic" title="Ic" id="EQU">EQU</b></a></td>
+ <td class="It-column"><a class="selflink" href="#__RGBDS_PATCH__"><b class="Ic" title="Ic" id="__RGBDS_PATCH__">__RGBDS_PATCH__</b></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">Patch version number of RGBDS.</td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="DEFINING_DATA"><a class="selflink" href="#DEFINING_DATA">DEFINING
+ DATA</a></h1>
+<h2 class="Ss" title="Ss" id="Defining_constant_data"><a class="selflink" href="#Defining_constant_data">Defining
+ constant data</a></h2>
+<b class="Ic" title="Ic">DB</b> defines a list of bytes that will be stored in
+ the final image. Ideal for tables and text (which is not zero-terminated).
+<div class="Pp"></div>
+<div class="D1"><code class="Li">DB 1,2,3,4,"This is a
+ string"</code></div>
+<div class="Pp"></div>
+Alternatively, you can use <b class="Ic" title="Ic">DW</b> to store a list of
+ words (16-bits) or <b class="Ic" title="Ic">DL</b> to store a list of
+ doublewords/longs (32-bits). Strings are not allowed as arguments to
+ <b class="Ic" title="Ic">DW</b> and <b class="Ic" title="Ic">DL</b>.
+<div class="Pp"></div>
+You can also use <b class="Ic" title="Ic">DB</b>,
+ <b class="Ic" title="Ic">DW</b> and <b class="Ic" title="Ic">DL</b> without
+ arguments, or leaving empty elements at any point in the list. This works
+ exactly like <b class="Sy" title="Sy">DS 1</b>, <b class="Sy" title="Sy">DS
+ 2</b> and <b class="Sy" title="Sy">DS 4</b> respectively. Consequently,
+ <b class="Ic" title="Ic">DB</b>, <b class="Ic" title="Ic">DW</b> and
+ <b class="Ic" title="Ic">DL</b> can be used in a
+ <b class="Sy" title="Sy">WRAM0</b> <span class="No">/</span>
+ <b class="Sy" title="Sy">WRAMX</b> <span class="No">/</span>
+ <b class="Sy" title="Sy">HRAM</b> <span class="No">/</span>
+ <b class="Sy" title="Sy">VRAM</b> <span class="No">/</span>
+ <b class="Sy" title="Sy">SRAM</b> section.
+<h2 class="Ss" title="Ss" id="Declaring_variables_in_a_RAM_section"><a class="selflink" href="#Declaring_variables_in_a_RAM_section">Declaring
+ variables in a RAM section</a></h2>
+<b class="Ic" title="Ic">DS</b> allocates a number of bytes. The content is
+ undefined. This is the preferred method of allocationg space in a RAM section.
+ You can, however, use <b class="Ic" title="Ic">DB</b>,
+ <b class="Ic" title="Ic">DW</b> and <b class="Ic" title="Ic">DL</b> without
+ any arguments instead.
+<div class="Pp"></div>
+<div class="D1"><code class="Li">DS str_SIZEOF ;allocate str_SIZEOF
+ bytes</code></div>
+<h2 class="Ss" title="Ss" id="Including_binary_files"><a class="selflink" href="#Including_binary_files">Including
+ binary files</a></h2>
+You probably have some graphics you'd like to include. Use
+ <b class="Ic" title="Ic">INCBIN</b> to include a raw binary file as it is. If
+ the file isn't found in the current directory, the include-path list passed to
+ the linker on the command line will be searched.
+<div class="Pp"></div>
+<div class="D1"><code class="Li">INCBIN "titlepic.bin"</code></div>
+<div class="D1"><code class="Li">INCBIN "sprites/hero.bin" ;
+ UNIX</code></div>
+<div class="D1"><code class="Li">INCBIN "sprites\\hero.bin" ;
+ Windows</code></div>
+<div class="Pp"></div>
+You can also include only part of a file with
+ <b class="Ic" title="Ic">INCBIN</b>. The example below includes 256 bytes from
+ data.bin starting from byte 78.
+<div class="Pp"></div>
+<div class="D1"><code class="Li">INCBIN "data.bin",78,256</code></div>
+<h2 class="Ss" title="Ss" id="Unions"><a class="selflink" href="#Unions">Unions</a></h2>
+Unions allow multiple memory allocations to share the same space in memory, like
+ unions in C. This allows you to easily reuse memory for different purposes,
+ depending on the game's state.
+<div class="Pp"></div>
+You create unions using the <b class="Ic" title="Ic">UNION</b>,
+ <b class="Ic" title="Ic">NEXTU</b> and <b class="Ic" title="Ic">ENDU</b>
+ keywords. <b class="Ic" title="Ic">NEXTU</b> lets you create a new block of
+ allocations, and you may use it as many times within a union as necessary.
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+UNION
+Name: ds 8
+Nickname: ds 8
+NEXTU
+Health: dw
+Something: ds 3
+Lives: db
+NEXTU
+Temporary: ds 19
+ENDU
+</pre>
+</div>
+<div class="Pp"></div>
+This union will use up 19 bytes, as this is the size of the largest block (the
+ last one, containing 'Temporary'). Of course, as 'Name', 'Health', and
+ 'Temporary' all point to the same memory locations, writes to any one of these
+ will affect values read from the others.
+<div class="Pp"></div>
+Unions may be used in any section, but code and data may not be included.
+<h1 class="Sh" title="Sh" id="THE_MACRO_LANGUAGE"><a class="selflink" href="#THE_MACRO_LANGUAGE">THE
+ MACRO LANGUAGE</a></h1>
+<h2 class="Ss" title="Ss" id="Printing_things_during_assembly"><a class="selflink" href="#Printing_things_during_assembly">Printing
+ things during assembly</a></h2>
+These three instructions type text and values to stdout. Useful for debugging
+ macros or wherever you may feel the need to tell yourself some important
+ information.
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+PRINTT "I'm the greatest programmer in the whole wide world\n"
+PRINTV (2+3)/5
+PRINTF MUL(3.14,3987.0)
+</pre>
+</div>
+<dl class="Bl-inset">
+ <dt class="It-inset"><a class="selflink" href="#PRINTT"><b class="Ic" title="Ic" id="PRINTT">PRINTT</b></a></dt>
+ <dd class="It-inset">prints out a string.</dd>
+ <dt class="It-inset"><a class="selflink" href="#PRINTV"><b class="Ic" title="Ic" id="PRINTV">PRINTV</b></a></dt>
+ <dd class="It-inset">prints out an integer value or, as in the example, the
+ result of a calculation. Unsurprisingly, you can also print out a constant
+ symbols value.</dd>
+ <dt class="It-inset"><a class="selflink" href="#PRINTF"><b class="Ic" title="Ic" id="PRINTF">PRINTF</b></a></dt>
+ <dd class="It-inset">prints out a fixed point value.</dd>
+</dl>
+<h2 class="Ss" title="Ss" id="Automatically_repeating_blocks_of_code"><a class="selflink" href="#Automatically_repeating_blocks_of_code">Automatically
+ repeating blocks of code</a></h2>
+Suppose you're feeling lazy and you want to unroll a time consuming loop.
+ <b class="Ic" title="Ic">REPT</b> is here for that purpose. Everything between
+ <b class="Ic" title="Ic">REPT</b> and <b class="Ic" title="Ic">ENDR</b> will
+ be repeated a number of times just as if you done a copy/paste operation
+ yourself. The following example will assemble <b class="Sy" title="Sy">add
+ a,c</b> four times:
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+REPT 4
+add a,c
+ENDR
+</pre>
+</div>
+<div class="Pp"></div>
+You can also use <b class="Ic" title="Ic">REPT</b> to generate tables on the
+ fly:
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+; --
+; -- Generate a 256 byte sine table with values between 0 and 128
+; --
+ANGLE SET 0.0
+ REPT 256
+ DB (MUL(64.0,SIN(ANGLE))+64.0)>>16
+ANGLE SET ANGLE+256.0
+ ENDR
+</pre>
+</div>
+<div class="Pp"></div>
+<b class="Ic" title="Ic">REPT</b> is also very useful in recursive macros and,
+ as in macros, you can also use the special label operator
+ <b class="Ic" title="Ic">\@</b>. REPT-blocks can be nested.
+<h2 class="Ss" title="Ss" id="Aborting_the_assembly_process"><a class="selflink" href="#Aborting_the_assembly_process">Aborting
+ the assembly process</a></h2>
+<b class="Ic" title="Ic">FAIL</b> and <b class="Ic" title="Ic">WARN</b> can be
+ used to print errors and warnings respectively during the assembly process.
+ This is especially useful for macros that get an invalid argument.
+ <b class="Ic" title="Ic">FAIL</b> and <b class="Ic" title="Ic">WARN</b> take a
+ string as the only argument and they will print this string out as a normal
+ error with a line number.
+<div class="Pp"></div>
+<b class="Ic" title="Ic">FAIL</b> stops assembling immediately while
+ <b class="Ic" title="Ic">WARN</b> shows the message but continues afterwards.
+<h2 class="Ss" title="Ss" id="Including_other_source_files"><a class="selflink" href="#Including_other_source_files">Including
+ other source files</a></h2>
+Use <b class="Ic" title="Ic">INCLUDE</b> to process another assembler-file and
+ then return to the current file when done. If the file isn't found in the
+ current directory the include-path list will be searched. You may nest
+ <b class="Ic" title="Ic">INCLUDE</b> calls infinitely (or until you run out of
+ memory, whichever comes first).
+<div class="Pp"></div>
+<div class="D1"><code class="Li">INCLUDE "irq.inc"</code></div>
+<h2 class="Ss" title="Ss" id="Conditional_assembling"><a class="selflink" href="#Conditional_assembling">Conditional
+ assembling</a></h2>
+The four commands <b class="Ic" title="Ic">IF</b>,
+ <b class="Ic" title="Ic">ELIF</b>, <b class="Ic" title="Ic">ELSE</b>, and
+ <b class="Ic" title="Ic">ENDC</b> are used to conditionally assemble parts of
+ your file. This is a powerful feature commonly used in macros.
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+IF NUM < 0
+ PRINTT "NUM < 0\n"
+ELIF NUM == 0
+ PRINTT "NUM == 0\n"
+ELSE
+ PRINTT "NUM > 0\n"
+ENDC
+</pre>
+</div>
+<div class="Pp"></div>
+The <b class="Ic" title="Ic">ELIF</b> and <b class="Ic" title="Ic">ELSE</b>
+ blocks are optional. <b class="Ic" title="Ic">IF</b> <span class="No">/</span>
+ <b class="Ic" title="Ic">ELIF</b> <span class="No">/</span>
+ <b class="Ic" title="Ic">ELSE</b> <span class="No">/</span>
+ <b class="Ic" title="Ic">ENDC</b> blocks can be nested.
+<div class="Pp"></div>
+Note that if an <b class="Ic" title="Ic">ELSE</b> block is found before an
+ <b class="Ic" title="Ic">ELIF</b> block, the <b class="Ic" title="Ic">ELIF</b>
+ block will be ignored. All <b class="Ic" title="Ic">ELIF</b> blocks must go
+ before the <b class="Ic" title="Ic">ELSE</b> block. Also, if there is more
+ than one <b class="Ic" title="Ic">ELSE</b> block, all of them but the first
+ one are ignored.
+<h2 class="Ss" title="Ss" id="Integer_and_Boolean_expressions"><a class="selflink" href="#Integer_and_Boolean_expressions">Integer
+ and Boolean expressions</a></h2>
+An expression can be composed of many things. Expressions are always evaluated
+ using signed 32-bit math.
+<div class="Pp"></div>
+The most basic expression is just a single number.
+<div class="Pp"></div>
+<b class="Sy" title="Sy">Numeric Formats</b>
+<div class="Pp"></div>
+There are a number of numeric formats.
+<div class="Pp"></div>
+<ul class="Bl-dash Bl-compact">
+ <li class="It-dash">Hexadecimal: $0123456789ABCDEF. Case-insensitive</li>
+ <li class="It-dash">Decimal: 0123456789</li>
+ <li class="It-dash">Octal: &01234567</li>
+ <li class="It-dash">Binary: %01</li>
+ <li class="It-dash">Fixedpoint (16.16): 01234.56789</li>
+ <li class="It-dash">Character constant: "ABYZ"</li>
+ <li class="It-dash">Gameboy graphics: `0123</li>
+</ul>
+<div class="Pp"></div>
+The last one, Gameboy graphics, is quite interesting and useful. The values are
+ actually pixel values and it converts the “chunky” data to
+ “planar” data as used in the Gameboy.
+<div class="Pp"></div>
+<div class="D1"><code class="Li">DW `01012323</code></div>
+<div class="Pp"></div>
+Admittedly, an expression with just a single number is quite boring. To spice
+ things up a bit there are a few operators you can use to perform calculations
+ between numbers.
+<div class="Pp"></div>
+<b class="Sy" title="Sy">Operators</b>
+<div class="Pp"></div>
+A great number of operators you can use in expressions are available (listed in
+ order of precedence):
+<table class="Bl-column" style="margin-left: 6.00ex;">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Operator</b></td>
+ <td class="It-column"><b class="Sy" title="Sy">Meaning</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column">()</td>
+ <td class="It-column">Precedence override</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#FUNC()"><code class="Li" id="FUNC()">FUNC()</code></a></td>
+ <td class="It-column">Function call</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#~_+_-"><code class="Li" id="~_+_-">~
+ + -</code></a></td>
+ <td class="It-column">Unary not/plus/minus</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#*_/_%"><code class="Li" id="*_/_%">*
+ / %</code></a></td>
+ <td class="It-column">Multiply/divide/modulo</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#<<_>>"><code class="Li" id="<<_>>"><<
+ >></code></a></td>
+ <td class="It-column">Shift left/right</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#&"><code class="Li" id="&">&</code></a>
+ | <a class="selflink" href="#^"><code class="Li" id="^">^</code></a></td>
+ <td class="It-column">Binary and/or/xor</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#+_-"><code class="Li" id="+_-">+
+ -</code></a></td>
+ <td class="It-column">Add/subtract</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#!=_==_<="><code class="Li" id="!=_==_<=">!=
+ == <=</code></a></td>
+ <td class="It-column">Boolean comparison</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#>=_<_>"><code class="Li" id=">=_<_>">>=
+ < ></code></a></td>
+ <td class="It-column">Boolean comparison (Same precedence as the
+ others)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#&&_||"><code class="Li" id="&&_||">&&
+ ||</code></a></td>
+ <td class="It-column">Boolean and/or</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column">!</td>
+ <td class="It-column">Unary Boolean not</td>
+ </tr>
+</table>
+<div class="Pp"></div>
+The result of the boolean operators is zero if when FALSE and non-zero when
+ TRUE. It is legal to use an integer as the condition for IF blocks. You can
+ use symbols instead of numbers in your expression if you wish.
+<div class="Pp"></div>
+An expression is said to be constant when it doesn't change its value during
+ linking. This basically means that you can't use labels in those expressions.
+ The instructions in the macro-language all require expressions that are
+ constant. The only exception is the subtraction of labels in the same section
+ or labels that belong to sections with a fixed base addresses, all of which
+ must be defined in the same source file (the calculation cannot be passed to
+ the object file generated by the assembler). In this case, the result is a
+ constant that can be calculated at assembly time.
+<h2 class="Ss" title="Ss" id="Fixed‐point_Expressions"><a class="selflink" href="#Fixed‐point_Expressions">Fixed‐point
+ Expressions</a></h2>
+Fixed point constants are basically normal 32-bit constants where the upper 16
+ bits are used for the integer part and the lower 16 bits are used for the
+ fraction (65536ths). This means that you can use them in normal integer
+ expression, and some integer operators like plus and minus don't care whether
+ the operands are integer or fixed-point. You can easily convert a fixed-point
+ number to an integer by shifting it right 16 bits. It follows that you can
+ convert an integer to a fixed-point number by shifting it left.
+<div class="Pp"></div>
+Some things are different for fixed-point math, though, which is why you have
+ the following functions to use:
+<table class="Bl-column" style="margin-left: 6.00ex;">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Name</b></td>
+ <td class="It-column"></td>
+ <td class="It-column"><b class="Sy" title="Sy">Operation</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#DIV(x,y)"><code class="Li" id="DIV(x,y)">DIV(x,y)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">x/y</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#MUL(x,y)"><code class="Li" id="MUL(x,y)">MUL(x,y)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">x*y</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#SIN(x)"><code class="Li" id="SIN(x)">SIN(x)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">sin(x)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#COS(x)"><code class="Li" id="COS(x)">COS(x)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">cos(x)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#TAN(x)"><code class="Li" id="TAN(x)">TAN(x)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">tan(x)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#ASIN(x)"><code class="Li" id="ASIN(x)">ASIN(x)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">arcsin(x)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#ACOS(x)"><code class="Li" id="ACOS(x)">ACOS(x)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">arccos(x)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#ATAN(x)"><code class="Li" id="ATAN(x)">ATAN(x)</code></a></td>
+ <td class="It-column"></td>
+ <td class="It-column">arctan(x)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#ATAN2(x,y)"><code class="Li" id="ATAN2(x,y)">ATAN2(x,y)</code></a></td>
+ <td class="It-column">Angle between (x,y) and (1,0)</td>
+ </tr>
+</table>
+<div class="Pp"></div>
+These functions are extremely useful for automatic generation of various tables.
+ A circle has 65536.0 degrees. Sine values are between [-1.0; 1.0].
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+; --
+; -- Generate a 256 byte sine table with values between 0 and 128
+; --
+ANGLE SET 0.0
+ REPT 256
+ DB (MUL(64.0,SIN(ANGLE))+64.0)>>16
+ANGLE SET ANGLE+256.0
+ ENDR
+</pre>
+</div>
+<h2 class="Ss" title="Ss" id="String_Expressions"><a class="selflink" href="#String_Expressions">String
+ Expressions</a></h2>
+The most basic string expression is any number of characters contained in double
+ quotes ("for instance"). Like in C, the escape character is \, and
+ there are a number of commands you can use within a string:
+<table class="Bl-column" style="margin-left: 6.00ex;">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">String</b></td>
+ <td class="It-column"><b class="Sy" title="Sy">Meaning</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\\"><code class="Li" id="\\">\\</code></a></td>
+ <td class="It-column">Backslash</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\""><code class="Li" id="\"">\"</code></a></td>
+ <td class="It-column">Double quote</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\,"><code class="Li" id="\,">\,</code></a></td>
+ <td class="It-column">Comma</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\{"><code class="Li" id="\{">\{</code></a></td>
+ <td class="It-column">Curly bracket left</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\}"><code class="Li" id="\}">\}</code></a></td>
+ <td class="It-column">Curly bracket right</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\n"><code class="Li" id="\n">\n</code></a></td>
+ <td class="It-column">Newline ($0A)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\t"><code class="Li" id="\t">\t</code></a></td>
+ <td class="It-column">Tab ($09)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\1_-_\9"><code class="Li" id="\1_-_\9">\1
+ - \9</code></a></td>
+ <td class="It-column">Macro argument (Only the body of a macros)</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#\@"><code class="Li" id="\@">\@</code></a></td>
+ <td class="It-column">Label name suffix (Only in the body of macros and
+ repts)</td>
+ </tr>
+</table>
+<div class="Pp"></div>
+A funky feature is <b class="Sy" title="Sy">{symbol}</b> withing a string. This
+ will examine the type of the symbol and insert its value accordingly. If
+ symbol is a string symbol, the symbols value is simply copied. If it's a
+ numeric symbol, the value is converted to hexadecimal notation and inserted as
+ a string.
+<div class="Pp"></div>
+HINT: The <b class="Sy" title="Sy">{symbol}</b> construct can also be used
+ outside strings. The symbol's value is again inserted as a string. This is
+ just a short way of doing "{symbol}".
+<div class="Pp"></div>
+Whenever the macro-language expects a string you can actually use a string
+ expression. This consists of one or more of these function (yes, you can nest
+ them). Note that some of these functions actually return an integer and can be
+ used as part of an integer expression!
+<table class="Bl-column">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Name</b></td>
+ <td class="It-column"></td>
+ <td class="It-column"></td>
+ <td class="It-column"><b class="Sy" title="Sy">Operation</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRLEN(string)"><code class="Li" id="STRLEN(string)">STRLEN(string)</code></a></td>
+ <td class="It-column">Returns the number of characters in string</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRCAT(str1,str2)"><code class="Li" id="STRCAT(str1,str2)">STRCAT(str1,str2)</code></a></td>
+ <td class="It-column">Appends str2 to str1.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRCMP(str1,str2)"><code class="Li" id="STRCMP(str1,str2)">STRCMP(str1,str2)</code></a></td>
+ <td class="It-column">Returns negative if str1 is alphabetically lower than
+ str2, zero if they match, positive if str1 is greater than str2.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRIN(str1,str2)"><code class="Li" id="STRIN(str1,str2)">STRIN(str1,str2)</code></a></td>
+ <td class="It-column">Returns the position of str2 in str1 or zero if it's
+ not present (first character is position 1).</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRSUB(str,pos,len)"><code class="Li" id="STRSUB(str,pos,len)">STRSUB(str,pos,len)</code></a></td>
+ <td class="It-column">Returns a substring from str starting at pos (first
+ character is position 1) and with len characters.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRUPR(str)"><code class="Li" id="STRUPR(str)">STRUPR(str)</code></a></td>
+ <td class="It-column">Converts all characters in str to capitals and returns
+ the new string.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#STRLWR(str)"><code class="Li" id="STRLWR(str)">STRLWR(str)</code></a></td>
+ <td class="It-column">Converts all characters in str to lower case and
+ returns the new string.</td>
+ </tr>
+</table>
+<h2 class="Ss" title="Ss" id="Other_functions"><a class="selflink" href="#Other_functions">Other
+ functions</a></h2>
+There are a few other functions that do various useful things:
+<table class="Bl-column">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Name</b></td>
+ <td class="It-column"></td>
+ <td class="It-column"></td>
+ <td class="It-column"><b class="Sy" title="Sy">Operation</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#BANK(@/str/lbl)"><code class="Li" id="BANK(@/str/lbl)">BANK(@/str/lbl)</code></a></td>
+ <td class="It-column">Returns a bank number. If the argument is the symbol
+ <b class="Ic" title="Ic">@,</b> this function returns the bank of the
+ current section. If the argument is a string, it returns the bank of the
+ section that has that name. If the argument is a label, it returns the
+ bank number the label is in. For labels, as the linker has to resolve
+ this, it can't be used when the expression has to be constant.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#DEF(label)"><code class="Li" id="DEF(label)">DEF(label)</code></a></td>
+ <td class="It-column">Returns TRUE if label has been defined.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#HIGH(r16/cnst/lbl)"><code class="Li" id="HIGH(r16/cnst/lbl)">HIGH(r16/cnst/lbl)</code></a></td>
+ <td class="It-column">Returns the top 8 bits of the operand if it is a label
+ or constant, or the top 8-bit register if it is a 16-bit register.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#LOW(r16/cnst/lbl)"><code class="Li" id="LOW(r16/cnst/lbl)">LOW(r16/cnst/lbl)</code></a></td>
+ <td class="It-column">Returns the bottom 8 bits of the operand if it is a
+ label or constant, or the bottom 8-bit register if it is a 16-bit register
+ (AF isn't a valid register for this function).</td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="MISCELLANEOUS"><a class="selflink" href="#MISCELLANEOUS">MISCELLANEOUS</a></h1>
+<h2 class="Ss" title="Ss" id="Changing_options_while_assembling"><a class="selflink" href="#Changing_options_while_assembling">Changing
+ options while assembling</a></h2>
+<b class="Ic" title="Ic">OPT</b> can be used to change some of the options
+ during assembling the source instead of defining them on the commandline.
+<div class="Pp"></div>
+<b class="Ic" title="Ic">OPT</b> takes a comma-seperated list of options as its
+ argument:
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+PUSHO
+OPT g.oOX ;Set the GB graphics constants to use these characters
+DW `..ooOOXX
+POPO
+DW `00112233
+</pre>
+</div>
+<div class="Pp"></div>
+The options that OPT can modify are currently: <b class="Sy" title="Sy">b</b>,
+ <b class="Sy" title="Sy">e</b> and <b class="Sy" title="Sy">g</b>.
+<div class="Pp"></div>
+<b class="Ic" title="Ic">POPO</b> and <b class="Ic" title="Ic">PUSHO</b> provide
+ the interface to the option stack. <b class="Ic" title="Ic">PUSHO</b> will
+ push the current set of options on the option stack.
+ <b class="Ic" title="Ic">POPO</b> can then later be used to restore them.
+ Useful if you want to change some options in an include file and you don't
+ want to destroy the options set by the program that included your file. The
+ stacks number of entries is limited only by the amount of memory in your
+ machine.
+<h1 class="Sh" title="Sh" id="ALPHABETICAL_LIST_OF_KEYWORDS"><a class="selflink" href="#ALPHABETICAL_LIST_OF_KEYWORDS">ALPHABETICAL
+ LIST OF KEYWORDS</a></h1>
+<dl class="Bl-inset Bl-compact">
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#@">@</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__DATE__">__DATE__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__FILE__">__FILE__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__ISO_8601_LOCAL__">__ISO_8601_LOCAL__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__ISO_8601_UTC__">__ISO_8601_UTC__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__LINE__">__LINE__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__TIME__">__TIME__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__RGBDS_MAJOR__">__RGBDS_MAJOR__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__RGBDS_MINOR__">__RGBDS_MINOR__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__RGBDS_PATCH__">__RGBDS_PATCH__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__UTC_YEAR__">__UTC_YEAR__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__UTC_MONTH__">__UTC_MONTH__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__UTC_DAY__">__UTC_DAY__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__UTC_HOUR__">__UTC_HOUR__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__UTC_MINUTE__">__UTC_MINUTE__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#__UTC_SECOND__">__UTC_SECOND__</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#_NARG">_NARG</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#_PI">_PI</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#_RS">_RS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ACOS">ACOS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ASIN">ASIN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ATAN">ATAN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ATAN2">ATAN2</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#BANK">BANK</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#COS">COS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DB">DB</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DEF">DEF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DIV">DIV</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DL">DL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DS">DS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#DW">DW</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ELIF">ELIF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ELSE">ELSE</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ENDC">ENDC</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ENDM">ENDM</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ENDR">ENDR</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#EQU">EQU</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#EQUS">EQUS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#EXPORT">EXPORT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#FAIL">FAIL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#GLOBAL">GLOBAL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#HIGH">HIGH</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#HRAM">HRAM</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#IF">IF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#INCBIN">INCBIN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#INCLUDE">INCLUDE</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#LOW">LOW</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#MACRO">MACRO</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#MUL">MUL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#OPT">OPT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#POPO">POPO</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#POPS">POPS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTF">PRINTF</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTT">PRINTT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PRINTV">PRINTV</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PURGE">PURGE</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PUSHO">PUSHO</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#PUSHS">PUSHS</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#REPT">REPT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RB">RB</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RL">RL</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ROM0">ROM0</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#ROMX">ROMX</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RSRESET">RSRESET</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RSSET">RSSET</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#RW">RW</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SECTION">SECTION</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SET">SET</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SHIFT">SHIFT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SIN">SIN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#SRAM">SRAM</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRCAT">STRCAT</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRCMP">STRCMP</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRIN">STRIN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRLEN">STRLEN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRLWR">STRLWR</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRSUB">STRSUB</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#STRUPR">STRUPR</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#TAN">TAN</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#VRAM">VRAM</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#WRAM0">WRAM0</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#WRAMX">WRAMX</a></dt>
+ <dd class="It-inset"></dd>
+ <dt class="It-inset"><a class="Sx" title="Sx" href="#WARN">WARN</a></dt>
+ <dd class="It-inset"></dd>
+</dl>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgblink(5)</a>,
+ <a class="Xr" title="Xr">rgbds(5)</a>, <a class="Xr" title="Xr">rgbds(7)</a>,
+ <a class="Xr" title="Xr">gbz80(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgbds</b> was originally written by Carsten
+ Sørensen as part of the ASMotor package, and was later packaged in
+ RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">January 7, 2018</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/rgbds.5.html
@@ -1,0 +1,306 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBDS(5)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBDS(5)</td>
+ <td class="head-vol">File Formats Manual</td>
+ <td class="head-rtitle">RGBDS(5)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgbds</b> — <span class="Nd" title="Nd">object
+ file format documentation</span>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+This is the description of the object files used by
+ <a class="Xr" title="Xr">rgbasm(1)</a> and
+ <a class="Xr" title="Xr">rgblink(1)</a>. Please, note that the specifications
+ may change. This toolchain is in development and new features may require
+ adding more information to the current format, or modifying some fields, which
+ would break compatibility with older versions.
+<h1 class="Sh" title="Sh" id="FILE_STRUCTURE"><a class="selflink" href="#FILE_STRUCTURE">FILE
+ STRUCTURE</a></h1>
+The following types are used:
+<div class="Pp"></div>
+<var class="Ar" title="Ar">LONG</var> is a 32‐bit integer stored in
+ little‐endian format (Intel). <var class="Ar" title="Ar">BYTE</var> is
+ an 8‐bit integer. <var class="Ar" title="Ar">STRING</var> is a
+ 0‐terminated string of <var class="Ar" title="Ar">BYTE</var>.
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 0.00ex;">
+<pre class="Li">
+; Header
+
+BYTE ID[4] ; "RGB6"
+LONG NumberOfSymbols ; The number of symbols used in this file
+LONG NumberOfSections ; The number of sections used in this file
+
+; Symbols
+
+REPT NumberOfSymbols ; Number of symbols defined in this object file.
+
+ STRING Name ; The name of this symbol. Local symbols are stored
+ ; as "Scope.Symbol".
+
+ BYTE Type ; 0 = LOCAL symbol only used in this file.
+ ; 1 = IMPORT this symbol from elsewhere (unused).
+ ; 2 = EXPORT this symbol to other objects.
+
+ IF Type != 1 ; If symbol is defined in this object file.
+
+ STRING FileName ; File where the symbol is defined.
+
+ LONG LineNum ; Line number in the file where the symbol is defined.
+
+ LONG SectionID ; The section number (of this object file) in which
+ ; this symbol is defined.
+
+ LONG Value ; The symbols value. It's the offset into that
+ ; symbol's section.
+
+ ENDC
+
+ENDR
+
+; Sections
+
+REPT NumberOfSections
+ STRING Name ; Name of the section
+
+ LONG Size ; Size in bytes of this section
+
+ BYTE Type ; 0 = WRAM0
+ ; 1 = VRAM
+ ; 2 = ROMX
+ ; 3 = ROM0
+ ; 4 = HRAM
+ ; 5 = WRAMX
+ ; 6 = SRAM
+ ; 7 = OAM
+
+ LONG Org ; Address to fix this section at. -1 if the linker should
+ ; decide (floating address).
+
+ LONG Bank ; Bank to load this section into. -1 if the linker should
+ ; decide (floating bank). This field is only valid for ROMX,
+ ; VRAM, WRAMX and SRAM sections.
+
+ LONG Align ; Alignment of this section (expressed as number of low bits
+ ; to leave as 0). -1 if not defined.
+
+ IF (Type == ROMX) || (Type == ROM0) ; Sections that can contain data.
+
+ BYTE Data[Size] ; Raw data of the section.
+
+ LONG NumberOfPatches ; Number of patches to apply.
+
+ ; These types of sections may have patches
+
+ REPT NumberOfPatches
+
+ STRING SourceFile ; Name of the source file (for printing error
+ ; messages).
+
+ LONG Line ; The line of the source file.
+
+ LONG Offset ; Offset into the section where patch should
+ ; be applied (in bytes).
+
+ BYTE Type ; 0 = BYTE patch.
+ ; 1 = little endian WORD patch.
+ ; 2 = little endian LONG patch.
+
+ LONG RPNSize ; Size of the buffer with the RPN.
+ ; expression.
+
+ BYTE RPN[RPNSize] ; RPN expression. Definition below.
+
+ ENDR
+
+ ENDC
+
+ENDR
+</pre>
+</div>
+<h2 class="Ss" title="Ss" id="RPN_DATA"><a class="selflink" href="#RPN_DATA">RPN
+ DATA</a></h2>
+Expressions in the object file are stored as RPN. This is an expression of the
+ form “2 5 +”. This will first push the value “2”
+ to the stack. Then “5”. The “+” operator pops two
+ arguments from the stack, adds them, and then pushes the result on the stack,
+ effectively replacing the two top arguments with their sum. In the RGB format,
+ RPN expressions are stored as BYTEs with some bytes being special prefixes for
+ integers and symbols.
+<table class="Bl-column" style="margin-left: 6.00ex;">
+ <colgroup>
+ <col style="width: 15.00ex;"/>
+ <col style="min-width: 10.00ex;"/>
+ </colgroup>
+ <tr class="It-column">
+ <td class="It-column"><b class="Sy" title="Sy">Value</b></td>
+ <td class="It-column"><b class="Sy" title="Sy">Meaning</b></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$00"><code class="Li" id="$00">$00</code></a></td>
+ <td class="It-column"><a class="selflink" href="#+_operator"><code class="Li" id="+_operator">+
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$01"><code class="Li" id="$01">$01</code></a></td>
+ <td class="It-column"><a class="selflink" href="#-_operator"><code class="Li" id="-_operator">-
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$02"><code class="Li" id="$02">$02</code></a></td>
+ <td class="It-column"><a class="selflink" href="#*_operator"><code class="Li" id="*_operator">*
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$03"><code class="Li" id="$03">$03</code></a></td>
+ <td class="It-column"><a class="selflink" href="#/_operator"><code class="Li" id="/_operator">/
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$04"><code class="Li" id="$04">$04</code></a></td>
+ <td class="It-column"><a class="selflink" href="#%_operator"><code class="Li" id="%_operator">%
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$05"><code class="Li" id="$05">$05</code></a></td>
+ <td class="It-column"><a class="selflink" href="#unary_-"><code class="Li" id="unary_-">unary
+ -</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$10"><code class="Li" id="$10">$10</code></a></td>
+ <td class="It-column">|
+ <a class="selflink" href="#operator"><code class="Li" id="operator">operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$11"><code class="Li" id="$11">$11</code></a></td>
+ <td class="It-column"><a class="selflink" href="#&_operator"><code class="Li" id="&_operator">&
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$12"><code class="Li" id="$12">$12</code></a></td>
+ <td class="It-column"><a class="selflink" href="#^_operator"><code class="Li" id="^_operator">^
+ operator</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$13"><code class="Li" id="$13">$13</code></a></td>
+ <td class="It-column"><a class="selflink" href="#unary_~"><code class="Li" id="unary_~">unary
+ ~</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$21"><code class="Li" id="$21">$21</code></a></td>
+ <td class="It-column"><a class="selflink" href="#&&_comparison"><code class="Li" id="&&_comparison">&&
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$22"><code class="Li" id="$22">$22</code></a></td>
+ <td class="It-column"><a class="selflink" href="#||_comparison"><code class="Li" id="||_comparison">||
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$23"><code class="Li" id="$23">$23</code></a></td>
+ <td class="It-column"><a class="selflink" href="#unary"><code class="Li" id="unary">unary</code></a>!</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$30"><code class="Li" id="$30">$30</code></a></td>
+ <td class="It-column"><a class="selflink" href="#==_comparison"><code class="Li" id="==_comparison">==
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$31"><code class="Li" id="$31">$31</code></a></td>
+ <td class="It-column"><a class="selflink" href="#!=_comparison"><code class="Li" id="!=_comparison">!=
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$32"><code class="Li" id="$32">$32</code></a></td>
+ <td class="It-column"><a class="selflink" href="#>_comparison"><code class="Li" id=">_comparison">>
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$33"><code class="Li" id="$33">$33</code></a></td>
+ <td class="It-column"><a class="selflink" href="#<_comparison"><code class="Li" id="<_comparison"><
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$34"><code class="Li" id="$34">$34</code></a></td>
+ <td class="It-column"><a class="selflink" href="#>=_comparison"><code class="Li" id=">=_comparison">>=
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$35"><code class="Li" id="$35">$35</code></a></td>
+ <td class="It-column"><a class="selflink" href="#<=_comparison"><code class="Li" id="<=_comparison"><=
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$40"><code class="Li" id="$40">$40</code></a></td>
+ <td class="It-column"><a class="selflink" href="#<<_comparison"><code class="Li" id="<<_comparison"><<
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$41"><code class="Li" id="$41">$41</code></a></td>
+ <td class="It-column"><a class="selflink" href="#>>_comparison"><code class="Li" id=">>_comparison">>>
+ comparison</code></a></td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$50"><code class="Li" id="$50">$50</code></a></td>
+ <td class="It-column"><a class="selflink" href="#BANK(symbol),"><code class="Li" id="BANK(symbol),">BANK(symbol),</code></a>
+ a <var class="Ar" title="Ar">LONG</var> Symbol ID follows.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$51"><code class="Li" id="$51">$51</code></a></td>
+ <td class="It-column"><a class="selflink" href="#BANK(section_name),"><code class="Li" id="BANK(section_name),">BANK(section_name),</code></a>
+ a null-terminated string follows.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$52"><code class="Li" id="$52">$52</code></a></td>
+ <td class="It-column"><a class="selflink" href="#Current_BANK()"><code class="Li" id="Current_BANK()">Current
+ BANK()</code></a>.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$60"><code class="Li" id="$60">$60</code></a></td>
+ <td class="It-column"><a class="selflink" href="#HRAMCheck."><code class="Li" id="HRAMCheck.">HRAMCheck.</code></a>
+ Check if the value is in HRAM, AND it with 0xFF.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$80"><code class="Li" id="$80">$80</code></a></td>
+ <td class="It-column"><var class="Ar" title="Ar">LONG</var> integer
+ follows.</td>
+ </tr>
+ <tr class="It-column">
+ <td class="It-column"><a class="selflink" href="#$81"><code class="Li" id="$81">$81</code></a></td>
+ <td class="It-column"><var class="Ar" title="Ar">LONG</var> Symbol ID
+ follows.</td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgbds(7)</a>, <a class="Xr" title="Xr">gbz80(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgbds</b> was originally written by Carsten
+ Sørensen as part of the ASMotor package, and was later packaged in
+ RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">January 7, 2018</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/rgbfix.1.html
@@ -1,0 +1,187 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBFIX(1)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBFIX(1)</td>
+ <td class="head-vol">General Commands Manual</td>
+ <td class="head-rtitle">RGBFIX(1)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgbfix</b> — <span class="Nd" title="Nd">Game
+ Boy checksum fixer</span>
+<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+ <tr>
+ <td><b class="Nm" title="Nm">rgbfix</b></td>
+ <td>[<span class="Op"><b class="Fl" title="Fl">-CcjsVv</b></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-i</b>
+ <var class="Ar" title="Ar">game_id</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-k</b>
+ <var class="Ar" title="Ar">licensee_str</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-l</b>
+ <var class="Ar" title="Ar">licensee_id</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-m</b>
+ <var class="Ar" title="Ar">mbc_type</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-n</b>
+ <var class="Ar" title="Ar">rom_version</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-p</b>
+ <var class="Ar" title="Ar">pad_value</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-r</b>
+ <var class="Ar" title="Ar">ram_size</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-t</b>
+ <var class="Ar" title="Ar">title_str</var></span>]
+ <var class="Ar" title="Ar">file</var></td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+The <b class="Nm" title="Nm">rgbfix</b> program changes headers of Game Boy ROM
+ images. It also performs other filetype operations, such as truncation. The
+ arguments are as follows:
+<dl class="Bl-tag">
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#C"><b class="Fl" title="Fl" id="C">-C</b></a></dt>
+ <dd class="It-tag">Set the Game Boy Color–only flag:
+ <i class="Ad">0x143</i> = 0xC0. If both this and the
+ <b class="Fl" title="Fl">-c</b> flag are set, this takes precedence.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#c"><b class="Fl" title="Fl" id="c">-c</b></a></dt>
+ <dd class="It-tag">Set the Game Boy Color–compatible flag:
+ <i class="Ad">0x143</i> = 0x80. If both this and the
+ <b class="Fl" title="Fl">-C</b> flag are set,
+ <b class="Fl" title="Fl">-C</b> takes precedence.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#i"><b class="Fl" title="Fl" id="i">-i</b></a>
+ <var class="Ar" title="Ar">game_id</var></dt>
+ <dd class="It-tag">Set the game ID string
+ (<i class="Ad">0x13F</i>–<i class="Ad">0x142</i>) to a given string
+ of exactly 4 characters. If both this and the title are set, the game ID
+ will overwrite the overlapping portion of the title.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#j"><b class="Fl" title="Fl" id="j">-j</b></a></dt>
+ <dd class="It-tag">Set the non-Japanese region flag: <i class="Ad">0x14A</i> =
+ 1.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#k"><b class="Fl" title="Fl" id="k">-k</b></a>
+ <var class="Ar" title="Ar">licensee_str</var></dt>
+ <dd class="It-tag">Set the new licensee string
+ (<i class="Ad">0x144</i>–<i class="Ad">0x145</i>) to a given
+ string, truncated to at most two characters.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#l"><b class="Fl" title="Fl" id="l">-l</b></a>
+ <var class="Ar" title="Ar">licensee_id</var></dt>
+ <dd class="It-tag">Set the old licensee code, <i class="Ad">0x14B</i>, to a
+ given value from 0 to 0xFF. This value is deprecated and should be set to
+ 0x33 in all new software.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#m"><b class="Fl" title="Fl" id="m">-m</b></a>
+ <var class="Ar" title="Ar">mbc_type</var></dt>
+ <dd class="It-tag">Set the MBC type, <i class="Ad">0x147</i>, to a given value
+ from 0 to 0xFF.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#n"><b class="Fl" title="Fl" id="n">-n</b></a>
+ <var class="Ar" title="Ar">rom_version</var></dt>
+ <dd class="It-tag">Set the ROM version, <i class="Ad">0x14C</i>, to a given
+ value from 0 to 0xFF.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#p"><b class="Fl" title="Fl" id="p">-p</b></a>
+ <var class="Ar" title="Ar">pad_value</var></dt>
+ <dd class="It-tag">Pad the image to a valid size with a given pad value from 0
+ to 0xFF. <b class="Nm" title="Nm">rgbfix</b> will automatically pick a
+ size from 32KiB, 64KiB, 128KiB, ..., 8192KiB and give a warning
+ thereafter. The cartridge size byte (<i class="Ad">0x148</i>) will be
+ changed to reflect this new size.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#r"><b class="Fl" title="Fl" id="r">-r</b></a>
+ <var class="Ar" title="Ar">ram_size</var></dt>
+ <dd class="It-tag">Set the RAM size, <i class="Ad">0x149</i>, to a given value
+ from 0 to 0xFF.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#s"><b class="Fl" title="Fl" id="s">-s</b></a></dt>
+ <dd class="It-tag">Set the SGB flag: <i class="Ad">0x146</i> = 3.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#t"><b class="Fl" title="Fl" id="t">-t</b></a>
+ <var class="Ar" title="Ar">title</var></dt>
+ <dd class="It-tag">Set the title string
+ (<i class="Ad">0x134</i>–<i class="Ad">0x143</i>) to a given
+ string, truncated to at most 16 characters. It is recommended to use 15
+ characters instead, to avoid clashing with the CGB flag
+ (<b class="Fl" title="Fl">-c</b> or <b class="Fl" title="Fl">-C</b>). If
+ both this and the game ID are set, the game ID will overwrite the
+ overlapping portion of the title.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#V"><b class="Fl" title="Fl" id="V">-V</b></a></dt>
+ <dd class="It-tag">Print the version of the program and exit.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#v"><b class="Fl" title="Fl" id="v">-v</b></a></dt>
+ <dd class="It-tag">Validate the header and fix checksums: the Nintendo
+ character area (<i class="Ad">0x104</i>–<i class="Ad">0x133</i>),
+ the header checksum (<i class="Ad">0x14D</i>), and the global checksum
+ (<i class="Ad">0x14E</i>–<i class="Ad">0x14F</i>).</dd>
+</dl>
+<h1 class="Sh" title="Sh" id="EXAMPLES"><a class="selflink" href="#EXAMPLES">EXAMPLES</a></h1>
+Most values in the ROM header are only cosmetic. The bare minimum requirements
+ for a workable image are checksums, the Nintendo logo, and (if needed) the
+ CGB/SGB flags. It is a good idea to pad the image to a valid size as well
+ (“valid” meaning a multiple of 32KiB).
+<div class="Pp"></div>
+The following will make a plain, no-color Game Boy game without checking for a
+ valid size:
+<div class="Pp"></div>
+<div class="D1">$ rgbfix -v foo.gb</div>
+<div class="Pp"></div>
+The following will make a SGB-enabled, color-enabled game with a title of
+ “foobar”, and pad it to a multiple of 32KiB. (The Game Boy
+ itself does not use the title, but some emulators or ROM managers might.)
+<div class="Pp"></div>
+<div class="D1">$ rgbfix -vcs -l 0x33 -p 0 -t foobar baz.gb</div>
+<div class="Pp"></div>
+The following will duplicate the header (sans global checksum) of the game
+ “Survival Kids”:
+<div class="Pp"></div>
+<div class="D1">$ rgbfix -cjsv -k A4 -l 0x33 -m 0x1B -p 0xFF -r 3 -t
+ SURVIVALKIDAVKE SurvivalKids.gbc</div>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgbds(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgbfix</b> was originally released by Carsten
+ Sørensen as a standalone program called gbfix, and was later packaged
+ in RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/rgbgfx.1.html
@@ -1,0 +1,153 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBGFX(1)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBGFX(1)</td>
+ <td class="head-vol">General Commands Manual</td>
+ <td class="head-rtitle">RGBGFX(1)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgbgfx</b> — <span class="Nd" title="Nd">Game
+ Boy graphics converter</span>
+<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+ <tr>
+ <td><b class="Nm" title="Nm">rgbgfx</b></td>
+ <td>[<span class="Op"><b class="Fl" title="Fl">-DfFhPTVv</b></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-o</b>
+ <var class="Ar" title="Ar">outfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-d</b>
+ <var class="Ar" title="Ar">depth</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-p</b>
+ <var class="Ar" title="Ar">palfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-t</b>
+ <var class="Ar" title="Ar">mapfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-x</b>
+ <var class="Ar" title="Ar">tiles</var></span>]
+ <var class="Ar" title="Ar">file</var></td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+The <b class="Nm" title="Nm">rgbgfx</b> program converts PNG images into the
+ Nintendo Game Boy's planar tile format. The arguments are as follows:
+<dl class="Bl-tag">
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#D"><b class="Fl" title="Fl" id="D">-D</b></a></dt>
+ <dd class="It-tag">Debug features are enabled.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#f"><b class="Fl" title="Fl" id="f">-f</b></a></dt>
+ <dd class="It-tag">Fix the input PNG file to be a correctly indexed
+ image.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#F"><b class="Fl" title="Fl" id="F">-F</b></a></dt>
+ <dd class="It-tag">Same as <b class="Fl" title="Fl">-f</b>, but additionally,
+ the input PNG file is fixed to have its parameters match the command
+ line's parameters.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#d"><b class="Fl" title="Fl" id="d">-d</b></a>
+ <var class="Ar" title="Ar">depth</var></dt>
+ <dd class="It-tag">The bitdepth of the output image (either 1 or 2). By
+ default, the bitdepth is 2 (two bits per pixel).</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#h"><b class="Fl" title="Fl" id="h">-h</b></a></dt>
+ <dd class="It-tag">Lay out tiles horizontally rather than vertically.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#o"><b class="Fl" title="Fl" id="o">-o</b></a>
+ <var class="Ar" title="Ar">outfile</var></dt>
+ <dd class="It-tag">The name of the output file.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#p"><b class="Fl" title="Fl" id="p">-p</b></a>
+ <var class="Ar" title="Ar">palfile</var></dt>
+ <dd class="It-tag">Raw bytes (8 bytes for two bits per pixel, 4 bytes for one
+ bit per pixel) containing the RGB15 values in the little-endian byte order
+ and then ordered from lightest to darkest.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#P"><b class="Fl" title="Fl" id="P">-P</b></a></dt>
+ <dd class="It-tag">Same as <b class="Fl" title="Fl">-p</b>, but the pallete
+ file output name is made by taking the input filename, removing the file
+ extension, and appending <i class="Pa" title="Pa">.pal</i>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#t"><b class="Fl" title="Fl" id="t">-t</b></a>
+ <var class="Ar" title="Ar">mapfile</var></dt>
+ <dd class="It-tag">If any tiles are the same, don't place the repeat tiles in
+ the output file, and make a tilemap file.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#T"><b class="Fl" title="Fl" id="T">-T</b></a></dt>
+ <dd class="It-tag">Same as <b class="Fl" title="Fl">-t</b>, but the tilemap
+ file output name is made by taking the input filename, removing the file
+ extension, and appending <i class="Pa" title="Pa">.tilemap</i>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#u"><b class="Fl" title="Fl" id="u">-u</b></a></dt>
+ <dd class="It-tag">Truncate repeated tiles. Useful with tilemaps.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#V"><b class="Fl" title="Fl" id="V">-V</b></a></dt>
+ <dd class="It-tag">Print the version of the program and exit.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#v"><b class="Fl" title="Fl" id="v">-v</b></a></dt>
+ <dd class="It-tag">Verbose. Print errors when the command line parameters and
+ the parameters in the PNG file don't match.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#x"><b class="Fl" title="Fl" id="x">-x</b></a>
+ <var class="Ar" title="Ar">tiles</var></dt>
+ <dd class="It-tag">Trim the end of the output file by this many tiles.</dd>
+</dl>
+<h1 class="Sh" title="Sh" id="EXAMPLES"><a class="selflink" href="#EXAMPLES">EXAMPLES</a></h1>
+The following will take a PNG file with a bitdepth of 1, 2, or 8, and output
+ planar 2bpp data:
+<div class="Pp"></div>
+<div class="D1">$ rgbgfx -o out.2bpp in.png</div>
+<div class="Pp"></div>
+The following creates a planar 2bpp file with only unique tiles, and its tilemap
+ <i class="Pa" title="Pa">out.tilemap</i>:
+<div class="Pp"></div>
+<div class="D1">$ rgbgfx -T -u -o out.2bpp in.png</div>
+<div class="Pp"></div>
+The following will do nothing:
+<div class="Pp"></div>
+<div class="D1">$ rgbgfx in.png</div>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbds(7)</a>, <a class="Xr" title="Xr">rgbasm(1)</a>,
+ <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgbfix(1)</a>, <a class="Xr" title="Xr">gbz80(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgbgfx</b> was created by
+ <span class="An" title="An">stag019</span> to be included in RGBDS. It is now
+ maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/rgblink.1.html
@@ -1,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBLINK(1)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBLINK(1)</td>
+ <td class="head-vol">General Commands Manual</td>
+ <td class="head-rtitle">RGBLINK(1)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgblink</b> — <span class="Nd" title="Nd">Game
+ Boy linker</span>
+<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+ <tr>
+ <td><b class="Nm" title="Nm">rgblink</b></td>
+ <td>[<span class="Op"><b class="Fl" title="Fl">-dtVw</b></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-m</b>
+ <var class="Ar" title="Ar">mapfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-n</b>
+ <var class="Ar" title="Ar">symfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-O</b>
+ <var class="Ar" title="Ar">overlayfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-o</b>
+ <var class="Ar" title="Ar">outfile</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-p</b>
+ <var class="Ar" title="Ar">pad_value</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-s</b>
+ <var class="Ar" title="Ar">symbol</var></span>]
+ [<span class="Op"><b class="Fl" title="Fl">-l</b>
+ <var class="Ar" title="Ar">linkerscript</var></span>]
+ <var class="Ar" title="Ar">file ...</var></td>
+ </tr>
+</table>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+The <b class="Nm" title="Nm">rgblink</b> program links objects created by
+ <a class="Xr" title="Xr">rgbasm(1)</a> into a single Game Boy ROM file.
+<div class="Pp"></div>
+By default, ROM0 sections created by the assembler are placed in the 16KiB bank
+ 0, and ROMX sections are placed in any bank except bank 0. If your ROM will
+ only be 32KiB, you can use the <b class="Fl" title="Fl">-t</b> option to
+ override this.
+<div class="Pp"></div>
+Similarly, WRAM0 sections are placed in the first 4KiB of WRAM bank 0 and WRAMX
+ sections are placed in any bank except bank 0. If your ROM doesn't use banked
+ WRAM you can use option <b class="Fl" title="Fl">-w</b> option to override
+ this.
+<div class="Pp"></div>
+Also, if your ROM is designed for DMG, you can make sure that you don't use any
+ prohibited section by using the option <b class="Fl" title="Fl">-d</b>, which
+ implies <b class="Fl" title="Fl">-w</b> but also prohibits the use of VRAM
+ bank 1.
+<div class="Pp"></div>
+The arguments are as follows:
+<dl class="Bl-tag">
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#m"><b class="Fl" title="Fl" id="m">-m</b></a>
+ <var class="Ar" title="Ar">mapfile</var></dt>
+ <dd class="It-tag">Write a mapfile to the given filename.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#n"><b class="Fl" title="Fl" id="n">-n</b></a>
+ <var class="Ar" title="Ar">symfile</var></dt>
+ <dd class="It-tag">Write a symbol file to the given filename.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#O"><b class="Fl" title="Fl" id="O">-O</b></a>
+ <var class="Ar" title="Ar">overlayfile</var></dt>
+ <dd class="It-tag">The ROM image to overlay sections over. When an overlay ROM
+ is provided, all sections must be fixed. This may be used to patch an
+ existing binray.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#o"><b class="Fl" title="Fl" id="o">-o</b></a>
+ <var class="Ar" title="Ar">outfile</var></dt>
+ <dd class="It-tag">Write ROM image to the given filename.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#p"><b class="Fl" title="Fl" id="p">-p</b></a>
+ <var class="Ar" title="Ar">pad_value</var></dt>
+ <dd class="It-tag">When padding an image, pad with this value. The default is
+ 0x00.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#s"><b class="Fl" title="Fl" id="s">-s</b></a>
+ <var class="Ar" title="Ar">symbol</var></dt>
+ <dd class="It-tag">???</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#w"><b class="Fl" title="Fl" id="w">-w</b></a></dt>
+ <dd class="It-tag">Expand the WRAM0 section size from 4KiB to the full 8KiB
+ assigned to WRAM and prohibit the use of WRAMX sections.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#d"><b class="Fl" title="Fl" id="d">-d</b></a></dt>
+ <dd class="It-tag">Enable DMG mode. Prohibit the use of sections that doesn't
+ exist on a DMG, such as WRAMX and VRAM bank 1. This option automatically
+ enables <b class="Fl" title="Fl">-w</b>.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#t"><b class="Fl" title="Fl" id="t">-t</b></a></dt>
+ <dd class="It-tag">Expand the ROM0 section size from 16KiB to the full 32KiB
+ assigned to ROM and prohibit the use of ROMX sections. Useful for ROMs
+ that fit in 32 KiB.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#l"><b class="Fl" title="Fl" id="l">-l</b></a>
+ <var class="Ar" title="Ar">linkerscript</var></dt>
+ <dd class="It-tag">Specify a linkerscript file that tells the linker how
+ sections must be placed in the ROM. This file has priority over the
+ attributes assigned in the source code, but they have to be consistent.
+ See <a class="Xr" title="Xr">rgblink(5)</a> for more information about its
+ format.</dd>
+ <dt class="It-tag"> </dt>
+ <dd class="It-tag"> </dd>
+ <dt class="It-tag"><a class="selflink" href="#V"><b class="Fl" title="Fl" id="V">-V</b></a></dt>
+ <dd class="It-tag">Print the version of the program and exit.</dd>
+</dl>
+<h1 class="Sh" title="Sh" id="EXAMPLES"><a class="selflink" href="#EXAMPLES">EXAMPLES</a></h1>
+All you need for a basic ROM is an object file, which can be made into a ROM
+ image like so:
+<div class="Pp"></div>
+<div class="D1">$ rgblink -o bar.gb foo.o</div>
+<div class="Pp"></div>
+The resulting bar.gb will not have correct checksums (unless you put them in the
+ assembly source). You should use <a class="Xr" title="Xr">rgbfix(1)</a> to fix
+ these so that the program will actually run in a Game Boy:
+<div class="Pp"></div>
+<div class="D1">$ rgbfix -v bar.gb</div>
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgblink(5)</a>,
+ <a class="Xr" title="Xr">rgbfix(1)</a>, <a class="Xr" title="Xr">rgbds(5)</a>,
+ <a class="Xr" title="Xr">rgbds(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgblink</b> was originally written by Carsten
+ Sørensen as part of the ASMotor package, and was later packaged in
+ RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+++ b/docs/rgblink.5.html
@@ -1,0 +1,105 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ </style>
+ <link rel="stylesheet" href="manual.css" type="text/css" media="all"/>
+ <title>RGBLINK(5)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">RGBLINK(5)</td>
+ <td class="head-vol">File Formats Manual</td>
+ <td class="head-rtitle">RGBLINK(5)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
+<b class="Nm" title="Nm">rgblink</b> —
+ <span class="Nd" title="Nd">linkerscript file format</span>
+<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+The linkerscript is an external file that allows the user to specify the order
+ of sections without the need for doing so before assembling each object file.
+<div class="Pp"></div>
+The placement of sections specified in the linkerscript is done before the
+ sections whose placement is defined in the source code.
+<div class="Pp"></div>
+A linkerscript consists on a series of banks followed by a list of sections and,
+ optionally, commands. They can be lowercase or uppercase, it is ignored. Any
+ line can contain a comment starting with
+ ‘<code class="Li">;</code>’ that ends at the end of the line:
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 5.00ex;">
+<pre class="Li">
+ROMX $F ; This is a comment
+ "Functions to read array"
+ ALIGN 8
+ "Array aligned to 256 bytes"
+
+WRAMX 2
+ "Some variables"
+</pre>
+</div>
+<div class="Pp"></div>
+Numbers can be in decimal or hexadecimal format (the prefix is
+ ‘<code class="Li">$</code>’). It is an error if any bank or
+ command is found before setting a bank.
+<div class="Pp"></div>
+Files can be included by using the <var class="Ar" title="Ar">INCLUDE</var>
+ keyword followed by a string with the path of the file that has to be
+ included.
+<div class="Pp"></div>
+The possible bank types are: <b class="Sy" title="Sy">ROM0</b>,
+ <b class="Sy" title="Sy">ROMX</b>, <b class="Sy" title="Sy">VRAM</b>,
+ <b class="Sy" title="Sy">WRAM0</b>, <b class="Sy" title="Sy">WRAMX</b>,
+ <b class="Sy" title="Sy">OAM</b> and <b class="Sy" title="Sy">HRAM</b>. Types
+ <b class="Sy" title="Sy">ROMX</b>, <b class="Sy" title="Sy">VRAM</b>,
+ <b class="Sy" title="Sy">WRAMX</b> and <b class="Sy" title="Sy">SRAM</b> are
+ banked, which means that it is needed to specify a bank after the type.
+<div class="Pp"></div>
+When a new bank statement is found, sections found after it will be placed right
+ from the beginning of that bank. If the linkerscript switches to a different
+ bank and then it comes back to the previous one it will continue from the last
+ address that was used.
+<div class="Pp"></div>
+The only two commands are <var class="Ar" title="Ar">ORG</var> and
+ <var class="Ar" title="Ar">ALIGN</var>:
+<ul class="Bl-bullet">
+ <li class="It-bullet"><var class="Ar" title="Ar">ORG</var> sets the address in
+ which new sections will be placed. It can not be lower than the current
+ address.</li>
+ <li class="It-bullet"><var class="Ar" title="Ar">ALIGN</var> will increase the
+ address until it is aligned to the specified boundary (it tries to set to
+ 0 the number of bits specified after the command:
+ <b class="Sy" title="Sy">ALIGN 8</b> will align to $100).</li>
+</ul>
+<div class="Pp"></div>
+Note: The bank, alignment, address and type of sections can be specified both in
+ the source code and in the linkerscript. For a section to be able to be placed
+ with the linkerscript the bank must be left unassigned in the source code or
+ be the same as the one specified in the linkerscript. The address and
+ alignment musn't be set.
+<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr" title="Xr">rgbasm(1)</a>, <a class="Xr" title="Xr">rgblink(1)</a>,
+ <a class="Xr" title="Xr">rgbfix(1)</a>, <a class="Xr" title="Xr">rgbds(5)</a>,
+ <a class="Xr" title="Xr">rgbds(7)</a>
+<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
+<b class="Nm" title="Nm">rgblink</b> was originally written by Carsten
+ Sørensen as part of the ASMotor package, and was later packaged in
+ RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
+ <a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">April 17, 2017</td>
+ <td class="foot-os">RGBDS Manual</td>
+ </tr>
+</table>
+</body>
+</html>