Files
oldlinux-files/docs/interrupts/int-html/rb-2852.htm
2024-02-19 00:23:35 -05:00

394 lines
24 KiB
HTML

<HTML>
<HEAD>
<TITLE>Int 21/AX=4402h
</TITLE>
<META NAME="Description" CONTENT="
Int 21/AX=4402h - ATA Software Programming Interface (ATASPI) - INTERFACE -
AX = 4402h
BX = file handle for device $ATAMGR$
CX = 0004h (size of buffer in bytes)
DS:DX - buffer for result (see #90000), set to zeros before call
Return: CF clear if successful
AX = 0004h
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes: ATASPI is an API to control IDE, EIDE, and ATAPI devices, proposed by
Future Domain; there's at least one driver in existence which
">
<META NAME="robots" CONTENT="none">
</HEAD>
<BODY BGCOLOR="#FFD0A0">
<center>
<h2>Int 21/AX=4402h
</h2>
</center><p>
<table border=1 cellpadding=3 cellspacing=1>
<td>
<a href="rb-2851.htm" tppabs="http://www.ctyme.com/intr/rb-2851.htm">
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
<a href="rb-2853.htm" tppabs="http://www.ctyme.com/intr/rb-2853.htm">
<img src="ldown.gif" tppabs="http://graphics.ctyme.com/gif/ldown.gif" border=0 alt=Next></a>
<a href="javascript:if(confirm('http://www.ctyme.com/rbrown.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/rbrown.htm'" tppabs="http://www.ctyme.com/rbrown.htm">
<img src="lhome.gif" tppabs="http://graphics.ctyme.com/gif/lhome.gif" border=0 alt=Ralf Brown Page></a>
<td><a href="int.htm" tppabs="http://www.ctyme.com/intr/int.htm">Interrups</a></td>
<td><a href="cat.htm" tppabs="http://www.ctyme.com/intr/cat.htm">Categories</a></td>
<td><a href="alpha.htm" tppabs="http://www.ctyme.com/intr/alpha.htm">Contents</a></td>
</td></table><p>
<p><img src="rbline.gif" tppabs="http://graphics.ctyme.com/gif/rbline.gif" width="100%" alt="------"><p>
<h3><font color=#C00040>ATA Software Programming Interface (ATASPI) - INTERFACE</font></h3>
<PRE>
AX = 4402h
BX = file handle for device "$ATAMGR$"
CX = 0004h (size of buffer in bytes)
DS:DX -> buffer for result <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90000'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90000">(see #90000)</a>, set to zeros before call<br>
<p><b>Return:</b><br>CF clear if successful
AX = 0004h
CF set on error
AX = error code (01h,05h,06h,0Dh) <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table0'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table0"></a>(see #01680 at AH=59h/BX=0000h)
</PRE>
<p><b>Notes:</b>
ATASPI is an API to control IDE, EIDE, and ATAPI devices, proposed by
Future Domain; there's at least one driver in existence which
<PRE>
<p><b>conforms to this specification:</b><br>ATASPI16.SYS by Future Domain.
<a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90002'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90002">(see #90002)</a> on the stack and the caller must clean up the stack.
Future Domain ATASPI16.SYS v2.2 performs ATASPI calls using INT 4Fh
interface instead of this INT 21/4402h interface and itself supports
both interfaces
</PRE>
<p><b>See Also:</b>
<a href="rb-2832.htm" tppabs="http://www.ctyme.com/intr/rb-2832.htm">AX=4402h"ASPI"</a> - <a href="rb-6298.htm" tppabs="http://www.ctyme.com/intr/rb-6298.htm">INT 4F/AX=0081h</a> - <a href="rb-6299.htm" tppabs="http://www.ctyme.com/intr/rb-6299.htm">INT 4F/AX=0082h</a> - <a href="int-21.htm" tppabs="http://www.ctyme.com/intr/int-21.htm">PORT 01F0h-01F7h</a>"
<PRE>
<p>
Format of ATASPI IOCTL result:
<a name=table90000></a>
Offset Size Description (Table 90000)
00h DWORD ATASPI entry point address
<p>
<a name=table90001></a>
(Table 90001)
Call ATASPI entry point with:.
<p><b>STACK:</b><br>DWORD -> ATA Request Block (ARB) (see #90003)
</PRE>
<p><b>Notes:</b>
Caller must clean up the stack.
The large-model C declaration is
void (*entry)(ARB_Struct *);
<p><b>See Also:</b>
#90000
<PRE>
<p>
<a name=table90002></a>
(Table 90002)
Values for ATASPI command code:
00h ATA controller inquiry
01h get ATA device type
02h execute ATA I/O
03h abort ATA request
04h reset ATA device
05h set ATA controller parameter
06h get ATA disk drive information
</PRE>
<p><b>See Also:</b>
#90003
<PRE>
<p>
Format of ATA Request Block (ARB):
<a name=table90003></a>
Offset Size Description (Table 90003)
00h BYTE command code <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90002'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90002">(see #90002)</a>
01h BYTE (ret) status <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90004'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90004">(see #90004)</a>
02h BYTE ATA controller number
03h BYTE request flags <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90005'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90005">(see #90005)</a>
04h DWORD reserved (0)
---request 00h---
08h BYTE (ret) total number of ATA controllers
valid only if ATA controller number = 0FFh
09h BYTE reserved (0)
0Ah 16 BYTEs (ret) ATA manager ID
1Ah 16 BYTEs (ret) ATA controller ID
2Ah 16 BYTEs (ret) controller unique parameters <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90010'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90010">(see #90010)</a>
---request 01h---
08h BYTE device ID (00h = master, 01h = slave)
09h BYTE reserved (0)
0Ah BYTE (ret) peripheral device type <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90007'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90007">(see #90007)</a>
---request 02h---
08h BYTE device ID
09h BYTE reserved (0)
0Ah DWORD data transfer length
(ret) residual byte length
0Eh BYTE sense allocation length (N)
0Fh DWORD data buffer pointer
13h DWORD reserved (0)
17h BYTE ACB length (M)
for Task File requests must be set to 07h, for ATAPI Packet
requests must match the number of bytes in the packet
18h BYTE (ret) ATA controller status <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90006'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90006">(see #90006)</a>
19h BYTE (ret) device status
value of the error register, 00h if no error <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table0'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table0">(see #P0512)</a>
1Ah DWORD post routine address <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90009'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90009">(see #90009)</a>
1Eh WORD data transfer block size (in bytes)
number of data bytes to transfer per hardware interrupt for Task
File requests; number of data bytes host prefers to transfer
per hardware interrupt for ATAPI Packet commands
20h 32 BYTEs reserved for ATASPI workspace
40h M BYTEs ATA/ATAPI command block (ACB)
contains AT Task File Structure <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90008'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90008">(see #90008)</a> if bit 2 of the
request flags is set, ATAPI packet <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table0'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table0"></a>(see #03236,#03237,#03238)
if bit 2 is cleared
40h+M N BYTEs sense allocation area
---request 03h---
08h DWORD address of ARB to be aborted
---request 04h---
08h BYTE device ID
09h 15 BYTEs reserved (0)
18h BYTE (ret) ATA controller status <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90006'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90006">(see #90006)</a>
19h BYTE (ret) device status
1Ah DWORD post routine address <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table90009'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table90009">(see #90009)</a>
1Eh 34 BYTEs reserved for ATASPI workspace
---request 05h---
08h 16 BYTEs controller unique parameters (vendor unique)
---request 06h---
08h BYTE device ID
09h BYTE reserved (0)
0Ah BYTE (ret) drive flags <a href="rb-2832.htm#Table1461" tppabs="http://www.ctyme.com/intr/rb-2832.htm#Table1461">(see #01461)</a>
0Bh BYTE (ret) INT 13h drive
0Ch BYTE (ret) preferred head translation
0Dh BYTE (ret) preferred sector translation
0Eh 10 BYTEs reserved (0)
<p>
<a name=table90004></a>
(Table 90004)
Values for ATASPI request status:
00h request in progress
01h request completed without error
02h request aborted by host
04h request completed with error
80h invalid request
81h invalid ATA controller number
82h ATA device not installed
83h ATA controller/device busy
</PRE>
<p><b>Note:</b>
If ATASPI ever returns 83h as the status, it is the responsibility of
the driver/applications to re-send the request at a later time
<p><b>See Also:</b>
#90003
<PRE>
<p>
Bitfields for request flags:
<a name=table90005></a>
Bit(s) Description (Table 90005)
7 reserved (0)
6 "ByteXfer".
=0 use word transfer mode.
=1 use byte transfer mode
5 (ATAPI device) DSC unavailable action (DUA).
=0 queue the request and service it when DSC bit is set.
=1 return with status 83h
4-3 direction.
00 direction determined by device.
01 data in.
10 data out.
11 no data transfer
2 request type.
=0 ATAPI Packet Command.
=1 AT Task File Structure
1 reserved (0)
0 "Post".
=0 disable posting.
=1 enable posting
</PRE>
<p><b>See Also:</b>
#90003
<PRE>
<p>
<a name=table90006></a>
(Table 90006)
Values for ATA controller status:
00h no error
11h device not present
12h data overrun/underrun
</PRE>
<p><b>See Also:</b>
#90003
<PRE>
<p>
<a name=table90007></a>
(Table 90007)
Values for peripheral device type:
00h direct-access device (e.g. magnetic disk)
01h tape device (QIC-121 SCSI Architectural Model)
02h-04h reserved
05h CD-ROM device
06h reserved
07h optical memory device (e.g. some optical disks)
08h-0Bh reserved
0Ch tape device (Cost Sensitive Architectural Model)
0Dh-1Eh reserved
1Fh unknown or no device type
80h non-ATAPI device
</PRE>
<p><b>See Also:</b>
#90003
<PRE>
<p>
Format of AT Task File Structure:
<a name=table90008></a>
Offset Size Description (Table 90008)
00h features register
01h sector count register
02h cylinder LSB register
04h cylinder MSB register
05h device/head register <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table0'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table0">(see #P0513)</a>
06h command register <a href="javascript:if(confirm('http://www.ctyme.com/intr/rb-0000.htm \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/intr/rb-0000.htm#Table0'" tppabs="http://www.ctyme.com/intr/rb-0000.htm#Table0">(see #P0515)</a>
</PRE>
<p><b>See Also:</b>
#90005
<PRE>
<p>
<a name=table90009></a>
(Table 90009)
Values ATASPI post function is called with:.
<p><b>STACK:</b><br>DWORD -> ARB (see #90003) which completed.
Interrupts disabled<br>
<p><b>Return:</b><br>EBP, EBX, ESI, EDI must be preserved
interrupts disabled
</PRE>
<p><b>Notes:</b>
The post function may issue any ATASPI function except an abort; it
should complete as quickly as possible.
The large-model C declaration is
void (*post)(ARB_Struct *);
<p><b>See Also:</b>
#90003
<PRE>
<p>
Format of Future Domain controller unique parameters:
<a name=table90010></a>
Offset Size Description (Table 90010)
00h WORD controller features
02h WORD controller main I/O port
04h WORD controller alternate I/O port
06h BYTE controller IRQ
07h BYTE ??? (00h or 01h)
08h BYTE ??? (00h or 01h)
09h 7 BYTEs reserved (0)
</PRE>
<p><b>See Also:</b>
#90003
<p>
<b>Category: <a href="cat-008.htm" tppabs="http://www.ctyme.com/intr/cat-008.htm">
Disk I/O Enhancements</a>
- <a href="int-21.htm" tppabs="http://www.ctyme.com/intr/int-21.htm">
Int 21h</a>
- <a href="alpha-a.htm" tppabs="http://www.ctyme.com/intr/alpha-a.htm">
A</a>
</b><p><p><img src="rbline.gif" tppabs="http://graphics.ctyme.com/gif/rbline.gif" width="100%" alt="------"><p>
<table border=1 cellpadding=3 cellspacing=1>
<td>
<a href="rb-2851.htm" tppabs="http://www.ctyme.com/intr/rb-2851.htm">
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
<a href="rb-2853.htm" tppabs="http://www.ctyme.com/intr/rb-2853.htm">
<img src="ldown.gif" tppabs="http://graphics.ctyme.com/gif/ldown.gif" border=0 alt=Next></a>
<a href="javascript:if(confirm('http://www.ctyme.com/rbrown.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/rbrown.htm'" tppabs="http://www.ctyme.com/rbrown.htm">
<img src="lhome.gif" tppabs="http://graphics.ctyme.com/gif/lhome.gif" border=0 alt=Ralf Brown Page></a>
<td><a href="int.htm" tppabs="http://www.ctyme.com/intr/int.htm">Interrups</a></td>
<td><a href="cat.htm" tppabs="http://www.ctyme.com/intr/cat.htm">Categories</a></td>
<td><a href="alpha.htm" tppabs="http://www.ctyme.com/intr/alpha.htm">Contents</a></td>
</td></table><p>
<!-- Bottom Link Start -->
<center>
<p><table border=1 bgcolor="#ffff99"><tr><td>
<table border=0 height=80>
<tr align=center><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/sponsor.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/sponsor.htm'" tppabs="http://www.ctyme.com/sponsor.htm">
<img src="tip.gif" tppabs="http://graphics.ctyme.com/gif/tip.gif" ALT="Sponsors" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/sponsor.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/sponsor.htm'" tppabs="http://www.ctyme.com/sponsor.htm">Shopping</a>
</td><td width="65">
<a href="javascript:if(confirm('http://talk.ctyme.com/webx.cgi?13@@.ee6b2be \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://talk.ctyme.com/webx.cgi?13@@.ee6b2be'" tppabs="http://talk.ctyme.com/webx.cgi?13@@.ee6b2be">
<img src="comment.gif" tppabs="http://graphics.ctyme.com/gif/comment.gif" ALT="Forum" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://talk.ctyme.com/webx.cgi?13@@.ee6b2be \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://talk.ctyme.com/webx.cgi?13@@.ee6b2be'" tppabs="http://talk.ctyme.com/webx.cgi?13@@.ee6b2be">Forum</a>
</td><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/mail.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/mail.htm'" tppabs="http://www.ctyme.com/mail.htm">
<img src="mail.gif" tppabs="http://graphics.ctyme.com/gif/mail.gif" ALT="email" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/mail.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/mail.htm'" tppabs="http://www.ctyme.com/mail.htm">EMail</a>
</td><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/map.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/map.htm'" tppabs="http://www.ctyme.com/map.htm">
<img src="toc.gif" tppabs="http://graphics.ctyme.com/gif/toc.gif" ALT="Index" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/map.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/map.htm'" tppabs="http://www.ctyme.com/map.htm">Index</a>
</td><td width="65">
<a href="javascript:if(confirm('http://www.ctyme.com/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/'" tppabs="http://www.ctyme.com/">
<img src="home.gif" tppabs="http://graphics.ctyme.com/gif/home.gif" ALT="Home" height="40" width="40"></a>
<br><a href="javascript:if(confirm('http://www.ctyme.com/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/'" tppabs="http://www.ctyme.com/">Home</a>
</td><td width="90">
<center>
<FORM ACTION="https://secure.paypal.com/cgi-bin/webscr" tppabs="https://secure.paypal.com/cgi-bin/webscr" METHOD="POST" traget="_blank">
<INPUT TYPE="hidden" NAME="cmd" VALUE="_xclick">
<INPUT TYPE="hidden" NAME="business" VALUE="marc@perkel.com">
<INPUT TYPE="hidden" NAME="return" VALUE="http://www.perkel.com">
<INPUT TYPE="hidden" NAME="item_name" VALUE="Donation To Support this Site">
<INPUT TYPE="hidden" NAME="no_intl" VALUE="1">
<INPUT TYPE="image" SRC="x-click-but7.gif" tppabs="http://images.paypal.com/images/x-click-but7.gif" vspace=9
NAME="submit" ALT="Make payments with PayPal - it's fast, free and secure!">
</FORM>
</td></tr></table></td></tr></table><p>
<center>
<p>
<a href="javascript:if(confirm('http://www.ctyme.com/hosting/index.htm \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.ctyme.com/hosting/index.htm'" tppabs="http://www.ctyme.com/hosting/index.htm" target="_blank">
<img src="ctymehost.gif" tppabs="http://graphics.ctyme.com/gif/ctymehost.gif"
border=3 height=60 width=468></a>
<p>
<!-- Ad End --->
</center>
<FORM ACTION="http://service.bfast.com/bfast/click" target="_blank">
<INPUT TYPE="hidden" NAME="siteid" VALUE="30472466" >
<INPUT TYPE="hidden" NAME="bfpage" VALUE="horizontal">
<INPUT TYPE="hidden" NAME="bfmid" VALUE="27253343" >
<INPUT TYPE="hidden" NAME="num" VALUE="30">
<table bgcolor=white border=3><tr><td>
<table bgcolor=white border=0>
<tr><td>
<IMG SRC="serve-bfmid=27253343&siteid=30472466&bfpage=horizontal.gif" tppabs="http://service.bfast.com/bfast/serve?bfmid=27253343&siteid=30472466&bfpage=horizontal" BORDER="0" WIDTH="1" HEIGHT="1" align=right NOSAVE >
<center><b>Search the web with Google</b></center>
</td></tr><tr><td>
<TABLE cellpadding=0 cellspacing=5 bgcolor="#FFFFFF">
<tr><td bgcolor="#0000cc"><IMG SRC="cleardot.gif" tppabs="http://www.google.com/images/cleardot.gif" height=1 border="0" ALT="Google"></td></tr><tr><td>
<IMG SRC="affiliate_logo.gif" tppabs="http://www.google.com/affiliates/affiliate_logo.gif" border="0" ALT="Google" align="center">
<INPUT TYPE=text name=q size=30 maxlength=255 value="">
<INPUT type=submit name=sa VALUE="Go">
</td></tr>
<tr><td bgcolor="#0000cc"><IMG SRC="cleardot.gif" tppabs="http://www.google.com/images/cleardot.gif" height=1 border="0" ALT="Google"></td></tr></TABLE>
</td></tr></table>
</tr></td></table>
</FORM>
</center>
<p><img src="rbline.gif" tppabs="http://graphics.ctyme.com/gif/rbline.gif" width="100%" alt="------"><p>
<!-- Bottom Link End -->
</BODY>
</HTML>