AppleWin/help/dbg-symbols.html

289 lines
13 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>AppleWin Debugger Tutorial</title>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
</head>
<body style="DIRECTION: ltr" lang="en-US">
<h2><a name="Symbols"></a>Symbols</h2>
<p>
When a programmer writes an assembly language program instead of directly referring to a memory address over and over again they use a <b>symbolic name</b> instead.
For example, instead of always directly hard-coding $C000 everywhere to read the keyboard they would instead write:
<p><font color="#00b8ff"><font face="courier"><b><pre style="background: rgb(0,0,0) 0% 50%;">
KEYBOARD EQU $C000
1 LDA KEYBOARD
BPL 1
</pre></b></font></font></p>
</p>When debugging assembly programs since you typically don't have the source file availabe you can tell the debugger how to interpret a memory address as a variable name or symbol.
A <b>symbol</b> is the symbolic name and the address assigned to it.</P>
<p>AppleWin supports loading of the assemblers ACME, and Merlin's symbol tables -- a collection of symbols, one per line, organized and collectively called a symbol table.
The semi-colon is a comment-till-end-of-line. The file format per line is: <b>ADDRESS SYMBOL</b></p>
<p>e.g.
<p><font color="#00b8ff"><font face="courier"><b><pre style="background: rgb(0,0,0) 0% 50%;">
; IO Map
C000 KEYBOARD
</pre></b></font></font></p>
<p>There are 9 symbol tables to help organize "modules"; each symbol table individually can be turned off/on independently.
<pre>
MAIN APPLE2E.SYM
BASIC A2_BASIC.SYM
ASM A2_ASM.SYM
User1 A2_USER1.SYM
User2 A2_USER2.SYM
Src1 A2_SRC1.SYM
Src2 A2_SRC2.SYM
DOS33 A2_DOS33.SYM
PRODOS A2_PRODOS.SYM
</pre></p>
<p>On startup the debugger reads 3 symbol tables by default: Main, Basic, User1.</p>
</p>
<p>Looking up symbols is easy.&nbsp; If you can't remember an address of a symbol,
or the reversse -- can't remember the symbol for an address -- you can use the following symbol commands:
(#### referes to either a hex address or a symbolic name)
</p>
<p><br>
<br>
</p>
<table border="0" cellpadding="2" cellspacing="0" width="80%">
<COLGROUP>
<col width="64">
<col width="192">
<tbody>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="25%">
<p><font color="#ffffff"><b>Command</b></font></p>
</td>
<td bgcolor="#000000" width="75%">
<p style="FONT-STYLE: normal"><font color="#ffffff"><b>Effect</b></font></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYM</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Display
the number of symbols in the Main, User, and Source symbol tables.</span></i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYM
####</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Look-up
the Symbol or Address, and display which Symbol Table it is in.</span></i></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; ">SYMUSER
LOAD</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; ">Reloads
the User Symbol Table: <b>A2_USER1.SYM</b></span></i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; ">SYMUSER
CLEAR</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%;">Clears
the User Symbol Table from RAM.</span></i></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYMMAIN
####</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Look-up
only in the Main symbol table.</span></i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYMUSER
####</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Look-up
only in the User symbol table.</span></i></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYMSRC
####</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Look-up
only in the Source symbol table.</span></i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYM
name = ####</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Add
(or update) a symbol in the User table with the new Address.</span></i></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYM
! name</span></b></font></font></p>
</td>
<td width="75%">
<p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Remove
a symbol from the User table.</span></i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">E
symbol ##</span></b></font></font></p>
</td>
<td width="75%">
<p><i>Set memory (at the symbol Address) to the 8-Bit (byte) Value.</i></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000" face="Courier"><b>EB symbol ####</b></font></p>
</td>
<td width="75%">
<p><i>Alias for E.</i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b>E8 symbol ####</b></font></font></p>
</td>
<td width="75%">
<p><i>Alias for E.</i></p>
</td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b>EW symbol ####</b></font></font></p>
</td>
<td width="75%">
<p><i>Set memory (at the symbol Address) to the 16-Bit (word) Value.</i></p>
</td>
</tr>
<tr bgcolor="#999999">
<td width="25%">
<p><font color="#000000"><font face="Courier"><b>E16 symbol ####</b></font></font></p>
</td>
<td width="75%">
<p><i>Alias for EW.</i></p>
</td>
</tr>
</tbody>
</table>
<p><br>
<br>
</p>
<p><font size="4"><b>Examples</b>:</font></p>
<table bgcolor="#000000" border="0" cellpadding="2" cellspacing="0" width="799">
<COLGROUP>
<col width="276">
<col width="515">
<tbody>
<tr bgcolor="#00b8ff">
<td bgcolor="#30c0ff" width="276">
<p><font color="#000000"><b>Input</b></font></p>
</td>
<td bgcolor="#30c0ff" width="515">
<p><font color="#000000"><b>Effect</b></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td width="276">
<p><font color="#00b8ff"><font face="Courier"><b>SYM</b></font></font></p>
</td>
<td width="515">
<p><font color="#ffffff"><i>Displays number of symbols in the Main, User, and Source
tables.</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td width="276">
<p><font color="#00b8ff"><font face="Courier"><b>SYMMAIN CLEAR</b></font></font></p>
</td>
<td width="515">
<p><font color="#ffffff"><i>Clears the main symbol table!!</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td width="276">
<p><font color="#00b8ff"><font face="Courier"><b>SYMMAIN LOAD APPLE2E.SYM</b></font></font></p>
</td>
<td width="515">
<p><font color="#ffffff"><i>Reloads the main symbol table.</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="276">
<p><font color="#00b8ff"><font face="Courier"><b>SYM FA62</b></font></font></p>
</td>
<td bgcolor="#000000" width="515">
<p><font color="#ffffff"><i>Look up the Address $<b><font color="#ffff00">FA62</font></b> (RESET).</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="276">
<p><font color="#00b8ff"><font face="Courier"><b><span style="BACKGROUND: rgb(0,0,0) 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYM
HOME</span></b></font></font></p>
</td>
<td bgcolor="#000000" width="515">
<p><font color="#ffffff"><i>Look up the Address $<b><font color="#ffff00">FC58</font></b> (HOME).</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="276">
<p><font color="#00b8ff"><font face="Courier"><b><span style="BACKGROUND: rgb(0,0,0) 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SYM
LIFE = 300</span></b></font></font></p>
</td>
<td bgcolor="#000000" width="515">
<p><font color="#ffffff"><i>Define a new user symbol, called <20>Life<66> at Address $0300.</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="276">
<p><font color="#00b8ff"><font face="Courier"><b><span style="BACKGROUND: rgb(0,0,0) 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">E
LIFE 64</span></b></font></font></p>
</td>
<td bgcolor="#000000" width="515">
<p><font color="#ffffff"><i>Set 8-Bit variable (@ $<b><font color="#ffff00">0300</font></b>)<29>Life<66>
to 100 (decimal).</i></font></p>
</td>
</tr>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="276">
<p><font color="#00b8ff"><font face="courier"><b><span style="background: rgb(0,0,0) 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">ew
life 3e8</span></b></font></font></p>
</td>
<td bgcolor="#000000" width="515">
<p><font color="#ffffff"><i>Set 16-Bit variable (@ $<b><font color="#ffff00">0300</font></b>)<29>Life<66>
to 1000 (decimal).</i></font></p>
</td>
</tr>
</tbody>
</table>
<p>
<br>
&nbsp;
</p>
</body>
</html>