Programming documentation for the X-Surf ethernet board This document is freely distributable as long as it is not changed, and one of the sources www.jschoenfeld.com, www.jschonfeld.com, www.siliconsonic.com is mentioned. Last updated: June 28th, 2000 Vendor ID: 4626 ($1212) Product ID: 23 ($17) Serial ID: 0 Other IDs are reserved for future use, if you write your drivers for any of the expansion ports, check this document regularly. Some options of the board may be removed in order to save money. This will be represented in the serial ID. The autoconfiguration of the X-Surf is completely implemented as Commodore has defined. All the features are available, including shutup_forever and storage of the whole address word, meaning, the card can be mapped anywhere in the 24-bit memory space. Even computers with bad or missing clock-signals are supporded. Memory map: $0000-$007c Config-Nibbles. in config nibbles: $0040 Bit 7 and bit 5 represent the status of the Ethernet IRQ. Bit 5 and Bit 7 are always identical, it's implemented this way because Commodore has specified these bits as IRQ bits. See autoconfig docs for further info. $007e bit 7 represents the status of the IDE IRQ line. Both IDE ports use the same IRQ, so you shouldn't start more than one IOrequest at a time. Writing to this register controls the A11 line of the local ISA bus. This is necessary because of the limited address space on the Amiga side (only 4K for the ISA). A11 adds $800 to the address of the ethernet card, allowing you to reach the Plug'n'play registers. Writing $80 adds $800 to the address, while writing $00 gives you the normal IO address space of the ethernet board. !!Be careful: Reading this register may also affect the A11 line, so after a read, the A11 status must be restored!! Since the normal status of the A11 line is 0, writing 0 to this register after the status read is recommended. For further security, you should disable all IRQs during the Plug'n'play isolation phase. If you want to make it Amiga-like, only disable the IRQs while the A11 line must be high. $0080-$7fff mirrors of the above. Do not access, it's reserved for future use, don't rely on these mirrors! $8000-$8fff ISA bus IO addresses. All addresses are "times two", so if you want to access 0x300, the address is located at $8600 on the Amiga side. All read-accesses allowed (even and odd bytes, words, long-words), writing should only be done with word-accesses. $9000-$9ffe 26-pin expansion port. This port is 8-bit wide, and it uses even addresses. $a001-$afff clock-port 1. The clock-port is 8-bit wide, this one uses odd addresses. Spare_CS only. Address lines used are the same as in the Amiga 1200. $b000-$bfff 2,5 inch IDE port. Lower CS only (IDE-fix style). Alternate status register and reset register are not available with this style of controller. $c000-$cffe clock-port 0. The clock-port is 8-bit wide, this one uses even addresses. Spare_CS only. Address lines used are the same as in the Amiga 1200. $d000-$dfff 3,5 inch IDE port. Lower CS only (IDE-fix style). Alternate status register and reset register are not available with this style of controller. $e000-$efff ISA bus memory mapped area. Since only the memory area from 0x0000 to 0x0800 can be accessed, this address space can be considered as "nirwana" - writing will not access anything, and reading will give random data. Totally useless. $f000-$ffff Unused. If you have any questions, feel free to ask via e-mail: jens@siliconsonic.de