GEX thesis source code, full text, references
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
gex-thesis/references/USB/www.lvr.com_mass_storage_fa...

476 lines
26 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/lvr.dwt" codeOutsideHTMLIsLocked="false" -->
<head><script src="//archive.org/includes/analytics.js?v=cf34f82" type="text/javascript"></script>
<script type="text/javascript">window.addEventListener('DOMContentLoaded',function(){var v=archive_analytics.values;v.service='wb';v.server_name='wwwb-app18.us.archive.org';v.server_ms=583;archive_analytics.send_pageview({});});</script><script type="text/javascript" src="/static/js/wbhack.js?v=1525205731.0" charset="utf-8"></script>
<script type="text/javascript">
__wbhack.init('https://web.archive.org/web');
</script>
<link rel="stylesheet" type="text/css" href="/static/css/banner-styles.css?v=1525205731.0" />
<link rel="stylesheet" type="text/css" href="/static/css/iconochive.css?v=1525205731.0" />
<!-- End Wayback Rewrite JS Include -->
<link rel="shortcut icon" href="/web/20110226031619im_/http://www.lvr.com/favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="Author" content="Jan Axelson"/>
<meta name="GENERATOR" content=""/>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Jan Axelson's Lakeview Research</title>
<!-- InstanceEndEditable -->
<script src="/web/20110226031619js_/http://www.lvr.com/SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="/web/20110226031619cs_/http://www.lvr.com/SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css"/>
<link href="/web/20110226031619cs_/http://www.lvr.com/styles/lvr.css" rel="stylesheet" type="text/css"/>
<!-- InstanceBeginEditable name="head" -->
<meta http-equiv="Description" content="Information and tools relating to design and programming FOR THE UNIVERSAL SERIAL BUS (USB).."/>
<meta http-equiv="Keywords" content="USB, UNIVERSAL SERIAL BUS, HID, HUMAN INTERFACE DEVICE, CYPRESS SEMICONDUCTOR, CY763000, DIRECTX, DIRECT INPUT"/>
<meta name="Author" content="Jan Axelson"/>
<meta name="GENERATOR" content=""/>
<link rel="stylesheet" href="/web/20110226031619cs_/http://www.lvr.com/styles/lvr.css" type="text/css"/>
<!-- InstanceEndEditable -->
</head>
<body><!-- BEGIN WAYBACK TOOLBAR INSERT -->
<script type="text/javascript" src="/static/js/timestamp.js?v=1525205731.0" charset="utf-8"></script>
<script type="text/javascript" src="/static/js/graph-calc.js?v=1525205731.0" charset="utf-8"></script>
<script type="text/javascript" src="/static/js/auto-complete.js?v=1525205731.0" charset="utf-8"></script>
<script type="text/javascript" src="/static/js/toolbar.js?v=1525205731.0" charset="utf-8"></script>
<style type="text/css">
body {
margin-top:0 !important;
padding-top:0 !important;
/*min-width:800px !important;*/
}
.wb-autocomplete-suggestions {
text-align: left; cursor: default; border: 1px solid #ccc; border-top: 0; background: #fff; box-shadow: -1px 1px 3px rgba(0,0,0,.1);
position: absolute; display: none; z-index: 2147483647; max-height: 254px; overflow: hidden; overflow-y: auto; box-sizing: border-box;
}
.wb-autocomplete-suggestion { position: relative; padding: 0 .6em; line-height: 23px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 1.02em; color: #333; }
.wb-autocomplete-suggestion b { font-weight: bold; }
.wb-autocomplete-suggestion.selected { background: #f0f0f0; }
</style>
<div id="wm-ipp" lang="en" style="display:none;direction:ltr;">
<div style="position:fixed;left:0;top:0;right:0;">
<div id="wm-ipp-inside">
<div style="position:relative;">
<div id="wm-logo" style="float:left;width:130px;padding-top:10px;">
<a href="/web/" title="Wayback Machine home page"><img src="/static/images/toolbar/wayback-toolbar-logo.png" alt="Wayback Machine" width="110" height="39" border="0" /></a>
</div>
<div class="r" style="float:right;">
<div id="wm-btns" style="text-align:right;height:25px;">
<div id="wm-save-snapshot-success">success</div>
<div id="wm-save-snapshot-fail">fail</div>
<a href="#"
onclick="__wm.saveSnapshot('http://www.lvr.com/mass_storage_faq.htm', '20110226031619')"
title="Share via My Web Archive"
id="wm-save-snapshot-open"
>
<span class="iconochive-web"></span>
</a>
<a href="https://archive.org/account/login.php"
title="Sign In"
id="wm-sign-in"
>
<span class="iconochive-person"></span>
</a>
<span id="wm-save-snapshot-in-progress" class="iconochive-web"></span>
<a href="http://faq.web.archive.org/" title="Get some help using the Wayback Machine" style="top:-6px;"><span class="iconochive-question" style="color:rgb(87,186,244);font-size:160%;"></span></a>
<a id="wm-tb-close" href="#close" onclick="__wm.h(event);return false;" style="top:-2px;" title="Close the toolbar"><span class="iconochive-remove-circle" style="color:#888888;font-size:240%;"></span></a>
</div>
<div id="wm-share" style="text-align:right;">
<a href="#" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=https://web.archive.org/web/20110226031619/http://www.lvr.com:80/mass_storage_faq.htm', '', 'height=400,width=600'); return false;" title="Share on Facebook" style="margin-right:5px;" target="_blank"><span class="iconochive-facebook" style="color:#3b5998;font-size:160%;"></span></a>
<a href="#" onclick="window.open('https://twitter.com/intent/tweet?text=https://web.archive.org/web/20110226031619/http://www.lvr.com:80/mass_storage_faq.htm&amp;via=internetarchive', '', 'height=400,width=600'); return false;" title="Share on Twitter" style="margin-right:5px;" target="_blank"><span class="iconochive-twitter" style="color:#1dcaff;font-size:160%;"></span></a>
</div>
</div>
<table class="c" style="">
<tbody>
<tr>
<td class="u" colspan="2">
<form target="_top" method="get" action="/web/submit" name="wmtb" id="wmtb"><input type="text" name="url" id="wmtbURL" value="http://www.lvr.com/mass_storage_faq.htm" onfocus="this.focus();this.select();" /><input type="hidden" name="type" value="replay" /><input type="hidden" name="date" value="20110226031619" /><input type="submit" value="Go" /></form>
</td>
<td class="n" rowspan="2" style="width:110px;">
<table>
<tbody>
<!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
<tr class="m">
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20100923185500/http://lvr.com/mass_storage_faq.htm" title="23 Sep 2010"><strong>Sep</strong></a></td>
<td class="c" id="displayMonthEl" title="You are here: 03:16:19 Feb 26, 2011">FEB</td>
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20110704035219/http://www.lvr.com:80/mass_storage_faq.htm" title="04 Jul 2011"><strong>Jul</strong></a></td>
</tr>
<!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
<tr class="d">
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20100923185500/http://lvr.com/mass_storage_faq.htm" title="18:55:00 Sep 23, 2010"><img src="/static/images/toolbar/wm_tb_prv_on.png" alt="Previous capture" width="14" height="16" border="0" /></a></td>
<td class="c" id="displayDayEl" style="width:34px;font-size:24px;white-space:nowrap;" title="You are here: 03:16:19 Feb 26, 2011">26</td>
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20110704035219/http://www.lvr.com:80/mass_storage_faq.htm" title="03:52:19 Jul 04, 2011"><img src="/static/images/toolbar/wm_tb_nxt_on.png" alt="Next capture" width="14" height="16" border="0" /></a></td>
</tr>
<!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
<tr class="y">
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20100130091232/http://www.lvr.com:80/mass_storage_faq.htm" title="30 Jan 2010"><strong>2010</strong></a></td>
<td class="c" id="displayYearEl" title="You are here: 03:16:19 Feb 26, 2011">2011</td>
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20120513143107/http://lvr.com/mass_storage_faq.htm" title="13 May 2012"><strong>2012</strong></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td class="s">
<div id="wm-nav-captures">
<a class="t" href="/web/20110226031619*/http://www.lvr.com/mass_storage_faq.htm" title="See a list of every capture for this URL">54 captures</a>
<div class="r" title="Timespan for captures of this URL">27 Dec 2005 - 30 Mar 2017</div>
</div>
</td>
<td class="k">
<a href="" id="wm-graph-anchor">
<div id="wm-ipp-sparkline" title="Explore captures for this URL" style="position: relative">
<canvas id="wm-sparkline-canvas" width="575" height="27" border="0"></canvas>
</div>
</a>
</td>
</tr>
</tbody>
</table>
<div style="position:absolute;bottom:0;right:2px;text-align:right;">
<a id="wm-expand" class="wm-btn wm-closed" href="#expand" onclick="__wm.ex(event);return false;"><span id="wm-expand-icon" class="iconochive-down-solid"></span> <span style="font-size:80%">About this capture</span></a>
</div>
</div>
<div id="wm-capinfo" style="border-top:1px solid #777;display:none; overflow: hidden">
<div style="background-color:#666;color:#fff;font-weight:bold;text-align:center">COLLECTED BY</div>
<div style="padding:3px;position:relative" id="wm-collected-by-content">
<div style="display:inline-block;vertical-align:top;width:50%;">
<span class="c-logo" style="background-image:url(https://archive.org/services/img/alexacrawls);"></span>
Organization: <a style="color:#33f;" href="https://archive.org/details/alexacrawls" target="_new"><span class="wm-title">Alexa Crawls</span></a>
<div style="max-height:75px;overflow:hidden;position:relative;">
<div style="position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);"></div>
Starting in 1996, <a href="http://www.alexa.com/">Alexa Internet</a> has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the <a href="http://web.archive.org/">Wayback Machine</a> after an embargo period.
</div>
</div>
<div style="display:inline-block;vertical-align:top;width:49%;">
<span class="c-logo" style="background-image:url(https://archive.org/services/img/alexacrawls)"></span>
<div>Collection: <a style="color:#33f;" href="https://archive.org/details/alexacrawls" target="_new"><span class="wm-title">Alexa Crawls</span></a></div>
<div style="max-height:75px;overflow:hidden;position:relative;">
<div style="position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);"></div>
Starting in 1996, <a href="http://www.alexa.com/">Alexa Internet</a> has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the <a href="http://web.archive.org/">Wayback Machine</a> after an embargo period.
</div>
</div>
</div>
<div style="background-color:#666;color:#fff;font-weight:bold;text-align:center" title="Timestamps for the elements of this page">TIMESTAMPS</div>
<div>
<div id="wm-capresources" style="margin:0 5px 5px 5px;max-height:250px;overflow-y:scroll !important"></div>
<div id="wm-capresources-loading" style="text-align:left;margin:0 20px 5px 5px;display:none"><img src="/static/images/loading.gif" alt="loading" /></div>
</div>
</div></div></div></div><script type="text/javascript">
__wm.bt(575,27,25,2,"web","http://www.lvr.com/mass_storage_faq.htm","2011-02-26",1996);
</script>
<!-- END WAYBACK TOOLBAR INSERT -->
<div id="container_all">
<div id="container_header">
<div id="title">
<a href="index.html"><img src="/web/20110226031619im_/http://www.lvr.com/images/lvr_logo.jpg" alt="Jan Axelson's Lakeview Research" width="346" height="64" hspace="1" vspace="0" border="0"/></a>
</div> <!-- title -->
<div id="search">
<form class="float_right" method="get" action="https://web.archive.org/web/20110226031619/http://www.google.com/search">
<!--<div style="border:none;padding:4px; float:right;">-->
<table border="0" cellpadding="5">
<tr align="right">
<td>
<input type="text" name="q" size="30" maxlength="127" value=""/>
<input type="submit" value="Google Search"/>
</td>
</tr>
<tr align="right" style="font-size:90%">
<td>
<input type="checkbox" name="sitesearch" value="Lvr.com" checked="checked"/>
search this site only
</td>
</tr>
</table>
</form>
</div> <!-- search -->
<div id="menubar_utilities">
<ul id="MenuBar1" class="MenuBarHorizontal">
<li><a href="index.html">Home</a></li>
<li><a href="quicklinks.htm">Site Map</a></li>
<li><a href="ordering.htm">Buy Books</a> </li>
<li class="last"><a href="about_lakeview_research.htm">About Lakeview Research</a> </li>
</ul>
</div> <!-- menubar_utilities -->
<div id="menubar_main">
<ul id="MenuBar3" class="MenuBarHorizontal">
<li class="background"><a href="usb.htm">USB&nbsp; </a>
<ul>
<li class="background"><a href="usb.htm">USB Main Page</a></li>
<li class="background"><a href="usbchips.htm">Chips</a></li>
<li><a href="development_tools.htm">Development Tools</a></li>
<li><a href="usbcode.htm">Device Code</a></li>
<li><a href="usb_device_hardware.htm">Device Hardware</a></li>
<li><a href="embedded_host.htm">Embedded Host &amp; OTG</a></li>
<li><a href="usb_host_software.htm">Host Software</a></li>
<li><a href="hidpage.htm">Human Interface Devices</a></li>
<li><a href="mass_storage.htm">Mass Storage</a></li>
<li><a href="winusb.htm">WinUSB</a></li>
</ul>
</li>
<li><a href="serport.htm">Serial Ports</a> </li>
<li><a href="mass_storage.htm">Mass Storage</a></li>
<li><a href="ethernet.htm">Ethernet</a></li>
<li><a href="parport.htm">Parallel Port</a></li>
<li><a href="https://web.archive.org/web/20110226031619/http://www.lvr.com/forum/index.php">PORTS Forum</a></li>
<li class="last"><a href="sitemap.htm">More&nbsp; </a>
<ul>
<li><a href="microc.htm">8052-Basic</a></li>
<li><a href="pcbs.htm">Printed Circuit Boards</a></li>
<li><a href="articles.htm">Articles</a></li>
<li><a href="press.htm">News Releases</a></li>
</ul>
</ul>
</div> <!-- menubar_main -->
</div> <!-- header -->
<div id="container_main">
<div id="content">
<!-- InstanceBeginEditable name="Content" -->
<p><a href="index.html">Home</a> &gt; <a href="usb.htm">USB Central </a>&gt; <a href="usbms.htm">Mass Storage Page</a> &gt;
Mass Storage FAQ</p><p></p>
<h1> Mass Storage FAQ</h1>
<h4>Also see:</h4>
<p><a href="mass_storage.htm">Mass
storage page</a>
</p>
<h2 align="left">General</h2>
<blockquote>
<p align="left"><strong>How long can a device return NAK in a mass-storage
bulk transfer?</strong></p>
<p align="left">The mass-storage specification doesn't define a timeout
value. Hosts typically will wait 20-30 seconds.</p>
<p align="left"> <strong>Can my device's firmware read and store files when
the device isn't attached to a host?</strong></p>
<p align="left">Yes, if the firmware supports a file system such as FAT16
or FAT32. Note that the mass-storage device should have only one mass-storage
master at a time. When the device is attached to and configured by a USB
host, the firmware shouldn't attempt to read or write to files on its
own. </p>
</blockquote>
<h2 align="left">SCSI</h2>
<blockquote>
<p align="left"><strong>What is the SCSI transparent command set?</strong></p>
<p align="left">In the <a href="https://web.archive.org/web/20110226031619/http://www.usb.org/developers/devclass_docs">Mass Storage Class Specification Overview</a>, Table
2.1 says that devices with subclass code 06h implement the &quot;SCSI
transparent command set.&quot; The SCSI specifications are available from
<a href="https://web.archive.org/web/20110226031619/http://www.t10.org/drafts.htm#SCSI3_Family">t10.org</a>, but these documents don't
mention a transparent command set.</p>
<p align="left"><a href="https://web.archive.org/web/20110226031619/https://lists.one-eyed-alien.net/pipermail/usb-storage/2004-September/000795.html">According
to the inventor of the subclass</a>, subclass 06h means that the host should determine
the device type by issuing a SCSI INQUIRY command. In the returned INQUIRY
data, bits 4..0 of byte 0 specify a peripheral device type (PDT). The
SCSI Primary Commands (SPC) specification defines various PDTs and the
specifications they should comply with. </p>
<p align="left"><strong>What value should I use for bInterfaceSubClass in
the interface descriptor?</strong></p>
<p align="left">New designs should use bInterfaceSubClass = 06h (SCSI transparent
command set). The device's response to a SCSI INQUIRY command is then
the single source where the device declares its command set (via the PERIPHERAL
DEVICE TYPE (PDT) and VERSION codes). A device should use a different
bInterfaceSubClass only if it must for some reason adhere to a command
set that has no PDT code (such as SFF-8070i). See the SPC document for
a list of PDTs. </p>
<p align="left"><strong>What commands should my device support?</strong></p>
<p align="left">In the response to a SCSI INQUIRY command, a device returns
a PERIPHERAL DEVICE TYPE code and a VERSION code. For hard drives, flash
drives, and similar devices, PERIPHERAL DEVICE TYPE = 00h (direct access
block device) and VERSION = 04h (SPC-2) or 05h (SPC-3). The code in the
VERSION corresponds to a command set, and the command set's specification
lists mandatory commands.</p>
<p align="left">In some cases, additional INQUIRY data can provide more
information, including vendor-specific data, but not every host will retrieve
more than the first 36 bytes of the response. </p>
<p align="left">The SPC specification documents the INQUIRY command. Also
see the specification for your device type for any device-specific information
about the INQUIRY response.</p>
<p align="left">In practice, many devices don't implement every mandatory
command and just concentrate on the commands used by any hosts the device
is likely to connect to.</p>
<p align="left">The <a href="https://web.archive.org/web/20110226031619/http://www.usb.org/developers/devclass_docs/MSC-compliance-0_9a.pdf">Mass
Storage Class Compliance Test Specification</a> names required and optional
commands for different PDTs that want to pass USB-IF's mass-storage compliance
tests.</p>
<p align="left"><strong>What is command 0x23 (23h)? I can't find it in the
SPC or SBC documents.</strong></p>
<p align="left">Command 23h is READ FORMAT CAPACITIES in the <a href="https://web.archive.org/web/20110226031619/http://www.t10.org/drafts.htm">Multimedia
Commands (MMC) specification</a> from t10.org.</p>
</blockquote>
<h2 align="left">Windows Specific</h2>
<blockquote>
<p align="left"><strong>Can my device use the Reduced Block Command (RBC)
set?</strong></p>
<p align="left">Windows doesn't support RBC (bInterfaceSubClass 01h or 06h
and PDT = 0Eh), so if you design an RBC device, you'll need to provide
a driver for the host. The USB mass storage overview document from usb.org
incorrectly says that flash drives typically use RBC. Flash drives use
bInterfaceSubClass 06h (SCSI transparent command set) with PDT = 00h (direct-access
block device), the same as hard drives.</p>
<p align="left"><strong>How can I determine the drive letter Windows has
assigned to a USB drive?</strong></p>
<p align="left">Three options:</p>
<p align="left">1. <a href="files/find_drive_letter.txt">Example code</a> from Marc Reinig.</p>
<p align="left">2. <a href="https://web.archive.org/web/20110226031619/http://www.codeproject.com/w2k/usbdisks.asp">How
to get the usbdisk's drive letter properly</a>. Using DeviceIoControl
to get a USB drive's letter. From f22_storm.</p>
<p align="left">3. Usenet thread <a href="https://web.archive.org/web/20110226031619/http://groups.google.com/group/microsoft.public.development.device.drivers/browse_thread/thread/47322a079ae87adc/09e0c366cacda5c0?q=%22How%2Bto%2Bmatch%2Bbetween%2Bphysical%2Busb%2Bdevice%2Band%2Bits%2Bdrive%2Bletter%22&amp;_done=%2Fgroups%3Fas_q%3D%22How%2Bto%2Bmatch%2Bbetween%2Bphysical%2Busb%2Bdevice%2Band%2Bits%2Bdrive%2Bletter%22%26safe%3Dimages%26lr%3D%26hl%3Den%26&amp;_doneTitle=Back%2Bto%2BSearch&amp;&amp;d&amp;pli=1">How
to match between physical usb device and its drive letter</a>.</p>
</blockquote>
<!-- InstanceEndEditable -->
</div> <!-- content -->
<div id="rightside"><!-- #BeginLibraryItem "/Library/sponsored.lbi" --> <link rel="stylesheet" href="/web/20110226031619cs_/http://www.lvr.com/styles/lvr.css" type="text/css">
<p><strong>Partner Links</strong></p>
<p><strong><a href="https://web.archive.org/web/20110226031619/http://www.absolute-software.co.uk/">Embedded Programming</a></strong><br>
Experts in embedded software development. Microchip Certified Consults.<br>
<a href="https://web.archive.org/web/20110226031619/http://www.absolute-software.co.uk/">absolute-software.co.uk</a></p>
<p><strong><a href="https://web.archive.org/web/20110226031619/http://www.ellisys.com/">USB Protocol Analyzers</a></strong><br>
ELLISYS protocol analyzers, generators, automated compliance solutions.<br>
<a href="https://web.archive.org/web/20110226031619/http://www.ellisys.com/">www.ellisys.com</a></p>
<p><strong><a href="https://web.archive.org/web/20110226031619/http://www.sysnucleus.com/">USBTrace - USB Analyzer</a></strong><br>
Software-based USB Protocol Analyzer. Easy-to-use and affordable.<br>
<a href="https://web.archive.org/web/20110226031619/http://www.sysnucleus.com/">www.sysnucleus.com</a></p>
<p><strong><a href="https://web.archive.org/web/20110226031619/http://www.totalphase.com/solutions/apps/usb_analyzer_guide/?tclid=8DD6902647060BC8">Powerful USB Analyzer</a></strong><br>
Real-time USB 2.0 display &amp; class decoding. See a video demo now. <br>
<a href="https://web.archive.org/web/20110226031619/http://www.totalphase.com/solutions/apps/usb_analyzer_guide/?tclid=8DD6902647060BC8">www.totalphase.com</a></p>
<p><a href="https://web.archive.org/web/20110226031619/http://www.eltima.com/products/usb-over-ethernet/"><strong>USB to Ethernet Connector</strong></a><br>
Share &amp; access USB devices over local network or even Internet!<br>
<a href="https://web.archive.org/web/20110226031619/http://www.eltima.com/products/usb-over-ethernet/">www.eltima.com</a></p>
<p><strong><a href="https://web.archive.org/web/20110226031619/http://www.premiumusb.com/catalog/usb-duplicators_23.htm">USB Duplicator</a></strong><br>
Copy up to 77 USB Drives at once with a stand-alone USB Duplicator.<br>
<a href="https://web.archive.org/web/20110226031619/http://www.premiumusb.com/catalog/usb-duplicators_23.htm">www.premiumusb.com</a></p>
<p><a href="https://web.archive.org/web/20110226031619/http://creativeusb.com/"><strong>Creative Promo USB Drives</strong></a><br>
Custom designed promotional drives w/ branded printing and duplication.<br>
<a href="https://web.archive.org/web/20110226031619/http://creativeusb.com/">www.CreativeUSB.com</a></p>
<p><script language="javascript">
<!--
var contact = "Ask about advertising on this site"
var email = "jan"
var emailHost = "Lvr.com"
document.write("<a href=" + "mail" + "to:" + email + "@" + emailHost+ ">" + contact + "</a>")
//-->
</script>
</p>
<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/Library/google.lbi" -->
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-9614272375919933";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_color_border = "000000";
google_color_bg = "F0F0F0";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script>
<script type="text/javascript" src="https://web.archive.org/web/20110226031619js_/http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-9614272375919933";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_color_border = "000000";
google_color_bg = "F0F0F0";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script>
<script type="text/javascript" src="https://web.archive.org/web/20110226031619js_/http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p><!-- #EndLibraryItem --></div>
<!-- rightside -->
</div>
<!-- container_main -->
</div>
<!-- container_all -->
<script type="text/javascript">
<!--
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
var MenuBar3 = new Spry.Widget.MenuBar("MenuBar3", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
//-->
</script>
</body>
<!-- InstanceEnd --></html>
<!--
FILE ARCHIVED ON 03:16:19 Feb 26, 2011 AND RETRIEVED FROM THE
INTERNET ARCHIVE ON 12:38:43 May 12, 2018.
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
SECTION 108(a)(3)).
-->
<!--
playback timings (ms):
LoadShardBlock: 361.029 (3)
esindex: 0.006
captures_list: 440.984
CDXLines.iter: 13.301 (3)
PetaboxLoader3.datanode: 174.01 (4)
exclusion.robots.fetch: 60.68 (4)
exclusion.robots: 61.326
exclusion.robots.policy: 0.266
RedisCDXSource: 0.835
PetaboxLoader3.resolve: 287.178 (2)
load_resource: 117.605
-->