hey Ioannis,
here is my code that I have working. I am using my own RFEFX board which includes an RF. If you have any questions please don't hesitate to ask. after i cleaned up some of Jim's code, as I have a different platform, the lights kinda just went off in my head and it all became real easy. For Video Click Here (9MB File takes a min to load)

Code:
'****************************************************************
'*  Name    : ISD17XX.BAS                                       
'*  Authors : Jerson,Brenon,Jim,Gary                            
'****************************************************************

define OSC 20

Time1 var word          'these variables used for the Erase flash
Time2 var byte          'LEDS when the device is erased
                        'used in Label - FlashLED:
time1 = 5000
time2 = 50

'******************** DEFINE VARIABLES ***********************

temp_bit    VAR BIT

temp		VAR BYTE
spi_cnt 	var byte	' counter for SPI transfer
bSPI 		var byte 	' the byte being transferred on SPI

s_addr		VAR WORD	' Start Address
e_addr		VAR WORD	' End Address

ISD_Data 	var byte[7]	' This array contains data to/from ISD

SR0a 		var ISD_Data[0]
SR0b 		var ISD_Data[1]
SR1 		var ISD_Data[2]    ' only valid after ReadStatus

isCmdErr 	var SR0a.0	' 1=previous command failed/ignored
isFull 		var SR0a.1	' 1=memory full
isPU		var SR0a.2	' 1=ISD powered up
isEOM		VAR SR0a.3	' 1=EOM detected (clear by CLR_INT command)
isINT 		var SR0a.4	' 1=current operation completed (clear by CLR_INT command)

isReady 	var SR1.0	' 1=Ready to receive SPI command (only valid after ReadStatus)
				        ' Some SPI commands can still be sent when isReady=0


'******************** PIN ASSIGNMENTS ************************

Symbol miso		= PORTC.5			'ISD1760 SPI MISO 
Symbol LED1	    = PORTA.5			'  
Symbol LED2	    = PORTA.0			'
Symbol ss		= PORTC.7			'ISD1760 SLAVE SELECT  
Symbol sclk		= PORTC.4			'ISD1760 SPI CLOCK 
Symbol mosi 	= PORTC.6         	'ISD1760 SPI MOSI	

'******************** INITIALIZATION *************************
initialize:

  ' Im using a PIC 16F876A with an external 20 MHZ clock
  ' there is really little setup. 

    	
	HIGH ss			'start with Slave Select HIGH
	HIGH sclk		'start with SPI Clock HIGH
	LOW  MOSI		'start with MOSI LOW
	
	LOW LED1
	LOW led2
	
	
start:                       'Initialize the ISD
	GoSub isd_pu
	PAUSE 50		         '50 mS Power Up Delay (per datasheet)
	
       'I removed the APC because it doesn't work on my Audio Board 
    
	PAUSE 10
	GoSub isd_clr_int	     'clear interrupt and EOM
	
	gosub erase              'this will erase the ISD chip whenever
	                         'I reprogram my PIC
	
	

'********************* MAIN PROGRAM **************************

main_loop:	'(MAIN PROGRAM LOOP)
     
    PAUSE 2000
    
RecordLoop:                       'Here is my board waiting for me to 
    if portc.3 = 1 then Record       'push the record button
    goto recordLoop
    
Record:

    high led1                   'a record LED
    
    if portc.3 = 1 then record  'it will not continue until i 
                                   'release the button
    
    s_addr = $010               'a 1 second clip takes approx 16 rows of 
    e_addr = $01f               'memory space $010-$01F = 16
    
    GOSUB isd_set_rec           'this Set_rec identical to set_play
                                'was added so i could record a message
                                
    
    PAUSE 2000    
    
    GOSUB isd_stop              ' an immediate stop to stop recording
    
    low led1                    ' turn record LED off
      

Playloop:                       'the same button then becomes a play button
    'pause 2000
    if portc.3 = 1 then play
    goto playloop

Play:
    high led2                   'a different LED for play
    
    if portc.3 = 1 then play    'wont play until button is released 
    
    s_addr = $010               'playing back from the same 16 rows
    e_addr = $01f
    
    GOSUB isd_set_play

    PAUSE 2000
    
    GOSUB isd_stop
       
    low led2
    
Eraseloop:                       
    'pause 2000                  
    if portc.3 = 1 then play     'in this loop you can either play the sound
    if portc.5 = 1 then erase    'again or erase it and record another one
    goto Eraseloop               'two different buttons are used

Erase:                           'this is the erase subroutine which is also 
    if portc.5 = 1 then erase    'called at the beginning of this program
    s_addr = $010                'this is not a Gang erase so the Start and
    e_addr = $01f                'End address must be present or you will get
    GOSUB isd_set_erase          'a command error
    
    gosub flashLED               'when i erase the chip a series of LEDS
                                 'are flased to indicate an erase.
    pause 1000
                
    goto recordloop              'after an erase it goes back to record loop
    
    

'********************** SUBROUTINES **************************
isd_pu:				
	LOW ss

	bSPI=$01		'Power Up Command
	GoSub isd_spi
	ISD_Data[0] = bSPI 	'SR0a

	bSPI=$00
	GoSub isd_spi
	ISD_Data[1] = bSPI 	'SR0b

	HIGH ss

	RETURN

'--------------------------------------------------------------------------
isd_wait_ready:
	GOSUB isd_rd_status
	IF isReady = 0 THEN isd_wait_ready
	RETURN

'--------------------------------------------------------------------------
isd_set_play:
	LOW ss

	bSPI = $80		'Set Play Command (7 bytes)
	GoSub isd_spi
	ISD_Data[0] = bSPI	'SR0a

	bSPI = $00 
	GoSub isd_spi
	ISD_Data[1] = bSPI 	'SR0b

	bSPI = s_addr.LowByte 	' Start Address low byte. 
	GoSub isd_spi
	ISD_Data[2] = bSPI	'SR0a

	bSPI = s_addr.HighByte 	' Start Address high byte 
	GoSub isd_spi
	ISD_Data[3] = bSPI 	'SR0b

	bSPI = e_addr.LowByte 	' End Address low byte 
	GoSub isd_spi
	ISD_Data[4] = bSPI 	'SR0a

	bSPI = e_addr.HighByte 	' End Address high byte
	GoSub isd_spi
	ISD_Data[5] = bSPI 	'SR0b

	bSPI = $00		' Reserved Address - set to "0"
	GoSub isd_spi
	ISD_Data[6] = bSPI 	'SR0a

	HIGH ss

	RETURN
	
'--------------------------------------------------------------------------
isd_Set_Erase:
	LOW ss

	bSPI = $82		           'Set Erase Command (7 bytes)
	GoSub isd_spi
	ISD_Data[0] = bSPI	        SR0a

	bSPI = $00 
	GoSub isd_spi
	ISD_Data[1] = bSPI 	       'SR0b

	bSPI = s_addr.LowByte 	   'Start Address low byte. 
	GoSub isd_spi
	ISD_Data[2] = bSPI	       'SR0a

	bSPI = s_addr.HighByte 	   'Start Address high byte 
	GoSub isd_spi
	ISD_Data[3] = bSPI 	       'SR0b

	bSPI = e_addr.LowByte 	   'End Address low byte 
	GoSub isd_spi
	ISD_Data[4] = bSPI 	       'SR0a

	bSPI = e_addr.HighByte 	   'End Address high byte
	GoSub isd_spi
	ISD_Data[5] = bSPI 	       'SR0b

	bSPI = $00		           'Reserved Address - set to "0"
	GoSub isd_spi
	ISD_Data[6] = bSPI 	       'SR0a

	HIGH ss

	RETURN
	
'--------------------------------------------------------------------------
isd_set_rec:
	LOW ss

	bSPI = $81		           'Set Record Command (7 bytes)
	GoSub isd_spi
	ISD_Data[0] = bSPI	       'SR0a

	bSPI = $00 
	GoSub isd_spi
	ISD_Data[1] = bSPI 	       'SR0b

	bSPI = s_addr.LowByte 	   'Start Address low byte. 
	GoSub isd_spi
	ISD_Data[2] = bSPI	       'SR0a

	bSPI = s_addr.HighByte 	   'Start Address high byte 
	GoSub isd_spi
	ISD_Data[3] = bSPI 	       'SR0b

	bSPI = e_addr.LowByte 	   'End Address low byte 
	GoSub isd_spi
	ISD_Data[4] = bSPI 	       'SR0a

	bSPI = e_addr.HighByte 	   'End Address high byte
	GoSub isd_spi
	ISD_Data[5] = bSPI 	       'SR0b

	bSPI = $00		           'Reserved Address - set to "0"
	GoSub isd_spi
	ISD_Data[6] = bSPI 	       'SR0a

	HIGH ss

	RETURN

'--------------------------------------------------------------------------
isd_spi:				        ' shift SPI data out and into SPI byte 
	FOR spi_cnt = 0 to 7        '
		MOSI = bSPI.0 		    ' shift LSB of byte onto MOSI line
		LOW SCLK 		        ' clock MISO data out to uC (Falling Edge)
		temp_bit = miso         '
		HIGH SCLK		        ' clock MOSI into ISD1700 (Rising Edge)
		bSPI = bSPI >> 1 		' shift SPI byte Right
		bSPI.7 = temp_bit
	NEXT spi_cnt

	RETURN

'--------------------------------------------------------------------------
isd_clr_int:					' CLEAR INTERRUPT AND EOM BITS
	LOW SS
	
	bSPI=$04		            'Clear Interrupt Command
	gosub isd_spi
	ISD_Data[0] = bSPI 	        'SR0a

	bSPI=$00
	gosub isd_spi
	ISD_Data[1] = bSPI 	        'SR0b

	HIGH SS

	RETURN

'--------------------------------------------------------------------------
isd_stop:					 ' Stop Immediately
	LOW ss

	bSPI=$02		         'Stop Command
	gosub isd_spi
	ISD_Data[0] = bSPI 	     'SR0a

	bSPI=$00
	gosub isd_spi
	ISD_Data[1] = bSPI 	     'SR0b

	HIGH ss

	RETURN

'--------------------------------------------------------------------------
isd_rd_status:				'read status of ISD1700 
	LOW ss                  '

	bSPI=$05		        'Read Status Command
	gosub isd_spi
	ISD_Data[0] = bSPI	    'SR0a

	bSPI=$00
	gosub isd_spi
	ISD_Data[1] = bSPI	    'SR0b

	bSPI=$00
	gosub isd_spi
	ISD_Data[2] = bSPI	    'SR1

	HIGH ss

	RETURN

'*********** Erase Indicators ********************************
FlashLED:
    pulsout porta.5,time1
    pause time2
    pulsout porta.3,time1
    pause time2
    pulsout porta.2,time1
    pause time2
    pulsout porta.1,time1
    pause time2
    pulsout porta.0,time1
    pause time2
    low porta.0
return   

End