http://www.evillabs.net/index.php?title=OnSpec_90c26&feed=atom&action=history
OnSpec 90c26 - Revision history
2024-03-29T15:11:51Z
Revision history for this page on the wiki
MediaWiki 1.41.0
http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=167&oldid=prev
Ezrec: Reverted edits by Uxuduvu (talk) to last revision by Ezrec
2010-11-22T18:12:28Z
<p>Reverted edits by <a href="/index.php/Special:Contributions/Uxuduvu" title="Special:Contributions/Uxuduvu">Uxuduvu</a> (<a href="/index.php?title=User_talk:Uxuduvu&action=edit&redlink=1" class="new" title="User talk:Uxuduvu (page does not exist)">talk</a>) to last revision by <a href="/index.php?title=User:Ezrec&action=edit&redlink=1" class="new" title="User:Ezrec (page does not exist)">Ezrec</a></p>
<p><b>New page</b></p><div>= Introduction =<br />
<br />
The OnSpec 90c26 was used on Adara and Microtek flatbed scanners in the<br />
late 1990s as a parallel port to SCSI adapter.<br />
<br />
= IBM-style Parallel Port Information =<br />
<br />
==Port Registers==<br />
<br />
Port R/W IOAddr Bits Function<br />
---------- ------ ----- ----------------<br />
Data Out W Base+0 D0-D7 8 LS TTL outputs<br />
Status In R Base+1 S3-S7 5 LS TTL inputs<br />
Control Out W Base+2 C0-C3 4 TTL Open Collector outputs<br />
" " " C4 internal, IRQ enable<br />
" " " C5 internal, Tristate data [PS/2]<br />
<br />
Data Feedback R Base+0 D0-D7 matches Data Out<br />
Control Feedbk R Base+2 C0-C3 matches Control Out<br />
" " " C4 internal, IRQ enable readback<br />
<br />
The Feedback registers are for diagnostic purposes (except in bidirectional<br />
ports, where Data Feedback is used for data input; and the IRQ enable C4).<br />
<br />
==Pin signals and register bits==<br />
<br />
<= in DB25 Cent Name of Reg<br />
=> out pin pin Signal Bit Function Notes<br />
------ ---- ---- -------- --- -----------------------------<br />
=> 1 1 -Strobe C0- Set Low pulse >0.5 us to send<br />
=> 2 2 Data 0 D0 Set to least significant data<br />
=> 3 3 Data 1 D1 ...<br />
=> 4 4 Data 2 D2 ...<br />
=> 5 5 Data 3 D3 ...<br />
=> 6 6 Data 4 D4 ...<br />
=> 7 7 Data 5 D5 ...<br />
=> 8 8 Data 6 D6 ...<br />
=> 9 9 Data 7 D7 Set to most significant data<br />
<= 10 10 -Ack S6+ IRQ Low Pulse ~ 5 uS, after accept<br />
<= 11 11 +Busy S7- High for Busy/Offline/Error<br />
<= 12 12 +PaperEnd S5+ High for out of paper<br />
<= 13 13 +SelectIn S4+ High for printer selected<br />
=> 14 14 -AutoFd C1- Set Low to autofeed one line<br />
<= 15 32 -Error S3+ Low for Error/Offline/PaperEnd<br />
=> 16 31 -Init C2+ Set Low pulse > 50uS to init<br />
=> 17 36 -Select C3- Set Low to select printer<br />
== 18-25 19-30, Ground<br />
33,17,16<br />
<br />
Note: Some cables, ports, or connectors may not connect all grounds.<br />
Centronics pins 19-30 and 33 are "twisted pair return" grounds, while<br />
17 is "chassis ground" and 16 is "logic ground".<br />
<br />
"<= In" and "=> Out" are defined from the viewpoint of the PC, not the<br />
printer. The IRQ line (-Ack/S6+) is positive edge triggered, but only<br />
enabled if C4 is 1.<br />
<br />
Here's the same data grouped for ease of reference by Control Out and Status<br />
In registers and pins. (Data Out is straightforward in previous table).<br />
<br />
<= in DB25 Cent Name of Reg<br />
=> out pin pin Signal Bit Function Notes<br />
------ ---- ---- -------- --- ------------------------------<br />
=> 17 36 -Select C3- Set Low to select printer<br />
=> 16 31 -Init C2+ Set Low pulse > 50uS to init<br />
=> 14 14 -AutoFd C1- Set Low to autofeed one line<br />
=> 1 1 -Strobe C0- Set Low pulse > 0.5 us to send<br />
<br />
<= 11 11 +Busy S7- High for Busy/Offline/Error<br />
<= 10 10 -Ack S6+ IRQ Low Pulse ~ 5 uS, after accept<br />
<= 12 12 +PaperEnd S5+ High for out of paper<br />
<= 13 13 +SelectIn S4+ High for printer selected<br />
<= 15 32 -Error S3+ Low for Error/Offline/PaperEnd<br />
<br />
<br />
= Physical Layer Protocol =<br />
<br />
==PS/2 and Nibble Modes==<br />
<br />
===Sending a Command===<br />
<br />
{| border=1<br />
| D0-D7 || <= Command Byte <br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|}<br />
<br />
===Sending a Value===<br />
<br />
{| border=1 <br />
| D0-D7 || <= Value Byte<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x07 (lower #STROBE, #INIT, and #AUTOFD)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|}<br />
<br />
===Read a Register (Nibble Mode)===<br />
<br />
{| border=1<br />
| D0-D7 || <= Command Byte <br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| C0-C3 || <= 0x06 (lower #AUTOFD and #INIT)<br />
|-<br />
| S3-S7 || >= Status Byte 1<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| C0-C3 || <= 0x06 (lower #AUTOFD and #INIT)<br />
|-<br />
| S3-S7 || >= Status Byte 2<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|}<br />
<br />
Read Value = (Status Byte 1 >> 4) &amp; 0xf) | (Status Byte 2 & 0xf0)<br />
<br />
===Read a Register (PS/2 Mode)===<br />
<br />
{| border=1<br />
| D0-D7 || <= Command Byte <br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| C0-C3, Tristate Enable || <= 0x26 (tristate data, #AUTOFD, and #INIT)<br />
|-<br />
| D0-D7 || >= Read Value<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|}<br />
<br />
===Writing Register===<br />
<br />
{| border=1<br />
| D0-D7 || <= Register Byte <br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x0D (lower #STROBE, #INIT, and #SELECT)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| D0-D7 || <= Value Byte<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x07 (lower #STROBE, #INIT, and #AUTOFD)<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|}<br />
<br />
===Writing a Block===<br />
<br />
{| border=1<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| D0-D7 || <= Byte 0<br />
|-<br />
| C0-C3 || <= 0x07 (lower #STROBE, #AUTOFD, and #INIT)<br />
|-<br />
| D0-D7 || <= Byte 1<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| ... <br />
|-<br />
| D0-D7 || <= Byte N is even<br />
|-<br />
| C0-C3 || <= 0x07 (lower #STROBE, #AUTOFD, and #INIT)<br />
|-<br />
| D0-D7 || <= Byte N is odd<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
|}<br />
<br />
===Reading a Block (Nibble)===<br />
<br />
{| border=1<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| C0-C3 || <= 0x06 (lower #AUTOFD and #INIT)<br />
|-<br />
| S3-S7 || >= Status Byte 0<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| C0-C3 || <= 0x06 (lower #AUTOFD and #INIT)<br />
|-<br />
| S3-S7 || >= Status Byte 1<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|- <br />
| || Read Value = (Status Byte 1 >> 4) &amp; 0xf) &pipe; (Status Byte 2 &amp; 0xf0)<br />
|-<br />
| ...<br />
|}<br />
<br />
===Reading a Block (PS/2)===<br />
<br />
{| border=1<br />
|-<br />
| C0-C3 || <= 0x24 (Tristate, lower #INIT)<br />
|-<br />
| D0-D7 || >= Read Byte 0<br />
|-<br />
| C0-C3 || <= 0x26 (tristate, lower #INIT and #AUTOFD)<br />
|-<br />
| D0-D7 || >= Read Byte 1<br />
|-<br />
| ...<br />
|-<br />
| C0-C3 || <= 0x24 (tristate, lower #INIT)<br />
|-<br />
| D0-D7 || >= Read Byte N even<br />
|-<br />
| C0-C3 || <= 0x26 (tristate, lower #INIT and #AUTOFD)<br />
|-<br />
| D0-D7 || >= Read Byte N odd<br />
|}<br />
<br />
<br />
==EPP Modes==<br />
<br />
===Sending a Command===<br />
<br />
{| border=1<br />
| ADDR || <= Command Byte<br />
|}<br />
<br />
===Sending a Value===<br />
<br />
{| border=1<br />
| DATA || <= Value Byte<br />
|}<br />
<br />
<br />
===Writing a Register===<br />
<br />
{| border=1<br />
| ADDR || <= Register Byte<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #RESET)<br />
|-<br />
| DATA || <= Value Byte<br />
|-<br />
| C0-C3 || <= 0x04 (lower #RESET)<br />
|}<br />
<br />
=== Reading a Register ===<br />
<br />
{| border=1<br />
| ADDR || <= Register Byte<br />
|-<br />
| C0-C3, Tristate Enable || <= 0x24 (tristate data, lower #INIT)<br />
|-<br />
| DATA || >= Read Value<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|}<br />
<br />
=== Writing a Block ===<br />
<br />
{| border=1<br />
|-<br />
| C0-C3 || <= 0x05 (lower #STROBE and #INIT)<br />
|-<br />
| DATA || <= Data Byte 0<br />
|-<br />
| DATA || <= Data Byte 1<br />
|-<br />
...<br />
| DATA || <= Data Byte N<br />
|}<br />
<br />
=== Reading a Block ===<br />
<br />
{| border=1<br />
|-<br />
| C0-C3 Tristate || <= 0x24 (Tristate, lower #INIT)<br />
|-<br />
| DATA || => Data Byte 0<br />
|-<br />
| DATA || => Data Byte 1<br />
|-<br />
...<br />
| DATA || => Data Byte N<br />
|}<br />
<br />
<br />
== Link Connection ==<br />
<br />
=== Connect Link ===<br />
<br />
{| border=1<br />
| DATA || <= 0xFE<br />
|-<br />
| DATA || <= 0xAA<br />
|-<br />
| DATA || <= 0x55<br />
|-<br />
| DATA || <= 0x00<br />
|-<br />
| DATA || <= 0xFF<br />
|-<br />
| DATA || <= 0x87<br />
|-<br />
| DATA || <= 0x78<br />
|-<br />
| DATA || <= 0x20<br />
|-<br />
| C0-C3 || <= 0x05 (lower #INIT and #STROBE)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| DATA || <= 0xFF<br />
|}<br />
<br />
Nibble_Command(2)<br />
Nibble_Value(0)<br />
Nibble_Command(2)<br />
NIbble_Value(IsNibbleMode ? 0 : 1)<br />
Write_Register(2, IsNibbleMode ? 0 : 1)<br />
<br />
=== Disconnect Link ===<br />
<br />
Write_Register(3, 0)<br />
Write_Register(7, 0x48)<br />
Command(4)<br />
<br />
{| border=1<br />
| DATA || <= 0xFE<br />
|-<br />
| DATA || <= 0xAA<br />
|-<br />
| DATA || <= 0x55<br />
|-<br />
| DATA || <= 0x00<br />
|-<br />
| DATA || <= 0xFF<br />
|-<br />
| DATA || <= 0x87<br />
|-<br />
| DATA || <= 0x78<br />
|-<br />
| DATA || <= 0x30<br />
|-<br />
| C0-C3 || <= 0x05 (lower #INIT and #STROBE)<br />
|-<br />
| C0-C3 || <= 0x04 (lower #INIT)<br />
|-<br />
| DATA || <= 0xFF<br />
|}<br />
<br />
= OnSpec 90c26 Registers =<br />
<br />
{| border=1<br />
! Register !! Type !! Comments<br />
| 0x00 || R/W || B0-B6: SCSI Target<br>B7: Initiator Mode<br />
|-<br />
| 0x01 || R/W || B0: SCSI Connected/Busy (R/O)<br />
<br>B1: SCSI Enable<br />
<br>B4: SCSI Bus State REQ (R/O)<br />
<br>B5: SCSI Bus State MSG (R/O)<br />
<br>B6: SCSI Bus State CD (R/O)<br />
<br>B7: SCSI Bus State IO (R/O)<br />
|-<br />
| 0x02 || R/W || B0: Bi-Direction Mode Enable<br />
<br>B5: Read SCSI Bus status into Register 0x01<br />
<br>B7: SCSI Mode Enable<br />
|-<br />
| 0x03 || W ||<br />
|-<br />
| 0x04 || R || ASIC Version <br />
|-<br />
| 0x07 || W || B3: Unknown<br>B6: Unknown<br />
|-<br />
<br />
= Link Layer Protocol =</div>
Ezrec
http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=165&oldid=prev
Ezrec: /* Physical Layer Protocol */
2006-12-21T16:57:30Z
<p><span dir="auto"><span class="autocomment">Physical Layer Protocol</span></span></p>
<a href="http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=165&oldid=140">Show changes</a>
Ezrec
http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=140&oldid=prev
67.163.245.119: /* Reading a Register */
2006-12-21T16:12:21Z
<p><span dir="auto"><span class="autocomment">Reading a Register</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:12, 21 December 2006</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l233">Line 233:</td>
<td colspan="2" class="diff-lineno">Line 233:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| C0-C3 || <= 0x04 (lower #INIT)</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| C0-C3 || <= 0x04 (lower #INIT)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">= Link Layer Protocol =</ins></div></td></tr>
</table>
67.163.245.119
http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=139&oldid=prev
67.163.245.119: /* Protocol */
2006-12-21T16:10:35Z
<p><span dir="auto"><span class="autocomment">Protocol</span></span></p>
<a href="http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=139&oldid=138">Show changes</a>
67.163.245.119
http://www.evillabs.net/index.php?title=OnSpec_90c26&diff=138&oldid=prev
67.163.245.119 at 15:42, 21 December 2006
2006-12-21T15:42:16Z
<p></p>
<p><b>New page</b></p><div>= Introduction =<br />
<br />
The OnSpec 90c26 was used on Adara and Microtek flatbed scanners in the<br />
late 1990s as a parallel port to SCSI adapter.<br />
<br />
= IBM-style Parallel Port Information =<br />
<br />
==Port Registers==<br />
<br />
Port R/W IOAddr Bits Function<br />
---------- ------ ----- ----------------<br />
Data Out W Base+0 D0-D7 8 LS TTL outputs<br />
Status In R Base+1 S3-S7 5 LS TTL inputs<br />
Control Out W Base+2 C0-C3 4 TTL Open Collector outputs<br />
" " " C4 internal, IRQ enable<br />
" " " C5 internal, Tristate data [PS/2]<br />
<br />
Data Feedback R Base+0 D0-D7 matches Data Out<br />
Control Feedbk R Base+2 C0-C3 matches Control Out<br />
" " " C4 internal, IRQ enable readback<br />
<br />
The Feedback registers are for diagnostic purposes (except in bidirectional<br />
ports, where Data Feedback is used for data input; and the IRQ enable C4).<br />
<br />
==Pin signals and register bits==<br />
<br />
<= in DB25 Cent Name of Reg<br />
=> out pin pin Signal Bit Function Notes<br />
------ ---- ---- -------- --- -----------------------------<br />
=> 1 1 -Strobe C0- Set Low pulse >0.5 us to send<br />
=> 2 2 Data 0 D0 Set to least significant data<br />
=> 3 3 Data 1 D1 ...<br />
=> 4 4 Data 2 D2 ...<br />
=> 5 5 Data 3 D3 ...<br />
=> 6 6 Data 4 D4 ...<br />
=> 7 7 Data 5 D5 ...<br />
=> 8 8 Data 6 D6 ...<br />
=> 9 9 Data 7 D7 Set to most significant data<br />
<= 10 10 -Ack S6+ IRQ Low Pulse ~ 5 uS, after accept<br />
<= 11 11 +Busy S7- High for Busy/Offline/Error<br />
<= 12 12 +PaperEnd S5+ High for out of paper<br />
<= 13 13 +SelectIn S4+ High for printer selected<br />
=> 14 14 -AutoFd C1- Set Low to autofeed one line<br />
<= 15 32 -Error S3+ Low for Error/Offline/PaperEnd<br />
=> 16 31 -Init C2+ Set Low pulse > 50uS to init<br />
=> 17 36 -Select C3- Set Low to select printer<br />
== 18-25 19-30, Ground<br />
33,17,16<br />
<br />
Note: Some cables, ports, or connectors may not connect all grounds.<br />
Centronics pins 19-30 and 33 are "twisted pair return" grounds, while<br />
17 is "chassis ground" and 16 is "logic ground".<br />
<br />
"<= In" and "=> Out" are defined from the viewpoint of the PC, not the<br />
printer. The IRQ line (-Ack/S6+) is positive edge triggered, but only<br />
enabled if C4 is 1.<br />
<br />
Here's the same data grouped for ease of reference by Control Out and Status<br />
In registers and pins. (Data Out is straightforward in previous table).<br />
<br />
<= in DB25 Cent Name of Reg<br />
=> out pin pin Signal Bit Function Notes<br />
------ ---- ---- -------- --- ------------------------------<br />
=> 17 36 -Select C3- Set Low to select printer<br />
=> 16 31 -Init C2+ Set Low pulse > 50uS to init<br />
=> 14 14 -AutoFd C1- Set Low to autofeed one line<br />
=> 1 1 -Strobe C0- Set Low pulse > 0.5 us to send<br />
<br />
<= 11 11 +Busy S7- High for Busy/Offline/Error<br />
<= 10 10 -Ack S6+ IRQ Low Pulse ~ 5 uS, after accept<br />
<= 12 12 +PaperEnd S5+ High for out of paper<br />
<= 13 13 +SelectIn S4+ High for printer selected<br />
<= 15 32 -Error S3+ Low for Error/Offline/PaperEnd<br />
<br />
<br />
== Protocol ==</div>
67.163.245.119