|
One and only Indian Editor's Choice Award winning
8086/8088 Assembler
This page is for Indians only. However, if you want to
know what recruiters do in India, read on.
NGASM 8086/8088 Assembler
is the first and the only Indian Assembler - to be precise,
the first Indian 8086/8088 Assembler.
NGASM 8086/8088 Assembler v1.3
got Editor's Choice Award from
RedSofts.com
NGASM 8086/8088 Assembler is
authored by G.Gurupandian and G.Namasivayam.
The first
version of NGASM 8086/8088 Assembler had been developed by
G.Gurupandian and G.Namasivayam within 2 years of starting to selflearn Assembly
Language (this is a big achievement).
Assembly Language was learnt only after buying a 386 installed
in September 1994. There was no design for our Assembler. When
talking about the design aspect after the Assembler was
developed, we used to exchange views that there was a design
without a design. Before Systech Software was born, in 1996
the first version was ready but not before our dad passed away
in the same year which caused the PC to be put away for 3
months. Even with a design on hand, developing an Assembler
within 2 years of starting to learn Assembly Language is a
nightmare proposition. If it is easier to code an Assembler
within 2 years, many Engineering Colleges must have come up
with some examples of proof because learning the Instruction
Set, BIOS Interrupt services, DOS Interrupt services, and to
top it all, Design of a Single pass and a 2-pass Assemblers
all are included in their Syllabus for at least one course.
This is learning A, B, C, D, ... What next?. If you want a new
Syllabus ask for it, but you will have to pay for it.
Technology doesn't come cheap.
NGASM 8086/8088
Assembler was developed just for our use, not for holding
India's pride high. But a search on the Internet revealed that
there was no other Indian Assembler till
date.
G.Gurupandian is the Machine Code man. Because
Machine Code was not available anywhere, he had to figure out
all of that. Assembling (putting together) the machine code
was the toughest part. He sort of broke the 8086 code. He took
just one and one half month for it. Then he did the Code
Generation Engine (that is, changing source code line for line
into machine code) - The term Code Generation Engine here is
not intended to ward off other people from entering this
department. If you too find a Machine Code man, and a brother
at that, you too will become an Assembler author (or
co-author, to be precise?). Our brain needs to anchor at some
very strong fact (is it support?, backup?, home PC?, library
including .LIB library?, good professors?, peers?, the
Internet?), to get all the strength to do something
wonderful.
Aged people can extend their lifetime,
simply by anchoring on the strengths of their grand children.
Usually they (aged people) get weaker by anchoring on the
wrong doings and weaknesses of all around them and, most
important, on whatever they failed to do.
Coming back
to the Assembler, G.Namasivayam coded the Lexical Analysis and
Parsing part. LEX and YACC were not used. About LEX and YACC,
LEX creates yylex() - the pattern matching stuff, YACC creates
yyparse() - the compiler compiler, then main() calls yyparse()
which calls yylex() which returns tokens. yyparse() can be
called the assembler compiler if what you are trying to create
is an Assembler. yyparse() sets up the 'actions' for the
token(s) returned by yylex(). The code for the 'actions' is
what you have to code yourself and provide in an appropriate
file. This code is used by YACC to set up the 'actions' for
the token(s). This code includes code for handling the Symbol
Table too. You cannot make LEX or YACC or both to somehow
manage the Symbol Table and / or Code Generation stuff without
you writing the code for the 'actions', in fact, all the
'actions' including the most dreaded code generation. After
all, LEX is for tokens and YACC is for interpreting the tokens
and setting up the code for the 'actions'. If you can identify
the tokens and put them together and get the meaning, you can
code the 'actions'. Coding the 'actions' is what you have to
do even if you use LEX and YACC. Because, as the name
suggests, YACC (Yet Another Compiler Compiler) just creates
the final Compiler as a source code file. For me, for writing
an Assembler, the LEX-YACC method is a circumlocutional way I
would like to avoid.
In short, Lexical Analysis and
Parsing means, processing the human-readable source code in a
.ASM or .C or .CPP file. The term Lexical Analysis and Parsing
here is not intended to ward off other people from entering
this department. A
manufactured-from-the-source-code-in-a-compiler-book LEX.EXE,
tuned for processing Assembly Language code, was used at a
later time to understand what LEX.EXE can do; this got as far
as identifying, isolating, and printing out all symbols - only
symbols - from NGASM source code!!!. A symbol is a label which
is an identifier for a Variable, an Equate, a Routine or a
Location in Code.
Though this assembler was developed
in 1996, just two years
into having a home PC, only a later version of it
had been distributed as FREEWARE on the Internet just from
April 2000.
The A86 Assembler was used for developing
some versions up until v1.0.5 which were not released. But
NGASM v1.0.5 was used to create the first-released NGASM
8086/8088 Assembler v1.1).
When G.Namasivayam tried to
use NGASM 8086/8088 Assembler itself to develop Version 1.1,
there was not enough DOS memory in control of the Assembler to
avoid "Symbol Table Overflow" problem. G.Namasivayam made all
symbols unique within the first few characters so as to avoid
"Symbol Table Overflow". With switches -L (to reduce the
number of significant characters in Labels) and -B (to reduce
buffer size for source code being read and processed)
assisting, this made possible creating NGASM 8086/8088
Assembler v1.1 using NGASM 8086/8088 Assembler
v1.0.5.
After a long time (many years), one fine day it
struck to G.Namasivayam that by a simple manipulation of the
Segment Registers in the code for Symbol Table work, NGASM
8086/8088 Assembler can be made to use all the memory
allocatable by DOS for Symbol Table. It took just 3 days to
code Memory Chain Management and some more days to code
Segment Registers Manipulation, a neat simple trick. Totally
it took 10 days to do all that. The "Symbol Table Overflow"
problem was done away with once for all.
All versions
of NGASM 8086/8088 Assembler, from the very first version to
the current version, NGASM 8086/8088 Assembler v1.4 Beta 2,
had been entirely hand-coded. No library code whatsoever has
ever been called or used. This is a big achievement
considering the fact that many programmers always use somebody
else's library code (.LIB files) and continue to think that
they made a lifetime achievement using (somebody else's)
library files. It is appreciable, anyway, if total amount of
computer time they had was not appreciable. May be using .LIB
files all the time was and is a real shame in the DOS
world.
We suspect that in many countries they ask
students, as part of their syllabus, to figure out and redo,
in assembly language code, the implementation of many C
functions in the High School level itself. It is never done in
India even at the highest level of education.
Even
professors think that using library code is the fastest and
shortest way to develop what students want to develop. Time
constraint is a good excuse. Using library code (particularly
somebody else's, even if it comes with, for example, the C,
C++ compilers) becomes a habit and permanently switches off
one's coding ability once for all when it comes to coding what
the library CANNOT do. The student finds himself severely
incapacitated, if no library could be found to implement
something that could be as simple as number / string
processing, reading input from a file for byte-level
processing, etc. Students realize this, after they complete
their education and get out of college and are left to fend
for themselves with no peers or professors to be found to
guide them. The use of libraries severely impairs their
decision making power even at the subroutine level. One day if
they are challenged to make a design decision on a Symbol
Table for an Assembler, they will know how much their
education has enabled them. Throwing away the Symbol Table
will not end one's problems.
Can such freshers think
about writing an Assembler in Assembler (that is, by using the
Assembly Language)?
Can they hand-code everything even
with a Master's Degree in IT on hand?
Leaving the
education system to itself, and coming back to the Assembler,
NGASM 8086/8088 Assembler v1.4 Beta 2 is developed by using
NGASM 8086/8088 Assembler v1.4 Beta. This is another big
achievement because few people in the entire world can claim
they develop their utilities or, much less, their own
development tool by using their own development tool. I,
G.Namasivayam, feel that by developing NGASM and giving it
free, I paid back mother Earth for all the nutrients she gave
me through her grains of sand. I know how much other Assembler
authors will be proud of their Assemblers. There are many real
godfathers out there.
Even now most universities and
colleges don't have links on their Websites to stuff that can
really inspire a student. The Indian condition is much worse,
excepting Engineering Colleges, many of our other colleges are
yet to have their own Websites. Engineering Colleges have a
lot of computers (usually 100+), but an Intranet is nowhere on
the horizon. Can we talk about inspiring links or inspiring
local content on a college's Intranet under Indian
conditions?. All that a very good college's very good website
has is educating .PDF and other files - Who needs these basic
education stuff?. No inspiring content.
No real student
is shaken by these statements. If you are shaken you are not
fit to be a student to learn anything really worthwhile.
Because most case studies involve mind-boggling problems and
solutions. They are not meant to destabilize the
students.
NGASM 8086/8088 Assembler v1.3 has been used
to create our Editor's Choice Award and other Award winning
disk utilities,
- RECOVER Floppy Pro v1.0
- RECOVER Fixed/Floppy Disk FAT32/16/12 v3.0
Release 3
- the FREEWARE floppy disk
analyzer, ANALYZER for RECOVER Fixed/Floppy Disk
v0.3 and
- the FREEWARE floppy disk
quick analyzer, ANALYZER for RECOVER Floppy Pro
v0.3
We used to state some of
these mind-boggling facts in our resume when we were looking
for a job once upon a time, that was before Version 1.1, but
employers / recruiters couldn't believe it. They are incapable
of downloading our NGASM 8086/8088 Assembler and comparing it
with other Assemblers available on planet Earth to ascertain
the very fact that the former has been developed by us. We are
happy but we failed to understand whom these recruiters
operating in India were recruiting for the IT
Industry.
Any one with knowledge of any other Indian
Assembler, or an Indian Compiler (excluding 8051 C Compilers
from the Pune based co.) or an Operating System -
including its developer(s) - may please e-mail us a
download link to that Assembler, Compiler, or the Operating
System.
We will always be happy whether or not that
developer was ahead of us.
One youngster - Indian - has
written us about his DOS-like Operating System he's been
developing and a scripting language he developed for a
company. That was the one and only reply to this Web page
until now from this country, India.
Save our country's
name by developing an Assembler or a Compiler without any
professor or lecturer guiding you in the project, by becoming
a WINDOWS expert, or by participating in the LINUX Kernel
development. This is the era of the specialists.
By the
way, do not create a big team to develop an Assembler or a
Compiler because big companies already have one big team per
project (they will not disclose the number of members in a
team!). And never develop an Assembler or a Compiler for
yourself because your recruiter will have a tough time
figuring out if you really authored one. If you author one, be
sure to get a certificate from your college or a sponsor.
That's what the recruiter is capable of handling easily - just
paper work!!!.
But India was very proud of these facts
(as of 2005):
Even the 200th person is not an Internet
subscriber in India.
But every 35th person is using
Internet in India.
One (1) person (1.34 actually) - out
of one hundred (100) persons - owns a computer.
India Report,
Wednesday, December 22, 2004 Information technology researcher Gartner Inc. said
India's computer market grew 35 percent during the
July-September quarter, 2004, compared with the same period a
year ago. One in every 10 computers sold in Asia-Pacific
region, excluding Japan, is now in India, the report said,
adding India is among the fastest growing markets for
computers in Asia.
India, a country with more than a
billion people, has been a laggard in adopting technology due
to high levels of poverty and illiteracy, but faster economic
growth in recent years has led to a surge in demand. As of
March 2004, India had 12 million computers and 4.5 million
Internet connections. That is, one (1) person (1.2 actually) -
out of one hundred (100) persons - owns a
computer.
Manufacturers and traders expect to sell
about 4.2 million computers in the fiscal year ending in
March, 2005.
India Report, 2009
After all these
years of reliance on the education system, even now in 2009,
many are still refusing to respect computers, having failed to
understand what they can use a personal computer for, despite
the fact that India is number 4 (with 81-million Internet
users) in the list of TOP 20 COUNTRIES WITH THE HIGHEST NUMBER OF INTERNET
USERS
|