Computer graphics has extensive use in tomography and simulations of operations. Tomography is the technique that allows cross-sectional views of physiological systems in X-rays photography.Moreover, recent advancement is to make model and study physical functions to design artificial limbs and even plan and practice surgery.
Computer-aided surgery is currently a hot topic.
Archives
-
▼
2009
(27)
-
▼
December
(18)
- Medicine and Virtual Surgery
- ART AND DESIGN
- The Turing test
- Scientific Visualization and Analysis
- Layout and Design
- User Interfaces
- Graphics Applications
- C language program Lecture 1
- Some History
- Why Study Computer Graphics?
- Turing Machine – 1936
- Evolution of Computing Today’s Goal
- Introduction
- MOTIVATION AND TOOLS
- MASTERING THE COMPLEXITY
- COMPLEXITY OF NETWORK SYSTEMS
- NETWORKS IN DAILY LIFE
- Interrupt Mechanism
-
▼
December
(18)
Partner Link
Cheap Mobile Phones
- Cheap Mobile Phones - Best Mobile Phone Deals, Laptops, Sat Nav Devices, Cordless Phones, Internet Phones, Broadband Internet Deals from leading retailers of UK. Choose Products and Compare Prices for best deals.
Mobile Phones
- Offers mobile phones on contract,
pay as you go, sim free deals with free gifts.
We compare latest phone deals from
leading retailers of UK.
. ||
Custom logo design
Get your company a logo design. Professional logo designs by expert logo designers. Call 0208 133 2514 for custom logo design packages.
Top Site
Medicine and Virtual Surgery
Labels: Computer Graphics
ART AND DESIGN
Computer graphics is widely used in Fine Arts as well as commercial arts for producing better as
well as cost effective pictures. Artists use a variety of programs in their work, provided by
computer graphics. Some of the most frequently used packages include:
Labels: Computer Graphics
The Turing test
A test proposed to determine if a computer has the ability to think. In 1950, Alan Turing
(Turing, 1950) proposed a method for determining if machines can think. This method is
known as The Turing Test.
The test is conducted with two people and a machine. One person plays the role of an
interrogator and is in a separate room from the machine and the other person. The
interrogator only knows the person and machine as A and B. The interrogator does not
know which the person is and which the machine is.
Using a teletype, the interrogator, can ask A and B any question he/she wishes. The aim
of the interrogator is to determine which the person is and which the machine is.
The aim of the machine is to fool the interrogator into thinking that it is a person. If the
machine succeeds then we can conclude that machines can think.
Labels: Introduction to Computing
Scientific Visualization and Analysis
Computer graphics is very helpful in producing graphical representations for scientific
visualization and analysis especially in the field of engineering and medicine. It helps a lot in
drawing charts and creating models
Labels: Computer Graphics
User Interfaces
Almost all the software packages provide a graphical interface. A major component of graphical interface is a window manager that allows a user to display multiple windows like areas on the screen at the same time. Each window can contain a different process that can contain graphical or non-graphical display. In order to make a particular window active, we simply have to click in that window using an interactive pointing device.
Graphical Interface also includes menus and icons for fast selection of programs, processing operations or parameter values. An icon is a graphical symbol that is designed to look like the processing option it represents.
Labels: Computer Graphics
Graphics Applications
Due to rapid growth in the field of computing, now computer is used as an economical and
efficient tool for the production of pictures. Computer graphics applications are found in almost all
areas. Here we will discuss some of the important areas including:
- User Interfaces
- Layout and Design
- Scientific Visualization and Analysis
- Art and Design
- Medicine and Virtual Surgery
- Layout Design & Architectural Simulations
- History and cultural heritage
- Entertainment
- Simulations
- Games
Labels: Computer Graphics
C language program Lecture 1
The above described service can be used to get the size of a file in the described manner. The following C language program tries to accomplish just that. This program has been saved as .C file and not as .CPP file and then compiled.
Example 21H/42H:
#include
#include
#include
unsigned int handle;
void main()
union REGS regs;
handle = open("c:\\abc.txt",O_RDONLY);
regs.x.bx = handle;
regs.h.ah = 0x42;
regs.h.al = 0x02; //correction
regs.x.cx = 0;
regs.x.dx = 0;
*((int*)(&size)) = regs.x.ax;
*(((int*)(&size))+1) =regs.x.dx;
}
Lets now illustrate how ISR can be invoked by means of another example of BIOS service. Here we are choosing the ISR 10h/01h. This interrupt is used to perform I/O on the monitor. Moreover this service is used to change the size of cursor in text mode. The description of this service is given as under.
AH = 01
CL = Ending Scan Line
On Exit
Unchanged
{
char st[80];
union REGS regs;
regs.h.ah = 0x01;
regs.h.cl = 0x00;
int86(0x10,®s,®s); //corrected
}
The program is quite self explanatory as it puts the starting scan line to be 1 and the ending scan line to be 0. Henceforth when the service execute the cursor will disappear.
Use of ISRs for C Library functions
There are various library function that a program
Writing S/W ISRs
Lets now see how can a programmer write an ISR
Getting interrupt vector
As we have discussed earlier IVT is a table contai
Getting interrupt vector refers to the operation which used to reading the far address stored within the vector. The vector is double word, the lower word of it being the offset address and the higher word being the segment address. Moreover the address read from a vector can be used as a function pointer. The C library function used to do the exactly
Another thing required to be understood are the function pointers. C language is a very flexible language just like there are pointers for integers, characters and other data types there are pointers for functions as well as illustrated by the following example
void myfunc()
{
}
void (*funcptr) ( )
funcptr = myfunc;
myfunc();
There are three fragments of code in this example. The first fragment shows the declaration of a function myfunc()
The second fragment show declaration of a pointer to function named funcptr which is a pointer to a function that returns void.
Interrupt pointers and functions
void interrupt newint ( )
{
...
...
}
Similarly a pointer to such interrupt type function can also be declared as following
void interrupt (*intptr) ( );
where intptr is the interrupt pointer and it can be assigned an address using the getvect() function
Now interrupt number 8 can be invoked using the interrupt vector as following
(*intptr) ( );
Setting Interrupt Vector
void interrupt newint ( )
{
…
…
}
setvect(0x08, newint);
C program making use of Int 65H
Here is a listing of a program that makes use of int 65H to exhibit how software interrupts needs to be programmed.
void interrupt (*oldint65)( );
char st[80] = {“Hello World$”};
void interrupt newint65(void);
void main()
{
oldint65 = getvect(0x65);
setvect(0x65, newint65);
geninterrupt (0x65);
geninterrupt (0x65);
geninterrupt (0x65);
setvect(0x65, oldint65);
}
void interrupt newint65( )
{
_AH = 0x09;
_DX=(unsigned int)st;
geninterrupt (0x21);
}
The above listing saves the address of original int 65H in the pointer oldint65. It then places the address of its own function newint65 at the vector of interrupt number 65H. From this point onwards whenever int 65H is invokes the function newint65 will be invoked. Int 65 is invoked thrice which will force the newint65 function to be invoked thrice accordingly. After this the original value of the vector stored in oldint65 is restored. The newint65 function only displays the string st. As the interrupt 65 is invoked thrice this string will be printed thrice.
The Keep function
One deficiency in the above listing is that it is not good enough for other application i.e. after the termination of this program the newint65 function is de-allocated from the memory and the interrupt vector needs to be restored otherwise it will act as a dangling pointer (pointing to a place where there is garbage or where there is no meaningful function). To make the effect of this program permanent the newint65 function need to be memory resident. This can be achieved by the function keep() which is quite similar to exit() function. The exit() function returns the execution to the parent shell program and de-allocates the memory allocated to the program whereas the keep() function also returns the execution to the parent program but the memory allocated to the process may still remain allocated.
keep (return code, no. of paras);
the keep() function requires the return code which is usually zero for normal termination and the number of paragraphs required to be allocated. Each paragraph is 16 bytes in size.
TSR Programs
Following is a listing of a TSR (Terminate and Stay Resident) program which programs the interrupt number 65H but in this case the new interrupt 65H function remains in memory even after the termination of the program and hence the vector of int 65h does not become a dangling pointer.
#include
#include
char st[80] ={"Hello World$"};
void interrupt (*oldint65)( );
void interrupt newint65( );
void main()
{
oldint65 = getvect(0x65);
setvect(0x65, newint65);
keep(0, 1000);
}
void interrupt newint65( )
{
_AH = 0x09;
_DX=(unsigned int)st;
geninterrupt (0x21);
}
The main()function gets and sets the vector of int 65H such that the address of newint65 is placed at its vector. In this case the program is made memory resident using the keep function and 1000 paragraphs of memory is reserved for the program (the amount of paragraphs is just a calculated guess work based upon the size of application). Now if any application as in the following case invokes int 65H the string st which is also now memory resident will be displayed.
#include
#include
void main()
{
geninterrupt (0x65);
geninterrupt (0x65);
}
This program invokes the interrupt 65H twice which has been made resident.
Labels: Systems Programming
Some History
Some History
The term Computer Graphics was coined in 1960 by william fetter to describe the new design methods that he was developing at Boeing .He created a series of widely reproduced images on a plotter exploring cockpit design using a 3D model of a human body.
Labels: Computer Graphics
Why Study Computer Graphics?
Definition
Computers accept process, transform and present information.
Computer Graphics involves technology to accept, process, transform and present information in
a visual form that also concerns with producing images (or animations) using a computer.
Why Study Computer Graphics?
There are certain important reasons to study computer graphics. We will discuss them under
certain heads:
a. Visualization
I like to see what I am doing. Many a times it happens that you perform certain tasks which you
cannot visualize; for example as a student of data structures, you implement trees, graphs and
other Abstract Data Types (ADTs) but you cannot visualize them whereas you must be having an inner quest to see what these actually look like.
I like to show people what I am doing. Similarly at certain times you would be performing certain
tasks which you know but it would be difficult for others to understand them so there is very
important requirement of showing the things in order to make them understandable.
b. Graphics is interesting
We are visual creatures and for us a picture is worth a thousand words. If we can get rid of text
based static screen and get some graphics; its always interesting to see things in colours and
motion on the screen. Therefore graphics is interesting because it involves simulation, algorithm,
and architecture.
c. Requirement
Well there are certain areas which require use of computer graphics heavily. One example is
drawing of machines. It is required to prepare drawing of a machine before the actual production.The other heavy requirement is for architects as they have to prepare a complete blue print of the building they have to build long before the actual construction work gets underway. Autocad and other applications of the kind are heavily used today for building architecture.
d. Entertainment
Merely a couple of decades back, the idea of a 24 hours Cartoons Network was really a far
fetched one. That was the time when one would wait for a whole week long before getting an
entertainment of mere 15 minutes. Well thanks to computer graphics that have enabled us to
entertain ourselves with animated movies, cartoons etc.
Labels: Computer Graphics
Turing Machine – 1936
2.1 Turing Machine – 1936
Introduced by Alan Turing in 1936, Turing machines are one of the key abstractions
used in modern computability theory, the study of what computers can and cannot do. A
Turing machine is a particularly simple kind of computer, one whose operations are
limited to reading and writing symbols on a tape, or moving along the tape to the left or
right. The tape is marked off into squares, each of which can be filled with at most one
symbol. At any given point in its operation, the Turing machine can only read or write
on one of these squares, the square located directly below its "read/write" head.
Labels: Introduction to Computing
Evolution of Computing Today’s Goal
To learn about the evolution of computing
To recount the important and key events
To identify some of the milestones in computer development
Babbage’s Analytical Engine - 1833
Mechanical, digital, general-purpose
Was crank-driven
Could store instructions
Could perform mathematical calculations
Had the ability to print
Could punched cards as permanent memory
Invented by Joseph-Marie Jacquard
Labels: Introduction to Computing
Introduction
1.1. Charles Babbage (1791-1871)
Creator of the Analytical Engine - the first general-purpose digital computer (1833)
The Analytical Engine was not built until 1943 (in the form of the Harvard Mark I)
1.2. The Analytical Engine
A programmable, mechanical, digital machine
Could carryout any calculation
Could make decisions based upon the results of the previous calculation
Components: input; memory; processor; output
1.3. Ada, Countess of Lovelace(1815-52)
Babbage: the father of computing
Ada: the mother?
Wrote a program for computing the Bernoulli’s sequence on the Analytical Engine -
world’s 1st computer program
Ada: A programming language specifically designed by the US Dept of Defense for
developing military applications was named Ada to honor her contributions towards
computing
A lesson that we all can learn from Babbage’s Life
Charles Babbage had huge difficulties raising money to fund his research
As a last resort, he designed a clever mathematical scheme along with Ada, the Countess
of Lovelace
It was designed to increase their odds while gambling. They bet money on horse races
to raise enough money to support their research experiments
Guess what happened at the end? The lost every penny that they had.
Fast
Bored
Storage
Here is a fact:
In 1997 Deep Blue(It could analyze up to 300 billion chess moves in
three minutes), a supercomputer designed by IBM, beat Gary Kasparov, the World
Chess Champion
That computer was exceptionally fast, did not get tired or bored. It just kept on
analyzing the situation and kept on searching until it found the perfect move from its
list of possible moves …
Goals for Today:
To develop an appreciation about the capabilities of computing
To find about the structure & policies of this course
Labels: Introduction to Computing
MOTIVATION AND TOOLS
One of the reasons of motivation towards networking was resource sharing which
is discussed as follows.
RESOURCE SHARING:
Resource sharing means to share the resources available among many users.
In an office as it is very expensive to give a separate printer to each worker. So if
the printer is shared among the workers then a single printer will be accessible to each
worker. This leads to the motivation of resource sharing.
GOAL OF RESOURCE SHARING:
The goal of resource sharing is to make all programs, equipment and date
available to anyone in the network without regard to physical location of the resource and
the user.
For example: the sharing of a printer among the workers in an office and also the
sharing of information is a goal of resource sharing.
MAIN REASON FOR EARLY RESOURCE SHARING:
The main reason for early resource sharing was not to share the peripheral devices
rather to share the large-scale computational power because computer were extremely
expensive in those days and the government budgets were not sufficient to provide
computers for all scientist and engineers. By resource sharing a researcher could use
whichever computer was best suited to perform a given task.
EFFORTS OF ADVANCED RESEARCH PROJECT AGENCY (ARPA):
The efforts of ARPA was to enable all its research groups have access to latest
computers. For this purpose ARPA started investing in ways to do data networking
ARPA use a new approach consisting of packet switching and internet working to fulfill the purpose of resource sharing. As a result of ARPA research the first network was
established which was named ARPA NET.
In this way the internet was emerged in 1970’s and it has grown drastically since
then as shown in the figure below.
the log of the number being represented. So the values along y-axis represent the power
exponential growth. We also observed that internet has been doubled every nine to twelve
months.
PROBING THE INTERNET:
Let us see how are the figures in above graphs obtained?
In the early days when there were some dozen computers on the network, it was done manually
but now as we have seen that there are millions of computers on the internet so how can we
calculate the number of computers connected to the internet. This is done through probing the
Internet.
Now an automated tool is required that tests to see whether the given computer is online or not.
For this purpose the first tool is the `PING program` which is shown in the figure below.
ping has also given some additional information such the IP addresses of sears.com, the sequence
of packets and the times of transmission known as the round-trip time, as there is no packet loss
so it means that sears.com is connected to the internet
PROBLEM WITH ‘PING’:
Ping, as a tool seems to be simplistic. Now let’s see what are the problems attached with ping.
If ping does not review any responses from host computer it can not tell the reason of problem.
Because one of the following reasons occur but ping will not specify the reason.
- Remote computer might have a problem.
- Local computer might have a problem.
- Ping sometimes fails because of congestion.
flooding attack.
Inspite of these problems ping is still heavily used as a diagnostic tool.
Network administrators use ping as soon as they learn about the failure.
TRACING A ROUTE:
There is another probing tool i-e Trace Route. To get more detail it is used.
the program showed all eight computers that were in the way. The additional information is also
shown in the figure.
Thus we see that tracing a route is more interesting tool than Ping as it tells about each computer
that falls in the way of source and destination computers.
Labels: Computer Networks
MASTERING THE COMPLEXITY
To master the complexity one must follow the following points.
• CONCENTRATE IN UNDERSTANDING THE CONCEPTS:
Instead of details of wires used to connect computers to a specific network, it is important
to understand a few basic categories of wiring schemes their advantages and
disadvantages.
For example:
Instead of how a specific protocol handles congestion, we should concentrate on
what congestion is and why it must be handled.
• LEARNING THE NETWORKING TERMINOLOGY:
The second tool for mastering the complexity is to learn the networking
terminology. In addition to this one must concentrate the concepts and not details,
concentrate on breath and not the depth of technologies, also one should understand the
analogies and illustrations
Network terminology is introduced with new concepts so it is much helpful to learn the
terminology to overcome the complexity of networks.
Labels: Computer Networks
COMPLEXITY OF NETWORK SYSTEMS
Computer networks is a complex subject due to the following reasons
• MANY DIFFERENT TECHNOLOGIES EXIST:
The first reason for the complexity of networks is that there are many different
technologies exist for networking and each technology features are different from the
other. This is because many companies have developed networking standards, which
are not compatible with each other. In this way multiple technologies exist that are
used to connect different networks.
• NO SINGLE UNDERLYING THEORY OR MODEL:
The second reason for the complexity of networks is that there is no single underlying
theory or model, which specifies or defines different aspects of networking. Rather,
various organizations and research groups have developed conceptual models that can
be used to explain differences and similarities between network hardware and
software.
• MODELS ARE EITHER SO SIMPLISTIC OR SO COMPLEX:
Another reason for the complexity of networks is that the conceptual models
made by organization are either so simplistic that they do not
distinguish between details, or they are so complex that they do not simplify the
subject.
• NO SIMPLE OR UNIFORM TERMINOLOGY:
One reason for the complexity of networks is that there is no simple or uniform
terminology that can be used for the same feature. Different technologies use
different terminologies. In this way terms are confused with product names.
Labels: Computer Networks
NETWORKS IN DAILY LIFE
The major use of networks is in business side. Networks are used for advertising,
production, shipping, planning, billing and accounting purposes. In fact now there is
an entire industry that develops networking equipment.
In addition to this networks are being used in homes as well for example, to
switch and control different devices from one place.
Networks are very much useful at government level as federal government, local
government and military organization use networks for communication purposes.
In education we have online libraries which we can visit at our home PC. This is
all just due to the networks.
Labels: Computer Networks
Interrupt Mechanism
Interrupt follow a follow a certain mechanism for their invocation just like near or far procedures. To understand this mechanism we need to understand its differences with procedure calls.
Difference between interrupt and procedure calls
Procedures or functions of sub-routines in various different languages are called by different methods as can be seen in the examples.
- Call MyProc
- A= Addition(4,5);
- Printf(“hello world”);
The general concept for procedure call in most of the programming languages is that on invocation of the procedure the parameter list and the return address (which is the value if IP register in case of near or the value of CS and IP registers in case of far procedure) is pushed Moreover in various programming languages whenever a procedure is called its address need to be specified by some notation i.e. in C language the name of the procedure is specified to call a procedure which effectively can be used as its address.
However in case of interrupts the a number is used to specify the interrupt number in the call
- Int 21h
- Int 10h
- Int3
Moreover when an interrupt is invoked three registers are pushed as the return address i.e. the values of IP, CS and Flags in the described order which are restored on return. Also no parameters are pushed onto the stack on invocation parameters can only be passed through registers.
The interrupt vector table
The interrupt number specified in the interrupt call is used as an index into the interrupt vector table. Interrupt vector table is a global table situated at the address 0000:0000H. The size of interrupt vector table is 1024 bytes or 1 KB. Each entry in the IVT is sized 4 bytes hence 256 interrupt vectors are possible numbered (0-FFH). Each entry in the table contains a far address of an interrupt handlers hence there is a maximum of 256 handlers however each handlers can have a number of services within itself. So the number operations that can be performed by calling an interrupt service routine (ISR) is indefinite depending upon the nature of the operating system. Each vector contains a far address of an interrupt handler. The address of the vector and not the address of interrupt handler can be easily calculated if the interrupt number is known. The segment address of the whole IVT is 0000H the offset address for a particular interrupt handler can be determined by multiplying its number with 4 eg. The offset address of the vector of
INT 21H will be 21H * 4 = 84H and the segment for all vectors is 0 hence its far address is 0000:0084H,( this is the far address of the interrupt vector and not the interrupt service routine or interrupt handler). The vector in turn contains the address of the interrupt service routine which is an arbitrary value depending upon the location of the ISR residing in memory.
Fig 2 (Interrupt Vector Table)
Location of ISRs (Interrupt service routines)
Generally there are three kind of ISR within a system depending upon the entity which implements it
- BIOS (Basic I/O services) ISRs
- DOS ISRs
- ISRs provided by third party device drivers
Fig 4 (ISRs in memory)
This fact can be practically analyzed by the DOS command mem/d which gives the status of the memory and also points out which memory area occupied by which process as shown in the text below. The information given by this command indicates the address where IO.SYS and other device drivers have been loaded but the location of ROM BIOS is not shown by this command.
C:\>mem /d
Address Name Size Type
------- -------- ------ ------
000000 000400 Interrupt Vector
000400 000100 ROM Communication Area
000500 000200 DOS Communication Area
000700 IO 000370 System Data
CON System Device Driver
AUX System Device Driver
PRN System Device Driver
CLOCK$ System Device Driver
COM1 System Device Driver
LPT1 System Device Driver
LPT2 System Device Driver
LPT3 System Device Driver
COM2 System Device Driver
COM3 System Device Driver
COM4 System Device Driver
000A70 MSDOS 001610 System Data
002080 IO 002030 System Data
KBD 000CE0 System Program
HIMEM 0004E0 DEVICE=
XMSXXXX0 Installed Device Driver
000490 FILES=
000090 FCBS=
000120 LASTDRIVE=
0007D0 STACKS=
0040C0 COMMAND 000A20 Program
004AF0 MSDOS 000070 -- Free --
004B70 COMMAND 0006D0 Environment
005250 DOSX 0087A0 Program
00DA00 MEM 000610 Environment
00E020 MEM 0174E0 Program
025510 MSDOS 07AAD0 -- Free --
09FFF0 SYSTEM 02F000 System Program
0CF000 IO 003100 System Data
MOUSE 0030F0 System Program
0D2110 MSDOS 000600 -- Free --
0D2720 MSCDEXNT 0001D0 Program
0D2900 REDIR 000A70 Program
0D3380 DOSX 000080 Data
0D3410 MSDOS 00CBE0 -- Free --
655360 bytes total conventional memory
655360 bytes available to MS-DOS
597952 largest executable program size
1048576 bytes total contiguous extended memory
0 bytes available contiguous extended memory
941056 bytes available XMS memory
MS-DOS resident in High Memory Area
Interrupt Invocation
Although hardware and software interrupts are invoked differently i.e hardware interrupts are invoked by means of some hardware whereas software interrupts are invoked by means of software instruction or statement but no matter how an interrupt has been invoked processor follows a certain set steps after invocation of interrupts in exactly same way in both the cases. These steps are listed as below
- Push Flags, CS, IP Registers, Clear Interrupt Flag
- Use (INT#)*4 as Offset and Zero as Segment
- This is the address of interrupt Vector and not the ISR
- Use lower two bytes of interrupt Vector as offset and move into IP
- Use the higher two bytes of Vector as Segment Address and move it into CS=0:[offset+2]
- Branch to ISR and Perform I/O Operation
- Return to Point of Interruption by Popping the 6 bytes i.e. Flags CS, IP.
This can be analyzed practically by the use of debug program, used to debug assembly language code, by assembling and debugging INT instructions
C:\>debug
-d 0:84
0000:0080 7C 10 A7 00-4F 03 55 05 8A 03 55 05 |...O.U...U.
0000:0090 17 03 55 05 86 10 A7 00-90 10 A7 00 9A 10 A7 00 ..U.............
0000:00A0 B8 10 A7 00 54 02 70 00-F2 04 74 CC B8 10 A7 00 ....T.p...t.....
0000:00B0 B8 10 A7 00 B8 10 A7 00-40 01 21 04 50 09 AB D4 ........@.!.P...
0000:00C0 EA AE 10 A7 00 E8 00 F0-B8 10 A7 00 C4 23 02 C9 .............#..
0000:00D0 B8 10 A7 00 B8 10 A7 00-B8 10 A7 00 B8 10 A7 00 ................7
0000:00E0 B8 10 A7 00 B8 10 A7 00-B8 10 A7 00 B8 10 A7 00 ................
0000:00F0 B8 10 A7 00 B8 10 A7 00-B8 10 A7 00 B8 10 A7 00 ................
0000:0100 8A 04 10 02 ....
-a
0AF1:0100 int 21
0AF1:0102
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF1 ES=0AF1 SS=0AF1 CS=0AF1 IP=0100 NV UP EI PL NZ NA PO NC
0AF1:0100 CD21 INT 21
-t
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFE8 BP=0000 SI=0000 DI=0000
DS=0AF1 ES=0AF1 SS=0AF1 CS=00A7 IP=107C NV UP DI PL NZ NA PO NC
00A7:107C 90 NOP
-d ss:ffe8
0AF1:FFE0 02 01 F1 0A 02 F2 00 00
0AF1:FFF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
The dump at the address 0000:0084 H shows the value of the vector of the interrupt # 21H i.e. 21H * 4 = 84H. This address holds the value 107CH in lower word and 00A7H in the higher word which indicates that the segment address of interrupt # 21 is 00A7H and the offset address of this ISR is 107CH.
Moreover the instruction INT 21H can be assembled and executed in the debug program, on doing exactly so the instruction is traced through and the result is monitored. It can be seen that on execution of this instruction the value of IP is changed to 107CH and the value of CS is changed to 00A7H which cause the execution to branch to the Interrupt # 21H in memory and the previous values of flags, CS and IP registers are temporarily saved onto the stack as the value of SP is reduced by 6 and the dump at the location SS:SP will show these saved values as well.
Parameter passing into Software interrupts
In case of procedures or function in various programming languages parameters are passed through stack. Interrupts are also kind of function provided by the operating system but they do not accept parameters by stack rather they need to passed parameters through registers.
Software interrupts invocation
Now let’s see how various interrupts can be invoked by means of software statements. First there should be way to pass parameters into a software interrupt before invoking the interrupt; there are several methods for doing this. One of the methods is the use of pseudo variables. A variable can be defined a space within the memory whose value can be changed during the execution of a program but a pseudo variable acts very much like a variable as its value can be changed anywhere in the program but is not a true variable as it is not stored in memory. C programming language provides the use of pseudo variables to access various registers within the processor.
The are various registers like AX, BX, CX and DX within the processor they can be directly accessed in a program by using their respective pseudo variable by just attaching a “_” (underscore) before the register’s name eg. _AX = 5; A = _BX .
After passing the appropriate parameters the interrupt can be directly invoked by calling the geninterrupt () function. The interrupt number needs to be passed as parameter into the geninterrupt() function.
Interrupt # 21H, Service # 09 description
Now lets learn by means of an example how this can be accomplished. Before invoking the interrupt the programmer needs to know how the interrupt behaves and what parameters it requires. Lets take the example of interrupt # 21H and service # 09 written as 21H/09H in short. It is used to print a string ending by a ‘$’ character and other parameters describing the string are as below
Inputs
AH = 0x09
DS = Segment Address of string
DX = Offset Address of string
Output
The ‘$’ terminated string at the address DS:DX is displayed
One thing is note worthy that the service # is placed in AH which is common with almost all the interrupts and its service. Also this service is not returning any siginificant data, if some service needs to return some data it too is received in registers depending upon the particular interrupt.
Example:
#include
#include
#include
char st[80] ={"Hello World$"};
void main()
{
clrscr(); //to clear the screen contents
_DX = (unsigned int) st;
_AH = 0x09;
getch(); //waits for the user to press any key
}
this is a simple example in which the parameters of int 21H/09H are loaded and then int 21H is invoked. DX and AH registers are accessed through pseudo variables and then geninterrupt()is called to invoke the ISR. Also note that _DS is not loaded. This is th
Another Method for invoking software interrupts
This method makes use of a Union. This union is formed by two structure which correspond to general purpose registers AX, BX, CX and DX. And also the half register AH, AL, BH, BL, CH, CL, DH, DL. These structures are combined such that through this str
struct full
unsigned int ax;
unsigned int bx;
unsigned int cx;
unsigned int dx;
};
struct half
{
unsigned char al;
unsigned char bl;
unsigned char bh;
unsigned char cl;
unsigned char ch;
unsigned char dl;
unsigned char dh;
};
typedef union tagREGS
struct full x;
struct half h;
}REGS;
This union can be used to signify any of the full or half general purpo
Example:
#include
union REGS regs;
void main (void )
regs.h.al = 0x55;
regs.h.ah = 0x99;
printf (“%x”,regs.x.ax);
}
output:
9955
The significance of this REGS union can only be understood after understanding the int86() function. The int86() has three parameters. The first parameter is the interrupt number to be invoked, the second parameter is the reference to a REGS type union which contains the value of parameters that should be passed as inputs, and third parameter is a reference to a REGS union which will contain the value of registers returned by this function. A
Example using interrupt # 21H service # 42H
Int # 21 Service # 42H
Inputs
AL = Move Technique
CX-DX = No of Bytes File to be moved
AH = Service # = 42H
DX-AX = No of Bytes File pointer actually moved.
CX-DX specify the number of bytes to move a double word is needed to specify this value as the size of file in DOS can be up to 2 GB.
On return of the service DX-AX will contain the number of bytes the file pointer is actually moved eg. If the file pointer is moved relative to the EOF zero bytes the DX-AX on return will contain the size of file if the file pointer was at BOF before calling the service.
Labels: Systems Programming
Interrupt Driven I/O
The main disadvantage of programmed I/O as can be noticed is that the CPU is busy waiting for an I/O opportunity and as a result remain tied up for that I/O operation. This disadvantage can be overcome by means of interrupt driven I/O. In Programmed I/O CPU itself checks for an I/O opportunity but in case of interrupt driven I/O the I/O controller interrupts the execution of CPU when ever and I/O operation is required for the computation of the required I/O operation. This way the CPU can perform other computation and interrupted to perform and interrupt service routine only when an I/O operation is required, which is quite an optimal technique.
DMA driven I/O
In case data is needed to transferred from main memory to I/O port this can be done using CPU which will consume 2 bus cycles for a single word, one bus cycle from memory to CPU and other from CPU to I/O port in case of output and the vice versa in case of input. In case no computation on data is required CPU can be bypassed and another device DMA (direct memory access) controller can be used. Its possible to transfer a data word directly from memory to CPU and vice versa in a single bus cycle using the DMA, this technique is definitely faster.
We shall start our discussion with the study of interrupt and the techniques used to program them. We will discuss other methods of I/O as required.
What are interrupts?
Literally to interrupt means to break the continuity of some on going task. When we talk of computer interrupt we mean exactly the same in terms of the processor. When an interrupt occurs the continuity of the processor is broken and the execution branches to an interrupt service routine. This interrupt service routine is a set of instruction carried out by the CPU to perform or initiate an I/O operation generally. When the routine is over the execution of the CPU returns to the point of interruption and continues with the on going process.
Interrupts can be of two types
- Hardware interrupts
- Software interrupts
Interrupt Mechanism
Interrupts are quite similar to procedures or function because it is also another form temporary execution transfer, but there some differences as well. Note that when procedures are invoked by there names which represents their addresses is specified whereas in case of interrupts their number is specified. This number can be any 8 bit value which certainly is not its address. So the first question is what is the significance of this number? Another thing should also be noticed that procedures are part of the program but the interrupts invoked in the program are no where declared in the program. So the next question is where do these interrupts reside in memory and if they reside in memory then what would be the address of the interrupt?
Firstly lets see where do interrupts reside. Interrupts certainly reside somewhere in memory, the interrupts supported by the operating system resides in kernel which you already know is the core part of the operating system. In case of DOS the kernel is io.sys which loads in memory at boot time and in case of windows the kernel is kernel32.dll or kernel.dll. these files contain most of the I/O routines and are loaded as required. The interrupts supported by the ROM BIOS are loaded in ROM part of the main memory which usually starts at the address F000:0000H. Moreover it is possible that some device drivers have been installed these device drivers may provide some I/O routines so when the system boots these I/O routines get memory resident at interrupt service routines. So these are the three possibilities.
Secondly a program at compile time does not know the exact address where the interrupt service routine will be residing in memory so the loader cannot assign addresses for interrupt invocations. When a device driver loads in memory it places the address of the services provided by itself in the interrupt vector table. Interrupt Vector Table (IVT) in short is a 1024 bytes sized table which can hold 256 far addresses as each far address occupies 4 bytes. So its possible to store the addresses of 256 interrupts hence there are a maximum of 256 interrupt in a standard PC. The interrupt number is used as an index into the table to get the address of the interrupt service routine.
Labels: Systems Programming
INTRPCUCTION
NETWORK AND INTERNET:
NETWORK:
A network is defined as a system for connecting computers using a single transmission technology.
The computers can communicate with each other in a network.They can send and receive data from each other when they are in a network.
INTERNET:
The Internet is defined as the set of networks connected by routers that are configured to pass traffic among any computers attached to any network in the set. By internet many computers which are at longer distances from each other can communicate with each other.
CLASSIFICATION OF NETWORKS :
Computer networks are classified by four factors which are as follow:
1) By Size:
2) By Connectivity:
3) By Medium:
4) By Mobility:
1) BY SIZE:
According to their size there are two classifications of netwoeks.
1) Local Area Network. (LAN)
2) Wide Area Nerwork. (WAN)
In LAN network occupies the smaller area like a room a floor or a building.
In WAN,network occupies larger areas like cities & countries. Internet is a Wide Area Network.
LAN & WAN are compared by the speed of transmission, bandwidth and latency, management security, reliability,billing and their standards.
2) BY CONNECTIVITY:
Networks are also classified by connectivity in which two topologies are discussed.
a) Point-to-Point
b) Broadcast
a) POINT-TO-POINT
In Point-to-Point topology there are two topologies.
1) STAR topology
2) TREE topology
In star topology each computer is connected to a central hub. The communication
takes place through the hub.It is shown in the figure below.
Figure 1.1:star and tree topologies
In Tree topology all computers are connected to each other in such a way that they make a tree as shown in the figure above.
b) BROADCAST:
In broadcast topology ther are further two categories
1)SATELLITE\RADIO 2)RING TOPOLOGY
In a satellite or radio topology all camputers are connected to each other via satellite or radio wave as shown in the figure.
Figure:1.2 Satellite and Ring topologies:In a ring topology each computer is connected to other thorough a ring as shown in the figure above.
3) BY MEDIUM:
The classification of networks is also based on the Medium of transmission.
Following are the mediums of transmission:
- Copper wire
- Co-axial cable
- Optical fiber
- Radio waves
parameters are speed of transmission, range of the receiver and transmitter computer,
sharing of information, topology, installation & maintenance costs and reliability.
For example the range of radio waves will be much more than an optical fiber.
Similarly other mediums differ from each other and appropriate medium is selected
for the sake of transmission.
4) BY MOBILITY:
The networks are also classified according to their mobility.
In this respect there are two types of networks.
- Fixed networks
- Mobile networks
in the last decade. In this regard there are some issues which are attached with the
mobility of networks which are as follows:
- Location and tracking
- Semi persistent connections
- Complex administration and billing as devices and users move around the network.
Labels: Computer Networks
What is Systems Programming?
Computer programming can be categorized into two categories .i.e
INPUT Process OUTPUT
While designing software the programmer may determine the required inputs for that program, the wanted outputs and the processing the software would perform in order to give those wanted outputs. The implementation of the processing part is associated with application programming. Application programming facilitates the implementation of the required processing that software is supposed to perform; everything that is left now is facilitated by system programming.
Systems programming is the study of techniques that facilitate the acquisition of data from input devices, these techniques also facilitates the output of data which may be the result of processing performed by an application.
Three Layered Approach
A system programmer may use a three layered approach for systems programming. As you can see in the figure the user may directly access the programmable hardware in order to perform I/O operations. The user may use the trivial BIOS (Basic Input Output System) routines in order to perform I/O in which case the programmer need not know the internal working of the hardware and need only the knowledge BIOS routines and their parameters.
DOS
BIOS
H/W
In this case the BIOS programs the hardware for required I/O operation which is hidden to the user. In the third case the programmer may invoke operating systems (DOS or whatever) routines in order to perform I/O operations. The operating system in turn will use BIOS routines or may program the hardware directly in order to perform the operation.
Methods of I/O
In the three layered approach if we are following the first approach we need to program the hardware. The hardware can be programmed to perform I/O in three ways i.e
1: Programmed I/O
2: Interrupt driven I/O
3:Direct Memory Access
In case of programmed I/O the CPU continuously checks the I/O device if the I/O operation can be performed or not. If the I/O operations can be performed the CPU performs the computations required to complete the I/O operation and then again starts waiting for the I/O device to be able to perform next I/O operation. In this way the CPU remains tied up and is not doing anything else besides waiting for the I/O device to be idle and performing computations only for the slower I/O device.
In case of interrupt driven the flaws of programmed driven I/O are rectified. The processor does not check the I/O device for the capability of performing I/O operation rather the I/O device informs the CPU that it’s idle and it can perform I/O operation, as a result the execution of CPU is interrupted and an Interrupt Service Routine (ISR) is invoked which performs the computations required for I/O operation. After the execution of ISR the CPU continues with whatever it was doing before the interruption for I/O operation. In this way the CPU does not remain tied up and can perform computations for other processes while the I/O devices are busy performing I/O and hence is more optimal.
Usually it takes two bus cycles to transfer data from some I/O port to memory or vice versa if this is done via some processor register. This transfer time can be reduced bypassing the CPU as ports and memory device are also interconnected by system bus. This is done with the support of DMA controller. The DMA (direct memory access) controller can controller the buses and hence the CPU can be bypassed data item can be transferred from memory to ports or vice versa in a single bus cycle.
I/O controllers
I/O device
I/O controller
CPU
No I/O device is directly connected to the CPU. To provide control signals to the I/O device a I/O controller is required. I/O controller is located between the CPU and the I/O device. For example the monitor is not directly collected to the CPU rather the monitor is connected to a VGA card and this VGA card is in turn connected to the CPU through busses. The keyboard is not directly connected to CPU rather its connected to a keyboard controller and the keyboard controller is connected to the CPU. The function of this I/O controller is to provide
1: I/O control signals
2: Buffering
3:Error Correction and Detection
We shall discuss various such I/O controllers interfaced with CPU and also the techniques and rules by which they can be programmed to perform the required I/O operation.
Some of such controllers are
- DMA controller
- Interrupt controller
- Programmable Peripheral Interface (PPI)
- Interval Timer
- Universal Asynchronous Receiver Transmitter
We shall discuss all of them in detail and how they can be used to perform I/O operations.
Operating systems
Systems programming is not just the study of programmable hardware devices. To develop effective system software one needs to the internals of the operating system as well. Operating systems make use of some data structures or tables for management of computer resources. We will take up different functions of the operating systems and discuss how they are performed and how can the data structures used for these operations be accessed.
File Management
File management is an important function of the operating systems. DOS/Windows uses various data structures for this purpose. We will see how it performs I/O management and how the data structures used for this purpose can be directly accessed. The various data structures are popularly known as FAT which can be of 12, 16 and 32 bit wide, Other data structures include BPB(BIOS parameter block), DPB( drive parameter block) and the FCBs(file control block) which collectively forms the directory structure. To understand the file structure the basic requirement is the understanding of the disk architecture, the disk formatting process and how this process divides the disk into sectors and clusters.
Memory management
Memory management is another important aspect of operating systems. Standard PC operate in two mode in terms of memory which are
- Real Mode
- Protected Mode
In real mode the processor can access only first one MB of memory to control the memory within this range the DOS operating system makes use of some data structures called
- FCB (File control block )
- PSP (Program segment prefix)
We shall discuss how these data structures can be directly accessed, what is the significance of data in these data structures. This information can be used to traverse through the memory occupied by the processes and also calculate the total amount of free memory available.
Certain operating systems operate in protected mode. In protected mode all of the memory interfaced with the processor can be accessed. Operating systems in this mode make use of various data structures for memory management which are
- Local Descriptor Table
- Global Descriptor Table
- Interrupt Descriptor Table
We will discuss the significance these data structures and the information stored in them. Also we will see how the logical addresses can be translated into physical addresses using the information these tables
Viruses and Vaccines
Once an understanding of the file system and the memory Management is developed it is possible to understand the working of viruses. Virus is a simple program which can embed itself within the computer resources and propagate itself. Mostly viruses when activated would perform something hazardous.
We will see where do they embed themselves and how can they be detected. Moreover we will discuss techniques of how they can be removed and mostly importantly prevented to perform any infections.
There are various types of viruses but we will discuss those which embed themselves within the program or executable code which are
Executable file viruses
Partition Table or boot sector viruses
Device Drivers
Just connecting a device to the PC will not make it work unless its device drivers are not installed. This is so important because a device driver contains the routines which perform I/O operations on the device. Unless these routines are provided no I/O operation on the I/O device can be performed by any application.
We will discuss the integrated environment for the development of device drivers for DOS and Windows.
We shall begin our discussion from means of I/O. On a well designed device it is possible to perform I/O operations from three different methods
In case of programmed I/O the CPU is in a constant loop checking for an I/O opportunity and when its available it performs the computations operations required for the I/O operations. As the I/O devices are generally slower than the CPU, CPU has to wait for I/O operation to complete so that next data item can be sent to the device. The CPU sends data on the data lines. The device need to be signaled that the data has been sent this is done with the help of STROBE signal. An electrical pulse is sent to the device by turning this signal to 0 and then 1. The device on getting the strobe signal receives the data and starts its output. While the device is performing the output it’s busy and cannot accept any further data on the other and CPU is a lot faster device and can process lot more bytes during the output of previously sent data so it should be synchronized with the slower I/O device. This is usually done by another feed back signal of BUSY which is kept active as long as the device is busy. So the CPU is only waiting for the device to get idle by checking the BUSY signal as long as the device is busy and when the device gets idle the CPU will compute the next data item and send it to the device for I/O operation.
Similar is the case of input, the CPU has to check the DR (data Ready) signal to see if data is available for input and when its not CPU is busy waiting for it.
Labels: Systems Programming
Digital Data Communication System
An Actual Digital Data Communication System Key Data Communication Terminology
Session: communication dialog between network users or applications
Different Types of this session for Info Exchange
Network: interconnected group of computers and communication devices
We will look into it in a little bit
Node: a network-attached device
Node can be any device in the network
Summary
- Data Communication
- Brief History of Communication
- Data Communication System
- Key Data Communication Terminology
- Section 1.2, “Data Communications and Networking” 2nd Edition by Behrouz A.Forouzan
- Sections 1.1, 1.2, “Data and Computer Communication” 6th Edition by William Stallings
Labels: Data Communication
A little more complex Comm System
A little more complex Comm System
- User of a PC wishes to send a message ‘m’
- User activates electronic mail package e.g hotmail
- Enters the message via input device (keyboard)
- Character string is buffered in main memory as a sequence of bits ‘g’
- PC is connected to some trans system such as a Telephone Network via an I/O Transmitter like Modem
- Transmitter converts incoming stream ‘g’ into a signal ‘s’
- The transmitted signal ‘s’ is subject to a number of impairments depending upon the medium
- Therefore, received signal ‘r’ may differ from ‘s’.
- Receiver attempts to estimate original ‘s’ based on its knowledge of the medium and received signal ‘r’
- Briefly buffered in the memory
- Data is presented to the user via an output device like printer, screen etc.
- The data viewed by user m’ will usually be an exact copy of the data sent ‘m’
- Receiver produces a bit stream g’(t)
- Briefly buffered in the memory
- Data is presented to the user via an output device like printer, screenetc.
- The data viewed by user m’ will usually be an exact copy of the data sent ‘m’
- Input to the Telephone is a message ‘m’ in the form of sound waves
- The sound waves are converted by telephone into electric signals of the same frequency
- These signals are transmitted w/o any modification over the telephone line
- Hence g(t) and s(t) are identical
- S(t) will suffer some distortion so that r(t) will not be the same as s(t)
- R(t) is converted back to sound waves with no attempt of correction or improvement of signal quality
- Thus m’ is not an exact replica of m
Labels: Data Communication