; C02 Module direct Assembly Language Routines for run6502 emulator ; This is the reference implementation of the direct module ; Requires external function FSCMD and FSDRVN (fileio.h02) SUBROUTINE DIRECT TOPDIR BYTE "/",0 ;Root Directory UPDIR BYTE "..",0 ;Parent Directory ;getcwd(drv, &dir) - Get Current Directory ;Args: A = Drive Identifier ; Y,X = Pointer to String ;Returns: A = Length of Directory Name ; Y = Error Code (0 = None) GETCWD: JSR FSADDR ;Set String Buffer Address TAY ;Set Drive ID CLC ;Set Mode to GETCWD LDA #'U' ;Set Command to GETSETDIR .FSCMDX JSR FSCMD ;Execute Command TXA ;Return Length of Name RTS ;chdir(drv, &dir) - Set Current Directory ;Args: A = Drive Identifier ; Y,X = Pointer to String ;Returns: A = Error Code (0 = None) CHDIR: JSR FSNAME ;Set Directory Name TAY ;Set Drive ID SEC ;Set Mode to CHDIR LDA #'U' ;Set Command to GETSETDIR .FSCMDY JSR FSCMD ;Execute Command TYA ;Return Length of Name RTS ;rmdir(drv, &dir) - Create Directory ;Args: A = Drive Identifier ; Y,X = Address of Directory Name String ;Returns: A = Error Code (0 = None) RMDIR: SEC ;Set Mode to RMDIR BCS .MRDIR ;Execute MKRMDIR and Return Result ;mkdir(drv, &dir) - Create Directory ;Args: A = Drive Identifier ; Y,X = Address of Directory Name String ;Returns: A = Error Code (0 = None) MKDIR: CLC ;Set Mode to MKDIR .MRDIR JSR FSNAME ;Set Directory Name TAY ;Set Drive ID LDA #'X' ;Set Command to MKRMDIR BNE .FSCMDY ;Execute Command and Return Result