-<p class="verse">
-<br >
-code mnemonic description<br >
-<br >
-0 nop does notheing<br >
-1 halt halt CPU ( return to DOS on emulator )<br >
-<br >
-2 kbd@ ( – c ) read scancode of pressed or released key.<br >
-                                Returns 0, if no data avaiable.<br >
-3 num <dword> ( – n ) put immidiate number into datastack<br >
-<br >
-4 jmp <dword> jump to specified code<br >
-5 call <dword>jump to specified code, save return address to<br >
-                                return stack.<br >
-<br >
-6 1+ ( n – n+1 )<br >
-7 1- ( n – n-1 )<br >
-<br >
-8 dup ( n – n n ) duplicate top of data stack<br >
-9 drop ( n – ) drop last element in data stack<br >
-<br >
-10 if <dword> ( n – ) jump to addr if top element was 0<br >
-11 ret jump to code, specified in return stack.<br >
-<br >
-12 c@ ( addr – n ) read byte from memory at specified address<br >
-13 c! ( n addr – ) store byte to specified memory<br >
-<br >
-14 push ( DSTK -> RSTK ) move top of datastack to returnstack<br >
-15 pop ( RSTK -> DSTK ) move top of returnstack to datastack<br >
-<br >
-16 <unused><br >
-17 rot ( n1 n2 n3 – n2 n3 n1) rotate stack elements<br >
-<br >
-18 disk@ ( FromDiskSect ToMem – ) read 1KB from disk into RAM<br >
-19 disk! ( FromMem ToDiskSect – ) write 1KB to disk<br >
-<br >
-20 @ ( addr – n ) read 32 bit number from memory<br >
-21 ! ( n addr – ) store 32 bit number to memory<br >
-<br >
-22 over ( n1 n2 – n1 n2 n1 ) self explaining …<br >
-23 swap ( n1 n2 – n2 n1 ) -,,-<br >
-<br >
-24 + ( n1 n2 – n1+n2 ) -,,-<br >
-25 - ( n1 n2 – n1-n2 ) -,,-<br >
-<br >
-26 * ( n1 n2 – n1*n2 ) -,,-<br >
-27 / ( n1 n2 – n1/n2 ) -,,-<br >
-<br >
-28 > ( n1 n2 – result ) is true when n1 > n2<br >
-29 < ( n1 n2 – result ) is true when n1 < n2<br >
-<br >
-30 not ( n1 – not_n1 ) logical not<br >
-31 i ( – n ) copies top of return stack into datastack<br >
-<br >
-32 cprt@ ( addr – n ) read one byte from hardware port<br >
-33 cprt! ( n addr – ) store one byte to hardware port<br >
-<br >
-34 i2 ( – n ) like "i" but takes socond top stack element.<br >
-35 i3 ( – n ) like "i" but takes third top stack element.<br >
-<br >
-36 shl ( n amount – n ) left bit shift<br >
-37 shr ( n amount – n ) right bit shift<br >
-<br >
-38 or ( n1 n2 – n ) logical or<br >
-39 xor ( n1 n2 – n ) exclusive logical or<br >
-<br >
-40 vidmap ( addr – ) copy memory from "addr" to video memory.<br >
-<br >
-41 mouse@ ( – x y button ) read mouse coordinates & buttons<br >
-<br >
-42 vidput ( addr1 addr2 x y – ) put image1 into image2, at<br >
-                                location x, y. Does clipping, so part of a big image<br >
-                                can be mapped into smaller one.<br >
-<br >
-43 cmove ( addr1 addr2 amount ) move memory from addr1 to addr2<br >
-                                if addr1 is greater than addr2 then count address<br >
-                                foward while moving, elseway starts from end and<br >
-                                counts backwards, so no data loss will occure on<br >
-                                overlapping.<br >
-<br >
-44 cfill ( c addr amount – ) fill memory starting at "addr"<br >
-                                with "c" bytes.<br >
-<br >
-45 tvidput ( addr1 addr2 x y – ) same as "vidput" but treats<br >
-                                color 255 in source image as transparent.<br >
-<br >
-46 depth ( – depth ) returns current depth of data stack.<br >
-<br >
-47 charput ( colorfg colorbg addrsrc addrdest x y )<br >
-                                draw character to image buffer located at "addrdest"<br >
-                                to specified x & y location. Decodes 8 bytes from<br >
-                                source to bits, used to draw character.<br >
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+
+
+<colgroup>
+<col class="org-right" />
+
+<col class="org-left" />
+
+<col class="org-left" />
+
+<col class="org-left" />
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="org-right">#</th>
+<th scope="col" class="org-left">name</th>
+<th scope="col" class="org-left">stack footprint</th>
+<th scope="col" class="org-left">description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="org-right">0</td>
+<td class="org-left">nop</td>
+<td class="org-left">--</td>
+<td class="org-left">does nothing</td>
+</tr>
+
+<tr>
+<td class="org-right">1</td>
+<td class="org-left">halt</td>
+<td class="org-left">--</td>
+<td class="org-left">halt CPU ( return to DOS on emulator )</td>
+</tr>
+
+<tr>
+<td class="org-right">2</td>
+<td class="org-left"><a href="#org5d14c50">kbd@</a></td>
+<td class="org-left">– c</td>
+<td class="org-left">read scancode of pressed or released key</td>
+</tr>
+
+<tr>
+<td class="org-right">3</td>
+<td class="org-left">num <dword></td>
+<td class="org-left">– n</td>
+<td class="org-left">put immidiate number into datastack</td>
+</tr>
+
+<tr>
+<td class="org-right">4</td>
+<td class="org-left">jmp <dword></td>
+<td class="org-left">--</td>
+<td class="org-left">jump to specified code</td>
+</tr>
+
+<tr>
+<td class="org-right">5</td>
+<td class="org-left">call <dword></td>
+<td class="org-left"> </td>
+<td class="org-left">jump to specified code, save return address to return stack</td>
+</tr>
+
+<tr>
+<td class="org-right">6</td>
+<td class="org-left">1+</td>
+<td class="org-left">n – n+1</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">7</td>
+<td class="org-left">1-</td>
+<td class="org-left">n – n-1</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">8</td>
+<td class="org-left">dup</td>
+<td class="org-left">n – n n</td>
+<td class="org-left">duplicate top of data stack</td>
+</tr>
+
+<tr>
+<td class="org-right">9</td>
+<td class="org-left">drop</td>
+<td class="org-left">n --</td>
+<td class="org-left">drop last element in data stack</td>
+</tr>
+
+<tr>
+<td class="org-right">10</td>
+<td class="org-left">if <dword></td>
+<td class="org-left">n --</td>
+<td class="org-left">jump to addr if top element was 0</td>
+</tr>
+
+<tr>
+<td class="org-right">11</td>
+<td class="org-left">ret</td>
+<td class="org-left"> </td>
+<td class="org-left">jump to code, specified in return stack.</td>
+</tr>
+
+<tr>
+<td class="org-right">12</td>
+<td class="org-left">c@</td>
+<td class="org-left">addr – n</td>
+<td class="org-left">read byte from memory at specified address</td>
+</tr>
+
+<tr>
+<td class="org-right">13</td>
+<td class="org-left">c!</td>
+<td class="org-left">n addr --</td>
+<td class="org-left">store byte to specified memory</td>
+</tr>
+
+<tr>
+<td class="org-right">14</td>
+<td class="org-left">push</td>
+<td class="org-left">DSTK -> RSTK</td>
+<td class="org-left">move top of datastack to returnstack</td>
+</tr>
+
+<tr>
+<td class="org-right">15</td>
+<td class="org-left">pop</td>
+<td class="org-left">RSTK -> DSTK</td>
+<td class="org-left">move top of returnstack to datastack</td>
+</tr>
+
+<tr>
+<td class="org-right">16</td>
+<td class="org-left"><unused></td>
+<td class="org-left"> </td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">17</td>
+<td class="org-left">rot</td>
+<td class="org-left">n1 n2 n3 – n2 n3 n1</td>
+<td class="org-left">rotate stack elements</td>
+</tr>
+
+<tr>
+<td class="org-right">18</td>
+<td class="org-left">disk@</td>
+<td class="org-left">FromDiskSect ToMem --</td>
+<td class="org-left">read 1KB from disk into RAM</td>
+</tr>
+
+<tr>
+<td class="org-right">19</td>
+<td class="org-left">disk!</td>
+<td class="org-left">FromMem ToDiskSect --</td>
+<td class="org-left">write 1KB to disk</td>
+</tr>
+
+<tr>
+<td class="org-right">20</td>
+<td class="org-left">@</td>
+<td class="org-left">addr – n</td>
+<td class="org-left">read 32 bit number from memory</td>
+</tr>
+
+<tr>
+<td class="org-right">21</td>
+<td class="org-left">!</td>
+<td class="org-left">n addr --</td>
+<td class="org-left">store 32 bit number to memory</td>
+</tr>
+
+<tr>
+<td class="org-right">22</td>
+<td class="org-left">over</td>
+<td class="org-left">n1 n2 – n1 n2 n1</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">23</td>
+<td class="org-left">swap</td>
+<td class="org-left">n1 n2 – n2 n1</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">24</td>
+<td class="org-left">+</td>
+<td class="org-left">n1 n2 – n1+n2</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">25</td>
+<td class="org-left">-</td>
+<td class="org-left">n1 n2 – n1-n2</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">26</td>
+<td class="org-left">*</td>
+<td class="org-left">n1 n2 – n1*n2</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">27</td>
+<td class="org-left">/</td>
+<td class="org-left">n1 n2 – n1/n2</td>
+<td class="org-left"> </td>
+</tr>
+
+<tr>
+<td class="org-right">28</td>
+<td class="org-left">></td>
+<td class="org-left">n1 n2 – result</td>
+<td class="org-left">is true when n1 > n2</td>
+</tr>
+
+<tr>
+<td class="org-right">29</td>
+<td class="org-left"><</td>
+<td class="org-left">n1 n2 – result</td>
+<td class="org-left">is true when n1 < n2</td>
+</tr>
+
+<tr>
+<td class="org-right">30</td>
+<td class="org-left">not</td>
+<td class="org-left">n1 – not_n1</td>
+<td class="org-left">logical not</td>
+</tr>
+
+<tr>
+<td class="org-right">31</td>
+<td class="org-left">i</td>
+<td class="org-left">– n</td>
+<td class="org-left">copies top of return stack into datastack</td>
+</tr>
+
+<tr>
+<td class="org-right">32</td>
+<td class="org-left">cprt@</td>
+<td class="org-left">addr – n</td>
+<td class="org-left">read one byte from hardware port</td>
+</tr>
+
+<tr>
+<td class="org-right">33</td>
+<td class="org-left">cprt!</td>
+<td class="org-left">n addr --</td>
+<td class="org-left">store one byte to hardware port</td>
+</tr>
+
+<tr>
+<td class="org-right">34</td>
+<td class="org-left">i2</td>
+<td class="org-left">– n</td>
+<td class="org-left">like "i" but takes second top stack element</td>
+</tr>
+
+<tr>
+<td class="org-right">35</td>
+<td class="org-left">i3</td>
+<td class="org-left">– n</td>
+<td class="org-left">like "i" but takes third top stack element.</td>
+</tr>
+
+<tr>
+<td class="org-right">36</td>
+<td class="org-left">shl</td>
+<td class="org-left">n amount – n</td>
+<td class="org-left">left bit shift</td>
+</tr>
+
+<tr>
+<td class="org-right">37</td>
+<td class="org-left">shr</td>
+<td class="org-left">n amount – n</td>
+<td class="org-left">right bit shift</td>
+</tr>
+
+<tr>
+<td class="org-right">38</td>
+<td class="org-left">or</td>
+<td class="org-left">n1 n2 – n</td>
+<td class="org-left">logical or</td>
+</tr>
+
+<tr>
+<td class="org-right">39</td>
+<td class="org-left">xor</td>
+<td class="org-left">n1 n2 – n</td>
+<td class="org-left">exclusive logical or</td>
+</tr>
+
+<tr>
+<td class="org-right">40</td>
+<td class="org-left">vidmap</td>
+<td class="org-left">addr --</td>
+<td class="org-left">copy memory from "addr" to video memory.</td>
+</tr>
+
+<tr>
+<td class="org-right">41</td>
+<td class="org-left">mouse@</td>
+<td class="org-left">– x y button</td>
+<td class="org-left">read mouse coordinates & buttons</td>
+</tr>
+
+<tr>
+<td class="org-right">42</td>
+<td class="org-left"><a href="#org997aa8a">vidput</a></td>
+<td class="org-left">addr1 addr2 x y --</td>
+<td class="org-left">put image1 into image2, at location x, y</td>
+</tr>
+
+<tr>
+<td class="org-right">43</td>
+<td class="org-left"><a href="#org7d2145d">cmove</a></td>
+<td class="org-left">addr1 addr2 amount</td>
+<td class="org-left">move memory from addr1 to addr2</td>
+</tr>
+
+<tr>
+<td class="org-right">44</td>
+<td class="org-left">cfill</td>
+<td class="org-left">c addr amount --</td>
+<td class="org-left">fill memory starting at "addr" with "c" bytes.</td>
+</tr>
+
+<tr>
+<td class="org-right">45</td>
+<td class="org-left"><a href="#org3dae1d1">tvidput</a></td>
+<td class="org-left">addr1 addr2 x y --</td>
+<td class="org-left">put image with transparency support</td>
+</tr>
+
+<tr>
+<td class="org-right">46</td>
+<td class="org-left">depth</td>
+<td class="org-left">– depth</td>
+<td class="org-left">returns current depth of data stack.</td>
+</tr>
+
+<tr>
+<td class="org-right">47</td>
+<td class="org-left"><a href="#orgd6f6733">charput</a></td>
+<td class="org-left">colorfg colorbg addrsrc addrdest x y</td>
+<td class="org-left">draw text character</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+
+<div id="outline-container-org5d14c50" class="outline-4">
+<h4 id="org5d14c50"><span class="section-number-4">10.1.2</span> kbd@ - read scancode of pressed or released key</h4>
+<div class="outline-text-4" id="text-10-1-2">
+<p>
+Returns 0 if no data available.