Aren't ports automatically set to required state by apropriate statement, when needed?

Anyways, found another code that worked:

Code:
' Program 25LC640.BAS
' *************************************************************
' * For use with EXPERIMENTING WITH THE PICBASIC PRO COMPILER *
' *							      *
' *  This source code may be freely used within your own      *
' *  programs. However, if it is used for profitable reasons, *
' *        please give credit where credit is due.	      *
' *  And make a reference to myself or Rosetta Technologies   *
' *							      *
' *			Les. Johnson			      *
' *************************************************************
'
' Write to the first 11 locations of a MICROCHIP 25LC640 SPI serial eeprom
' Then Read the 11 locations back and display them on a serial LCD
' The configuration is 8192 words x 8-bits

' To WRITE to the eeprom:-
' The 16-bit address is loaded into the variable "ADDR"
' The byte to write is loaded into the variable "E_BYTEOUT"
' And a call is made to the subroutine "EWRITE"

' To READ from the eeprom:-
' The 16-bit address is loaded into the variable "ADDR"
' And a call is made to the subroutine "EREAD"
' The byte at the specified address is returned in the variable "E_BYTEIN"

	Include "Modedefs.Bas"

' ** Setup the Crystal Frequency, in Mhz **

	Define 	OSC		4		' Set Xtal Frequency

' ** Set Debug Defines **

	Define	DEBUG_REG	PortA		' Debug PORT ?
	Define	DEBUG_BIT	0		' *** Debug pin Bit ? ***
	Define	DEBUG_BAUD	9600		' *** Debug Baud Rate ***
	Define	DEBUG_MODE	1		' Set Serial Mode 1=Inverted
	Define	DEBUG_PACING	300		' Delay 'in uS' between characters sent

' ** Define LCD Constants **

	I		Con	254		' Control Byte
	Clr		Con	1		' Clear the display
	Line1		Con	128		' Point to beginning of line 1
	Line2		Con	192		' Point to beginning of line 2
	Line3		Con	148		' Point to beginning of line 3
	Line4		Con	212		' Point to beginning of line 4

' ** Define the Pin assignments **
	CS      	Var     PortB.0         ' Chip select pin
	SCK     	Var     PortB.1         ' Clock pin
	SI      	Var     PortB.2         ' Data in pin
	SO      	Var     PortB.2         ' Data out pin

' ** Declare the Variables **
	Addr    	var     Word            ' Memory address within the eeprom (0-511)
	E_Byteout	Var	Byte		' Byte to be placed into the eeprom
	E_Bytein	Var	Byte		' Byte read from the eeprom

' ** Define the eeprom's op-codes **
	WRSR		Con	1		' Write to STATUS REGISTER op-code
	EWR		Con	2		' WRITE op-code 
	ERD		Con	3		' READ op-code 
	WRDI		Con	4		' DISABLE WRITES op-code
	RDSR		Con	5		' Read the STATUS REGISTER op-code
	EWEN		Con	6		' ENABLE WRITES op-code 

' ** THE MAIN PROGRAM STARTS HERE **

' Write the string, "HELLO WORLD" into the first 11 address's of the Eeprom

        For Addr=0 To 10                	' Create a loop of 11
	Lookup Addr,["H","E","L","L","O"," ","W","O","R","L","D"],E_ByteOut' Build up the string
	Gosub EWrite				' Write the byte to the Eeprom
        Next					' Close the Loop

' Read the first 11 address's within the Eeprom and display them on the LCD

Again:  Debug I,Clr:Pause 30			' Clear the LCD
	Pause 500				' Pause for drama
	For Addr=0 To 10        		' Create a loop of 11
	Gosub ERead				' Read the byte from the Eeprom
        Debug E_ByteIn  			' Display the characters read in from the eeprom
	Pause 300				' Pause between characters being displayed
        Next					' Close the loop
        Goto Again				' Do it forever

' Read a single byte from the Eeprom
' The address is held in the variable "ADDR"
' The byte read is returned in the variable "E_BYTEIN"
Eread: 	Low CS                          	' Enable the eeprom
        Shiftout SI,SCK,MSBFIRST,[ERD,Addr.highbyte,Addr.lowbyte]' Send READ COMMAND and address
        Shiftin SO,SCK,MSBPRE,[E_Bytein]   	' Read data
        High CS                          	' Disable the eeprom
        Return

' Write a single byte to the Eeprom
' The address is held in the variable "ADDR"
' The byte to be written is held in the variable "E_BYTEOUT"
Ewrite: Low CS                         		' Enable the eeprom
        Shiftout SI,SCK,MSBFIRST,[EWEN]       	' Send WRITE ENABLE command
        High CS                          	' Disable the eeprom, to execute the command
        Low CS                          	' Re-enable the eeprom
        Shiftout SI,SCK,MSBFIRST,[EWR,Addr.highbyte,Addr.lowbyte,E_Byteout]' Send address and data
        High CS                          	' Disable the eeprom
	Pause 5                			' Allow the eeprom to allocate the byte
        Return