NEED FOR LINK POPULARITY

Link popularity is very important when it comes to today's search engines. Most of the top search engines consider link popularity as an important ranking factor. Especially Google gives a lot of importance to links, so when it comes to search engine optimization link popularity is very important.

In search engine optimization we cannot get natural links from everyone. There are two remedies for this - buying links or adding reciprocal links. But buying links is a costly process. So we prefer going for reciprocal links.

When it comes to link building we should be careful not to link to bad neighborhoods. Linking to a bad neighborhood like link farms, FFAs, Redirect spam sites, etc. might hurt sites. Linking to such sites hurts both the positioning as well as the traffic of these sites. So it is better to be on the safer side and not to do any linking to bad neighborhood. Also check the status of the link often.

Have you seen the Google directory? Some sites on the bottom of the directory are without any Page Rank Most of these sites are in the penalized list by Google. So be careful when you go for link building tactics.

There are many different ways to present reciprocal links. One way is to clearly designate them as reciprocal links and then delegate them to specific areas or pages of your site. An alternate method is to incorporate links to valuable resources inside your own content. You also have the choice of separating reciprocal links and other links, or joining them all together.

STRATEGIES OF LINK BUILDING

Acquiring text links is one of the most important steps in search engine optimization. This does not however mean that buying irrelevant links or links with low Page Ranks will help your site. It is also important that your links on the individual pages are relevant to the keywords.

Hence, when it comes to link building there are some important strategies. By following these strategies you can be sure that your site will rank above those of your competitors.

Page rank - Page Rank is the primary consideration when it comes to link building. It is only links having high page ranks that are of any value. This is because it is only such links that can boost the rankings of your site with the search engines like Google, Yahoo, AltaVista, MSN, etc.

Page Rank relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value. In essence, Google interprets a link from page A to page B as a vote, by page A, for page B. But, Google looks at more than the sheer volume of votes, or links a page receives; it also analyzes the page that casts the vote. Votes cast by pages that are themselves "important" weigh more heavily and help to make other pages "important."

Linking to different sites - While links are considered significant in the process of ranking, Google also sees to it that its results are not manipulated. As part of this control system, it checks that all the links are not from the same site.

Personalize your link exchange letter - Webmasters always prefer to exchange links with sites that sent personalized letters rather than bulk mails. A personalized mail sets you apart from the spam mail. It lets them know that you have visited their site. You are more likely to receive reciprocal links when you send such mails.

Relevancy of links - Ensure that the links you receive are relevant to your site. By linking to related sites you can make sure that you don’t loose out on business either. A few relevant sites linking to your site will give you more benefits than a thousand irrelevant links.

Different IP address - Check your links and make sure that they come from different IP addresses. If all the links come from the same IP address, search engines will be able to cross reference the links and your site will be penalized.

History Of search engines

Where would we be without 'em?
Our experience of the Internet is often facilitated through the use of search engines and search directories. Before they were invented, people’s Net experiences were confined to plowing through sites they already knew of in the hopes of finding a useful link, or finding what they wanted through word of mouth.

As author Paul Gilster puts it in Digital Literacy "How could the world beat a path to your door when the path was uncharted, uncatalogued, and could be discovered only serendipitously?".

This may have been adequate in the early days of the Internet, but as the Net continued to grow exponentially, it became necessary to develop a means of locating desired content.

At first search services were quite rudimentary, but in the course of a few years they have grown quite sophisticated.

Not to mention popular. Search services are now among the most frequented sites on the Web with millions of hits every day.

Even though there is a difference between search engines and search directories (although less so every day), I will adopt the common usage and call all of them search engines.

Archie and Veronica

The history of search engines seems to be the story of university student projects evolving into commercial enterprises and revolutionizing the field as they went. Certainly, that is the story of Archie, one of the first attempts at organizing information on the Net. Created in 1990 by Alan Emtage, a McGill University student, Archie archived what at the time was the most popular repository of Internet files, Anonymous FTP sites.

Archie is short for "Archives" but the programmer had to conform to UNIX standards of short names.

What Archie did for FTP sites Veronica did for Gopherspace. Veronica was created in 1993 at the University of Nevada. Jughead was a similar Gopherspace index.

Robots
Archie and Veronica were for the most part indexed manually. The first real search engine in the sense of a completely automated indexing system is MIT student Matthew Gray’s World Wide Web Wanderer.

The Wanderer robot was intended to track the growth of the Web counting only web servers initially. Soon after its launch it captured URLs as well. This list formed the first database of websites, called Wandex.

Robots at this time were quite controversial. For one, they occupied a lot of network bandwidth and they would index sites so rapidly it was not uncommon for the robots to crash servers.

In the Glossary for Information Retrieval Scott Weiss describes a robot as:

[a] program that scans the web looking for URLs. It is started at a particular web page, and then accesses all the links from it. In this manner, it traverses the graph formed by the WWW. It can record information about those servers for the creation of an index or search facility.

Most search engines are created using robots. The problem with them is, if not written properly, they can make a large number of hits on a server in a short space of time, causing the system’s performance to decay.

The First Web Directory

In response to the problems with automated indexing of the Web, Martjin Koster in Oct. 1993 created Aliweb, which stands for Archie Like Indexing of the Web. This was the first attempt to create a directory for just the Web.

Instead of a robot, webmasters submit a file with their URL and their own description of it. This allowed for a more accurate, detailed listing.

Unfortunately, the application file was difficult to fill out so many websites were never listed with Aliweb,

Spiders

By December 1993, three more robots, now known as spiders, were on the scene: JumpStation, World Wide Web Worm (developed by Oliver McBryan in 1994, bought out by Goto.com in 1998) and the Repository-Based Software Engineering (RBSE) spider.

RBSE made the important step of listing the results based on relevancy to the keyword. This was crucial. Prior to that, the results were in no particular order and finding the right location could require plowing through hundreds of listings.

Excite was launched in February 1993 by Stanford students and was then called Architext. It introduced concept based searching. This was a complicated procedure that utilized statistical word relationships, such as synonyms. This turned up results that might have been missed by other engines if the exact keyword was not entered.

WebCrawler, which was launched in April 20, 1994, was developed by Brian Pinkerton of the University of Washington.

It added a further degree of accuracy by indexing the entire text of webpages. Other search engines only indexed the URL and titles, which meant that some pertinent keywords might not be indexed. This also greatly improved the relevancy rankings of their results.

As an interesting aside, WebCrawler offers an insightful service, WebCrawler Search Voyeur, that allows you to view what people are searching as they enter their queries. You can even stop it and see the results.

Search Directories

There was still the problem that searchers had to know what they were looking for, which as I can attest, is often not the case. The first browsable Web directory was EINet Galaxy, now known as Tradewave Galaxy, which went online January 1994. It made good use of categories and subcategories and so on.

Users could narrow their search until presumably they found something that caught their eye.

It still exists today and offers users the opportunity to help coordinate directories, becoming an active participant in cataloging the Internet in their field perfected the search directory, however.

Yahoo! grew out of two Stanford University students, David Filo’s and Jerry Yang’s, webpages with their favourite links (such pages were quite popular back then).

Started in April 1994 as a way to keep track of their personal interests, Yahoo soon became too popular for the university server.

Yahoo’s user-friendly interface and easy to understand directories have made it the most used search directory. But because everything is reviewed and indexed by people, their database is relatively small, accounting for approximately 1% of webpages.

The Big-Guns

When a search fails on Yahoo it automatically defaults to AltaVista’s search.

AltaVista was late onto the scene in December 1995, but made up for it in scope.

AltaVista was not only big, but also fast. It was the first to adopt natural language queries as well as Boolean search techniques. And to aid in this, it was the first to offer "Tips" for good searching prominently on the site. These advances made for unparalleled accuracy and accessibility.

But AltaVista had competition: HotBot, introduced May 20, 1996 by Paul Gauthier and Eric Brewer at Berkeley. Powered by the Inktomi search engine, it was initially licensed to Wired Magazine website. It has occasionally boasted it can index the entire Web.

Indexing 10 million pages per day, it is the most powerful search engine.

Meta-Engines

The next important step in search engines is the rise of meta-engines. Essentially they don’t offer anything new. They just simultaneously compile search results from various different search engines. Then list the results according to the collective relevancy.

The first meta-engine was MetaCrawler released in 1995. Now called Go2net.com it was developed in 1995 by Eric Selburg, a Masters student at the University of Washington .

Skewing Relevancy

Prior to Direct Hit, launched in the summer of 1998, there were two types of search engines: author controlled services, such as AltaVista and Excite, in which the results are ranked by keyword relevancy and editor-controlled, such as directories like Yahoo and LookSmart, in which people manually decide on placement.

Direct Hit, as inventor Gary Culliss relates: "represents a third kind of search, one that's user-controlled, because search rankings are dependent on the choices made by other users." As users choose to go to a listed link, they keep track of that data and use the collected hit-ratio to calculate the relevancy. So the more people go to the site from Direct Hit the higher it will appear on their results.

which runs as a research project at Stanford University since late 1997, also attempts to improve relevancy rankings. Google uses PageRank, which basically monitors how many sites link to a given page. The more sites and the more important the sites that link to a given site the higher the ranking in the result list.

It does give a slight advantage to .gov and .edu domains. Basically, it is trying to do what Yahoo does but without the need for costly human indexing.

Is This Fair?
Another way of fixing relevancy rankings is by selling prominent placement as Goto.com does. Founded by idealab and Bill Gross, this practice caused quite a controversy. Apparently, there was some doubt as to the actual relevancy of its paid prominent listings. Goto insists that their clients must adhere to a "strict policy" of relevance to the corresponding keywords.

Their corporate site defends its approach:

"In other search engines, there is no cost to spamming or word stuffing or other tricks that advertisers use to increase their placement within search results. When you get conscious decisions involved, and you associate a cost to them, you get better results... GoTo uses a revolutionary new principle for ranking search results by allowing advertisers to bid for consumer attention, and lets the market place determine the rankings and relevance."

For the right amount of money you can ensure your site is placed #1.
Check out the words that are still "unbidden".

Look similar?

That's for the courts to decide now. Goto.com has filed suit February 1999, against the Disney owned Go Network.

Finding a niche

As search engines try to index the entire Web, some search engines have found their niche by narrowing their field to a specific subject or geographical region. Argos was the first to offer a Limited Area Search Engine. Launching October 3, 1996, they index only sites dealing with medieval and ancient topics. A panel decides on whether a site is suitable for inclusion.

Their mandate was to combat such problems as this example (from their site):

"At the time of this writing, a search for "Plato" on the Internet search engine, Infoseek, returned 1,506 responses. Of the first ten of these, only five had anything to do with the Plato that lived in ancient Greece, and one of these was a popular piece on the lost city of Atlantis. The other five entries dealt with such things as a home automation system called, PLATO(tm) for Windows, and another PLATO(r), an interactive software package for the classroom. Elsewhere near the top of the Infoseek list was an ale that went by the name of Plato, a guide to business opportunities in Ireland, and even a novel called the "Lizard of Oz."

Such specializing has also proven effective for MathSearch, Canada.com, and hundreds of others.

Ask Jeeves' niche is making search engines more searchable for the average user. (Who really knows Boolean anyway?) Founded in 1996, but not really well-used until recently, Ask Jeeves has a more human approach. Refining natural language queries so that users can ask normal questions. For example, "Whatever happened to Upper Volta?".

When a question is answered it matches similar queries it has already received and offers these as its results. This is supposed to help guide users to the desired location when they might not know themselves how else to find it.

The Next Generation

There is no denying that these sites are among the most popular websites. They mark the daily entry point into the Web experience.

Search engines are trying to offer more and to be more. Whether it is Northern Light’s private fee-based online library or Yahoo offering free email and content (news, horoscopes, etc.). Search engines are continuing to evolve.

We are seeing the sophistication of the spiders in finding and indexing sites, the increase in user-friendly searching techniques and interface, the expanding of databases and the improved relevancy of results from the database.

(Now if they could just make some money doing it, as most of the companies mentioned continue to operate at a loss.)

As I learned while researching this topic, search engines may open up the door to the World Wide Web, but not without some difficulty. Searching is far from easy or perfect.

As the Web continues to grow rapidly, the need for better search engines only increases.

Link farm and its expression

A link farm is any collection of web sites that all hyperlink to every other site in the group. Although some link farms can be formed by hand, most are created through automated programs and services. A link farm is a structure of spamming the index of a search engine . Other link exchange systems are designed to allow individual websites to selectively exchange links with other related websites and are not considered a form of spamdexing.

Where link weighting is still believed by some Webmasters to influence search engine results with Google, Yahoo!, MSN , and Ask , link farms remain famous tool for increasing PageRank or perceived equivalent values. PageRank-like measurements apply only to the individual pages being linked to, so these pages must in turn link out to other pages in arrange for the link weighting to help.

The expression "link farm" has always carried with it a derogative reputation. Many reciprocal link management service operators advertise the value of their resource management and direct networking relationship building. The reciprocal link management services support their industry as an alternative to search engines for finding and attracting visitors to Web sites.

Valuable tactics for link building

Mention without a Link - This one is amazingly effective. Your goal is to identify sites/pages that already mention your brand/product/service/website but have failed to offer the direct HTML link. Just shoot them a pleasant, personal email and request the link - success rates can be very high. To find these willing linkers, you can use Yahoo's advanced search parameters.

Profile Sites - All those "Web 2.0" sites that permit for the creation of profiles with links, from Frappr and Newsvine to MySpace and Yahoo! 360 to Digg, Del.icio.us and StumbleUpon are goldmines for links. Even those that don't have direct links enabled often allow you to submit sites or explain what you've "tagged" or visited.

If there's a mainly strong site in your sector that you desperately want a link from, this tactic can be of occassional use. The idea is to write a news article with some authority and request a quote from the company/individual you want a link from.

Sites from City search & Yellow Pages to Google provide global, local links if you sign up with them, but in nearly every mid-large metropolitan area, there are literally hundreds of directories and lists of local companies in every possible category. Oftentimes they're free and even when they arent; the prices to be listed are fairly inexpensive.

Contextual Link Building

A powerful technique to increase link popularity is called Contextual Link Building. It involves having your keyword topics written regarding by blogs and websites. In addition to the advantage of having your topics discussed by these authors, they will link back to your website inside a pertinent post, on topic, and with anchor text. We contact bloggers asking them to write about huge content on your site. If necessary, we will even make original articles for them. According to Google and the other main search engines, contextual links are some of the best inbound links you can obtain for your site. These make permanent text links to your website at a very cost effectual rate.

Microsoft Adcenter - A beginner's guide to Microsoft Pay per click

As most of us are aware, Pay per Click (PPC) search engine marketing is an advertising strategy where you, as an advertiser, pay a search engine every time a potential customer clicks on your ad. These ads appear either on search engine results pages or on sites within a search engine's network of partners. The growth of the search industry worldwide has resulted in a big market for paid search advertising and hence most search engines have developed some type of PPC related, of course, to performance.

To appear in the PPC results, advertisers sign up for the PPC program and create short text ads, image ads or videos describing their product or services shown on their site in a way that will tempt searchers to visit it. While setting up the program, an advertiser will determine which trigger keywords/phrases they wish to bid on and how much they are willing to pay when a visitor clicks on their ad.



If you study at a search engine results page (SERP), you will be able to distinguish between search results that are regular organic search listings and PPC search results which are actually paid advertisements. These paid ones are generally listed under "sponsored results" or "featured listings" and consist of specially designed text, image or video ads that are triggered to display when your target keywords are used in a search query.

Microsoft AdCenter (formerly MSN adCenter) has brought out the latest PPC. Microsoft adCenter is the division of the MSN entrusted with the task of providing Pay Per Click advertisements. Microsoft has joined the Big Three league the other two being Google and Yahoo - develop its own system for delivering PPC ads.

Strictly speaking, Microsoft is not a stranger tp PPC as till recently, all of the Microsoft ads displayed on the MSN search engine were supplied by Overture and later Yahoo!. MSN claimed a percentage of the ad revenue in return for displaying Yahoo!'s ads on its search engine. As search marketing expanded and presented great opportunities, Microsoft has now developed its own system, Microsoft adCenter, for selling PPC advertisements directly to advertisers.

Microsoft adCenter lets you to offer bids for keywords or phrases you associate with your ads (See this : http://advertising.microsoft.com/wwdocs/user/en-us/adexcellence/flash/18_Bidding/index.html). This bid is the maximum amount you are willing to pay if any user searches for one of your keywords and clicks your ad. You can also increase your bid if you wish to reach specific audience target that fits your buyer profile. Generally, the higher the bid, the more likely their ad will show above their competitor's

It is good to know that Microsoft sets store on the ability to build brand awareness with their PPC program, permitting the continued exposure of your brand to a wider audience, regardless how many clicks your ad attracts. This is an important feature of most PPC programs though Google or Yahoo is reluctant to use this strategy.

Borrowing ideas from Google adWords, Microsoft adCenter avails the maximum amount an advertiser is willing to pay per click as well as the advertisement's click through rate (CTR) to determine how frequently an advertisement is shown. This dual operation is said to encourage advertisers to write effective ads and makes them advertise only on searches which are relevant to their advertisement.

Microsoft adCenter lets advertisers to target their ads by restricting their ads to a given set of locations. Similarly, adCenter allows advertisers to run their ads on select days of the week or at specific hours of day.

Tips to get more traffic with long tail keywords that convert in to sales

In pay per click management keyword targeting is always the hot topic and use of long tail keyword is one of the best keyword discussed. The use of long tail keyword will bring in additional traffic to your sites all you need to do is spend time in optimizing those specific long tail keywords for better ranking in search engine.

Once you plan to optimize your keyword, you can build on more traffic to your sites in two ways that are as follows:
1. Write more and more content using those keywords. It is one of the most popular ways to optimize your long tail keywords and your site too.
2. If you think that your particular long tail keyword is bringing more and more traffic to your site then put more offers, special discount or other deals that convert this traffic in to sales, which will in turn help you to achieve your return on investments and your advertisements goals.
These are the two ways that will help your pay per click campaign to get more sales with traffic you are already receiving.

How to make your ad relevant with the help of keyword matching options

According to Adwords, there are four keyword matching options which help you determine your ad to appear in Google search. Each and every single keyword can be set as targeted keywords by using any of these four options.

The four types of keywords matching options are-
Broad match: keyword This option allows your ad to be shown for similar phrase. For example, if your ad contains the keyword "wrist band" then your ad will be eligible to appear even when the user searches for either or both words. Like your ad may show on search for the following keywords - wrist, band, buy wrist band, wrist watch etc.

Phrase match: "keyword"
This option allows your ad to be shown for the exact phrase. For example, if your ad contains the keyword "wrist band" then your ad will be eligible to appear only when the user searches for exact phrase "wrist band". The ad can also appear for search that contain other terms as long as it contain the exact phrase.

Exact match: [keyword]
This option allows your ad to be shown for the exact phrase exclusively. For example, if your ad contains the keyword "wrist band" then your ad will be eligible to appear only when the user searches for specific phrase "wrist band". The ad will not be eligible to appear if the phrase contain other terms in it.

Negative match: -keyword
This option ensures that your ad is not shown when any search contains the specific term.

Keyword matching option just requires you to add appropriate punctuation to the keyword while setting the target. With the use of appropriate matching you will get more ad impressions, clicks and conversion which will in turn helps us to meet the ROI goals.

Web Designing & Development

Introduction
Web designing is the skill of creating presentations of content (usually hypertext or hypermedia) that is delivered to an end-user through the World Wide Web, by way of a Web browser or other Web-enabled software like Internet television clients, microblogging clients and RSS readers.

History of WWW
Timothy John Berners-Lee a computer scientist and MIT professor credited with inventing the World Wide Web, making the first proposal for it in March 1989. In 1990, he implemented the first successful communication between an HTTP client and server via the Internet. And after this World Wide Web evolved and grow rapidly. And now we are in the second generation of web development and web design which is commonly referred as Web2.0. The advent of Web 2.0 led to the development and evolution of web-based communities, hosted services, and web applications. Examples include social-networking sites, video-sharing sites, wikis, blogs, mashups and forums.

Technologies used in web designing
The process of designing Web pages, Web sites, Web applications or multimedia for the Web may utilize multiple disciplines, such as animation, authoring, communication design, corporate identity, graphic design, , interaction design, marketing, photography, search engine optimization and typography.
The following are the languages and technologies used in web designing.
• Markup languages (such as HTML, XHTML and XML)
• Style sheet languages (such as CSS )
• Client-side scripting (such as JavaScript)
• Server-side scripting (such as PHP and ASP)
• Database technologies (such as MySQL and PostgreSQL)
• Multimedia technologies (such as Flash and Silverlight)

Web pages and Web sites can be static pages, or can be programmed to be dynamic pages that automatically adapt content or visual appearance depending on a variety of factors, such as input from the end-user, input from the Webmaster or changes in the computing environment (such as the site's associated database having been modified).

Markup Languages
A markup language is a system for annotating a text in a way which is syntactically distinguishable from that text. Examples include revision instructions by editors, traditionally written with a blue pencil on authors' manuscripts, typesetting instructions such those found in troff and LaTeX, and structural markers such as XML tags. Markup is typically omitted from the version of the text which is displayed for end-user consumption.
A well-known example of a markup language in widespread use today is HyperText Markup Language (HTML), one of the document formats of the World Wide Web. HTML is an instance of SGML and follows many of the markup conventions used in the publishing industry in the communication of printed work between authors, editors, and printers.

HTML
HTML, which stands for Hypertext Markup Language, is the predominant markup language for web pages. It provides a means to create structured documents by denoting structural semantics for text such as headings, paragraphs, lists etc as well as for links, quotes, and other items. It allows images and objects to be embedded and can be used to create interactive forms. It is written in the form of HTML elements consisting of "tags" surrounded by angle brackets within the web page content.

XHTML
The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax. XHTML can be thought of as the intersection of HTML and XML in many respects, since it is a reformulation of HTML in XML.

XML
XML (Extensible Markup Language) is a set of rules for encoding documents electronically. XML’s design goals emphasize simplicity, generality, and usability over the Internet. It is a textual data format, with strong support via Unicode for the languages of the world. Although XML’s design focuses on documents, it is widely used for the representation of arbitrary data structures, for example in web services.

Style Sheet languages
A style sheet language or style language is a computer language used to describe the presentation of structured documents. A structured document which doesn't break the schema it is designed to conform to is "well-formed". A program processing the document must model the schema, and can present it in different formats, fonts, and order, as well as with other effects, by using different sets of style rules contained in different style sheets.One modern style sheet language with widespread use is Cascading Style Sheets, which is used to style documents written in HTML, XHTML,

CSS
Cascading Style Sheets (CSS) is a style sheet language used to describe the presentation (that is, the look and formatting) of a document written in a markup language. Its most common application is to style web pages written in HTML and XHTML, but the language can be applied to any kind of XML document.

Client-side scripting
Client-side scripting generally refers to the class of computer programs on the web that are executed client-side, by the user's web browser, instead of server-side (on the web server). This type of computer programming is an important part of the Dynamic HTML (DHTML) concept, enabling web pages to be scripted; that is, to have different and changing content depending on user input, environmental conditions (such as the time of day), or other variables. Web developers write client-side scripts in languages such as JavaScript (Client-side JavaScript) and VBScript.

JavaScript
JavaScript was originally developed by Brendan Eich of Netscape under the name Mocha, which was later renamed to LiveScript, and finally to JavaScript. JavaScript is a scripting language used to enable programmatic access to objects within other applications. It is primarily used in the form of client-side JavaScript for the development of dynamic websites. JavaScript was influenced by many languages and was designed to look like Java, but to be easier for non-programmers to work with.

Server-side scripting
Server-side scripting is a web server technology in which a user's request is fulfilled by running a script directly on the web server to generate dynamic web pages. It is usually used to provide interactive web sites that interface to databases or other data stores. This is different from client-side scripting where scripts are run by the viewing web browser, usually in JavaScript. The primary advantage to server-side scripting is the ability to highly customize the response based on the user's requirements, access rights, or queries into data stores.

PHP
PHP is a widely used, general-purpose scripting language that was originally designed for web development, to produce dynamic web pages. It can be embedded into HTML and generally runs on a web server, which needs to be configured to process PHP code and create web page content from it. It can be deployed on most web servers and on almost every operating system and platform free of charge. PHP is installed on over 20 million websites and 1 million web servers.

ASP/ASP.NET
ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages (ASP) technology. ASP.NET is built on the Common Language Runtime (CLR), allowing programmers to write ASP.NET code using any supported .NET language.

Database Technologies
In Web Designing database has lots of importance. First of all I want to tell what is database. A database is an integrated collection of logically related records or files which consolidates records into a common pool of data records that provides data for many applications. A database is a collection of information that is organized so that it can easily be accessed, managed, and updated.

MySQL
MySQL (pronounced My S-Q-L or “My sequel” is a relational database management system (RDBMS) which has more than 6 million installations. MySQL stands for "My Structured Query Language". The program runs as a server providing multi-user access to a number of databases. MySQL is commonly used by free software projects which require a full-featured database management system, such as WordPress, phpBB and other software built on the LAMP software stack. It is also used in very high-scale World Wide Web products including Google and Facebook.

PortgreSQL
PostgreSQL is an object-relational database management system (ORDBMS). It is released under a BSD-style license and is thus free software. As with many other open-source programs, PostgreSQL is not controlled by any single company, but has a global community of developers and companies to develop it.

Multimedia Technologies
Using multimedia content in website is the best way to attract users to your site. Flash is the most widely used multimedia application.

Flash
Adobe Flash (previously known as Macromedia Flash) is a multimedia platform originally acquired by Macromedia and currently developed and distributed by Adobe Systems. Since its introduction in 1996, Flash has become a popular method for adding animation and interactivity to web pages. Flash is commonly used to create animation, advertisements, and various web page components, to integrate video into web pages, and more recently, to develop rich Internet applications.

SilverLight
Microsoft Silverlight is a web application framework with a scope similar to Adobe Flash. Version 2, released in October 2008, brought additional interactivity features and support for .NET languages and development tools. Microsoft made the beta of Silverlight 3.0 available on March 18, 2009. The final version was released on July 9, 2009.

Hosting and Domains

Web Hosting
A web hosting service is a type of Internet hosting service that allows individuals and organizations to provide their own website accessible via the World Wide Web. Web hosts are companies that provide space on a server they own or lease for use by their clients as well as providing Internet connectivity, typically in a data center. Web hosts can also provide data center space and connectivity to the Internet for servers they do not own to be located in their data center, called colocation.

Domain Names
A domain name is an identification label that defines a realm of administrative autonomy, authority, or control in the Internet, based on the Domain Name System (DNS). Domain names are used in various networking contexts and application-specific naming and addressing purposes. They are organized in subordinate levels (subdomains) of the DNS root domain, which is nameless. The first-level set of domain names are the top-level domains (TLDs), including the generic top-level domains (gTLDs), such as the prominent domains com, net and org, and the country code top-level domains (ccTLDs). Below these top-level domains in the DNS hierarchy are the second-level and third-level domain names that are typically open for reservation by end-users that wish to connect local area networks to the Internet, run web sites, or create other publicly accessible Internet resources. The registration of these domain names is usually administered by domain name registrars who sell their services to the public. Individual Internet host computers use domain names as host identifiers, or hostnames. Hostnames are the leaf labels in the domain name system usually without further subordinate domain name space. Hostnames appear as a component in Uniform Resource Locators (URLs) for Internet resources such as web sites (e.g., csku.co.nr).



Web Promotion

Link Building
Most webmasters who are interested in promoting their sites via search engines such as Google are aware of the importance of backlinks when trying to rank for their chosen keywords. One of the things that set Google's patented algorithm apart from the lesser search engines was their use of link popularity to guide their SERP (search engine results page) positioning. As a result, backlinks matter - you can't do without them if you want to rank well in the major search engines Most webmasters who are interested in promoting their sites via search engines such as Google are aware of the importance of backlinks when trying to rank for their chosen keywords. One of the things that set Google's patented algorithm apart from the lesser search engines was their use of link popularity to guide their SERP (search engine results page) positioning. As a result, backlinks matter - you can't do without them if you want to rank well in the major search engines. Regardless of which methods you choose to promote your site, you should be aware of the following general guidelines that can make or break a campaign.


Some Common Terminologies:
Black Hat & White Hat, PageRank, Nofollow, Relevancy, Spam, Automation, Anchor Text

Ways of Link Building:
1) Link Exchange
2) Buying Links
3) Article Marketing
4) Blog Posting
5) Forum Posting/Signatures
6) Press Release
7) Directory Submission
8) Social Bookmarking
9) Widgets/Link Bait
10) Word of Mouth


Search Engine Optimization (SEO)
SEO is the active practice of optimizing a web site by improving internal and external aspects in order to increase the traffic the site receives from search engines. Firms that practice SEO can vary; some have a highly specialized focus, while others take a broader and general approach. Optimizing a web site for search engines can require looking at so many unique elements that many practitioners of SEO (SEOs) consider themselves to be in the broad field of website optimization (since so many of those elements intertwine).


Jobs and Earnings

Going professional in the Web industry can be as easy as setting up your own Web design Web site, or as complicated as taking a four year college course in Web maintenance and development. There is a lot to think about for the professional designer, beyond just how the pages look: pricing, contracts, legal issues, freelancing or not, how to get customers, and how to keep the ones you have. Sometimes it's as easy as learning HTML or Dreamweaver and applying for a job. But most of us have to work a little harder than that to find a good job in the Web design industry. These links will point you to resources for finding the perfect job, how to apply for it, and getting qualified for it through certifications and degrees. This is still a new profession. Don't be afraid to put yourself out there. Job postings often ask for all types of things when they might be looking for you. You know that you are the perfect person for the job, they just haven't hired you yet.

Programming vs Coding

Recently I saw many people rejoicing over Pakistan being declared as one of a great outsourcing destination, and to many within the Pakistani software industry this is a big achievement but I am skeptical about it. Is it really a sign of progress for us or has hidden repercussions??
In my opinion being a great outsourcing destination is not much, the question that we must ask ourselves is where do we stand in the Computer Science research community? How many publications do we produce every year? The answer is of course highly unsatisfactory.
It makes me sad to say that our universities are producing coders but not programmers: many would argue with me saying they are the same but there is a world of difference between the two. The question was raised by my Professor Kyu-Young Whang in his Database class few months back and I really liked his answer:

“Programming is about design and attention to detail while coding is about knowing few tips and following them without much thinking.”

Coding is just mindlessly typing out computer commands, whereas programming is actively thinking about abstract solutions to a problem and then expressing it in code. To be a coder, you need to know the syntax, but to program, you need to understand various algorithms and data structures. Mathematics forms the core of good and efficient programming skills whereas for a coder mathematics is not of much importance. Students who are adept at math tend to perform better in computer science. They are better able to understand relationships in data, scientific computations, and algorithm design. This allows them to be better at solving problems and generating good designs from requirements and hence be a programmer. On the other side of the spectrum are the coders who just know about the language features and are aware of the features of the platform they are working for.
The harsh reality is that many of the graduates in the computer science field in Pakistan are just coders but not programmers. Many of them do not do justice to the computer science field since they either switch to MBA or they go for software development (database development, web portals, community websites etc) jobs doing monotonous work all along.
In the Computer Science community in Pakistan there is a lack of proper research being conducted and in my opinion one big reason for this is that Computer Science research needs programmers and not coders. The scenario in Pakistan is that many computer science majors, those desiring to eventually become computer scientists, programmers, systems analysts, computer hardware designers, networking specialists, or software engineers, do not have the background knowledge needed to succeed in their studies. Nor do many of them desire to get this necessary math background if there is any possible way to avoid it.
The programmers are the ones that invent thereby producing new researches in Computer Science and coming up with new, innovative ideas. Whereas coders do labor work just playing with some new technologies and enjoying the outside glimmers. After all Google was just another research with two brilliant programmers Sergey Brin and Larry Page coming up with a new algorithm of ranking. Why isn’t such research being produced in our country: answer is simple, I guess!!!

Search Engine Use by Operating System

Search engines have become important entry points for the Web today and life on the Internet without a search engine is unimaginable these days. So which is the most famous search engine that is providing users with best results. That's surely a tough question to answer but there is one notable fact: open source community prefers Google over Bing.

A survey was conducted by Chitika, an online advertising network to analyze search engine usage by operating system.

Here's what they say:

With the upswing in the number of Linux boxes (thank you netbooks and Dell) and as much interest we have in the search engine market, we at Chitika thought we’d take a look at the search habits of our open-source friends. We compared the OS and search engine data for 163,211,927 searches – a sample of the Chitika network’s search data from July 30th through August 16th – and the results were quite interesting. Check them out:



Sure, Google dominates search across all categories, but what’s surprising is that a whopping 94.61% of all Linux search traffic was from Google, compared with 78.54% of Windows user searches. Compare that with Microsoft’s new “decision engine” Bing, which is holding steady at about 8% of Windows users, but is getting practically no use whatsoever by Linux users – just 0.77% of Linux searches were from Bing. Even Ask.com outdoes Bing for Linux users.

Advices for Computer Science Researchers

The following speech is an extract from the speech delivered at "SIGCOMM 2009", the most prestigious conference in networking. The speaker is Meeyong Cha, a very efficient network researcher currently doing her post-doc at MPI-SWS in Germany. The speech contains a useful piece of advice for those wanting to do research in Computer Science:

"Hi, I am Mia. I'm honored to be invited to speak along with Sue, Dina, and Anja, who are fantastic researchers and have been in networking research for many more years than me. So I'll be your amuse bouche appetizer today. The main course speakers will follow shortly.

Let me tell you a bit about my background. I received my PhD from KAIST in Korea last year--Sue was my advisor and I take great pride in being her first PhD student. After I graduated, I moved to MPI in Germany as a post-doc to work with Krishna Gummadi. Now I live in a small city called Saarbruecken. It's on the border between France and Germany and my favorite shopping places are hours away. You'll see my publication list doubled since I moved to Germany.

I work on online social networks. My recent research topic is focused on understanding how information propagates in online social networks, particularly on the role of "word of mouth"-based propagation. I studied this phenomenon by analyzing data on how photos propagate in the Flickr.com website. I coined a term "social cascade"--which I hope will become popular--to describe the type of information propagation that happens through online friendship. For example, we get exposed to the photos, text updates, web links our friends share online. These exposures are what I mean by social cascades. Everyday, tremendous amount of data flows through social links, which means that social cascade is playing a big role on our online experience.

For me, social cascade is a fascinating research topic, not only because it is an entirely new way that connects people, but also because it has consequences beyond the online world. In the recent Iran election, we saw how the use of Twitter lead to some of the rallies and protests in the streets of Teheran. One of my recent projects is on investigating the role Twitter played in the Iran election. Back in my office in Germany, I parse terabytes of data to understand how millions of users in Twitter collaboratively spread messages among themselves. I am also interested in knowing how such collaborative action translates into innovations and challenges in the networking and systems area.

The Internet is a network of computers, but behind computers, there are people. As more of people's offline relationships get translated online, the Internet becomes more social. Social networks therefore have big consequences on the Internet. Just like when peer-to-peer came out and it had a great impact on the Internet, social cascade will dramatically affect a lot of things we know about the Internet, such as the type of content that is available, new infrastructures that are needed, and even people's view on the Internet itself. My research vision is to understand how social cascade is re-shaping the Internet and build network systems that better support this new social interactions.

Lastly, to all the PhD students, I'd like to share one message. Do the type of research that excites you and do not hesitate to change topics if you have to. Before I fell in love with online social networks, I worked on lower layers of the network stack: including backbone designs, IP networks, peer-to-peer systems, television viewing habits, YouTube video popularity. All of these topics are interesting on their own, but they lead me to recognize that workloads in these systems are ultimately determined by humans. Now I am very happy to work on social networks.

If you fancy a career as a researcher, you'll spend tens of thousands of hours on work over the next 10 years. The only way you're ever gonna spend 10,000 hours on research is only when you truly deeply love it. If something really engages you and makes you happy, then you will put in the kind of energy and time necessary to become an expert at it.

So, besides being ambitious, disciplined, and smart and all that, I hope you find a research topic that excites you and makes you have a lot of fun during your remaining years of your PhD. Thank you and now on to the rest of the -- menu."

INT 21h - The general function despatcher

INT 21h - The general function despatcher

Most of the general functions and services offered by DOS are implemented through this interrupt . The functions available are well standardised and should be common to all MSDOS, PCDOS and DOS Plus systems. Well behaved programs, therefore, should use these facilities in preference to any other methods available for the widest range of compatibility.

INT 21h in the 512's implementation of DOS Plus 2.1 provides 77 official functions, two of which are non-functional and return with no action. Within this range some calls have subfunctions which further extend the range of operations.

In all calls, on entry AH defines the function. Other parameters may also be required in other registers. Where a memory block is used by the call this is specified in the normal segment:offset form. In all cases the general programming technique is to set AH to the function pointer, set up the required register contents (and the memory block if necessary) then to issue the call by the assembly code INT instruction. To call the recommended program terminate routine, INT 21h function 4Ch, the relevant parts of the code would be:

; Constant equates
Prog_exit equ 4ch
Function_despatcher equ 21h
org 0100
program code here
.......
.......
.......
exit: ; common program exit
point mov al, Return_code ; set up result
mov ah, Prog_exit ; Set up terminate
; process
int Function_despatcher ; and leave
; variable data
Return_code db ? ; Default 0 success
; set value on failure
END

There are other methods of implementing INT calls, but they are not recommended as normal techniques and are less efficient. The two most likely to be encountered are included here only for infomation.

  1. Setting up the entry conditions and executing a long call to 0050h in the PSP
    (only works in DOS v.2+).
  2. Loading the CL register with the function number and executing an intra-sgment call to offset 0050h in the PSP, which contains a long call to the function despatcher. This method only works for function calls of 24h or less, and has the further disadvantage that the contents of register AX are always destroyed.

If calls are made by the approved method the contents of all registers are preserved through calls, except where those registers are used to return results. The obvious exception to this is function 4Bh, EXEC, which transfers control to a spawned program, when the state of all registers except the instruction pointers, but including the stack pointers, should be treated as undefined unless specific returned values are expected.

If spawning is employed register contents which must be be preserved should be pushed onto the stack, and the stack registers themselves (i.e. SS:SI) should be saved in known memory locations for explicit later retrieval.

INT 21h functions 00h to 24h are based on and are, with a few exceptions, direct equivalents to the corresponding CP/M calls. In these calls success or failure is typically signalled by the value returned in register AL. For the remaining (i.e. MSDOS) calls, the carry flag is more usually used, carry clear indicating success, carry set indicating failure of the function, often accompanied by an error code in register AX.

Functions up to and including 57h are documented in this section, all INT 21h functions with a higher number applying to later versions of DOS than 2.11. Note that functions 32h, 34h and 50h and above are included, though they are not supported by DOS Plus, because these do occur in MSDOS version 2.0 and above, and might be encountered in MSDOS v2.0 programs.

Function 0- Program terminate

Action: On execution the call restores vectors for INTS 22h to 24h from the PSP, flushes any buffers and transfers control to the terminate handler address.
On entry: AH = 0
CS = Segment address of PSP
Returns: Nothing
Notes: Equivalent of CP/M BDOS call 00h. INT 21h function 4Ch is preferred.

Function 1- Character input with echo

Action: Reads a character from the standard input device and echoes it to the standard output device.
If no character is ready it waits until one is available.
I/O can be re-directed, but prevents detection of OEF.
On entry: AH = 01h
Returns: AL = 8 bit data input
Notes: Equivalent to CP/M BDOS call 01h, except that if the character is CTRL-C an INT 23h is performed.

Function 2 - Character output

Action: Outputs a character to the standard output device. I/O can be re-directed, but prevents detection of 'disc full'.
On entry: AH = 02h
DL = 8 bit data (usually ASCII character)
Returns: Nothing
Notes:

Function 3- Auxiliary input

Action: Reads a character from the current auxilliary device.
On entry: AH = 03h
Returns: AL = 8 bit data input
Notes: There is no way to read the status of the serial port or to detect errors through this call, therefore most PC comms packages drive the hardware directly, hence their general incompatibility with the 512.

Function 4- Auxiliary output

Action: Outputs a character to the current auxiliary device.
On entry: AH = 04h
DL = 8 bit data
Returns: Nothing
Notes: There is no way to read the status of the serial port or to detect errors through this call. Comments as Function 3.

Function 5- Printer output

Action: Sends a Character to the current listing device.
On entry: AH = 05h
DL = 8 bit data
Returns: Nothing
Notes: If the printer is busy this call will wait until the data is sent.
There is no way to poll the printer status in DOS.

Function 6- Direct console I/O

Action: Reads a character from the standard input device or returns zero if no character available. Also can write a character to the current standard output device. I/O can be redirected but prevents detection of EOF on input or 'disc full' on output.
On entry: AH = 06h
DL = function requested: 0Ch to 0FEh = output
(DL = character to be output)
0FFh = Input request
Returns: If output - nothing
If input - data ready: zero flag clear, AL = 8 bit data
If data not ready: zero flag set
Notes: This call ignores CTRL-X.

Function 7 - Unfiltered character input no echo

Action: Reads a character from the standard input device without echoing it to the display.
If no character is ready it waits until one is available.
On entry: AH = 07h
Returns: AL = 8 bit data input
Notes: This call ignores CTRL-C, use function 8 if CTRL-C processing is required. There is no CP/M equivalent.

Function 08- Character input with no echo

Action: Reads a character from the standard input device without copying it to the display.

If no character is ready it waits until one is available.
On entry: AH = 08h
Returns: AL = 8 bit data input
Notes: If CTRL-C is detected INT 23h is executed.

Function 09- Output character string

Action: Writes a string to the display.
On entry: AH = 09h
DS:DX = segment:offset of string
Returns: Nothing
Notes: The string must be terminated by the $ character (24h), which is not transmitted. Any ASCII codes can be embedded within the string.

Function 0Ah - Buffered input

Action: Reads a string from the current input device up to and including an ASCII carriage return (0Dh), placing the received data in a user-defined buffer Input can be re directed, but this prevents detection of EOF
On entry: AH = 0Ah
DS:DX = segment:offset of string buffer
Returns: Nothing
Notes: The first byte of the buffer specifies the maximum number of characters it can hold (1 to 255). This value must be supplied by the user. The second byte of the buffer is set by DOS to the number of characters actually read, excluding the terminating RETURN. If the buffer fills to one less than its maximum size the bell is sounded and subsequent input is ignored.

If a CTRL-C is detected an INT 23h is executed. Normal DOS keyboard editing is supported during input

Function 0Bh - Get input status

Action: Checks whether a character is available from the standard input device. Input can be redirected
On entry: AH = 0Bh
Returns: AL = 0 if no character available
AL = 0FFh if character available
Notes: Notes: if an input character is waiting this function continues to return a true flag until the character is read by a call to function 1, 6, 7, 8 or 0Ah.

Function 0Ch - Reset input buffer and input

Action: Clears the standard input buffer then invokes one of the standard input functions.
On entry: AH = 0Ch
AL = number of input function to be invoked, which must be 1, 6, 7, 8 or 0Ah.
Returns: If function 0Ah - Nothing
If function 1, 6, 7, or 8 then AL = 8 bit data
Notes: The purpose of this function is to ignore any type-ahead data and force a wait for new character input which must occur after the call is issued.

Function 0Dh - Disc reset

Action: Flush all outstanding file buffers by physically updating to disc.
On entry: AH = 0Dh
Returns: Nothing
Notes: This call does not update disc directories for any open files.
If the program fails to close files before the disc is removed and the files have changed size, their directory entries will be incorrect.

Function 0Eh - Set default disc drive

Action: Sets the specified drive to be the default drive and returns the total number of logical drives in the system.
On entry: AH = 0Eh
DL = drive code (A: = 0, B: = 1, etc)
Returns: AL = the number of logical drives in the system.
Notes: In the 512's DOS Plus (2.1) this call always returns five as the number of logical drives, though a maxirnum of four are supported.

Function 0Fh - Open a file

Action: Opens a file and makes it available for read/write operations.
On entry: AH = 0Fh
DS:DX = segment:offset of the file control block (FCB)
Returns: AL = 0 if file found
AL = FFh if file not found
Notes: This call requires a user allocated memory control block.
If the call is successful the FCB data is filled by DOS.

Function 10h - Close file

Action: Closes a file and updates the directory if the file has been modified.
On entry: AH = 10h
DS:DX = Segment offset of the FCB for the file
Returns: AL = 0 if directory updated successfully
AL = 0FFh if fiIe not found in directory
Notes: This call may only be used after a file has been successfully opened and an FCB created.

Function 11h - Find first file

Action: Search for a specified filename in the current directory of the current drive.
On entry: AH = 11h
DS:DX = Segment:offset of the FCB
Returns: AL = 0 if matching filename found
AL = 0FFh if no matching file found
Notes: It is important to use INT 21h function 1Ah to set the DTA to a buffer of adequate size before using this call.

In MSDOS v2 only the '?' wildcard is permitted. If wildcards are specified the first matching name is returned.

If an extended FCB is used, an attribute byte determines the type of files searched for. INT 21h function 4Eh is preferred to this call.

Function 12h - Find next file

Action: Searches the current directory in the current drive for the next matching filename after a previously successful call to function 11h.
On entry: DS:DX = segment:offset of the FCB
Returns: AL = 0 if matching filename found
AL = 0FFh if no matching file found
Notes: As for Function 11h. Function 4Fh is preferred.

Function 13h - Delete file

Action: Deletes all matching files from the current directory.
On entry: AH = 13h
DS:DX = Segment:offset of the FCB
Returns: AL = 0 if matching fie(s) deleted
AL = 0FFh if no matching file found or all matching files are read-only.
Notes: The '?' wildcard is permitted. If more than one match occurs all matched filenames will be deleted.

Function 14h - Sequential read

Action: Reads the next sequential block of data from a file and increments the file pointer.
On entry: AH = 14h
DS.DX = Segment:offset of previously opened FCB
Returns: AL = 0 if successful
AL = 1 if end of file reached
AL = 2 if segment wrap occurs
AL = 3 if partial record read at end of file
Notes: The record is read into memory at the DTA address specified by the most recent call to function 1Ah. The size of the block read is is specified by the record size field in the FCB.

Function 15h - Sequential write

Action: Writes the next sequential block of data to a file and increments the file pointer.
On entry: AH = 15h
DS.DX = Segment:offset of previously opened FCB
Returns: AL = 0 if successful
AL = 1 if disc full
AL = 2 if segment wrap occurs
Notes: The record is written from memory at the DTA address specified by the most recent call to function 1Ah. The size of the block written is specified by the record size field in the FCB.

Function 16h - Create or truncate file

Action: Creates a new entry in the current directory for the named file, or truncates the length of an existing file of the given name to zero length. The file is opened for read/wnte access.
On entry: AH = 16h
DS:DX = segment:offset of unopened FCB
Returns: AL = 00h if successful
AL = 0FFh if unsuccessful (directory full)
Notes: Notes: This call is the equivalent of 'OPENOUT' in BBC BASIC and should be used with care. By using an extended PCB and setting the appropriate bit the opened file may be assigned an attribute. To create files in other directories use function 3Ch.

Function 17h- Rename file

Action: Renames all matching files in the current directory
On entry: AH = 17h
DS:DX = Segment:offset of special FCB
Returns: AL = 0 if successful
AL = 0FFh if no match found or new filename already exists
Notes:

Function 18h - Reserved
Function 19h - Get default disc drive

Action: Returns the drive code of the current or default drive.
On entry: AH = 19h
Returns: AL = drive code (0 = A:, 1 = B: etc)
Notes: Some DOS functions use drive codes starting at 1 (e.g. function 1Ch) reserving zero for the current dnve.

Function 1Ah - Set disc transfer area address

Action: Specifies the memory area to be used for subsequent FCB operations.
On entry: AH = 1Ah
DS:DX = Segment:offset of DTA
Returns: Nothing
Notes: If this function is not used by a program, the DTA defaults to a 128 byte buffer in the PSP at 080h, the area used to hold the original command tail, which will then be destroyed by any disc activity.

It is the programmer's responsibility to ensure that the DTA is large enough for any relevant disc operation. The only exception is that DOS will abort any transfer which would wrap around within the segment.

This function must be called before using functions 11h, 12h, 14h or 4Fh, to ensure that DOS has a large enough scratch area when searching directories.

Function 1Bh - Get current drive allocation data

Action: Obtains selected information about the current disc drive and a pointer to the identification byte of the FAT.
On entry: AH = 1Bh
Returns: If successful
AL = Number of sectors per cluster
DS:BX = Segment:offset of FAT identification byte
CX = Size in bytes of physical disc sector
DX = Number of clusters for the drive
If unsuccessful (invalid drive) AL = 0FFh
Notes: DS:BX points only to the FAT information byte. To read the contents of the FAT into memory use INT 25h.

To obtain infomation about discs other than the default drive use function 1Ch. See also function 36h which returns similar data.

Function 1Ch - Get alloc. data for specified drive

Action: Action: As for Function 1Bh, but any drive can be specified.
On entry: AH = 1Ch
DL = Drive code (NOTE 0 = current, 1 = A:, 2 = B:)
Returns: If successful
AL = Number of sectors per cluster
DS.BX = Segment:offset of FAT identification byte
CX = Size in bytes of physical disc sector
DX = Number of clusters for the specified drive
If unsuccessful (invalid drive or critical error)
AL = 0FFh
Notes: Except for the ability to specify a drive this call is the equivalent of Function 1Bh.

Functions 1Dh to 20h - Reserved

Function 2lh - Random read

Action: Reads a selected record from an opened file.
On entry: AH = 21h
DS:DX = Segment:offset of previously opened FCB
Returns: AL = 0 if successful
AL = 1 if end of file reached
AL = 2 if segment wrap occurs
AL = 3 if partial record read at end of file
Notes: The record is read into memory at the DTA address spedfied by the most recent call to Function 1Ah. The size of the block read is specified by the record size field in the FCB.

If the size of the DTA and the record are such that segment wrap occurs, the call fails with a return code of 2. If a partial record read occurs the remaining space is padded with zeros. The current file pointer is not advanced after this function.

Function 22h - Random write

Action:
On entry: AH = 22h
DS:DX = Segment:offset of previously opened FCB
Returns: AL = 0 if successful
AL = 1 if disc full
AL = 2 if segment wrap occurs
Notes: The record is written from memory at the DTA address specified by the most recent call to Function 1Ah. The size of the block written is specified by the record size field in the FCB. If the size of the record and the location of the DTA are such that segment wrap occurs, the call fails with a return code of 2.

Function 23h - Get file size in records

Action: Returns the record count of a matching file.
On entry: AH = 23h
DS:DX = Segment:offset of unopened FCB
Returns: AL = 0 if matching file found
AL = 0FFh if no matching file found
Notes: Before using this call you must set an appropriate record size in the FCB's record size field. After the call the random record field is set to the record count of the specified file.

Function 24h - Set random record number

Action: Sets the random record field of an FCB to correspond to the current file position as recorded in the opened FCB.
On entry: AH = 24h
DS:DX = segment:offset of previously opened FCB
Returns: Nothing. The random record field in the FCB is updated
Notes: This function is used to change from sequential to random I/O file access.

Function 25h - Set interrupt vector

Action: Initialises an interrupt vector to point to the supplied address.
On entry: AH = 25h
AL = Interrupt number
DS:DX = segment:offset of new vector address
Returns: Nothing
Notes: This is the approved way to amend interrupt vector contents.

Before changing the contents of a vector, Function 35h should be used to obtain the original entry, which should be re-instated when your code terminates. The only exceptions to this rule are interrupt vectors 22h to 24h, which are automatically restored from the PSP on program termination.

Function 26h - Create program segment prefix

Action: Copies the PSP of the current program to a specified segment address in free memory, then updates the new PSP to make it usable by a new program.
On entry: AH = 26h
DX = Segment for new PSP
Returns: Nothing
Notes: This call has been rendered obsolete by EXEC, Function 4Bh in DOS 2.0 and later and should no longer be used.

Function 27h - Random block read

Action: Reads one or more sequential records from an open file starting at the file's current record position
On entry: AH = 27h
CX = Number of records to be read
DS.DX = Segment:offset of previously opened FCB
Returns: AL = 0 if all requested records read
AL = 1 if end of file
AL = 2 if segment wrap
AL = 3 if partial record read at end of file
CX = Actual number of records read
Notes: The records are read into memory at the DTA address specified by the most recent call to Function 1Ah. The size and number of blocks read is specified by the random record and the record size field in the FCB.

If the size and. location of the DTA and the number of records to be read are such that segment wrap occurs, the call fails with a return code of 2, possibly after reading one or more records. if a partial record read occurs at the end of the file the remaining record space is padded with zeros The random record, current block and current record fields are updated after this function. The call is similar to Function 21h except that multiple blocks are permitted.

Function 28h - Random block write

Action: Write one or more sequential records to an open file starting at the file's current record position.
On entry: AH = 28h
CX = Number of records to be wriflen or zero (see notes)
DS:DX = Segment:offset of previously opened FCB
Returns: AL = 0 if all requested records written
AL = 1 if disc full
AL = 2 if segment wrap
CX = Actual number of words written
Notes: The records are written from memory at the DTA address specified by the most recent call to Function 1Ah.

If the size and location of the DTA and the number of records to be written are such that segment wrap occurs the call fails with a return code of 2, possibly after writing one or more records.

The random record, current block and current record fields are updated after this function. The call is similar to Function 21h except that multiple records may be read.

If the call is executed with zero in CX no data is written, but the file length is set to the value implied by the current random record field and the record size.

This call is similar to function 22h, except that multiple records may be written.

Function 29h - Parse filename

Action: Parses a text string into the various fields of an FCB.
On entry: AH = 29h
AL = flags to control parsing, as follows:
Bit 3: If set, the extension field in an existing FCB will be modified only if an extension is specified in the string being parsed. If clear, the extension field will always be modified. If no extension is specified the FCB extension field will be set to blanks (20h).

Bit 2: if set, the filename field in an existing FCB will be modified only if a filename is specified in the string being parsed. if clear, the filename field will always be modified. If no filename is specified the FCB filename field will be set to blanks (20h).

Bit 1: if set, the drive ID byte in the resulting FCB will be modified only if a drive ID is specified in the string being parsed. if clear, the drive ID will always be modified. If no drive is specified the drive ID in the resulting FCB will be set to zero, (default).

Bit 0: if set, leading separators will be ignored.

DS:SI = Segment:offset of text string
ES:DI = Segment:offset of FCB

Returns: AL = 0 if no global (wildcard) characters encountered
AL = 1 if parsed string contains global characters
AL = 0FFh if drive specifier is invalid
DS:SI = Segment:offset of first character after parsed name
ES:DI = Segment:offset of formatted, unopened FCB
Notes: Permitted separators are: - : . ; , = + TAB and SPACE

The call regards all control characters, the above separators (when trailing) and < > I / " [ and [ as terninating characters. If no valid filename is present the contents of ES:DI+1 is a blank. If a '*' occurs in an extension, it and all remaining characters in the FCB are set to '?'. This function (and FCBs in general) cannot be used with file specifications which include a path.

Function 2Ah - Get system date

Action: Returns the system day, month and year plus the day of the week.
On entry: AH = 2Ah
Returns: CX = year (1980 to 2099)
DH = month (1 to 12)
DL = day of month(1 to 31)
AL = day number in week (0 to 6 = Sunday to Saturday)
Notes: The format of the registers returned by this call is the same as that required by Function 2Bh. Although shown above as decimal values for clarity, all values are in hex.

Function 2Bh - Set system date

Action: Reset the date held in the system clock
On entry: AH = 2Bh
CX = year (1980 to 2099)
DH = month (1 to 12)
DL = day of month (1 to 31)
Returns: AL = 0 if successful
AL = if invalid date supplied (no change)
Notes: The system time of day is unaffected by this call.

Function 2Ch - Get system time

Action: Returns the time of day as held by the system clock.
On entry: AH = 2Ch
Returns: CH = hour(0 to 23)
CL = minute (0 to 59)
DH = second (0 to 59)
DL = centiseconds (0 to 99)
Notes: The register format returned by this call is the same as that required by Function 2Dh.

Function 2Dh - Set system time

Action: Sets the time of day held in the system clock.
On entry: AH = 2Dh
CH = hour(0 to 23)
CL = minute (0 to 59)
DH = second (0 to 59)
DL = centiseconds (0 to 99)
Returns: AL = 0 if time reset successfully
AL = 0FFh if invalid time supplied (no change)
Notes:

Function 2Eh - Set verify flag

Action: Sets or cancels the system read after write verify flag.
On entry: AH = 2Fh
AL = 0 to turn verification off
AL = 1 to turn verification on
DL should be set to zero
Returns: Nothing
Notes: This call is intended to provide increased data integrity by allowing read after write verification on all data written to disc.

It is the equivalent to the DOS command VERIFY and, like the manual command, is non-functional in DOS Plus 2.1.

Function 2Fh - Get DTA address

Action: Returns the segment:offset of the current DTA for read/write operations.
On entry: AH = 2Fh
Returns: ES:BX = Segment.offset of current DTA
Notes: If the DTA has not been explicitly set it defaults to 080h in the PSP.

Function 30h - Get DOS version

Action: Returns the version number of the Operating System.
On entry: AH = 30h
Returns: AL = Major version number (e.g. 2.10 = 2)
AH = Minor version number (e.g. 2.10 = 0Ah)
Notes: In the 512 this call returns 2.11.

Function 31h - Terminate & stay resident (keep)

Action: Terminate program execution but leave memory allocated.
On entry: AH = 31h
AL = Return code
DX = memory size to be reserved (in paragraphs)
Returns: Nothing
Notes: Notes: TSR programs are usually re-entered by having previously re-directed an interrupt vector to point back into the code. In this way the program may be re-entered as a result of normal system activity, or as a result of an explicit call by another program.

Function 32h - Get disc info (Undocumented call)

Action: Returns the pointer to the specified disc drive information block
On entry: AH = 32h
DL = drive number (0 = default, 1 = A: etc)
Returns: AL = 0 if drive valid
DS:BX = segment:offset of disk information block
AL = 0FFh if invalid drive number
Notes: This call is unofficial and is not supported by DOS Plus.

Function 33h Get or set CTRL-BREAK flag

Action: Returns or sets the CTRL-BREAK action
On entry: AH = 33h
If getting the status of the flag: AL = 0
If setting the flag: AL = 1
DL = 0 to turn CTRL-BREAK checking off
DL = 1 to turn CTRL-BREAK checking on
Returns: DL = 0 if CTRL-BREAK checking off
DL = 1 if CTRL-BREAK checking on
Notes: Notes: This command is the functional equivalent of the DOS command BREAK. Like that command, in the 512 this call is non-functional.

Function 34h - Find active byte (Undocumented)

Action: Returns the number of currently active processes
On entry: AH = 34h
Returns: ES:BX = Segment:offset of active byte address
Notes: This call is unofficial and is not supported by DOS Plus. In MSDOS it is mainly used by TRS.

Function 35h - Get interrupt vector

Action: Returns the segment:offset of a nominated vector.
On entry: AH = 35h
AL = interrupt number
Returns: ES:BX = Segment offset of interrupt vector contents
Notes: This is the approved way to read interrupt vector contents. The original contents of the vector, after storage, can be amended by a call to function 25h.

Function 36h - Get free disc space

Action: Gives the number of free clusters on a specified disc.
On entry: AH = 36h
DL = Drive code (0 = default, 1 = A: etc)
Returns: If specified drive valid:
AX = Sectors per cluster
BX = number of available clusters
CX = bytes per sector
DX = Clusters (allocation units) per drive
If specified drive is invalid:
AX = 0FFFFh
Notes: Similar information is returned by functions 1Bh and 10h

Function 37h- Reserved

Function 38h - Get country information

Action: Reading geographically variable system constants.
On entry: AH = 38h
AL = 0
DS.DX = Segment:offset of a 32 byte control block
Returns: If unsuccessful Carry flag set AX = Error code

If successful the 32 byte block contents are as follows.

5 byte currency symbol add, null terminated
2 byte thousands separator, null terminated
2 byte decimal separator, null terminated
2 byte date separator, null terminated

1 byte bit field currency format
Bit 0: clear if currency symbol precedes value, set if value precedes currency symbol
Bit 1: clear if no space between the value and the currency symbol, Set if a space required

1 byte time format
Bit 0: clear for 12 hour clock, set for 24 hour clock

2 words for case map call address
2 bytes data list separator, null terminated
5 words reserved

Notes: Unlike its MSDOS counterpart, this call does not permit the stored information to be amended.

Function 39h - Create subdirectory

Action: Creates a new subdirectory using the specified drive and path data.
On entry: AH = 39h
DS:DX = Segment:offset of ASCIIZ path specification
Returns: Carry: clear if successful, set if unsuccessful, when:
AX = 3 if path not found, 5 if access denied
Notes: The function fails if:
  1. Any part of the pathname does not exist.
  2. A directory of the same name already exists in the same path.
  3. The parent directory is the root and it is full.

Function 3Ah - Delete subdirectory

Action: Deletes a specified subdirectory.
On entry: AH = 3Ah
DS:DX = Segment:offset of ASCIIZ path specification
Returns: Carry clear if succesful
Carry set if unsuccessful, when:
AX = Error code as follows:
3: path not found
5: access denied
6: current directory
16: directory contains files
Notes: The function fails if:
  1. Any part of the pathname does not exist.
  2. The specified directory is the curmnt directory.
  3. The specified directory still contains files.

Function 3Bh - Set current directory

Action: Sets the specified directory to be the current directory.
On entry: AH = 3Bh
DS.DX = Segment:offset of ASCIIZ path specification
Returns: Carry clear if successful,
Set if unsuccessful, when:
AX = Error code 3: path not found
Notes: The call fails if any part of the pathname does not exist.

Commonly the current directory is ascertained by a call to function 47h, then stored by a program so the original current directory can be reset on completion of operations.

Function 3Ch - Create or truncate file

Action: Creates a new entry in the specified directory on the specified drive for the named file, or truncates the length of an existing file of the given name and path specification to zero length. The file is opened for read/write access and a 16 bit handle is returned for future access.
On entry: AH = 3Ch
CX = File attribute:
0 = normal
1 = read only,
2 = hidden,
3 = system
DS:DX = Segment:offset of ASCIIZ file specification
Returns: Carry clear if successful: AX = file handle
Carry set if unsuccessful: AX = Error code as follows
3: Path not found
4: No handle available (too many files)
5: Access denied
Notes: The function fails if:
  1. Any part of the pathname does not exist.
  2. A file of the same name afready exists in the same path with the read only attribute set.
  3. The parent directory is the root and it is full.

Function 3Dh - Open file

Action: Opens a file in the specified or default directory on the specified drive for the named file. A 16-bit handle is returned for future access.
On entry: AH = 3Dh
AL = access mode, where:
0 = read access
1 = write access
2 = read/write access
All other bits off
DS.DX = Segment:offset of ASCIIZ file specification
Returns: Carry clear if successful: AX = file handle
Carry set if unsuccessful AX = Error code as follows
2: File not found
3: Path does not exist
4: No handle available (too many files)
5: Access denied
0Ch: Access code invalid
Notes: Any normal system or hidden file with a matching name will be opened by this function. On return the read/write pointer is set to zero, the start of the file.

The call fails if:
1. Any part of the path does not exist.
2. A read only file is opened for write or read/write access.

Function 3Eh - Close file

Action: Closes a successfully opened file. All buffers are flushed to disc and the file handle is freed for re-use. If the file was modified, the date and time stamps and the file length are updated in the directory entry.
On entry: AH = 3Eh
BX = the file handle
Returns: Carry clear if successful, set if failed, when AX = error code 6, invalid handle or not open
Notes: In MSDOS calling this function with a handle of zero closes the standard input device! DOS Plus does not suffer from this bug.

Function 3Fh - Read file or device

Action: Reads a specified number of bytes from a successfully opened file or device.
On entry: AH = 3Fh
BX = File handle
CX = Nurnber of bytes to be read
DS:DX = Segment:offset of buffer area
Returns: Carry clear if successful
AX = number of bytes read
AX = 0 means that EOF was already reached.
Carry set if failed, and AX = Error code as follows:
5: Access denied
6: Invalid handle or not open
Notes: If reading frorn a character device in cooked mode, a maximum of one line will be read, as a carriage return (0Dh) is treated as a record terminator.

If the carry flag is clear and AX is less than CX a partial record was read or there was an error.

Function 40h - Write to file or device

Action: Reads a specified number of bytes from a successfully opened file or device.
On entry: AH = 40h
BX = File handle
CX = Number of bytes to be written
DS:DX = Segment:offset of buffer area
Returns: Carry clear if successful, when
AX = number of bytes written
AX = 0 means the disc is full
Carry set if failed, when:
AX = Error code as follows:
5: Access denied
6: Invalid handle or not open
Notes: If the carry flag is clear and AX is less than CX, this means that a partial record was written or there was an error.

Function 41h - Delete file

Action: Deletes a file from the specified or default disc and directory.
On entry: AH = 41h
DS.DX = Segment:offset of ASCIIZ file specification
Returns: Carry clear if successful, set if failed, when AX = Error code as follows:
2: File not found
5: Access denied
Notes: This deletes a file by deleting its directory entry. The ASCIIZ string specifying the file may not include wildcards. The function fails if:
  1. Any part of the path does not exist.
  2. The specified file has a read-only attribute.

Function 42h- Move file pointer

Action: Sets the file pointer to the specified position relative to the start or end of the file, or to the current pointer location.
On entry: AH = 42h,
AL = method code as follows.
0: Absolute byte offset from start of the file. (Always +ve double integer)
1: Byte offset from current location (+ve or -ve double integer)
2: Byte offset from the end of the file (+ve or -ve double integer)
BX = File handle
CX = MSB of offset
DX = LSB of offset
Returns: Carry clear if successful
DX = MSB of new pointer location
AX = LSB of new pointer location
Carry set if failed, when AX = Error code as follows:
1: function number invalid
6: invalid handle or not open
Notes: The method code determines the relative base for the pointer move, which uses a 32 bit integer to set the new location.

Method 2, if called with an offset of zero returns the length of the file as the new pointer value.

Method 1 or 2 can set the pointer to a location before the start of the file, but an error will occur if a subsequent attempt is made to use this pointer location.

For all methods (and results) the returned pointer location is always an absolute byte offset from the start of the file.

Function 43h - Get or set file attributes

Action: Obtains or sets the attributes of the specified file.
On entry: AH = 43h
AL = 0, get file attribute or AL = 1, set file attribute
CX = new attribnte (when AL = 1) as follows:
bit 5 = archive
bit 2 = system
bit 1 = hidden
bit 0 = read only
DS:DX = Segment:offset of ASCIIZ file specification
Returns: Carry clear if successful,
CX = attribute (when AL was 1)
Carry set if failed, AX = Error code as follows:
1: function code invalid
2: file not found
3: path not found or file not found
5: attribute cannot be changed
Notes: This function cannot be used to set a file's volume label bit (3), or the sub-directory bit (4). These may only be changed by using an extended ECB.

Function 44h- Device driver control (IOCTL)

Action: Passes information directly between an application and a device driver.
On entry: AH = 44h
AL = 6 get input status
AL = 7 - get output status
BX = handle
Returns: Carry clear if successful
AL = 0: For device or output file = Not Ready. For input file = Pointer at EOF
AL = FFh: For device, input or output file = Ready
Carry set if failed, when AX = Error code as follows:
1: AL not 6 or 7
5: Acces denied
6: Invalid handle or not open
0Dh: Invalid data
Notes: This call is a partial implementation of the full MS/PCDOS flindion, as it only supports status checkng in the 512.

Function 45h - Duplicate handle

Action: Returns a second handle for a file or device which has already been successfully opened.
On entry: AH = 45h
BX = existing file or device handle
Returns: Carry clear if successful
AX = new handle
Carry set if failed, when
AX = Error code as follows:
4: No handle available
6: Handle invalid or not open
Notes: If the file pointer attached to one handle is implicitly moved by a seek, read or write, the pointer for the other handle is also moved.

The purpose of this call is to force directory updating for a file without having to close it (and then re-open it). After obtaiidng the new handle, the logical file associated with it is closed by function 3Eh, forcing a directory update, but leaving the original handle available for further input/output operations.

Function 46h - Force duplicate of handle

Action: Given two handles, make the second refer to the same file at the same point as the first.
On entry: AH = 46h
BX = first file handle
CX = second file handle
Returns: Carry clear if successful, set if failed when AX = Error code
4: No handles available
6: Invalid handle or not open
Notes: If the handle specified in CX already refers to an open file, that file is closed before this function is performed.

After the call, if the file pointer attached to one handle is implicitly moved by a seek, read or write, the pointer for the other handle is also moved.

Function 47h - Get current directory

Action: Obtains the ASCIIZ string of the current directory's path.
On entry: AH = 47h
DL = Drive code (0 = default, 1 = A:, etc)
DS:SI = Segment:offset of 64byte scratch buffer
Returns: Carry clear if successful, full directory pathnarne is placed in the buffer.
Carry set if failed when AX = Error code as follows:
4: No handle available
6: Drive specification invalid
Notes: The returned pathnarne does not mdude the drive ID, nor is it prefixed with a '\'. It is terminated by a null byte, therefore if this call is issued from the root directory, the first byte in the buffer will be zero.

Function 48h - Allocate memory

Action: Allocates a block of memory and returns a pointer to the start of the area.
On entry: AH = 48h
BX Number of paragraphs of memory needed
Returns: Carry clear if successful when AX = first segment of allocated block
Carry set if failed when AX = Error code as follows:
7: memory control blocks destroyed
8: insufficient memory, BX = size of largest available block
Notes: If the call succeeds AX:0000 points to the start of the block.

When a COM file loads, it conceptually owns all the remainder of memory from its PSP upwards. This call may be used to lirnit a program's memory allocation to its immediate requirements.

Function 49h - Release memory

Action: Releases memory to make it available to other programs.
On entry: AH = 49h
BX = New requested block size in paragraphs
ES = Start segment of block to be modified
Returns: Carry clear if successful, set if failed when AX = Error code as follows:
7 = memory control blocks destroyed
8 = insufficient memory
9 = incorrect segment in ES
BX = Size of largest available block
Notes: This call modifies the size of a block of memory previously allocated through Function 48h. The call must be used by a COM program to release all unused memory before spawning by means of EXEC, Function 4Bh. EXE programs may also use this call.

Function 4Bh - Execute program

Action: Loads a program for execution under the control of an existing program. By means of altering the INT 22h to 24h vectors, the calling prograrn can ensure that, on termination of the called program, control returns to itself.
On entry: AH = 4Bh
AL = 0: Load and execute a program
AL = 3: Load an overlay
DS.DX = segment:offset of the ASCIIZ pathname
ES:BX = Segment:offset of the parameter block
Parameter block bytes:
0-1: Segment pointer to envimmnemnt block
2-3: Offset of command tail
4-5: Segment of command tail
6-7: Offset of the first FCB to be copied to new PSP+5Ch
8-9: Segment of the first FCB
Ah-Bh Offset of the second FCB to be copied to new PSP+6Ch
Ch-Dh Segment of the second FCB
Returns: Carry clear if successful. On return all register contents are destroyed, including the stack pointers.
Carry set if failed when AX = Error code as follows:
1: Function invalid
2: File not found or path invalid
5: Access denied
8: Insufficient memory
0Ah: Environment invalid
0Bh Format invalid
Notes: To protect the caller's register contents they should be pushed on the stack and the stack pointers, SS:SP stored in a known location before the call. On return these should be retrieved immediately with interrupts disabled to prevent interrupts occuring before stack integrity is regained.

The ASCIIZ pathnarne must include the drive, path and filename of the program to be loaded. The environment block must be paragraph-aligned and consist of one or more ASCIIZ strings, all terminated by an extra zero byte.

Command tails are in the usual format for PSPs, that is, a count byte and the command tail terminated by a carriage return, which is not included in the count.

All active handles, devices and I/O redirection assignments in the calling program are inherited by the executed program.

Function 4Ch - Terminate program with return code

Action: Terminates execution of a program with return to COMMAND.COM or a calling routine, passing back a return code. Allocated memory is freed, vectors for interrupts 22h to 24h are restored from the PSP and all file buffers are flushed to media. All files are closed and directories are updated.
On entry: AH = 4Ch
AL = Return code (Error level)
Returns: Nothing
Notes: This is the approved method of terminating program execution. It is the only way that does not rely on the contents of any segment register and is thus the simplest exit, particularly for EXE files.

The return code can be interrogated by a calling program by means of function 4Dh, and by the batd' file commands, IF ERRORLEVEL. Conventionally a return code of zero indicates success, any other value failure. Standard DOS return codes are:

0: Successful operation
1: CTRL-BREAK termination
2: Critical error terrnination
3: Terminated and stayed resident

Return code values can be used at the discretion of the programmer (avoiding codes 1 to 3), thus both success or a wide range of failure types may be indicated by varying the code. For the return of result codes to the caller by an EXEced program a better method is to use other registers, but only the contents of register AL are significant to the batch command ERRORLEVEL.

Function 4Dh - Get return code

Action: Used by a parent task to obtain the return code of a program executed by a call to function 4Bh.
On entry: AH = 4Dh
Returns: AH = Exit type:
0 Normal termination
1: CTRL-C termination
2: Terminated by critical device error
3: Terminated by a call to function 31h
AL = Return code
Notes: This call is a 'one-shot' function, that is, it will yield the return code of a called program once only.

Function 4Eh - Search for first match

Action: Searches the default or specified drive:directory for the first occurrence of a matching filename.
On entry: AH = 4Eh
Returns: CX = Attribute to use in search
DS:DX = Segment:offset of ASCIIZ file specification
Notes:

CX = 0 if successful. The current DTA is filled as follows:

Bytes
0-20: Reserved for use by DOS in subsequent calls
21: Attribute of matched file
22-23: File time stamp
24-25: File date stamp
26-27: least significant word of file size
28-29: Most significant word of file size
30-42:: Filenarne.extension in ASCIIZ string form
Carry set if failed, AX = Error code as follows
02h path invalid
12h: no rnatching directory entry

This call assumes the DTA has heat set up by a successful call to function 1Ah.

Both wildcards (? and *) are permitted in filenames, but only the first matching name is returned.

if the attribute in CX is zero only normal files are searched. If the volume label attribute bit is set only volume labels are returned. For all other attribute settings, (i.e, hidden, system or directory) those files and normal files are searched

Function 4Fh - Search for next match

Action: Searches for the next matching file after a previously successful call to Function 4Eh.
On entry: AH = 4Fh
Returns: Carry clear if successful
The current DTA is filled as follows:-
Bytes
0-20 : reserved for use by DOS in subsequent calls
21: Attribute of matched file
22-23: File time stamp
24-25: File date stamp
26-27: least significant word of file size
28-29: Most significant word of file size
30-42: Filenarne.extension in ASCIIZ string form
Carry set if failed, AX = Error code
12h: no matching directory entry
Notes: When used this call requires a DTA containing returned data from a previously successful call to function 4Eh or 4Fh.

Use of function 4Fh is only relevant when the original file spedacation used in function 4Eh included at least one wildcard.

Function 50h - Get disc information (Undocumented call)

Action: Returns a pointer to the disc information block.
On entry: AH = 50h
DL = drive number (0 = default, 1 = A: etc)
Returns: AL = 0 if drive exists
DS:BX = Segment:offset of disc information block
AL = 0FFh if failed
Notes: This call is unofficial and is not supported by DOS Plus.

Function 51h - Reserved

Function 52h- Reserved

Function 53h - Reserved

Function 54h - Get verify flag

Action: Reads the current state of the verify flag.
On entry: AH = 54h
Returns: AL = 0 if verify off
AL = 1 if verify on
Notes: This call is the countepart of function 2Eh. In DOS Plus AL is always returned as zero.

Function 55h - Reserved

Fundion 56h - Rename file

Action: Renames a file and or moves its directory entry to a different directory on the disc.
On entry: AH = 55h
DS:DX = Segment:offset of current ASCIIZ filename ES:DI = Segment:offset of new ASCIIZ filename
Returns: Carry clear if successful
Carry set if failed, AX = Error code as follows:
2: File not found
3 : path not found or the file doesn't exist
5: Access denied
11h : new name not same device
Notes: The call fails if:
  1. Any part of the pathnarne does not exist.
  2. The new filename refers to a different disc.
  3. The new name is in the root directory, which is full.
  4. A file with the new path and name already exist.

Function 57h - Get or set file date and time

Action:
On entry: AH = 57h
BX = file handle
AL = 0 to get date and time
AL = 1 to set date and time
CX = time:
bits 9-0Fh = hours (0-23)
bits 5-8 = minutes (0-59)
bits 0-4 = No. of two-second increments (0-29)
DX = date.
bits 9 - = year relative to 1980 (0-119, i.e. 1980-2099)
bits 5-8 = month of year(1 to 12)
bits 0-4 = day of month(1 to 31)
Returns: Carry clear if successful
If getting date and time:
CX = time (in format above)
DX = date (in format above)
Carry set if failed, AX = Error code as follows:
1 - function code invalid
6 - file handle invalid
Notes: The file must have been previously opened or created by a call to function 3Ch or 3Dh.

For simplicity the date and time formats are shown above in the sequence they are stored in the directory.

This completes the list of INT 21h function codes valid in DOS PIus 2.1.

Functions 58h and above are only available in versions of MSDOS later than 2.11, and with the exception of function 63, later than version 3.0.