├── LICENSE ├── README.md ├── crynwr ├── NE1000.ASM ├── NE1000.COM ├── NE2000.ASM ├── NE2000.COM ├── NE2100.ASM └── NE2100.COM ├── datasheets ├── DP8390D.pdf ├── dp83905eb-at hardware user guide.pdf └── fifo operation in dp8390.pdf ├── images ├── allboxes.jpg ├── crynwr-8-bit-mod.jpg ├── crynwr-original.jpg ├── default-jumper.jpg ├── ne2000card.jpg ├── plusdiag-change-config.jpg ├── plusdiag-initial.jpg └── plusdiag-tests.jpg ├── ne2000-add-drivers ├── 841-301.D ├── 841-301D ├── ATDRIVE.EXE ├── ETHAT2.DOS ├── ETHAT2.NIF ├── ETHAT2.OS2 ├── INSTALL.BAT ├── MSLANMAN.DOS │ └── DRIVERS │ │ ├── ETHERNET │ │ └── ATLANTIC │ │ │ ├── ETHAT2.DOS │ │ │ └── PROTOCOL.INI │ │ └── NIF │ │ └── ETHAT2.NIF ├── MSLANMAN.OS2 │ └── DRIVERS │ │ ├── ETHERNET │ │ └── ATLANTIC │ │ │ ├── ETHAT2.OS2 │ │ │ └── PROTOCOL.INI │ │ └── NIF │ │ └── ETHAT2.NIF ├── NDISLM.TXT ├── NDISVINE.TXT ├── NDISWIN.TXT ├── NETBIOS.EXE ├── NETBIOS.TXT ├── NETBIOS │ ├── INSTALL.BAT │ └── NETBIOS.EXE ├── OEMSETUP.INF ├── PCTCP.TXT ├── PKTDRV │ └── ATDRIVE.EXE ├── PROTOCOL.INI └── README.TXT ├── ne2k8bit ├── NE2000.ASM └── NE2000.COM └── plusdiag ├── $RUN.OVL ├── IBM$RUN.OVL ├── PING.EXE ├── PLUSDIAG.EXE ├── PLUSDIAG.MSG ├── README ├── SYS$ERR.IDX └── SYS$MSG.MSG /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Yeo Kheng Meng 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ne2000plus-collection 2 | Collection of NE2000+ software obtained from various sources. 3 | 4 | ![Screen](images/allboxes.jpg) 5 | This repo was started to hold the info for my network card to prevent them from being lost to time. 6 | 7 | ![Screen](images/ne2000card.jpg) 8 | Close up view of my card. 9 | 10 | # Configuring the Base I/O address and interrupt 11 | 12 | The default base I/O is `300h` and `IRQ 3`. If you need to change these because of conflicts with other devices, you need to use the `Plusdiag` utility. 13 | 14 | `Plusdiag` may be able to detect the card even at non-default settings and in a 8-bit slot. However if you have issues, set the initial I/O and IRQ to be their defaults and put card in a 16-bit ISA slot. 15 | 16 | 1. Power off your PC and short the default jumper on both pins. 17 | 18 | ![Screen](images/default-jumper.jpg) 19 | This jumper is currently unshorted. 20 | 21 | 2. Start up your PC with the shorted jumper in place. The card will go back to default settings. 22 | 23 | 3. Configure the card with `Plusdiag`. The moment you leave `Plusdiag`, the card is actually configured with the new settings. 24 | 25 | 4. Power off the PC and unshort the jumper. 26 | 27 | 5. Restart your PC. 28 | 29 | ## Using Plusdiag 30 | 31 | 1. Start the `Plusdiag` app. 32 | 33 | ![Screen](images/plusdiag-initial.jpg) 34 | Note the warnings. 35 | 36 | 2. I felt it was helpful to run the tests as a sanity check before doing anything. 37 | 38 | ![Screen](images/plusdiag-tests.jpg) 39 | 40 | 3. Change your configuration 41 | 42 | ![Screen](images/plusdiag-change-config.jpg) 43 | 44 | Available I/O ports are: 300h, 320h, 340h, 360h, 240h, 280h, 2C0h 45 | Available IRQs are: 2, 3, 4, 5, 10, 11, 12, 15 46 | 47 | Note for 8-bit operations, only IRQ 2-7 are usable. 48 | 49 | # Drivers 50 | 51 | Drivers are provided in the floppy disk but I opted to use the CWYNR drivers as they are easier to use. 52 | 53 | ## Original Crynwr drivers 54 | This is meant for 16-bit ISA operation. 55 | 56 | ![Screen](images/crynwr-original.jpg) 57 | 58 | Provide the packet interface interrupt, IRQ and base I/O address. 59 | 60 | ```bash 61 | ne2000.com 0x60 3 0x340 62 | ``` 63 | The base I/O address of my card is set at `0x340` as `0x300` is used by another device. 64 | 65 | A tell-tale sign of an improper configuration is that the Ethernet Address is not shown properly. 66 | 67 | ## 8-bit modified driver 68 | 69 | Someone modified the Crynwr drivers for 8-bit operation. 70 | 71 | ![Screen](images/crynwr-8-bit-mod.jpg) 72 | 73 | Specifiy the same command line arguments. 74 | 75 | ## Others 76 | 77 | I copied out DOS, OS/2 and NDIS drivers from the "Additional Drivers Version 1.1" disk to the `ne2000-add-drivers` directory. I have not tested them. 78 | 79 | The Netware Drivers disk LAN_DRV_412 was faulty so no data from there. 80 | 81 | # References 82 | 83 | 1. [PlusDiag](https://www.driverguide.com/driver/detail.php?driverid=69426) 84 | 2. [Crynwr drivers](https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/crynwr.html) 85 | 3. [Crynwr 8-bit](http://www.vcfed.org/forum/showthread.php?41081-NE2000-Packet-drivers-for-8-bit-slots) 86 | -------------------------------------------------------------------------------- /crynwr/NE1000.ASM: -------------------------------------------------------------------------------- 1 | version equ 5 2 | ;History:77,1 3 | 4 | ; The following people have contributed to this code: David Horne, Eric 5 | ; Henderson, and Bob Clements. 6 | 7 | ; Copyright, 1988-1992, Russell Nelson, Crynwr Software 8 | 9 | ; This program is free software; you can redistribute it and/or modify 10 | ; it under the terms of the GNU General Public License as published by 11 | ; the Free Software Foundation, version 1. 12 | ; 13 | ; This program is distributed in the hope that it will be useful, 14 | ; but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | ; GNU General Public License for more details. 17 | ; 18 | ; You should have received a copy of the GNU General Public License 19 | ; along with this program; if not, write to the Free Software 20 | ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | 22 | 23 | include defs.asm 24 | 25 | code segment word public 26 | assume cs:code, ds:code 27 | 28 | ;***************************************************************************** 29 | ; 30 | ; NE1000 controller board offsets 31 | ; IO port definition (BASE in io_addr) 32 | ;***************************************************************************** 33 | NE_DATAPORT EQU 10h ; NE1000 Port Window. 34 | NE_RESET EQU 1fh ; Issue a read for reset 35 | EN_OFF equ 0h 36 | 37 | include 8390.inc 38 | 39 | ; Shared memory management parameters 40 | 41 | SM_TSTART_PG EQU 20h ; First page of TX buffer 42 | SM_RSTART_PG EQU 26h ; start at page 26 43 | SM_RSTOP_PG EQU 40h ; end at page 40 44 | 45 | pause_ macro 46 | ; jmp $+2 47 | ; 48 | ; The reason for the pause_ macro is to establish a minimum time between 49 | ; accesses to the card hardware. The assumption is that the fetch and execution 50 | ; of the jmp $+2 instruction will provide this time. In a fast cache machine 51 | ; this may be a false assumption. In a fast cache machine, there may be 52 | ; NO REAL TIME DIFFERENCE between the two I/O instruction streams below: 53 | ; 54 | ; in al,dx in al,dx 55 | ; jmp $+2 56 | ; in al,dx in al,dx 57 | ; 58 | ; To establish a minimum delay, an I/O instruction must be used. A good rule of 59 | ; thumb is that ISA I/O instructions take ~1.0 microseconds and MCA I/O 60 | ; instructions take ~0.5 microseconds. Reading the NMI Status Register (0x61) 61 | ; is a good way to pause on all machines. 62 | ; 63 | ; The National 8390 Chip (NIC) requires 4 bus clocks between successive 64 | ; chip selects (National DP8390 Data Sheet Addendum, June 1990 -- it took them 65 | ; long enough to figure this out and tell everyone) or the NIC behaves badly. 66 | ; Therefor one I/O instruction should be inserted between each successive 67 | ; NIC I/O instruction that could occur 'back - to - back' on a fast cache 68 | ; machine. 69 | ; - gft - 910529 70 | ; 71 | push ax 72 | in al, 61h 73 | pop ax 74 | ; 75 | endm 76 | 77 | reset_8390 macro 78 | loadport 79 | setport NE_RESET 80 | in al,dx 81 | longpause 82 | out dx,al ; should set command 21, 80 83 | endm 84 | 85 | terminate_board macro 86 | endm 87 | 88 | public int_no, io_addr 89 | int_no db 3,0,0,0 ;must be four bytes long for get_number. 90 | io_addr dw 0300h,0 ; I/O address for card (jumpers) 91 | 92 | public driver_class, driver_type, driver_name, driver_function, parameter_list 93 | driver_class db BLUEBOOK, IEEE8023, 0 ;from the packet spec 94 | driver_type dw 53 ;from the packet spec 95 | driver_name db 'NE1000',0 ;name of the driver. 96 | driver_function db 2 97 | parameter_list label byte 98 | db 1 ;major rev of packet driver 99 | db 9 ;minor rev of packet driver 100 | db 14 ;length of parameter list 101 | db EADDR_LEN ;length of MAC-layer address 102 | dw GIANT ;MTU, including MAC headers 103 | dw MAX_MULTICAST * EADDR_LEN ;buffer size of multicast addrs 104 | dw 0 ;(# of back-to-back MTU rcvs) - 1 105 | dw 0 ;(# of successive xmits) - 1 106 | int_num dw 0 ;Interrupt # to hook for post-EOI 107 | ;processing, 0 == none, 108 | 109 | extrn is_186: byte ;=0 if 808[68], =1 if 80[123]86. 110 | 111 | ; 112 | ; Special case Block input routine. Used on extra memory 113 | ; space for board ID etc. DMA count is set X2, 114 | ; CX = byte count, es:si = buffer location, ax = buffer address 115 | ; 116 | sp_block_input: 117 | ; Nothing special needed for NE-1000. 118 | ; 119 | ; Block input routine 120 | ; CX = byte count, es:di = buffer location, ax = buffer address 121 | 122 | public block_input 123 | block_input: 124 | push ax ; save buffer address 125 | loadport 126 | setport EN_CCMD 127 | pause_ 128 | mov al,ENC_NODMA+ENC_PAGE0+ENC_START 129 | out dx,al 130 | mov ax,cx ;get the count to be output. 131 | setport EN0_RCNTLO ; remote byte count 0 132 | pause_ 133 | out dx,al 134 | setport EN0_RCNTHI 135 | pause_ 136 | mov al,ah 137 | out dx,al 138 | pop ax ; get our page back 139 | setport EN0_RSARLO 140 | pause_ 141 | out dx,al ; set as hi address 142 | setport EN0_RSARHI 143 | pause_ 144 | mov al,ah 145 | out dx,al 146 | setport EN_CCMD 147 | pause_ 148 | mov al,ENC_RREAD+ENC_START ; read and start 149 | out dx,al 150 | setport NE_DATAPORT 151 | pause_ 152 | cmp is_186,0 153 | jnz read_186 154 | read_loop: 155 | in al,dx ; get a byte 156 | stosb ; save it 157 | loop read_loop 158 | ret 159 | read_186: 160 | .286 161 | rep insb 162 | .8086 163 | ret 164 | ; 165 | ; Block output routine 166 | ; CX = byte count, ds:si = buffer location, ax = buffer address 167 | 168 | block_output: 169 | assume ds:nothing 170 | push ax ; save buffer address 171 | inc cx ; make even 172 | and cx,0fffeh 173 | loadport 174 | setport EN_CCMD 175 | pause_ 176 | mov al,ENC_NODMA+ENC_START 177 | out dx,al ; stop & clear the chip 178 | setport EN0_RCNTLO ; remote byte count 0 179 | pause_ 180 | mov al,cl 181 | out dx,al 182 | setport EN0_RCNTHI 183 | pause_ 184 | mov al,ch 185 | out dx,al 186 | pop ax ; get our page back 187 | setport EN0_RSARLO 188 | pause_ 189 | out dx,al ; set as lo address 190 | setport EN0_RSARHI 191 | pause_ 192 | mov al,ah 193 | out dx,al 194 | setport EN_CCMD 195 | pause_ 196 | mov al,ENC_RWRITE+ENC_START ; write and start 197 | out dx,al 198 | setport NE_DATAPORT 199 | pause_ 200 | cmp is_186,0 201 | jnz write_186 202 | write_loop: 203 | lodsb ; get a byte 204 | out dx,al ; save it 205 | loop write_loop 206 | jmp short block_output_1 207 | write_186: 208 | .286 209 | rep outsb 210 | .8086 211 | block_output_1: 212 | mov cx,0 213 | setport EN0_ISR 214 | tx_check_rdc: 215 | in al,dx 216 | test al,ENISR_RDC ; dma done ??? 217 | jnz tx_start 218 | loop tx_check_rdc 219 | stc 220 | ret 221 | tx_start: 222 | clc 223 | ret 224 | 225 | 226 | include 8390.asm 227 | 228 | public usage_msg 229 | usage_msg db "usage: NE1000 [options] ",CR,LF,'$' 230 | 231 | public copyright_msg 232 | copyright_msg db "Packet driver for NE1000, version " 233 | db '0'+(majver / 10),'0'+(majver mod 10),".",'0'+version,".",'0'+dp8390_version,CR,LF,'$' 234 | 235 | int_no_name db "Interrupt number ",'$' 236 | io_addr_name db "I/O port ",'$' 237 | 238 | extrn set_recv_isr: near 239 | 240 | ;enter with si -> argument string, di -> word to store. 241 | ;if there is no number, don't change the number. 242 | extrn get_number: near 243 | 244 | ;enter with dx -> name of word, di -> dword to print. 245 | extrn print_number: near 246 | 247 | public parse_args 248 | parse_args: 249 | ;exit with nc if all went well, cy otherwise. 250 | mov di,offset int_no 251 | call get_number 252 | mov di,offset io_addr 253 | call get_number 254 | clc 255 | ret 256 | 257 | extrn etopen_diagn: byte 258 | 259 | bad_addr_msg label byte 260 | db "The Ethernet address of this card is invalid, because it has the",CR,LF 261 | db "multicast bit set. We will reset that bit and continue...",CR,LF,'$' 262 | 263 | init_card: 264 | ;get the board data. This is (16) bytes starting at remote 265 | ;dma address 0. Put it in a buffer called board_data. 266 | 267 | mov cx,10h ; get 16 bytes, 268 | movseg es,ds 269 | mov di,offset board_data 270 | mov ax,0 ; from address 0 271 | call sp_block_input 272 | 273 | push ds ; Copy from card's address to current address 274 | pop es 275 | 276 | test board_data,1 ;did the fools pick their own OUI? 277 | je init_card_1 ;no. 278 | 279 | and board_data,not 1 ;reset the multicast bit, 280 | mov dx,offset bad_addr_msg 281 | mov ah,9 282 | int 21h 283 | 284 | init_card_1: 285 | 286 | mov si, offset board_data ; address is at start 287 | mov di, offset rom_address 288 | mov cx, EADDR_LEN ; Copy one address length 289 | rep movsb ; .. 290 | 291 | clc 292 | ret 293 | 294 | public print_parameters 295 | print_parameters: 296 | ;echo our command-line parameters 297 | mov di,offset int_no 298 | mov dx,offset int_no_name 299 | call print_number 300 | mov di,offset io_addr 301 | mov dx,offset io_addr_name 302 | call print_number 303 | ret 304 | 305 | code ends 306 | 307 | end 308 | -------------------------------------------------------------------------------- /crynwr/NE1000.COM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/crynwr/NE1000.COM -------------------------------------------------------------------------------- /crynwr/NE2000.ASM: -------------------------------------------------------------------------------- 1 | version equ 4 2 | ;History:76,1 0 3 | 4 | ; The following people have contributed to this code: David Horne, Eric 5 | ; Henderson, and Bob Clements. 6 | 7 | ; Copyright, 1988-1992, Russell Nelson, Crynwr Software 8 | 9 | ; This program is free software; you can redistribute it and/or modify 10 | ; it under the terms of the GNU General Public License as published by 11 | ; the Free Software Foundation, version 1. 12 | ; 13 | ; This program is distributed in the hope that it will be useful, 14 | ; but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | ; GNU General Public License for more details. 17 | ; 18 | ; You should have received a copy of the GNU General Public License 19 | ; along with this program; if not, write to the Free Software 20 | ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 | 22 | include defs.asm 23 | 24 | code segment word public 25 | assume cs:code, ds:code 26 | 27 | ;***************************************************************************** 28 | ; 29 | ; NE2000 controller board offsets 30 | ; IO port definition (BASE in io_addr) 31 | ;***************************************************************************** 32 | NE_DATAPORT EQU 10h ; NE2000 Port Window. 33 | NE_RESET EQU 1fh ; Issue a read for reset 34 | EN_OFF equ 0h 35 | 36 | include 8390.inc 37 | 38 | ; Shared memory management parameters 39 | 40 | SM_TSTART_PG equ 040h ; First page of TX buffer 41 | SM_RSTART_PG equ 046h ; Starting page of RX ring 42 | SM_RSTOP_PG equ 080h ; Last page +1 of RX ring 43 | 44 | pause_ macro 45 | ; jmp $+2 46 | ; 47 | ; The reason for the pause_ macro is to establish a minimum time between 48 | ; accesses to the card hardware. The assumption is that the fetch and execution 49 | ; of the jmp $+2 instruction will provide this time. In a fast cache machine 50 | ; this may be a false assumption. In a fast cache machine, there may be 51 | ; NO REAL TIME DIFFERENCE between the two I/O instruction streams below: 52 | ; 53 | ; in al,dx in al,dx 54 | ; jmp $+2 55 | ; in al,dx in al,dx 56 | ; 57 | ; To establish a minimum delay, an I/O instruction must be used. A good rule of 58 | ; thumb is that ISA I/O instructions take ~1.0 microseconds and MCA I/O 59 | ; instructions take ~0.5 microseconds. Reading the NMI Status Register (0x61) 60 | ; is a good way to pause on all machines. 61 | ; 62 | ; The National 8390 Chip (NIC) requires 4 bus clocks between successive 63 | ; chip selects (National DP8390 Data Sheet Addendum, June 1990 -- it took them 64 | ; long enough to figure this out and tell everyone) or the NIC behaves badly. 65 | ; Therefor one I/O instruction should be inserted between each successive 66 | ; NIC I/O instruction that could occur 'back - to - back' on a fast cache 67 | ; machine. 68 | ; - gft - 910529 69 | ; 70 | push ax 71 | in al, 61h 72 | pop ax 73 | ; 74 | endm 75 | 76 | reset_8390 macro 77 | loadport 78 | setport NE_RESET 79 | in al,dx 80 | longpause 81 | out dx,al ; should set command 21, 80 82 | 83 | endm 84 | 85 | terminate_board macro 86 | endm 87 | 88 | public int_no, io_addr 89 | int_no db 2,0,0,0 ;must be four bytes long for get_number. 90 | io_addr dw 0300h,0 ; I/O address for card (jumpers) 91 | 92 | public driver_class, driver_type, driver_name, driver_function, parameter_list 93 | driver_class db BLUEBOOK, IEEE8023, 0 ;from the packet spec 94 | driver_type dw 54 ;from the packet spec 95 | driver_name db 'NE2000',0 ;name of the driver. 96 | driver_function db 2 97 | parameter_list label byte 98 | db 1 ;major rev of packet driver 99 | db 9 ;minor rev of packet driver 100 | db 14 ;length of parameter list 101 | db EADDR_LEN ;length of MAC-layer address 102 | dw GIANT ;MTU, including MAC headers 103 | dw MAX_MULTICAST * EADDR_LEN ;buffer size of multicast addrs 104 | dw 0 ;(# of back-to-back MTU rcvs) - 1 105 | dw 0 ;(# of successive xmits) - 1 106 | int_num dw 0 ;Interrupt # to hook for post-EOI 107 | ;processing, 0 == none, 108 | 109 | extrn is_186: byte ;=0 if 808[68], =1 if 80[123]86. 110 | 111 | ; 112 | ; Block input routine 113 | ; CX = byte count, es:di = buffer location, ax = buffer address 114 | 115 | public block_input 116 | block_input: 117 | push ax ; save buffer address 118 | loadport 119 | setport EN_CCMD 120 | pause_ 121 | mov al,ENC_NODMA+ENC_PAGE0+ENC_START 122 | out dx,al 123 | setport EN0_RCNTLO ; remote byte count 0 124 | pause_ 125 | mov al,cl 126 | out dx,al 127 | setport EN0_RCNTHI 128 | pause_ 129 | mov al,ch 130 | out dx,al 131 | pop ax ; get our page back 132 | setport EN0_RSARLO 133 | pause_ 134 | out dx,al ; set as hi address 135 | setport EN0_RSARHI 136 | pause_ 137 | mov al,ah 138 | out dx,al 139 | setport EN_CCMD 140 | pause_ 141 | mov al,ENC_RREAD+ENC_START ; read and start 142 | out dx,al 143 | setport NE_DATAPORT 144 | pause_ 145 | cmp is_186,0 146 | jnz read_186 147 | read_loop: 148 | in al,dx ; get a byte 149 | stosb ; save it 150 | loop read_loop 151 | ret 152 | read_186: 153 | shr cx,1 ; word count 154 | .286 155 | rep insw 156 | .8086 157 | jnc read_186_1 ;is there an extra byte? 158 | in ax,dx ;yes, read the next word and store a 159 | stosb ; byte. 160 | read_186_1: 161 | ret 162 | ; 163 | ; Block output routine 164 | ; CX = byte count, ds:si = buffer location, ax = buffer address 165 | 166 | block_output: 167 | assume ds:nothing 168 | push ax ; save buffer address 169 | inc cx ; make even 170 | and cx,0fffeh 171 | loadport 172 | setport EN_CCMD 173 | pause_ 174 | mov al,ENC_NODMA+ENC_START 175 | out dx,al ; stop & clear the chip 176 | setport EN0_RCNTLO ; remote byte count 0 177 | pause_ 178 | mov al,cl 179 | out dx,al 180 | setport EN0_RCNTHI 181 | pause_ 182 | mov al,ch 183 | out dx,al 184 | pop ax ; get our page back 185 | setport EN0_RSARLO 186 | pause_ 187 | out dx,al ; set as lo address 188 | setport EN0_RSARHI 189 | pause_ 190 | mov al,ah 191 | out dx,al 192 | setport EN_CCMD 193 | pause_ 194 | mov al,ENC_RWRITE+ENC_START ; write and start 195 | out dx,al 196 | setport NE_DATAPORT 197 | pause_ 198 | cmp is_186,0 199 | jnz write_186 200 | write_loop: 201 | lodsb ; get a byte 202 | out dx,al ; save it 203 | loop write_loop 204 | jmp short block_output_1 205 | write_186: 206 | shr cx,1 ; word count 207 | .286 208 | rep outsw 209 | .8086 210 | block_output_1: 211 | mov cx,0 212 | setport EN0_ISR 213 | tx_check_rdc: 214 | in al,dx 215 | test al,ENISR_RDC ; dma done ??? 216 | jnz tx_start 217 | loop tx_check_rdc 218 | stc 219 | ret 220 | tx_start: 221 | clc 222 | ret 223 | 224 | 225 | include 8390.asm 226 | 227 | public usage_msg 228 | usage_msg db "usage: NE2000 [options] ",CR,LF,'$' 229 | 230 | public copyright_msg 231 | copyright_msg db "Packet driver for NE2000, version " 232 | db '0'+(majver / 10),'0'+(majver mod 10),".",'0'+version,".",'0'+dp8390_version,CR,LF,'$' 233 | 234 | int_no_name db "Interrupt number ",'$' 235 | io_addr_name db "I/O port ",'$' 236 | 237 | extrn set_recv_isr: near 238 | 239 | ;enter with si -> argument string, di -> word to store. 240 | ;if there is no number, don't change the number. 241 | extrn get_number: near 242 | 243 | ;enter with dx -> name of word, di -> dword to print. 244 | extrn print_number: near 245 | 246 | public parse_args 247 | parse_args: 248 | ;exit with nc if all went well, cy otherwise. 249 | mov di,offset int_no 250 | call get_number 251 | mov di,offset io_addr 252 | call get_number 253 | clc 254 | ret 255 | 256 | extrn etopen_diagn: byte 257 | 258 | init_card: 259 | ;get the board data. This is (16) bytes starting at remote 260 | ;dma address 0. Put it in a buffer called board_data. 261 | assume ds:code 262 | 263 | or endcfg,ENDCFG_WTS 264 | 265 | loadport 266 | mov al,endcfg 267 | setport EN0_DCFG 268 | pause_ 269 | out dx,al 270 | 271 | mov cx,10h ; get 16 bytes, 272 | movseg es,ds 273 | mov di,offset board_data 274 | 275 | setport EN_CCMD 276 | pause_ 277 | mov al,ENC_NODMA+ENC_PAGE0+ENC_START 278 | out dx,al 279 | setport EN0_RCNTLO ; remote byte count 0 280 | pause_ 281 | mov al,20h ; count is actually doubled. 282 | out dx,al 283 | setport EN0_RCNTHI 284 | pause_ 285 | xor al,al ; high byte of count is zero. 286 | out dx,al 287 | 288 | mov ax,0 ; from address 0 289 | 290 | setport EN0_RSARLO 291 | pause_ 292 | out dx,al ; set as hi address 293 | setport EN0_RSARHI 294 | pause_ 295 | mov al,ah 296 | out dx,al 297 | setport EN_CCMD 298 | pause_ 299 | mov al,ENC_RREAD+ENC_START ; read and start 300 | out dx,al 301 | setport NE_DATAPORT 302 | pause_ 303 | sp_read_loop: 304 | in al,dx ; get a byte 305 | stosb ; save it 306 | loop sp_read_loop 307 | 308 | push ds ; Copy from card's address to current address 309 | pop es 310 | 311 | mov si, offset board_data ; address is at start 312 | mov di, offset rom_address 313 | mov cx, EADDR_LEN ; Copy one address length 314 | rep movsb ; .. 315 | 316 | clc 317 | ret 318 | 319 | public print_parameters 320 | print_parameters: 321 | ;echo our command-line parameters 322 | mov di,offset int_no 323 | mov dx,offset int_no_name 324 | call print_number 325 | mov di,offset io_addr 326 | mov dx,offset io_addr_name 327 | call print_number 328 | ret 329 | 330 | code ends 331 | 332 | end 333 | -------------------------------------------------------------------------------- /crynwr/NE2000.COM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/crynwr/NE2000.COM -------------------------------------------------------------------------------- /crynwr/NE2100.ASM: -------------------------------------------------------------------------------- 1 | version equ 1 2 | 3 | ; Copyright, 1990-1992, Russell Nelson, Crynwr Software 4 | 5 | ; This program is free software; you can redistribute it and/or modify 6 | ; it under the terms of the GNU General Public License as published by 7 | ; the Free Software Foundation, version 1. 8 | ; 9 | ; This program is distributed in the hope that it will be useful, 10 | ; but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | ; GNU General Public License for more details. 13 | ; 14 | ; You should have received a copy of the GNU General Public License 15 | ; along with this program; if not, write to the Free Software 16 | ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | 18 | 19 | .286 ;the NE2100 requires a 286. 20 | 21 | include defs.asm 22 | 23 | EBASE equ 0 24 | DATA_REG equ 10h 25 | ADDR_REG equ DATA_REG+2 26 | 27 | code segment para public 28 | assume cs:code, ds:code 29 | 30 | public int_no 31 | int_no db 3,0,0,0 ;must be four bytes long for get_number. 32 | io_addr dw 300h,0 33 | dma_no db 5,0,0,0 34 | 35 | public driver_class, driver_type, driver_name, driver_function, parameter_list 36 | driver_class db BLUEBOOK, IEEE8023, 0 ;from the packet spec 37 | driver_type db 97 ;from the packet spec 38 | driver_name db 'NE2100',0 ;name of the driver. 39 | driver_function db 2 ;basic, extended 40 | parameter_list label byte 41 | db 1 ;major rev of packet driver 42 | db 9 ;minor rev of packet driver 43 | db 14 ;length of parameter list 44 | db EADDR_LEN ;length of MAC-layer address 45 | dw GIANT ;MTU, including MAC headers 46 | dw MAX_MULTICAST * EADDR_LEN ;buffer size of multicast addrs 47 | dw RECEIVE_BUF_COUNT-1 ;(# of back-to-back MTU rcvs) - 1 48 | dw TRANSMIT_BUF_COUNT-1 ;(# of successive xmits) - 1 49 | int_num dw 0 ;Interrupt # to hook for post-EOI 50 | ;processing, 0 == none, 51 | 52 | reset_lance macro 53 | mov ax,0ff7ch ;stop LANCE 54 | outport CSR0 ;should use hardware reset here 55 | endm 56 | 57 | include lance.asm 58 | 59 | public usage_msg 60 | usage_msg db "usage: ne2100 [options] ",CR,LF,'$' 61 | bad_reset_msg db "Unable to reset the NE2100.",CR,LF,'$' 62 | bad_init_msg db "Unable to initialize the NE2100.",CR,LF,'$' 63 | no_memory_msg db "Unable to allocate enough memory, look at end_resident in NE2100.ASM",CR,LF,'$' 64 | 65 | public copyright_msg 66 | copyright_msg db "Packet driver for an NE2100, version ",'0'+(majver / 10),'0'+(majver mod 10),".",'0'+lance_version,".",'0'+version,CR,LF 67 | db '$' 68 | 69 | public parse_args 70 | parse_args: 71 | ;exit with nc if all went well, cy otherwise. 72 | assume ds:code 73 | mov di,offset int_no 74 | call get_number 75 | mov di,offset io_addr 76 | call get_number 77 | mov di,offset dma_no 78 | call get_number 79 | clc 80 | ret 81 | 82 | check_board: 83 | clc 84 | ret 85 | 86 | code ends 87 | 88 | end 89 | 90 | -------------------------------------------------------------------------------- /crynwr/NE2100.COM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/crynwr/NE2100.COM -------------------------------------------------------------------------------- /datasheets/DP8390D.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/datasheets/DP8390D.pdf -------------------------------------------------------------------------------- /datasheets/dp83905eb-at hardware user guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/datasheets/dp83905eb-at hardware user guide.pdf -------------------------------------------------------------------------------- /datasheets/fifo operation in dp8390.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/datasheets/fifo operation in dp8390.pdf -------------------------------------------------------------------------------- /images/allboxes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/allboxes.jpg -------------------------------------------------------------------------------- /images/crynwr-8-bit-mod.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/crynwr-8-bit-mod.jpg -------------------------------------------------------------------------------- /images/crynwr-original.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/crynwr-original.jpg -------------------------------------------------------------------------------- /images/default-jumper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/default-jumper.jpg -------------------------------------------------------------------------------- /images/ne2000card.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/ne2000card.jpg -------------------------------------------------------------------------------- /images/plusdiag-change-config.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/plusdiag-change-config.jpg -------------------------------------------------------------------------------- /images/plusdiag-initial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/plusdiag-initial.jpg -------------------------------------------------------------------------------- /images/plusdiag-tests.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/images/plusdiag-tests.jpg -------------------------------------------------------------------------------- /ne2000-add-drivers/841-301.D: -------------------------------------------------------------------------------- 1 | NE2000plus 2 | Additional Drivers 3 | Version 1.1 4 | 5 | Part Number 440010841-301 6 | Revision D 7 | 8 | (c) Copyright 1993-1994 National Semiconductor Corporation 9 | All Rights Reserved. 10 | -------------------------------------------------------------------------------- /ne2000-add-drivers/841-301D: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/841-301D -------------------------------------------------------------------------------- /ne2000-add-drivers/ATDRIVE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/ATDRIVE.EXE -------------------------------------------------------------------------------- /ne2000-add-drivers/ETHAT2.DOS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/ETHAT2.DOS -------------------------------------------------------------------------------- /ne2000-add-drivers/ETHAT2.NIF: -------------------------------------------------------------------------------- 1 | Model = NSC AT/LANTIC NDIS 2.01 Driver 2 | Path = ETHERNET\ATLANTIC 3 | DeviceDriver = ETHAT2.DOS 4 | DeviceName = ETHAT20$ 5 | Type = NDIS 6 | -------------------------------------------------------------------------------- /ne2000-add-drivers/ETHAT2.OS2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/ETHAT2.OS2 -------------------------------------------------------------------------------- /ne2000-add-drivers/INSTALL.BAT: -------------------------------------------------------------------------------- 1 | @echo off 2 | if %1. == . goto error 3 | copy \netbios\netbios.exe %1:\netbios.exe 4 | if errorlevel 1 goto error 5 | goto end 6 | :error 7 | @echo You must supply a destination drive letter on the command line. 8 | @echo Example : install c - will install NETBIOS.EXE on Drive C 9 | @echo Please see the README.TXT for more information. 10 | :end 11 | @echo on 12 | -------------------------------------------------------------------------------- /ne2000-add-drivers/MSLANMAN.DOS/DRIVERS/ETHERNET/ATLANTIC/ETHAT2.DOS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/MSLANMAN.DOS/DRIVERS/ETHERNET/ATLANTIC/ETHAT2.DOS -------------------------------------------------------------------------------- /ne2000-add-drivers/MSLANMAN.DOS/DRIVERS/ETHERNET/ATLANTIC/PROTOCOL.INI: -------------------------------------------------------------------------------- 1 | DriverName=ETHAT20$ 2 | IOBASE = 0x300 3 | INTERRUPT = 3 4 | ; RAMADDRESS = 0xD0000 5 | ; RAM address is only used in shared memory mode. 6 | ; If the RAM address is included the driver will assume shared memory mode. 7 | ; The RAM address is entered as the physical address 8 | ; e.g. 0xd0000 is equivalent to 0xd000:0000 in segment:offset format 9 | -------------------------------------------------------------------------------- /ne2000-add-drivers/MSLANMAN.DOS/DRIVERS/NIF/ETHAT2.NIF: -------------------------------------------------------------------------------- 1 | Model = National Semiconductor InfoMover NE2000Plus 2 | Path = ETHERNET\ATLANTIC 3 | DeviceDriver = ETHAT2.DOS 4 | DeviceName = ETHAT20$ 5 | Type = NDIS 6 |  -------------------------------------------------------------------------------- /ne2000-add-drivers/MSLANMAN.OS2/DRIVERS/ETHERNET/ATLANTIC/ETHAT2.OS2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/MSLANMAN.OS2/DRIVERS/ETHERNET/ATLANTIC/ETHAT2.OS2 -------------------------------------------------------------------------------- /ne2000-add-drivers/MSLANMAN.OS2/DRIVERS/ETHERNET/ATLANTIC/PROTOCOL.INI: -------------------------------------------------------------------------------- 1 | DriverName=ETHAT20$ 2 | IOBASE = 0x300 3 | INTERRUPT = 3 4 | ; RAMADDRESS = 0xD0000 5 | ; RAM address is only used in shared memory mode. 6 | ; If the RAM address is included the driver will assume shared memory mode. 7 | ; The RAM address is entered as the physical address 8 | ; e.g. 0xd0000 is equivalent to 0xd000:0000 in segment:offset format 9 | -------------------------------------------------------------------------------- /ne2000-add-drivers/MSLANMAN.OS2/DRIVERS/NIF/ETHAT2.NIF: -------------------------------------------------------------------------------- 1 | Model = National Semiconductor InfoMover NE2000Plus 2 | Path = ETHERNET\ATLANTIC 3 | DeviceDriver = ETHAT2.OS2 4 | DeviceName = ETHAT20$ 5 | Type = NDIS 6 |  -------------------------------------------------------------------------------- /ne2000-add-drivers/NDISLM.TXT: -------------------------------------------------------------------------------- 1 | 2 | NDIS DEVICE DRIVER INSTALLATION 3 | ------------------------------- 4 | 5 | NOTE: Before installing the NDIS drivers, please make a note of the 6 | configuration of your NE2000PLUS adapter. Run the PLUSDIAG Utility to 7 | obtain the following information: 8 | 9 | A. Adapter Architecture : Programmed I/O or Shared Memory 10 | B. Port Address 11 | C. Interrupt setting 12 | 13 | NOTE: The NDIS Drivers supports only 286 or higher machines. 14 | 15 | LAN Manager 2.2 And OEM Verions: 16 | ------------------------------- 17 | 18 | New Installations: DOS or OS/2 19 | ------------------------------ 20 | 21 | 1. Follow the procedures outlined in the Microsoft Lan Manager 22 | Installion Guide for instructions on running the SETUP utility. 23 | 24 | 2. When SETUP prompts you to select a network adapter driver, choose 25 | the "OTHER DRIVER" option and press ENTER or click on OK. 26 | 27 | 3. Insert the NE2000PLUS Additional Drivers Diskette into drive A and 28 | press ENTER or click OK. 29 | 30 | 4. The SETUP utility will display "NSC AT/LANTIC NDIS 2.01 Driver". 31 | Press ENTER or click OK. 32 | 33 | 5. Select the protocol you wish to use with the NE2000PLUS and then press 34 | ENTER or click OK. 35 | 36 | 6. Follow the rest of the instructions as per your LAN Manager 37 | Installion Guide. 38 | 39 | 7. If you changed the default settings (I/O Mode, 300h, 3) on your 40 | NE2000PLUS adapter, you'll need to edit the PROTOCOL.INI located in the 41 | LANMAN.DOS (DOS Installations) or LANMAN (OS2 Installations) on 42 | your hard drive. Edit the section [ETHAT2_NIF] and change the 43 | IOBASE, INTERRUPT, or RAMADDRESS (Needed only for Shared Memory 44 | Mode) to the correct values. See the NDIS Device Driver Configuration 45 | section for more details. 46 | 47 | 8. Installation complete. Reboot your machine to load the drivers. 48 | 49 | Note: For earlier versions of LAN Manager, refer to the Installion Guide 50 | for information on importing network drivers. The same steps are 51 | used if LAN Manager is already installed on your hard drive. 52 | 53 | ----------------------------------------------------------------------------- 54 | 55 | 56 | NDIS DEVICE DRIVER CONFIGURATION 57 | -------------------------------- 58 | 59 | The I/O base address and interrupt level can be configured on the LAN 60 | Adapter for Ethernet using the PLUSDIAG.EXE program supplied on the Driver 61 | diskette. The NDIS device driver must be configured to match the adapter's 62 | configuration. The NDIS device driver can be configured manually by 63 | editing the PROTOCOL.INI file. A detailed description of the configurable 64 | parameters follows: 65 | 66 | 67 | IOBASE = This parameter specifies the adapter I/O Base address that will 68 | be used by the device driver to access the adapter registers. 69 | The value entered must be one of 240h, 280h, 2C0h, 300h, 320h, 340h 70 | or 360h. The default is 300. 71 | 72 | EXAMPLE: IOBASE = 0x300 73 | 74 | INTERRUPT = This parameter specifies the interrupt level used for 75 | notifications between the workstation and the network 76 | adapter card. Ensure that no conflicts exist between 77 | the various system components in their use of interrupts. 78 | The value entered must be one of 2, 3, 4, 5, 10, 11, 12, or 15. 79 | The default value is 3. 80 | 81 | EXAMPLE: INTERRUPT = 3 82 | 83 | RAMADDRESS = This parameter specifies the physical location of the 84 | adapter in the memory of the computer. The specified 85 | location must not conflict with that of any other adapter 86 | installed in the workstation or with an address that is 87 | used by a memory manager. The value entered must be a 88 | hexadecimal number between C0000 and D0000 and must be a 89 | multiple of 4000. The default address is D0000. 90 | 91 | EXAMPLE: RAMADDRESS = D0000 92 | 93 | 94 | Note: The NDIS device driver anticipates the mode of the adapter, 95 | either programmed I/O or shared memory, by the presence of the 96 | RAMADDRESS= statement in PROTOCOL.INI. If the RAMADDRESS= 97 | statement is specified, it is assumed that the adapter is in 98 | shared memory mode. If the RAMADDRESS= statement is not specified, 99 | it is assumed that the adapter is in programmed I/O mode. If the 100 | NDIS device driver is configured for the wrong adapter mode, an 101 | error message will be displayed during system initialization. 102 | 103 | 104 | 105 | The NDIS device driver section of PROTOCOL.INI can be created manually. 106 | An example of a PROTOCOL.INI section for the NDIS device driver follows. 107 | 108 | 109 | [ETHAT2_NIF] 110 | 111 | Drivername = ETHAT20$ 112 | 113 | IOBase = 0X300 114 | 115 | Interrupt = 2 116 | 117 | RAMAddress = 0XC0000 118 | 119 | 120 | 121 | Finally, the desired protocol driver(s) must be "bound" to the NDIS 122 | device driver by manually editing the BINDINGS= statement of those 123 | protocol drivers. An example follows: 124 | 125 | 126 | [PROTOCOL_DRIVER_ABC] 127 | 128 | Bindings = ETHAT2 129 | 130 | 131 | 132 | NDIS DEVICE DRIVER SUPPORT FOR TWO ADAPTERS 133 | ------------------------------------------- 134 | 135 | When two NE2000PLUS Adapters are installed in the same system, there 136 | must be two DEVICE= statements in CONFIG.SYS and two NDIS device driver 137 | sections in PROTOCOL.INI. An example follows: 138 | 139 | 140 | CONFIG.SYS: DEVICE=C:\..path..\ETHAT2.OS2 141 | DEVICE=C:\..path..\ETHAT2.OS2 142 | 143 | 144 | 145 | PROTOCOL.INI: [ETHAT2_NIF] 146 | 147 | Drivername = ETHAT20$ 148 | 149 | IOBase = 0X300 150 | 151 | Interrupt = 3 152 | 153 | RAMAddress = 0XC0000 154 | 155 | 156 | 157 | [ETHAT2_2] 158 | 159 | Drivername = ETHAT21$ 160 | 161 | IOBase = 0X320 162 | 163 | Interrupt = 4 164 | 165 | 166 | [PROTOCOL_DRIVER_ABC] 167 | 168 | Bindings = IBMENI_MOD, ... , IBMENI2_MOD 169 | 170 | 171 | Note, in the second NDIS device driver section of PROTOCOL.INI above, 172 | the LAN Adapter for Ethernet is in programmed I/O mode since the 173 | RAMADDRESS= statement is absent. 174 | 175 | -------------------------------------------------------------------------------- /ne2000-add-drivers/NDISVINE.TXT: -------------------------------------------------------------------------------- 1 | NDIS DEVICE DRIVER INSTALLATION 2 | ------------------------------- 3 | 4 | NOTE: Before installing the NDIS drivers, please make a note of the 5 | configuration of your NE2000PLUS adapter. Run the PLUSDIAG Utility to 6 | obtain the following information: 7 | 8 | A. Adapter Architecture : Programmed I/O or Shared Memory 9 | B. Port Address 10 | C. Interrupt setting 11 | 12 | NOTE: The NDIS Drivers only support 286 or higher machines. 13 | 14 | Banyan VINES 15 | ------------ 16 | 17 | Installation Instructions: 18 | 1) Create a subdirectory called VINES. 19 | 2) Change to the VINES subdirectory. 20 | 3) Place the VINES(R) LAN S/W (DOS) NO:INSTALL Diskette into drive 21 | A or B. 22 | 4) Type: COPY drive:*.* and press ENTER. 23 | drive = The floppy drive which contains the VINES Diskette, A or B. 24 | 5) Place the VINES(R) LAN S/W (DOS) NO: 2 OF 2 Diskette into drive 25 | A or B. 26 | 6) Type: Copy drive:\NDIS\*.* and press ENTER. 27 | drive = The floppy drive which contains the VINES Diskette, A or B. 28 | 7) Place the NSC Additional Drivers Diskette into drive A or B. 29 | 8) Type: COPY drive:\MSLANMAN.DOS\DRIVERS\ETHERNET\ATLANTIC\*.* and 30 | press ENTER. This will copy the ETHAT2.DOS NDIS and PROTOCOL.INI 31 | files to your VINES subdirectory. 32 | 9) Run Banyan's PCCONFIG.EXE program and configure the Banyan software 33 | to talk with the NDIS driver being used. 34 | -Select option 1 in PCCONFIG. 35 | -Page down the list and select NDIS ETHERNET. 36 | -Set the proper interrupt value. This value should correspond 37 | with the interrupt that the NIC was configured to. 38 | -Type ETHAT2 as the section header name of the NDIS driver. 39 | -Press F10 to save the configuration. Press ESC to return to 40 | the main menu. 41 | -Select option 2, LOGIN ENVIRONMENT SETTINGS. 42 | -Select option 1, SELECT DEFAULT COMMUNICATIONS DRIVER. 43 | -Page down the list and select NDIS ETHERNET. 44 | -Press ESC to return to the main menu. 45 | -Press F10 to save your configuration and exit. 46 | 10) Edit the PROTOCOL.INI and add the header name as shown below. 47 | 11) Edit the CONFIG.SYS and add the lines listed below. 48 | 12) Reboot the machine. 49 | 13) Change to the VINES subdirectory and run the BAN.EXE command. Be sure 50 | you are attached to the same network as a VINES server. 51 | 14) The Banyan login prompt should come up signifying a successful 52 | connection has been established. 53 | 54 | +++++++ CONFIG.SYS +++++++ (Only network related files are shown) 55 | DEVICE=C:\VINES\protman.dos /i:C:\VINES 56 | DEVICE=C:\VINES\ethat2.dos 57 | 58 | +++++++ PROTOCOL.INI +++++++ 59 | [ETHAT2] 60 | DriverName=ETHAT20$ 61 | IOBASE = 0x300 62 | INTERRUPT = 3 63 | ; RAMADDRESS = 0xD0000 64 | ; RAM address is only used in shared memory mode. 65 | ; If the RAM address is included the driver will assume shared memory mode. 66 | ; The RAM address is entered as the physical address 67 | ; e.g. 0xd0000 is equivalent to 0xd000:0000 in segment:offset format 68 | 69 | -------------------------------------------------------------------------------- /ne2000-add-drivers/NDISWIN.TXT: -------------------------------------------------------------------------------- 1 | 2 | NDIS DEVICE DRIVER INSTALLATION 3 | ------------------------------- 4 | 5 | NOTE: Before installing the NDIS drivers, please make a note of the 6 | configuration of your NE2000Plus adapter. Run the PLUSDIAG Utility to 7 | obtain the following information: 8 | 9 | A. Adapter Architecture : Programmed I/O or Shared Memory 10 | B. Port Address 11 | C. Interrupt setting 12 | 13 | 14 | NOTE: The NDIS Drivers supports only 286 or higher machines. 15 | 16 | Windows for Workgroups 17 | ---------------------- 18 | 19 | To install the driver during installation of the Windows for Workgroups 20 | Operating system or when upgrading to Windows for Workgroups from 21 | Windows, use the follow instructions: 22 | 23 | 24 | 1. Follow the procedure outlined in the Microsoft Windows For 25 | Workgroups Manual for starting Setup. 26 | 27 | 2. When Setup prompts you to Select New Network Adapter, choose 28 | "Unlisted or updated Network Adapter" and press ENTER or click 29 | OK. 30 | 31 | 3. Setup will prompt you to insert the diskette which contains the 32 | NDIS driver for the new adapter. Insert the NE2000Plus Additional 33 | Drivers diskette and press ENTER or Click OK. 34 | 35 | 4. Setup will display the network adapter driver to be installed, 36 | National Semiconductor InfoMover NE2000Plus. Press ENTER or Click OK. 37 | (When prompted for which disk drive contains your InfoMover Diskette, 38 | enter the drive designator without the backslash. For Example, enter 39 | A: instead of A:\.) 40 | 41 | 5. When prompted for the disk containing the new PROTMAN.DOS, insert 42 | your Windows For Workgroups Disk #8 into drive A and press ENTER 43 | or Click OK. 44 | 45 | 6. Setup will then prompt you to insert the disk with the updated or 46 | vendor-provided ETHAT2.DOS driver. Place the NE2000Plus Additional 47 | Drivers Disk into drive A and press ENTER or click OK. 48 | 49 | 7. Insert the Windows For Workgroups Disk #8 into drive A and press 50 | ENTER or click OK. 51 | 52 | 8. Setup now prompts you for the NE2000Plus adapter configuration. If the 53 | adapter is configured for the default settings (I/O Mode, 300h, 3) 54 | press ENTER or click OK. If the adapter is not using the default 55 | settings, change each option shown to reflect the settings for 56 | your adapter. 57 | 58 | NOTE: When using Shared Memory Mode, you must configure the Memory 59 | manager you are using to exclude the 16k block used by the 60 | NE2000Plus adapter. For example, if you used the default Shared 61 | Memory Address, you must exclude D000-D3FF. The parameter 62 | EMMExclude=D000-D3FF should be added to the SYSTEM.INI in the 63 | [386Enh] section. The user must manually edit the PROTOCOL.INI 64 | located in the Windows directory and add the 65 | RAMADDRESS= statement. See the NDIS Driver Configuration section 66 | for more details. 67 | 68 | 9. The NE2000Plus installation is complete. Follow the instructions 69 | displayed by Setup to complete your Windows For Workgroups 70 | installation. 71 | 72 | 73 | To install the driver once the operating system is already installed: 74 | -------------------------------------------------------------------- 75 | 76 | 1. Choose "Network" under the Control Panel. 77 | 78 | 2. If you have a network installed other than Windows For Workgroups, 79 | i.e. Novell Netware, LAN Manager, etc., you must remove the network 80 | option first before Windows will allow you to remove the driver. 81 | Choose "NETWORKS" from the Network Settings screen and remove the 82 | network. 83 | 84 | 3. Return to the Network Settings screen and select "ADAPTERS". When 85 | the next screen appears, select "REMOVE" to remove the currently 86 | installed driver. 87 | 88 | 4. After the driver has been removed, select "ADD" to install a new 89 | driver. 90 | 91 | 5. When Setup prompts you to select a new network adapter, choose 92 | "Unlisted or updated Network Adapter" and press ENTER or click 93 | OK. 94 | 95 | 6. Setup will prompt you to insert the diskette which contains the 96 | NDIS driver for the new adapter. Insert the NE2000Plus Additional 97 | Drivers diskette into drive A and press ENTER or Click OK. 98 | 99 | 7. Setup will display the network adapter to be installed, National 100 | Semiconductor NE2000Plus. Press ENTER or Click OK. 101 | 102 | 8. Setup now prompts you for the NE2000Plus adapter configuration. If the 103 | adapter is configured for the default settings (I/O Mode, 300h, 3) 104 | press ENTER or click OK. If the adapter is not using the default 105 | settings, change each option shown to reflect the settings for 106 | your adapter. 107 | 108 | NOTE: When using Shared Memory Mode, you must configure the Memory 109 | manager you are using to exclude the 16k block used by the 110 | NE2000Plus adapter. For example, if you used the default Shared 111 | Memory Address, you must exclude D000-D3FF. The user must 112 | manually edit the PROTOCOL.INI located in the Windows 113 | directory and add the RAMADDRESS= statement. See the NDIS 114 | Device Driver Configuration section for more details. 115 | 116 | 9. Choose "CLOSE" to save the new configuration. 117 | 118 | 10. Choose "NETWORKS" and re-enable the network you are using. 119 | 120 | 11. When asked if you want to install new network drivers to replace 121 | the ones currently installed, select "NO" and press ENTER or 122 | click OK. 123 | 124 | 12. Press ENTER or click OK. 125 | 126 | 13. Press ENTER or click OK to close the Network Settings screen. 127 | 128 | 14. Choose "RESTART COMPUTER" to allow Windows to save your information 129 | before rebooting the system. A system reboot is needed to allow the 130 | new drivers to load. 131 | 132 | 15. Installation complete. 133 | 134 | 135 | ----------------------------------------------------------------------------- 136 | 137 | 138 | NDIS DEVICE DRIVER CONFIGURATION 139 | -------------------------------- 140 | 141 | The I/O base address and interrupt level can be configured on the LAN 142 | Adapter for Ethernet using the PLUSDIAG.EXE program supplied on the Driver 143 | diskette. The NDIS device driver must be configured to match the adapter's 144 | configuration. The NDIS device driver can be configured manually by 145 | editing the PROTOCOL.INI file. A detailed description of the configurable 146 | parameters follows: 147 | 148 | 149 | IOBASE = This parameter specifies the adapter I/O Base address that will 150 | be used by the device driver to access the adapter registers. 151 | The value entered must be one of 240h, 280h, 2C0h, 300h, 320h, 340h 152 | or 360h. The default is 300. 153 | 154 | EXAMPLE: IOBASE = 0x300 155 | 156 | INTERRUPT = This parameter specifies the interrupt level used for 157 | notifications between the workstation and the network 158 | adapter card. Ensure that no conflicts exist between 159 | the various system components in their use of interrupts. 160 | The value entered must be one of 2, 3, 4, 5, 10, 11, 12, or 15. 161 | The default value is 3. 162 | 163 | EXAMPLE: INTERRUPT = 3 164 | 165 | RAMADDRESS = This parameter specifies the physical location of the 166 | adapter in the memory of the computer. The specified 167 | location must not conflict with that of any other adapter 168 | installed in the workstation or with an address that is 169 | used by a memory manager. The value entered must be a 170 | hexadecimal number between C0000 and D0000 and must be a 171 | multiple of 4000. The default address is D0000. 172 | 173 | EXAMPLE: RAMADDRESS = D0000 174 | 175 | 176 | Note: The NDIS device driver anticipates the mode of the adapter, 177 | either programmed I/O or shared memory, by the presence of the 178 | RAMADDRESS= statement in PROTOCOL.INI. If the RAMADDRESS= 179 | statement is specified, it is assumed that the adapter is in 180 | shared memory mode. If the RAMADDRESS= statement is not specified, 181 | it is assumed that the adapter is in programmed I/O mode. If the 182 | NDIS device driver is configured for the wrong adapter mode, an 183 | error message will be displayed during system initialization. 184 | 185 | 186 | 187 | The NDIS device driver section of PROTOCOL.INI can be created manually. 188 | An example of a PROTOCOL.INI section for the NDIS device driver follows. 189 | 190 | 191 | [ETHAT2_NIF] 192 | 193 | Drivername = ETHAT20$ 194 | 195 | IOBase = 0X300 196 | 197 | Interrupt = 2 198 | 199 | RAMAddress = 0XC0000 200 | 201 | 202 | 203 | Finally, the desired protocol driver(s) must be "bound" to the NDIS 204 | device driver by manually editing the BINDINGS= statement of those 205 | protocol drivers. An example follows: 206 | 207 | 208 | [PROTOCOL_DRIVER_ABC] 209 | 210 | Bindings = ETHAT2 211 | 212 | 213 | 214 | NDIS DEVICE DRIVER SUPPORT FOR TWO ADAPTERS 215 | ------------------------------------------- 216 | 217 | When two NE2000Plus Adapters are installed in the same system, there 218 | must be two DEVICE= statements in CONFIG.SYS and two NDIS device driver 219 | sections in PROTOCOL.INI. An example follows: 220 | 221 | 222 | CONFIG.SYS: DEVICE=C:\..path..\ETHAT2.OS2 223 | DEVICE=C:\..path..\ETHAT2.OS2 224 | 225 | 226 | 227 | PROTOCOL.INI: [ETHAT2_NIF] 228 | 229 | Drivername = ETHAT20$ 230 | 231 | IOBase = 0X300 232 | 233 | Interrupt = 3 234 | 235 | RAMAddress = 0XC0000 236 | 237 | 238 | 239 | [ETHAT2_2] 240 | 241 | Drivername = ETHAT21$ 242 | 243 | IOBase = 0X320 244 | 245 | Interrupt = 4 246 | 247 | 248 | [PROTOCOL_DRIVER_ABC] 249 | 250 | Bindings = IBMENI_MOD, ... , IBMENI2_MOD 251 | 252 | 253 | Note, in the second NDIS device driver section of PROTOCOL.INI above, 254 | the LAN Adapter for Ethernet is in programmed I/O mode since the 255 | RAMADDRESS= statement is absent. 256 | 257 | 258 | -------------------------------------------------------------------------------- /ne2000-add-drivers/NETBIOS.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeokm1/ne2000plus-collection/3c81e2f6f3481a259e5e9394d88fc870f24747d7/ne2000-add-drivers/NETBIOS.EXE -------------------------------------------------------------------------------- /ne2000-add-drivers/NETBIOS.TXT: -------------------------------------------------------------------------------- 1 | 2 | NETBIOS for the National Semiconductor Corporation Ethernet Adapters 3 | -------------------------------------------------------------------- 4 | 5 | NOTE: Before installing the NETBIOS driver, please make a note of the 6 | configuration of your NE2000PLUS adapter. Run the PLUSDIAG Utility to 7 | obtain the following information: 8 | 9 | A. Adapter Architecture : Programmed I/O or Shared Memory 10 | B. Port Address 11 | C. Interrupt setting 12 | 13 | NOTE: This driver works only in Programmed I/O Mode. DO NOT configure 14 | the adapter for Shared Memory Mode. 15 | 16 | 17 | INSTALLATION: 18 | ------------ 19 | 20 | To Install the NETBIOS using the accompanying INSTALL.BAT: 21 | Change drives to the appropriate drive containing this diskette. This 22 | may be either A: or B:. Then change the directories to the \NETBIOS 23 | directory. 24 | At the DOS prompt, type "install d" and press where d is the 25 | destination drive. For example, to install from drive B: to drive C:, 26 | type "install c" and press return. This will copy the NETBIOS.EXE file 27 | to the root directory of drive C:. 28 | 29 | To Install the NETBIOS without using the accompanying INSTALL.BAT: 30 | Change drives to the drive from which the NETBIOS will be executed. 31 | Using the DOS COPY command, copy NETBIOS.EXE from the diskette to the 32 | root directory on drive C:. For example, if the diskette is in drive A: 33 | and NETBIOS.EXE will be executed from drive C:, you would perform the 34 | following steps: 35 | c: 36 | copy a:\netbios\netbios.exe c:\netbios.exe 37 | 38 | COMPATIBILITY: 39 | ------------- 40 | 41 | This NETBIOS will work on the NATIONAL SEMICONDUCTOR's Ethernet Adapters. 42 | NETBIOSes from different manufacturers may not be compatible with this 43 | NETBIOS. The NETBIOS provided by National Semiconductor is compatible 44 | with NETBIOSes provided by Performance Technology, Inc. In addition, 45 | interoperable NETBIOSes for both XENIX and OS/2 are available for 46 | NATIONAL SEMICONDUCTOR's Ethernet Adapter. 47 | 48 | For more information regarding other NETBIOSes, contact Performance 49 | Technology at (512)349-2000. 50 | 51 | OPTIONS: 52 | ------- 53 | 54 | Usage: NETBIOS