Comment = Compiled LIB file, no comment included

copyright   = Josef Franz Vögel
www         = http://members.aon.at/voegel or  http://www.mcselec.com
comment     = AVR-DOS compiler library
libversion  = 5.5
date        = 13 February 2006
statement   = No SOURCE code from the library may be distributed in any form unless you have permission
statement   = from the author
History     = No known bugs
History     = Version 5.5
History     = - bug in MKDIR fixed (restoring SW-Stack (Y) Pointer)
History     = Version 5.4 (needs BASCOM-AVR 1.11.8.1 or higher)
History     = - Support for Option "Config Clock = User" implemented
History     =   _GetDateTime is called in Date-Time related functions CreateFile, MKDir, Close and
History     =   Flush if USERCLOCK=1 to refresh the date/time variable _sec, _min, _hour, _day, _month,
History     =   _year
History     = - If no CLOCK is implemented (SOFT or USER) default value 2001-01-01 01:00:00 is used
History     =   BASCOM-AVR Version 1.11.8.1 is needed for this feature
History     = - New Parameter cFATSecondUpdate to increase Write speed to the card. Suppressing the
History     =   updating of the FAT Copy on the drive reduces the worst case delay time of AVR-DOS if
History     =   a FAT-Sector is full (f.E.: after 500kB of a 128MB Card/FAT16) and a new FAT-Sector has
History     =   to be loaded.
History     = - New Parameter cVariableSeparator: Normally a Comma is used to separate variables
History     =   written with WRITE and read with INPUT. This new parameter allow other characters like
History     =   TAB for EXCEL TAB separated files
History     = Version 5.3
History     = - Bug fixed in _GetFileSystem, FAT Type was sometimes wrong reported
History     =   if T-Flag was changed in mass-Storage Driver (CF,HD,SD,MMC) at reading
History     =   the PBR sector
History     = Version 5.2
History     = - Bug fixed in the NAME (renaming a file) routine: _FileReName
History     = Version 5.1
History     = - Added Create Date/Time to directory entry of file name and Sub-Directories
History     = - read and write of Double variable in ASCII and Binary mode
History     = Version 5.0
History     = - Update with directory and FAT32 support
History     = Version 4.2
History     = - Added FAT16 Type with signature 0E
History     = Version 4.1
History     = - fixed bug in _SaveFileSector routine, which corrupted at Close/Flush
History     =   Byte 504 - 507 in FAT-Sector
History     = Version 4
History     = - added parameter for "lazy" saving FAT and Directory information, please check
History     =   configuration of Config_AVR-DOS.BAS. It reduced write frequency of FAT and Directory
History     =   Sector, and increases writing speed of data
History     = Version 3
History     = - fixed bug in _DriveReadSector_SEV and _DriveWriteSector_SEV
History     = Version 2:
History     = - added parameter 0 for _GetFileSystem is ignoring MBR and loads PBR at sector 0 for
History     =   disks without a master boot record (MBR)
History     = - added Check for valid Sectors per Cluster in _GetFileSystem
History     = - bug fixed for Reading in binary mode
[_AVRDOSVER]
_AVRDOSVer:
.OBJ E306
.OBJ 9508
[END]
[_ClearFileSystem]
_ClearFileSystem:
   loadadr gbDOSError , Z
 * ldi r26 , lbyte(c_FileSystemSRAMSize)
 * ldi r27 , hbyte(c_FileSystemSRAMSize)
.OBJ 2799
_ClearFileSystem1:
.OBJ 9391
.OBJ 9711
   brne _ClearFileSystem1
.OBJ 9508
[end]
[_CheckFileSystemType]
$EXTERNAL _SetDOSError
_CheckFileSystemType:
.OBJ 94E8
.OBJ 3084
   breq _CheckFileSystemType8
.OBJ 3086
   breq _CheckFileSystemType8
.OBJ 3080
   breq _CheckFileSystemType8
.OBJ 9468
.OBJ 308B
   breq _CheckFileSystemType8
.OBJ 308C
   breq _CheckFileSystemType8
 * ldi r25 , cpFileSystemNotSupported
   rjmp _SetDOSError
_CheckFileSystemType8:
   lds r0, {gbFileSystemStatus}
 * bld r0, dFileSystemStatusFAT
   sts {gbFileSystemStatus}, r0
.OBJ 9488
.OBJ 9508
[end]
[_CheckBootSign]
$EXTERNAL _SetDOSError , _WordZ2B
_CheckBootSign:
   loadadr gbDirBuffer(511) , Z
   rcall _WordZ2B
.OBJ 5545
.OBJ 4A5A
   brne _CheckBootSign1
.OBJ 9508
_CheckBootSign1:
   rjmp _SetDOSError
[end]
[_GetFileSystem]
$EXTERNAL _A2LongX , _Add32_Word , _B2LongZ , _B2WordX , _CheckBootSign , _CheckFileSystemType
$EXTERNAL _ClearDOSError , _ClearFileSystem , _Cluster2Sector , _LongX2A , _LongX2B , _LongZ2A
$EXTERNAL _Mem_Copy , _Mov4A2B , _ReadDirSector , _Sector2Cluster , _SetDOSError , _ShiftR_WordB
$EXTERNAL _WordX2B , _WordZ2A , _WordZ2B
$EXTERNAL _SUB32
_GetFileSystem:
.OBJ 938A
   rcall _ClearFileSystem
   rcall _ReadDirSector
   brcs _GetFileSystemErrorExitY1
 * ldi r25 , cpNoMBR
   rcall _CheckBootSign
   brcs _GetFileSystemErrorExitY1
.OBJ 8188
.OBJ 2388
   breq _GetFileSystem5a
   loadAdr gbDirBuffer(447) , Z
_GetFileSystem1:
.OBJ 958A
   breq _GetFileSystem2
.OBJ 9670
   rjmp _GetFileSystem1
_GetFileSystem2:
.OBJ 8180
.OBJ 778F
   brne _GetFileSystem3
.OBJ 9634
.OBJ 8180
   rcall _CheckFileSystemType
   brcc _GetFileSystem4
_GetFileSystem3:
.OBJ 8188
.OBJ 3082
   brcs _GetFileSystem5a
 * ldi r25, cpFileSystemNotSupported
   rjmp _SetDOSError
_GetFileSystemErrorExitY1:
.OBJ 9621
   rjmp _SetDOSError
_GetFileSystem4:
   sts {gbFileSystem}, r24
.OBJ 9634
   loadadr glDirSectorNumber , X
   rcall _Mem_Copy_4
_GetFileSystem5:
   rcall _ReadDirSector
   brcs _GetFileSystem3
 * ldi r25 , cpNoPBR
   rcall _CheckBootSign
   brcs _GetFileSystemErrorExitY1
_GetFileSystem5a:
.OBJ 9189
   Loadadr gbDirBuffer(12) , Z
   rcall _WordZ2B
.OBJ 5040
.OBJ 4052
 * ldi r25 , cpSectorSizeNotSupported
   brne _GetFileSystemErrorExit
   loadadr gbDirBuffer(15) , X
   rcall _WordX2B
   loadAdr glDirSectorNumber , X
   rcall _LongX2A
   rcall _Add32_Word
   loadadr glFATFirstSector , X
   rcall _A2LongX
   loadadr gbDirBuffer(23) , X
   rcall _WordX2B_L
.OBJ 5040
.OBJ 4050
   brne _GetFileSystem7
_GetFileSystem6:
   loadadr gbDirBuffer(37) , X
   rcall _LongX2B
_GetFileSystem7:
   loadadr glSectorsPerFAT , Z
   rcall _B2LongZ
   lds r24, {gbDirBuffer+16}
   sts {gbNumberOfFATs}, r24
 * ldi r25 , cpCountOfClustersNotSupported
.OBJ 2388
   breq _GetFileSystemErrorExit
.OBJ 3083
   brcs _GetFileSystem7a
_GetFileSystemErrorExit:
   rjmp _SetDOSError
_GetFileSystem7a:
   rcall _Add32_r
.OBJ FD81
   rcall _Add32_r
   loadadr glRootFirstSector , X
   rcall _A2LongX
   loadadr gbDirBuffer(18) , X
   rcall _WordX2B
   loadadr gwRootEntries , X
   rcall _B2WordX
.OBJ E084
   rcall _ShiftR_WordB
   rcall _Add32_Word
   loadadr glDataFirstSector , X
   rcall _A2LongX
_GetFileSystem8:
   loadadr glDirSectorNumber , X
   rcall _LongX2B
   call _Sub32
   rcall _Mov4A2B
   loadadr gbDirBuffer(20) , Z
   rcall _WordZ2A_L
.OBJ 5000
.OBJ 4010
   brne _GetFileSystem9
   loadadr gbDirBuffer(33) , Z
   rcall _LongZ2A
_GetFileSystem9:
   Call _Sub32
   lds r24, {gbDirBuffer+13}
   sts {gbSectorsPerCluster}, r24
 * ldi r25 , cpSectorsPerClusterNotSupported
.OBJ 2388
   breq _GetFileSystemErrorExit
_GetFileSystem11:
.OBJ 9586
   brcc _GetFileSystem11
   brne _GetFileSystemErrorExit
   rcall _Sector2Cluster
   rcall _Add32_1
   loadadr glMaxClusterNumber , X
   rcall _A2LongX
   lds r0, {gbFileSystemStatus}
 * bst r0, dFileSystemStatusFAT
   lds r24, {gbFileSystem}
.OBJ 2388
   brne _GetFileSystem11a
.OBJ 94E8
.OBJ E086
.OBJ 5F0F
.OBJ 4F16
.OBJ 4020
.OBJ 4030
   brcs _GetFileSystem11b
.OBJ 9468
.OBJ E88B
_GetFileSystem11b:
   sts {gbFileSystem}, r24
.OBJ 2799
 * bld r25, dFileSystemStatusFAT
   sts {gbFileSystemStatus}, r25
_GetFileSystem11a:
   brtc _GetFileSystem12
   loadadr gbDirBuffer(45) , X
   rcall _LongX2A
   rcall _Cluster2Sector
   loadadr glRootFirstSector , X
   rcall _A2LongX
_GetFileSystem12:
.OBJ E082
   sts {glLastSearchedCluster}, r24
   loadadr glRootFirstSector , X
   rcall _LongX2A
   loadadr glDirFirstSectorNumber , X
   rcall _A2LongX
   loadadr glFreeDirSectorNumber , X
   rcall _A2LongX
   rjmp _ClearDOSError
[end]
[_SaveA2LongY]
_SaveA2LongY:
.OBJ 9724
_A2LongY:
.OBJ 8308
.OBJ 8319
.OBJ 832A
.OBJ 833B
.OBJ 9508
[end]
[_LongY2A]
_LongY2A:
.OBJ 8108
.OBJ 8119
.OBJ 812A
.OBJ 813B
.OBJ 9508
[end]
[_InitDirEntry]
$EXTERNAL _ClearDirEntry , _Mem_Copy , _SetDirFATWritePending , _SetDirTimeDate
_InitDirEntrySub:
.OBJ E180
_InitDirEntry:
.OBJ 93FF
.OBJ 93EF
.OBJ 6280
.OBJ 938F
   rcall _ClearDirEntry
.OBJ 918F
.OBJ 8783
.OBJ 8F02
.OBJ 8F13
.OBJ 8B24
.OBJ 8B35
.OBJ 2FAE
.OBJ 2FBF
   loadadr gsTempFileName , Z
.OBJ E08B
   rcall _Mem_copy
.OBJ 9613
   call _SetDirTimeDate
.OBJ 9614
   call _SetDirTimeDate
   rcall _SetDirWritePending
.OBJ 91EF
.OBJ 91FF
.OBJ 9508
[end]
[_MKDir]
$EXTERNAL _Check_Root , _ClearA , _ClearFileSector , _GetFreeCluster , _GetFreeDirEntry
$EXTERNAL _InitDirEntry , _LastCluster2FAT , _LongY2A , _NormFileName , _SaveA2LongY , _SaveSector_DIR
$EXTERNAL _SaveSector_FAT , _SearchDirEntry , _Sector2Cluster , _SetDOSError , _SetFileNameError
_MkDir:
   rcall _NormFileName
   breq _MkDir1
   rjmp _SetFileNameWildCardError0
_MkDir1:
   rcall _SearchDirEntry
   brcs _MkDir1a
 * ldi r25 , cpFileExists
   rjmp _SetDOSError
_MkDir1a:
   rcall _GetFreeCluster
   brcs _MkDir7
   rcall _LastCluster2FAT
   rcall _SaveA2LongY
   rcall _GetFreeDirEntry
   brcs _MkDir6
   rcall _LongY2A
   rcall _InitDirEntrySub
   rcall _LongY2A
   call _ClearDirCluster
   loadadr gsTempFileName , X
.OBJ E28E
.OBJ 938D
.OBJ E280
.OBJ E09A
_MkDir2:
.OBJ 938D
.OBJ 959A
   brne _MkDir2
   rcall _LongY2A
   rcall _InitDirEntrySub
.OBJ 93FF
.OBJ 93EF
   rcall _Check_Root
   breq _MkDir2a
   rcall _Sector2Cluster
   rjmp _MkDir2c
_MkDir2a:
   rcall _ClearA
_MKDir2c:
.OBJ E28E
   sts {gsTempFileName+1}, r24
.OBJ 91EF
.OBJ 91FF
.OBJ 96B0
   rcall _InitDirEntrySub
*#IF cSepFATHandle = 1
   call _SaveSector_FAT
   brcs _MkDir6
   call _SaveSector_Dir
*#ELSE
   call _SaveSector_FAT
*#ENDIF
_MkDir6:
 * in r24, SREG
.OBJ 9624
 * out SREG , r24
_MkDir7:
.OBJ 9508
[end]
[_Check_Root]
$EXTERNAL _LongX2A , _LongX2B
$EXTERNAL _COMP32
_Check_Root:
   loadadr glDirFirstSectorNumber , X
   rcall _LongX2A
   loadadr glRootFirstSector , X
   rcall _LongX2B
   jmp _Comp32
[end]
[_ChDir]
$EXTERNAL _A2LongX , _A2WordX , _CheckA_Zero , _ClearA , _ClearDOSError , _Cluster2Sector , _GetSector
$EXTERNAL _LongX2A , _NormFileName , _SearchDirEntry , _SetDOSError , _SetFileNameError
_ChDir:
.OBJ 918C
.OBJ 328E
   brne _ChDir4
_ChDir0:
   loadadr glDirFirstSectorNumber , X
   rcall _LongX2A
   rcall _GetSector_Dir
.OBJ 96B0
.OBJ 8180
.OBJ 328E
   brne _ChDir61
   lds r0, {gbFileSystemStatus}
 * bst r0, dFileSystemStatusFAT
.OBJ 2722
.OBJ 2733
.OBJ 8D02
.OBJ 8D13
   brtc _ChDir1
.OBJ 8924
.OBJ 8935
_ChDir1:
   rcall _CheckA_Zero
   brne _ChDir3
_ChDir2:
   loadadr glRootFirstSector , X
   rjmp _ChDir8
_ChDir3:
   rcall _Cluster2Sector
   rjmp _ChDir9
_ChDir4:
.OBJ 358C
   breq _ChDir2
_ChDir5:
   rcall _NormFileName
   breq _ChDir6
   rjmp _SetFileNameWildCardError0
_ChDir6:
   rcall _SearchDirEntry
   brcs _ChDir60
.OBJ 8583
.OBJ 7C8F
   brne _ChDir62
 * lds r0 , {gbFileSystemStatus}
.OBJ 2722
.OBJ 2733
.OBJ 8D02
.OBJ 8D13
 * sbrs r0 , dFileSystemStatusFAT
   rjmp _ChDir7
.OBJ 8924
.OBJ 8935
_ChDir7:
   rcall _Cluster2Sector
   rcall _GetSector_Dir
   brcs _ChDir60
   loadadr glDirSectorNumber , X
_ChDir8:
   rcall _LongX2A
_ChDir9:
   loadadr glDirFirstSectorNumber , X
   rcall _A2LongX
   loadadr glFreeDirSectorNumber , X
   rcall _A2LongX
   loadadr gwFreeDirEntry , X
   rcall _ClearA
   rcall _A2WordX
   rjmp _ClearDOSError
_ChDir60:
.OBJ 9508
_ChDir61:
 * ldi r25, cpSubDirectoryError
   rjmp _SetDOSError
_ChDir62:
 * ldi r25, cpNotASubDirectory
   rjmp _SetDOSError
[End]
[_RMDir]
$EXTERNAL _ChDir , _CleanHWStack , _DeleteFile , _NormFileName , _SearchDirEntry , _SetDOSError
_RMDir:
.OBJ 93BF
.OBJ 93AF
   rcall _ChDir5
   brcs _RMDir4
   loadadr gsTempFileName , X
.OBJ E38F
.OBJ E09B
_RmDir2:
.OBJ 938D
.OBJ 959A
   brne _RMDir2
   loadadr gsTempFileName , Z
   rcall _SearchDirEntry
.OBJ 939F
   rcall _ChDir0
   brcs _RMDir5
.OBJ 919F
.OBJ 2399
   breq _RMDir6
 * cpi r25, cpFileNotFound
   brne _RMDir4
.OBJ 91AF
.OBJ 91BF
   rcall _NormFileName
   rcall _SearchDirEntry
   brcs _RMDir9
   rjmp _DeleteFile8
_RMDir5:
   rjmp _CleanHWStack3
_RmDir6:
 * ldi r25, cpSubDirectoryNotEmpty
   rcall _SetDOSError
_RMDir4:
   rjmp _CleanHWStack2
_RMDir9:
.OBJ 9508
[end]
[_FileRename]
$EXTERNAL _ClearDOSError , _Mem_Copy , _NormFileName , _SaveSector_DIR , _SearchDirEntry
$EXTERNAL _SetDirFATWritePending , _SetDOSError , _SetFileNameError
_FileRename:
.OBJ 93FA
.OBJ 93EA
.OBJ 93BA
.OBJ 93AA
   rcall _Normfilename
   brne _FileReName5
   rcall _SearchDirEntry
 * ldi r25, cpFileExists
   brcc _FileReName6
.OBJ 81AA
.OBJ 81BB
   rcall _NormFileName
   brne _FileReName5
   rcall _SearchDirEntry
   brcs _FileReName6
.OBJ 93FF
.OBJ 93EF
.OBJ 81A8
.OBJ 81B9
   rcall _NormFileName
.OBJ 91AF
.OBJ 91BF
.OBJ E08B
   rcall _Mem_Copy
   rcall _SetDirWritePending
.OBJ 9624
   rcall _SaveSector_DIR
   rjmp _ClearDOSError
_FileReName5:
   rcall _SetFileNameWildCardError0
_FileReName6:
.OBJ 9624
_FileReName7:
   rjmp _SetDOSError
[end]
[_FileOpen_Input]
$EXTERNAL _ClearDOSError , _GetFreeFileNumber , _NormFileName , _OpenFile , _SetFileNameError
_FileOpen_Input0:
   rcall _GetFreeFileNumber
   brcs _FileOpen_Input3
_FileOpen_Input:
   rcall _NormFileName
   brne _FileOpen_Input2
.OBJ 938F
 * ldi r25 , cpFileOpenInput
   rcall _OpenFile
.OBJ 918F
   brcs _FileOpen_Input3
   rjmp _ClearDOSError
_FileOpen_Input2:
   rjmp _SetFileNameWildCardError0
_FileOpen_Input3:
.OBJ 2788
.OBJ 9508
[End]
[_FileOpen_Append]
$EXTERNAL _ClearDOSError , _FileOpen_FileNotExist , _GetFreeFileNumber , _GotoFilePosition
$EXTERNAL _LoadFileSizeYZ2A , _NormFileName , _OpenFile , _SetFileNameError
_FileOpen_Append0:
   rcall _GetFreeFileNumber
   brcs _FileOpen_Append4
_FileOpen_Append:
   rcall _NormFileName
   brne _FileOpen_Append5
.OBJ 938F
 * ldi r25 , cpFileOpenAppend
   rcall _OpenFile
.OBJ 918F
   brcc _FileOpen_Append1
 * cpi r25 , cpFileNotFound
   brne _FileOpen_Append3
 * ldi r25 , cpFileOpenAppend
   rjmp _FileOpen_FileNotExist
_FileOpen_Append1:
.OBJ 93FA
.OBJ 93EA
 * ldd r25 , Z + co_FileBufferStatus
 * sbrc r25 , dFileEmpty
   rjmp _FileOpen_Append01
   rcall _LoadFileSizeYZ2A
.OBJ 938F
.OBJ 9498
   call _GotoFilePosition
.OBJ 918F
   brcs _FileOpen_Append2
_FileOpen_Append01:
   rjmp _ClearDOSError_add2toY
_FileOpen_Append2:
.OBJ 9622
_FileOpen_Append3:
.OBJ 2788
.OBJ 9408
_FileOpen_Append4:
.OBJ 9508
_FileOpen_Append5:
   rjmp _SetFileNameWildCardError0
[End]
[_FileOpen_Output]
$EXTERNAL _ClearDOSError , _CreateFile , _GetFreeFileNumber , _NormFileName , _SetFileNameError
_FileOpen_Output0:
   rcall _GetFreeFileNumber
   brcs _FileOpen_Output3
_FileOpen_Output:
   rcall _NormFileName
   brne _FileOpen_Output2
.OBJ 938F
 * ldi r25 , cpFileOpenOutput
   rcall _CreateFile_DeleteOld
.OBJ 918F
   brcs _FileOpen_Output3
   rjmp _ClearDOSError
_FileOpen_Output2:
   rjmp _SetFileNameWildCardError0
_FileOpen_Output3:
.OBJ 2788
.OBJ 9508
[End]
[_FileOpen_Binary]
$EXTERNAL _FileOpen_FileNotExist , _GetFreeFileNumber , _NormFileName , _OpenFile , _SetFileNameError
_FileOpen_Binary0:
   rcall _GetFreeFileNumber
   brcs _FileOpen_Binary3
_FileOpen_Binary:
   rcall _NormFileName
   brne _FileOpen_Binary1
.OBJ 938F
 * ldi r25 , cpFileOpenBinary
   rcall _OpenFile
.OBJ 918F
   brcc _FileOpen_Binary4
 * cpi r25 , cpFileNotFound
   brne _FileOpen_Binary2
 * ldi r25 , cpFileOpenBinary
   rjmp _FileOpen_FileNotExist
_FileOpen_Binary1:
   rjmp _SetFileNameWildCardError0
_FileOpen_Binary2:
.OBJ 9408
_FileOpen_Binary3:
.OBJ 2788
_FileOpen_Binary4:
.OBJ 9508
[End]
[_FileOpen_FileNotExist]
$EXTERNAL _ClearDOSError , _CreateFile
_FileOpen_FileNotExist:
.OBJ 938F
   rcall _CreateFile_CheckedNotExists
.OBJ 918F
   brcs _FileOpen_FileNotExist1
   rjmp _ClearDOSError
_FileOpen_FileNotExist1:
.OBJ 2788
.OBJ 9508
[End]
[_FileLoc]
$EXTERNAL _ClearA , _ClearDOSError , _GetFileHandle , _Mem_Copy
_FileLoc:
   rcall _GetFileHandle
   brcc _FileLoc1
   rjmp _ClearA
_FileLoc1:
 * adiw zl , Co_FilePosition
   rcall _Mem_Copy_4
   rjmp _ClearDOSError
[End]
[_FileLOF]
$EXTERNAL _ClearA , _ClearDOSError , _GetFileHandle , _Mem_Copy
_FileLOF:
   rcall _GetFileHandle
   brcc _FileLOF1
   rjmp _ClearA
_FileLOF1:
 * adiw zl , co_FileSize
   rcall _mem_Copy_4
   rjmp _ClearDOSError
[End]
[_FileSeek]
$EXTERNAL _A2LongX , _Add32_Word , _ClearA , _ClearDOSError , _GetFileHandle , _LongZ2A
_FileSeek:
   rcall _GetFileHandle
   brcc _FileSeek1
   rjmp _ClearA
_FileSeek1:
 * adiw zl , co_Fileposition
   rcall _LongZ2A
   rcall _add32_1
   rcall _A2LongX
   rjmp _ClearDOSError
[End]
[_FileSeekSet]
$EXTERNAL _CheckFileAccess_Mode , _ClearDOSError , _GetFileHandle , _GotoFilePosition , _LongX2A
$EXTERNAL _SetErrorFlag
_FileSeekSet:
   rcall _GetFileHandle
   brcs _FileSeekSet2
 * ldi r25 , cFileSeekSet_Mode
   rcall _CheckFileAccess_Mode_Z
   brcs _FileSeekSet2
.OBJ 93FA
.OBJ 93EA
   rcall _LongX2A
   rcall _GotoFilePosition_1base
   brcs _FileSeekSet1
   rjmp _ClearDOSError_add2toY
_FileSeekSet1:
   rjmp _SetErrorFlag_add2toY
_FileSeekSet2:
.OBJ 9508
[End]
[_FileLineOutput]
$EXTERNAL _ClearDOSError , _FileWriteCRLF , _FileWriteString , _GetFileHandle , _SetErrorFlag
_FileLineOutput:
   rcall _GetFileHandle
   brcs _FileLineOutput2
.OBJ 93FA
.OBJ 93EA
   call _FileWriteString
   brcs _FileLineOutput1
   call _FileWriteCRLF
   brcs _FileLineOutput1
   rjmp _ClearDOSError_Add2toY
_FileLineOutput1:
   rjmp _SetErrorFlag_add2toY
_FileLineOutput2:
.OBJ 9508
[End]
[_FileLineInput]
$EXTERNAL _FileReadByte , _GetFileHandle
_FileLineInput:
.OBJ 939F
   rcall _GetFileHandle
.OBJ 919F
   brcs _FileLineInput5
.OBJ 93FA
.OBJ 93EA
_FileLineInput1:
.OBJ 939F
.OBJ 93BF
.OBJ 93AF
   rcall _FileReadByte
.OBJ 91AF
.OBJ 91BF
.OBJ 919F
   brcs _FileLineInput4
.OBJ 308D
   breq _FileLineInput1
.OBJ 308A
   breq _FileLineInput2
.OBJ 2399
   breq _FileLineInput1
.OBJ 938D
.OBJ 959A
   rjmp _FileLineInput1
_FileLineInput2:
.OBJ 9488
.OBJ 2799
_FileLineInput4:
.OBJ E080
.OBJ 938C
 * in r24 , SREG
.OBJ 9622
 * out SREG , r24
_FileLineInput5:
.OBJ 9508
[End]
[_FileClose]
$EXTERNAL _ClearDOSError , _CloseFileHandle , _GetFileHandle , _SetErrorFlag
_FileClose:
   rcall _GetFileHandle
   brcs _FileClose2
.OBJ 93FA
.OBJ 93EA
   rcall _CloseFileHandle_Y
   brcs _FileClose1
   rjmp _ClearDOSError_Add2toY
_FileClose1:
   rjmp _SetErrorFlag_add2toY
_FileClose2:
.OBJ 9508
[End]
[_FileAttr]
$EXTERNAL _ClearDOSError , _GetFileHandle
_FileAttr:
   rcall _GetFileHandle
   brcs _FileAttr2
 * ldd r24 , Z + co_FileMode
   rjmp _ClearDOSError
_FileAttr2:
.OBJ 2788
.OBJ 9508
[End]
[_FileEOF]
$EXTERNAL _ClearDOSError , _GetFileHandle
_FileEOF:
   rcall _GetFileHandle
   brcs _FileEOF2
 * ldd r24 , Z + co_FileBufferStatus
 * andi r24 , dmEOF
   breq _FileEOF1
.OBJ EF8F
_FileEOF1:
   rjmp _ClearDOSError
_FileEOF2:
.OBJ EF8F
.OBJ 9508
[End]
[_FilePutRange]
$EXTERNAL _CheckFileAccess_Mode , _ClearDOSError , _FileWriteByteArray , _GetFileHandle
$EXTERNAL _GotoFilePosition , _SetErrorFlag
_FilePutRange_8:
.OBJ E048
   rjmp _FilePutRange_Bytes
_FilePutRange_4:
.OBJ E044
   rjmp _FilePutRange_Bytes
_FilePutRange_2:
.OBJ E042
   rjmp _FilePutRange_Bytes
_FilePutRange_1:
.OBJ E041
_FilePutRange_Bytes:
.OBJ 2755
_FilePutRange:
   rcall _GetFileHandle
   brcs _FilePutRange3
 * ldi r25 , cFilePut_Mode
   rcall _CheckFileAccess_Mode_Z
   brcs _FilePutRange3
.OBJ 93FA
.OBJ 93EA
   brtc _FilePutRange1
.OBJ 935F
.OBJ 934F
.OBJ 93BF
.OBJ 93AF
   rcall _GotoFilePosition_1Base
.OBJ 91AF
.OBJ 91BF
.OBJ 914F
.OBJ 915F
   brcs _FilePutRange2
_FilePutrange1:
   call _FileWriteByteArray0
   brcs _FilePutRange2
   rjmp _ClearDOSError_add2toY
_FilePutRange2:
   rjmp _SetErrorFlag_add2toY
_FilePutRange3:
.OBJ 9508
[End]
[_FileGetRange]
$EXTERNAL _CheckFileAccess_Mode , _ClearDOSError , _FileReadByteArray , _GetFileHandle
$EXTERNAL _GotoFilePosition , _SetErrorFlag
_FileGetRange_8:
.OBJ E048
   rjmp _FileGetRange_Bytes
_FileGetRange_4:
.OBJ E044
   rjmp _FileGetRange_Bytes
_FileGetRange_2:
.OBJ E042
   rjmp _FileGetRange_Bytes
_FileGetRange_1:
.OBJ E041
_FileGetRange_Bytes:
.OBJ 2755
_FileGetRange:
   rcall _GetFileHandle
   brcs _FileGetRange3
 * ldi r25 , cFileGet_Mode
   rcall _CheckFileAccess_Mode_Z
   brcs _FileGetRange3
.OBJ 93FA
.OBJ 93EA
   brtc _FileGetRange1
.OBJ 935F
.OBJ 934F
.OBJ 93BF
.OBJ 93AF
   rcall _GotoFilePosition_1Base
.OBJ 91AF
.OBJ 91BF
.OBJ 914F
.OBJ 915F
   brcs _FileGetRange2
_FileGetrange1:
   rcall _FileReadByteArray0
   brcs _FileGetRange2
   rjmp _ClearDOSError_add2toY
_FileGetRange2:
   rjmp _SetErrorFlag_add2toY
_FileGetRange3:
.OBJ 9508
[End]
[_FileByteInput]
$EXTERNAL _ClearDOSError , _FileReadByte , _GetFileHandle , _SetErrorFlag
_FileByteInput:
   rcall _GetFileHandle
   brcs _FileByteInput3
.OBJ 93FA
.OBJ 93EA
_FileByteInput1:
   rcall _FileReadByte
   brcs _FileByteInput2
   rjmp _ClearDOSError_add2toY
_FileByteInput2:
   rcall _SetErrorFlag_add2toY
_FileByteInput3:
.OBJ 2788
.OBJ 9508
[End]
[_FileByteOutput]
$EXTERNAL _ClearDOSError , _FileWriteByte , _GetFileHandle , _SetErrorFlag
_FileByteOutput:
.OBJ 939F
   rcall _GetFileHandle
.OBJ 918F
   brcs _FileByteOutput3
.OBJ 93FA
.OBJ 93EA
_FileByteOutput1:
   rcall _FileWriteByte
   brcs _FileByteOutput2
   rjmp _ClearDOSError_add2toY
_FileByteOutput2:
   rjmp _SetErrorFlag_add2toY
_FileByteOutput3:
.OBJ 9508
[End]
[_FileFlush]
$EXTERNAL _ClearDOSError , _GetFileHandle , _SaveFileSector , _SetBitFileStatusYZ , _SetErrorFlag
_FileFlush:
   rcall _GetFileHandle
   brcs _FileFlush2
.OBJ 93FA
.OBJ 93EA
 * ldi r24 , dmFATDirSaveAnyWay
   rcall _SetBitFileStatusYZ
   rcall _SaveFileSector
   brcs _FileFlush1
   rjmp _ClearDOSError_add2toY
_FileFlush1:
   rjmp _SetErrorFlag_add2toY
_FileFlush2:
.OBJ 9508
[End]
[_Dir]
$EXTERNAL _ClearDOSError , _GetFileExtend , _GetFileName , _Mem_Copy , _NormFileName , _SearchDirEntry
$EXTERNAL _SearchNextDirEntry
$EXTERNAL _RTRIM
_Dir:
.OBJ 93FF
.OBJ 93EF
   rcall _NormFileName
   rcall _SearchDirEntry
   brcs _Dir1
.OBJ 93FF
.OBJ 93EF
   loadadr gsTempFileName , Z
   loadadr gsDir0TempFileName , X
.OBJ E08C
   rcall _Mem_Copy
.OBJ 91EF
.OBJ 91FF
.OBJ 9488
_Dir1:
.OBJ 91AF
.OBJ 91BF
   brcc _Dir2
.OBJ 2788
.OBJ 938C
 * cpi r25 , cpFileNotFound
   brne _Dir3
   rjmp _ClearDOSError
_Dir3:
.OBJ 9508
_Dir2:
   rcall _GetFilename
  call _RTrim0
.OBJ 9711
.OBJ E28E
.OBJ 938D
   rcall _GetFileExtend
   call _RTrim0
   loadadr gwDirEntry , Z
   loadadr gwDir0Entry , X
.OBJ E086
   rjmp _Mem_Copy
_Dir0:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchNextDirEntry
   rjmp _Dir1
[end]
[_FileLen]
$EXTERNAL _A2LongX , _ClearA , _GetDirEntry , _GetFileSize , _SearchDirEntry
_FileLen:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchDirEntry_CheckFileName
   rjmp _FileLen1
_FileLen0:
.OBJ 93FF
.OBJ 93EF
   rcall _GetDirEntry_0
_FileLen1:
.OBJ 91AF
.OBJ 91BF
   brcc _FileLen2
   rcall _ClearA
   rcall _A2LongX
.OBJ 9508
_FileLen2:
   rjmp _GetFileSize
[end]
[_FileDateTimeB]
$EXTERNAL _GetDirEntry , _GetFileDate , _GetFileTime , _SearchDirEntry
_FileDateTimeB:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchDirEntry_CheckFileName
   rjmp _FileDateTimeB1
_FileDateTimeB0:
.OBJ 93FF
.OBJ 93EF
   rcall _GetDirEntry_0
_FileDateTimeB1:
.OBJ 91AF
.OBJ 91BF
   brcc _FileDateTimeB2
.OBJ 9508
_FileDateTimeB2:
   rcall _GetFileTime
   rjmp _GetFileDate
[end]
[_FileDateTimeS]
$EXTERNAL _GetDirEntry , _GetFileDate , _GetFileTime , _SearchDirEntry
$EXTERNAL _Clock2Date , _Clock2Time
_FileDateTimeS:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchDirEntry_CheckFileName
   rjmp _FileDateTimeS1
_FileDateTimeS0:
.OBJ 93FF
.OBJ 93EF
   rcall _GetDirEntry_0
_FileDateTimeS1:
   brcc _FileDateTimeS2
.OBJ 91AF
.OBJ 91BF
.OBJ 2788
.OBJ 938C
.OBJ 9508
_FileDateTimeS2:
.OBJ E0AA
.OBJ 27BB
   rcall _GetFileTime
   rcall _GetFileDate
.OBJ 91AF
.OBJ 91BF
  call _ClockReg2Date
.OBJ E280
.OBJ 9711
.OBJ 938D
.OBJ E0EA
   jmp _Clock2Time
[End]
[_FileDateS]
$EXTERNAL _GetDirEntry , _GetFileDate , _SearchDirEntry
$EXTERNAL _Clock2Date
_FileDateS:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchDirEntry_CheckFileName
   rjmp _FileDateS1
_FileDateS0:
.OBJ 93FF
.OBJ 93EF
   rcall _GetDirEntry_0
_FileDateS1:
   brcc _FileDateS2
.OBJ 91AF
.OBJ 91BF
.OBJ 2788
.OBJ 938C
.OBJ 9508
_FileDateS2:
.OBJ E0AD
.OBJ 27BB
   rcall _GetFileDate
.OBJ 91AF
.OBJ 91BF
   jmp _ClockReg2Date
[End]
[_FileTimeS]
$EXTERNAL _GetDirEntry , _GetFileTime , _SearchDirEntry
$EXTERNAL _Clock2Time
_FileTimeS:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchDirEntry_CheckFileName
   rjmp _FileTimeS1
_FileTimeS0:
.OBJ 93FF
.OBJ 93EF
   rcall _GetDirEntry_0
_FileTimeS1:
   brcc _FileTimeS2
.OBJ 91AF
.OBJ 91BF
.OBJ 2788
.OBJ 938C
.OBJ 9508
_FileTimeS2:
.OBJ E0AD
.OBJ 27BB
   rcall _GetFileTime
.OBJ 91AF
.OBJ 91BF
   jmp _ClockReg2Time
[End]
[_GetAttr]
$EXTERNAL _GetDirEntry , _GetFileAttribute , _SearchDirEntry
_GetAttr:
.OBJ 93FF
.OBJ 93EF
   rcall _SearchDirEntry_CheckFileName
   rjmp _GetAttr1
_GetAttr0:
.OBJ 93FF
.OBJ 93EF
   rcall _GetDirEntry_0
_GetAttr1:
.OBJ 91AF
.OBJ 91BF
   brcc _GetAttr2
.OBJ 2788
.OBJ 938C
.OBJ 9508
_GetAttr2:
   rjmp _GetFileAttribute
[end]
[_GetNextSectorNumber]
$EXTERNAL _Add32_Word , _Cluster2Sector , _GetNextCluster , _Sector2Cluster , _Sub32_1
_GetNextSectorNumber:
.OBJ 2F80
   rcall _add32_1
   lds r25, {glDataFirstSector}
.OBJ 1B89
.OBJ 2F98
.OBJ 9583
.OBJ 2789
   lds r25, {gbSectorsPerCluster}
.OBJ 2389
   brne _GetNextSectorNumber2
_GetNextSectorNumber1:
.OBJ 9488
.OBJ 9508
_GetNextSectorNumber2:
   rcall _Sub32_1
   rcall _Sector2Cluster
   rcall _GetNextCluster
   brcc _GetNextSectorNumber3
.OBJ 9508
_GetNextSectorNumber3:
   rcall _Cluster2Sector
   rjmp _GetNextSectorNumber1
[end]
[_Sector2Cluster]
$EXTERNAL _LongZ2B
$EXTERNAL _SUB32
_Sector2Cluster:
   loadadr glDataFirstSector , Z
   rcall _LongZ2B
   call _Sub32
   brmi _Sector2Cluster3
   lds r24, {gbSectorsPerCluster}
_Sector2Cluster1:
.OBJ FD80
   rjmp _Sector2Cluster2
.OBJ 9536
.OBJ 9527
.OBJ 9517
.OBJ 9507
.OBJ 9586
   rjmp _Sector2Cluster1
_Sector2Cluster2:
.OBJ 5F0E
.OBJ 4F1F
.OBJ 4F2F
.OBJ 4F3F
_Sector2Cluster3:
.OBJ 9508
[end]
[_Cluster2Sector]
$EXTERNAL _LongZ2B
$EXTERNAL _ADD32
_Cluster2Sector:
   lds r24, {gbSectorsPerCluster}
.OBJ 5002
.OBJ 4010
.OBJ 4020
.OBJ 4030
_Cluster2Sector1:
.OBJ FD80
   rjmp _Cluster2Sector2
.OBJ F00
.OBJ 1F11
.OBJ 1F22
.OBJ 1F33
.OBJ 9586
   rjmp _Cluster2Sector1
_Cluster2Sector2:
   loadadr glDataFirstSector , Z
   rcall _LongZ2B
   jmp _Add32
[end]
[_GetNextCluster]
$EXTERNAL _ClearDOSError , _GetSector , _LoadFileSectorNumberYZ2A , _LongX2B , _Sector2Cluster
$EXTERNAL _SetDOSError
$EXTERNAL _ADD32
_GetNextCluster_Y:
   rcall _LoadFileSectorNumberYZ2A
   rcall _Sector2Cluster
_GetNextCluster:
   loadadr glFatFirstSector , X
   rcall _LongX2B
   lds r0, {gbFileSystemStatus}
 * sbrs r0 , dFileSystemStatusFAT
   rjmp _GetNextCluster1
.OBJ F00
.OBJ 1F11
.OBJ 1F22
.OBJ 1F33
_GetNextCluster1:
.OBJ 930F
.OBJ 2F01
.OBJ 2F12
.OBJ 2F23
.OBJ 2733
   call _add32
   rcall _GetSector_FAT
.OBJ 918F
   brcs _GetNextCluster5
   lds r0, {gbFileSystemStatus}
 * bst r0 , dFileSystemStatusFAT
.OBJ 2799
.OBJ F88
.OBJ 1F99
.OBJ FE8
.OBJ 1FF9
.OBJ 2722
.OBJ 2733
.OBJ 9101
.OBJ 9111
   brtc _GetNextCluster2
.OBJ 9121
.OBJ 9131
.OBJ 703F
.OBJ 9732
.OBJ EF6F
.OBJ E07F
_GetNextCluster2:
.OBJ 9732
.OBJ EF48
.OBJ EF5F
.OBJ 1704
.OBJ 715
   brtc _GetNextCluster4
.OBJ 726
.OBJ 737
_GetNextCluster4:
   brcs _GetNextCluster6
 * ldi r25 , cpNoNextCluster
_GetNextCluster5:
   rjmp _SetDosError
_GetNextCluster6:
   rjmp _ClearDOSError
[end]
[_GetFreeCluster]
$EXTERNAL _A2LongX , _Add32_Word , _ClearA , _ClearDOSError , _GetNextCluster , _LongX2A
$EXTERNAL _SetDOSError
_GetFreeCluster0:
   rcall _ClearA
.OBJ E002
.OBJ 2EA0
.OBJ 2744
.OBJ 2755
.OBJ 2766
.OBJ 2777
   rjmp _GetFreeCluster1
_GetFreeCluster:
   Loadadr glLastSearchedCluster , X
   rcall _LongX2A
.OBJ 24AA
_GetFreeCluster1:
.OBJ 933F
.OBJ 932F
.OBJ 931F
.OBJ 930F
.OBJ 937F
.OBJ 936F
.OBJ 935F
.OBJ 934F
.OBJ 92AF
   rcall _GetNextCluster
.OBJ 90AF
.OBJ 914F
.OBJ 915F
.OBJ 916F
.OBJ 917F
.OBJ 910F
.OBJ 911F
.OBJ 912F
.OBJ 913F
   loadadr glMaxClusterNumber , X
.OBJ 90CD
.OBJ 90DD
.OBJ 90ED
.OBJ 90FD
   brcc _GetFreeCluster2
 * cpi r25 , cpNoNextCluster
   brne _GetFreeCluster10
_GetFreeCluster2:
.OBJ 16C0
.OBJ 6D1
.OBJ 6E2
.OBJ 6F3
   brcs _GetFreeCluster9
.OBJ 2799
.OBJ 9181
.OBJ 2B98
.OBJ 9181
.OBJ 2B98
   brtc _GetFreeCluster3
.OBJ 9181
.OBJ 2B98
.OBJ 9181
.OBJ 708F
.OBJ 2B98
_GetFreeCluster3:
   brne _GetFreeCluster4
.OBJ FEA1
   rjmp _GetFreeCluster6
.OBJ 5F4F
.OBJ 4F5F
.OBJ 4F6F
.OBJ 4F7F
_GetFreeCluster4:
.OBJ 2F80
.OBJ 2F91
   rcall _Add32_1
.OBJ 2791
.OBJ 9596
   brtc _GetFreeCluster5
.OBJ 2780
.OBJ F88
_GetFreeCluster5:
   brcc _GetFreeCluster2
   rjmp _GetFreeCluster1
_GetFreeCluster6:
.OBJ 9732
   brtc _GetFreeCluster7
.OBJ 9732
_GetFreeCluster7:
   loadadr glLastSearchedCluster , X
   rcall _A2LongX
   rjmp _ClearDOSError
_GetFreeCluster9:
 * ldi r25 , cpNoFreeCluster
_GetFreeCluster10:
   rjmp _SetDOSError
[end]
[_ClearA]
_ClearA:
.OBJ 2700
.OBJ 2711
.OBJ 2722
.OBJ 2733
.OBJ 9508
[end]
[_Add32_Word]
$EXTERNAL _ADD32
_Add32_1:
.OBJ 5F0F
.OBJ 4F1F
.OBJ 4F2F
.OBJ 4F3F
.OBJ 9508
_Add32_Byte:
.OBJ 2755
_Add32_Word:
.OBJ 2766
.OBJ 2777
_Add32_r:
   jmp _Add32
[end]
[_Sub32_1]
_Sub32_1:
.OBJ 5001
_Sub32_Byte:
.OBJ 4010
_Sub32_Word:
.OBJ 4020
.OBJ 4030
.OBJ 9508
[end]
[_LongX2A]
_LongX2A:
.OBJ 910D
.OBJ 911D
.OBJ 912D
.OBJ 913D
.OBJ 9508
[end]
[_LongZ2A]
_LongZ2A:
.OBJ 9101
.OBJ 9111
.OBJ 9121
.OBJ 9131
.OBJ 9508
[end]
[_LongX2B]
_LongX2B:
.OBJ 914D
.OBJ 915D
.OBJ 916D
.OBJ 917D
.OBJ 9508
[end]
[_LongZ2B]
_LongZ2B:
.OBJ 9141
.OBJ 9151
.OBJ 9161
.OBJ 9171
.OBJ 9508
[end]
[_A2LongX]
_A2LongX:
.OBJ 930D
.OBJ 931D
.OBJ 932D
.OBJ 933D
.OBJ 9508
[end]
[_A2LongZ]
_A2LongZ:
.OBJ 9301
.OBJ 9311
.OBJ 9321
.OBJ 9331
.OBJ 9508
[end]
[_B2LongZ]
_B2LongZ:
.OBJ 9341
.OBJ 9351
.OBJ 9361
.OBJ 9371
.OBJ 9508
[end]
[_WordZ2A]
_WordZ2A_L:
.OBJ 2722
.OBJ 2733
_WordZ2A:
.OBJ 9101
.OBJ 9111
.OBJ 9508
[end]
[_WordX2B]
_WordX2B_L:
.OBJ 2766
.OBJ 2777
_WordX2B:
.OBJ 914D
.OBJ 915D
.OBJ 9508
[end]
[_WordZ2B]
_WordZ2B:
.OBJ 9141
.OBJ 9151
.OBJ 9508
[end]
[_B2WordX]
_B2WordX:
.OBJ 934D
.OBJ 935D
.OBJ 9508
[end]
[_A2WordX]
_A2WordX:
.OBJ 930D
.OBJ 931D
.OBJ 9508
[end]
[_B2WordZ]
_B2WordZ:
.OBJ 9341
.OBJ 9351
.OBJ 9508
[end]
[_Mov4A2B]
_Mov4A2B:
.OBJ 2F40
.OBJ 2F51
.OBJ 2F62
.OBJ 2F73
.OBJ 9508
[end]
[_CheckA_Zero]
_CheckA_Zero:
.OBJ 5000
.OBJ 4010
.OBJ 4020
.OBJ 4030
.OBJ 9508
[end]
[_Comp16_r20_r22]
_Comp16_r20_r22:
.OBJ 1746
.OBJ 757
.OBJ 9508
[end]
[_ShiftR_WordB]
_ShiftR_WordB:
.OBJ 9556
.OBJ 9547
.OBJ 958A
   brne  _SHIFTR_WORDB
.OBJ 9508
[end]
[_ShiftL_WordB]
_ShiftL_WordB:
.OBJ F44
.OBJ 1F55
.OBJ 958A
   brne  _SHIFTL_WORDB
.OBJ 9508
[end]
[_Mem_Copy]
_Mem_Copy_4:
.OBJ E084
_Mem_Copy:
.OBJ 939F
_Mem_Copy1:
.OBJ 9191
.OBJ 939D
.OBJ 958A
   brne  _Mem_Copy1
.OBJ 919F
.OBJ 9508
[end]
[_AddrFileHandleBase2Z]
_AddrFileHandleBase2Z:
.OBJ 81E8
.OBJ 81F9
.OBJ 9508
[end]
[_AddrFileFirstCluster2X]
_AddrFileFirstCluster2X:
.OBJ 81A8
.OBJ 81B9
 * adiw xl , co_FileFirstCluster
.OBJ 9508
[end]
[_AddrFileSize2Z]
_AddrFileSize2Z:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileSize
.OBJ 9508
[end]
[_SaveFileDirSectorNumberA2YZ]
$EXTERNAL _A2LongZ
_SaveFileDirSectorNumberA2YZ:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileDirSectorNumber
   rjmp _A2LongZ
[end]
[_SaveFileFirstClusterA2YZ]
$EXTERNAL _A2LongZ
_SaveFileFirstClusterA2YZ:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileFirstCluster
   rjmp _A2LongZ
[end]
[_LoadFileFirstClusterYZ2A]
$EXTERNAL _LongZ2A
_LoadFileFirstClusterYZ2A:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileFirstCluster
   rjmp _LongZ2A
[end]
[_SaveFileSizeA2YZ]
$EXTERNAL _A2LongZ , _AddrFileSize2Z
_SaveFileSizeA2YZ:
   rcall _AddrFileSize2Z
   rjmp _A2LongZ
[end]
[_LoadFileSizeYZ2A]
$EXTERNAL _AddrFileSize2Z , _LongZ2A
_LoadFileSizeYZ2A:
   rcall _AddrFileSize2Z
   rjmp _LongZ2A
[end]
[_LoadFileSizeYZ2B]
$EXTERNAL _AddrFileSize2Z , _LongZ2B
_LoadFileSizeYZ2B:
   rcall _AddrFileSize2Z
   rjmp _LongZ2B
[end]
[_AddrFileSize2X]
_AddrFileSize2X:
.OBJ 81A8
.OBJ 81B9
 * adiw xl , co_FileSize
.OBJ 9508
[end]
[_AddrFileSectorNumber2Z]
_AddrFileSectorNumber2Z:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileSectorNumber
.OBJ 9508
[end]
[_LoadFileSectorNumberYZ2A]
$EXTERNAL _AddrFileSectorNumber2Z , _LongZ2A
_LoadFileSectorNumberYZ2A:
   rcall _AddrFileSectorNumber2Z
   rjmp _LongZ2A
[end]
[_AddrFileBufferStatus2Z]
_AddrFileBufferStatus2Z:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileBufferStatus
.OBJ 9508
[end]
[_LoadFileBufferStatusYZ]
_LoadFileBufferStatusYZ:
.OBJ 81E8
.OBJ 81F9
 * ld _temp1 , Z + co_FileBufferStatus
.OBJ 9508
[end]
[_SaveFileBufferStatusYZ]
_SaveFileBufferStatusYZ:
.OBJ 81E8
.OBJ 81F9
 * std Z + co_FileBufferStatus , _temp1
.OBJ 9508
[end]
[_AddrFilePosition2Z]
_AddrFilePosition2Z:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FilePosition
.OBJ 9508
[end]
[_LoadFilePositionYZ2A]
$EXTERNAL _AddrFilePosition2Z , _LongZ2A
_LoadFilePositionYZ2A:
   rcall _AddrFilePosition2Z
   rjmp _LongZ2A
[end]
[_LoadFilePositionYZ2B]
$EXTERNAL _AddrFilePosition2Z , _LongZ2B
_LoadFilePositionYZ2B:
   rcall _AddrFilePosition2Z
   rjmp _LongZ2B
[end]
[_SaveFilePositionA2YZ]
$EXTERNAL _A2LongZ , _AddrFilePosition2Z
_SaveFilePositionA2YZ:
   rcall _AddrFilePosition2Z
   rjmp _A2LongZ
[end]
[_SaveFilePositionB2YZ]
$EXTERNAL _AddrFilePosition2Z , _B2LongZ
_SaveFilePositionB2YZ:
   rcall _AddrFilePosition2Z
   rjmp _B2LongZ
[end]
[_AddrFilePosition2X]
_AddrFilePosition2X:
.OBJ 81A8
.OBJ 81B9
 * adiw xl , co_FilePosition
.OBJ 9508
[end]
[_LastCluster2FAT]
$EXTERNAL _SetDirFATWritePending
_LastCluster2FAT:
   lds r0, {gbFileSystemStatus}
 * bst r0 , dFileSystemStatusFAT
_LastCluster2FATT:
.OBJ EF8F
.OBJ 9381
.OBJ 9381
   brtc _LastCluster2FAT2
.OBJ 9381
.OBJ E08F
.OBJ 9381
_LastCluster2FAT2:
   rjmp _SetFATWritePending
[end]
[_ClusterA2FAT]
$EXTERNAL _SetDirFATWritePending
_ClusterA2FAT:
   lds r0, {gbFileSystemStatus}
 * bst r0, dFileSystemStatusFAT
.OBJ 9301
.OBJ 9311
   brtc _ClusterA2FAT1
.OBJ 9321
.OBJ 9331
_ClusterA2FAT1:
   rjmp _SetFATWritePending
[end]
[_AddrFileBuffer2X]
_AddrFileBuffer2X:
.OBJ 81A8
.OBJ 81B9
 * adiw xl , co_FileBuffer
.OBJ 9508
[end]
[_AddrFileBuffer2Z]
_AddrFileBuffer2Z:
.OBJ 81E8
.OBJ 81F9
 * adiw Zl , co_FileBuffer
.OBJ 9508
[end]
[_SaveFileSectorNumberA2YZ]
$EXTERNAL _A2LongZ , _AddrFileSectorNumber2Z
_SaveFileSectorNumberA2YZ:
   rcall _AddrFileSectorNumber2Z
   rjmp _A2LongZ
[end]
[_AddrFileSectorNumber2X]
_AddrFileSectorNumber2X:
.OBJ 81A8
.OBJ 81B9
 * adiw xl , co_FileSectorNumber
.OBJ 9508
[end]
[_CleanHWStack]
_CleanHWStack6:
.OBJ 900F
_CleanHWStack5:
.OBJ 900F
_CleanHWStack4:
.OBJ 900F
_CleanHWStack3:
.OBJ 900F
_CleanHWStack2:
.OBJ 900F
_CleanHWStack1:
.OBJ 900F
.OBJ 9508
[end]
[_SetDOSError]
_SetDOSError_add2toY:
.OBJ 9622
_SetDOSError:
.OBJ 9408
_SetDOSError1:
   sts {gbDOSError}, r25
.OBJ 9508
[end]
[_SetFileNameError]
$EXTERNAL _SetDOSError
_SetFileNameWildCardError0:
.OBJ 2788
_SetFileNameWildCardError:
 * ldi r25 , cpFileNoWildCardAllowed
   rjmp _SetDOSError
[End]
[_ClearDOSError]
$EXTERNAL _SetDOSError
_ClearDOSError_add2toY:
.OBJ 9622
_ClearDOSError:
.OBJ 9488
 * ldi r25 , cpNoError
   rjmp _SetDOSError1
[end]
[_ClearErrorFlag]
_ClearErrorFlag_add2toY:
.OBJ 9622
_ClearErrorFlag:
.OBJ 9488
.OBJ 9508
[end]
[_SetErrorFlag]
_SetErrorFlag_add2toY:
.OBJ 9622
_SetErrorFlag:
.OBJ 9408
.OBJ 9508
[end]
[_SetBitFileStatusYZ]
_SetBitFileEmptyYZ:
 * ldi r24 ,(dmFileEmpty + cp_FileBufferInitStatus)
   rjmp _SetBitFileStatusYZ
_SetBitEOFYZ:
 * ldi r24 ,(dmEOFinSector + cp_FileBufferInitStatus)
_SetBitFileStatusYZ:
.OBJ 81E8
.OBJ 81F9
.OBJ 939F
 * ldd r25 , Z + co_FileBufferStatus
.OBJ 2B89
 * std Z + co_FileBufferStatus , r24
.OBJ 919F
.OBJ 9508
[end]
[_ClearBitFileStatusYZ]
_ClearBitFileStatusYZ:
.OBJ 81E8
.OBJ 81F9
.OBJ 939F
 * ldd r25 , Z + co_FileBufferStatus
.OBJ 9580
.OBJ 2389
 * std Z + co_FileBufferStatus , r24
.OBJ 919F
.OBJ 9508
[end]
[_SetFileWritePending]
$EXTERNAL _SetBitFileStatusYZ
_SetFileWritePending:
 * ldi r24 , dmWritePending
   rjmp _SetBitFileStatusYZ
[end]
[_SetDirFATWritePending]
*#IF cSepFATHandle = 1
_SetFATWritePending:
   lds r24, {gbFATBufferStatus}
 * sbr r24 , dmWritePending
   sts {gbFATBufferStatus}, r24
.OBJ 9508
*#ELSE
_SetFATWritePending:
*#ENDIF
_SetDirWritePending:
   lds r24, {gbDirBufferStatus}
 * sbr r24 , dmWritePending
   sts {gbDirBufferStatus}, r24
.OBJ 9508
[end]
[_DriveReadSector_SEV]
$EXTERNAL _ClearDOSError , _SetDOSError
$EXTERNAL _DriveReadSector
_DriveReadSector_SEV:
  call _DriveReadSector
   brcs _DriveReadSector_SEV1
   rjmp _ClearDOSError
_DriveReadSector_SEV1:
   rjmp _SetDOSError
[End]
[_DriveWriteSector_SEV]
$EXTERNAL _ClearDOSError , _SetDOSError
$EXTERNAL _DriveWriteSector
_DriveWriteSector_SEV:
  call _DriveWriteSector
   brcs _DriveWriteSector_SEV1
   rjmp _ClearDOSError
_DriveWriteSector_SEV1:
   rjmp _SetDOSError
[End]
[_ReadDirSector]
$EXTERNAL _DriveReadSector_SEV
_ReadDirSector:
   loadadr glDirSectorNumber , X
   loadadr gbDirBuffer(1) , Z
   rjmp _DriveReadSector_SEV
[end]
[_GetSector]
$EXTERNAL _A2LongX , _AddrFileSectorNumber2X , _CleanHWStack , _ClearErrorFlag , _DriveReadSector_SEV
$EXTERNAL _DriveWriteSector_SEV , _LongX2B , _SaveSector2FATCopy
$EXTERNAL _COMP32
_GetSector_FAT:
 * ldi _temp1 , cp_FATBufferInitStatus
*#IF cSepFATHandle = 1
   loadadr glFATSectorNumber , X
*#ELSE
   loadadr glDirSectorNumber , X
*#ENDIF
   rjmp _GetSector
_GetSector_Dir:
 * ldi _Temp1 , cp_DirBufferInitStatus
   loadadr glDirSectorNumber , X
   rjmp _GetSector
_GetSector_File:
   rcall _AddrFileSectorNumber2X
 * ldi _Temp1 , cp_FileBufferInitStatus
_GetSector:
   rcall _LongX2B
  call _Comp32
   brne _GetSector1
.OBJ 94E8
_GetSector91:
.OBJ 9611
.OBJ 2FEA
.OBJ 2FFB
.OBJ 9715
   rjmp _ClearErrorFlag
_GetSector1:
.OBJ 919D
.OBJ 2FEA
.OBJ 2FFB
.OBJ 2F79
 * cbr r23, ( dmWritePending + dmFATSector )
.OBJ 2B87
.OBJ 938E
.OBJ 9714
 * sbrs _temp2 , dWritePending
   rjmp _GetSector4
.OBJ 930F
.OBJ 931F
.OBJ 932F
.OBJ 933F
.OBJ 939F
.OBJ 93AF
.OBJ 93BF
   rcall _DriveWriteSector_SEV
.OBJ 91BF
.OBJ 91AF
.OBJ 919F
   brcs _GetSector5
  * sbrs _temp2 , dFATSector
   rjmp _GetSector3
.OBJ 93AF
.OBJ 93BF
   rcall _SaveSector2FATCopy
.OBJ 91BF
.OBJ 91AF
   brcs _GetSector5
_GetSector3:
.OBJ 913F
.OBJ 912F
.OBJ 911F
.OBJ 910F
_GetSector4:
   rcall _A2LongX
   rcall _GetSector91
.OBJ 93EF
.OBJ 93FF
   rcall _DriveReadSector_SEV
.OBJ 91FF
.OBJ 91EF
.OBJ 9468
.OBJ 9508
_GetSector5:
   rjmp _CleanHWStack4
[end]
[_LoadNextFileSector]
$EXTERNAL _Add32_Word , _AddrFileSectorNumber2X , _CheckAvailableSectorSize , _GetNextSectorNumber
$EXTERNAL _GetSector , _LoadFileBufferStatusYZ , _LoadFilePositionYZ2A , _LoadFileSectorNumberYZ2A
$EXTERNAL _SaveFilePositionA2YZ , _SetBitFileStatusYZ , _SetDOSError
_LoadNextFileSector_Position:
   rcall _LoadFileBufferStatusYZ
 * andi r24 , dmEOFAll
   brne _LoadNextFileSector82
   rcall _LoadFilePositionYZ2A
.OBJ 2700
.OBJ 7F1E
.OBJ 2744
.OBJ E052
   rcall _Add32_Word
   rcall _SaveFilePositionA2YZ
_LoadNextFileSector:
   rcall _LoadFileBufferStatusYZ
 * andi r24 , dmEOFAll
   brne _LoadNextFileSector82
   rcall _LoadFileSectorNumberYZ2A
   rcall _GetNextSectorNumber
   brcs _LoadNextFileSector81
   rcall _AddrFileSectorNumber2X
   rcall _getSector_File
   brcs _LoadNextFileSector83
   rjmp _CheckAvailableSectorSize
_LoadNextFileSector81:
 * cpi r25 , cpNoNextCluster
   brne _LoadNextFileSector83
   rcall _SetBitEOFYZ
 * ldi r25 , cpNoNextCluster
   rjmp _SetDOSError
_LoadNextFileSector82:
 * ldi r25 , cpEndOfFile
_LoadNextFileSector83:
   rjmp _SetDOSError
[end]
[_SearchDirEntry]
$EXTERNAL _B2WordX , _ClearDOSError , _Comp_String_Mem , _GetDirEntry , _GetNextDirSectorNumber
$EXTERNAL _GetSector , _NormFileName , _SetDOSError , _SetErrorFlag , _SetFileNameError
_SearchDirEntry_CheckFileName:
   rcall _NormFileName
   breq _SearchDirEntry
   rjmp _SetFileNameWildcardError
_SearchDirEntry:
.OBJ 93FA
.OBJ 93EA
   rcall _GetDirEntry_DirStart
_SearchDirEntry2:
   brcc _SearchDirEntry2b
   rjmp _SetErrorFlag_add2toY
_SearchDirEntry2b:
.OBJ 8583
.OBJ 308F
   breq _SearchDirEntry3
 * cbr r24, cpFileSearchAllowed
   brne _searchDirEntry3
.OBJ 8180
.OBJ 328E
   breq _SearchDirEntry3
.OBJ 3E85
   breq _SearchDirEntry3
.OBJ 3080
   breq _SearchDirEntry4
.OBJ 81A8
.OBJ 81B9
.OBJ 919C
.OBJ 339F
   breq _SearchDirEntry2a
.OBJ 1398
   rjmp _SearchDirEntry3
_SearchDirEntry2a:
.OBJ E07B
   rcall _Comp_String_Mem
   breq _SearchDirEntry5
_SearchDirEntry3:
.OBJ 96B0
.OBJ E081
.OBJ F48
   brhc _SearchDirEntry2
.OBJ 2788
.OBJ 1F58
.OBJ 935F
.OBJ 934F
   rcall _GetNextDirSectorNumber
   brcs _SearchDirEntry6
   rcall _GetSector_Dir
_SearchDirEntry6:
.OBJ 914F
.OBJ 915F
   brcc _SearchDirEntry2
  * cpi r25 , cpDriverErrorStart
   brcc _SearchDirEntry4a
_SearchDirEntry4:
  * ldi r25 , cpFileNotFound
_SearchDirEntry4a:
.OBJ 91E9
.OBJ 91F9
   rjmp _SetDOSError
_SearchDirEntry5:
   loadadr gwDirEntry , X
   rcall _B2WordX
   rjmp _ClearDOSError_add2toY
[end]
[_GetNextDirSectorNumber]
$EXTERNAL _Add32_Word , _CleanHWStack , _ClearDOSError , _GetNextSectorNumber , _LongX2A , _LongX2B
$EXTERNAL _SetDOSError
$EXTERNAL _COMP32
_GetNextDirSectorNumber:
   lds r0, {gbFileSystemStatus}
 * sbrc r0, dFileSystemStatusFAT
   rjmp _GetNextDirSectorNumber2
   loadadr glDirFirstSectorNumber , X
   rcall _LongX2A
   loadadr glRootFirstSector , X
.OBJ 935F
.OBJ 934F
   rcall _LongX2B
   call _Comp32
.OBJ 914F
.OBJ 915F
   brne _GetNextDirSectorNumber2
   loadadr gwRootEntries , X
.OBJ 916D
.OBJ 917D
.OBJ 1746
.OBJ 757
   brcs _GetNextDirSectorNumber1
  * ldi r25 , cpNoFreeDirEntry
   rjmp _SetDOSError
_GetNextDirSectorNumber1:
   rcall _GetNextDirSectorNumber80
   rcall _Add32_1
   rjmp _ClearDOSError
_GetNextDirSectorNumber2:
   rcall _GetNextDirSectorNumber80
.OBJ 933F
.OBJ 932F
.OBJ 931F
.OBJ 930F
   rcall _GetNextSectorNumber
   brcs _GetNextDirSectorNumber3
   rjmp _CleanHWStack4
_GetNextDirSectorNumber3:
.OBJ 910F
.OBJ 911F
.OBJ 912F
.OBJ 913F
.OBJ 9508
_GetNextDirSectorNumber80:
   loadadr glDirSectorNumber , X
   rjmp _LongX2A
[end]
[_GetFreeDirEntry]
$EXTERNAL _A2LongX , _B2WordX , _CleanHWStack , _ClearDOSError , _ClearFileSector , _ClusterA2FAT
$EXTERNAL _GetDirEntry , _GetFreeCluster , _GetNextCluster , _GetNextDirSectorNumber , _GetSector
$EXTERNAL _LastCluster2FAT , _LongX2A , _Mov4A2B , _Sector2Cluster , _SetDOSError
_GetFreeDirEntry:
   rcall _GetDirEntryFreeStart
   brcs _GetFreeDirEntry6
_GetFreeDirEntry2:
.OBJ 8180
.OBJ 3E85
   breq _GetFreeDirEntry5
.OBJ 3080
   breq _GetFreeDirEntry5
.OBJ 96B0
.OBJ E081
.OBJ F48
   brhc _GetFreeDirEntry2
.OBJ 2788
.OBJ 1F58
.OBJ 935F
.OBJ 934F
   rcall _GetNextDirSectorNumber
   brcs _GetFreeDirEntry4
   rcall _GetSector_DIR
_GetFreeDirEntry4:
.OBJ 914F
.OBJ 915F
   brcc _GetFreeDirEntry2
 * cpi r25 , cpNoNextCluster
   brne _GetFreeDirEntry6
.OBJ 935F
.OBJ 934F
   rcall _Sector2Cluster
.OBJ 933F
.OBJ 932F
.OBJ 931F
.OBJ 930F
   rcall _GetFreeCluster
   brcs _GetFreeDirEntry7
   rcall _LastCluster2FAT
   rcall _Mov4A2B
.OBJ 910F
.OBJ 911F
.OBJ 912F
.OBJ 913F
.OBJ 937F
.OBJ 936F
.OBJ 935F
.OBJ 934F
   rcall _GetNextCluster
.OBJ 910F
.OBJ 911F
.OBJ 912F
.OBJ 913F
   brcc _GetFreeDirEntry8a
 * cpi r25, cpNoNextCluster
   brne _GetFreeDirEntry8
   rcall _ClusterA2FAT
_GetFreeDirEntry4a:
   rcall _ClearDirCluster
   rjmp _GetFreeDirEntry4
_GetFreeDirEntry5:
   loadadr gwDirEntry , X
   rcall _B2WordX
   rcall _LongX2A
   loadAdr gwFreeDirEntry , X
   rcall _B2WordX
   rcall _A2LongX
   rjmp _ClearDOSError
_GetFreeDirEntry6:
   rjmp _SetDOSError
_GetFreeDirEntry7:
   rjmp _CleanHWStack6
_GetFreeDirEntry8a:
 * ldi r25, cpClusterError
   rcall _SetDOSError
_GetFreeDirEntry8:
   rjmp _CleanHWStack2
[end]
[_GetDirEntry]
$EXTERNAL _ClearDOSError , _GetSector , _LongX2A , _SetErrorFlag , _ShiftL_WordB , _WordX2B
_GetDirEntry_Y:
.OBJ 81A8
.OBJ 81B9
 * adiw xl , co_FileDirEntry
   rjmp _GetDirEntry1
_GetDirEntry_DirStart:
.OBJ 2744
.OBJ 2755
   loadadr glDirFirstSectorNumber , X
   rjmp _GetDirEntry2
_GetDirEntry_0:
   loadadr gwDir0Entry , X
   rjmp _GetDirEntry1
_GetDirEntryFreeStart:
   loadadr gwFreeDirEntry , X
_GetDirEntry1:
   rcall _WordX2B
_GetDirEntry2:
   rcall _LongX2A
_GetDirEntry:
.OBJ 935A
.OBJ 934A
   rcall _GetSector_Dir
   brcs _GetDirEntry9
.OBJ 8148
.OBJ 704F
.OBJ 2755
.OBJ E085
   rcall _ShiftL_WordB
.OBJ FE4
.OBJ 1FF5
.OBJ 9149
.OBJ 9159
   rjmp _ClearDOSError
_GetDirEntry9:
   rjmp _setErrorFlag_Add2toY
[end]
[_SearchNextDirEntry]
$EXTERNAL _GetDirEntry , _SearchDirEntry
_SearchNextDirEntry:
   loadadr gwDir0Entry , X
   rcall _GetDirEntry1
.OBJ 93FF
.OBJ 93EF
   loadadr gsDir0TempFileName , Z
.OBJ 93FA
.OBJ 93EA
.OBJ 91EF
.OBJ 91FF
   rjmp _SearchDirEntry3
[end]
[_Comp_String_Mem]
_Comp_String_Mem:
.OBJ 93FF
.OBJ 93EF
_Comp_String_Mem1:
.OBJ 9181
.OBJ 919D
.OBJ 339F
   breq _Comp_String_Mem3
.OBJ 1789
   brne _Comp_String_Mem2
_Comp_String_Mem3:
.OBJ 957A
   brne _Comp_String_Mem1
_Comp_String_Mem2:
.OBJ 91EF
.OBJ 91FF
.OBJ 9508
[end]
[_NormFileName]
$EXTERNAL _UPPER
_NormFileName:
   loadadr gsTempFileName , Z
_NormFileName0:
.OBJ 938F
.OBJ 94E8
.OBJ 2799
.OBJ E07B
_NormFileName1:
   brts _NormFileName5
.OBJ 918D
.OBJ 328A
   brne _NormFileName3
.OBJ E38F
.OBJ 9468
   rjmp _NormFileName5
_NormFileName3:
.OBJ 328E
   brne _NormfileName4
.OBJ 3073
   brne  _Normfilename3A
.OBJ 94E8
   rjmp _NormFileName1
_NormFileName3a:
.OBJ E280
.OBJ 9468
   rjmp _NormFileName5
_NormFileName4:
.OBJ 3080
   brne _NormfileName4a
.OBJ E280
   rjmp _NormFileName7
_NormFileName4a:
  call _Upper
_NormFileName5:
.OBJ 9381
.OBJ 338F
   brne _NormFileName5a
.OBJ 9593
_NormFileName5a:
.OBJ 3074
   brne _NormFileName6
.OBJ 94E8
_NormFileName6:
.OBJ 957A
   brne _NormfileName1
   rjmp _NormfileName9
_NormFileName7:
.OBJ E280
_NormFileName8:
.OBJ 9381
.OBJ 957A
   brne _NormFileName8
_NormFileName9:
.OBJ E080
.OBJ 9381
.OBJ 973C
.OBJ 2399
.OBJ 918F
.OBJ 9508
[end]
[_GetFileName]
$EXTERNAL _Mem_Copy
_GetFileName:
.OBJ E088
   rcall _Mem_Copy
.OBJ 9738
.OBJ 2788
.OBJ 938D
.OBJ 9508
[end]
[_GetFileExtend]
$EXTERNAL _Mem_Copy
_GetFileExtend:
.OBJ 9638
.OBJ E083
   rcall _Mem_Copy
.OBJ 973B
.OBJ 2788
.OBJ 938D
.OBJ 9508
[end]
[_GetFileAttribute]
_GetFileAttribute:
.OBJ 8583
.OBJ 938D
.OBJ 9508
[end]
[_GetFileFirstCluster]
_GetFileFirstCluster:
.OBJ 8D92
.OBJ 939D
.OBJ 8D93
.OBJ 939D
   lds r0, {gbFileSystemStatus}
 * sbrs r0 , dFileSystemStatusFAT
   rjmp _GetFileFirstCluster1
.OBJ 8994
.OBJ 939D
.OBJ 8995
.OBJ 939D
.OBJ 9508
_GetFileFirstCluster1:
.OBJ 2799
.OBJ 939D
.OBJ 939D
.OBJ 9508
[end]
[_GetFileDate]
_GetFileDate:
.OBJ 8D60
.OBJ 8D71
.OBJ 2F86
.OBJ 718F
.OBJ 938D
.OBJ 9576
.OBJ 9567
.OBJ 9562
.OBJ 706F
.OBJ 936D
.OBJ 5174
   brpl  _GetFileDate1
.OBJ 597C
_GetFileDate1:
.OBJ 937D
.OBJ 9508
[end]
[_GetFileTime]
_GetFileTime:
.OBJ 8966
.OBJ 8977
.OBJ 2F96
.OBJ 719F
.OBJ F99
.OBJ 939D
.OBJ 9576
.OBJ 9567
.OBJ 9576
.OBJ 9567
.OBJ 9576
.OBJ 9567
.OBJ 9566
.OBJ 9566
.OBJ 936D
.OBJ 937D
.OBJ 9508
[end]
[_GetFileSize]
$EXTERNAL _Mem_Copy
_GetFileSize:
.OBJ 967C
   rcall _Mem_Copy_4
.OBJ 97B0
.OBJ 9508
[end]
[_SetFileHandle]
$EXTERNAL _ClearDOSError , _ClearFileHandle , _CompareRange , _Mem_Copy , _SetDOSError
_SetFileHandle:
.OBJ 2388
   brne _SetFileHandle1a
 * ldi r25 , cpFileNumberInvalid
   rjmp _SetDOSError
_SetFileHandle1a:
 * ldi r19 , cFileHandles
   loadadr abFileHandles(1) , Z
.OBJ 94E8
_SetFileHandle1:
.OBJ 8120
.OBJ 2322
   brne  _SETFILEHANDLE2
   brts _SetFileHandle3
.OBJ 2EEE
.OBJ 2EFF
.OBJ 9468
   rjmp _SetFileHandle3
_SetFileHandle2:
.OBJ 1728
   breq _SetFileHandle5
.OBJ 93EF
.OBJ 93FF
.OBJ 938F
 * adiw zl , co_FileDirEntry
   loadadr gwDirEntry , X
   rcall _CompareRange
.OBJ 918F
.OBJ 91FF
.OBJ 91EF
   brne _SetFileHandle3
 * ldd r17 , Z + co_FileMode
.OBJ 2319
 * sbrs r17 , dReadOnly
   rjmp _SetFileHandle6
_SetFileHandle3:
.OBJ 953A
   breq _SetFileHandle4
 * subi zl , lByte(c_FileHandleSize_M)
 * sbci zh , hbyte(c_FileHandleSize_M)
   rjmp _SetFileHandle1
_SetFileHandle4:
   brtc _SetFileHandle7
.OBJ 2DEE
.OBJ 2DFF
   rcall _ClearFileHandle
.OBJ 8380
 * std z + co_FileMode , r25
.OBJ 93EF
.OBJ 93FF
.OBJ 938F
.OBJ E086
 * adiw zl , co_FileDirEntry
.OBJ 2FAE
.OBJ 2FBF
   loadadr gwDirEntry , Z
.OBJ E086
   rcall _Mem_Copy
.OBJ 918F
.OBJ 91FF
.OBJ 91EF
   rjmp _ClearDOSError
_SetFileHandle5:
 * ldi r25 , cpFileOpenHandleInUse
   rjmp _SetDOSError
_SetFileHandle6:
 * ldi r25 , cpFileOpenShareConflict
   rjmp _SetDOSError
_SetFileHandle7:
 * ldi r25 , cpFileOpenNoHandle
   rjmp _SetDOSError
[end]
[_ClearFileHandle]
$EXTERNAL _AddrFileHandleBase2Z
_ClearFileHandle_Y:
   rcall _AddrFileHandleBase2Z
_ClearFileHandle:
 * ldi r16 , co_FileBuffer
.OBJ 2400
_ClearFileHandle1:
.OBJ 9201
.OBJ 950A
   brne _ClearFileHandle1
 * sbiw zl , co_FileBuffer
.OBJ 9508
[end]
[_GetFileHandle]
$EXTERNAL _SetDOSError
_GetFileHandle:
.OBJ 2388
   breq _GetFileHandle3
 * ldi r23 , cFileHandles
   loadadr abFileHandles(1) , Z
_GetFileHandle1:
.OBJ 8190
.OBJ 1798
   breq _GetFileHandle5
.OBJ 957A
   breq _GetFileHandle2
 * subi zl , lByte(c_FileHandleSize_M)
 * sbci zh , hbyte(c_FileHandleSize_M)
   rjmp _GetFileHandle1
_GetFileHandle2:
 * ldi r25 , cpFileNumberNotFound
   rjmp _SetDOSError
_GetFileHandle3:
 * ldi r25 , cpFileNumberInvalid
   rjmp _SetDOSError
_GetFileHandle5:
.OBJ 9508
[end]
[_GetFreeFileNumber]
$EXTERNAL _ClearDOSError , _GetFileHandle , _SetDOSError
_GetFreeFileNumber:
.OBJ E880
_GetFreeFileNumber1:
   rcall _GetFileHandle
   brcs _GetFreeFileNumber2
.OBJ 9583
   brne _GetFreeFileNumber1
 * ldi r25 , cpNoFreeFileNumber
.OBJ 2788
   rjmp _SetDOSError
_GetFreeFileNumber2:
   rjmp _ClearDOSError
[end]
[_CloseFileHandle]
$EXTERNAL _AddrFileHandleBase2Z , _ClearFileHandle , _GetFileHandle , _SaveFileSector
$EXTERNAL _SetBitFileStatusYZ
_CloseFileHandle_Y:
   rcall _AddrFileHandleBase2Z
   rjmp _CloseFileHandle1
_CloseFileHandle:
   rcall _GetFileHandle
   brcs _CloseFileHandle2
_CloseFileHandle1:
 * ldi r24 , dmFATDirSaveAnyWay
   rcall _SetBitFileStatusYZ
   rcall _SaveFileSector
   rjmp _ClearFileHandle_Y
_CloseFileHandle2:
.OBJ 9508
[end]
[_OpenFile]
$EXTERNAL _AddrFileFirstCluster2X , _AddrFileSize2X , _CheckA_Zero , _CheckAvailableSectorSize
$EXTERNAL _ClearErrorFlag , _Cluster2Sector , _GetFileFirstCluster , _GetFileSize , _GetSector
$EXTERNAL _LoadFileBufferStatusYZ , _LoadFileFirstClusterYZ2A , _SearchDirEntry , _SetBitFileStatusYZ
$EXTERNAL _SetDOSError , _SetErrorFlag , _SetFileHandle
_OpenFile:
.OBJ 938F
.OBJ 939F
   rcall _SearchDirEntry
.OBJ 917F
.OBJ 918F
   brcs _OpenFile9
.OBJ 2F97
.OBJ 8563
.OBJ 2769
.OBJ FF60
   rjmp _Openfile1
.OBJ 2769
.OBJ FD60
   rjmp _OpenFile92
_OpenFile1:
.OBJ 93FF
.OBJ 93EF
   rcall _SetFileHandle
.OBJ 93FA
.OBJ 93EA
.OBJ 91EF
.OBJ 91FF
   brcs _OpenFile9
   rcall _AddrFileSize2X
   rcall _GetFileSize
   rcall _AddrFileFirstCluster2X
   rcall _GetFileFirstCluster
   rcall _LoadFileFirstClusterYZ2A
   rcall _CheckA_Zero
   breq _OpenFile91
   rcall _Cluster2Sector
   rcall _GetSector_File
   brcs _OpenFile93
   rcall _CheckAvailableSectorSize
_OpenFile2:
   rcall _LoadFileBufferStatusYZ
   rjmp _ClearErrorFlag_Add2toY
_Openfile9:
.OBJ 9508
_OpenFile91:
   rcall _SetBitFileEmptyYZ
   rjmp _OpenFile2
_OpenFile92:
 * ldi r25 , cpFileReadOnly
   rjmp _SetDOSError
_OpenFile93:
   rjmp _SetErrorFlag_Add2toY
[end]
[_FileReadByte]
$EXTERNAL _A2LongZ , _Add32_Word , _ClearDOSError , _LoadNextFileSector , _LongZ2A , _LongZ2B
$EXTERNAL _SetDOSError
$EXTERNAL _COMP32
_FileReadByte:
.OBJ 81E8
.OBJ 81F9
 * ldd r25 , Z + co_FileMode
 * andi r25 , cFileRead_Mode
   breq _FileReadByte98
_FileReadByte0:
.OBJ 81E8
.OBJ 81F9
 * ldd r24 , Z + co_FileBufferStatus
 * sbrc r24 , dEOF
   rjmp _FileReadByte81
 * adiw zl , co_FilePosition
   rcall _LongZ2A
.OBJ 2F91
.OBJ 2F80
   rcall _Add32_1
.OBJ 9734
   rcall _A2LongZ
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileSize
   rcall _LongZ2B
  call _Comp32
   brcs _FileReadByte1
.OBJ 9638
.OBJ 8170
 * sbr r23 , dmEOF
.OBJ 9371
.OBJ 2711
   rjmp _FileReadByte3
_FileReadByte1:
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileBuffer
.OBJ 2719
_FileReadByte3:
.OBJ 7091
.OBJ FE8
.OBJ 1FF9
.OBJ 8180
.OBJ 9516
   breq _FileReadByte9
.OBJ 938F
   rcall _LoadNextFileSector
.OBJ 918F
.OBJ 9508
_FileReadByte9:
   rjmp _ClearDOSError
_FileReadByte81:
 * ldi r25 , cpEndOfFile
   rjmp _SetDOSError
_FileReadByte98:
 * ldi r25 , cpFileAccessError
   rjmp _SetDOSError
[end]
[_CreateFile]
$EXTERNAL _CleanHWStack , _ClearDirEntry , _ClearDOSError , _DeleteFile , _GetFreeDirEntry , _Mem_Copy
$EXTERNAL _SearchDirEntry , _SetBitFileStatusYZ , _SetDirFATWritePending , _SetDirTimeDate
$EXTERNAL _SetDOSError , _SetFileHandle
_CreateFile_CheckedNotExists:
.OBJ 93FF
.OBJ 93EF
.OBJ 938F
.OBJ 939F
   rjmp _CreateFile2
_CreateFile_DeleteOld:
.OBJ 93FF
.OBJ 93EF
.OBJ 938F
.OBJ 939F
   rcall _DeleteFile
   brcc _CreateFile2
 * cpi r25 , cpFileNotFound
   brne _CreateFile94
   rjmp _CreateFile2
_CreateFile:
.OBJ 93FF
.OBJ 93EF
.OBJ 938F
.OBJ 939F
   rcall _SearchDirEntry
   brcc _CreateFile91
 * cpi r25 , cpFileNotFound
   brne _CreateFile94
_CreateFile2:
   rcall _GetFreeDirEntry
   brcs _CreateFile92
   rcall _ClearDirEntry
.OBJ 919F
.OBJ 918F
.OBJ 93FF
.OBJ 93EF
   rcall _SetFileHandle
.OBJ 91AF
.OBJ 91BF
   brcs _CreateFile93
.OBJ 93FA
.OBJ 93EA
.OBJ 91EF
.OBJ 91FF
.OBJ 939F
.OBJ E08B
   rcall _Mem_Copy
.OBJ 919F
.OBJ 7091
.OBJ 6290
.OBJ 939D
.OBJ 9612
   rcall _SetDirTimeDate
.OBJ 9614
   rcall _SetDirTimeDate
   rcall _SetDirWritePending
   rcall _SetBitFileEmptyYZ
.OBJ 91E9
.OBJ 91F9
   rjmp _ClearDOSError
_CreateFile91:
 * ldi r25 , cpFileExists
   rcall _SetDOSError
_CreateFile94:
.OBJ 9408
_CreateFile92:
   rjmp _CleanHWStack4
_CreateFile93:
   rjmp _CleanHWStack2
[end]
[_ClearDirEntry]
_ClearDirEntry:
.OBJ EE85
.OBJ 9381
.OBJ 2788
.OBJ E19F
_ClearDirEntry1:
.OBJ 9381
.OBJ 959A
   brne _ClearDirEntry1
.OBJ 97B0
.OBJ 9508
[end]
[_DeleteFile]
$EXTERNAL _CheckA_Zero , _CheckFileInUse , _CheckUpdateFreeCluster , _CheckUpdateFreeDirEntry
$EXTERNAL _GetNextCluster , _SaveSector_DIR , _SaveSector_FAT , _SearchDirEntry
$EXTERNAL _SetDirFATWritePending , _SetDOSError , _SetFileNameError
_DeleteFile:
   breq _DeleteFile0
   rjmp _SetFileNameWildCardError0
_DeleteFile0:
   rcall _SearchDirEntry
   brcs _DeleteFile4
.OBJ 8583
 * cbr r24, cpFileDeleteAllowed
   breq _DeleteFile0b
 * ldi r25 , cpFileDeleteNotAllowed
   rjmp _SetDOSError
_DeleteFile0b:
.OBJ 93FF
.OBJ 93EF
   rcall _CheckFileInUse
.OBJ 91EF
.OBJ 91FF
   brcs _DeleteFile4
.OBJ 93FF
.OBJ 93EF
   rcall _CheckUpdateFreeDirEntry
.OBJ 91EF
.OBJ 91FF
_DeleteFile8:
.OBJ EE85
.OBJ 8380
   rcall _SetDirWritePending
.OBJ 2722
.OBJ 2733
.OBJ 8D02
.OBJ 8D13
   lds r0, {gbFileSystemStatus}
  * sbrs r0 , dFileSystemStatusFAT
   rjmp _DeleteFile0a
.OBJ 8924
.OBJ 8935
_DeleteFile0a:
   rcall _CheckA_Zero
   breq _DeleteFile3
_DeleteFile1:
   rcall _CheckUpdateFreeCluster
   rcall _GetNextCluster
.OBJ E080
.OBJ 9381
.OBJ 9381
   brtc _DeleteFile1b
.OBJ 9381
.OBJ 9381
_DeleteFile1b:
   rcall _SetFATWritePending
   brcc _DeleteFile1
 * cpi r25 , cpNoNextCluster
   brne _DeleteFile5
*#IF cSepFATHandle = 1
   rcall _SaveSector_FAT
   brcs _DeleteFile4
   rjmp _SaveSector_Dir
*#ELSE
   rjmp _SaveSector_FAT
*#ENDIF
_DeleteFile3:
   rjmp _SaveSector_Dir
_DeleteFile5:
.OBJ 9408
_DeleteFile4:
.OBJ 9508
[end]
[_CheckUpdateFreeDirEntry]
$EXTERNAL _CompareRange
_CheckUpdateFreeDirEntry:
   loadadr gwDirEntry , Z
   Loadadr gwFreeDirEntry , X
.OBJ E086
   rjmp _CompareRange_Update
[end]
[_CheckUpdateFreeCluster]
$EXTERNAL _CompareRange
_CheckUpdateFreeCluster:
.OBJ E1E0
.OBJ 27FF
   loadadr glLastSearchedCluster , X
.OBJ E084
   rjmp _CompareRange_Update
[end]
[_CheckAvailableSectorSize]
$EXTERNAL _ClearBitFileStatusYZ , _ClearDOSError , _LoadFilePositionYZ2B , _LoadFileSizeYZ2A
$EXTERNAL _SetBitFileStatusYZ , _SetDOSError
$EXTERNAL _SUB32
_CheckAvailableSectorSize:
   rcall _LoadFileSizeYZ2A
   rcall _LoadFilePositionYZ2B
  call _Sub32
   brmi _CheckAvailableSectorSize9
   breq _CheckAvailableSectorSize10
.OBJ 2B32
   brne _CheckAvailableSectorSize6
.OBJ E041
.OBJ E052
.OBJ 1704
.OBJ 715
   brcs _CheckAvailableSectorSize8
_CheckAvailableSectorSize6:
.OBJ E000
.OBJ E012
 * ldi r24 , dmEOFAll
   rcall _ClearBitFileStatusYZ
   rjmp _ClearDOSError
_CheckAvailableSectorSize8:
 * ldi r24 , dmEOFinSector
   rcall _SetBitFileStatusYZ
   rjmp _ClearDOSError
_CheckAvailableSectorSize9:
 * ldi r25 , cpFilePositionError
   rjmp _CheckAvailableSectorSize11
_CheckAvailableSectorSize10:
 * ldi r25 , cpEndOfFile
_CheckAvailableSectorSize11:
 * ldi r24 , dmEOFALL
   rcall _SetBitFileStatusYZ
   rjmp _SetDOSError
[end]
[_CheckFileInUse]
$EXTERNAL _ClearDOSError , _CompareRange , _SetDOSError
_CheckFileInUse:
 * ldi r23 , cFileHandles
   loadadr abFileHandles(1) , Z
_CheckFileInUse1:
.OBJ 8180
.OBJ 2388
   breq _CheckFileinUse2
.OBJ 93FF
.OBJ 93EF
 * adiw zl, co_FileDirEntry
   loadadr gwDirEntry , X
.OBJ E086
   rcall _CompareRange
.OBJ 91EF
.OBJ 91FF
   breq _CheckFileInUse3
_CheckFileInUse2:
.OBJ 957A
   breq _CheckFileInUse4
 * subi zl , lByte(c_FileHandleSize_M)
 * sbci zh , hbyte(c_FileHandleSize_M)
   rjmp _CheckFileInUse1
_CheckFileInUse3:
 * ldi r25 , cpFileInUse
   rjmp _SetDOSError
_CheckFileInUse4:
   rjmp _ClearDOSError
[end]
[_AllocateNextFileSector]
$EXTERNAL _ClearDOSError , _ClearFileSector , _Cluster2Sector , _ClusterA2FAT , _GetFreeCluster
$EXTERNAL _GetNextCluster , _GetNextSectorNumber , _GetSector , _LoadFileBufferStatusYZ
$EXTERNAL _LoadFileSectorNumberYZ2A , _SaveFileSectorNumberA2YZ , _SetDirFATWritePending
$EXTERNAL _SetDOSError
_AllocateNextFileSector:
   rcall _LoadFileSectorNumberYZ2A
   rcall _GetNextSectorNumber
   brcs _AllocateNextFileSector4
_AllocateNextFileSector3:
  rcall _LoadFileBufferStatusYZ
 * sbrs r24 , dEOF
   rjmp _GetSector_File
   rcall _SaveFileSectorNumberA2YZ
   rjmp _ClearFileSector
_AllocateNextFileSector4:
 * cpi r25 , cpNoNextCluster
   brne _AllocateNextFileSector92
   rcall _GetFreeCluster
   brcs  _AllocateNextFileSector92
.OBJ EF8F
.OBJ 9381
.OBJ 9381
   lds r0, {gbFileSystemStatus}
 * sbrs r0 , dFileSystemStatusFAT
   rjmp _AllocateNextFileSector5
.OBJ 9381
.OBJ E08F
.OBJ 9381
_AllocateNextFileSector5:
   rcall _SetFATWritePending
.OBJ 930F
.OBJ 931F
.OBJ 932F
.OBJ 933F
   rcall _GetNextCluster_Y
.OBJ 913F
.OBJ 912F
.OBJ 911F
.OBJ 910F
   brcc _AllocateNextFileSector91
 * cpi r25 , cpNoNextCluster
   brne _AllocateNextFileSector91
   rcall _ClearDOSError
   rcall _ClusterA2FAT
   rcall _Cluster2Sector
   rjmp _AllocateNextFileSector3
_AllocateNextFileSector91:
 * ldi r25 , cpClusterError
   rjmp _SetDOSError
_AllocateNextFileSector92:
.OBJ 9508
[end]
[_AllocateFirstFileSector]
$EXTERNAL _ClearA , _ClearBitFileStatusYZ , _Cluster2Sector , _GetDirEntry , _GetFreeCluster
$EXTERNAL _SaveFileFirstClusterA2YZ , _SaveFilePositionA2YZ , _SaveFileSectorNumberA2YZ
$EXTERNAL _SetDirFATWritePending
_AllocateFirstFileSector:
   rcall _GetFreeCluster
   brcs  _AllocateFirstFileSector91
.OBJ EF8F
.OBJ 9381
.OBJ 9381
   lds r0, {gbFileSystemStatus}
 * sbrs r0 , dFileSystemStatusFAT
   rjmp _AllocateFirstFileSector1
.OBJ 9381
.OBJ E08F
.OBJ 9381
_AllocateFirstFileSector1:
   rcall _SetFATWritePending
.OBJ 933F
.OBJ 932F
.OBJ 931F
.OBJ 930F
   rcall _SaveFileFirstClusterA2YZ
   rcall _GetDirEntry_Y
.OBJ 910F
.OBJ 911F
.OBJ 912F
.OBJ 913F
   brcs _AllocateFirstFileSector91
.OBJ 8F02
.OBJ 8F13
   lds r0, {gbFileSystemStatus}
 * sbrs r0 , dFileSystemStatusFAT
   rjmp _AllocateFirstFileSector2
.OBJ 8B24
.OBJ 8B35
_AllocateFirstFileSector2:
   rcall _SetDirWritePending
   rcall _Cluster2Sector
   rcall _SaveFileSectorNumberA2YZ
   rcall _ClearA
   rcall _SaveFilePositionA2YZ
 * ldi r24 , dmFileEmpty
   rcall _ClearBitFileStatusYZ
.OBJ 9488
_AllocateFirstFileSector91:
.OBJ 9508
[end]
[_SaveFileSector]
$EXTERNAL _A2LongX , _AddrFileSectorNumber2Z , _ClearBitFileStatusYZ , _ClearDOSError
$EXTERNAL _DriveWriteSector_SEV , _GetDirEntry , _LoadFileBufferStatusYZ , _LoadFileSizeYZ2A
$EXTERNAL _SaveSector_DIR , _SaveSector_FAT , _SetDirFATWritePending , _SetDirTimeDate
_SaveFileSector:
   rcall _LoadFileBufferStatusYZ
 * sbrs r24 , dWritePending
   rjmp _SaveFileSector2
   rcall _AddrFileSectorNumber2Z
.OBJ 2FAE
.OBJ 2FBF
.OBJ 9634
.OBJ 8180
 * cbr r24 , dmWritePending
.OBJ 9381
   rcall _DriveWriteSector_SEV
   brcs _SaveFileSector9
_SaveFileSector2:
   rcall _LoadFileBufferStatusYZ
 * sbrs r24 , dFATDirWritePending
   rjmp _SaveFileSector10
 * sbrs r24 , dFATDirSaveAtEnd
   rjmp _SaveFileSector3
 * sbrs r24 , dFATDirSaveAnyWay
   rjmp _SaveFileSector10
_SaveFileSector3:
   rcall _GetDirEntry_Y
   brcs _SaveFileSector9
.OBJ 2FAE
.OBJ 2FBF
.OBJ 961B
.OBJ 918C
.OBJ 6280
.OBJ 938C
.OBJ 9651
 * ldi r24 ,(dmFATDirWritePending + dmFATDirSaveAnyWay)
   rcall _ClearBitFileStatusYZ
   rcall _LoadFileSizeYZ2A
   rcall _A2LongX
.OBJ 971A
   rcall _SetDirTimeDate
   rcall _SetDirWritePending
*#IF cSepFATHandle = 1
   rcall _SaveSector_Dir
   brcs _SaveFileSector9
   rjmp _SaveSector_FAT
*#ELSE
   rjmp _SaveSector_Dir
*#ENDIF
_SaveFileSector9:
.OBJ 9508
_SaveFileSector10:
   rjmp _ClearDOSError
[end]
[_ClearFileSector]
$EXTERNAL _Add32_Word , _AddrFileBuffer2Z , _ClearDOSError , _Cluster2Sector , _GetSector , _LongZ2A
$EXTERNAL _SetDirFATWritePending , _Sub32_1
_ClearDirCluster:
   rcall _Cluster2Sector
   lds r24, {gbSectorsPerCluster}
_ClearDirCluster1:
.OBJ 938F
   rcall _GetSector_Dir
   brcs _ClearDirCluster2
   rcall _ClearSector
   rcall _SetDirWritePending
.OBJ 9488
_ClearDirCluster2:
.OBJ 918F
   brcs _ClearDirCluster9
.OBJ 958A
   breq _ClearDirCluster7
   loadadr glDirSectorNumber , Z
   rcall _LongZ2A
   rcall _Add32_1
   rjmp _ClearDirCluster1
_ClearDirCluster7:
   lds r20, {gbSectorsPerCluster}
.OBJ 954A
   breq _ClearDirCluster8
   loadadr glDirSectorNumber , Z
   rcall _LongZ2A
.OBJ 1B04
   rcall _Sub32_Byte
   rjmp _GetSector_Dir
_ClearDirCluster8:
   rjmp _ClearDOSError
_ClearDirCluster9:
.OBJ 9508
_ClearFileSector:
   rcall _AddrFileBuffer2Z
_ClearSector:
.OBJ 2777
.OBJ E092
.OBJ E080
_ClearFileSector1:
.OBJ 9371
.OBJ 9701
   brne _ClearFileSector1
.OBJ 50F2
   rjmp _ClearDOSError
[end]
[_SaveSector_FAT]
$EXTERNAL _DriveWriteSector_SEV , _SaveSector2FATCopy
_SaveSector_FAT:
 * ldi _temp1 , cp_FATBufferInitStatus
*#IF cSepFATHandle = 1
   loadadr glFATSectorNumber , X
   loadadr gbFATBufferStatus , Z
*#ELSE
   loadadr glDIRSectorNumber , X
   loadadr gbDIRBufferStatus , Z
*#ENDIF
.OBJ 8190
 * sbrs _temp2 , dWritePending
.OBJ 9508
.OBJ 9381
.OBJ 93BF
.OBJ 93AF
   rcall _DriveWriteSector_SEV
.OBJ 91AF
.OBJ 91BF
   brcc _SaveSector_FAT1
.OBJ 9508
_SaveSector_FAT1:
   rjmp _SaveSector2FATCopy
[end]
[_SaveSector_DIR]
$EXTERNAL _DriveWriteSector_SEV
_SaveSector_DIR:
 * ldi _temp1 , cp_DIRBufferInitStatus
   loadadr glDIRSectorNumber , X
   loadadr gbDIRBufferStatus , Z
.OBJ 8190
 * sbrs _temp2 , dWritePending
.OBJ 9508
.OBJ 9381
   rjmp _DriveWriteSector_SEV
[end]
[_SaveSector2FATCopy]
$EXTERNAL _A2LongX , _DriveWriteSector_SEV , _LongX2A , _LongZ2B
$EXTERNAL _ADD32
_SaveSector2FATCopy:
*#IF cFATSecondUpdate = 0
.OBJ 9508
*#ENDIF
   loadadr gbNumberOfFATs , Z
.OBJ 9181
.OBJ FF81
.OBJ 9508
   rcall _LongZ2B
   rcall _LongX2A
.OBJ 2FEA
.OBJ 2FFB
.OBJ 9631
   call _Add32
   loadadr glFS_Temp1 , X
   rcall _A2LongX
.OBJ 9714
   rjmp _DriveWriteSector_SEV
[end]
[_CheckFileAccess_Mode]
$EXTERNAL _SetDOSError
_CheckFileAccess_Mode:
.OBJ 81E8
.OBJ 81F9
_CheckFileAccess_Mode_Z:
.OBJ 2E09
 * ldd r25 , Z + co_FileMode
.OBJ 2190
   breq _CheckFileAccess_Mode2
.OBJ 9488
.OBJ 9508
_CheckFileAccess_Mode2:
 * ldi r25 , cpFileAccessError
   rjmp _SetDOSError
[end]
[_FileWriteByte]
$EXTERNAL _A2LongZ , _Add32_Word , _AllocateFirstFileSector , _AllocateNextFileSector
$EXTERNAL _ClearFileSector , _LongZ2A , _LongZ2B , _SaveFileSector , _SetDOSError
_FileWriteByte:
.OBJ 81E8
.OBJ 81F9
 * ldd r25 , Z + co_FileMode
 * andi r25 , cFileWrite_Mode
   breq _FileWriteByte98
_FileWriteByte0:
.OBJ 81E8
.OBJ 81F9
.OBJ 938F
 * ldd r25 , Z + co_FileBufferStatus
 * sbrs r25 , dFileEmpty
   rjmp _FileWriteByte2
   rcall _AllocateFirstFileSector
   brcs _FileWriteByte99
   rcall _ClearFileSector
.OBJ 81E8
.OBJ 81F9
 * ldd r25 , Z + co_FileBufferStatus
_FileWriteByte2:
 * adiw zl , co_FilePosition
   rcall _LongZ2A
.OBJ 2EF1
.OBJ 2EE0
   rcall _Add32_1
.OBJ 9734
   rcall _A2LongZ
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileSize
   rcall _LongZ2B
.OBJ 1740
.OBJ 751
.OBJ 762
.OBJ 773
   brcc _FileWriteByte3
.OBJ 9734
   rcall _A2LongZ
 * sbr r25 ,(dmEOF + dmFATDirWritePending)
_FileWriteByte3:
.OBJ 251F
 * sbr r25 , dmWritePending
.OBJ 81E8
.OBJ 81F9
 * adiw zl , co_FileBufferStatus
.OBJ 9391
.OBJ 2D9F
.OBJ 7091
.OBJ DEE
.OBJ 1FF9
.OBJ 918F
.OBJ 9381
.OBJ 9516
   breq _FileWriteByte5
   rcall _SaveFileSector
   rjmp _AllocateNextFileSector
_FileWriteByte98:
 * ldi r25 , cpFileAccessError
   rjmp _SetDOSError
_FileWriteByte99:
.OBJ 918F
.OBJ 9508
_FileWriteByte5:
.OBJ 9488
.OBJ 9508
[end]
[_GotoFilePosition]
$EXTERNAL _Add32_Word , _AllocateNextFileSector , _CheckEOF , _ClearDOSError , _ClearFileSector
$EXTERNAL _Cluster2Sector , _GetNextCluster , _GetSector , _LoadFileBufferStatusYZ
$EXTERNAL _LoadFileFirstClusterYZ2A , _LoadFilePositionYZ2A , _LoadFileSectorNumberYZ2A
$EXTERNAL _LoadFileSizeYZ2B , _Position2SeqCluster , _SaveFilePositionA2YZ , _Sector2Cluster
$EXTERNAL _SetDOSError , _Sub32_1
$EXTERNAL _COMP32
_GotoFilePosition_1Base:
   rcall _Sub32_1
_GotoFilePosition:
.OBJ 2333
   brpl _GotoFilePosition02
 * ldi r25 , cpInvalidFilePosition
   rjmp _SetDOSError
_GotoFilePosition02:
   brne _GotoFilePosition01
   rcall _LoadFileBufferStatusYZ
 * sbrc r24 , dFileEmpty
   rjmp _ClearDOSError
_GotoFilePosition01:
   rcall _LoadFileSizeYZ2B
  call _Comp32
   breq _GotoFilePositionEOF
   brcc _GotoFilePosition9
_GotoFilePosition1:
.OBJ 933F
.OBJ 932F
.OBJ 931F
.OBJ 930F
   rcall _Position2SeqCluster
.OBJ 2D5C
.OBJ 2D6D
.OBJ 2D7E
.OBJ 934F
   rcall _LoadFilePositionYZ2A
   rcall _Position2SeqCluster
   rcall _LoadFileSectorNumberYZ2A
.OBJ 937F
.OBJ 936F
.OBJ 935F
   rcall _Sector2Cluster
.OBJ 915F
.OBJ 916F
.OBJ 917F
.OBJ 155C
.OBJ 56D
.OBJ 57E
   brcs _GotoFilePosition2
   breq _GotoFilePosition4
.OBJ 195C
.OBJ 96D
.OBJ 97E
   rjmp _GotoFilePosition3
_GotoFilePosition2:
   rcall _LoadFileFirstClusterYZ2A
_GotoFilePosition3:
.OBJ 5051
.OBJ 4060
.OBJ 4070
   brcs _GotoFilePosition4
.OBJ 937F
.OBJ 936F
.OBJ 935F
   rcall _GetNextCluster
.OBJ 915F
.OBJ 916F
.OBJ 917F
   brcc _GotoFilePosition3
_GotoFilePosition4:
   rcall _Cluster2Sector
.OBJ 914F
   rcall _Add32_Byte
   rcall _GetSector_File
   brcs _GotoFilePositionEOF9
.OBJ 910F
.OBJ 911F
.OBJ 912F
.OBJ 913F
   rcall _SaveFilePositionA2YZ
   rcall _CheckEOF
   rjmp _ClearDOSError
_GotoFilePosition9:
 * ldi r25 , cpFilePositionError
   rjmp _SetDOSError
_GotoFilePositionEOF:
.OBJ 2300
   brne _GotoFilePosition1
.OBJ 2F81
.OBJ 7081
   brne _GotoFilePosition1
   rcall _Sub32_1
   rcall _GotoFilePosition
   brcs _GotoFilePositionEOF9
   rcall _LoadFilePositionYZ2A
   rcall _Add32_1
   rcall _SaveFilePositionA2YZ
   rcall _AllocateNextFileSector
   brcc _GotoFilePositionEOF1
 * cpi r25 , cpEndOfFile
   breq _GotoFilePositionEOF1
.OBJ 9408
_GotoFilePositionEOF9:
.OBJ 9508
_GotoFilePositionEOF1:
   rcall _LoadFileBufferStatusYZ
 * sbrc r24 , dEOF
   rjmp _ClearFileSector
   rjmp _ClearDOSError
[end]
[_FileWriteString]
$EXTERNAL _FileWriteByteArray
_FileWriteString:
.OBJ 93BF
.OBJ 93AF
.OBJ 2744
.OBJ 2755
_FileWriteStringLength1:
.OBJ 918D
.OBJ 2388
   breq _FileWriteStringLength2
.OBJ 5F4F
.OBJ 4F5F
   brne _FileWriteStringLength1
_FileWriteStringLength2:
.OBJ 91AF
.OBJ 91BF
   rjmp _FileWriteByteArray
[end]
[_FileWriteStringQuotationMark]
$EXTERNAL _FileWriteQuotationMark , _FileWriteString
_FileWriteStringQuotationMark:
*#IF cTextQuotationMarks = 1
.OBJ 93BF
.OBJ 93AF
   rcall _FileWriteQuotationMark
.OBJ 91AF
.OBJ 91BF
   brcs _FileWriteStringQuotationMark1
*#ENDIF
   rcall _FileWriteString
*#IF cTextQuotationMarks = 1
   brcs _FileWriteStringQuotationMark1
   rjmp _FileWriteQuotationMark
*#ENDIF
_FileWriteStringQuotationMark1:
.OBJ 9508
[End]
[_FileWriteCRLF]
$EXTERNAL _FileWriteByte
_FileWriteCRLF:
.OBJ E08D
   rcall _FileWriteByte
   brcs _FileWriteCRLF1
.OBJ E08A
   rjmp _FileWriteByte
_FileWriteCRLF1:
.OBJ 9508
[end]
[_FileWriteComma]
$EXTERNAL _FileWriteByte
_FileWriteComma:
 * ldi r24, cVariableSeparator
   rjmp _FileWriteByte
[end]
[_FileWriteQuotationMark]
$EXTERNAL _FileWriteByte
_FileWriteQuotationMark:
.OBJ E282
   rjmp _FileWriteByte
[end]
[_FileWriteStrConst]
$EXTERNAL _FileWriteByte
$EXTERNAL _LPMBYTE
_FileWriteStrConst:
  call _LPMbyte
   Breq _FileWriteStrConstExit1
.OBJ 2D80
.OBJ 93FF
.OBJ 93EF
   rcall _FileWriteByte
.OBJ 91EF
.OBJ 91FF
   brcs _FileWriteStrConstExit2
   Rjmp _FileWriteStrConst
_FileWriteStrConstExit1:
.OBJ 9488
_FileWriteStrConstExit2:
.OBJ 9508
[end]
[_FileWriteDecByte]
$EXTERNAL _FileWrite_StrBuf
$EXTERNAL _NUM2STR
_FileWriteDecByte:
   loadadr ___strbuf , X
  call _PrintDecB
   rjmp _FileWrite_StrBuf
[end]
[_FileWriteDecWord]
$EXTERNAL _FileWrite_StrBuf
$EXTERNAL _NUM2STR
_FileWriteDecWord:
   loadadr ___strbuf , X
  call _PrintWord
   rjmp _FileWrite_StrBuf
[end]
[_FileWriteDecInt]
$EXTERNAL _FileWrite_StrBuf
$EXTERNAL _NUM2STR
_FileWriteDecInt:
   loadadr ___strbuf , X
  call _PrintsDecW
   rjmp _FileWrite_StrBuf
[end]
[_FileWriteDecLong]
$EXTERNAL _FileWrite_StrBuf
$EXTERNAL _NUM2STR
_FileWriteDecLong:
   loadadr ___strbuf , X
  call _PrintLong
   rjmp _FileWrite_StrBuf
[end]
[_FileWriteDecSingle]
$EXTERNAL _FileWrite_StrBuf
$EXTERNAL _FSRAMA1
_FileWriteDecSingle:
   loadadr ___strbuf , X
  call _FSRAMA1
  call _ftoa
   rjmp _FileWrite_StrBuf
[end]
[_FileWriteDecDouble]
$EXTERNAL _FileWrite_StrBuf
_FileWriteDecDouble:
   loadadr ___strbuf , X
.OBJ 2700
   call _Dbl_Bin2ASC_XZ
   rjmp _FileWrite_StrBuf
[end]
[_FileWrite_StrBuf]
$EXTERNAL _FileWriteString
_FileWrite_StrBuf:
   loadadr ___strbuf , X
   rjmp _FileWriteString
[End]
[_FileReadString]
$EXTERNAL _FileReadByte
_FileReadString2StrBuf:
   loadadr ___strbuf , X
_FileReadString:
.OBJ E091
_FileReadString1:
.OBJ 939F
.OBJ 934F
.OBJ 93BF
.OBJ 93AF
   rcall _FileReadByte
.OBJ 91AF
.OBJ 91BF
.OBJ 914F
.OBJ 919F
   brcs _FileReadString8
.OBJ 2399
   breq _FileReadString5
.OBJ FF90
   rjmp _FileReadString2
.OBJ 3282
   brne _FileReadString4
.OBJ E092
   rjmp _FileReadString1
_FileReadString2:
.OBJ FD92
   rjmp _FileReadString5
.OBJ 3282
   brne _FileReadString6
.OBJ E094
   rjmp _FileReadString1
_FileReadString4:
.OBJ 2799
_FileReadString5:
 * cpi r24, ASC(",")
   breq _FileReadString7
 * cpi r24, cVariableSeparator
   breq _FileReadString7
.OBJ 308D
   breq _FileReadString1
.OBJ 308A
   breq _FileReadString7
_FileReadString6:
.OBJ 2344
   breq _FileReadString1
.OBJ FB92
   brts _FileReadString1
.OBJ 938D
.OBJ 954A
   rjmp _FileReadString1
_FileReadString7:
.OBJ 9488
_FileReadString8:
.OBJ E080
.OBJ 938C
.OBJ 9508
[End]
[_FileReadDec2Num]
$EXTERNAL _FileReadString
$EXTERNAL _STR2NUM
_FileReadDec2Num:
.OBJ E04F
   rcall _FileReadString2StrBuf
   loadadr ___strbuf , X
   jmp _Str2Num
[end]
[_FileReadDecSingle]
$EXTERNAL _FileReadString
$EXTERNAL _ASC2FLOAT
_FileReadDecSingle:
.OBJ E04F
   rcall _FileReadString2StrBuf
   loadadr ___strbuf , X
   jmp _Asc2Float
[end]
[_FileReadDecDouble]
$EXTERNAL _FileReadString
_FileReadDecDouble:
.OBJ 93FF
.OBJ 93EF
.OBJ E147
   rcall _FileReadString2StrBuf
   loadadr ___strbuf , X
.OBJ 91EF
.OBJ 91FF
   jmp _Dbl_ASC2Bin_zx
[end]
[_FileReadByteArray]
$EXTERNAL _AddrFileBuffer2Z , _CheckEOF , _CheckFileAccess_Mode , _ClearDOSError , _FileReadByte
$EXTERNAL _FileWriteByteArray , _LoadFileBufferStatusYZ , _LoadFilePositionYZ2A
$EXTERNAL _SaveFilePositionA2YZ , _SetBitFileStatusYZ , _SetDOSError
$EXTERNAL _COMP32
_FileReadByteArray:
 * ldi r25 , cFileRead_Mode
   rcall _CheckFileAccess_Mode
   brcs _FileReadByteArray90
_FileReadByteArray0:
   rcall _LoadFileBufferStatusYZ
 * sbrc r24 , dEOF
   rjmp _FileReadByteArray91
.OBJ 935F
.OBJ 934F
   rcall _CheckEOF
.OBJ 914F
.OBJ 915F
   brcs _FileReadByteArray91
.OBJ 2766
.OBJ 2777
  call _Comp32
   brcc _FileReadByteArray2
.OBJ 2F40
.OBJ 2F51
_FileReadByteArray2:
   rcall _FilePosition2A_BufferByte
_FileReadByteArray3:
.OBJ 5041
.OBJ 4050
   brcs _FileReadByteArray80
.OBJ 3F0F
   brne _FileReadByteArray5
.OBJ FF10
   rjmp _FileReadByteArray5
   rcall _SaveFilePositionA2YZ
.OBJ 93BF
.OBJ 93AF
.OBJ 935F
.OBJ 934F
   rcall _FileReadByte0
.OBJ 914F
.OBJ 915F
.OBJ 91AF
.OBJ 91BF
   brcs _FileReadByteArray90
   rcall _LoadFilePositionYZ2A
   rcall _AddrFileBuffer2Z
   rjmp _FileReadByteArray7
_FileReadByteArray5:
.OBJ 5F0F
.OBJ 4F1F
.OBJ 9181
_FileReadByteArray7:
.OBJ 938D
   rjmp _FileReadByteArray3
_FileReadByteArray80:
   rcall _SaveFilePositionA2YZ
   rcall _CheckEOF
   rjmp _ClearDOSError
_FileReadByteArray90:
.OBJ 9508
_FileReadByteArray91:
   rcall _SetBitEOFYZ
 * ldi r25 , cpEndOfFile
   rjmp _SetDOSError
[end]
[_Position2SeqCluster]
_Position2SeqCluster:
   lds r24, {gbSectorsPerCluster}
.OBJ 9536
.OBJ 9527
.OBJ 9517
.OBJ 2F41
.OBJ E090
_Position2SeqCluster2:
.OBJ 9586
   brcs _Position2SeqCluster3
.OBJ 9536
.OBJ 9527
.OBJ 9517
.OBJ 9408
.OBJ 1F99
   rjmp _Position2SeqCluster2
_Position2SeqCluster3:
.OBJ 2EC1
.OBJ 2ED2
.OBJ 2EE3
.OBJ 2349
.OBJ 9508
[end]
[_FileWriteByteArray]
$EXTERNAL _AddrFileBuffer2Z , _AddrFileHandleBase2Z , _CheckEOF , _CheckFileAccess_Mode
$EXTERNAL _ClearDOSError , _FileWriteByte , _LoadFilePositionYZ2A , _LoadFileSizeYZ2B
$EXTERNAL _SaveFilePositionA2YZ , _SaveFileSizeA2YZ , _SetBitFileStatusYZ , _SetFileWritePending
_FileWriteByteArray:
 * ldi r25 , cFileWrite_Mode
   rcall _CheckFileAccess_Mode
   brcs _FileWriteByteArray90
_FileWriteByteArray0:
   rcall _FilePosition2A_BufferByte
_FileWriteByteArray1:
.OBJ 5041
.OBJ 4050
   brcs _FileWriteByteArray80
.OBJ 918D
 * sbrc r25 , dFileEmpty
   rjmp _FileWriteByteArray2
.OBJ 3F0F
   brne _FileWriteByteArray3
.OBJ FF10
   rjmp _FileWriteByteArray3
_FileWriteByteArray2:
   rcall _SaveFilePositionA2YZ
.OBJ 93BF
.OBJ 93AF
.OBJ 935F
.OBJ 934F
   rcall _FileWriteByte0
.OBJ 914F
.OBJ 915F
.OBJ 91AF
.OBJ 91BF
   brcs _FileWriteByteArray90
   rjmp _FileWriteByteArray0
_FileWriteByteArray3:
.OBJ 9381
.OBJ 5F0F
.OBJ 4F1F
   rjmp _FileWriteByteArray1
_FileWriteByteArray80:
   rcall _SetFileWritePending
   rcall _LoadFileSizeYZ2B
.OBJ 1740
.OBJ 751
.OBJ 762
.OBJ 773
   brcc _FileWriteByteArray81
   rcall _SaveFileSizeA2YZ
 * ldi r24 , dmFATDirWritePending
   rcall _SetBitFileStatusYZ
_FileWriteByteArray81:
   rcall _SaveFilePositionA2YZ
   rcall _CheckEOF
   rjmp _ClearDOSError
_FileWriteByteArray90:
.OBJ 9508
_FilePosition2A_BufferByte:
   rcall _AddrFileHandleBase2Z
 * ldd r25 , Z + co_FileBufferStatus
   rcall _LoadFilePositionYZ2A
   rcall _AddrFileBuffer2Z
.OBJ 2F71
.OBJ 7071
.OBJ FE0
.OBJ 1FF7
.OBJ 9508
[end]
[_CheckEOF]
$EXTERNAL _AddrFileHandleBase2Z , _LoadFilePositionYZ2B , _LoadFileSizeYZ2A
$EXTERNAL _SUB32
_CheckEOF:
.OBJ 81E8
.OBJ 81F9
 * ldd r24 , Z + co_FileBufferStatus
   rcall _LoadFileSizeYZ2A
   rcall _LoadFilePositionYZ2B
   rcall _AddrFileHandleBase2Z
  call _Sub32
   brcs _CheckEOF3
   breq _CheckEOF3
 * cbr r24 , dmEOF
 * std Z + co_FileBufferStatus , r24
.OBJ 9488
.OBJ 9508
_CheckEOF3:
 * sbr r24 , dmEOFAll
 * std Z + co_FileBufferStatus , r24
.OBJ 9408
.OBJ 9508
[end]
[_SetDirTimeDate]
_SetDirTimeDate:
*#IF VarExist("_Sec")
   *#IF _USERCLOCK = 1
.OBJ 93BF
.OBJ 93AF
     call Getdatetime
.OBJ 91AF
.OBJ 91BF
  *#ENDIF
   loadadr _Sec , Z
.OBJ 90A1
.OBJ 90B1
.OBJ 90C1
.OBJ 90D1
.OBJ 90E1
.OBJ 90F1
*#ELSE
.OBJ E081
.OBJ 24AA
.OBJ 24BB
.OBJ 2EC8
.OBJ 2ED8
.OBJ 2EE8
.OBJ 2EF8
*#ENDIF
.OBJ CCC
.OBJ CCC
.OBJ CCC
.OBJ 2788
.OBJ 94B6
.OBJ 9587
.OBJ 94B6
.OBJ 9587
.OBJ 298A
.OBJ 94B6
.OBJ 9587
.OBJ 28BC
.OBJ 938D
.OBJ 92BD
.OBJ E184
.OBJ D8F
.OBJ 94E2
.OBJ CEE
.OBJ 1F88
.OBJ 28ED
.OBJ 92ED
.OBJ 938D
.OBJ 9508
[End]
[_GetDiskFreeSize]
$EXTERNAL _GetDiskSize , _GetFreeCluster
_GetDiskFreeSize:
   rcall _GetFreeCluster0
   * cpi r25 , cpNoFreeCluster
   brne _GetDiskFreeSize1
.OBJ 2F04
.OBJ 2F15
.OBJ 2F26
.OBJ 2F37
   rjmp _GetDiskSize0
_GetDiskFreeSize1:
.OBJ 9508
[end]
[_GetDiskSize]
$EXTERNAL _ClearDOSError , _LongX2A
_GetDiskSize:
   loadadr glMaxClusterNumber , X
   rcall _LongX2A
.OBJ 5001
.OBJ 4010
.OBJ 4020
.OBJ 4030
_GetDiskSize0:
   lds r24, {gbSectorsPerCluster}
.OBJ FD80
   rjmp _GetDiskSize2
_GetDiskSize1:
.OBJ FD81
   rjmp _GetDiskSize9
.OBJ F00
.OBJ 1F11
.OBJ 1F22
.OBJ 1F33
.OBJ 9586
   rjmp _GetDiskSize1
_GetDiskSize2:
.OBJ 9536
.OBJ 9527
.OBJ 9517
.OBJ 9507
_GetDiskSize9:
   rjmp _ClearDOSError
[End]
[_CompareRange]
$EXTERNAL _Mem_Copy
_CompareRange_Update:
.OBJ 9468
   rjmp _CompareRange1
_CompareRange:
.OBJ 94E8
_CompareRange1:
.OBJ 93FA
.OBJ 93EA
.OBJ 93BA
.OBJ 93AA
.OBJ 2E08
.OBJ 1788
 * in r12 , SREG
_CompareRange2:
.OBJ 90A1
.OBJ 90BD
 * out SREG , r12
.OBJ 4AB
 * in r12 , SREG
.OBJ 958A
   brne _CompareRange2
 * out SREG , r12
   brtc _CompareRange9
   brcc _CompareRange9
.OBJ 2D80
.OBJ 81A8
.OBJ 81B9
.OBJ 81EA
.OBJ 81FB
   rcall _Mem_Copy
 * out SREG , r12
_CompareRange9:
.OBJ 91A9
.OBJ 91B9
.OBJ 91E9
.OBJ 91F9
.OBJ 9508
[end]
