'显示长文件名的例子:编程语言qbasic 4.5,运行环境DOS7.1,win98下DOS
COMMON SHARED Filedta AS STRING * 500
DIM SHARED filefindhandle%
FileName$ = "*.*" '要显示所有文件
FileAttrib% = &HFF '显示所有属性
PRINT GetFileList$("*.*", &HFF, FileNum%) '调用模块
PRINT FileNum% '显示文件数
FUNCTION ChangeDir% (DirName$)
'更改长目录
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
DirName$ = DirName$ + CHR$(0)
Reg%(Ds%) = VARSEG(DirName$)
Reg%(Dx%) = SADD(DirName$)
Reg%(ax%) = &H713B
CALL INT86XOLD(&H21, Reg%(), Reg%())
ChangeDir% = Reg%(Flags%) AND 1
END FUNCTION
DEFINT A-Z
'Changes current drive.
FUNCTION ChangeDrive% (Drive$)
'改变盘符:入口AH=0E DL=0A,1B..
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Drive$ = UCASE$(Drive$)
Reg%(0) = &HE00
Reg%(3) = ASC(Drive$) - 65
CALL INT86XOLD(&H21, Reg%(), Reg%())
ChangeDrive% = -1
END FUNCTION
DEFSNG A-Z
SUB CloseFile (FileHandle%)
'关闭文件句柄
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Reg%(1) = FileHandle%
Reg%(0) = &H3E00
CALL INT86XOLD(&H21, Reg%(), Reg%())
END SUB
FUNCTION CreateDir% (DirName$)
'建立长目录
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
DirName$ = DirName$ + CHR$(0)
Reg%(Ds%) = VARSEG(DirName$)
Reg%(Dx%) = SADD(DirName$)
Reg%(ax%) = &H7139
CALL INT86XOLD(&H21, Reg%(), Reg%())
CreateDir% = Reg%(Flags%) AND 1
END FUNCTION
FUNCTION CreateFile% (FileName$)
'建立长文件
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(Ds%) = VARSEG(FileName$)
Reg%(Si%) = SADD(FileName$)
Reg%(Cx%) = &H20
Reg%(Bx%) = 2
Reg%(Dx%) = &H10
Reg%(ax%) = &H716C
CALL INT86XOLD(&H21, Reg%(), Reg%())
CreateFile% = -1
IF (Reg%(Flags%) AND 1) = 0 THEN CreateFile% = Reg%(ax%)
END FUNCTION
DEFINT A-Z
FUNCTION CurrentDrive$
'获得当前盘符:入口AH=19 返回AL=0A,1B...
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Drive$ = UCASE$(Drive$)
Reg%(0) = &H1900
CALL INT86XOLD(&H21, Reg%(), Reg%())
a% = Reg%(0)
CurrentDrive$ = CHR$(65 + (Reg%(0) AND &HFF))
END FUNCTION
FUNCTION CurrentPath$ (DeviceNum%)
'获得当前路径:入口AH=7147 DL=00 Current, 1A,1B... 返回DS:SI地址=路径字符串
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM PathSize AS STRING * 255
DIM Reg%(9)
Reg%(0) = &H7147
Reg%(3) = DeviceNum%
Reg%(8) = VARSEG(PathSize)
Reg%(5) = VARPTR(PathSize)
CALL INT86XOLD(&H21, Reg%(), Reg%())
CurrentPath$ = LEFT$(PathSize, INSTR(PathSize, CHR$(0)) - 1)
END FUNCTION
DEFSNG A-Z
FUNCTION DelDir% (DirName$)
'删除长目录
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
DirName$ = DirName$ + CHR$(0)
Reg%(Ds%) = VARSEG(DirName$)
Reg%(Dx%) = SADD(DirName$)
Reg%(ax%) = &H713A
CALL INT86XOLD(&H21, Reg%(), Reg%())
DelDir% = Reg%(Flags%) AND 1
END FUNCTION
FUNCTION DelFile% (FileName$, FileAttrib%)
'删除文件
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
FileName$ = FileName$ + CHR$(0)
Reg%(Ds%) = VARSEG(FileName$)
Reg%(Dx%) = SADD(FileName$)
Reg%(Si%) = 0
Reg%(Cx%) = FileAttrib%
Reg%(ax%) = &H7141
CALL INT86XOLD(&H21, Reg%(), Reg%())
DleDir% = Reg%(Flags%) AND 1
END FUNCTION
DEFINT A-Z
FUNCTION FindDrives% (Drive$)
'查找磁盘
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Reg%(0) = &H440E
Reg%(1) = ASC(Drive$) - 64
CALL INT86XOLD(&H21, Reg%(), Reg%())
IF (Reg%(7) AND 1) = 1 THEN
FindDrives% = -1
ELSE
FindDrives% = Reg%(0) AND 255
END IF
END FUNCTION
FUNCTION FindFirstFile% (FileName$, FileAttrib%)
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(0) = &H714E
Reg%(5) = 0
Reg%(9) = VARSEG(Filedta)
Reg%(6) = VARPTR(Filedta)
Reg%(8) = VARSEG(FileName$)
Reg%(3) = SADD(FileName$)
Reg%(2) = FileAttrib%
CALL INT86XOLD(&H21, Reg%(), Reg%())
FindFirstFile% = 1
IF (Reg%(7) AND 1) = 0 THEN FindFirstFile% = Reg%(0)
END FUNCTION
FUNCTION FindNextFile%
'查找成功根据调用查找下一个文件 入口AH=4F DS

X=文件名,返回AX=错误码
DIM Reg%(9)
Reg%(0) = &H714F
Reg%(1) = filefindhandle%
Reg%(9) = VARSEG(Filedta)
Reg%(6) = VARPTR(Filedta)
CALL INT86XOLD(&H21, Reg%(), Reg%())
FindNextFile% = Reg%(7) AND 1
END FUNCTION
DEFSNG A-Z
FUNCTION GetDir$
'获得长目录列表
DIM DirTem AS STRING * 12 ' Temp AS STRING * 12
'SetFileDta
FileName$ = "*.*"
FileAttrib% = &HFF
IF FindFirstFile%(FileName$, FileAttrib%) = 1 THEN EXIT FUNCTION
DO
Find% = INSTR(31, Filedta$, CHR$(0)) - 31
FileName$ = MID$(Filedta$, 31, Find%)
FileAttrib% = CVI((MID$(Filedta$, 21, 2)))
IF FileAttrib% = 4096 THEN
MID$(DirTem, 1, 12) = FileName$
Temp$ = Temp$ + DirTem
END IF
LOOP WHILE FindNextFile% = 0
GetDir$ = Temp$
END FUNCTION
DEFINT A-Z
FUNCTION GetFileList$ (FileName$, FileAttrib%, FileNum%)
'获得长文件列表
IF FileName$ = "" THEN FileName$ = "*.*"
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(0) = &H714E
Reg%(5) = 0
Reg%(9) = VARSEG(Filedta)
Reg%(6) = VARPTR(Filedta)
Reg%(8) = VARSEG(FileName$)
Reg%(3) = SADD(FileName$)
Reg%(2) = FileAttrib%
CALL INT86XOLD(&H21, Reg%(), Reg%())
IF (Reg%(7) AND 1) = 1 THEN EXIT FUNCTION
FFh% = Reg%(0)
i% = 0
DO
Find% = INSTR(&H2D, Filedta, CHR$(0)) - &H2C
FileName$ = MID$(Filedta, &H2D, Find%)
Reg%(0) = &H714F
Reg%(1) = FFh%
CALL INT86XOLD(&H21, Reg%(), Reg%())
Flags% = Reg%(7) AND 1
Temp$ = Temp$ + FileName$
i% = i% + 1
LOOP UNTIL Flags% = 1
GetFileList$ = Temp$
FileNum% = i%
END FUNCTION
FUNCTION NumDrives%
'返回逻辑盘符的数量
FOR i% = 0 TO 25
IF FindDrives%(CHR$(i% + 65)) = -1 THEN
NumDrives% = i% - 1
EXIT FOR
END IF
NEXT i%
END FUNCTION
DEFSNG A-Z
FUNCTION OpenFile% (FileName$, OpenMode%, FileHandle%)
'ReadMode% 0,Read 1,Write 2,Read/Write 4,Read(No change Time)
'OpenMode% 1,Open file 2,ClsFile and Open 10h NoFile To Create File
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(Ds%) = VARSEG(FileName$)
Reg%(Si%) = SADD(FileName$)
Reg%(Cx%) = &H20 'FileAttrib
Reg%(Bx%) = 2 'ReadMode
Reg%(Dx%) = OpenMode%
Reg%(ax%) = &H716C
CALL INT86XOLD(&H21, Reg%(), Reg%())
OpenFile% = Reg%(Flags%) AND 1
FileHandle% = Reg%(ax%)
END FUNCTION
FUNCTION ReadFile% (Buff$, ReadLen%, FileHandle%)
DIM Reg%(9)
IF Buff$ = "" THEN Buff$ = SPACE$(ReadLen%)
Reg%(8) = VARSEG(Buff$)
Reg%(3) = SADD(Buff$)
Reg%(0) = &H3F00
Reg%(1) = FileHandle%
Reg%(2) = ReadLen%
CALL INT86XOLD(&H21, Reg%(), Reg%())
ReadFile% = Reg%(7) AND 1
ReadLen% = Reg%(0)
END FUNCTION
FUNCTION RenFile% (OldFile$, NewFile$)
'文件改名:入口AH=56 DS

X=旧文件地址 ES

I=新
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
OldFile$ = OldFile$ + CHR$(0)
NewFile$ = NewFile$ + CHR$(0)
Reg%(8) = VARSEG(OldFile$)
Reg%(3) = SADD(OldFile$)
Reg%(9) = VARSEG(NewFile$)
Reg%(6) = SADD(NewFile$)
Reg%(0) = &H7156
CALL INT86XOLD(&H21, Reg%(), Reg%())
FileRen% = Reg%(0)
END FUNCTION
FUNCTION WriteFile% (Buff$, WriteLen%, FileHandle%)
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
Reg%(Ds%) = VARSEG(Buff$)
Reg%(Dx%) = SADD(Buff$)
Reg%(Bx%) = FileHandle%
Reg%(Cx%) = WriteLen%
Reg%(ax%) = &H4000
CALL INT86XOLD(&H21, Reg%(), Reg%())
WriteFile% = Reg%(Flags%) AND 1
WriteLen% = Reg%(Cx%)
END FUNCTION
Example of displaying long file names: Programming language qbasic 4.5, running environment DOS 7.1, DOS under win98
COMMON SHARED Filedta AS STRING * 500
DIM SHARED filefindhandle%
FileName$ = "*.*" 'Display all files
FileAttrib% = &HFF 'Display all attributes
PRINT GetFileList$("*.*", &HFF, FileNum%) 'Call module
PRINT FileNum% 'Display the number of files
FUNCTION ChangeDir% (DirName$)
'Change long directory
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
DirName$ = DirName$ + CHR$(0)
Reg%(Ds%) = VARSEG(DirName$)
Reg%(Dx%) = SADD(DirName$)
Reg%(ax%) = &H713B
CALL INT86XOLD(&H21, Reg%(), Reg%())
ChangeDir% = Reg%(Flags%) AND 1
END FUNCTION
DEFINT A-Z
'Changes current drive.
FUNCTION ChangeDrive% (Drive$)
'Change drive letter: entry AH=0E DL=0A,1B..
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Drive$ = UCASE$(Drive$)
Reg%(0) = &HE00
Reg%(3) = ASC(Drive$) - 65
CALL INT86XOLD(&H21, Reg%(), Reg%())
ChangeDrive% = -1
END FUNCTION
DEFSNG A-Z
SUB CloseFile (FileHandle%)
'Close file handle
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Reg%(1) = FileHandle%
Reg%(0) = &H3E00
CALL INT86XOLD(&H21, Reg%(), Reg%())
END SUB
FUNCTION CreateDir% (DirName$)
'Create long directory
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
DirName$ = DirName$ + CHR$(0)
Reg%(Ds%) = VARSEG(DirName$)
Reg%(Dx%) = SADD(DirName$)
Reg%(ax%) = &H7139
CALL INT86XOLD(&H21, Reg%(), Reg%())
CreateDir% = Reg%(Flags%) AND 1
END FUNCTION
FUNCTION CreateFile% (FileName$)
'Create long file
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(Ds%) = VARSEG(FileName$)
Reg%(Si%) = SADD(FileName$)
Reg%(Cx%) = &H20
Reg%(Bx%) = 2
Reg%(Dx%) = &H10
Reg%(ax%) = &H716C
CALL INT86XOLD(&H21, Reg%(), Reg%())
CreateFile% = -1
IF (Reg%(Flags%) AND 1) = 0 THEN CreateFile% = Reg%(ax%)
END FUNCTION
DEFINT A-Z
FUNCTION CurrentDrive$
'Get current drive letter: entry AH=19 returns AL=0A,1B...
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Drive$ = UCASE$(Drive$)
Reg%(0) = &H1900
CALL INT86XOLD(&H21, Reg%(), Reg%())
a% = Reg%(0)
CurrentDrive$ = CHR$(65 + (Reg%(0) AND &HFF))
END FUNCTION
FUNCTION CurrentPath$ (DeviceNum%)
'Get current path: entry AH=7147 DL=00 Current, 1A,1B... returns DS:SI address=path string
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM PathSize AS STRING * 255
DIM Reg%(9)
Reg%(0) = &H7147
Reg%(3) = DeviceNum%
Reg%(8) = VARSEG(PathSize)
Reg%(5) = VARPTR(PathSize)
CALL INT86XOLD(&H21, Reg%(), Reg%())
CurrentPath$ = LEFT$(PathSize, INSTR(PathSize, CHR$(0)) - 1)
END FUNCTION
DEFSNG A-Z
FUNCTION DelDir% (DirName$)
'Delete long directory
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
DirName$ = DirName$ + CHR$(0)
Reg%(Ds%) = VARSEG(DirName$)
Reg%(Dx%) = SADD(DirName$)
Reg%(ax%) = &H713A
CALL INT86XOLD(&H21, Reg%(), Reg%())
DelDir% = Reg%(Flags%) AND 1
END FUNCTION
FUNCTION DelFile% (FileName$, FileAttrib%)
'Delete file
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
FileName$ = FileName$ + CHR$(0)
Reg%(Ds%) = VARSEG(FileName$)
Reg%(Dx%) = SADD(FileName$)
Reg%(Si%) = 0
Reg%(Cx%) = FileAttrib%
Reg%(ax%) = &H7141
CALL INT86XOLD(&H21, Reg%(), Reg%())
DleDir% = Reg%(Flags%) AND 1
END FUNCTION
DEFINT A-Z
FUNCTION FindDrives% (Drive$)
'Find disk
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
Reg%(0) = &H440E
Reg%(1) = ASC(Drive$) - 64
CALL INT86XOLD(&H21, Reg%(), Reg%())
IF (Reg%(7) AND 1) = 1 THEN
FindDrives% = -1
ELSE
FindDrives% = Reg%(0) AND 255
END IF
END FUNCTION
FUNCTION FindFirstFile% (FileName$, FileAttrib%)
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(0) = &H714E
Reg%(5) = 0
Reg%(9) = VARSEG(Filedta)
Reg%(6) = VARPTR(Filedta)
Reg%(8) = VARSEG(FileName$)
Reg%(3) = SADD(FileName$)
Reg%(2) = FileAttrib%
CALL INT86XOLD(&H21, Reg%(), Reg%())
FindFirstFile% = 1
IF (Reg%(7) AND 1) = 0 THEN FindFirstFile% = Reg%(0)
END FUNCTION
FUNCTION FindNextFile%
'If the search is successful, call to find the next file. Entry AH=4F DS:DX=file name, return AX=error code
DIM Reg%(9)
Reg%(0) = &H714F
Reg%(1) = filefindhandle%
Reg%(9) = VARSEG(Filedta)
Reg%(6) = VARPTR(Filedta)
CALL INT86XOLD(&H21, Reg%(), Reg%())
FindNextFile% = Reg%(7) AND 1
END FUNCTION
DEFSNG A-Z
FUNCTION GetDir$
'Get long directory list
DIM DirTem AS STRING * 12 ' Temp AS STRING * 12
'SetFileDta
FileName$ = "*.*"
FileAttrib% = &HFF
IF FindFirstFile%(FileName$, FileAttrib%) = 1 THEN EXIT FUNCTION
DO
Find% = INSTR(31, Filedta$, CHR$(0)) - 31
FileName$ = MID$(Filedta$, 31, Find%)
FileAttrib% = CVI((MID$(Filedta$, 21, 2)))
IF FileAttrib% = 4096 THEN
MID$(DirTem, 1, 12) = FileName$
Temp$ = Temp$ + DirTem
END IF
LOOP WHILE FindNextFile% = 0
GetDir$ = Temp$
END FUNCTION
DEFINT A-Z
FUNCTION GetFileList$ (FileName$, FileAttrib%, FileNum%)
'Get long file list
IF FileName$ = "" THEN FileName$ = "*.*"
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(0) = &H714E
Reg%(5) = 0
Reg%(9) = VARSEG(Filedta)
Reg%(6) = VARPTR(Filedta)
Reg%(8) = VARSEG(FileName$)
Reg%(3) = SADD(FileName$)
Reg%(2) = FileAttrib%
CALL INT86XOLD(&H21, Reg%(), Reg%())
IF (Reg%(7) AND 1) = 1 THEN EXIT FUNCTION
FFh% = Reg%(0)
i% = 0
DO
Find% = INSTR(&H2D, Filedta, CHR$(0)) - &H2C
FileName$ = MID$(Filedta, &H2D, Find%)
Reg%(0) = &H714F
Reg%(1) = FFh%
CALL INT86XOLD(&H21, Reg%(), Reg%())
Flags% = Reg%(7) AND 1
Temp$ = Temp$ + FileName$
i% = i% + 1
LOOP UNTIL Flags% = 1
GetFileList$ = Temp$
FileNum% = i%
END FUNCTION
FUNCTION NumDrives%
'Return the number of logical drives
FOR i% = 0 TO 25
IF FindDrives%(CHR$(i% + 65)) = -1 THEN
NumDrives% = i% - 1
EXIT FOR
END IF
NEXT i%
END FUNCTION
DEFSNG A-Z
FUNCTION OpenFile% (FileName$, OpenMode%, FileHandle%)
'ReadMode% 0,Read 1,Write 2,Read/Write 4,Read(No change Time)
'OpenMode% 1,Open file 2,ClsFile and Open 10h NoFile To Create File
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
FileName$ = FileName$ + CHR$(0)
DIM Reg%(9)
Reg%(Ds%) = VARSEG(FileName$)
Reg%(Si%) = SADD(FileName$)
Reg%(Cx%) = &H20 'FileAttrib
Reg%(Bx%) = 2 'ReadMode
Reg%(Dx%) = OpenMode%
Reg%(ax%) = &H716C
CALL INT86XOLD(&H21, Reg%(), Reg%())
OpenFile% = Reg%(Flags%) AND 1
FileHandle% = Reg%(ax%)
END FUNCTION
FUNCTION ReadFile% (Buff$, ReadLen%, FileHandle%)
DIM Reg%(9)
IF Buff$ = "" THEN Buff$ = SPACE$(ReadLen%)
Reg%(8) = VARSEG(Buff$)
Reg%(3) = SADD(Buff$)
Reg%(0) = &H3F00
Reg%(1) = FileHandle%
Reg%(2) = ReadLen%
CALL INT86XOLD(&H21, Reg%(), Reg%())
ReadFile% = Reg%(7) AND 1
ReadLen% = Reg%(0)
END FUNCTION
FUNCTION RenFile% (OldFile$, NewFile$)
'Rename file: entry AH=56 DS:DX=old file address ES:DI=new
'ax% = 0: bx% = 1: cx% = 2: dx% = 3: bp% = 4
'si% = 5: di% = 6: flags% = 7: ds% = 8: es% = 9
DIM Reg%(9)
OldFile$ = OldFile$ + CHR$(0)
NewFile$ = NewFile$ + CHR$(0)
Reg%(8) = VARSEG(OldFile$)
Reg%(3) = SADD(OldFile$)
Reg%(9) = VARSEG(NewFile$)
Reg%(6) = SADD(NewFile$)
Reg%(0) = &H7156
CALL INT86XOLD(&H21, Reg%(), Reg%())
FileRen% = Reg%(0)
END FUNCTION
FUNCTION WriteFile% (Buff$, WriteLen%, FileHandle%)
ax% = 0: Bx% = 1: Cx% = 2: Dx% = 3: bp% = 4
Si% = 5: di% = 6: Flags% = 7: Ds% = 8: es% = 9
DIM Reg%(9)
Reg%(Ds%) = VARSEG(Buff$)
Reg%(Dx%) = SADD(Buff$)
Reg%(Bx%) = FileHandle%
Reg%(Cx%) = WriteLen%
Reg%(ax%) = &H4000
CALL INT86XOLD(&H21, Reg%(), Reg%())
WriteFile% = Reg%(Flags%) AND 1
WriteLen% = Reg%(Cx%)
END FUNCTION