Lesson 8. File Managing.

Prev || Home || Next

bar.gif (11170 bytes)

Ways of working with files

Work methods with files

FCB method

Introduction
Open files
Create a new file
Sequential writing
Sequential reading
Aleatory reading and writing
Close a file

Channels of communication method

Working with handles
Functions to use handles

WORK METHODS WITH FILES
There are two ways to work with files, the first one is by means of file control
blocks or "FCB" and the second one is by means of com

The first way of file handling has been used since the CPM operative system,
predecessor of DOS, thus it assures certain compatibility with very old files
from the CPM as well as from the 1.0 version of the DOS, besides this method
allows us to have an unlimited number of open files at the same time. If you
want to create a volume for the disk the only way to achieve this is by using
this method.

Even after considering the advantages of the FCB, the use of the communication channels it is much simpler and it allows us a
better handling of errors, besides, since it is much newer it is very probable that the files created this way maintain
themselves compatible through later versions of the operative system.

For a greater facility on later explanations I will refer to the file control
blocks as FCB's and to the communication channels as handles.

INTRODUCTION
There are two types of FCB, the normal, whose length is 37 bytes and the
extended one of 44 bytes.
On this tutorial we will only deal with the first type, so from now on when I
refer to an FCB, I am really talking about a 37 bytes FCB.

The FCB is composed of information given by the programmer and by information which it takes directly from the operative system.
When these types of files are used it is only possible to work on the current directory since the FCB's do not provide support
for the use of the organization by directories of DOS

The FCB is formed by the following fields:
POSITION LENGTH MEANING
00H 1 Byte Drive
01H 8 Bytes File name
09H 3 Bytes Extension
0CH 2 Bytes Block number
0EH 2 Bytes Register size
10H 4 Bytes File size
14H 2 Bytes Creation date
16H 2 Bytes Creation hour
18H 8 Bytes Reserved
20H 1 Bytes Current register
21H 4 Bytes Aleatory register
To select the work drive the next format is followed: drive A = 1; drive B = 2;
etc. If 0 is used the drive being used at that moment will be taken as option.

The name of the file must be justified to the left and in case it is necessary
the remaining bytes will have to be filled with spaces, and the extension of the
file is placed the same way.

The current block and the current register tell the computer which register will be accessed on reading or writing operations.
A block is a group of 128
registers. The first block of the file is the block 0. The first register is the
register 0, therefore the last register of the first block would be the 127,
since the numbering started with 0 and the block can contain 128 registers in
total.


OPENING FILES
To open an FCB file the 21H interruption, 0FH function is used. The unit, the
name and extension of the file must be initialized before opening it.

The DX register must point to the block. If the value of FFH is returned on the
AH register when calling on the interruption then the file was not found, if
everything came out well a value of 0 will be returned.

If the file is opened then DOS initializes the current block to 0, the size of
the register to 128 bytes and the size of the same and its date are filled with
the information found in the directory.
CREATING A NEW FILE
For the creation of files the 21H interruption 16H function is used.

DX must point to a control structure whose requirements are that at least the
logic unit, the name and the extension of the file be defined.

In case there is a problem the FFH value will be returned on AL, otherwise this register will contain a value of 0.
SEQUENTIAL WRITING
Before we can perform writing to the disk it is necessary to define the data
transfer area using for this end the 1AH function of the 21H interruption.

The 1AH function does not return any state of the disk nor or the operation, but the 15H function, which is the one we will use
to write to the disk, does it on the AL register, if this one is equal to zero there was no error and the fields
of the current register and block are updated.
SEQUENTIAL READING
Before anything we must define the file transfer area or DTA.

In order to sequentially read we use the 14H function of the 21H interruption.

The register to be read is the one which is defined by the current block and
register. The AL register returns to the state of the operation, if AL contains
a value of 1 or 3 it means we have reached the end of the file. A value of 2
means that the FCB is wrongly structured.

In case there is no error, AL will contain the value of 0 and the fields of the
current block and register are updated.
ALEATORY READING AND WRITING
The 21H function and the 22H function of the 21H interruption are the ones in
charge of realizing the Aleatory readings and writings respectively.

The Aleatory register number and the current block are used to calculate the
relative position of the register to read or write.

The AL register returns the same information for the sequential reading of
writing.


The information to be read will be returned on the transfer area of the disk, likewise the information to be written resides
on the DTA.

CLOSING A FILE

To close a file we use the 10H function of the 21H interruption.

If after invoking this function, the AL register contains the FFH value, this
means that the file has changed position, the disk was changed or there is error of disk access.
WORKING WITH HANDLES
The use of handles to manage files greatly facilitates the creation of files and
programmer can concentrate on other aspects of the programming without worrying on details which can be handled by the operative
system.

The easy use of the handles consists in that to operate o a file, it is only
necessary to define the name of the same and the number of the handle to use, all the rest of the information is internally
handled by the DOS.

When we use this method to work with files, there is no distinction between
sequential or Aleatory accesses, the file is simply taken as a chain of bytes.
FUNCTIONS TO USE HANDLES
The functions used for the handling of files through handles are described in
unit 6: Interruptions, in the section dedicated to the 21H interruption.

bar.gif (11170 bytes)

Prev || Home || Next