[CODE]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]
[_BLoad]
$EXTERNAL _CleanHWStack , _CloseFileHandle , _FileReadByteArray , _GetFreeFileNumber
$EXTERNAL _LoadFileSizeYZ2B , _NormFileName , _OpenFile , _SetDOSError , _SetFileNameError
_BLoad:
.OBJ 93FF
.OBJ 93EF
rcall _GetFreeFileNumber
brcs _BLoad3
rcall _Normfilename
brne _BLoad2
* ldi r25 , cpFileOpenInput
rcall _OpenFile
.OBJ 91AF
.OBJ 91BF
brcs _BLoad1
.OBJ 93FA
.OBJ 93EA
rcall _LoadFileSizeYZ2B
.OBJ 2B67
brne _BLoad4
call _FileReadByteArray0
* in r24 , SREG
.OBJ 938F
rcall _CloseFileHandle_Y
.OBJ 9622
.OBJ 918F
* out SREG , r24
_BLoad1:
.OBJ 9508
_BLoad2:
rcall _SetFileNameWildCardError
_BLoad3:
rjmp _CleanHWStack2
_BLoad4:
* ldi r25 , cpFileSizeToGreat
rjmp _SetDOSError_add2toY
[End]
[_BSave]
$EXTERNAL _CleanHWStack , _CloseFileHandle , _CreateFile , _FileWriteByteArray , _GetFreeFileNumber
$EXTERNAL _NormFileName , _SetFileNameError
_BSave:
.OBJ 93FF
.OBJ 93EF
.OBJ 935F
.OBJ 934F
rcall _GetFreeFileNumber
brcs _BSave3
rcall _Normfilename
brne _BSave2
* ldi r25 , cpFileOpenOutput
rcall _CreateFile_DeleteOld
.OBJ 914F
.OBJ 915F
.OBJ 91AF
.OBJ 91BF
brcs _BSave1
.OBJ 93FA
.OBJ 93EA
call _FileWriteByteArray0
* in r24 , SREG
.OBJ 938F
rcall _CloseFileHandle_Y
.OBJ 9622
.OBJ 918F
* out SREG , r24
_BSave1:
.OBJ 9508
_BSave2:
rcall _SetFileNameWildCardError
_BSave3:
rjmp _CleanHWStack4
[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_FileHa