Files
Landon Curt Noll a1c86c8a7a add original C links to entry navigation bars
The navigation bar for a winning entry now has a "_Original C_" link
(between the ✅ and the Inventory on the right hand side) so that one
may easily view the original C code that was submitted for IOCCC judging.

Ran `make www timestamp` to perform the above.
2025-08-10 12:46:23 -07:00

878 lines
31 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2006/toledo2 - Best of Show</title>
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
<meta name="description" content="2006 IOCCC entry toledo2 - Best of Show">
<meta name="keywords" content="IOCCC, 2006, IOCCC 2006, IOCCC entry, toledo2, Best of Show">
</head>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- END: this line ends content from: inc/head.default.html -->
<!-- -->
<!-- This web page was formed via the tool: bin/readme2index.sh -->
<!-- The content of main section of this web page came from: 2006/toledo2/README.md -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2006/toledo2/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2006/toledo2/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2006/toledo2/README.md !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/topbar.default.html -->
<div class="theader">
<nav class="topbar">
<div class="container">
<div class="logo">
<a href="../../index.html" class="logo-link">
IOCCC
</a>
</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
Entries
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../years.html" class="sub-item-link">
Winning entries
</a>
</div>
<div class="outfit-font">
<a href="../../authors.html" class="sub-item-link">
Winning authors
</a>
</div>
<div class="outfit-font">
<a href="../../location.html" class="sub-item-link">
Location of authors
</a>
</div>
<div class="outfit-font">
<a href="../../bugs.html" class="sub-item-link">
Bugs and (mis)features
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
Fixing entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_author" class="sub-item-link">
Updating author info
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
Status
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../news.html" class="sub-item-link">
News
</a>
</div>
<div class="outfit-font">
<a href="../../status.html" class="sub-item-link">
Contest status
</a>
</div>
<div class="outfit-font">
<a href="../../next/rules.html" class="sub-item-link">
IOCCC rules
</a>
</div>
<div class="outfit-font">
<a href="../../next/guidelines.html" class="sub-item-link">
IOCCC guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../markdown.html" class="sub-item-link">
Markdown guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../SECURITY.html" class="sub-item-link">
Security policy
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
FAQ
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../faq.html" class="sub-item-link">
Frequently asked questions
</a>
</div>
<div class="outfit-font">
<a href="../../quick-start.html#enter" class="sub-item-link">
Enter the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#compiling" class="sub-item-link">
Compiling entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#running_entries" class="sub-item-link">
Running entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#help" class="sub-item-link">
How to help
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
About
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../index.html" class="sub-item-link">
Home page
</a>
</div>
<div class="outfit-font">
<a href="../../social.html" class="sub-item-link">
IOCCC social media
</a>
</div>
<div class="outfit-font">
<a href="../../about.html" class="sub-item-link">
About the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../judges.html" class="sub-item-link">
The judges
</a>
</div>
<div class="outfit-font">
<a href="../../thanks-for-help.html" class="sub-item-link">
Thanks for the help
</a>
</div>
<div class="outfit-font">
<a href="../../contact.html" class="sub-item-link">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</nav>
<div class="header-mobile-menu">
<noscript>
<a href="../../nojs-menu.html" class="topbar-js-label">
Please Enable JavaScript
</a>
</noscript>
<button id="header-open-menu-button" class="topbar-mobile-menu">
<img
src="../../png/hamburger-icon-open.png"
alt="hamburger style menu icon - open state"
width=48
height=48>
</button>
<button id="header-close-menu-button" class="hide-content">
<img
src="../../png/hamburger-icon-closed.png"
alt="hamburger style menu icon - closed state"
width=48
height=48>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Entries
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../years.html">
Winning entries
</a>
<a class="mobile-submenu-item" href="../../authors.html">
Winning authors
</a>
<a class="mobile-submenu-item" href="../../location.html">
Location of authors
</a>
<a class="mobile-submenu-item" href="../../bugs.html">
Bugs and (mis)features
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
Fixing entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
Updating author info
</a>
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Status
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../news.html">
News
</a>
<a class="mobile-submenu-item" href="../../status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="../../next/rules.html">
IOCCC rules
</a>
<a class="mobile-submenu-item" href="../../next/guidelines.html">
IOCCC guidelines
</a>
<a class="mobile-submenu-item" href="../../markdown.html">
Markdown guidelines
</a>
<a class="mobile-submenu-item" href="../../SECURITY.html">
Security policy
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
FAQ
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../faq.html">
Frequently asked questions
</a>
<a class="mobile-submenu-item" href="../../quick-start.html#enter">
Enter the IOCCC
</a>
<a class="mobile-submenu-item" href="../../faq.html#compiling">
Compiling entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
Running entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#help">
How to help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
About
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../index.html">
Home page
</a>
<a class="mobile-submenu-item" href="../../social.html">
IOCCC social media
</a>
<a class="mobile-submenu-item" href="../../about.html">
About the IOCCC
</a>
<a class="mobile-submenu-item" href="../../judges.html">
The judges
</a>
<a class="mobile-submenu-item" href="../../contact.html">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<a href="../../2011/zucker/index.html">
<img src="../../png/ioccc.png"
alt="IOCCC image by Matt Zucker"
width=300
height=110>
</a>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2006/toledo2 - Best of Show</h2>
<h3>An 8080 emulator</h3>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/navbar.mid.html -->
<div class="navbar">
<a class="Left" href="../toledo1/index.html">&larr; 2006/toledo1</a>
<a class="Left" href="../index.html">&uarr; 2006 &uarr;</a>
<a class="Left" href="../toledo3/index.html">2006/toledo3 &rarr;</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/toledo2.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/Makefile">Makefile</a>
<a class="Right" href="#inventory">Inventory</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/toledo2.orig.c">Original C</a>
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2006%2Ftoledo2%2Findex.html">&#x2713;</a>
</div>
<!-- END: this line ends content from: inc/navbar.mid.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<div class="content" id="content">
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
<h2 id="author">Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Oscar_Toledo">Oscar Toledo G.</a><br>
Location: <a href="../../location.html#MX">MX</a> - <em>United Mexican States</em> (<em>Mexico</em>)</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2006/toledo2/README.md -->
<h2 id="to-build">To build:</h2>
<pre><code> make</code></pre>
<p>There is <a href="#alternate-code">alternate code</a> that is based on the author’s notes
for DOS/Windows. This cannot be tested by us, not even to compile, but it appears
that it should be fine, after the proper header files were added.</p>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<blockquote>
<p><strong>STATUS: INABIAF - please DO NOT fix</strong></p>
</blockquote>
<p>For more detailed information see <a href="../../bugs.html#2006_toledo2">2006/toledo2 in bugs.html</a>.</p>
<h2 id="to-use">To use:</h2>
<pre><code> ./toledo2</code></pre>
<p>To end execution press <code>ctrl-z</code>. As mentioned in the author’s remarks and in the
below section, it is supposed to crash on termination though some noted this
does not seem to happen in macOS or linux in 2023.</p>
<h2 id="try">Try:</h2>
<pre><code> ./toledo2</code></pre>
<p>and then type in the following:</p>
<pre><code> 10 PRINT &quot;HELLO WORLD!&quot;
LIST
RUN</code></pre>
<p>To end the program hit ctrl-z.</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>This version, as noted above, should work for DOS/Windows. It uses non-standard
functions in place of <code>read(2)</code> and <code>write(2)</code>, and is based on the author’s
remarks.</p>
<h3 id="alternate-build">Alternate build:</h3>
<pre><code> make alt</code></pre>
<h3 id="alternate-use">Alternate use:</h3>
<p>The author noted that for PC/DOS you will have to add <code>ANSI.SYS</code> to your
<code>CONFIG.SYS</code> but this is also something we can’t test.</p>
<p>Use <code>toledeo2.alt</code> as you would <code>toledo2</code> above.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>We’re impressed! Last year, it was a
<a href="https://en.wikipedia.org/wiki/MOS_Technology_6502">6502</a> emulator; this year,
it’s <a href="https://en.wikipedia.org/wiki/Intel_8080">8080</a>! It requires an input file
(<code>C</code>) to be present, but it does not have to be one of <code>C.BASIC</code> or <code>C.BIOS</code> -
you’re welcome to write a standalone 8080 program yourself! How about <code>C.FORTH</code>
or <code>C.LISP</code>?</p>
<p>In addition to the functionality you could expect from a program
of this size, it allows importing files from the host file
system (one by one, so you’ll have to be patient).</p>
<p>Remember the good old days and play (or let your kids play)
<a href="https://rickadams.org/adventure/">Adventure</a> (in the directory <code>ADVENTUR</code>);
walking in a maze of twisty little passages all alike is easier than
understanding the code!</p>
<p><strong>NOTE</strong>: The <code>KAYPROII.ZIP</code> file originally came from
<a href="http://www.retroarchive.org/cpm/os/KAYPROII.ZIP">http://www.retroarchive.org/cpm/os/KAYPROII.ZIP</a>.
For your convenience, we have included <code>KAYPROII.ZIP</code> in this entry.
Both the <code>make all</code> and the <code>make alt</code> unzip that file, and the <code>make clobber</code>
removes those files extracted from the <code>KAYPROII.ZIP</code>.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program emulates a complete <a href="https://en.wikipedia.org/wiki/Intel_8080">Intel(r)
8080</a> processor, along with a teletype
and a disk controller, just like at the start of the personal computers
revolution (circa 1975).</p>
<p>It needs an initial memory image to do something usable, so along with it you
will find two files: <a href="C.BASIC">C.BASIC</a> and <a href="C.BIOS">C.BIOS</a>. Rename
<a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/C.BASIC">C.BASIC</a> to <code>C</code> (NOTE from the judges: running <code>make</code> will do this for
you), run the emulator, and et voila! you have the public domain Palo Alto <a href="https://en.wikipedia.org/wiki/Tiny_BASIC">Tiny
BASIC</a> (by Li-Chen Wang), published in
the very first volume of <a href="https://en.wikipedia.org/wiki/Dr._Dobb%27s_Journal">Dr. Dobb’s
Journal</a>.</p>
<p>Type using uppercase letters. Here are three example programs. Press Enter after
each line:</p>
<pre><code> 10 PRINT &quot;Hello, world!&quot;
LIST
RUN
10 FOR A=1 TO 10
20 PRINT A
30 NEXT A
LIST
RUN
10 INPUT A
20 INPUT B
30 PRINT A+B
LIST
RUN</code></pre>
<p>Press Ctrl+Z to quit. By the way, the segmentation fault is
normal at this point.</p>
<p>All good programmers started learning
<a href="https://en.wikipedia.org/wiki/BASIC">BASIC</a>, now, what about a
<a href="https://en.wikipedia.org/wiki/CP/M">CP/M</a> emulator?</p>
<p>Copy <code>CPM64.COM</code> to files named <code>A</code> and <code>B</code> (these
will be the disk drives). Now rename the provided <code>C.BIOS</code> to <code>C</code> and
run the emulator.</p>
<p>Now you have a running <a href="https://en.wikipedia.org/wiki/CP/M">CP/M</a> system!, with
two files on A: drive, <code>HALT.COM</code> to stop the emulator (so it closes drives) and
<code>IMPORT.COM</code> to introduce new files. The two files are created automatically
by the provided C.BIOS.</p>
<p>To get a complete <a href="https://en.wikipedia.org/wiki/CP/M">CP/M</a> system, you will need the following files
from the <code>SOURCE</code> directory:</p>
<ul>
<li><code>ASM.COM</code></li>
<li><code>DDT.COM</code></li>
<li><code>DUMP.COM</code></li>
<li><code>ED.COM</code></li>
<li><code>LOAD.COM</code></li>
<li><code>PIP.COM</code></li>
<li><code>STAT.COM</code></li>
<li><code>SUBMIT.COM</code></li>
<li><code>XSUB.COM</code></li>
</ul>
<p>To import them, you must run the emulator with an argument, by
example:</p>
<pre><code> ./toledo2 DDT.COM</code></pre>
<p>When the <code>&gt;</code> prompt appears, do:</p>
<pre><code> IMPORT DDT.COM</code></pre>
<p>When it ends, do <code>HALT</code>, so the file is closed, and you can start
the same process with another file.</p>
<p>At this time I have tested successfully the following software
from <a href="http://www.retroarchive.org" class="uri">http://www.retroarchive.org</a>:</p>
<ul>
<li><a href="http://www.retroarchive.org/cpm/lang/c80v30.zip" class="uri">http://www.retroarchive.org/cpm/lang/c80v30.zip</a></li>
<li><a href="http://www.retroarchive.org/cpm/lang/Mbasic.com" class="uri">http://www.retroarchive.org/cpm/lang/Mbasic.com</a></li>
<li><a href="http://www.retroarchive.org/cpm/business/MULTPLAN.ZIP" class="uri">http://www.retroarchive.org/cpm/business/MULTPLAN.ZIP</a></li>
</ul>
<p>Some programs require installation to configure the terminal,
locate ANSI or VT-100.</p>
<h3 id="what-is-an-8080">What is an 8080?</h3>
<p>It is simply the little brother of the
<a href="https://en.wikipedia.org/wiki/Zilog_Z80">Z80</a>; it has no extended
registers (<code>AF'</code>, <code>BC'</code>, <code>DE'</code>, <code>HL'</code>, <code>IX</code> or <code>IY</code>), no relative jumps,
and no instruction beginning with <code>CB</code>, <code>DD</code>, <code>ED</code> or <code>FD</code> exists.</p>
<p>The flags are only <code>S</code> (Sign, bit 7), <code>Z</code> (Zero, bit 6), <code>P</code> (Parity,
bit 2) and <code>C</code> (Carry, bit 0).</p>
<h3 id="porting-it">Porting it</h3>
<p>It is easy if your platform has <code>getch()</code>/<code>kbhit()</code> and
ANSI terminal:</p>
<ul>
<li><code>read</code>
<ul>
<li><code>Z=kbhit()?getch():0</code></li>
</ul></li>
<li><code>write</code>
<ul>
<li><code>putchar(7[o])</code></li>
</ul></li>
<li><code>system</code>
<ul>
<li>nothing</li>
</ul></li>
</ul>
<p>Notice that you’ll have to do <code>#include &lt;conio.h&gt;</code> as well.</p>
<p>Also add the following to trap Ctrl-C:</p>
<pre><code> #include &lt;signal.h&gt;
signal(SIGINT, SIG_IGN);</code></pre>
<p><strong>NOTE</strong>: this is what the <a href="#alternate-code">alternate code</a> is for!</p>
<p><strong>NOTE from the Judges</strong>: in Unix like systems <code>getch()</code> is part of curses but this
is not what is needed.</p>
<p>On PC/DOS you need to add <code>ANSI.SYS</code> to <code>CONFIG.SYS</code>.</p>
<p>In Unix the min 0 on <code>stty</code> is required but circa 2001
it was not required.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge:</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The <code>l</code> array contains the 64K memory; it is initialized with a boot image
loaded from the <code>C</code> file. The <a href="https://en.wikipedia.org/wiki/Program_counter">program
counter</a> is the <code>c</code> pointer and
<a href="https://en.wikipedia.org/wiki/Processor_register">registers</a> are in <code>o[]</code>. The
main loop reads every <a href="https://en.wikipedia.org/wiki/Opcode">opcode</a> and
separates them in one of three common forms. A lot of ternary operators selects
the instruction.</p>
<ul>
<li><code>o[0]</code>
<ul>
<li>B register</li>
</ul></li>
<li><code>o[1]</code>
<ul>
<li>C register</li>
</ul></li>
<li><code>o[2]</code>
<ul>
<li>D register</li>
</ul></li>
<li><code>o[3]</code>
<ul>
<li>E register</li>
</ul></li>
<li><code>o[4]</code>
<ul>
<li>H register</li>
</ul></li>
<li><code>o[5]</code>
<ul>
<li>L register</li>
</ul></li>
<li><code>o[6]</code>
<ul>
<li>Flags</li>
</ul></li>
<li><code>o[7]</code>
<ul>
<li>A or accumulator</li>
</ul></li>
</ul>
<p>The following instructions do peripheral operation:</p>
<ul>
<li><code>76</code>
<ul>
<li>Quits emulator</li>
</ul></li>
<li><code>DB 00</code>
<ul>
<li>Reads key pressed status</li>
</ul></li>
<li><code>DB 01</code>
<ul>
<li>Reads key</li>
</ul></li>
<li><code>DB 02</code>
<ul>
<li>Reads byte from file (Carry=EOF)</li>
</ul></li>
<li><code>D3 xx</code>
<ul>
<li>Writes byte from acc. to console</li>
</ul></li>
<li><code>ED ED 02</code>
<ul>
<li>Reads sector</li>
</ul></li>
<li><code>ED ED 03</code>
<ul>
<li>Writes sector</li>
</ul></li>
</ul>
<p>Memory addresses:</p>
<ul>
<li><code>FBFA</code>
<ul>
<li>Low source/target direction</li>
</ul></li>
<li><code>FBFB</code>
<ul>
<li>High source/target direction</li>
</ul></li>
<li><code>FBFC</code>
<ul>
<li>Sector</li>
</ul></li>
<li><code>FBFD</code>
<ul>
<li>Low cylinder</li>
</ul></li>
<li><code>FBFE</code>
<ul>
<li>High cylinder</li>
</ul></li>
<li><code>FBFF</code>
<ul>
<li>Drive.</li>
</ul></li>
</ul>
<p>The BIOS is tailor made for this emulator, and helps to simplify it.</p>
<h3 id="other-notes">Other notes</h3>
<ul>
<li>The 8080 runs at your computer speed divided
between a number that I have not calculated.</li>
<li>This obfuscated processor is created using
obfuscated code produced by an obfuscated mind;
no brains were harmed during its production,
except those that tried to read the code.</li>
<li>The original version of this code was eaten
by my C++ dog.</li>
<li>I intended to make it simple to understand;
it uses only four C keywords.</li>
<li>Also I discovered that braces are very useful
for commenting.</li>
<li>Why bother with prototypes? Every good C
programmer can develop their C programs using
only one function.</li>
</ul>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
-->
<!-- AFTER: last line of markdown file: 2006/toledo2/README.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<div id="inventory">
<h1 id="inventory-for-2006toledo2">Inventory for 2006/toledo2</h1>
</div>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/toledo2.c">toledo2.c</a> - entry source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/toledo2.alt.c">toledo2.alt.c</a> - alternate source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/toledo2.orig.c">toledo2.orig.c</a> - original source code</li>
<li><a href="KAYPROII.ZIP">KAYPROII.ZIP</a> - zip file of CPM related files</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="2006_toledo2.tar.bz2">2006_toledo2.tar.bz2</a> - download entry tarball</li>
<li><a href="A">A</a> - binary support file</li>
<li><a href="B">B</a> - binary support file</li>
<li><a href="C.BASIC">C.BASIC</a> - compiled BASIC file</li>
<li><a href="C.BIOS">C.BIOS</a> - required Basic Input/Output System</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2006/toledo2/.path">.path</a> - directory path from top level directory</li>
<li><a href="index.html">index.html</a> - this web page</li>
</ul>
<hr style="width:10%;text-align:left;margin-left:0">
<h4>
Jump to: <a href="#">top</a>
</h4>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
</div>
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/footer.inventory.html -->
<!--
Copyright © 1984-2025 by Landon Curt Noll. All Rights Reserved.
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
-->
<div class="footer">
<div id="copyright"><h3>Copyright &copy; 1984-2025 by Landon Curt Noll:
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
target="_blank"
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
<p>
This work is <b>licensed by Landon Curt Noll</b> under
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
target="_blank"
rel="license noopener noreferrer"
style="display:inline-block;">CC BY-SA 4.0</a></b>.
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/cc.png"
alt="cc inside circle symbol">
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/by.png"
alt="person inside circle symbol">
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/sa.png"
alt="arrow looping back on itself inside circle symbol"><br>
You should <b>carefully review</b> the
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
target="_blank"
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
before using the licensed material.<br>
You may wish to review the
<b><a href="../../license.html"
target="_blank"
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
of <b>CC BY-SA 4.0</b>.<br>
</p>
</div>
<div id="coda"><h3>Coda</h3>
<p>
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2006%2Ftoledo2%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
</p>
</div>
</div>
<!-- END: this line ends content from: inc/footer.inventory.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->