Not sure about the writing problem.

The errors.
Open SDFS and about 70 lines down it has the errors listed. #2 is "card not present", #63 I do not see.

But, to get around the problem I have this in my "SDINIT" routine.
Code:
IF (FAT_error = 6) THEN SD_MAIN
Here is a snippet from my code template.
Code:
'###############################################
 SD_MAIN:
    TOGGLE PORTD.7
    GOSUB SDINIT
    GOSUB SDFILENAME
    GOSUB SDOPEN_W
    GOSUB SD_WRITE
    GOSUB SDCLOSE
 RETURN      '##############################################################
SDINIT:
' FSInit initializes the card and reads all the preliminary information from it
Gosub FSInit
Serout2 PORTC.6, 16572, ["Init: ", Dec FAT_error, " ", Dec SDC_status, " ", Dec SDC_response, $d, $a]
    IF (FAT_error = 6) THEN SD_MAIN
    If (FAT_error != 0) Then Stop
    ' Display card directory
    Gosub FINDfirst        ' Find first file on card
    While (FAT_error = 0)
        Serout2 PORTC.6,16572, [Str FAT_FileName\11, $d, $a]
        Gosub FINDnext    ' Find next file on card
    Wend
    RETURN
 '################################################################