The System Manual of SOL-20 - History of Computers
The System Manual of SOL-20 - History of Computers
The System Manual of SOL-20 - History of Computers
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
V. SUBROUTINES (cont.)<br />
Second are the defined register usages when interfacing at the<br />
machine language level with <strong>SOL</strong>OS.<br />
Whenever a machine program is executed by <strong>SOL</strong>OS (via the EXEC or<br />
XEQ command, or via a custom command), the stack pointer and HL<br />
registers are predefined by <strong>SOL</strong>OS >. <strong>The</strong> stack pointer is set<br />
such that the user may perform stacking operations which will<br />
use the <strong>SOL</strong>OS stack. <strong>The</strong> <strong>SOL</strong>OS stack begins at the end <strong>of</strong> the<br />
<strong>SOL</strong>OS RAM area and works its way down from there. Excessive use<br />
<strong>of</strong> this stack can destroy data maintained by <strong>SOL</strong>OS within its<br />
RAM area. <strong>The</strong> stack is also prepared so that the user may issue<br />
a standard RET instruction to return control to <strong>SOL</strong>OS command<br />
mode processor.<br />
<strong>The</strong> HL register pair is initialized to point to the very beginning<br />
<strong>of</strong> <strong>SOL</strong>OS. It is at this point that the <strong>SOL</strong>OS jump table begins.<br />
<strong>The</strong> user program may then use the address presented in the HL<br />
register pair as the beginning <strong>of</strong> the jump table.<br />
This address is provided for two reasons:<br />
1. CUTER may be located at any address in memory, providing the<br />
means for programs to function with CUTER located at any<br />
address, and<br />
2. the first byte <strong>of</strong> the jump table for <strong>SOL</strong>OS is different from<br />
the first byte for CUTER, providing an easy means <strong>of</strong> distinguishing<br />
between <strong>SOL</strong>OS and CUTER.<br />
Third is the <strong>SOL</strong>OS jump table (see next page). All requests to <strong>SOL</strong>OS<br />
should be made based on this jump table and not to the actual routine<br />
addresses as scattered throughout <strong>SOL</strong>OS. By using only this jump<br />
table, the user can be assured <strong>of</strong> maintaining compatibility between<br />
<strong>SOL</strong>OS and CUTER.<br />
15