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

634 lines
26 KiB
HTML

<HTML>
<HEAD>
<TITLE>Int 2F/AX=4310h
</TITLE>
<META NAME="Description" CONTENT="
Int 2F/AX=4310h - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS -
AX = 4310h
Return: ES:BX - driver entry point (see #02749,#02750,#02753,#02760,#02769,#02774)
Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
HIMEM.SYS requires at least 256 bytes free stack space when calling
the driver entry point
SeeAlso: AX=4300h,AX=4310hCloaking,AX=4310hNetroom,AX=4310hXMZ
Format of XMS driver entry point:
Offset Size Description (Table 02749)
00h 5 BYTEs jump to actual handler
">
<META NAME="robots" CONTENT="none">
</HEAD>
<BODY BGCOLOR="#FFD0A0">
<center>
<h2>Int 2F/AX=4310h
</h2>
</center><p>
<table border=1 cellpadding=3 cellspacing=1>
<td>
<a href="rb-4767.htm" tppabs="http://www.ctyme.com/intr/rb-4767.htm">
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
<a href="rb-4769.htm" tppabs="http://www.ctyme.com/intr/rb-4769.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>EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS</font></h3>
<PRE>
AX = 4310h<br>
<p><b>Return:</b><br>ES:BX -> driver entry point (see #02749,#02750,#02753,#02760,#02769,#02774)
</PRE>
<p><b>Notes:</b>
HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h.
HIMEM.SYS requires at least 256 bytes free stack space when calling
the driver entry point
<p><b>See Also:</b>
<a href="rb-4765.htm" tppabs="http://www.ctyme.com/intr/rb-4765.htm">AX=4300h</a> - <a href="rb-4769.htm" tppabs="http://www.ctyme.com/intr/rb-4769.htm">AX=4310h"Cloaking"</a> - <a href="rb-4770.htm" tppabs="http://www.ctyme.com/intr/rb-4770.htm">AX=4310h"Netroom"</a> - <a href="rb-4771.htm" tppabs="http://www.ctyme.com/intr/rb-4771.htm">AX=4310h"XMZ"</a>
<PRE>
<p>
Format of XMS driver entry point:
<a name=table2749></a>
Offset Size Description (Table 02749)
00h 5 BYTEs jump to actual handler
either short jump (EBh XXh) followed by three NOPs or
far jump (EAh XXXX:XXXX) to a program which has hooked itself
into the XMS driver chain
</PRE>
<p><b>Note:</b>
To hook into the XMS driver chain, a program should follow the chain of
far jumps until it reaches the short jump of the driver at the end
of the chain; this short jump is to be replaced with a far jump to
the new handler's entry point, which should contain a short jump
followed by three NOPs. The new handler must return to the address
pointed at by the short jump which was overwritten. Using this
method, the new handler becomes the first to see every XMS request.
<PRE>
<p>
<a name=table2750></a>
(Table 02750)
Call the XMS driver "Get XMS version number" function with:.
AH = 00h<br>
<p><b>Return:</b><br>AX = XMS version (in BCD, AH=major, AL=minor)
BX = internal revision number (in BCD for HIMEM.SYS)
DX = High Memory Area (HMA) state
0001h HMA (1M to 1M + 64K) exists
0000h HMA does not exist
</PRE>
<p><b>See Also:</b>
#02751 - #02752 - #02757 - #02758 - #02764
<PRE>
<p>
<a name=table2751></a>
(Table 02751)
Call the XMS driver "Request High Memory Area" function with:.
AH = 01h.
DX = memory in bytes (for TSR or device drivers)
FFFFh if application program<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,90h,91h,92h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>Note:</b>
HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
DX=KB free extended memory returned by last call of function 08h
<p><b>See Also:</b>
#02752 - #02784
<PRE>
<p>
<a name=table2752></a>
(Table 02752)
Call the XMS driver "Release High Memory Area" function with:.
AH = 02h<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,90h,93h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02751
<PRE>
<p>
<a name=table2753></a>
(Table 02753)
Call the XMS driver "Global enable A20, for using the HMA" function with:.
AH = 03h<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02754 - #02755 - MSR 00001000h
<PRE>
<p>
<a name=table2754></a>
(Table 02754)
Call the XMS driver "Global disable A20" function with:.
AH = 04h<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h,94h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02753 - #02756 - MSR 00001000h
<PRE>
<p>
<a name=table2755></a>
(Table 02755)
Call the XMS driver "Local enable A20" function with:.
AH = 05h<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>Note:</b>
This function is used for direct access to extended memory
<p><b>See Also:</b>
#02753 - #02756
<PRE>
<p>
<a name=table2756></a>
(Table 02756)
Call the XMS driver "Local disable A20" function with:.
AH = 06h<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h,94h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02754 - #02755
<PRE>
<p>
<a name=table2757></a>
(Table 02757)
Call the XMS driver "Query A20 state" function with:.
AH = 07h<br>
<p><b>Return:</b><br>AX = status
0001h enabled
0000h disabled
BL = error code (00h,80h,81h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02750 - #02758
<PRE>
<p>
<a name=table2758></a>
(Table 02758)
Call the XMS driver "Query free extended memory" function with:.
AH = 08h.
BL = 00h (some implementations leave BL unchanged on success)<br>
<p><b>Return:</b><br>AX = size of largest extended memory block in KB
DX = total extended memory in KB
BL = error code (00h,80h,81h,A0h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>Note:</b>
This function does not include the HMA in the returned memory sizes
<p><b>See Also:</b>
#02750 - #02757 - #02759 - #02771
<PRE>
<p>
<a name=table2759></a>
(Table 02759)
Call the XMS driver "Allocate extended memory block" function with:.
AH = 09h.
DX = Kbytes needed<br>
<p><b>Return:</b><br>AX = status
0001h success
DX = handle for memory block
0000h failure
BL = error code (80h,81h,A0h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02758 - #02761 - #02764 - #02765 - #02766 - #02772
<PRE>
<p>
<a name=table2760></a>
(Table 02760)
Call the XMS driver "Free extended memory block" function with:.
AH = 0Ah.
DX = handle of block to free<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,A2h,ABh) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02759 - #02772
<PRE>
<p>
<a name=table2761></a>
(Table 02761)
Call the XMS driver "Move extended memory block" function with:.
AH = 0Bh.
DS:SI -> EMM structure <a href="rb-4768.htm#Table2776" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2776">(see #02776)</a><br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h-82h,A3h-A9h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>Note:</b>
If either handle in the EMM structure is 0000h, the corresponding
offset is considered to be an absolute segment:offset address in
directly addressable memory
<p><b>See Also:</b>
#02759 - #02762
<PRE>
<p>
<a name=table2762></a>
(Table 02762)
Call the XMS driver "Lock extended memory block" function with:.
AH = 0Ch.
DX = handle of block to lock<br>
<p><b>Return:</b><br>AX = status
0001h success
DX:BX = 32-bit physical address of locked block
0000h failure
BL = error code (80h,81h,A2h,ACh,ADh) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>Note:</b>
MS Windows 3.x rejects this function for handles allocated after
Windows started
<p><b>See Also:</b>
#02759 - #02761 - #02763 - #02777
<PRE>
<p>
<a name=table2763></a>
(Table 02763)
Call the XMS driver "Unlock extended memory block" function with:.
AH = 0Dh.
DX = handle of block to unlock<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,A2h,AAh) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02762
<PRE>
<p>
<a name=table2764></a>
(Table 02764)
Call the XMS driver "Get handle information" function with:.
AH = 0Eh.
DX = handle for which to get info<br>
<p><b>Return:</b><br>AX = status
0001h success
BH = block's lock count
BL = number of free handles left
DX = block size in KB
0000h failure
BL = error code (80h,81h,A2h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>BUG:</b>
MS Windows 3.10 acts as though unallocated handles are in use
<p><b>Note:</b>
MS Windows 3.00 has problems with this call
<p><b>See Also:</b>
#02750 - #02759 - #02773
<PRE>
<p>
<a name=table2765></a>
(Table 02765)
Call the XMS driver "Reallocate extended memory block" function with:.
AH = 0Fh.
DX = handle of block.
BX = new size of block in KB<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,81h,A0h-A2h,ABh) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02759 - #02768
<PRE>
<p>
<a name=table2766></a>
(Table 02766)
Call the XMS driver "Request upper memory block" function with:.
AH = 10h.
DX = size of block in paragraphs<br>
<p><b>Return:</b><br>AX = status
0001h success
BX = segment address of UMB
DX = actual size of block
0000h failure
BL = error code (80h,B0h,B1h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
DX = largest available block
</PRE>
<p><b>Notes:</b>
Upper Memory consists of non-EMS memory between 640K and 1024K.
The XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard.
Under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
memory blocks will be available for allocation because all blocks
have been grabbed by MS-DOS while booting
<p><b>See Also:</b>
#02759 - #02767 - #02785 - <a href="rb-2601.htm" tppabs="http://www.ctyme.com/intr/rb-2601.htm">INT 21/AH=58h"UMB"</a>
<PRE>
<p>
<a name=table2767></a>
(Table 02767)
Call the XMS driver "Release upper memory block" function with:.
AH = 11h.
DX = segment address of UMB to release<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,B2h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>Note:</b>
The XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard
<p><b>See Also:</b>
#02760 - #02766 - #02768
<PRE>
<p>
<a name=table2768></a>
(Table 02768)
Call the XMS v3.0+ driver "Reallocate upper memory block" function with:.
AH = 12h.
DX = segment address of UMB to resize.
BX = new size of block in paragraphs<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = error code (80h,B0h,B2h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
DX = maximum available size (RM386)
</PRE>
<p><b>Note:</b>
The XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard
<p><b>See Also:</b>
#02765 - #02766 - #02767 - #02783
<PRE>
<p>
<a name=table2769></a>
(Table 02769)
Call the QEMM v5.11 "???" function with:.
AH = 34h (QEMM 5.11 only, undocumented).
???<br>
<p><b>Return:</b><br>???
</PRE>
<p><b>See Also:</b>
#02770
<PRE>
<p>
<a name=table2770></a>
(Table 02770)
Call the QEMM v5.11 "???" function with:.
AH = 44h (QEMM 5.11 only, undocumented).
???<br>
<p><b>Return:</b><br>???
</PRE>
<p><b>See Also:</b>
#02769 - #02783
<PRE>
<p>
<a name=table2771></a>
(Table 02771)
Call the XMS v3.0 driver "Query free extended memory" function with:.
AH = 88h<br>
<p><b>Return:</b><br>EAX = largest block of extended memory, in KB
BL = status (00h,80h,81h,A0h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
ECX = physical address of highest byte of memory
(valid even on error codes 81h and A0h)
EDX = total Kbytes of extended memory (0 if status A0h)
</PRE>
<p><b>BUG:</b>
HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
are called
<p><b>See Also:</b>
#02758 - #02772
<PRE>
<p>
<a name=table2772></a>
(Table 02772)
Call the XMS v3.0 driver "Allocate any extended memory" function with:.
AH = 89h.
EDX = Kbytes needed<br>
<p><b>Return:</b><br>AX = status
0001h success
DX = handle for allocated block (free with AH=0Ah) <a href="rb-4768.htm#Table2760" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2760">(see #02760)</a>
0000h failure
BL = status (80h,81h,A0h,A1h,A2h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>See Also:</b>
#02759 - #02771
<PRE>
<p>
<a name=table2773></a>
(Table 02773)
Call the XMS v3.0 driver "Get extended EMB handle information" function with:.
AH = 8Eh.
DX = handle<br>
<p><b>Return:</b><br>AX = status
0001h success
BH = block's lock count
CX = number of free handles left
EDX = block size in KB
0000h failure
BL = status (80h,81h,A2h) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>BUG:</b>
MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
<p><b>See Also:</b>
#02764 - #02772 - #02774
<PRE>
<p>
<a name=table2774></a>
(Table 02774)
Call the XMS v3.0 driver "Reallocate any extended memory block" function with:.
AH = 8Fh.
DX = unlocked memory block handle.
EBX = new size in KB<br>
<p><b>Return:</b><br>AX = status
0001h success
0000h failure
BL = status (80h,81h,A0h-A2h,ABh) <a href="rb-4768.htm#Table2775" tppabs="http://www.ctyme.com/intr/rb-4768.htm#Table2775">(see #02775)</a>
</PRE>
<p><b>BUG:</b>
HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
are called
<p><b>See Also:</b>
#02765 - #02773
<PRE>
<p>
<a name=table2775></a>
(Table 02775)
Values for XMS error code returned in BL:
00h successful
80h function not implemented
81h Vdisk was detected
82h an A20 error occurred
8Eh a general driver error
8Fh unrecoverable driver error
90h HMA does not exist or is not managed by XMS provider
91h HMA is already in use
92h DX is less than the /HMAMIN= parameter
93h HMA is not allocated
94h A20 line still enabled
A0h all extended memory is allocated
A1h all available extended memory handles are allocated
A2h invalid handle
A3h source handle is invalid
A4h source offset is invalid
A5h destination handle is invalid
A6h destination offset is invalid
A7h length is invalid
A8h move has an invalid overlap
A9h parity error occurred
AAh block is not locked
ABh block is locked
ACh block lock count overflowed
ADh lock failed
B0h only a smaller UMB is available
B1h no UMB's are available
B2h UMB segment number is invalid
<p>
Format of EMM structure:
<a name=table2776></a>
Offset Size Description (Table 02776)
00h DWORD number of bytes to move (must be even)
04h WORD source handle
06h DWORD offset into source block
0Ah WORD destination handle
0Ch DWORD offset into destination block
</PRE>
<p><b>Notes:</b>
If source and destination overlap, only forward moves (source base
less than destination base) are guaranteed to work properly.
If either handle is zero, the corresponding offset is interpreted
as a real-mode address referring to memory directly addressable
by the processor
<PRE>
<p>
Format of XMS handle info [array]:
<a name=table2777></a>
Offset Size Description (Table 02777)
00h BYTE handle
01h BYTE lock count
02h DWORD handle size
06h DWORD handle physical address (only valid if lock count nonzero)
</PRE>
<p><b>See Also:</b>
#02747 - #02762
<p>
<b>Category: <a href="cat-024.htm" tppabs="http://www.ctyme.com/intr/cat-024.htm">
Memory Management</a>
- <a href="int-2f-1.htm" tppabs="http://www.ctyme.com/intr/int-2F.htm">
Int 2Fh</a>
- <a href="alpha-e.htm" tppabs="http://www.ctyme.com/intr/alpha-e.htm">
E</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-4767.htm" tppabs="http://www.ctyme.com/intr/rb-4767.htm">
<img src="lup.gif" tppabs="http://graphics.ctyme.com/gif/lup.gif" border=0 alt=Prev></a>
<a href="rb-4769.htm" tppabs="http://www.ctyme.com/intr/rb-4769.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>